Data Model: Checkout et réconciliation d'un dossier de l'archive
Entités dérivées de spec.md § Key Entities et Functional Requirements.
Manifeste (fichier SQLite, un par dossier principal — cf. research.md § 1)
Table fichiers
| Champ | Type | Règles |
|---|---|---|
chemin_relatif |
texte | Relatif à la racine du dossier principal (traverse sous-dossiers de format et sous-dossiers d'étape) |
taille |
entier | Octets |
hash_fichier_entier |
texte (SHA-256) | Toujours calculé |
hash_image_only |
texte, nullable | Calculé uniquement pour DNG/TIFF/JPEG maîtres (cf. Principe I de la constitution) |
identifiant_perenne |
texte | Repris du champ XMP xmpMM:DocumentID (specs/001-import-photos) |
Table verrou
| Champ | Type | Règles |
|---|---|---|
verrouille |
bool | True entre un checkout et sa réconciliation réussie |
identifiant_session |
texte, nullable | Identifie l'instance ayant posé le verrou (pour message d'erreur explicite, pas pour arbitrage distribué) |
horodatage |
horodatage, nullable | Date de pose du verrou |
Métadonnées du fichier SQLite : PRAGMA user_version (schéma structurel*1000 + additif, cf. research.md § 2), PRAGMA application_id (identifiant Régine).
Objets d'échange (non persistés)
ManifestSnapshot (retour de checkout) : copie en mémoire du contenu du manifeste au moment du checkout, plus le chemin de la copie de travail locale.
ChangementClasse :
| Champ | Type |
|---|---|
chemin |
Path |
categorie |
énumération : normal | anomalie | deplacement | suppression | nouveau |
chemin_ancien |
Path | None (renseigné si categorie == deplacement) |
RapportReconciliation (retour de comparer) :
| Champ | Type |
|---|---|
changements |
list[ChangementClasse] |
anomalies |
list[ChangementClasse] (sous-ensemble filtré, pour affichage séparé — FR-014) |
Relations
Dossier principal (archive) ──1────1── Manifeste (fichiers + verrou)
│ checkout (FR-001)
▼
Copie de travail locale ──(édition libre, aucune contrainte)──▶ Copie de travail modifiée
│ réconciliation : comparer(Manifeste, Copie de travail modifiée)
▼
RapportReconciliation (5 catégories) ──▶ Point avant archive (FR-013) ──▶ confirmation ──▶ archiver()
│
▼
Manifeste mis à jour + verrou levé (FR-016)
État / transitions
[Dossier de l'archive]
Disponible (verrou=False)
│ checkout (FR-001/003)
▼
Verrouillé (verrou=True, ManifestSnapshot créé)
│ édition locale libre (FR-005, archive inchangée)
│
│ réconciliation → RapportReconciliation
│
├── changements "normal"/"deplacement"/"suppression confirmée"/"nouveau confirmé" → archivés
└── "anomalie" → décision explicite (confirmer quand même | restaurer depuis l'archive)
│
│ toutes les écritures confirmées effectuées et vérifiées (FR-015)
▼
Disponible (verrou=False, manifeste mis à jour)
Une tentative de checkout pendant l'état Verrouillé est refusée (FR-004) — pas de transition, retour d'erreur explicite.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
|