claude-bot 1984b0bde6
All checks were successful
CI / lint (push) Successful in 4s
CI / test (push) Successful in 6s
CI / lint (pull_request) Successful in 4s
CI / test (pull_request) Successful in 5s
CI / build (push) Successful in 4s
CI / build (pull_request) Successful in 2s
fix(ET-007): address 6 P1 findings from review (docs + code)
12-review.md (REQUEST_CHANGES, attempt 2/3) flagged 6 must-fix items
in the analysis/architecture artefacts plus matching bugs that had
already leaked into the committed implementation. This patch lands
both: documents corrected, code aligned with corrected specs, tests
updated.

P1-1: TRZ/ADR/Data/Risks referenced fictional layer ids
(`trails-grade1..5-halo-satellite`, `paths-bridleway-halo-satellite`).
Actual style*.json has only `trails-track-halo-satellite` and
`trails-path-bridleway-halo-satellite`; grade differentiation lives
inside one `match` expression on `tracktype` within `trails-track`.
Docs rewritten to operate on real ids.

P1-2: POI labels contrast was broken — spec changed only halo-color
to black, leaving `text-color: #333333` (light theme baseline)
unreadable over the new black halo. Code+docs now switch BOTH
`text-color` (-> `#ffffff` on satellite) AND halo together, with
per-theme baselines (`#333333` light / `#e0e0e0` dark) restored on
return to Schematic.

P1-3: BRD §5 hillshade risk said «hillshade auto-disabled on
satellite», contradicting TRZ/ADR/AC. BRD wording aligned: hillshade
keeps working over satellite; visual check is AC-04.

P1-4: background-color had four divergent sources (`#1a1a1a`,
`#2a2a2a`, `#1a1a2e`, `#f0ede6`), incl. an inverted-theme typo and a
baseline `#1a1a1a` that didn't match the actual `style-dark.json:28`
value `#1a1a2e`. Settled on ADR-004's single-constant model: `#2a2a2a`
on satellite for both themes; on Schematic restore per-theme baselines
`#f0ede6` (light) / `#1a1a2e` (dark). `_applyBackgroundForSatellite`
fixed accordingly.

P1-5: app.js already had `layerState.basemap` and `toggleLayer
('basemap')` (legacy «Базовая карта» switch). Neither TRZ nor ADR
specified the interaction. Added save&restore contract: on entering
Satellite save `layerState.basemap` to `_savedBasemapState` and
force-hide `osm-base`; on returning to Schematic restore osm-base
visibility from the saved value. CSS hook `body.satellite-active
#btn-basemap { display:none }` keeps the user from trying to enable
a hybrid mode (out of scope, BRD §3). TRZ §5.6, ADR-004 §8.

P1-6: `restoreTrailsState()` and `onTrailsCheckbox()` only managed
visibility of `trails-track` / `trails-path-bridleway`, leaving
their halo-underlay siblings as «phantom» halos when the user
unchecked grunты/тропы under Satellite. Introduced
`_applyTrailHaloVisibility(map, base)` reading checkbox state from
DOM; called from `onTrailsCheckbox`, `restoreTrailsState`, and both
branches of `applyBaseLayer`. Rule: halo visible ⇔ (base ===
satellite) AND (checkbox ON). TRZ §5.7, ADR-004 §9.

Docs bumped: BRD v2, TRZ v2, AC v2, Data v2, Risks v2; ADR-004
получает «Ревизии»-секцию (status remains accepted — only editorial
fixes, no decision change).

Tests:
- tests/unit/base_layer.test.js: rewritten 2 background-color
  assertions (#1a1a1a expectation removed), added 6 new tests for
  P1-2 / P1-4 (POI text-color per-theme baselines, single satellite
  bg #2a2a2a, baseline restore on Schematic).
- All 33 JS unit tests + 22 pytest static checks green.
- Full pytest suite: 76 passed (excluding pre-existing
  shapely-import skipped collection in tests/unit/test_health.py).

Refs: ET-007
Review: docs/work-items/ET-007/12-review.md (P1-1..P1-6)
ADR: docs/work-items/ET-007/06-adr/ADR-004-satellite-base-layer.md (rev. 2026-05-31)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-31 21:05:49 +00:00
2026-05-15 13:30:14 +03:00
2026-05-15 13:30:14 +03:00
2026-05-15 13:30:14 +03:00

Enduro Trails 🏍️

OSM-карта с фокусом на грунтовые дороги для построения эндуро-маршрутов.

Что это

Обычные карты оптимизированы под автомобили — асфальт яркий, грунтовки не видны. Enduro Trails переворачивает логику: грунтовки и тропы — главный слой, асфальт — тусклый фон.

Приложение помогает:

  • Найти грунтовые дороги в любом районе
  • Построить маршрут с максимумом грунта и минимумом асфальта
  • Оценить сложность (grade 1-5, покрытие, уклон)
  • Найти живописные места (озёра, виды, руины, броды)
  • Загрузить свой GPX-трек и просмотреть его с профилем высот и статистикой
  • Экспортировать маршрут в GPX для навигатора

Демо

https://openclaw.mva154.duckdns.org/enduro/

Фичи

  • 🗺️ Карта грунтовок — MapLibre GL JS, кастомный стиль, тёмная/светлая тема
  • 🛤️ Маршрут — до 5 альтернатив с разным балансом грунт/асфальт, промежуточные точки
  • Красивый маршрут — замкнутый круг через живописные POI
  • 🔗 Связка — соединить два трека грунтовками
  • 🔍 Разведка — статистика грунтовок в радиусе 20/50/100 км
  • 📏 Линейка — измерение расстояний на карте
  • 📍 Метки — сохранение точек интереса
  • 🏔️ Рельеф — гипсометрия + hillshade (SRTM 30м)
  • 📊 Статистика — % грунта/асфальта, время, дистанция
  • 📂 GPX загрузка — импорт треков с профилем высот, статистикой и сохранением при смене стиля карты
  • 📥 GPX экспорт — трек + waypoints для навигатора
  • 🌙 Тёмная тема — авто (по закату), ручная, синхронизация карты и UI

Стек

Компонент Технология
Frontend MapLibre GL JS + vanilla JS
Backend Python 3.12 + FastAPI + uvicorn
БД SQLite + Spatialite (1.1M треков, 14K POI)
Роутинг OSRM с кастомным эндуро-профилем
Тайлы Self-hosted raster (terrain, hillshade, TRI)
Контейнеризация Docker + Compose
CI Gitea Actions

Регион

ЦФО + Чувашия (расширение по запросу)

Быстрый старт

make dev        # поднять локально (Docker Compose)
make test       # запустить тесты
make lint       # линтеры
make build      # собрать Docker-образ

Структура

src/api/        — FastAPI backend (маршруты, тайлы, поиск)
src/web/        — фронтенд (MapLibre, UI)
tests/          — тесты (unit, integration, e2e)
docs/           — документация, ADR, work-items
scripts/        — утилиты
migrations/     — миграции БД
.openclaw/      — system prompts агентов

Фазы

# Название Описание
PH-1 MVP Карта грунтовок + MVT тайлы
PH-2 Routing OSRM роутинг + базовый UI
PH-3 Smart Route Альтернативы, статистика, GPX
PH-4 Advanced Routing Красивый маршрут, связка, разведка
PH-5 Redesign Тёмная тема, mobile UI, UX
PH-6 Terrain Hillshade + гипсометрия + TRI
PH-7 Barriers Шлагбаумы, тротуары, слой препятствий
PH-8 Elevation Profile Профиль высот, режим «Горка»
PH-9 PWA Офлайн режим

Детали каждой фазы: docs/phases/

Лицензия

Данные: © OpenStreetMap contributors (ODbL) Рельеф: NASA SRTM (Public Domain)

Description
Карта эндуро-маршрутов с рельефом и навигацией
Readme 3.2 MiB
Languages
Python 49.1%
JavaScript 39.7%
CSS 5.6%
HTML 4.3%
Lua 0.7%
Other 0.5%