Files
enduro-trails/docs/work-items/ET-006/07-infra-requirements.md

4.4 KiB
Raw Blame History

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
agent:architect

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. Деплой

Стандартный процесс, без особых окон и без простоя сервисов:

  1. Merge PR в trunk.
  2. make build — пересборка Docker-образа (включает новый gpx.js).
  3. make deploy-testdocker compose up -d на mva154.
  4. 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 и повторную сборку образа. Серверного состояния, БД-изменений или графа, которые надо откатывать, нет. Время отката ограничено только временем пересборки/перезапуска контейнера (~12 мин).

7. CI

  • ESLint покрывает новый gpx.js (цель make lint, уже включает eslint).
  • Бэкенд-тесты (pytest) ET-006 не затрагивает.
  • Пересборки графа в pipeline нет — не релевантно.