9.3 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-012 | Acceptance Criteria: Показывать пользовательские треки с зума z5 | 1 | draft | 2026-06-04 | 2026-06-04 |
|
Acceptance Criteria — ET-012
Критерии в Gherkin-стиле. Все — обязательные. Задача считается принятой, когда каждый критерий прошёл проверку (автоматическую в CI или ручную в test-среде).
AC-01 — Константа GPS_TRACKS_MIN_ZOOM понижена до 5
Given ветка feature/ET-012-z5-z8 с правками
When проверяется код
Then:
- В
src/web/gps_tracks.jsесть ровно одно объявлениеconst GPS_TRACKS_MIN_ZOOM = 5;(с возможным trailing comment). grep -R "GPS_TRACKS_MIN_ZOOM" src/web/не находит других значений, кроме5.
AC-02 — Vector-source gps-tracks-tiles имеет minzoom=5
Given test-среда после деплоя ET-012 When в DevTools выполнить
window._map.getSource('gps-tracks-tiles').minzoom
Then результат 5.
AC-03 — При z=5 слой публичных треков виден
Given пользователь на https://openclaw.mva154.duckdns.org/enduro/,
включён чекбокс «Публичные треки», БД содержит ≥ 50 треков по ЦФО
длиннее 10 км
When установить zoom = 5 (через DevTools или панорамированием)
и центр карты над ЦФО
Then:
- На карте видны линии треков (визуально — не менее 3 различимых линий в кадре).
window._map.getLayoutProperty('gps-tracks-layer-mvt', 'visibility') === 'visible'.- Hint
#public-tracks-zoom-hintимеетdisplay: none.
AC-04 — При z=6 и z=7 слой публичных треков виден
Аналогично AC-03 для z=6 (lim min_length = 5 км) и z=7 (min_length = 2 км). Количество видимых линий в кадре ≥ AC-03.
AC-05 — Hint «Зум 5+» появляется при z<5
Given включён чекбокс «Публичные треки»
When установить zoom = 4
Then:
- Hint
#public-tracks-zoom-hintимеетdisplay: inline(или иное ненулевое отображение). - Текст hint'а — «Зум 5+».
- На карте нет линий публичных треков (vector-source не запрашивает
тайлы при
zoom < source.minzoom).
AC-06 — Регрессия z8-z11: слой работает как прежде
Given ветка после ET-012
When установить zoom = 8, 9, 10, 11 поочерёдно
Then:
- На каждом зуме слой
gps-tracks-layer-mvtимеетvisibility: visible. - Набор отображаемых треков не уже, чем до ET-012 (за вычетом того, что в z=8 включаются ВСЕ треки независимо от длины, как было).
- Запросы
/api/gps-tracks/tiles/{z}/x/y.mvtвозвращают 200.
AC-07 — Регрессия z12+: GeoJSON-слой работает как прежде
Given включён чекбокс
When установить zoom = 12, 13, 14, 15
Then:
gps-tracks-layer-mvtимеетvisibility: none.gps-tracks-layer-geoимеетvisibility: visible.- На карте видны те же треки, что и до ET-012.
AC-08 — Читаемость карты на z5 (качественный критерий)
Given test-среда с ≥ 200 треками по ЦФО (после E2E-PROD-01/02 из ET-009)
When скриншот при zoom = 5, центр над Москвой
Then:
- На скриншоте
et012-z5-readable.pngвидны минимум 3 разных «нити» в разных квадрантах кадра. - Нет «сплошной заливки» одной зоны (треки не сливаются в кашу).
- Допустимо отличать «нить» как любую видимую линию длиной ≥ 20 px в кадре.
Проверка ручная по скриншоту в 13-test-report.md.
AC-09 — Производительность endpoint z=5 в test-среде
Given test-среда
When 10 раз подряд curl -w '%{time_total}\n' -o /dev/null "https://openclaw.mva154.duckdns.org/enduro/api/gps-tracks/tiles/5/19/9.mvt",
последовательно (первый — cold, последующие — cache hits)
Then:
- Cold-запрос ≤ 1.5 с (M-7 c запасом для сети).
- Median последующих ≤ 200 мс (cache hit).
- HTTP 200 на каждый запрос.
- Размер тела ≤ 200 KB (после gzip-decompression).
AC-10 — Размер MVT-тайла z=5 не превышает 200 KB
Given test-среда
When скачать тайл tiles/5/19/9.mvt (Москва) и tiles/5/20/9.mvt
(восток ЦФО)
Then размер тела ≤ 200 KB для каждого.
AC-11 — Unit-тесты zoom-tier зелёные
Given ветка
When pytest tests/unit/test_gps_mvt_zoom_tiers.py -v
Then все UT-Z5-, UT-Z6-, UT-Z7-, UT-Z8-, UT-Z12-* проходят.
AC-12 — Unit-тесты simplify зелёные
Given ветка
When pytest tests/unit/test_gps_mvt_simplify.py -v
Then все UT-SIMP-Z5-, UT-SIMP-Z6-, UT-SIMP-Z7-, UT-SIMP-Z10-,
UT-SIMP-Z12-* проходят.
AC-13 — Integration-тесты endpoint z5-z7 зелёные
Given ветка
When pytest tests/integration/test_gps_tile_z5_z7.py -v
Then все IT-Z5-, IT-Z6-, IT-Z7-, IT-CACHE- проходят.
AC-14 — Регрессионные тесты ET-008/ET-009 зелёные
Given ветка
When pytest tests/unit/ tests/integration/ -v (исключая perf-маркер)
Then все существующие тесты ET-008 (U-01..U-62 / I-01..I-57)
и ET-009 (UT-ER-, UT-WL-, UT-CFG-, IT-) проходят без регрессий.
AC-15 — Регрессия фильтров на z6
Given включён слой, на карте zoom = 6, видны треки трёх
источников (osm/enduro_russia/wikiloc)
When пользователь открывает #sheet-gps-filters и снимает галку
«EnduroRussia»
Then через ≤ 1.5 с (с учётом инвалидации MVT тайлов через
map.setFilter) с карты исчезают линии цвета EnduroRussia,
остальные остаются.
AC-16 — Регрессия popup на z6
Given включён слой, на карте zoom = 6 или 7, в кадре есть
длинный (≥ 10 км) трек
When пользователь кликает по линии трека
Then:
- Открывается popup
.track-popupс названием, активностью, длиной, источниками. - Если трек из источника
osm— в popup'е есть кнопка «Скачать GPX» (.track-popup-download-btn). - Клик по кнопке скачивает GPX-файл (контракт ET-011 не нарушен).
AC-17 — Halo на спутнике на z5 виден, но не «глушит» подложку
Given включён слой, переключена базовая подложка на спутник
(#base-btn-satellite), zoom = 5
When скриншот
Then:
- Линии видны на тёмной спутниковой подложке (благодаря halo).
- Halo-width ≤ 2 px (т.е. ореол не превращается в «пузырь»).
gps-tracks-halo-mvt-satellite.visibility === 'visible'.
AC-18 — Поведение на мобильном (375×667 viewport)
Given Playwright mobile viewport, включён слой, zoom = 5
When скриншот
Then:
- Линии видны.
- Толщина линии по «зрительному ощущению» ≥ 1 пикселя.
- Hint скрыт.
AC-19 — Performance-test PERF-Z5-01
Given ветка
When pytest -m perf tests/performance/test_gps_mvt_z5_perf.py -v
Then:
- PERF-Z5-01 проходит: avg ≤ 200 мс, p95 ≤ 500 мс на CI-runner при БД 500 треков.
(Этот тест запускается отдельным джобом / pre-merge gate.)
AC-20 — Документация work item полная
Given репо после слияния ET-012
When проверка docs/work-items/ET-012/
Then существуют:
00-business-request.md01-brd.md02-trz.md03-acceptance-criteria.md04-test-plan.yaml04b-ui-test-cases.md12-review.md(после Review)13-test-report.md(после Тестирования)14-deploy-log.md(после Деплоя)
AC-21 — make lint и make test зелёные
Given ветка
When make lint и make test
Then обе команды exit-code 0.