--- type: data-requirements work_item_id: ET-011 title: "Требования к данным — ET-011: Скачивание трека из popup" version: 1 status: approved created_at: 2026-06-03 authors: - "agent:architect" --- # Требования к данным — ET-011 ## 1. Резюме ET-011 — **read-only data event**. Никаких изменений схемы БД, никаких новых таблиц, индексов, миграций, localStorage-ключей. Эндпоинт `GET /api/gps-tracks/{id}/download` собирает GPX-файл из существующих полей таблицы `tracks` (ET-008 / ADR-005), переиспользует существующий WKB-парсер (`mvt.py::_wkb_to_coords`), не пишет ни в одну таблицу. **Меняется:** - Содержимое `config/gps_sources.yaml` (одно optional-поле `download_allowed: bool` per-source; см. ADR-015). - Контракт API расширяется одним новым endpoint'ом (`/download`). **Не меняется:** - Schema таблиц `tracks`, `pipeline_runs`; - Контракты существующих API `/api/gps-tracks`, `/tiles/...`, `/health`, `/cache/clear`; - localStorage ключи и значения клиента; - Dedup-алгоритм (`compute_dedup_key`); - ACTIVITY_TYPES enum; - Маппинги `SOURCE_ATTRIBUTIONS`, `SOURCE_LABELS`. ## 2. Архитектурные границы данных | Слой данных | Тип | Расположение | Изменения в ET-011 | |---|---|---|---| | OSM-vector (`trails`) | существующий | `/app/data/centralfederal.sqlite` | **нет** | | Личные GPX треки (ET-006) | существующий | браузер (memory) | **нет** | | Публичные GPS треки (ET-008) | существующий | `/app/data/gps_tracks.sqlite` | **read-only**: новый запрос на скачивание; никаких INSERT/UPDATE/DELETE | | OSRM-граф | существующий | `/app/data/enduro.osrm.*` | **нет** | | User UI state | существующий | `localStorage` | **нет** новых ключей | | Скачанный GPX-файл | **новое (выход)** | downloads-папка браузера пользователя | формат GPX 1.1, см. §4 | ## 3. Серверные данные — `gps_tracks.sqlite` ### 3.1 Schema **Без изменений vs ET-008.** См. `docs/work-items/ET-008/08-data-requirements.md` §3.1, §3.5. Никаких ALTER TABLE / DROP COLUMN / CREATE INDEX. ### 3.2 Используемые поля в SELECT для /download | Поле | Использование | |---|---| | `id` | Path-параметр запроса; PK lookup | | `name` | `` и `` в GPX; имя файла | | `description` | `` (если не null) | | `activity_type` | `` | | `user` | `` (если не null; для OSM по ADR-009) | | `created_at` | `