Session 2026-09-13: unify directions (canon+LLM-fallback, 966/1019), publisher dry_run fix, git repo, archive 8 changes, candidates-mail-ui WIP, docs

This commit is contained in:
kpa39l
2026-09-13 17:48:06 +00:00
parent c3f59f7b7a
commit 71fd48aa06
40 changed files with 305 additions and 7 deletions
@@ -0,0 +1,38 @@
## Why
Веб-интерфейс VESTI (`web/`) зависит от двух внешних CDN:
- `https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css` (base.html:7, login.html:7)
- `https://unpkg.com/htmx.org@1.9.12` (base.html:8)
При фильтрации/действиях страница ждёт ответа от `unpkg.com` — если CDN недоступен или
замедлен (а в РФ это распространённая проблема), браузер висит в ожидании скрипта.
Это внешняя зависимость, которая не нужна локальному сервису: VESTI работает на bigbox
за Caddy/TLS и не должна зависеть от сторонних доменов. Пользователь явно против ожидания
ответа от `unpkg.com`.
## What Changes
- Убрать `https://unpkg.com/htmx.org@1.9.12` из `web/templates/base.html`.
- Убрать `https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css` из
`web/templates/base.html` и `web/templates/login.html`.
- Отказаться от HTMX: кнопки «Опубликовать»/«Отклонить» перевести с `hx-post` на
обычные `<form method="post">` (полная перезагрузка страницы — приемлемо для прототипа,
снимает зависимость от JS).
- Bootstrap: скачать CSS локально в `web/static/` (или, если критично, минимизировать
использование классов и обойтись собственным минимальным CSS). Рекомендуемый вариант —
локальный файл `web/static/bootstrap.min.css` из той же версии 5.3.3.
- Все ссылки на внешние CDN удалить; в шаблонах не останется ни одного `http(s)://` на
сторонние домены.
- JS в страницах — только свой (если нужен), без `unpkg`/`jsdelivr`/`cdn.*`.
## Impact
- Файлы: `web/templates/base.html`, `web/templates/login.html`, `web/templates/candidates.html`
(замена hx-post на form), возможно `web/templates/published.html`/`metrics.html` (если там
есть hx-атрибуты).
- Добавится `web/static/bootstrap.min.css` (~230 KB).
- Поведение: approve/reject больше не будут ajax-без-перезагрузки, а будут обычными POST
с редиректом. Для прототипа это нормально.
- Снимается зависимость от интернета/CDN при работе веб-UI.
- Rollback: вернуть две строки CDN в base.html + вернуть hx-post — ничего больше не меняется.