Files
vesti/openspec/changes/archive/2026-09-13-web-render-markdown/tasks.md
T

1.2 KiB

1. Зависимость и фильтр

  • 1.1 pip install Markdown в .venv, добавить в requirements.txt
  • 1.2 Добавить Jinja2-фильтр markdown в web/app.py (экранирование HTML + nl2br + sane_lists)
  • 1.3 Проверка: python -c "from web.app import tpl; print(tpl.filters['markdown']('**b**'))" — фильтр есть

2. Шаблоны

  • 2.1 candidates.html: заменить {{ (p.text or '')[:500] }} на {{ (p.text or '')[:2000] | markdown }}
  • 2.2 Проверить published.html/metrics.html — применить фильтр к тексту/анонсам при наличии
  • 2.3 Проверка: пост с **жирный** и ссылкой отображается разметкой, а не сырым md

3. Безопасность и регресс

  • 3.1 Тест XSS: <script> в тексте поста не исполняется (отображается как текст)
  • 3.2 Тест регресса: список кандидатов и published рендерятся без ошибок
  • 3.3 grep -rn "p.text\|\.text" web/templates/ — все места обработаны