openspec: архив 14 завершённых change-ов (веб-фиксы, crawler-queue, own-content-hub, publisher-service); спеки влиты в openspec/specs

This commit is contained in:
kpa39l
2026-09-16 17:01:00 +00:00
parent 584582a48c
commit 771f6a8276
88 changed files with 1632 additions and 3 deletions
@@ -0,0 +1,27 @@
# rss-formatting-preserve
Сохранять форматирование RSS-новостей (абзацы, разметка) при скачивании и в предпросмотре.
## Why
Пользователь: в RSS omarchy внутри текста новости есть HTML-символы, мы их выкидываем
из текста, поэтому вся новость в предпросмотре — сплошной текст, ничего не понять.
Нужно при скачивании из RSS сохранять заложенное форматирование.
## What Changes
- **crawler/rss_crawler.py**: html_to_text() вставляет переносы вокруг блочных тегов
(p/li/h1-6/blockquote/pre), чтобы абзацы и списки сохранялись; parse_entries() больше
не схлопывает все пробелы в один — нормализует: 3+ переноса → 2, пробелы по краям
строк убираются, внутренние сохраняются.
- **web/app.py**: новый фильтр `safe_html` (bleach.clean allowlist + linkify) для
безопасного рендера HTML-разметки исходных RSS-текстов в предпросмотре.
- **web/templates/candidates.html / selected.html**: `| safe_html` для `selected.text`.
- **requirements.txt**: +bleach.
## Impact
- Тексты в БД: появляются абзацы (\n\n), форматирование сохраняется читаемым.
- Предпросмотр кандидатов/отобранных: разметка (b/i/a/списки) рендерится безопасно.
- Markdown-пересказы (rewritten_text) и комментарии не задеваются — md_filter без изменений.
- Публикация (card.py) — plain text, абзацы \n\n дойдут в Telegram.