108 lines
5.5 KiB
Markdown
108 lines
5.5 KiB
Markdown
---
|
||
type: infra-requirements
|
||
work_item_id: ET-005
|
||
title: "Инфраструктурные требования — ET-005: Переключение единиц измерения (км/мили)"
|
||
version: 1
|
||
status: approved
|
||
created_at: 2026-05-21
|
||
authors:
|
||
- "agent:architect"
|
||
---
|
||
|
||
# Инфраструктурные требования — ET-005
|
||
|
||
## 1. Резюме
|
||
|
||
ET-005 — изменение **исключительно фронтенда** (`src/web/index.html`,
|
||
`src/web/app.js`, `src/web/app.css` и новый файл `src/web/units.js`).
|
||
Новой инфраструктуры не требуется. Документ зафиксирован для полноты
|
||
work-item и явно подтверждает отсутствие инфра-воздействия (см.
|
||
`06-adr/adr-0001-unit-toggle-client-side.md`).
|
||
|
||
## 2. Контейнеры и сервисы
|
||
|
||
| Аспект | Требование |
|
||
|--------|------------|
|
||
| Новые контейнеры | Нет |
|
||
| Изменения существующих сервисов (api, osrm, nginx) | Нет |
|
||
| Изменения `docker-compose.yml` | Нет |
|
||
| Изменения `Dockerfile` | Нет — `units.js` это статика, попадает в образ тем же путём, что и `app.js` |
|
||
|
||
## 3. Сеть
|
||
|
||
| Аспект | Требование |
|
||
|--------|------------|
|
||
| Новые порты | Нет |
|
||
| Изменения reverse proxy (nginx, `/enduro/`) | Нет |
|
||
| Новые внешние домены / DNS | Нет |
|
||
| Исходящие сетевые вызовы из фронтенда | Нет (конвертация и хранение — локальные) |
|
||
|
||
## 4. Хранилища данных
|
||
|
||
| Аспект | Требование |
|
||
|--------|------------|
|
||
| Изменения схемы SQLite/Spatialite | Нет |
|
||
| Миграции БД (`migrations/`) | Нет |
|
||
| Серверное хранилище состояния | Нет |
|
||
| Клиентское хранилище | `localStorage`, ключ `distance_unit` (`'km'`/`'mi'`), ≈ 2 байта полезной нагрузки на браузер |
|
||
|
||
Подробности по данным — `08-data-requirements.md`.
|
||
|
||
## 5. Конфигурация и секреты
|
||
|
||
| Аспект | Требование |
|
||
|--------|------------|
|
||
| Новые переменные окружения | Нет |
|
||
| Новые секреты | Нет |
|
||
| Изменения конфигурации FastAPI / uvicorn | Нет |
|
||
|
||
## 6. Зависимости
|
||
|
||
| Аспект | Требование |
|
||
|--------|------------|
|
||
| Новые npm/Python пакеты | Нет |
|
||
| Новые внешние сервисы | Нет |
|
||
| Новые CDN-скрипты | Нет — `units.js` это локальный файл проекта, не внешний CDN |
|
||
| Версия MapLibre GL JS | Без изменений |
|
||
|
||
## 7. Сборка и деплой
|
||
|
||
- **Pipeline:** существующий Gitea Actions без изменений (`lint`, `test`,
|
||
`build`).
|
||
- **Артефакт:** статические ассеты фронтенда (`src/web/`), включая новый
|
||
`units.js`. Деплой — штатная пересборка/перевыкладка и
|
||
`docker compose up -d` на mva154.
|
||
- **Порядок подключения скриптов:** `units.js` должен подключаться в
|
||
`index.html` **строго перед** `app.js` (см. ADR-0001, риск R7 в
|
||
`10-tech-risks.md`). Контрольная точка для review.
|
||
- **Простой (downtime):** нет — изменение только в статике фронтенда.
|
||
- **План отката:** обратный коммит (revert) и повторный деплой;
|
||
миграций/серверного состояния, требующих отдельного отката, нет.
|
||
`localStorage`-ключ `distance_unit` у пользователей при откате
|
||
безвреден (игнорируется старым кодом).
|
||
|
||
## 8. Ресурсы (CPU / RAM / диск)
|
||
|
||
Воздействие отсутствует. Конвертация расстояний — несколько
|
||
арифметических операций в браузере клиента; тайлы и маршруты не
|
||
перезапрашиваются. Размер `units.js` пренебрежимо мал (единицы КБ).
|
||
|
||
## 9. Наблюдаемость
|
||
|
||
Новые метрики, логи и алерты не требуются. Поведение проверяется
|
||
unit-тестами модуля `units.js` и e2e-тестами фронтенда согласно
|
||
`04-test-plan.yaml` (TP-01…TP-05).
|
||
|
||
## 10. Влияние на C4
|
||
|
||
Состав компонентов системы **не меняется** — добавляется лишь файл
|
||
внутри уже существующего компонента «Frontend». Обновление
|
||
`docs/architecture/c4-*.mmd` не требуется (диаграммы C4 в репозитории
|
||
на данный момент отсутствуют — только `docs/architecture/README.md`).
|
||
|
||
## 11. Вывод
|
||
|
||
Инфраструктурных, сетевых, конфигурационных изменений и изменений БД
|
||
**нет**. ET-005 безопасен для деплоя в рамках обычного релизного цикла
|
||
фронтенда. Эскалация `arch:major-change` не требуется.
|