# 2026-05-03 — Дневник Стрим

## Enduro Trails — большой день

### Что сделали сегодня

**Фикс путей и деплой:**
- Исправлены абсолютные пути `/app.css`, `/app.js` → относительные в `index.html`
- Карта заработала через HTTPS `https://openclaw.mva154.duckdns.org/enduro/`
- Геолокация работает

**Стиль карты:**
- Тропы (path/footway/bridleway) → красный пунктир `#cc0000`
- Слой `trails-asphalt` скрыт (visibility: none, opacity: 0)
- Легенда обновлена: Lev1-2 / Lev3-5 / Тропа (асфальт убран)
- Порядок легенды: Lev1-2 → Lev3-5 → Тропа
- Раскраска треков: Lev1-2 жёлтый (#FFD700), Lev3-5 красный (#FF4400), толщина одинаковая
- Подложка: raster-saturation -0.3, raster-contrast 0.2 (лучше читаются названия)

**OSRM роутинг "Дикий путь":**
- Добавлен swap 4GB (`/home/slin/swapfile3`) — sudo пароль = `motoZ@yaz2010`
- Граф собран с `enduro.lua` профилем (3 попытки — первые две OOM)
- OSRM роутер запущен на порту 5559 (`osrm-routed` контейнер)
- API endpoint `/api/route` добавлен в `app.py`
- Фронт: кнопка 🗺️, маркеры A/B, карточка с дистанцией и временем
- **Проблема:** маршрут шёл по Ленинградскому шоссе вместо грунтовок
- Причина: `weight_name = 'duration'` → OSRM оптимизирует по времени, асфальт быстрее
- Исправление: `weight_name = 'routability'` + `forward_rate/backward_rate = penalty` (не делённое на скорость)
- Пересборка графа запущена (3-я итерация, ~40 мин)

**Поиск (Nominatim):**
- Поисковая строка в хедере, debounce 400ms, limit 6, countrycodes=ru
- Работает ✅

**Линейка:**
- Кнопка 📏, клик = точки, двойной клик = завершить
- Компактные плашки с расстоянием + крестик для удаления точки
- Проблема со смещением точек относительно линии — в процессе фикса
- Текущее решение: `anchor: 'center'`, кружок 10px, плашка абсолютно над ним

**Модель dev-агента:**
- Изменена с `vibecode/claude-sonnet-4.6` на `vibecode/claude-opus-4.7` в openclaw.json

### Бэклог (актуальный)

**Фаза 2 (почти готово):**
- 🔄 OSRM пересборка с `routability` весами (идёт)
- ✅ Поиск Nominatim
- 🔄 Линейка (фикс смещения точек)

**Фаза 3:**
- Промежуточные точки маршрута (перетаскиваемые)
- Статистика маршрута: % асфальт / lev1-2 / lev3-5 / тропа
- Расстояние между точками
- Скачать GPX
- Флажки/метки на карте

**Фаза 4:** SRTM рельеф, "Горка", "Красивый маршрут", "Разведка", "Связка"
**Фаза 5:** Тёмная тема, эндуро-редизайн, адаптив
**Фаза 6:** PWA, офлайн MBTiles, GPS-трекинг
**Фаза 7:** Народные треки (Wikiloc, OSM Traces, 4x4travel)

### Технические детали

**OSRM:**
- Данные: `/home/slin/enduro-trails/data/region.osm.pbf` (ЦФО + Чувашия)
- Профиль: `/home/slin/enduro-trails/osrm/enduro.lua`
- Граф: `/home/slin/enduro-trails/data/enduro.osrm.*`
- Docker compose: `/home/slin/enduro-trails/osrm/docker-compose.yml`
- Роутер: контейнер `osrm-routed`, порт 5559
- Сборка: `docker compose -f /home/slin/enduro-trails/osrm/docker-compose.yml run --rm osrm-prepare`

**Сервер:**
- SSH: `slin@82.22.50.71`, пароль `motoZ@yaz2010`, sudo тот же пароль
- Swap: `/home/slin/swapfile3` (4GB), добавлен сегодня
- Enduro контейнер: `prototype-enduro-trails-1`, порт 5558
- Enduro на сервере: `/home/slin/enduro-trails/prototype/`

**openclaw.json изменения:**
- `agents.dev.model.primary` = `vibecode/claude-opus-4.7`

## Линейка — финальный фикс (21:45 UTC)

Проблема: плашки смещены влево от кружков на скрине Славы.
Причина: `anchor: 'bottom'` для labelMarker крепит нижний-левый угол, не центр.

Решение (задеплоено):
- Кружок: отдельный маркер, `anchor: 'center'`, строго 10×10px → линия проходит точно через него
- Плашка: отдельный маркер, `anchor: 'center'`, `offset: [0, -20]` → висит ровно над кружком по центру
- Два маркера на точку: `dotMarker` + `labelMarker`, оба в `rulerMarkers[]`

Деплой: `docker compose up -d --build` на сервере 82.22.50.71, контейнер `prototype-enduro-trails-1`
