docs(ET-006): TRZ v2 — persist GPX layers across map style switch

This commit is contained in:
2026-05-22 03:33:15 +03:00
parent 73b29aeba8
commit 2104f12d86
4 changed files with 44 additions and 4 deletions

View File

@@ -2,9 +2,10 @@
type: brd
work_item_id: ET-006
title: "BRD: Загрузка и визуализация GPX-треков"
version: 1
version: 2
status: approved
created_at: 2026-05-22
updated_at: 2026-05-22
authors:
- "agent:analyst"
---
@@ -41,6 +42,7 @@ authors:
| F-10 | Профиль высот выбранного трека |
| F-11 | Статистика трека: длина, набор высоты, сброс высоты, мин/макс высота |
| F-12 | Лимит размера файла: 50 МБ |
| F-13 | Сохранение GPX-слоёв при переключении стиля карты (тёмная тема / рельеф) |
### Out of scope
@@ -63,6 +65,7 @@ authors:
| Удаление | Удалённый трек исчезает с карты и из панели |
| Профиль высот | Отображается корректный график высот для выбранного трека |
| Статистика | Длина, набор/сброс высоты отображаются корректно |
| Сохранение при смене стиля | GPX-треки остаются на карте после переключения тёмной темы / слоёв рельефа |
| Не ломает существующий функционал | Роутинг, рельеф, POI, линейка работают как прежде |
## 5. Риски

View File

@@ -2,9 +2,10 @@
type: trz
work_item_id: ET-006
title: "ТЗ: Загрузка и визуализация GPX-треков"
version: 1
version: 2
status: approved
created_at: 2026-05-22
updated_at: 2026-05-22
authors:
- "agent:analyst"
---
@@ -109,6 +110,15 @@ authors:
- При клике на линию трека на карте — этот трек становится активным в панели (показывается статистика + профиль).
- Курсор при наведении на трек: pointer.
### REQ-F-13: Сохранение треков при переключении стиля карты
- При переключении стиля карты (тёмная тема, восстановление слоёв рельефа) вызывается `map.setStyle()`, который удаляет **все** пользовательские source и layer.
- После смены стиля все загруженные GPX-треки должны быть автоматически восстановлены: линии треков, source, waypoints-маркеры.
- Восстановление выполняется в функции `rebuildMapOverlays()` (`src/web/app.js`) — по аналогии с уже реализованными там маршрутом OSRM, разведкой и scenic-маршрутами.
- Данные треков (`window.gpxTracks`) хранятся в памяти и при `setStyle()` не теряются — пересоздаются только объекты карты (source / layer / маркеры).
- Активный трек, его статистика и профиль высот должны сохраняться после переключения стиля.
- Z-order GPX-слоёв (см. REQ-F-04) корректно восстанавливается и после смены стиля.
## 2. Нефункциональные требования
### REQ-NF-01: Производительность
@@ -276,3 +286,4 @@ src/web/
- Z-order: GPX-треки ниже активного маршрута OSRM, но выше базовых слоёв (trails, terrain).
- Кнопка загрузки в `#map-controls-r` доступна всегда.
- Кнопка «GPX» в toolbar переключает sheet, но не деактивирует другие режимы.
- При смене стиля карты (`setStyle` — тёмная тема, слои рельефа) GPX-слои восстанавливаются через `rebuildMapOverlays()` — см. REQ-F-13.

View File

@@ -2,9 +2,10 @@
type: acceptance-criteria
work_item_id: ET-006
title: "AC: Загрузка и визуализация GPX-треков"
version: 1
version: 2
status: approved
created_at: 2026-05-22
updated_at: 2026-05-22
authors:
- "agent:analyst"
---
@@ -221,6 +222,25 @@ Feature: Параллельная работа с роутингом
And режим разведки продолжает работать
```
## AC-12: Сохранение при переключении стиля карты
```gherkin
Feature: Сохранение GPX-треков при смене стиля карты
Scenario: Переключение тёмной темы
Given загружен GPX-трек и отображается на карте
When пользователь переключает тёмную тему
Then трек остаётся на карте после смены стиля
And waypoints остаются на карте
And активный трек, его статистика и профиль высот сохраняются
Scenario: Переключение слоёв рельефа
Given загружены 2 GPX-трека
When пользователь включает или выключает слой рельефа (hillshade / TRI)
Then оба трека остаются на карте с прежними цветами
And z-order GPX-слоёв сохраняется (ниже маршрута OSRM)
```
## AC-11: Индикатор загрузки
```gherkin

View File

@@ -2,9 +2,10 @@
type: test-plan
work_item_id: ET-006
title: "Test Plan: Загрузка и визуализация GPX-треков"
version: 1
version: 2
status: approved
created_at: 2026-05-22
updated_at: 2026-05-22
authors:
- "agent:analyst"
@@ -131,6 +132,11 @@ test_suites:
input: "Загружен GPX + построен маршрут"
expected: "Layer order: gpx-layer before route-layer"
- id: I-07
name: "Треки сохраняются после setStyle (переключение стиля карты)"
input: "Загружен GPX-трек (линия + waypoints), вызывается switchMapStyle() / map.setStyle()"
expected: "После события idle: map.getLayer(layerId) !== null, map.getSource(sourceId) !== null, waypoint-маркеры присутствуют, активный трек и его статистика/профиль сохранены"
- name: integration-gpx-elevation
type: integration
description: "Профиль высот"