diff --git a/docs/session-logs/2026-09-11_route-editor-gapfill-fixes.md b/docs/session-logs/2026-09-11_route-editor-gapfill-fixes.md index a54a715..fd71162 100644 --- a/docs/session-logs/2026-09-11_route-editor-gapfill-fixes.md +++ b/docs/session-logs/2026-09-11_route-editor-gapfill-fixes.md @@ -27,11 +27,20 @@ (раньше отбрасывались) → `drawRoutePolyline` рисует оковку и в редакторе, и в детали. `drawRoutePolyline`: прямые отрезки без высот — только тонкой линией. -## Проверка -- Синтаксис gps/db/main OK (node --check). const в новых функциях — нет. -- ДЕСКТОП-ТЕСТ на Xvfb со скринами — следующий шаг (на момент записи не гонял). -- На теле встроенным движком — после `./build.sh android -d -i`. +## Проверка (десктоп Xvfb :99 + домашний RouteServer, скрины) +- Редактор: 3 точки по Новочеркасску → маршрут рисуется оковкой с уклоном (зелёный→красный) + + тонкой линией, как в детали (#6). Тумблер уклон/высота (∡→⛰) переключает раскраску (#1). + Тап по линии вставил точку (4-я, маршрут перестроился) — легко попал (#4). Низ: подсказка + сверху, кнопки рядом, «Отмена» ниже (#3). +- Сохранение: в БД points_json = 61 точка с ele + waypoints_json = 4 опорные; список показал + «4 тчк · ▲» (#5). Деталь маршрута — оковка+уклон+профиль высоты, как импорт (#6). +- Баг, найденный тестом: сохранение показывало «Маршрут пуст» — `addRoute` возвращал + `lastInsertId` (i64 портится SQL-плагином ±1). Исправлено: id перечитывается через + `CAST(id AS TEXT)` (как в `importGpxSession`). После фикса сохранение ведёт прямо в деталь. +- Достройка (#2): на 06-22 старый порог давал 4 пропуска, новый (dt>60/хорда>150 + пропуск + крюков и «нулевого выигрыша») — 2 реальных длинных дропаута (+1.64 км), маргинальные отсеяны. +- Экран записи (`.rec-bottom`) не тронут. Тестовые маршруты из десктопной БД убраны. ## Дальше -- Прогнать на Xvfb: редактор (оковка/тумблеры/тап-вставка/низ), сохранение опорных, деталь с - оковкой; достройка на 09-08 — только длинные дропауты. Экран записи не сломан. +- На теле встроенным движком офлайн: `./build.sh android -d -i`. Проверить тач-жесты (тап-вставка, + долгий тап — дорога/прямая) и достройку на реальных треках (09-08 и др.). diff --git a/frontend/js/db.js b/frontend/js/db.js index 7516641..902ecc8 100644 --- a/frontend/js/db.js +++ b/frontend/js/db.js @@ -1100,11 +1100,14 @@ async function getRoute(id) { } async function addRoute(name, color, points, waypoints) { - let r = await execute( + await execute( "INSERT INTO routes (name, color, points_json, waypoints_json) VALUES (?1, ?2, ?3, ?4)", [name, color || "#e53935", JSON.stringify(points || []), waypoints ? JSON.stringify(waypoints) : null] ); - return r.lastInsertId; + // lastInsertId comes back as an i64 the SQL plugin can corrupt by ±1 — re-read the id as + // text instead (same guard as importGpxSession), so the caller opens the right route. + let rows = await select("SELECT CAST(id AS TEXT) AS id FROM routes ORDER BY id DESC LIMIT 1"); + return rows.length ? rows[0].id : null; } async function renameRoute(id, name) {