5be81f97a5b33b7ccd4aac9af08b6d7a98452878
All checks were successful
Понижаем UI-минзум hillshade с 10 до 9 и переводим raster-paint обоих terrain-слоёв в zoom-aware форму через MapLibre interpolate. На z9-z11 — пик opacity/contrast, чтобы рельеф читался как на z8; на z12-z14 — возврат к исходным значениям (регрессия по AC-10). TRI на z8 остаётся 0.70 (регрессия по AC-06), пик 0.80-0.85 на z9-z11. Изменения: - src/web/app.js: добавлены HILLSHADE_PAINT и TRI_PAINT; applyTerrainLayer расширена для поддержки object-paint (обратно-совместимо); порог updateHillshadeAvailability понижен до 9; вызовы для hillshade переведены на minzoom=9. - src/web/index.html: hint обновлён с «Зум 10+» на «Зум 9+». - tests/unit/test_terrain_paint.py: 17 тестов покрытия zoom-stops, контракта applyTerrainLayer и регрессий (UT-PAINT-*, UT-REG-*). - tests/integration/test_terrain_z9_tiles.py: smoke /terrain endpoint на z9-z11 + кэш-заголовки (IT-TILE-*). Backend, тайлы на диске, конфиги, стили — без изменений. Refs: ET-013 ADR: ADR-017 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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
Languages
Python
49.1%
JavaScript
39.7%
CSS
5.6%
HTML
4.3%
Lua
0.7%
Other
0.5%