mirror of
https://gitverse.ru/kpa39l/vesti.git
synced 2026-09-29 09:55:03 +00:00
32 lines
2.2 KiB
Markdown
32 lines
2.2 KiB
Markdown
# 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). |