Files
enduro-trails/docs/phases/pilot/00-phase-brd.md
Slava 0480be2539
Some checks failed
CI / test (push) Failing after 25s
CI / lint (pull_request) Failing after 23s
CI / lint (push) Failing after 54s
CI / test (pull_request) Failing after 6s
CI / build (pull_request) Has been skipped
CI / build (push) Has been skipped
docs: add project README, phase BRD and plan
- README.md with project overview, features, stack
- docs/phases/pilot/00-phase-brd.md — full project BRD
- docs/phases/pilot/01-phase-plan.md — current phase plan

Refs: multi-agent F0-3
2026-05-15 15:59:44 +03:00

5.9 KiB
Raw Blame History

type, phase_id, title, version, status, created_at, authors
type phase_id title version status created_at authors
phase-brd pilot Enduro Trails — пилотный проект мультиагентной разработки 1 approved 2026-05-15
agent:stream
human:slava

BRD — Enduro Trails (пилотный проект)

1. Цель и метрика успеха

Цель: Создать веб-приложение для планирования эндуро-маршрутов с визуализацией грунтовых дорог, рельефа и навигацией — как пилотный проект мультиагентной системы разработки.

Метрики успеха:

  • Рабочее приложение доступно по URL (https://openclaw.mva154.duckdns.org/enduro/)
  • Покрытие региона: ЦФО + Чувашия (1.1M треков, 14K POI)
  • Построение маршрута < 5 секунд
  • Мобильный UI (PWA-ready)
  • Агентный конвейер: фича от постановки до деплоя ≤ 4 часа

2. Стейкхолдеры

Роль Кто Интерес
Заказчик / Owner Слава Использует для планирования поездок
Analyst Стрим (OpenClaw) BRD, ТЗ, координация
Разработка Claude Code CLI агенты Architect, Developer, Reviewer, Tester, Deployer

3. Scope

В скоупе

  • Карта грунтовых дорог (MapLibre GL JS, кастомный стиль)
  • Роутинг «Дикий путь» (OSRM, кастомный профиль enduro.lua)
  • Альтернативные маршруты (до 5 вариантов)
  • Промежуточные точки (до 8)
  • Статистика покрытия (% грунт/асфальт по типам)
  • «Красивый маршрут» (замкнутый круг через POI)
  • «Связка» (соединить два трека)
  • «Разведка» (грунтовки в радиусе)
  • Рельеф (гипсометрия + hillshade, SRTM 30м)
  • TRI (Terrain Ruggedness Index)
  • Линейка, метки, GPX экспорт
  • Тёмная/светлая тема (авто по SunCalc)
  • Мобильный UI (bottom sheets, toolbar, touch)
  • Поиск (Nominatim geocoding)

Вне скоупа (v1)

  • PWA офлайн режим
  • GPS-трекинг в реальном времени
  • Народные треки (Wikiloc, Komoot)
  • Профиль высот на маршруте
  • Мультирегион (вся Россия)
  • Нативное мобильное приложение

4. Архитектура

Компоненты

  • Frontend — MapLibre GL JS, vanilla JS (ES modules), CSS custom properties
  • Backend API — FastAPI (Python 3.12), uvicorn (4 workers)
  • Tile Server — статические raster tiles через nginx
  • Vector Tiles — MVT из SQLite (self-hosted, FastAPI)
  • Routing Engine — OSRM с кастомным профилем enduro.lua
  • Database — SQLite + Spatialite (431 MB)
  • Reverse Proxy — nginx (/enduro/ → контейнер)

Инфраструктура

  • Один сервер: mva154 (82.22.50.71)
  • Docker Compose
  • Gitea (git + CI)
  • Plane (управление задачами)

Данные

  • OSM PBF (Geofabrik, ЦФО + Чувашия)
  • SRTM 30м (NASA, public domain)
  • OSRM граф (~5.2 GB)

5. Реализованные фазы

Фаза Описание Статус Дата
1 MVP: карта + MVT тайлы 02.05.2026
2 Роутинг + базовый UI 03.05.2026
3 Умный маршрут (альтернативы, статистика, GPX) 04.05.2026
4 Продвинутый роутинг (красивый, связка, разведка) 04.05.2026
5 Редизайн (тёмная тема, mobile UI, UX) 05-06.05.2026
5.4 Рельеф (hillshade + гипсометрия + TRI) 12-14.05.2026

6. Бэклог

Фаза Описание Приоритет
3.1 Улучшение роутинга (шлагбаумы, тротуары, слой препятствий) Высокий
6 SRTM продвинутый (профиль высот, «Горка») Средний
7 PWA + офлайн Средний
8 Народные треки Низкий

7. Ключевые решения

Решение Причина
MapLibre GL JS (не Leaflet) WebGL, производительность, vector tiles
Vanilla JS (не React) Простота, нет build step, быстрый старт
FastAPI (не Django) Лёгкий, async, минимум зависимостей
SQLite/Spatialite (не PostGIS) Портативность, zero-config, достаточно для 1 региона
OSRM (не GraphHopper) Быстрый, проверенный, кастомный lua-профиль
Self-hosted MVT (не TileServer GL) Меньше зависимостей, контроль над фильтрацией
Raster tiles для terrain (не Mapbox Terrain RGB) Простота генерации, nginx отдаёт статику
Docker Compose Один файл — весь стек

8. Риски

Риск Митигация
OSRM граф большой (5.2 GB RAM) Swap 6 GB настроен
SQLite не масштабируется Миграция на PostGIS при необходимости
Один сервер — single point of failure Бэкапы, Docker restart policy
SRTM 30м недостаточно для крутых склонов Достаточно для ЦФО (равнина)