## 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` на обычные `
` (полная перезагрузка страницы — приемлемо для прототипа, снимает зависимость от 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 — ничего больше не меняется.