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