# fix-sources-add-channel ## Дизайн ### 1. Форма добавления — поле channel (web/templates/sources.html) Вставить после поля `url` (перед `crawler`), чтобы telegram-поля шли вместе: ```html
``` Поле обязательное только для telegram: маленький inline-скрипт в конце формы переключает атрибут `required` при смене `select[name=crawler]`: ```html ``` ### 2. Таблица — показ channel у telegram (web/templates/sources.html) В колонке crawler (строки 91-93) добавить вывод channel для telegram, по аналогии с feed_url для rss: ```html {{ s['crawler'] }} {% if s['crawler'] == 'rss' and s['feed_url'] %}
{{ s['feed_url'] }}{% endif %} {% if s['crawler'] == 'telegram' and s['channel'] %}
{{ s['channel'] }}{% endif %} ``` ### 3. Backend — без изменений `web/app.py::_form_source` уже собирает `channel` (строка 877), `sources/sources.py::_validate_source` уже проверяет (строка 218), `db_source_to_yaml` уже пишет в yaml (строка 181). Правки только в шаблоне. ## Проверка 1. `openspec validate fix-sources-add-channel` — чисто. 2. Ручной тест через веб: добавить telegram-источник с channel → success; без channel → браузер подсветит поле, серверная ошибка не нужна. 3. Рестарт `vesti-web`, проверить страницу /sources.