Files
cosma-qc/CONTEXT.md
Flag f13d27b997 dashboard — vrai tableau + probe viser_url alive + CSS propre
1. _jobs_table.html: remplace la liste <li>flex par un vrai <table> avec
   colonnes explicites: status · preview · #id · AUV+GP · label · duree
   video · frames · hors-eau · progression · temps · actions. Stitches
   restent en <ul> compacte.

2. main.py _build_acquisitions: probe TCP le viser_url avec cache 8s
   avant de le passer au template. Si port mort -> d[viser_url]=None ->
   pas de bouton affiche. Fini les liens qui mennent a rien.

3. style.css: purge des regles flex conflictuelles, rewrite propre pour
   table.jobs-table, badges, prog-bar, btn-viser direct link.
2026-04-22 22:43:14 +00:00

3.8 KiB

Keyboard-interactive authentication prompts from server: End of keyboard-interactive prompts from server

cosma-qc — Context de reprise

TL;DR

Pipeline QC plongées COSMA :

  1. ffmpeg extract frames (fps=2, 518x294)
  2. auto-trim head+tail hors-eau (detection R<G-5 && R<B-5 via opencv)
  3. demo.py lingbot-map windowed reconstruction GPU ? PLY
  4. viser natif (PointCloudViewer) kept alive pour visu
  5. per_auv stitch puis cross_auv (TODO)

Dashboard

http://192.168.0.82/cosma-qc/ — FastAPI + htmx, liste jobs avec:

  • #id, AUV GP1/GP2 (serial tooltip), segment, durée vidéo, frames, hors-eau trimé, thumbnail
  • Lien viser plain <a href> direct (pas de popup)

Infra

  • core (.82) VM 101 Proxmox : FastAPI docker cosma-qc port 3849, SQLite /home/floppyrj45/cosma-qc-data/jobs.db, dispatcher Python systemd cosma-qc-dispatcher.service
  • gpu (.87) VM 105 Proxmox : RTX 3060 12GB, user floppyrj45, ~/ai-video/lingbot-map
  • ml-stack (.84) host physique : RTX 3090 24GB, user root, /root/ai-video/lingbot-map
  • z620 (.168) Proxmox hyperviseur : SSD thin pool à surveiller (a été 100% ? VMs paused)
  • Source vidéos : z620:/mnt/portablessd/COSMA - La ctiotat 8 avril/raw_data/medias/videos/

Credentials

Service dispatcher

  • systemd : sudo systemctl {status,restart,stop} cosma-qc-dispatcher
  • Env : /home/floppyrj45/cosma-qc-data/dispatcher.env (DB, WORKERS JSON, FPS)
  • Log : /home/floppyrj45/cosma-qc-data/dispatcher.log (append) + journalctl -u cosma-qc-dispatcher
  • Code : /home/floppyrj45/docker/cosma-qc/scripts/dispatcher.py (user floppyrj45)
  • Backend FastAPI container : docker restart cosma-qc après edit app/

Patches deja appliques

  • rm src_*.MP4 apres extract (thin pool LVM Proxmox tight)
  • fstrim /
  • stride adaptatif selon RAM worker (62/23 GB)
  • estimate_vram_mib = 6000 MiB fixe
  • budget RAM 0.35 (etait 0.55 trop optimiste ? OOM)
  • auto-trim frames hors-eau (prefix + suffix)
  • skip si <8 min video total (COSMA_QC_MIN_VIDEO_S=480)
  • window_size adaptatif : 16/32/64 selon eff frames
  • keep demo.py alive apres PLY saved ? viser natif persistant
  • load balance pick_worker : lower-load first (sinon tout sur .84)
  • set_status auto-clear error au status change
  • skipped status propage dans stitch per_auv

TODO / issues connues

  • Frame preview thumbnail : scp frame (fait), endpoint /jobs/{id}/thumbnail (fait). Backfill jobs anciens : manuel.
  • CSS dashboard : layout à chier selon user. Passé a été cleane mais re-tester
  • GLB export (lingbot_map/vis/glb_export.py existe, pas expose dans demo.py — patch demo.py pour ajouter --save_glb)
  • Cross-AUV stitch final — code existe (stitch.py) mais pas encore testé
  • segment_label trompeur (timestamp 1er MP4, pas durée totale). Fix dans ingest.py
  • Dashboard header: dispatcher heartbeat last seen Xs ago peut afficher > 5s après restart si fichier heartbeat pas reset

Etat courant jobs (snapshot)

Jobs 9, 12, 13, 16, 19 done (anciens). 10 skipped (pull marron sur pont). 11/14 en cours extract. 15/17-21 queued. Per-AUV stitch AUV209 nécessite jobs 11/12/13/14/15 done (10 exclu). AUV210 : 16/17/18/19/20/21. Cross-AUV final = stitch id 6 (prédit) sur .84 port 9206.

Workflow attendu (user)

  1. ffmpeg 2fps resize 518x294 + auto-trim hors-eau ? n frames
  2. Dispatch multi-GPU balance (.84 + .87)
  3. demo.py windowed 64 sur long (>3000 eff)
  4. Save PLY (+ GLB TODO)
  5. Viser natif via PointCloudViewer live
  6. Stitch per-AUV puis cross-AUV = puzzle géant
  7. Dashboard refresh avec thumbnail preview