Quickstart : validation de l'import de photos
Ce guide valide les 3 user stories de spec.md via la commande regine import (cf. contracts/cli-import.md). À exécuter une fois regine_core.import_carte et regine_cli.import_cmd implémentés (cf. tasks.md).
Prérequis
regine-core/regine-cliinstallés,exiftooldisponible.- Un contexte de travail configuré (
specs/003-config-contexte-travail) : répertoire temporaire, répertoire de travail local, archive (peut être un dossier local simulant le NAS pour ce test). - Un jeu de fichiers de test avec dates EXIF contrôlées, simulant une "carte mémoire" (simple dossier local en lecture).
Scénario 1 — Import simple (User Story 1, P1)
regine import ./fixtures/carte_journee_unique --titre "Sortie parc" --annee --yes
Résultat attendu : un seul groupe proposé (une journée), dossier créé sous <local_work>/<AAAA>/<AAAA-MM-JJ>_Sortie-parc/, fichiers renommés <AAAA-MM-JJ>_Sortie-parc_<nomOrigine>.ext et classés dans leur dossier de format (raw/, jpeg/...), résumé affiché puis publication locale confirmée (--yes). Vérifier que la carte source n'a nécessité qu'une seule lecture par fichier (SC-001), et qu'aucun dossier n'apparaît sous <archive> à l'issue de cette commande (SC-006/SC-010) — la sortie stdout indique la commande regine reconcile à lancer plus tard pour archiver.
regine reconcile <archive>/<AAAA>/<AAAA-MM-JJ>_Sortie-parc --local-dest <local_work>/<AAAA>/<AAAA-MM-JJ>_Sortie-parc
Résultat attendu : ce dossier n'ayant jamais été archivé, tous ses fichiers sont classés « nouveau » ; en confirmant leur archivage, le dossier apparaît alors sous <archive> avec la même structure (raw//jpeg/...) que la copie locale (cf. specs/005-checkout-reconciliation, aucune modification requise pour ce cas).
Scénario 2 — Découpage multi-jours (User Story 2, P2)
regine import ./fixtures/carte_semaine_avec_pic
Résultat attendu : la répartition jour par jour est affichée, le jour au pic isolé est mis en avant comme candidat au détachement (jamais détaché automatiquement) ; en le détachant, deux groupes distincts sont proposés pour destination/titre séparément.
Scénario 3 — Voyage multi-étapes avec désambiguïsation de boîtiers (User Story 3, P3)
regine import ./fixtures/carte_etape1 --destination parent --categorie voyage --titre "Montenegro"
regine import ./fixtures/carte_etape2 --destination sous-dossier:<id_parent> --titre "Kotor"
Résultat attendu : structure à deux niveaux sous <archive>/voyage/<AAAA-MM>_Montenegro/<AAAA-MM-JJ>_Kotor_Montenegro/, le second import héritant automatiquement de la catégorie voyage sans qu'elle soit redemandée (cf. specs/004-categorisation-dossiers).
regine import ./fixtures/carte_secours_meme_etape --destination fusion:<id_kotor>
Résultat attendu : que <id_kotor> existe en local ou seulement dans l'archive, la fusion aboutit avec désambiguïsation automatique des boîtiers par modèle EXIF (ou question d'étiquetage manuel si nécessaire, cf. specs/002-profil-boitiers-optionnel). Si <id_kotor> n'existe que dans l'archive, un checkout automatique (specs/005-checkout-reconciliation) précède l'intégration des nouveaux fichiers — visible sur stdout comme une étape supplémentaire, pas un échec. Si ce dossier est déjà verrouillé par un autre checkout en cours, la commande échoue explicitement.
Scénario 4 — Détection de doublon entre deux imports séparés (FR-004 révisé, 2026-09-22)
regine import ./fixtures/carte_journee_unique --titre "Premier essai" --annee --yes
regine import ./fixtures/carte_journee_unique --titre "Deuxieme essai" --annee
Résultat attendu : le second import (même carte, titre et dossier de destination différents) affiche un avertissement listant les fichiers dont la somme de contrôle correspond à ceux déjà importés sous « Premier essai » et le chemin de ce dossier, puis attend une confirmation avant de poursuivre — jamais une exclusion ou une inclusion silencieuse.
Critères de sortie
Les 4 scénarios, y compris la fusion vers un dossier déjà archivé et la détection de doublon, doivent passer intégralement — plus aucun sous-scénario documenté comme bloqué.
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 |
|