docs(ET-006): TRZ v2 — persist GPX layers across map style switch
This commit is contained in:
@@ -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. Риски
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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: "Профиль высот"
|
||||
|
||||
Reference in New Issue
Block a user