4.4 KiB
type, work_item_id, version, status, created_at, authors
| type | work_item_id | version | status | created_at | authors | |
|---|---|---|---|---|---|---|
| infra-requirements | ET-006 | 1 | approved | 2026-05-22 |
|
Infra Requirements — ET-006
ET-006 — чисто фронтендовая фича. Парсинг и хранение GPX полностью клиентские (см. BRD §2, ADR-003). Бэкенд, БД, OSRM и сетевая конфигурация не затрагиваются.
1. Сводка: инфраструктурных изменений нет
| Аспект | Изменение |
|---|---|
| Новые контейнеры | нет |
| Новые порты | нет |
| Новые тома (volumes) | нет |
Изменения docker-compose.yml |
нет |
Изменения Dockerfile |
нет |
| Изменения nginx / reverse proxy | нет |
| Пересборка OSRM-графа | не требуется |
| Миграции БД | нет (см. 08-data-requirements.md) |
| Новые переменные окружения | нет |
| Новые внешние зависимости (npm/pip) | нет |
2. Новый статический ассет gpx.js
ADR-002 вводит новый файл src/web/gpx.js. Дополнительной конфигурации
не требуется:
Dockerfileуже копирует каталог целиком:COPY src/web/ ./src/web/.docker-compose.ymlмонтирует./src/web:/app/src/web(dev).- FastAPI отдаёт статику через
app.mount("/", StaticFiles(directory=STATIC_DIR, html=True))— файл доступен по/gpx.jsавтоматически. - Подключение — тег
<script src="gpx.js">вindex.html(см. ADR-002).
3. Загрузка файла 50 МБ — без серверной нагрузки
ТЗ REQ-F-03 разрешает GPX-файлы до 50 МБ. Файл читается в браузере
(<input type="file"> + FileReader / File.text()) и никогда не
загружается на сервер.
Следствия:
- Лимит
client_max_body_sizeв nginx — не релевантен (нет upload). - Ограничения размера тела запроса в FastAPI — не релевантны.
- Сетевой трафик и дисковая нагрузка сервера от ET-006 — нулевые.
4. CSP / заголовки безопасности
- CSP-заголовок в проекте сейчас не задаётся (проверено:
main.py,index.html). Дополнительных директив ET-006 не требует. - Web Worker отклонён в ADR-003 → директива
worker-srcне нужна даже при возможном будущем введении CSP. - Сторонних CDN/доменов ET-006 не добавляет (парсинг нативный
DOMParser, профиль высот — нативный<canvas>).
5. Деплой
Стандартный процесс, без особых окон и без простоя сервисов:
- Merge PR в trunk.
make build— пересборка Docker-образа (включает новыйgpx.js).make deploy-test→docker compose up -dна mva154.- Smoke-test на test-окружении
(
https://openclaw.mva154.duckdns.org/enduro/):- открыть
/gpx.js— отдаётся 200; - загрузить тестовый GPX, убедиться в отрисовке трека.
- открыть
Простой /api/route и прочих API — отсутствует (бэкенд не меняется).
6. Rollback
Откат — обычный откат фронтенд-файлов (index.html, app.js, app.css,
gpx.js) через revert PR и повторную сборку образа. Серверного состояния,
БД-изменений или графа, которые надо откатывать, нет. Время отката
ограничено только временем пересборки/перезапуска контейнера (~1–2 мин).
7. CI
- ESLint покрывает новый
gpx.js(цельmake lint, уже включает eslint). - Бэкенд-тесты (
pytest) ET-006 не затрагивает. - Пересборки графа в pipeline нет — не релевантно.