From 5c81fedd59fd1a3448eabbe1d89f2a21863b4db9 Mon Sep 17 00:00:00 2001 From: Stream Date: Mon, 4 May 2026 00:40:02 +0300 Subject: [PATCH] auto-sync: 2026-05-04 00:40:01 --- memory/2026-05-03.md | 80 +++++++++++++++++++++ tasks/enduro-trails/prototype/static/app.js | 14 ++-- 2 files changed, 87 insertions(+), 7 deletions(-) create mode 100644 memory/2026-05-03.md diff --git a/memory/2026-05-03.md b/memory/2026-05-03.md new file mode 100644 index 0000000..cc56d16 --- /dev/null +++ b/memory/2026-05-03.md @@ -0,0 +1,80 @@ +# 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` diff --git a/tasks/enduro-trails/prototype/static/app.js b/tasks/enduro-trails/prototype/static/app.js index ebd9530..3925fe5 100644 --- a/tasks/enduro-trails/prototype/static/app.js +++ b/tasks/enduro-trails/prototype/static/app.js @@ -455,18 +455,18 @@ function addRulerPoint(lngLat, isLast) { const label = rulerPoints.length === 1 ? '0 м' : rulerTotal >= 1 ? rulerTotal.toFixed(1) + ' км' : Math.round(rulerTotal * 1000) + ' м'; - // Кастомный маркер с подписью и крестиком + // Кружок точно на координатах const el = document.createElement('div'); - el.style.cssText = 'position:relative;display:flex;flex-direction:column;align-items:center;cursor:default'; + el.style.cssText = 'position:relative;width:10px;height:10px;'; el.innerHTML = ` -
- ${label} - +
+
+ ${label} +
-
`; - const marker = new maplibregl.Marker({ element: el, anchor: 'bottom' }) + const marker = new maplibregl.Marker({ element: el, anchor: 'center' }) .setLngLat([lngLat.lng, lngLat.lat]) .addTo(map); rulerMarkers.push(marker);