Files
vesti/openspec/changes/rss-formatting-preserve/proposal.md
T

1.9 KiB

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.