diff --git a/docs/work-items/ET-006/01-brd.md b/docs/work-items/ET-006/01-brd.md index 78d17be..41f43c3 100644 --- a/docs/work-items/ET-006/01-brd.md +++ b/docs/work-items/ET-006/01-brd.md @@ -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. Риски diff --git a/docs/work-items/ET-006/02-trz.md b/docs/work-items/ET-006/02-trz.md index 2b46cf6..44ba8e1 100644 --- a/docs/work-items/ET-006/02-trz.md +++ b/docs/work-items/ET-006/02-trz.md @@ -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. diff --git a/docs/work-items/ET-006/03-acceptance-criteria.md b/docs/work-items/ET-006/03-acceptance-criteria.md index 6b428eb..9a729a1 100644 --- a/docs/work-items/ET-006/03-acceptance-criteria.md +++ b/docs/work-items/ET-006/03-acceptance-criteria.md @@ -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 diff --git a/docs/work-items/ET-006/04-test-plan.yaml b/docs/work-items/ET-006/04-test-plan.yaml index 71a3b84..b2d73c7 100644 --- a/docs/work-items/ET-006/04-test-plan.yaml +++ b/docs/work-items/ET-006/04-test-plan.yaml @@ -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: "Профиль высот"