# Données — Stockage et budget disque

## Où sont stockées les données

Type de donnée | Emplacement | Remarques
--- | --- | ---
MP4 bruts GoPro | z620 `/mnt/portablessd` | Ne quittent jamais z620. Jamais copiés sur workers.
Frames JPEG | Worker `/cosma-qc-frames/job_{id}/frame_*.jpg` | Conservés pour reprise sur crash. Supprimables après validation du stitch.
PLY par job | Worker `/cosma-qc-frames/job_{id}/reconstruction.ply` | Entrée du stitch per_auv.
PLY stitch par AUV | Worker `/cosma-qc-frames/stitch_{N}.ply` | Fusion des segments d’un AUV.
PLY stitch global | Worker `/cosma-qc-frames/stitch_global.ply` | Nuage de points final toute mission.
GLB (export web) | Worker `/cosma-qc-frames/job_{id}/reconstruction.glb` | Généré à la demande. 5M points, ~76 MB.

## Budget disque observé

Type | Taille typique | Base de calcul
--- | --- | ---
Frames JPEG par job | ~11 GB | job 45 min à 2 fps, 1920x1080
PLY par job (reconstruction) | 2 – 5 GB | dépend de la densité de la scène
GLB par job (export web) | ~76 MB | 5M points (job_21 observé)
PLY stitch AUV | variable | somme des PLY segments
PLY global | variable | somme de tous les AUV

Pour un AUV avec 4 jobs de 45 min chacun :

- Frames : 4 x 11 GB = ~44 GB (supprimables après validation)

- PLY jobs : 4 x 3.5 GB = ~14 GB

- PLY stitch AUV : ~6-10 GB

## Politique de nettoyage

### Frames JPEG

Les frames sont conservées uniquement pour permettre la reprise sur crash. Une fois le stitch per_auv validé visuellement, les frames peuvent être supprimées.

    # Supprimer les frames d'un job (conserver le PLY !)
    rm -rf /cosma-qc-frames/job_ID/frame_*.jpg
    rm -f  /cosma-qc-frames/job_ID/.video_*.done

    # Vérifier que le PLY est intact avant suppression
    ls -lh /cosma-qc-frames/job_ID/reconstruction.ply

### PLY intermédiaires

Les PLY par job peuvent être supprimés après que le stitch per_auv est validé et sauvegardé hors-ligne.

    # Conserver uniquement le stitch, supprimer les PLY jobs
    rm /cosma-qc-frames/job_ID/reconstruction.ply

### Vérification espace disque

    # Espace total workers
    ssh floppyrj45@192.168.0.84 "df -h /cosma-qc-frames"
    ssh floppyrj45@192.168.0.87 "df -h /cosma-qc-frames"

    # Taille par job
    du -sh /cosma-qc-frames/job_*/

    # Top consommateurs
    du -sh /cosma-qc-frames/* | sort -rh | head -20

## Export GLB

Le GLB est une version allégée du nuage de points pour visualisation web.

Génération via l’API dashboard :

    curl -X POST http://192.168.0.82:3849/jobs/ID/export_glb

Génération manuelle sur le worker :

    import trimesh, numpy as np
    pc = trimesh.load('/cosma-qc-frames/job_ID/reconstruction.ply')
    idx = np.random.choice(len(pc.vertices), 5_000_000, replace=False)
    sub = trimesh.PointCloud(pc.vertices[idx], colors=pc.colors[idx])
    sub.export('/cosma-qc-frames/job_ID/reconstruction.glb')

Téléchargement :

    # Lancer le serveur HTTP sur le worker
    ssh floppyrj45@192.168.0.84 \
        "python3 -m http.server 8300 --directory /cosma-qc-frames"

    # Télécharger depuis PC
    wget http://192.168.0.84:8300/job_ID/reconstruction.glb

## Reprise sur crash — marqueurs .done

Chaque MP4 extrait avec succès génère un fichier marqueur :

    /cosma-qc-frames/job_ID/.video_0.done
    /cosma-qc-frames/job_ID/.video_1.done
    ...

En cas de crash, la reprise saute automatiquement les vidéos déjà traitées.

Pour forcer une ré-extraction complète :

    rm /cosma-qc-frames/job_ID/.video_*.done