Files
vesti/openspec/changes/archive/2026-09-15-sources-admin/proposal.md
T

32 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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).