docs: фреймворком приложения выбран Vue 3 с роутером 5 и сборкой Vite
- заведены записка разведки docs/research/spa-framework.md со сравнением Svelte, Vue и React на одном экране и решение ADR-2026-08-11-spa-on-vue - docs/conventions/web-ui.md переписан под Vue: компоненты, маршруты, состояние, обращение к API и показ ошибок - закрыт вопрос «Приложение» в docs/architecture.md, уточнена задача spa-skeleton
This commit is contained in:
@@ -5,16 +5,20 @@
|
||||
- **Зачем:** Экранов нет и собирать их нечем: ни сборки фронтенда, ни раздачи статики в проекте не существует.
|
||||
- **Теги:** goal:web-access
|
||||
|
||||
Двигает «Завершение» цели опосредованно: сам по себе каркас пользователю ничего
|
||||
не даёт, но без него ни один экран не соберётся. Видимая польза — приложение
|
||||
открывается и показывает, что оно живо и кто вошёл.
|
||||
Ни одной строки «Завершения» цели каркас не закрывает: он готовит четыре
|
||||
экранные — 1, 2, 3 и 4, — но сам по себе пользователю ничего не даёт. Видимое от
|
||||
него одно: приложение открывается и достаёт данные с живого сервера, а не отдаёт
|
||||
пустую страницу.
|
||||
|
||||
Берётся после `spa-framework-choice`: собирать не на чем, пока фреймворк не
|
||||
выбран.
|
||||
Фреймворк выбран 2026-08-11 — Vue 3 с роутером пятой версии и сборкой Vite
|
||||
([ADR](../../docs/adr/ADR-2026-08-11-spa-on-vue.md)); правила кода приложения
|
||||
лежат в [conventions/web-ui.md](../../docs/conventions/web-ui.md).
|
||||
|
||||
## Затрагивает
|
||||
|
||||
- новый каталог фронтенда: исходники, зависимости, конфигурация сборки;
|
||||
- роут, отдающий `index.html` на неизвестный путь вне `/api/`: адреса маршрутов
|
||||
обычные, а не после решётки;
|
||||
- `Taskfile.yml` — шаг сборки статики и его место в `task gate` и `task image`;
|
||||
- `Dockerfile` — сборка статики внутри образа, чтобы выкладка не зависела от
|
||||
машины разработчика;
|
||||
@@ -34,10 +38,19 @@
|
||||
тест либо ручная проверка на запущенном сервере с сессией.
|
||||
- Шаг сборки статики входит в `task gate` и краснеет при ошибке сборки. Оракул —
|
||||
намеренно сломанный исходник роняет `task gate`.
|
||||
- Обновление страницы на любом маршруте приложения открывает тот же экран, а
|
||||
адрес внутри `/api/` в приложение не проваливается. Оракул — тест на два
|
||||
запроса: неизвестный путь вне `/api/` отдаёт разметку, неизвестный путь внутри
|
||||
`/api/` отдаёт ошибку контракта.
|
||||
|
||||
## Рамки
|
||||
|
||||
Экранов, кроме заглушки с именем вошедшего, не делаем — это `upload-and-status-screen`
|
||||
и `records-list-screen`. Установку на телефон не делаем — это `installable-pwa`.
|
||||
Появление шага сборки в гейте меняет требования к машине разработчика: это
|
||||
решение уровня ADR, и оно записывается.
|
||||
Готовый набор компонентов не берём: он не выбран, а способен удвоить собранный
|
||||
файл.
|
||||
|
||||
Шаг сборки входит в гейт и в образ решением
|
||||
[ADR](../../docs/adr/ADR-2026-08-11-spa-on-vue.md) 2026-08-11 — заново это
|
||||
решение не принимается. Во что слой Node обходится образу по времени и по весу,
|
||||
не замерялось: замер делает эта задача.
|
||||
|
||||
Reference in New Issue
Block a user