Files

35 lines
1.8 KiB
Markdown

# Ctrl-C: VESTI — новостной конвейер
## Что это
Конвейер новостей: краулер источников → классификатор (LLM) → банк статей →
веб-интерфейс отбора (модерация) → публикация в Telegram (@dedinit_vesti)
и Fediverse (GoToSocial @vesti@dedinit.ru).
## Стек
FastAPI + Jinja2 (vesti-web, :8400), publisher-service (Docker, :8410),
SQLite db/vesti.db, локальная LLM — Ollama qwen3:8b-nothink.
Фронтенд — локальный Bootstrap 5.3 (без CDN), без htmx/JS-фреймворков.
## Правила
- **ВСЕ изменения — через OpenSpec** (change в openspec/changes/), перед каждым
планируемым изменением — **grill-with-docs** (обязательно, AGENT.MD).
- НЕ начинать правки кода, пока change не создан и `openspec validate` не чисто.
- После правок — STATUS.md/TODO.md + бэкап (автокрон, вручную не запускать).
- Дата в UI — фильтр `| dt` (ЧЧ:ММ ДД.ММ.ГГГГ), markdown — XSS-safe фильтр.
- Секреты — только в .env, не коммитить; .env.example актуализировать.
- Ссылки на ресурсы и доступы — фиксировать в файлах проекта.
## Запуск / проверка
```bash
cd /opt/vesti
sudo systemctl restart vesti-web # веб :8400
docker compose -f services/publisher/docker-compose.yml up -d --build # publisher :8410
curl -s http://127.0.0.1:8410/healthz
openspec validate <change-name>
```
Внешний доступ: https://vesti.nixg.ru (Caddy на VPS02, reverse_proxy 10.8.0.2:8400).