mirror of
https://gitverse.ru/kpa39l/vesti.git
synced 2026-09-29 18:05:03 +00:00
2.7 KiB
2.7 KiB
Tasks: sources-admin
1. sources.py — CRUD для БД + валидация
- 1.1
delete_source_db(slug): UPDATE posts/runs SET source_id=NULL, DELETE rss_state, DELETE sources. Проверка: юнит-тест — после delete_source_db строки sources нет, rss_state нет, posts.source_id=NULL. - 1.2
set_source_enabled(slug, enabled): обновить yaml (upsert с enabled) + sync_yaml_to_db_and_back. Проверка: юнит — после toggle enabled в БД = 0/1, в yaml = false/true. - 1.3
add_or_update_source(data): валидация (slug regex, crawler ∈ {telegram,rss}, priority ∈ P0..P3, rss→feed_url обязателен) → upsert yaml → sync. Проверка: юнит — add 'opennet' (rss) → есть в yaml и БД; невалидный 400.
2. Веб-слой
- 2.1 GET /sources — страница (таблица + форма). Шаблон sources.html. Проверка: GET с auth → 200, в таблице все источники (10).
- 2.2 POST /sources/add, /sources/update/ — добавление/правка. Валидация, flash, редирект. Проверка: POST add opennet → в БД/yaml появился; POST update — name изменился.
- 2.3 POST /sources/{slug}/toggle — пауза (enabled 0) / снятие (enabled 1). Проверка: toggle lwn → enabled=0 в БД и yaml; в /crawlers lwn помечен disabled.
- 2.4 POST /sources/{slug}/delete — удаление с confirm. Каскад: posts/runs source_id=NULL, rss_state удалён. Проверка: delete тестового источника → из yaml и БД исчез, посты не потеряны (source_id NULL).
- 2.5 Навбар: ссылка «Источники» (была добавлена — проверена в base.html).
3. Интеграция, доки
- 3.1 AGENT.MD / STATUS.md / TODO.md — /sources (добавлено/закрыто).
- 3.2 Ссылка /sources в nav (проверка вёрстки).
- 3.3
openspec validate sources-admin→ valid. - 3.4 Рестарт vesti-web, ручная проверка GET /sources 200.
Примечания
- sources.yaml — источник истины; каждое изменение пишется в yaml И БД.
- Удалённые посты НЕ удаляются (история), только source_id=NULL.
- Пауза не трогает уже собранные посты — только прекращает сбор (enabled=0).
- HTTP-тест: add→toggle(pause)→toggle(resume)→delete прошёл end-to-end (тест. источник test_tmp_src удалён, чисто).