fonzarely/regine-photos-archiverpublic Fork
⑂ main
Commits
⬇ Clone ▾
git clone https://git.rickub.com/fonzarely/regine-photos-archiver.git
git clone ssh://git@rickub.com/fonzarely/regine-photos-archiver.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Download ZIP
tri raw/jpeg 02d8847 · on main · Fabien Champigny · Sep 22, 2026
data-model.md · 82 lines · 6.0 KBmarkdown
Blame HistoryOpen raw

Data Model: Interface graphique de tri et de consultation

Entités dérivées de spec.md § Key Entities et Functional Requirements.

Fichier de dossier

Un fichier individuel au sein d'un dossier de travail local (US1).

Champ Type Règles
chemin chemin absolu Toujours à l'intérieur du dossier ouvert (dossier de format ou racine)
chemin_relatif chemin relatif au dossier Sert à déterminer s'il est promu (racine, un seul segment) ou non (dans un sous-dossier de format)
extension texte Détermine le dossier de format attendu (raw/jpeg/tiff, cf. research.md § 4)
nom_base texte Nom hors extension, sert à apparier RAW et JPEG jumeaux (même valeur)
est_promu booléen Dérivé de chemin_relatif (un seul segment = à la racine du dossier), jamais stocké séparément

Entrée regroupée

Représentation à l'écran d'une capture (spec.md § Key Entities). Purement une vue construite à la volée à partir des Fichiers de dossier partageant le même nom_base — ne modifie jamais leur relation sur le système de fichiers, jamais persistée.

Champ Type Règles
nom_base texte Clé de regroupement
fichiers liste de Fichier de dossier Tous les fichiers maîtres partageant nom_base — pas limité à deux champs figés raw/jpeg

Règle : le cas RAW+JPEG jumeau (FR-002) n'est qu'un cas particulier d'un principe plus général — un fichier maître sans jumeau (RAW seul, JPEG seul, scan TIFF isolé) forme une entrée regroupée à un seul membre, pas un cas à part. Correction par rapport à la conception initiale : un modèle à deux champs fixes fichier_raw/fichier_jpeg ne représentait pas correctement un scan TIFF ou un format maître marginal (ex. BMP) isolé, qui n'est ni un RAW ni un JPEG — généralisé en une liste dès l'implémentation.

Dossier de travail (vue combinée)

Racine locale ouverte en tri/culling (US1), avec ses dossiers de format et, le cas échéant, ses sous-dossiers (dossier parent de voyage, specs/004).

Champ Type Règles
chemin_racine chemin absolu Racine du dossier (ou du dossier parent) ouvert
dossiers_format_presents liste de texte Détectés à l'ouverture (créés à la demande, jamais une liste figée — docs/archivage-photo-elements-cles.md section 10)
sous_dossiers liste de « Dossier de travail », vide si dossier simple Un sous-dossier a sa propre structure complète (Edge Case : structure non reconnue si absente)

Action de promotion/rétrogradation

Commande appliquée à un Fichier de dossier (US1, FR-003). N'existe que comme événement, pas comme entité stockée.

Champ Type Règles
fichier Fichier de dossier Cible unique, jamais une paire entière d'un coup (FR-003)
sens énumération : promotion | retrogradation Détermine le chemin final (racine, ou dossier de format d'origine déduit de l'extension)

Effet : un déplacement physique (rename) au sein du même dossier, hash inchangé (Principe I/III) — aucune trace supplémentaire à écrire ; retrouvé nativement par regine_core.archive.reconciliation.comparer à la prochaine réconciliation (specs/005), sans code dédié ici.

Vue de consultation

Navigation en lecture seule de l'archive (US2, spec.md § Key Entities).

Champ Type Règles
archive_root_local chemin absolu Point de montage local du partage SMB configuré (réutilise regine_core.config.smb.chemin_local_du_partage, specs/003)
requete texte, optionnel Filtre par nom de dossier, date, ou texte de titre (US2 FR-008)

Aucune écriture : cette vue ne crée ni manifeste ni verrou (Assumptions de spec.md) — une simple lecture du système de fichiers de l'archive.

Restauration ciblée

Résultat d'une restauration d'un fichier repéré en consultation (US2, FR-009).

Champ Type Règles
chemin_source chemin absolu (dans l'archive) Fichier repéré via la Vue de consultation
chemin_destination chemin absolu (local) Choisi par l'utilisateur ; refuse d'écraser un fichier existant de contenu différent (FR-012, Edge Case)
hash_verifie booléen DOIT être vrai avant de considérer la restauration réussie (SC-004)

Assistant d'import (onglet, US3)

État d'écran de l'onglet d'import — purement une vue sur les entités déjà définies par specs/001-import-photos (FichierCandidat, GroupeImport, DestinationChoisie, réutilisées telles quelles depuis regine_core.import_carte.types, jamais redéfinies ici) ; ne persiste rien de nouveau, aucune table supplémentaire.

Champ Type Règles
carte chemin absolu Support source sélectionné par l'utilisateur (US3 Acceptance Scenario 1)
fichiers liste de FichierCandidat Résultat de copier_carte (déjà copiés et vérifiés en local, cf. specs/001 FR-001)
groupes liste de GroupeImport Résultat de decouper_en_groupes, éventuellement ajusté par detacher_jours (US3 Acceptance Scenario 2)
groupe_courant GroupeImport | None Groupe en cours de traitement (destination, titre, confirmation) ; None une fois tous les groupes traités
resume_avant_ecriture preparer_resume(...) (déjà défini par specs/001) Affiché et confirmé explicitement avant tout appel à publier_localement (US3 Acceptance Scenario 4, FR-015)

Effet d'un import confirmé : identique à celui de la CLI — classement par format (classer_par_format), attribution d'identifiants, puis publication dans l'espace de travail local (publier_localement), sans étape supplémentaire propre à la GUI. Révision 2026-09-22 : plus aucune écriture sur l'archive NAS à ce stade (archiver/publier_copie_locale supprimées côté specs/001) — l'archivage devient une action distincte et ultérieure (regine reconcile), hors périmètre de cet écran (cf. Assumptions de spec.md).

 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
82
# Data Model: Interface graphique de tri et de consultation

Entités dérivées de `spec.md` § Key Entities et Functional Requirements.

## Fichier de dossier

Un fichier individuel au sein d'un dossier de travail local (US1).

| Champ | Type | Règles |
|---|---|---|
| `chemin` | chemin absolu | Toujours à l'intérieur du dossier ouvert (dossier de format ou racine) |
| `chemin_relatif` | chemin relatif au dossier | Sert à déterminer s'il est promu (racine, un seul segment) ou non (dans un sous-dossier de format) |
| `extension` | texte | Détermine le dossier de format attendu (raw/jpeg/tiff, cf. research.md § 4) |
| `nom_base` | texte | Nom hors extension, sert à apparier RAW et JPEG jumeaux (même valeur) |
| `est_promu` | booléen | Dérivé de `chemin_relatif` (un seul segment = à la racine du dossier), jamais stocké séparément |

## Entrée regroupée

Représentation à l'écran d'une capture (spec.md § Key Entities). Purement une vue construite à la volée à partir des Fichiers de dossier partageant le même `nom_base` — ne modifie jamais leur relation sur le système de fichiers, jamais persistée.

| Champ | Type | Règles |
|---|---|---|
| `nom_base` | texte | Clé de regroupement |
| `fichiers` | liste de Fichier de dossier | Tous les fichiers maîtres partageant `nom_base` — pas limité à deux champs figés `raw`/`jpeg` |

**Règle** : le cas RAW+JPEG jumeau (FR-002) n'est qu'un cas particulier d'un principe plus général — un fichier maître sans jumeau (RAW seul, JPEG seul, scan TIFF isolé) forme une entrée regroupée à un seul membre, pas un cas à part. **Correction par rapport à la conception initiale** : un modèle à deux champs fixes `fichier_raw`/`fichier_jpeg` ne représentait pas correctement un scan TIFF ou un format maître marginal (ex. BMP) isolé, qui n'est ni un RAW ni un JPEG — généralisé en une liste dès l'implémentation.

## Dossier de travail (vue combinée)

Racine locale ouverte en tri/culling (US1), avec ses dossiers de format et, le cas échéant, ses sous-dossiers (dossier parent de voyage, `specs/004`).

| Champ | Type | Règles |
|---|---|---|
| `chemin_racine` | chemin absolu | Racine du dossier (ou du dossier parent) ouvert |
| `dossiers_format_presents` | liste de texte | Détectés à l'ouverture (créés à la demande, jamais une liste figée — `docs/archivage-photo-elements-cles.md` section 10) |
| `sous_dossiers` | liste de « Dossier de travail », vide si dossier simple | Un sous-dossier a sa propre structure complète (Edge Case : structure non reconnue si absente) |

## Action de promotion/rétrogradation

Commande appliquée à un Fichier de dossier (US1, FR-003). N'existe que comme événement, pas comme entité stockée.

| Champ | Type | Règles |
|---|---|---|
| `fichier` | Fichier de dossier | Cible unique, jamais une paire entière d'un coup (FR-003) |
| `sens` | énumération : `promotion` \| `retrogradation` | Détermine le chemin final (racine, ou dossier de format d'origine déduit de l'extension) |

**Effet** : un déplacement physique (`rename`) au sein du même dossier, hash inchangé (Principe I/III) — aucune trace supplémentaire à écrire ; retrouvé nativement par `regine_core.archive.reconciliation.comparer` à la prochaine réconciliation (specs/005), sans code dédié ici.

## Vue de consultation

Navigation en lecture seule de l'archive (US2, spec.md § Key Entities).

| Champ | Type | Règles |
|---|---|---|
| `archive_root_local` | chemin absolu | Point de montage local du partage SMB configuré (réutilise `regine_core.config.smb.chemin_local_du_partage`, `specs/003`) |
| `requete` | texte, optionnel | Filtre par nom de dossier, date, ou texte de titre (US2 FR-008) |

**Aucune écriture** : cette vue ne crée ni manifeste ni verrou (Assumptions de spec.md) — une simple lecture du système de fichiers de l'archive.

## Restauration ciblée

Résultat d'une restauration d'un fichier repéré en consultation (US2, FR-009).

| Champ | Type | Règles |
|---|---|---|
| `chemin_source` | chemin absolu (dans l'archive) | Fichier repéré via la Vue de consultation |
| `chemin_destination` | chemin absolu (local) | Choisi par l'utilisateur ; refuse d'écraser un fichier existant de contenu différent (FR-012, Edge Case) |
| `hash_verifie` | booléen | DOIT être vrai avant de considérer la restauration réussie (SC-004) |

## Assistant d'import (onglet, US3)

État d'écran de l'onglet d'import — purement une vue sur les entités déjà définies par `specs/001-import-photos` (`FichierCandidat`, `GroupeImport`, `DestinationChoisie`, réutilisées telles quelles depuis `regine_core.import_carte.types`, jamais redéfinies ici) ; ne persiste rien de nouveau, aucune table supplémentaire.

| Champ | Type | Règles |
|---|---|---|
| `carte` | chemin absolu | Support source sélectionné par l'utilisateur (US3 Acceptance Scenario 1) |
| `fichiers` | liste de `FichierCandidat` | Résultat de `copier_carte` (déjà copiés et vérifiés en local, cf. `specs/001` FR-001) |
| `groupes` | liste de `GroupeImport` | Résultat de `decouper_en_groupes`, éventuellement ajusté par `detacher_jours` (US3 Acceptance Scenario 2) |
| `groupe_courant` | `GroupeImport` \| `None` | Groupe en cours de traitement (destination, titre, confirmation) ; `None` une fois tous les groupes traités |
| `resume_avant_ecriture` | `preparer_resume(...)` (déjà défini par `specs/001`) | Affiché et confirmé explicitement avant tout appel à `publier_localement` (US3 Acceptance Scenario 4, FR-015) |

**Effet d'un import confirmé** : identique à celui de la CLI — classement par format (`classer_par_format`), attribution d'identifiants, puis publication dans l'espace de travail local (`publier_localement`), sans étape supplémentaire propre à la GUI. **Révision 2026-09-22** : plus aucune écriture sur l'archive NAS à ce stade (`archiver`/`publier_copie_locale` supprimées côté `specs/001`) — l'archivage devient une action distincte et ultérieure (`regine reconcile`), hors périmètre de cet écran (cf. Assumptions de `spec.md`).