Données — Stockage et budget disque
=====================================

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

.. list-table::
   :header-rows: 1
   :widths: 30 20 50

   * - 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é
----------------------

.. list-table::
   :header-rows: 1
   :widths: 40 30 30

   * - 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**.

.. code-block:: bash

    # 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.

.. code-block:: bash

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

Vérification espace disque
^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: bash

    # 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 :

.. code-block:: bash

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

Génération manuelle sur le worker :

.. code-block:: python

    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 :

.. code-block:: bash

    # 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 :

.. code-block:: text

    /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 :

.. code-block:: bash

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