32 Commits

Author SHA1 Message Date
Poulpe
f66bb52fec perf(pipeline): in-memory cache for usv_track (warm: 20ms vs 1.8s cold) 2026-04-28 15:06:09 +00:00
Poulpe
dd6f0cf435 perf(viewer): polylines USV <3s — Phase 1 usv_track endpoint + immediate applyTrailAndCursor 2026-04-28 15:03:53 +00:00
Flag
f5788a01f4 fix(viewer): polylines + batched T3 load
- loadSortieData: call applyTrailAndCursor() after sortie load so map
  polylines appear when allPoints already populated from datebar
- loadDiveData: split into Phase1 (track only, batched by 4) + Phase2
  (series + sub, batched by 4) — map draws as soon as tracks load
- loadShipSession split into fetchShipTrack + fetchShipSeries helpers
- T3: filter ship sessions by date (sess.start.slice(0,10) === filterDate)
- Pass date param from loadDate to loadDiveData

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 14:54:16 +00:00
f5debc8afc fix(viewer): tNow=tMax so trail shows data on init + synced zoom across all Plotly charts
Bug 1: cursor slider started at tMin (no data in 60s window at start of data).
Fix: start slider at tMax so trail window covers the last trailMs of actual data.

Feature 2 (Alexandre Larribau): setupSyncedZoom() propagates xaxis.range
to all sibling charts on plotly_relayout, with _syncing guard vs infinite loop.
Applied to global charts (depth/PWM/USBL), USV tab, and AUV tab independently.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 06:15:26 +00:00
Poulpe
63270beeff fix(viewer): BUG1d switchTab before renderUSV to fix Plotly on hidden divs
Plotly.react fails silently on display:none divs.
Switch tab to USV first, then render so divs are visible when Plotly mounts.
2026-04-27 23:07:20 +00:00
Poulpe
4164f32694 fix(viewer): normalize mission IDs hash vs underscore + auto-switch USV tab
BUG3b: data-dates API returns hash prefix, missions API returns underscore.
Normalize both sides before comparing to properly filter mission fetches.
BUG1c: auto-switch to USV tab after sortie data loaded so charts are visible.
2026-04-27 23:05:57 +00:00
Poulpe
b45a5368ee fix(viewer): 4 bugs — Plotly resize, no-data overlay, fetch overkill, tab resize
Bug1: populatePlotlyCharts now forces requestAnimationFrame Plotly.Plots.resize
      after react() so charts render correctly even after hidden/late init
Bug1b: switchTab(charts) triggers resize on all 4 chart divs
Bug2: loadSortieData calls showNoDataOverlay(false) when USV data loaded
Bug3: loadDate filters missions via availableDates cache before fetching
      all dives — avoids O(n*missions) requests when date entry known
2026-04-27 23:03:21 +00:00
Poulpe
7a5d442fbd feat(viewer): auto-detect API URLs + 9 UX improvements (no-data overlay, tabs, labels, layer toggles map) 2026-04-27 22:36:08 +00:00
b21e306a86 fix(pipeline): scan_sorties sync (was async, broke to_thread → coroutine instead of list → 500) 2026-04-27 22:13:02 +00:00
Poulpe
a79f63e59e fix(viewer): map visible — wrap USV/AUV panels in graphs-section, minmax(200px) map row 2026-04-27 22:08:49 +00:00
Poulpe
31b5a221b8 fix(viewer+backend): cache sorties TTL 10min + /sorties/local + viewer non-bloquant 2026-04-27 22:02:21 +00:00
Poulpe
b962997008 feat(viewer): merge USV M1+M2 into one graph, add history window control
- USV panel: usv-m1 + usv-m2 → single usv-motors multi-trace (2 lines)
- AUV panel: auv-motors already combined (6 lines), no change
- Add window dropdown (10s/30s/60s/5min/15min/ALL) next to trail control
- updateCursor applies xaxis.range=[T-win, T] on all panel graphs
- Plots before: ~9 USV + ~9 AUV = ~18; after: ~7 USV + ~8 AUV = ~15
2026-04-27 21:54:19 +00:00
Poulpe
6978b36650 merge feat/flag-local: pipeline-runner + viewer USV/AUV panels 2026-04-27 21:34:07 +00:00
70608de221 fix(pipeline): docker-compose env GDRIVE_REMOTE=cosma + rclone.conf mount + NAS sorties bind 2026-04-27 21:33:56 +00:00
Flagabat
0a0dac7fda feat: viewer — sortie selector + USV/AUV panels HTML + CSS
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 23:28:05 +02:00
Flagabat
62091a09b7 feat: pipeline-runner — FastAPI endpoints + SSE 2026-04-27 23:24:44 +02:00
Flagabat
3e1da53cc7 feat: pipeline-runner — runner rclone + orchestration 2026-04-27 23:23:13 +02:00
Flagabat
24f9394c75 feat: pipeline-runner — processor LTTB + signal extraction 2026-04-27 23:22:41 +02:00
Flagabat
c9dca1d071 feat: pipeline-runner — config 2026-04-27 23:21:44 +02:00
Flagabat
682050ef14 feat: pipeline-runner — scaffold docker + deps 2026-04-27 23:18:21 +02:00
Flagabat
4aec9d6295 fix: extract_mcap_signals — flatten signals output, unify time keys
- Merge new signals (pitch/roll/yaw/altitude/battery_v/obstacle_dist) at
  top level of output dict via **unpacking, not nested under 'signals' key
- Replace t_ms -> t in all new signal appends to match depth/state format
- Fix all_t computation to use unified 't' key across old and new signals

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 23:17:02 +02:00
Flagabat
af2bb6581f feat: extract_mcap_signals — pitch/roll/yaw, altitude, obstacle, battery
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 23:15:09 +02:00
Flagabat
bd3a2359d9 docs: plan implémentation pipeline GDrive → replay USV/AUV (12 tâches) 2026-04-27 22:29:41 +02:00
Flagabat
02e357b874 docs: spec pipeline GDrive → replay USV/AUV dans viewer 2026-04-27 22:23:18 +02:00
Flag
34e709b7c8 feat(viewer): bloc pipeline Mermaid + toggle overlay #btn-pipeline 2026-04-27 14:18:08 +00:00
Flag
07df61cbc4 feat(viewer): v6 - date-picker fonctionnel + Plotly charts depuis API 8766
- Date picker onChange charge toutes sessions du jour
- Mini-graphs Plotly: depth AUV, motors AUV, motors USV, USBL distance
- Slider 24h + cursor line Plotly synchronisé
- Map v5 intacte (Leaflet USV arrow + AUV USBL + panel)
- API: /api/missions -> /dives -> /sessions -> track/series/usbl_track
2026-04-27 14:14:57 +00:00
Poulpe
8a5ed6174c feat(viewer): v5 grid 2x2 + trail length + headless screenshot 2026-04-25 22:29:39 +00:00
Poulpe
103bf1cedd feat(viewer): v4 time-series graphs (depth, PWM USV/AUV, status) 2026-04-25 22:15:43 +00:00
Poulpe
3198164aff feat(viewer): v3 AUV track + USBL vector overlay 2026-04-25 21:40:05 +00:00
Poulpe
be2cd1d156 feat: Kogger USBL decoder + nav merge
- tools/parse_kogger_usbl.py: decode SBP protocol (ID=0x65 USBL_SOLUTION)
  from raw *_usbl.csv files, output combined_usbl.csv with Dist/Az/Elev/SNR
- tools/merge_nav_usbl.py: merge USBL data with navigation_log.csv,
  interpolate USV lat/lon/heading, compute AUV absolute position
  (azimuth relative to USV heading convention)
- vendor/Kogger-Protocol: SBP spec reference (submodule)
- 69-sttropez: 13986 USBL records decoded, avg USV-AUV dist 39m
2026-04-25 21:24:00 +00:00
Poulpe
b46f136b76 feat: v2 multi-session parser + timeline range viewer 2026-04-25 20:31:17 +00:00
Poulpe
4ceec113b6 feat(cosma-nav-tools): v1 parser + Leaflet viewer USV La Ciotat 2026-04-08 2026-04-25 17:18:27 +00:00