---
type: data-requirements
work_item_id: ET-006
version: 1
status: approved
created_at: 2026-05-22
authors:
- "agent:architect"
---
# Data Requirements — ET-006
## 1. Сводка: персистентных данных нет
ET-006 не вводит серверного хранения. Все данные GPX-треков живут **только
в памяти браузера** на время сессии (BRD §3 «Out of scope», TRZ NF-04).
| Аспект | Решение |
|---|---|
| Схема БД (SQLite/Spatialite) | без изменений |
| Миграции (`migrations/`) | нет |
| Серверное хранение треков | нет |
| `localStorage` / `sessionStorage` | **не используется** (объём данных велик) |
| Время жизни данных | сессия; при перезагрузке страницы — потеря |
## 2. Входные данные
- Формат: **GPX 1.1**, namespace `http://www.topografix.com/GPX/1/1`
(с fallback на парсинг без namespace — TRZ REQ-F-02, тест U-08).
- Источник: локальный файл, выбранный пользователем
(``).
- Ограничение размера: ≤ 50 МБ на файл (TRZ REQ-F-03).
- Извлекаемые сущности: `` / `` / ``, ``, ``
(трактуется как трек).
## 3. Внутренняя модель (in-memory)
Каноническая модель — `window.gpxTracks` (массив загруженных файлов),
определена в TRZ §4. Владеет ею `gpx.js` (ADR-002):
```javascript
window.gpxTracks = [
{
id: 'gpx-', // уникальный ID
filename: 'morning_ride', // имя файла без расширения
color: '#e6194b', // цвет из палитры (8 цветов, цикл)
tracks: [
{
name: 'Morning Ride',
points: [[lon, lat, ele, time], ...],
stats: { distanceKm, elevGain, elevLoss, eleMin, eleMax }
}
],
waypoints: [ { lon, lat, name, ele } ],
sourceId: 'gpx-source-',
layerId: 'gpx-layer-',
waypointLayerId: 'gpx-wpt-'
}
];
```
Замечания для разработки:
- `ele` / `time` опциональны. При отсутствии `` — `ele = null`,
поля статистики высот = `null` (TRZ REQ-F-11, тесты U-05, U-14).
- `window.gpxTracks` — единственный источник правды; объекты карты
(source / layer / маркеры) **производны** от него и пересоздаются при
`map.setStyle()` через `rebuildGpxOverlays()` (REQ-F-13, ADR-002).
- Дополнительно потребуется состояние «активный трек» (для статистики и
профиля высот) — хранится в `gpx.js`, должно переживать смену стиля.
## 4. Объём данных в памяти
Предельный файл 50 МБ ≈ 500K+ точек. Ориентировочный транзиентный профиль:
| Стадия | Память (порядок) |
|---|---|
| Строка файла | ~50 МБ |
| DOM после `parseFromString` | ~150–300 МБ (освобождается после конвертации) |
| Модель `points` + GeoJSON source | десятки МБ на файл |
TRZ REQ-F-07 не ограничивает число одновременных треков. Накопление
нескольких предельных файлов может исчерпать память вкладки на слабом
устройстве — см. риск R-3 в `10-tech-risks.md`.
## 5. Приватность
GPX-файлы могут содержать персональные данные (координаты поездок,
метки времени `