auto-sync: 2026-05-04 00:40:01
This commit is contained in:
80
memory/2026-05-03.md
Normal file
80
memory/2026-05-03.md
Normal 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`
|
||||
14
tasks/enduro-trails/prototype/static/app.js
vendored
14
tasks/enduro-trails/prototype/static/app.js
vendored
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user