- заведён каталог web/ — Vue 3, роутер пятой версии, сборка Vite; собранное вшивается через go:embed и раздаётся корневым маршрутом: разметка на неизвестном пути вне корней сервиса, отказ контракта внутри корня - перечень корней сервиса стал единой точкой и порождает регистрацию маршрутов, а не описывает её; журнал раздачи пишет исход и длину пути, но не сам путь - шаг front зовёт Node контейнером docker — Biome, юнит-тесты Vue и сборка входят в гейт, а в Dockerfile появилась ступень приложения
2.0 KiB
2.0 KiB
ADDED Requirements
Requirement: Приложение отдаётся без сессии
Сервис SHALL отдавать разметку приложения и её ресурсы без сессии. Перечень адресов, открытых анонимно, пополняется ими: прежде в нём стояли только проба здоровья и метрики.
Причина в самом входе: человек, ещё не вошедший, дошёл бы до входа только через приложение, а закрытая сессией разметка отдала бы ему отказ вместо экрана. Цена открытости названа здесь же и невелика — ни разметка, ни ресурсы содержимого записей не несут: они одинаковы для всех и собираются до всякого запроса.
Открытость MUST не касаться данных: всякий адрес под корнем приложения по-прежнему требует сессии, и приложение, открытое анонимно, не получает ни одной записи.
Scenario: Разметка доступна анонимно
- WHEN запрос приходит на корень сервиса без сессии
- THEN ответ имеет код
200 - AND тело ответа — разметка приложения
Scenario: Ресурс приложения доступен анонимно
- WHEN запрос приходит на ресурс приложения без сессии
- THEN ответ имеет код
200
Scenario: Данные анонимно не отдаются
- GIVEN приложение открыто без сессии
- WHEN оно спрашивает список записей
- THEN ответ имеет код
401