# 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 ``` Внешний доступ: https://vesti.nixg.ru (Caddy на VPS02, reverse_proxy 10.8.0.2:8400).