openspec: архив 14 завершённых change-ов (веб-фиксы, crawler-queue, own-content-hub, publisher-service); спеки влиты в openspec/specs

This commit is contained in:
kpa39l
2026-09-16 17:01:00 +00:00
parent 584582a48c
commit 771f6a8276
88 changed files with 1632 additions and 3 deletions
@@ -0,0 +1,32 @@
# Proposal: sources-admin
## Why
Сейчас источники редактируются вручную в `sources/sources.yaml` (Git-файл).
Веба для управления нет: на /crawlers источники только читаются. Пользователь
хочет отдельную страницу управления источниками:
- добавлять новые источники (telegram/rss), указывая slug, name, url/feed_url, направление, приоритет;
- переименовывать (name), менять slug при необходимости;
- удалять (с подтверждением);
- ставить на паузу (enabled=false) и снимать с паузы;
- менять приоритет (priority P0–P3).
`sources.yaml` остаётся источником истины (краулеры при запуске делают
`sync_sources_to_db`). CRUD-функции в sources.py уже есть (upsert_source_yaml,
delete_source_yaml, db_source_to_yaml) — не хватает удаления/паузы в БД и
веб-слоя. Проблема: удаление источника из yaml оставляет его в БД (сирота с
постами/ранами); пауза = enabled=0 в yaml+БД.
## Success criteria
- Страница /sources (за auth): таблица всех источников, кнопки Добавить / Изменить / Удалить / Пауза / Снять с паузы.
- Добавление/изменение через модальную форму (slug, name, crawler, url/feed_url, direction, lang, priority).
- Удаление с подтверждением (confirm) и каскадной чисткой связанных данных.
- Каждое изменение пишется в sources.yaml И БД атомарно (yaml — источник истины).
- /crawlers продолжает работать (читает ту же таблицу).
## Out of scope
- Тестирование краулеров из веба (запуск оставлен на /crawlers).
- Управление направлениями (направления — код в keywords.py, не CRUD).