Quickstart : validation de la catégorisation des dossiers
Ce guide valide les 4 user stories de spec.md via l'API interne décrite dans contracts/regine-core-api.md. Comme cette fonctionnalité n'a pas de surface CLI propre (elle s'intègre au futur flux de destination de l'import, specs/001-import-photos), la validation se fait directement contre regine_core en attendant que ce point d'intégration soit implémenté. À exécuter une fois regine_core.dossier.root et regine_core.config.categories implémentés (cf. tasks.md).
Prérequis
regine-coreinstallé (environnement de développement du monorepo, cf.specs/003-config-contexte-travail).- Un contexte de travail déjà configuré (
specs/003-config-contexte-travail), avec la base de contexte centralisée initialisée.
Scénario 1 — Placement par défaut par année (User Story 1, P1)
from regine_core.dossier.root import determine_root
from datetime import date
root = determine_root(date(2026, 8, 15))
assert root.type == "annee"
assert root.nom == "2026"
assert root.chemin_archive.name == "2026" and root.chemin_local.name == "2026"
Résultat attendu : type == "annee", chemins archive et local en miroir sous 2026/.
Scénario 2 — Catégorie thématique explicite (User Story 2, P2)
root = determine_root(date(2026, 6, 20), categorie="mariage")
assert root.type == "categorie"
assert root.nom == "mariage"
Résultat attendu : type == "categorie", aucun répertoire d'année dans le chemin résultant.
Scénario 3 — Suggestion pour éviter un doublon orthographique (Edge Case)
from regine_core.config.categories import suggest_categories, register_category_usage
register_category_usage("mariage")
suggestions = suggest_categories("Mariage")
assert "mariage" in suggestions
Résultat attendu : la catégorie déjà connue mariage est proposée en correspondance proche avant que l'utilisateur ne crée par erreur un second répertoire Mariage.
Scénario 4 — Héritage par un sous-dossier de voyage (User Story 3, P3)
parent_root = determine_root(date(2026, 8, 1), categorie="voyage")
# Le sous-dossier réutilise directement parent_root, sans nouvel appel à determine_root :
sous_dossier_root = parent_root
assert sous_dossier_root.nom == "voyage"
Résultat attendu : aucun second appel à determine_root pour le sous-dossier — le RootLocation du parent est réutilisé tel quel.
Scénario 5 — Recatégorisation a posteriori (User Story 4, P4)
Ce scénario dépend de l'implémentation de regine_core.archive.reconciliation (specs/005-checkout-reconciliation, désormais spécifiée et planifiée) : à valider une fois ce module implémenté, en déplaçant un dossier de 2026/ vers mariage/ dans l'espace de travail local et en vérifiant que comparer() le classe deplacement plutôt qu'anomalie.
Critères de sortie
Les scénarios 1 à 4 doivent passer sans accès réseau (fonctionnement local uniquement, cf. Performance Goals du plan). Le scénario 5 dépend de l'implémentation de specs/005-checkout-reconciliation (spécifiée et planifiée, pas encore implémentée) — à exécuter une fois celle-ci disponible.
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 |
|