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
specs 6ad5e0a · on main · Fabien Champigny · Sep 19, 2026
quickstart.md · 63 lines · 3.2 KBmarkdown
Blame HistoryOpen raw

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-core installé (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
# 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-core` installé (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)

```python
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)

```python
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)

```python
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)

```python
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.