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
refactor 19cf29c · on main · Fabien Champigny · Sep 24, 2026
quickstart.md · 112 lines · 6.6 KBmarkdown
Blame HistoryOpen raw

Quickstart : validation du module de configuration

Ce guide valide de bout en bout les trois user stories de spec.md via la surface CLI décrite dans contracts/cli-config.md. À exécuter une fois le module implémenté (cf. tasks.md).

Prérequis

  • Installation locale de Régine avec le module config implémenté (src/regine/config/, src/regine/cli/config_cmd.py).
  • Un répertoire temporaire et un répertoire de travail local vides, sur disque local.
  • Un partage SMB accessible (réel ou simulé) pour les scénarios 2 et 5 ; un partage volontairement démonté pour le scénario 4.

Scénario 1 — Configuration initiale (User Story 1, P1)

regine config set-paths \
  --temp-dir ~/regine/tmp \
  --local-work-dir ~/regine/travail \
  --archive-smb smb://nas.local/regine-archive

Résultat attendu : si ~/regine/tmp ou ~/regine/travail n'existent pas, Régine propose de les créer (accepter) ; le contexte est enregistré (regine config show affiche les trois chemins), et ~/regine/travail contient une base de données de travail initialisée (FR-006, SC-003).

Scénario 2 — Modification d'un chemin sans travail en cours (User Story 1, Acceptance Scenario 4)

regine config set-paths --temp-dir ~/regine/tmp2

Résultat attendu : le changement est appliqué sans erreur ; regine config show reflète le nouveau chemin ; les boîtiers déjà nommés (scénario 6) restent inchangés (SC-005).

Scénario 3 — Changement de répertoire de travail bloqué par un travail non réconcilié (Clarification n°1, FR-010, SC-006)

# Simuler un import/checkout en cours sous ~/regine/travail (non réconcilié), puis :
regine config set-paths --local-work-dir ~/regine/autre-travail

Résultat attendu : la commande échoue (code de sortie non-zéro) et indique précisément le(s) dossier(s) à réconcilier ou archiver avant de pouvoir changer de chemin — rien n'est déplacé ni perdu.

Scénario 4 — Assistance au montage SMB indisponible (User Story 2, P2)

# Démonter/débrancher le partage SMB configuré, puis déclencher une opération qui en a besoin :
regine config show

Résultat attendu : Régine détecte l'indisponibilité, déclenche le mécanisme de montage natif de l'OS (SC-002), puis, une fois le montage rétabli manuellement par l'utilisateur, une nouvelle invocation de la commande aboutit sans reconfiguration.

Scénario 5 — Nommer un boîtier à partir d'un import déjà effectué (User Story 3, P3)

# Après au moins un import ayant enregistré un boîtier (cf. specs/001-import-photos) :
regine config cameras list
regine config cameras rename --id 1 --nom "Fuji principal"
regine config cameras list

Résultat attendu : le boîtier apparaît d'abord comme (non nommé), puis porte le nom Fuji principal après renommage, sans qu'aucun nouvel import ni parcours du NAS n'ait été nécessaire (SC-004, SC-007).

Scénario 6 — Parcours volontaire du NAS pour un dossier archivé avant cette fonctionnalité (FR-012)

regine config cameras scan-nas
# Puis, après confirmation :
regine config cameras scan-nas --confirm

Résultat attendu : la première invocation avertit du coût potentiel et n'exécute rien (code non-zéro) ; la seconde, avec --confirm, parcourt l'archive et ajoute les boîtiers trouvés avec la source parcours_nas.

Scénario 7 — Configurer depuis la GUI, vérifier la parité avec la CLI (User Story 4, P4, extension du 2026-09-21)

uv run python -m regine_gui.app

Résultat attendu : l'onglet « Configuration » affiche les mêmes trois chemins et le même état SMB que regine config show (scénario 1) ; modifier un chemin depuis cet onglet puis lancer regine config show en CLI reflète immédiatement le changement (SC-008) ; tenter d'y reproduire le scénario 3 (changement de local-work-dir avec travail non réconcilié) échoue avec le même message d'erreur que la CLI, présenté clairement dans l'interface plutôt que comme une exception technique ; la liste des boîtiers de cet onglet correspond à regine config cameras list (scénario 5), et y nommer un boîtier produit le même résultat.

Scénario 8 — Réplication du contexte vers l'archive à l'archivage d'un dossier (User Story 5, FR-016)

# Après le scénario 5 (au moins un boîtier nommé) et un import/checkout suivi d'un archivage :
regine reconcile /Volumes/NAS/photos/2026/2026-08-15_Sortie --local-dest ~/regine/travail/2026-08-15_Sortie

Résultat attendu : en plus du comportement déjà couvert par specs/005-checkout-reconciliation, une copie de ~/regine/travail/contexte.sqlite3 apparaît à /Volumes/NAS/photos/.regine-contexte.sqlite3, reflétant les boîtiers nommés/catégories connues à cet instant.

Scénario 9 — Reprise sur une nouvelle machine (User Story 5, FR-017, SC-009/SC-010)

# Sur une installation "neuve" (nouveau HOME, donc nouveau ~/.regine), pointant vers la même archive :
regine config set-paths \
  --temp-dir ~/regine/tmp \
  --local-work-dir ~/regine/travail \
  --archive-smb smb://nas.local/regine-archive

regine config cameras list

Résultat attendu : set-paths annonce la restauration du contexte depuis l'archive (« Contexte restauré depuis l'archive : N boîtier(s), N catégorie(s) ») ; cameras list affiche immédiatement les mêmes boîtiers nommés que sur l'ancienne installation (scénario 5), sans aucun nouvel import.

Scénario 10 — Restauration au premier checkout, si la configuration initiale n'a pas suffi (User Story 5, FR-017, Edge Case)

# Installation neuve configurée pendant que l'archive était inaccessible (restauration différée) :
regine checkout /Volumes/NAS/photos/2026/2026-08-15_Sortie --local-dest ~/regine/travail/2026-08-15_Sortie
regine config cameras list

Résultat attendu : le premier regine checkout réussi déclenche à son tour la restauration du contexte (si elle n'a pas déjà eu lieu) ; cameras list retrouve les boîtiers nommés de l'ancienne installation, au plus tard à ce moment.

Critères de sortie

Les dix scénarios ci-dessus, exécutés dans l'ordre sur un contexte propre, doivent tous produire le résultat attendu — les scénarios 1 à 6 et 8 à 10 sans intervention manuelle (uniquement via la CLI), le scénario 7 en validation manuelle de la GUI (cf. specs/006-gui-tri-consultation/research.md § 2 : pas de suite de tests automatisée pour l'interface elle-même). Tout écart doit être tracé comme régression avant de considérer la fonctionnalité prête pour /speckit-tasks → implémentation suivante.

  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
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
# Quickstart : validation du module de configuration

Ce guide valide de bout en bout les trois user stories de `spec.md` via la surface CLI décrite dans `contracts/cli-config.md`. À exécuter une fois le module implémenté (cf. `tasks.md`).

## Prérequis

- Installation locale de Régine avec le module `config` implémenté (`src/regine/config/`, `src/regine/cli/config_cmd.py`).
- Un répertoire temporaire et un répertoire de travail local vides, sur disque local.
- Un partage SMB accessible (réel ou simulé) pour les scénarios 2 et 5 ; un partage volontairement démonté pour le scénario 4.

## Scénario 1 — Configuration initiale (User Story 1, P1)

```bash
regine config set-paths \
  --temp-dir ~/regine/tmp \
  --local-work-dir ~/regine/travail \
  --archive-smb smb://nas.local/regine-archive
```

**Résultat attendu** : si `~/regine/tmp` ou `~/regine/travail` n'existent pas, Régine propose de les créer (accepter) ; le contexte est enregistré (`regine config show` affiche les trois chemins), et `~/regine/travail` contient une base de données de travail initialisée (FR-006, SC-003).

## Scénario 2 — Modification d'un chemin sans travail en cours (User Story 1, Acceptance Scenario 4)

```bash
regine config set-paths --temp-dir ~/regine/tmp2
```

**Résultat attendu** : le changement est appliqué sans erreur ; `regine config show` reflète le nouveau chemin ; les boîtiers déjà nommés (scénario 6) restent inchangés (SC-005).

## Scénario 3 — Changement de répertoire de travail bloqué par un travail non réconcilié (Clarification n°1, FR-010, SC-006)

```bash
# Simuler un import/checkout en cours sous ~/regine/travail (non réconcilié), puis :
regine config set-paths --local-work-dir ~/regine/autre-travail
```

**Résultat attendu** : la commande échoue (code de sortie non-zéro) et indique précisément le(s) dossier(s) à réconcilier ou archiver avant de pouvoir changer de chemin — rien n'est déplacé ni perdu.

## Scénario 4 — Assistance au montage SMB indisponible (User Story 2, P2)

```bash
# Démonter/débrancher le partage SMB configuré, puis déclencher une opération qui en a besoin :
regine config show
```

**Résultat attendu** : Régine détecte l'indisponibilité, déclenche le mécanisme de montage natif de l'OS (SC-002), puis, une fois le montage rétabli manuellement par l'utilisateur, une nouvelle invocation de la commande aboutit sans reconfiguration.

## Scénario 5 — Nommer un boîtier à partir d'un import déjà effectué (User Story 3, P3)

```bash
# Après au moins un import ayant enregistré un boîtier (cf. specs/001-import-photos) :
regine config cameras list
regine config cameras rename --id 1 --nom "Fuji principal"
regine config cameras list
```

**Résultat attendu** : le boîtier apparaît d'abord comme `(non nommé)`, puis porte le nom `Fuji principal` après renommage, sans qu'aucun nouvel import ni parcours du NAS n'ait été nécessaire (SC-004, SC-007).

## Scénario 6 — Parcours volontaire du NAS pour un dossier archivé avant cette fonctionnalité (FR-012)

```bash
regine config cameras scan-nas
# Puis, après confirmation :
regine config cameras scan-nas --confirm
```

**Résultat attendu** : la première invocation avertit du coût potentiel et n'exécute rien (code non-zéro) ; la seconde, avec `--confirm`, parcourt l'archive et ajoute les boîtiers trouvés avec la source `parcours_nas`.

## Scénario 7 — Configurer depuis la GUI, vérifier la parité avec la CLI (User Story 4, P4, extension du 2026-09-21)

```bash
uv run python -m regine_gui.app
```

**Résultat attendu** : l'onglet « Configuration » affiche les mêmes trois chemins et le même état SMB que `regine config show` (scénario 1) ; modifier un chemin depuis cet onglet puis lancer `regine config show` en CLI reflète immédiatement le changement (SC-008) ; tenter d'y reproduire le scénario 3 (changement de `local-work-dir` avec travail non réconcilié) échoue avec le même message d'erreur que la CLI, présenté clairement dans l'interface plutôt que comme une exception technique ; la liste des boîtiers de cet onglet correspond à `regine config cameras list` (scénario 5), et y nommer un boîtier produit le même résultat.

## Scénario 8 — Réplication du contexte vers l'archive à l'archivage d'un dossier (User Story 5, FR-016)

```bash
# Après le scénario 5 (au moins un boîtier nommé) et un import/checkout suivi d'un archivage :
regine reconcile /Volumes/NAS/photos/2026/2026-08-15_Sortie --local-dest ~/regine/travail/2026-08-15_Sortie
```

**Résultat attendu** : en plus du comportement déjà couvert par `specs/005-checkout-reconciliation`, une copie de `~/regine/travail/contexte.sqlite3` apparaît à `/Volumes/NAS/photos/.regine-contexte.sqlite3`, reflétant les boîtiers nommés/catégories connues à cet instant.

## Scénario 9 — Reprise sur une nouvelle machine (User Story 5, FR-017, SC-009/SC-010)

```bash
# Sur une installation "neuve" (nouveau HOME, donc nouveau ~/.regine), pointant vers la même archive :
regine config set-paths \
  --temp-dir ~/regine/tmp \
  --local-work-dir ~/regine/travail \
  --archive-smb smb://nas.local/regine-archive

regine config cameras list
```

**Résultat attendu** : `set-paths` annonce la restauration du contexte depuis l'archive (« Contexte restauré depuis l'archive : N boîtier(s), N catégorie(s) ») ; `cameras list` affiche immédiatement les mêmes boîtiers nommés que sur l'ancienne installation (scénario 5), sans aucun nouvel import.

## Scénario 10 — Restauration au premier checkout, si la configuration initiale n'a pas suffi (User Story 5, FR-017, Edge Case)

```bash
# Installation neuve configurée pendant que l'archive était inaccessible (restauration différée) :
regine checkout /Volumes/NAS/photos/2026/2026-08-15_Sortie --local-dest ~/regine/travail/2026-08-15_Sortie
regine config cameras list
```

**Résultat attendu** : le premier `regine checkout` réussi déclenche à son tour la restauration du contexte (si elle n'a pas déjà eu lieu) ; `cameras list` retrouve les boîtiers nommés de l'ancienne installation, au plus tard à ce moment.

## Critères de sortie

Les dix scénarios ci-dessus, exécutés dans l'ordre sur un contexte propre, doivent tous produire le résultat attendu — les scénarios 1 à 6 et 8 à 10 sans intervention manuelle (uniquement via la CLI), le scénario 7 en validation manuelle de la GUI (cf. `specs/006-gui-tri-consultation/research.md` § 2 : pas de suite de tests automatisée pour l'interface elle-même). Tout écart doit être tracé comme régression avant de considérer la fonctionnalité prête pour `/speckit-tasks` → implémentation suivante.