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.
This commit is contained in:
72
CONTEXT.md
Normal file
72
CONTEXT.md
Normal file
@@ -0,0 +1,72 @@
|
||||
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
|
||||
- ssh floppyrj45@192.168.0.82 password SuperTeam2026!
|
||||
- ssh gpu (alias ? floppyrj45@.87) + ssh ml-stack (alias ? root@.84), clés sur core
|
||||
- ssh root@192.168.0.168 password SuperTeam2026!
|
||||
- Gitea http://192.168.0.82:3000/floppyrj45/cosma-qc (token dans ~/cosma-qc-data/dispatcher.env)
|
||||
|
||||
## 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
|
||||
Reference in New Issue
Block a user