auto-sync: 2026-05-04 00:40:01

This commit is contained in:
Stream
2026-05-04 00:40:02 +03:00
parent c07835b255
commit 5c81fedd59
2 changed files with 87 additions and 7 deletions

80
memory/2026-05-03.md Normal file
View File

@@ -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`

View File

@@ -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 = `
<div style="display:flex;align-items:center;gap:3px;background:rgba(0,0,0,0.7);color:#fff;font-size:11px;font-weight:600;padding:2px 5px;border-radius:3px;margin-bottom:3px;white-space:nowrap">
<span class="ruler-label">${label}</span>
<span style="cursor:pointer;opacity:0.7;font-size:10px;line-height:1" onclick="removeRulerPoint(${idx})" title="Удалить точку">✕</span>
<div style="width:10px;height:10px;background:#0088ff;border:2px solid #fff;border-radius:50%;box-shadow:0 0 4px rgba(0,0,0,0.3)"></div>
<div style="position:absolute;bottom:14px;left:50%;transform:translateX(-50%);display:inline-flex;align-items:center;gap:3px;background:rgba(0,0,0,0.7);color:#fff;font-size:11px;font-weight:600;padding:2px 5px;border-radius:3px;white-space:nowrap;pointer-events:auto">
<span>${label}</span>
<span style="cursor:pointer;opacity:0.8;font-size:10px" onclick="removeRulerPoint(${idx})">✕</span>
</div>
<div style="background:#0088ff;border:2px solid #fff;border-radius:50%;width:10px;height:10px;box-shadow:0 0 4px rgba(0,0,0,0.3);flex-shrink:0"></div>
`;
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);