Files

1.8 KiB

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 актуализировать.
  • Ссылки на ресурсы и доступы — фиксировать в файлах проекта.

Запуск / проверка

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).