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

2.2 KiB
Raw Blame History

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