claude-bot 7d8407a378
All checks were successful
CI / lint (push) Successful in 5s
CI / test (push) Successful in 7s
CI / lint (pull_request) Successful in 4s
CI / test (pull_request) Successful in 7s
CI / build (pull_request) Successful in 2s
CI / build (push) Successful in 18s
fix(ci): hoist imports to satisfy E402 + declare runtime/test deps in pyproject
CI failures на feature/ET-011 были вызваны двумя проблемами:

1. ruff `E402 Module level import not at top of file` × 10 в src/api/main.py:
   - 9 ошибок от ET-008 (GPS_TRACKS_DB_PATH между импортами) +
     1 новая от ET-011 (`from src.api.gps_tracks.endpoint import ...` после
     определения `app`). Перенёс все импорты наверх; константы
     GPS_TRACKS_DB_PATH и GPS_SOURCES_CONFIG_PATH теперь сразу после import-блока,
     а создание router-а остаётся в нижней части файла (зависит от `app`).

2. pyproject.toml не объявлял runtime-deps, которые реально импортируются
   в src/ (defusedxml, pyyaml) и в тестах (lxml). Dockerfile брал их из
   src/api/requirements.txt, но CI jobs `lint`/`test` ставят `.[dev]` —
   поэтому `pytest tests/` падал на ModuleNotFoundError при коллекции
   тестов из ET-008/ET-009/ET-011. Добавил недостающие пины в pyproject
   (defusedxml/pyyaml в основные deps, lxml — только в dev, нужен для
   XSD-валидации в test_gps_tracks_download/_gpx_builder).

Проверено локально в чистом venv после `pip install .[dev]`:
- `ruff check src/` → All checks passed
- `pytest tests/` → 200 passed, 2 deselected

Refs: ET-011

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-03 22:48:27 +00: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.1 MiB
Languages
Python 49.1%
JavaScript 39.7%
CSS 5.6%
HTML 4.3%
Lua 0.7%
Other 0.5%