- каждая запись каталога задач получила тип вместо тега kind: и префикса заголовка; секция роадмапа «Разработка» стала «Сопровождением», порядок секций канонический - поправлены протухшие факты: нереализованные маршруты Read API, MCP и `healthlog import`, словарь слоёв в инварианте, семантика гейта по покрытию диффа, периметр перестал дублировать security.md - замер слияния переведён с находки 49 на находку 54, заполнены Purpose спек storage и parsing
36 lines
2.6 KiB
Markdown
36 lines
2.6 KiB
Markdown
# ✨ Поднять Swagger UI без внешней сети
|
|
|
|
- **Тип:** feature
|
|
- **Категория:** Ядро
|
|
- **Зачем:** Контракт читается машиной, но человеку нечем выполнить запрос к живому сервису из браузера, а внешних CDN в локальной сети нет
|
|
- **Теги:** goal:read-api, sprint:2026-08-04
|
|
|
|
Человек открывает UI на отдельном пути и выполняет запрос к живому сервису — не
|
|
имея интернета.
|
|
|
|
Сервис живёт в локальной сети и на VPS без гарантии выхода наружу, поэтому
|
|
статика отдаётся самим сервисом и лежит в бинаре: внешние CDN здесь означают
|
|
«работает, пока работает чужой сайт».
|
|
|
|
**UI — новый адресат недоверенного входа наизнанку:** он даёт человеку одним
|
|
нажатием выполнить запрос к любому описанному маршруту, включая приём. Права
|
|
на запись из браузера не должны появляться сами собой — это ровно та граница, которую
|
|
описывает `docs/security.md`.
|
|
|
|
Двигает строку «Завершения» цели: «Контракт чтения читается машиной».
|
|
|
|
## Критерии приёмки
|
|
|
|
- UI открывается и выполняет запрос при отключённой внешней сети — оракул:
|
|
запуск контейнера без доступа наружу
|
|
- бинарь работает без каталога со статикой рядом — оракул: запуск одного файла
|
|
из пустого каталога
|
|
- запрос к маршруту приёма без заголовка с токеном приёма отклоняется, откуда
|
|
бы он ни пришёл, а отдаваемая UI статика токена приёма в себе не держит —
|
|
оракул: тест на обработчике приёма плюс поиск токена в отдаваемой статике
|
|
|
|
## Рамки
|
|
|
|
Схема не трогается. Берётся после спеки. Наружу ничего не выкладывается — это
|
|
решение человека и отдельная задача деплоя.
|