Files
vesti/openspec/changes/archive/2026-09-13-web-format-datetime/proposal.md
T

1.5 KiB

Why

Даты в веб-UI отображаются как ISO-строка из SQLite: 2026-08-15T15:53 (срез [:16] в шаблонах candidates.html, published.html, metrics.html). Пользователь хочет человекочитаемый формат: 20:00 15.08.2026 (время ЧЧ:ММ, дата ДД.ММ.ГГГГ).

Места:

  • web/templates/candidates.html:… — {{ (p.published_at or '')[:16] }}
  • web/templates/published.html:10 — {{ (p.published_at or '')[:16] }}
  • web/templates/metrics.html:23 — {{ (r.started_at or '')[:16] }}

What Changes

  • Добавить Jinja2-фильтр dt (datetime): парсит ISO-строку 2026-08-15T15:53[:00], выводит 20:00 15.08.2026.
  • Во всех трёх шаблонах заменить {{ (x or '')[:16] }} → {{ x | dt }}.
  • Использовать datetime.fromisoformat + strftime("%H:%M %d.%m.%Y").
  • Если строка не парсится (None/мусор) — выводить пустую строку/прочерк (не падать).

Impact

  • Файлы: web/app.py (фильтр dt), шаблоны candidates.html, published.html, metrics.html (замена вызовов).
  • Новых зависимостей нет (stdlib datetime).
  • Никакого JS: форматирование на сервере.
  • Rollback: вернуть [:16] в трёх шаблонах, убрать фильтр.