5 Commits

Author SHA1 Message Date
Flag
4eb9f22813 feat: migration vers cosma-vm (.83) — dispatcher+dashboard, OpenVPN, docs infra mis à jour 2026-04-24 00:16:21 +00:00
Flag
194c94b872 dashboard — thumb 48x27, step live, spin busy, live thumbnail refresh
- dispatcher: col step ajoutee (migration). set a chaque phase:
  scp N/M, ffmpeg N/M, trimming hors-eau, reconstruct demo.py
- _refresh_thumbnail() scp la DERNIERE frame extraite toutes les ~15s
  pendant ffmpeg pour que le preview colle a la progression live
- template: cache-bust thumbnail via ?t=mtime, step affiche sous
  progress bar, thumb revenue a 48x27
- CSS: .badge.busy -> animation spin (rotation infinie) au lieu de
  juste une couleur, .step-text italique mute
2026-04-22 23:00:11 +00:00
Flag
960ebc0393 dashboard — preview thumbnail par job
dispatcher scp frame_*.jpg (premiere apres trim head) vers
/var/lib/cosma-qc/thumbnails/job_N.jpg a la fin de do_extract.

Endpoint GET /jobs/{id}/thumbnail serve via FileResponse. Template:
<img class=thumb src=jobs/N/thumbnail> si has_thumbnail. 48x27 px,
object-fit cover.

Backfill manuel des jobs deja done (9, 12, 13, 16, 19) via scp direct.
2026-04-22 22:06:43 +00:00
Flag
9dd6a82d08 dashboard + dispatcher — UX props, trim head+tail, cols, link direct
dashboard:
- job_id, AUV GP1/GP2 (serial en tooltip), segment_label, duree reelle,
  nb frames, nb hors-eau trimes
- lien viser plain <a href> (plus de POST ni popup). Affiche uniquement
  si job.done ET viser_url persistee (demo.py kept alive)
- CSS minimal: flex row, separateurs, skipped en italic mute

dispatcher:
- trim head ET tail (AUV hors-eau en debut + fin de session)
- migration DB: trimmed_head, trimmed_tail, video_duration_s
- do_extract persiste total_duration_s + trimmed counts via set_status
- run_one: RuntimeError(skipped_short) preserve le status=skipped
- min_frames underwater pour skip les segments trop courts
- ram_budget 0.45 -> 0.35 (OOM rc=137 avec 8237 frames sur 62GB RAM)
2026-04-22 21:28:06 +00:00
Flag
2bc24b2cc4 dispatcher — keep demo.py alive apres PLY + auto-clear error
1. Ne plus kill demo.py apres PLY saved: son viser/PointCloudViewer natif
   (camera frustums, per-frame confidence filtering, animation) donne une
   visu bcp plus propre que viser_ply.py standalone (XYZ+RGB seul).
   Cout: ~6GB VRAM par job done garde alive jusquau prochain pick_worker
   qui peut kill si besoin.

2. set_status clear auto le champ error quand status transitionne vers
   extracting/running/done/queued: sinon les dashboards montrent les
   erreurs historiques sur les jobs en cours de retry.
2026-04-22 19:41:00 +00:00