# cosma-qc

**COSMA post-acquisition QC pipeline** — reconstruction photogrammétrique
par GoPro (lingbot-map), queue de jobs distribués, dashboard web pour suivi
terrain le jour même.

## Objectif

Après une acquisition AUV (2 GoPros × 2-3 AUVs × heures d'enregistrement),
savoir rapidement si la couverture est complète avant de replier la mission —
sans attendre les 30 jours du traitement photogrammétrique complet.

## Pipeline

```
SSD plugged ─┐
             ├─▶ Ingestion ─▶ Frame extraction (per GoPro × segment)
             │                        │
             │                        ▼
             │                  Job queue (SQLite)
             │                        │
             │         ┌──────────────┼──────────────┐
             ▼         ▼              ▼              ▼
         Dashboard  Worker .87    Worker .84    (scalable)
         (FastAPI)   (3060)       (3090)
             │         │              │
             │         └─▶ PLY ◀──────┘
             │              │
             │              ▼
             └──────── ICP stitch (Open3D) ─▶ viser viewer
```

## Stack

- **Backend** : FastAPI + SQLite
- **Frontend** : HTMX (UI réactive sans build JS)
- **Queue** : table SQLite + workers SSH-triggered
- **Monitoring** : polling `nvidia-smi` sur .87 / .84, `df` pour disque
- **Reconstruction** : lingbot-map (GCT-Stream windowed)
- **Stitch** : Open3D ICP

## Déploiement

- Service sur .82 (stable, Caddy pour URL propre)
- Workers : SSH vers .87 (3060 12 GB) et .84 (3090 24 GB)

## État

Scaffold en cours.
