lardon3d/docs/architecture/overview.md

125 lines
3.7 KiB
Markdown

# Vue d'ensemble de l'architecture Lardon3D
## Finalité et flux global
Lardon3D est un moteur de reconstruction géométrique persistante et incrémentale,
piloté par une TUI ncursesw. Le terminal reste le centre de contrôle : il gère
les projets, lance les opérations, présente leur progression et permet leur
annulation. Le viewer sera un composant graphique séparé mais intégré à
l'interface pour un usage confortable sur un seul écran.
```text
TUI / Projet
Task
Estimate
Governor
Reservation
Scheduler
Worker
Résultat atomique
Viewer live
```
## Composants actuels
### Project
Gestion persistante des projets : création, ouverture, fermeture, structure
de répertoires. Chaque projet regroupe configuration, images originales,
manifeste, résultats, exports et journaux.
**Statut :** IMPLEMENTED
### Import
Import asynchrone et annulable d'images dans un projet. Copie individuelle
des fichiers admissibles et maintenance d'un manifeste cohérent.
**Statut :** IMPLEMENTED
### Import Task
Wrapper asynchrone de l'import avec états, progression et annulation
coopérative. Exécute l'import dans un worker dédié (non encore migré vers
le scheduler générique).
**Statut :** IMPLEMENTED
### Image Catalog
Chargement et indexage en mémoire des métadonnées d'images depuis le
manifeste du projet. Fournit un accès structuré aux images.
**Statut :** IMPLEMENTED
### Image View
Vues triées et filtrées du catalogue pour la TUI. Ne modifie pas le
catalogue, le manifeste ou les images.
**Statut :** IMPLEMENTED
### Task
Moteur de tâches avec états, progression, pause/reprise coopérative,
annulation, checkpoints et estimations de ressources.
**Statut :** IMPLEMENTED
### Task Queue
File FIFO avec worker unique, sélection de la première tâche admissible,
backpressure et bornage du nombre de tâches en attente.
**Statut :** IMPLEMENTED
### Hardware Profile
Détection des capacités matérielles statiques : cœurs CPU, RAM, GPU/VRAM.
**Statut :** IMPLEMENTED
### Resource Snapshot
Capture instantanée des ressources disponibles : RAM libre, charge CPU,
VRAM disponible.
**Statut :** IMPLEMENTED
### Resource Governor
Arbitrage centralisé des budgets (RAM, GPU, CPU, IO), calcul de lots
adaptatifs, réservations opaques et historique borné de métriques.
**Statut :** IMPLEMENTED
## Résultats et publication live
Les traitements fonctionnent par séquences adaptatives : lire un lot borné,
calculer, écrire un résultat atomique, libérer la mémoire, puis traiter le
lot suivant. La stabilité du système hôte et la réactivité de la TUI ont
priorité sur le débit maximal.
Le viewer consomme des snapshots de résultats validés et publiés
atomiquement. Il ne lit jamais un fichier intermédiaire et ne partage pas
directement les buffers de travail d'un worker. Une interruption doit laisser
le dernier snapshot validé exploitable et permettre la reprise à une
frontière de séquence connue.
## Invariants fondamentaux
- Aucun callback de tâche n'est lancé sans réservation active validée.
- Le scheduler ne décide jamais des ressources.
- Le Resource Governor est l'unique propriétaire des budgets.
- Les réservations sont libérées exactement une fois.
- ncurses appartient exclusivement au thread principal.
- Les estimations de ressources sont immuables.
- Les buffers et files sont strictement bornés.
## Limites actuelles
- File à worker unique avec FIFO strict.
- Absence de DAG de dépendances.
- Absence de priorités.
- Absence de pools de workers multiples (CPU/GPU/IO).
- Import non migré vers le scheduler générique.
- Persistance des tâches et checkpoints non implémentée.
- Viewer et publication live non implémentés.