Files
wiki/tasks/enduro-trails/PROJECT.md
2026-05-03 23:40:01 +03:00

116 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Enduro Trails 🏍️
> OSM-карта с фокусом на грунтовые дороги для построения красивых эндуро-маршрутов
**Статус:** active (прототип задеплоен)
**Старт:** 2026-05-02
**Автор:** Слава
---
## Концепция
Обычные карты оптимизированы под автомобили — асфальт яркий, грунтовки не видны. Enduro Trails переворачивает эту логику: **грунтовки/тропы — главный слой**, асфальт — тусклый фон. Плюс фичи для поиска и построения красивых маршрутов (минимум асфальта, максимум красоты).
## Ключевые фичи
| Фича | Описание |
|------|----------|
| 🛤️ **"Дикий путь"** | Роутинг А→Б с максимизацией грунтовок |
| 🎨 **"Красивый маршрут"** | Замкнутый круг через водоёмы, виды, заброшки |
| 🏔️ **"Горка"** | Макс набор высоты, мин дистанция |
| 🔗 **"Связка"** | Соединить два трека грунтовками |
| 📍 **"Разведка"** | Грунтовки вокруг точки |
| 🚧 **"Препятствия"** | Броды, шлагбаумы, болота, ЛЭП |
| 🌐 **"Народные треки"** | Сбор и отображение треков с внешних сервисов |
| 🔍 **"Поиск"** | Поиск населённых пунктов, адресов и объектов как на обычных картах |
| 🌙 **"День/ночь"** | Переключатель темы — светлая/тёмная карта |
| 🎨 **"Эндуро-дизайн"** | Современный агрессивный UI в духе эндуро/оффроад |
| 📏 **"Линейка"** | Измерение расстояния между точками на карте |
| 🚩 **"Флажки/метки"** | Расстановка именованных меток на карте |
| 🗺️ **"Умный маршрут"** | Промежуточные точки, расстояние между ними, % асфальт/грунт/тропа |
## Регионы
1. **ЦФО + Чувашия** (первый регион, прототип)
2. Расширение на новые ФО по запросу
## План
Прототип (mva154) → проверка концепта → новая VM с PostGIS + OSRM → масштабируемая платформа
## Архитектура
Схема: `../../enduro_architecture.png`
Концепт: [CONCEPT.md](CONCEPT.md)
### Стек
- Pyrosm/Osmium → парсинг PBF
- Spatialite/PostGIS → хранение
- OSRM (кастомный профиль) → роутинг
- FastAPI → бэкенд
- MapLibre GL JS → фронт (веб + PWA)
## Хостинг
- **Прототип:** `slin@82.22.50.71`, контейнер `prototype-enduro-trails-1`, порт `5558`
- **URL:** `https://openclaw.mva154.duckdns.org/enduro/`
- **Продакшен:** новая VM (4 vCPU, 8 GB RAM, 50 GB диск)
## Текущее состояние (2026-05-03)
- ✅ Прототип задеплоен: `https://openclaw.mva154.duckdns.org/enduro/`
- ✅ БД: 1 141 926 треков, 14 882 POI (Spatialite)
- ✅ Векторные тайлы (MVT) через FastAPI, 4 uvicorn workers
- ✅ LRU-кэш тайлов (512 тайлов в памяти)
- ✅ Упрощение геометрии по зуму (Shapely simplify)
- ✅ Фильтр треков по длине на низких зумах (z8: ≥500м, z9: ≥200м)
- ✅ Dockerfile — быстрый старт контейнера без apt/pip при рестарте
- ✅ Nginx `/enduro/` с HTTPS через `openclaw.mva154.duckdns.org`
- ✅ Фронт: MapLibre GL JS, легенда (Lev1-2 / Lev3-5 / Тропа)
- ✅ Тропы — красный пунктир, асфальт скрыт
- ✅ Кнопки: 🧭 компас (север/свободный), 📍 геолокация с маркером
- ✅ Попапы с name, surface, tracktype, length_m, mtb_scale
## План развития
| Фаза | Что | Статус |
|------|-----|--------|
| Фаза 1 | Прототип — визуализация OSM треков | ✅ Готово |
| Фаза 2 | OSRM роутинг + "Дикий путь" | 🔄 В работе |
| Фаза 3 | SRTM рельеф + уклоны + "Горка" | ⏳ Планируется |
| Фаза 4 | "Красивый маршрут", "Связка", "Разведка" | ⏳ Планируется |
| Фаза 5 | PWA + оффлайн | ⏳ Планируется |
| Фаза 6 | Народные треки — сбор с внешних сервисов | ⏳ Планируется |
### Фаза 6: Народные треки (детали)
Источники для сбора:
- **OSM Traces** — публичные GPS-треки загруженные в OSM, бесплатно, API открытый
- **Wikiloc** — огромная база треков эндуристов/велосипедистов/туристов, есть API
- **Komoot** — активно используется эндуристами и велотуристами
- **Strava** — велосипедисты, бегуны (API платный для массового сбора)
- **4x4travel.ru** — джипперы, форум с GPX-файлами
- **Enduroad.ru** — эндуро-сообщество
- **Garmin Connect** — публичные активности
Реализация:
- Сборщик треков → конвертация в GeoJSON → отдельная таблица `community_tracks` в БД
- Отдельный слой на карте "Народные треки" (другой цвет, можно вкл/выкл)
- Фильтрация по типу активности: мото / велосипед / джип / пеший
- Атрибуты: источник, автор, дата, рейтинг, тип активности
| Компонент | Объём |
|-----------|--------|
| PBF (регион) | ~150-200 MB |
| Spatialite/PostGIS | ~500 MB - 1 GB |
| OSRM граф | ~1-3 GB |
| SRTM DEM | ~2-3 GB |
| Тайлы (z10-16) | ~2-5 GB |
| **Итого** | **~5-12 GB** |
---
*Ссылка на онтологию: `proj_enduro_trails`*