auto-sync: 2026-05-11 11:50:01

This commit is contained in:
Stream
2026-05-11 11:50:01 +03:00
parent 5cb37d34e6
commit 3dcc011fc2
3 changed files with 415 additions and 25 deletions

View File

@@ -17,3 +17,4 @@
{"type":"memory.recall.recorded","timestamp":"2026-05-06T04:34:46.669Z","query":"enduro trails статус текущая фаза","resultCount":1,"results":[{"path":"memory/2026-05-04.md","startLine":1,"endLine":30,"score":0.36225839555263517}]}
{"type":"memory.recall.recorded","timestamp":"2026-05-06T04:34:51.648Z","query":"enduro trails фаза 5 последнее что делали","resultCount":1,"results":[{"path":"memory/2026-05-04.md","startLine":1,"endLine":30,"score":0.35838418304920194}]}
{"type":"memory.recall.recorded","timestamp":"2026-05-08T11:29:28.323Z","query":"OpenClaw offline","resultCount":1,"results":[{"path":"memory/2026-03-21.md","startLine":27,"endLine":57,"score":0.35461454987525937}]}
{"type":"memory.recall.recorded","timestamp":"2026-05-11T08:41:48.539Z","query":"enduro trails","resultCount":8,"results":[{"path":"memory/2026-05-03.md","startLine":1,"endLine":36,"score":0.5520287429057207},{"path":"memory/2026-05-02.md","startLine":107,"endLine":142,"score":0.5344992920917779},{"path":"memory/2026-05-04.md","startLine":1,"endLine":30,"score":0.5180976709974037},{"path":"memory/2026-05-02.md","startLine":1,"endLine":36,"score":0.5013019898600938},{"path":"memory/2026-05-02.md","startLine":168,"endLine":201,"score":0.4983071022156733},{"path":"memory/2026-05-02.md","startLine":86,"endLine":117,"score":0.49651338994897687},{"path":"memory/2026-05-02.md","startLine":196,"endLine":227,"score":0.48154737169778283},{"path":"memory/2026-05-02.md","startLine":217,"endLine":251,"score":0.479680287886423}]}

View File

@@ -1,6 +1,6 @@
{
"version": 1,
"updatedAt": "2026-05-08T11:29:28.323Z",
"updatedAt": "2026-05-11T08:41:48.539Z",
"entries": {
"memory:memory/2026-04-05.md:29:55": {
"key": "memory:memory/2026-04-05.md:29:55",
@@ -632,18 +632,20 @@
"endLine": 142,
"source": "memory",
"snippet": "- [ ] Обновить онтологию для проекта enduro-trails ## Enduro Trails — ревью прототипа (12:53 UTC) - Слава попросил ревью — после серии горячих фиксов (clip_by_rect, y_coord_down, swap lat/lon) код запутан - TODO: провести полное ревью app.py и index.html # 2026-05-02 — Дневник ## Enduro Trails — отладка прототипа (утро) ### Что делали Долгая отладка карты грунтовок ЦФО на http://82.22.50.71:5558 ### Проблемы и решения #### 1. style.json не грузился (404 на /static/style.json) - Путь в index.html был `/static/style.json`, а сервер отдаёт `/style.json` - Исправлено: путь исправлен на `/style.json` #### 2. Шрифты — demotiles.maplibre.org отдавал 404 - MapLibre зависал при инициализации -",
"recallCount": 1,
"recallCount": 2,
"dailyCount": 0,
"groundedCount": 0,
"totalScore": 0.375397714972496,
"maxScore": 0.375397714972496,
"totalScore": 0.909897007064274,
"maxScore": 0.5344992920917779,
"firstRecalledAt": "2026-05-04T06:57:05.721Z",
"lastRecalledAt": "2026-05-04T06:57:05.721Z",
"lastRecalledAt": "2026-05-11T08:41:48.539Z",
"queryHashes": [
"af0cb8f00b60"
"af0cb8f00b60",
"1feee93c2d26"
],
"recallDays": [
"2026-05-04"
"2026-05-04",
"2026-05-11"
],
"conceptTags": [
"enduro-trails",
@@ -663,18 +665,20 @@
"endLine": 117,
"source": "memory",
"snippet": "- \"Опять пляшут\" / \"Ещё как прыгают!!!\" — подтверждение что проблема не решена - Ключевое наблюдение Славы: **\"Треки же отражают дорогу, почему они смещаются\"** — треки из OSM должны идеально ложиться на OSM подложку ### Диагностика - Удаление `clip_by_rect` НЕ помогло — треки продолжали прыгать - Причина: без клиппинга геометрия выходит за `quantize_bounds`, координаты >4096 ломают MapLibre - **Найден корневой баг**: в WKB геометрии из БД координаты хранятся как `(lat, lon)`, а `wkb_to_coords()` читала их как `(lon, lat)`. Широта и долгота были перепутаны! ### Фикс (12:07 UTC) - В `wkb_to_coords()`: `lat, lon = struct.unpack_from('<dd', data, offset)` → `coords.append((lon, lat))` - Раньш",
"recallCount": 1,
"recallCount": 2,
"dailyCount": 0,
"groundedCount": 0,
"totalScore": 0.3636188447475433,
"maxScore": 0.3636188447475433,
"totalScore": 0.8601322346965201,
"maxScore": 0.49651338994897687,
"firstRecalledAt": "2026-05-04T06:57:05.721Z",
"lastRecalledAt": "2026-05-04T06:57:05.721Z",
"lastRecalledAt": "2026-05-11T08:41:48.539Z",
"queryHashes": [
"af0cb8f00b60"
"af0cb8f00b60",
"1feee93c2d26"
],
"recallDays": [
"2026-05-04"
"2026-05-04",
"2026-05-11"
],
"conceptTags": [
"clip-by-rect",
@@ -694,18 +698,20 @@
"endLine": 36,
"source": "memory",
"snippet": "# 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 (лучше читаются",
"recallCount": 1,
"recallCount": 2,
"dailyCount": 0,
"groundedCount": 0,
"totalScore": 0.3552299261093139,
"maxScore": 0.3552299261093139,
"totalScore": 0.9072586690150346,
"maxScore": 0.5520287429057207,
"firstRecalledAt": "2026-05-04T06:57:05.721Z",
"lastRecalledAt": "2026-05-04T06:57:05.721Z",
"lastRecalledAt": "2026-05-11T08:41:48.539Z",
"queryHashes": [
"af0cb8f00b60"
"af0cb8f00b60",
"1feee93c2d26"
],
"recallDays": [
"2026-05-04"
"2026-05-04",
"2026-05-11"
],
"conceptTags": [
"app.css",
@@ -725,21 +731,23 @@
"endLine": 30,
"source": "memory",
"snippet": "# 2026-05-04 — Дневник Стрим ## Enduro Trails — Фаза 3 «Умный маршрут» ### Что делали Полная реализация Фазы 3: BRD, тест-кейсы, реализация, тестирование, баг-фиксы. ### Документы созданы - `tasks/enduro-trails/BRD_PHASE3.md` — бизнес-требования (6 фич, согласовано со Славой) - `tasks/enduro-trails/TEST_CASES_PHASE3.md` — 56 тест-кейсов - `tasks/enduro-trails/DEV_TASK_PHASE3.md` — ТЗ для Dev-агента - `tasks/ui-testing/PROJECT.md` — проект UI-тестирования (Playwright/Puppeteer на mva154) - `tasks/ui-testing/README.md` — как запустить - `tasks/ui-testing/tests/enduro-phase3.js` — 56 TC в Playwright-скрипте - `tasks/ui-testing/tests/template.js` — шаблон для новых проектов - `tasks/ui-testin",
"recallCount": 3,
"recallCount": 4,
"dailyCount": 0,
"groundedCount": 0,
"totalScore": 1.1207917988300324,
"maxScore": 0.40014922022819516,
"totalScore": 1.638889469827436,
"maxScore": 0.5180976709974037,
"firstRecalledAt": "2026-05-05T05:03:32.115Z",
"lastRecalledAt": "2026-05-06T04:34:51.648Z",
"lastRecalledAt": "2026-05-11T08:41:48.539Z",
"queryHashes": [
"14db74d1ec5d",
"6785ee533a29",
"6c00717ee483"
"6c00717ee483",
"1feee93c2d26"
],
"recallDays": [
"2026-05-05",
"2026-05-06"
"2026-05-06",
"2026-05-11"
],
"conceptTags": [
"тест-кейсы",
@@ -844,6 +852,130 @@
"западный",
"около"
]
},
"memory:memory/2026-05-02.md:1:36": {
"key": "memory:memory/2026-05-02.md:1:36",
"path": "memory/2026-05-02.md",
"startLine": 1,
"endLine": 36,
"source": "memory",
"snippet": "# 2026-05-02 — Дневник ## Enduro Trails — отладка прототипа (утро) ### Что делали Долгая отладка карты грунтовок ЦФО на http://82.22.50.71:5558 ### Проблемы и решения #### 1. style.json не грузился (404 на /static/style.json) - Путь в index.html был `/static/style.json`, а сервер отдаёт `/style.json` - Исправлено: путь исправлен на `/style.json` #### 2. Шрифты — demotiles.maplibre.org отдавал 404 - MapLibre зависал при инициализации - Исправлено: переключили на `https://fonts.openmaptiles.org/{fontstack}/{range}.pbf` #### 3. Невалидный фильтр в style.json - `trails-path-bridleway` использовал expression синтаксис: `[\"in\", [\"get\", \"highway\"], \"literal\", [...]]` - MapLibre 4.x падал с ош",
"recallCount": 1,
"dailyCount": 0,
"groundedCount": 0,
"totalScore": 0.5013019898600938,
"maxScore": 0.5013019898600938,
"firstRecalledAt": "2026-05-11T08:41:48.539Z",
"lastRecalledAt": "2026-05-11T08:41:48.539Z",
"queryHashes": [
"1feee93c2d26"
],
"recallDays": [
"2026-05-11"
],
"conceptTags": [
"82.22.50.71",
"style.json",
"static/style.json",
"index.html",
"demotiles.maplibre.org",
"fonts.openmaptiles.org",
"trails-path-bridleway",
"4.x"
]
},
"memory:memory/2026-05-02.md:168:201": {
"key": "memory:memory/2026-05-02.md:168:201",
"path": "memory/2026-05-02.md",
"startLine": 168,
"endLine": 201,
"source": "memory",
"snippet": "- SSH: `sshpass -p 'пароль' ssh node@82.22.50.71` (пароль в .env как MVA154_PASSWORD) - Контейнер: `docker exec enduro-trails ...` - app.py на сервере: `/app/app.py` внутри контейнера - Локальная копия: `/tmp/app_new.py` (актуальная версия) #### Ключевые файлы - `tasks/enduro-trails/prototype/static/style.json` — стили карты - `tasks/enduro-trails/prototype/static/index.html` — фронтенд - `/tmp/app_new.py` — актуальный app.py (нужно синхронизировать с workspace) ### Итоговое исправление (11:49 UTC) ✅ - Убран `clip_by_rect` в `build_mvt()` — треки отдаются целиком, MapLibre клипит на клиенте - `y_coord_down=True` в `mapbox_vector_tile.encode` сохранён - Слава подтвердил: треки перестали ска",
"recallCount": 1,
"dailyCount": 0,
"groundedCount": 0,
"totalScore": 0.4983071022156733,
"maxScore": 0.4983071022156733,
"firstRecalledAt": "2026-05-11T08:41:48.539Z",
"lastRecalledAt": "2026-05-11T08:41:48.539Z",
"queryHashes": [
"1feee93c2d26"
],
"recallDays": [
"2026-05-11"
],
"conceptTags": [
"82.22.50.71",
"mva154-password",
"enduro-trails",
"app.py",
"app/app.py",
"tmp/app-new.py",
"clip-by-rect",
"build-mvt"
]
},
"memory:memory/2026-05-02.md:196:227": {
"key": "memory:memory/2026-05-02.md:196:227",
"path": "memory/2026-05-02.md",
"startLine": 196,
"endLine": 227,
"source": "memory",
"snippet": "### Скриншоты от Славы - Прислал 2 пары скринов: z12.4 vs z11.8/12.0 — треки всё ещё смещаются при зуме - \"Опять пляшут\" / \"Ещё как прыгают!!!\" — подтверждение что проблема не решена - Ключевое наблюдение Славы: **\"Треки же отражают дорогу, почему они смещаются\"** — треки из OSM должны идеально ложиться на OSM подложку ### Диагностика - Удаление `clip_by_rect` НЕ помогло — треки продолжали прыгать - Причина: без клиппинга геометрия выходит за `quantize_bounds`, координаты >4096 ломают MapLibre - **Найден корневой баг**: в WKB геометрии из БД координаты хранятся как `(lat, lon)`, а `wkb_to_coords()` читала их как `(lon, lat)`. Широта и долгота были перепутаны! ### Фикс (12:07 UTC) - В `wkb_",
"recallCount": 1,
"dailyCount": 0,
"groundedCount": 0,
"totalScore": 0.48154737169778283,
"maxScore": 0.48154737169778283,
"firstRecalledAt": "2026-05-11T08:41:48.539Z",
"lastRecalledAt": "2026-05-11T08:41:48.539Z",
"queryHashes": [
"1feee93c2d26"
],
"recallDays": [
"2026-05-11"
],
"conceptTags": [
"z12.4",
"z11.8/12.0",
"clip-by-rect",
"quantize-bounds",
"wkb-to-coords",
"скриншоты",
"славы",
"прислал"
]
},
"memory:memory/2026-05-02.md:217:251": {
"key": "memory:memory/2026-05-02.md:217:251",
"path": "memory/2026-05-02.md",
"startLine": 217,
"endLine": 251,
"source": "memory",
"snippet": "- [ ] Синхронизировать app.py с workspace: `tasks/enduro-trails/prototype/app.py` - [ ] Обновить PROJECT.md и TASK.md для enduro-trails - [ ] Обновить онтологию для проекта enduro-trails ## Enduro Trails — ревью прототипа (12:53 UTC) - Слава попросил ревью — после серии горячих фиксов (clip_by_rect, y_coord_down, swap lat/lon) код запутан - TODO: провести полное ревью app.py и index.html --- ## Enduro Trails — полное ревью и план восстановления (13:0713:57 UTC) ### Что сделано - Прочитаны все файлы прототипа: `app.py` (из контейнера), `docker-compose.yml`, `static/index.html`, `static/style.json`, `scripts/parse.py`, `scripts/download.sh` - Прочитаны требования: `TECHNICAL_SPEC.md`, `C",
"recallCount": 1,
"dailyCount": 0,
"groundedCount": 0,
"totalScore": 0.479680287886423,
"maxScore": 0.479680287886423,
"firstRecalledAt": "2026-05-11T08:41:48.539Z",
"lastRecalledAt": "2026-05-11T08:41:48.539Z",
"queryHashes": [
"1feee93c2d26"
],
"recallDays": [
"2026-05-11"
],
"conceptTags": [
"app.py",
"project.md",
"task.md",
"enduro-trails",
"clip-by-rect",
"y-coord-down",
"lat/lon",
"index.html"
]
}
}
}

View File

@@ -0,0 +1,257 @@
# Тест-кейсы: Рельеф (Terrain Layer) — Фаза 5.4
**Дата:** 2026-05-11
**Версия BRD:** BRD_TERRAIN.md
**Исполнители:** Dev (автотесты + деплой), Стрим (ручная проверка), Слава (финальная приёмка)
---
## Распределение
| Кто | Что |
|-----|-----|
| 🤖 Dev | TC-01..TC-06 — данные и деплой (автоматически, в процессе реализации) |
| 🌊 Стрим | TC-07..TC-22 — ручная проверка через браузер/curl после деплоя |
| 👤 Слава | Финальная приёмка — только после «✅ Всё зелёное» от Стрим |
---
## Блок 1: Данные и инфраструктура (Dev)
### TC-01 — SRTM тайлы скачаны
**Исполнитель:** Dev
**Проверка:**
```bash
ls /home/slin/enduro-trails/data/srtm/*.hgt | wc -l
# Ожидаемо: >= 30 файлов
```
**Ожидаемый результат:** ≥30 `.hgt` файлов в директории
---
### TC-02 — Тайлы hypso сгенерированы
**Исполнитель:** Dev
**Проверка:**
```bash
find /home/slin/enduro-trails/data/terrain/hypso -name "*.png" | wc -l
# Ожидаемо: > 1000 файлов (зумы 5-15)
```
**Ожидаемый результат:** PNG тайлы присутствуют для зумов 5-15
---
### TC-03 — Тайлы hillshade сгенерированы
**Исполнитель:** Dev
**Проверка:**
```bash
find /home/slin/enduro-trails/data/terrain/hillshade -name "*.png" | wc -l
# Ожидаемо: > 500 файлов (зумы 10-15)
```
**Ожидаемый результат:** PNG тайлы присутствуют для зумов 10-15
---
### TC-04 — Тайл hypso доступен через nginx
**Исполнитель:** Dev
**Проверка:**
```bash
curl -o /dev/null -s -w "%{http_code}" \
"https://openclaw.mva154.duckdns.org/enduro/terrain/hypso/8/75/42.png"
# Ожидаемо: 200
```
**Ожидаемый результат:** HTTP 200, Content-Type: image/png
---
### TC-05 — Тайл hillshade доступен через nginx
**Исполнитель:** Dev
**Проверка:**
```bash
curl -o /dev/null -s -w "%{http_code}" \
"https://openclaw.mva154.duckdns.org/enduro/terrain/hillshade/12/2400/1340.png"
# Ожидаемо: 200
```
**Ожидаемый результат:** HTTP 200, Content-Type: image/png
---
### TC-06 — Cache-Control заголовок
**Исполнитель:** Dev
**Проверка:**
```bash
curl -I "https://openclaw.mva154.duckdns.org/enduro/terrain/hypso/8/75/42.png" \
| grep -i cache-control
# Ожидаемо: Cache-Control: public, immutable
```
**Ожидаемый результат:** `Cache-Control: public, immutable` в заголовках
---
## Блок 2: Фронтенд — кнопка и попап (Стрим)
### TC-07 — Кнопка 🏔️ присутствует в toolbar
**Исполнитель:** Стрим
**Шаги:** Открыть https://openclaw.mva154.duckdns.org/enduro/
**Ожидаемый результат:** Кнопка 🏔️ видна в toolbar, после кнопки слоёв, перед линейкой
**Проверка:** `curl` + grep по `terrain-toggle` в HTML
---
### TC-08 — Попап открывается по нажатию
**Исполнитель:** Стрим
**Шаги:** Нажать кнопку 🏔️
**Ожидаемый результат:** Появляется попап с двумя чекбоксами «Цветной рельеф» и «Теневой рельеф»
---
### TC-09 — Попап закрывается повторным нажатием
**Исполнитель:** Стрим
**Шаги:** Нажать 🏔️ → попап открылся → нажать 🏔️ снова
**Ожидаемый результат:** Попап закрылся
---
### TC-10 — Попап закрывается по тапу вне
**Исполнитель:** Стрим
**Шаги:** Открыть попап → кликнуть на карту
**Ожидаемый результат:** Попап закрылся
---
### TC-11 — Теневой чекбокс disabled на малом зуме
**Исполнитель:** Стрим
**Шаги:** Зум 8 → открыть попап
**Ожидаемый результат:** Чекбокс «Теневой рельеф» серый (disabled), видна подпись «Доступно при приближении»
---
### TC-12 — Теневой чекбокс enabled на зуме 10+
**Исполнитель:** Стрим
**Шаги:** Зум 10 → открыть попап
**Ожидаемый результат:** Чекбокс «Теневой рельеф» активен, подпись скрыта
---
## Блок 3: Слои на карте (Стрим)
### TC-13 — Цветной рельеф включается
**Исполнитель:** Стрим
**Шаги:** Зум 6 → 🏔️ → включить «Цветной рельеф»
**Ожидаемый результат:** На карте появляется цветная заливка рельефа (зелёный/жёлтый/коричневый)
---
### TC-14 — Цветной рельеф выключается
**Исполнитель:** Стрим
**Шаги:** Включить → выключить «Цветной рельеф»
**Ожидаемый результат:** Цветная заливка исчезает, карта как была
---
### TC-15 — Теневой рельеф включается на зуме 12
**Исполнитель:** Стрим
**Шаги:** Зум 12 → 🏔️ → включить «Теневой рельеф»
**Ожидаемый результат:** Появляются тени на склонах и оврагах
---
### TC-16 — Теневой рельеф не виден на зуме < 10 даже если включён
**Исполнитель:** Стрим
**Шаги:** Включить «Теневой» на зуме 12 → отзумить до зума 8
**Ожидаемый результат:** Тени исчезают (слой скрыт), чекбокс остаётся checked
---
### TC-17 — Теневой рельеф возвращается при приближении
**Исполнитель:** Стрим
**Шаги:** Продолжение TC-16 → зумить обратно до 10+
**Ожидаемый результат:** Тени снова появляются (чекбокс был checked)
---
### TC-18 — Оба слоя одновременно
**Исполнитель:** Стрим
**Шаги:** Зум 12 → включить оба чекбокса
**Ожидаемый результат:** Видны и цвет рельефа, и тени поверх. Дороги видны поверх рельефа.
---
### TC-19 — Рельеф под дорогами (z-index)
**Исполнитель:** Стрим
**Шаги:** Включить оба слоя, зум 12
**Ожидаемый результат:** Дороги и треки видны поверх рельефа, не перекрываются
---
### TC-20 — Кнопка подсвечивается при активном слое
**Исполнитель:** Стрим
**Шаги:** Включить хотя бы один слой
**Ожидаемый результат:** Кнопка 🏔️ подсвечена (класс `active`)
---
### TC-21 — Кнопка не подсвечена когда оба выключены
**Исполнитель:** Стрим
**Шаги:** Выключить оба слоя
**Ожидаемый результат:** Кнопка 🏔️ без подсветки
---
## Блок 4: Персистентность (Стрим)
### TC-22 — Состояние сохраняется после перезагрузки
**Исполнитель:** Стрим
**Шаги:**
1. Включить «Цветной рельеф», выключить «Теневой»
2. Перезагрузить страницу (F5)
**Ожидаемый результат:** «Цветной» включён, «Теневой» выключен — как было до перезагрузки
---
### TC-23 — Оба выключены после перезагрузки (дефолт)
**Исполнитель:** Стрим
**Шаги:** Выключить оба → перезагрузить
**Ожидаемый результат:** Оба чекбокса сняты, слои не видны
---
## Блок 5: Мобильный (Стрим — через DevTools mobile emulation)
### TC-24 — Попап не перекрывает кнопки на мобильном
**Исполнитель:** Стрим
**Шаги:** DevTools → iPhone 14 → открыть попап
**Ожидаемый результат:** Попап виден полностью, не перекрывает toolbar и кнопки масштаба
---
### TC-25 — Тап вне попапа закрывает его на мобильном
**Исполнитель:** Стрим
**Шаги:** Мобильная эмуляция → открыть попап → тапнуть на карту
**Ожидаемый результат:** Попап закрылся
---
## Итого
| Блок | Тест-кейсов | Исполнитель |
|------|-------------|-------------|
| 1. Данные и инфраструктура | TC-01..TC-06 (6 шт) | 🤖 Dev |
| 2. Кнопка и попап | TC-07..TC-12 (6 шт) | 🌊 Стрим |
| 3. Слои на карте | TC-13..TC-21 (9 шт) | 🌊 Стрим |
| 4. Персистентность | TC-22..TC-23 (2 шт) | 🌊 Стрим |
| 5. Мобильный | TC-24..TC-25 (2 шт) | 🌊 Стрим |
| **Итого** | **25 тест-кейсов** | |
---
## Порядок работы
```
Dev реализует → деплоит → сообщает Стрим
Стрим прогоняет TC-07..TC-25 (ручные)
Баги → Dev фиксит → Стрим перепроверяет
Всё зелёное → Стрим даёт отмашку Славе
```