10 KiB
10 KiB
type, work_item_id, title, version, status, created_at, updated_at, authors
| type | work_item_id | title | version | status | created_at | updated_at | authors | |
|---|---|---|---|---|---|---|---|---|
| acceptance-criteria | ET-007 | AC: Спутниковая карта (Схема / Спутник) | 1 | draft | 2026-05-31 | 2026-05-31 |
|
Acceptance Criteria — ET-007: Спутниковая карта (Схема / Спутник)
AC-01: UI переключателя
Feature: Переключатель подложки в попапе слоёв
Scenario: Открытие попапа показывает переключатель
Given пользователь находится на карте
When пользователь нажимает кнопку «Рельеф» (#terrain-toggle)
Then открывается попап #terrain-popup
And в попапе виден segmented-control «Подложка» с кнопками «Схема» и «Спутник»
And одна из кнопок имеет класс .active
Scenario: Default — Схема
Given localStorage пуст (или ключ 'map-base-layer' не задан)
When пользователь открывает попап слоёв
Then активна кнопка «Схема» (#base-btn-schematic)
And не активна кнопка «Спутник» (#base-btn-satellite)
AC-02: Переключение на «Спутник»
Feature: Переключение Схема → Спутник
Scenario: Базовое переключение
Given активна подложка «Схема»
When пользователь нажимает «Спутник» в попапе слоёв
Then кнопка «Спутник» получает класс .active
And кнопка «Схема» теряет класс .active
And на карте слой osm-base скрыт (visibility=none)
And на карте появляется слой satellite-base (visibility=visible)
And положение карты (center, zoom, bearing, pitch) не изменилось
Scenario: Атрибуция Esri отображается
Given пользователь включил режим «Спутник»
Then в нижнем правом углу карты видна атрибуция «Source: Esri, Maxar, Earthstar Geographics, and the GIS User Community»
AC-03: Переключение на «Схема»
Feature: Переключение Спутник → Схема
Scenario: Возврат на схему
Given активна подложка «Спутник»
When пользователь нажимает «Схема» в попапе слоёв
Then кнопка «Схема» получает класс .active
And слой osm-base снова виден (visibility=visible)
And слой satellite-base скрыт (visibility=none), но source остаётся в стиле
And положение карты не изменилось
AC-04: Совместимость со слоями приложения
Feature: Слои поверх спутника
Scenario: Грунтовки и тропы видны на спутнике
Given активна подложка «Спутник»
And в попапе включены «Грунтовки» и «Тропы»
Then на карте видны линии грунтовок и троп поверх спутника
And линии имеют визуально различимую обводку (halo) для контраста
Scenario: POI видны на спутнике
Given активна подложка «Спутник»
And в попапе включён «POI»
Then на карте видны маркеры POI поверх спутника
And подписи POI читаемы (имеют тёмный halo)
Scenario: Hillshade поверх спутника
Given активна подложка «Спутник»
When пользователь включает «Тени рельефа»
Then на карте видны и спутник, и hillshade (hillshade поверх спутника)
Scenario: Маршрут OSRM поверх спутника
Given пользователь построил маршрут через OSRM
When пользователь переключает подложку на «Спутник»
Then маршрут остаётся виден поверх спутника
And статистика маршрута сохранена
Scenario: GPX-треки поверх спутника
Given пользователь загрузил GPX-трек
When пользователь переключает подложку на «Спутник»
Then GPX-линии и waypoints остаются видны поверх спутника
AC-05: Сохранение в localStorage
Feature: Persistence выбора подложки
Scenario: Сохранение при переключении
Given активна подложка «Схема»
When пользователь нажимает «Спутник»
Then localStorage['map-base-layer'] === 'satellite'
Scenario: Восстановление после reload
Given localStorage['map-base-layer'] === 'satellite'
When пользователь перезагружает страницу
Then после загрузки карты активна подложка «Спутник»
And кнопка «Спутник» имеет класс .active
AC-06: Восстановление при смене темы
Feature: Подложка переживает смену темы
Scenario: Переключение тёмной/светлой темы в режиме «Спутник»
Given активна подложка «Спутник»
When пользователь переключает тему (тёмная ↔ светлая)
Then после завершения map.setStyle() спутниковый слой восстановлен
And подложка «Спутник» остаётся активной
And все слои поверх (trails, POI, маршрут, GPX) восстановлены
Scenario: Переключение слоёв terrain в режиме «Спутник»
Given активна подложка «Спутник»
When пользователь включает или выключает «Тени рельефа» / «Перепады»
Then подложка «Спутник» остаётся активной
AC-07: Совместимость с режимами тулбара
Feature: Подложка не мешает другим режимам
Scenario: Режим «Маршрут» на спутнике
Given активна подложка «Спутник»
When пользователь активирует режим «Маршрут»
And тапает 2 точки на карте
Then маршрут строится корректно
And линия маршрута видна на спутнике
Scenario: Режим «Разведка» на спутнике
Given активна подложка «Спутник»
When пользователь активирует режим «Разведка» и тапает на карту
Then круг радиуса разведки видим
And статистика разведки отображается
Scenario: Линейка на спутнике
Given активна подложка «Спутник»
When пользователь активирует «Линейка» и расставляет точки
Then линия линейки видна
And расстояние отображается
Scenario: Поиск на спутнике
Given активна подложка «Спутник»
When пользователь нажимает «Поиск» и вводит запрос
Then результаты поиска отображаются
And карта корректно центрируется на найденной точке
AC-08: Производительность
Feature: Скорость переключения
Scenario: Переключение Схема → Спутник
Given активна подложка «Схема» и сеть ≥ 5 Мбит/с
When пользователь нажимает «Спутник»
Then первая спутниковая плитка отображается в течение ≤ 500 мс
Scenario: Переключение Спутник → Схема
Given активна подложка «Спутник» (тайлы уже подгружены)
When пользователь нажимает «Схема»
Then смена визуально мгновенная (≤ 100 мс)
AC-09: Mobile UI
Feature: Переключатель на мобильных устройствах
Scenario: Попап слоёв на мобильном
Given пользователь открыл приложение на мобильном устройстве (виртуальный viewport 375×812)
When пользователь открывает попап слоёв
Then переключатель «Подложка» виден полностью
And обе кнопки нажимаемы (touch target ≥ 34px)
And не перекрывает другие элементы попапа
AC-10: Не ломает существующий функционал
Feature: Регресс-проверка
Scenario: Все режимы работают как в режиме «Схема», так и в «Спутник»
Given пользователь использует приложение
Then режимы Маршрут, Связка, Красивый, Разведка, Линейка, Поиск, Метка, GPX
работают одинаково в обеих подложках
And переключение единиц измерения (км/мили) работает в обеих подложках
And переключение темы работает в обеих подложках