| @@ -8,6 +8,13 @@ |
| 8 | | 8 | |
| 9 | **Input**: User description: "le module de configuration permet de definir le context de travail de Regine. Permet de nomer les boitiers du photographe en fonction des photos déjà integrées. Configure les chemins : repertoire temporaire, repertoire de travaille local , chemin du nas (SMB) et aide au montage auto du SMB si pas disponible. d'autres paramètres pourronts êtres integrés plus tard. Il faut aussi préparer la base de données de travail qui sera à la racine du répértoire de travail et archivée en même temps que l'archivage des dossiers locaux." | 9 | **Input**: User description: "le module de configuration permet de definir le context de travail de Regine. Permet de nomer les boitiers du photographe en fonction des photos déjà integrées. Configure les chemins : repertoire temporaire, repertoire de travaille local , chemin du nas (SMB) et aide au montage auto du SMB si pas disponible. d'autres paramètres pourronts êtres integrés plus tard. Il faut aussi préparer la base de données de travail qui sera à la racine du répértoire de travail et archivée en même temps que l'archivage des dossiers locaux." |
| 10 | | 10 | |
| | 11 | +## Clarifications |
| | 12 | + |
| | 13 | +### Session 2026-09-18 |
| | 14 | + |
| | 15 | +- Q: Que doit devenir le contenu déjà présent (checkouts en cours, base de données de travail) dans l'ancien répertoire de travail local quand l'utilisateur change ce chemin de configuration ? → A: Régine refuse le changement tant qu'un checkout ou un import n'est pas réconcilié/archivé ; le changement n'est autorisé qu'une fois le répertoire vide de tout travail non archivé. |
| | 16 | +- Q: La détection des boîtiers déjà rencontrés (User Story 3) doit-elle parcourir tout le NAS en direct, ou s'appuyer sur des informations déjà connues localement ? → A: Les références de boîtiers sont enregistrées dans une base de contexte centralisée à chaque import ; un parcours à la demande sur l'ensemble du NAS est une capacité complémentaire, optionnelle et à déclenchement volontaire, pas une dépendance obligatoire de la détection de base. |
| | 17 | + |
| 11 | ## User Scenarios & Testing *(mandatory)* | 18 | ## User Scenarios & Testing *(mandatory)* |
| 12 | | 19 | |
| 13 | ### User Story 1 - Configuration initiale des emplacements de travail (Priority: P1) | 20 | ### User Story 1 - Configuration initiale des emplacements de travail (Priority: P1) |
| @@ -24,6 +31,7 @@ Avant tout import ou archivage, un photographe indique à Régine où se trouven |
| 24 | 2. **Given** un chemin de répertoire temporaire ou de répertoire de travail local qui n'existe pas encore, **When** l'utilisateur le configure, **Then** Régine propose de le créer plutôt que d'échouer silencieusement. | 31 | 2. **Given** un chemin de répertoire temporaire ou de répertoire de travail local qui n'existe pas encore, **When** l'utilisateur le configure, **Then** Régine propose de le créer plutôt que d'échouer silencieusement. |
| 25 | 3. **Given** un répertoire de travail local nouvellement configuré, **When** Régine initialise le contexte de travail, **Then** une base de données de travail est créée et prête à la racine de ce répertoire, avant qu'aucune autre opération n'en ait besoin. | 32 | 3. **Given** un répertoire de travail local nouvellement configuré, **When** Régine initialise le contexte de travail, **Then** une base de données de travail est créée et prête à la racine de ce répertoire, avant qu'aucune autre opération n'en ait besoin. |
| 26 | 4. **Given** un contexte de travail déjà configuré, **When** l'utilisateur modifie l'un des trois chemins, **Then** Régine applique le changement sans nécessiter de réinstallation ni perdre les autres paramètres déjà définis (boîtiers nommés compris). | 33 | 4. **Given** un contexte de travail déjà configuré, **When** l'utilisateur modifie l'un des trois chemins, **Then** Régine applique le changement sans nécessiter de réinstallation ni perdre les autres paramètres déjà définis (boîtiers nommés compris). |
| | 34 | +5. **Given** un checkout ou un import en cours, non encore réconcilié ni archivé, dans le répertoire de travail local, **When** l'utilisateur tente de changer ce chemin, **Then** Régine refuse le changement et indique le travail à réconcilier ou archiver au préalable, plutôt que de déplacer ou d'abandonner silencieusement ce travail. |
| 27 | | 35 | |
| 28 | --- | 36 | --- |
| 29 | | 37 | |
| @@ -53,9 +61,10 @@ Un photographe consulte la configuration de Régine et veut donner un nom lisibl |
| 53 | | 61 | |
| 54 | **Acceptance Scenarios**: | 62 | **Acceptance Scenarios**: |
| 55 | | 63 | |
| 56 | -1. **Given** des photos déjà intégrées à l'archive provenant d'au moins un boîtier identifiable, **When** l'utilisateur ouvre la configuration des boîtiers, **Then** Régine liste les boîtiers détectés (regroupés par modèle et, si disponible, numéro de série) à partir de ces photos. | 64 | +1. **Given** des photos déjà importées via Régine, dont les références de boîtier ont été enregistrées dans la base de contexte centralisée, **When** l'utilisateur ouvre la configuration des boîtiers, **Then** Régine liste les boîtiers détectés (regroupés par modèle et, si disponible, numéro de série) à partir de cette base, sans parcourir le NAS en direct. |
| 57 | 2. **Given** un boîtier détecté mais non nommé, **When** l'utilisateur lui attribue un nom, **Then** ce nom est associé au boîtier et réutilisé partout où Régine identifie ce même boîtier par la suite. | 65 | 2. **Given** un boîtier détecté mais non nommé, **When** l'utilisateur lui attribue un nom, **Then** ce nom est associé au boîtier et réutilisé partout où Régine identifie ce même boîtier par la suite. |
| 58 | 3. **Given** deux boîtiers de même modèle jamais distingués faute de collision ou de numéro de série exploitable, **When** l'utilisateur consulte la liste, **Then** ils apparaissent comme une seule entrée détectée tant qu'aucune information ne permet de les séparer. | 66 | 3. **Given** deux boîtiers de même modèle jamais distingués faute de collision ou de numéro de série exploitable, **When** l'utilisateur consulte la liste, **Then** ils apparaissent comme une seule entrée détectée tant qu'aucune information ne permet de les séparer. |
| | 67 | +4. **Given** un dossier archivé avant l'existence de cette fonctionnalité, dont les boîtiers ne figurent donc pas encore dans la base de contexte centralisée, **When** l'utilisateur déclenche volontairement un parcours complet du NAS, **Then** Régine détecte aussi les boîtiers de ce dossier et les ajoute à la liste. |
| 59 | | 68 | |
| 60 | --- | 69 | --- |
| 61 | | 70 | |
| @@ -65,6 +74,7 @@ Un photographe consulte la configuration de Régine et veut donner un nom lisibl |
| 65 | - Que se passe-t-il si le chemin renseigné pour l'archive NAS ne correspond pas à un partage réseau valide (ex. confusion avec un dossier local) ? Régine DOIT signaler l'anomalie de configuration plutôt que de l'enregistrer telle quelle. | 74 | - Que se passe-t-il si le chemin renseigné pour l'archive NAS ne correspond pas à un partage réseau valide (ex. confusion avec un dossier local) ? Régine DOIT signaler l'anomalie de configuration plutôt que de l'enregistrer telle quelle. |
| 66 | - Que se passe-t-il si l'espace disque du répertoire de travail local devient insuffisant pour accueillir la base de données de travail ? Régine DOIT signaler une erreur de configuration claire plutôt que de créer une base de données partiellement écrite. | 75 | - Que se passe-t-il si l'espace disque du répertoire de travail local devient insuffisant pour accueillir la base de données de travail ? Régine DOIT signaler une erreur de configuration claire plutôt que de créer une base de données partiellement écrite. |
| 67 | - Que se passe-t-il si l'utilisateur tente de lancer une opération avant d'avoir configuré le contexte de travail ? Régine DOIT indiquer clairement quels chemins manquent plutôt que d'échouer avec une erreur technique. | 76 | - Que se passe-t-il si l'utilisateur tente de lancer une opération avant d'avoir configuré le contexte de travail ? Régine DOIT indiquer clairement quels chemins manquent plutôt que d'échouer avec une erreur technique. |
| | 77 | +- Que se passe-t-il si l'utilisateur tente de changer le répertoire de travail local alors qu'un checkout ou un import est encore en cours (non réconcilié/archivé) ? Régine DOIT refuser ce changement et indiquer précisément ce qui doit être réconcilié ou archivé avant de pouvoir continuer. |
| 68 | | 78 | |
| 69 | ## Requirements *(mandatory)* | 79 | ## Requirements *(mandatory)* |
| 70 | | 80 | |
| @@ -77,10 +87,11 @@ Un photographe consulte la configuration de Régine et veut donner un nom lisibl |
| 77 | - **FR-005**: Le système DOIT mémoriser l'emplacement SMB configuré (cf. FR-001) afin de pouvoir redéclencher son montage natif à chaque nouvelle indisponibilité détectée, sans que l'utilisateur ait à ressaisir ce chemin. Une fois l'accès au NAS rétabli après une indisponibilité détectée, le système DOIT permettre de reprendre l'opération initialement bloquée sans reconfiguration complète du contexte de travail. | 87 | - **FR-005**: Le système DOIT mémoriser l'emplacement SMB configuré (cf. FR-001) afin de pouvoir redéclencher son montage natif à chaque nouvelle indisponibilité détectée, sans que l'utilisateur ait à ressaisir ce chemin. Une fois l'accès au NAS rétabli après une indisponibilité détectée, le système DOIT permettre de reprendre l'opération initialement bloquée sans reconfiguration complète du contexte de travail. |
| 78 | - **FR-006**: Le système DOIT initialiser, à la racine du répertoire de travail local, une base de données de travail prête à l'usage avant qu'aucune autre opération de Régine n'en ait besoin. | 88 | - **FR-006**: Le système DOIT initialiser, à la racine du répertoire de travail local, une base de données de travail prête à l'usage avant qu'aucune autre opération de Régine n'en ait besoin. |
| 79 | - **FR-007**: Lorsqu'un dossier du répertoire de travail local est archivé vers le NAS, la base de données de travail correspondant à ce dossier DOIT être archivée avec lui, comme partie intégrante du dossier archivé. | 89 | - **FR-007**: Lorsqu'un dossier du répertoire de travail local est archivé vers le NAS, la base de données de travail correspondant à ce dossier DOIT être archivée avec lui, comme partie intégrante du dossier archivé. |
| 80 | -- **FR-008**: Le système DOIT détecter, à partir des photos déjà intégrées à l'archive, les boîtiers déjà rencontrés (regroupés par modèle et, si disponible, numéro de série), et permettre à l'utilisateur de leur attribuer un nom lisible, sans nécessiter de nouvel import. | 90 | +- **FR-008**: À chaque import, le système DOIT enregistrer les références des boîtiers rencontrés (modèle et, si disponible, numéro de série) dans une base de contexte centralisée, et permettre à l'utilisateur, depuis cette base, d'attribuer un nom lisible à un boîtier déjà rencontré, sans nécessiter de nouvel import ni de parcours du NAS. |
| 81 | - **FR-009**: Un nom attribué à un boîtier via la configuration DOIT être réutilisé partout où Régine identifie ce même boîtier par la suite (import, désambiguïsation de collision). | 91 | - **FR-009**: Un nom attribué à un boîtier via la configuration DOIT être réutilisé partout où Régine identifie ce même boîtier par la suite (import, désambiguïsation de collision). |
| 82 | -- **FR-010**: Le système DOIT permettre de modifier tout paramètre du contexte de travail (chemins, boîtiers nommés) après la configuration initiale, sans réinstallation. | 92 | +- **FR-010**: Le système DOIT permettre de modifier tout paramètre du contexte de travail (chemins, boîtiers nommés) après la configuration initiale, sans réinstallation. Pour le répertoire de travail local spécifiquement, le système DOIT refuser ce changement tant qu'un checkout ou un import n'a pas été réconcilié ou archivé, et indiquer clairement ce qui bloque le changement, plutôt que de déplacer ou d'abandonner silencieusement du travail en cours. |
| 83 | - **FR-011**: Le système DOIT être conçu pour accueillir de nouveaux paramètres de configuration à l'avenir sans remettre en cause les paramètres déjà définis. | 93 | - **FR-011**: Le système DOIT être conçu pour accueillir de nouveaux paramètres de configuration à l'avenir sans remettre en cause les paramètres déjà définis. |
| | 94 | +- **FR-012**: Le système PEUT proposer, comme action distincte et déclenchée volontairement par l'utilisateur, un parcours complet de l'archive NAS pour détecter les boîtiers de dossiers archivés avant l'existence de cette fonctionnalité ou jamais revus depuis ; cette capacité est complémentaire et n'est pas requise pour que FR-008 soit satisfaite. |
| 84 | | 95 | |
| 85 | ### Key Entities | 96 | ### Key Entities |
| 86 | | 97 | |
| @@ -88,8 +99,9 @@ Un photographe consulte la configuration de Régine et veut donner un nom lisibl |
| 88 | - **Répertoire temporaire** : emplacement local destiné aux copies brutes avant analyse, en amont d'un import. | 99 | - **Répertoire temporaire** : emplacement local destiné aux copies brutes avant analyse, en amont d'un import. |
| 89 | - **Répertoire de travail local** : emplacement local où résident les copies de travail (checkout, import en cours) et leur base de données. | 100 | - **Répertoire de travail local** : emplacement local où résident les copies de travail (checkout, import en cours) et leur base de données. |
| 90 | - **Emplacement de l'archive (NAS/SMB)** : chemin réseau où réside l'archive persistante de Régine. | 101 | - **Emplacement de l'archive (NAS/SMB)** : chemin réseau où réside l'archive persistante de Régine. |
| 91 | -- **Base de données de travail** : base persistante créée à la racine du répertoire de travail local, associée à chaque dossier local et archivée avec lui. | 102 | +- **Base de données de travail** : base persistante créée à la racine du répertoire de travail local, associée à chaque dossier local et archivée avec lui — distincte de la base de contexte centralisée ci-dessous. |
| 92 | -- **Boîtier nommé** : entrée associant un nom lisible choisi par l'utilisateur à un boîtier détecté (modèle et, si disponible, numéro de série) à partir des photos déjà intégrées à l'archive. | 103 | +- **Base de contexte centralisée** : base persistante au niveau du contexte de travail (pas par dossier), alimentée à chaque import avec les références de boîtiers rencontrés ; source par défaut de la détection de boîtiers de la User Story 3. |
| | 104 | +- **Boîtier nommé** : entrée associant un nom lisible choisi par l'utilisateur à un boîtier détecté (modèle et, si disponible, numéro de série) dans la base de contexte centralisée, complétable par un parcours à la demande de l'archive NAS (FR-012). |
| 93 | | 105 | |
| 94 | ## Success Criteria *(mandatory)* | 106 | ## Success Criteria *(mandatory)* |
| 95 | | 107 | |
| @@ -98,8 +110,10 @@ Un photographe consulte la configuration de Régine et veut donner un nom lisibl |
| 98 | - **SC-001**: Un utilisateur configure les trois emplacements de travail et réalise un premier import sans aucune erreur liée à un chemin manquant ou incorrect. | 110 | - **SC-001**: Un utilisateur configure les trois emplacements de travail et réalise un premier import sans aucune erreur liée à un chemin manquant ou incorrect. |
| 99 | - **SC-002**: 100% des opérations nécessitant l'accès au NAS alors que le partage SMB est indisponible déclenchent une assistance au rétablissement de l'accès plutôt qu'un échec brut. | 111 | - **SC-002**: 100% des opérations nécessitant l'accès au NAS alors que le partage SMB est indisponible déclenchent une assistance au rétablissement de l'accès plutôt qu'un échec brut. |
| 100 | - **SC-003**: La base de données de travail est présente et utilisable à la racine du répertoire de travail local avant la première opération qui en a besoin, dans 100% des cas. | 112 | - **SC-003**: La base de données de travail est présente et utilisable à la racine du répertoire de travail local avant la première opération qui en a besoin, dans 100% des cas. |
| 101 | -- **SC-004**: Un utilisateur peut nommer un boîtier détecté à partir de photos déjà archivées sans avoir à réimporter ou reconnecter de carte mémoire. | 113 | +- **SC-004**: Un utilisateur peut nommer un boîtier déjà enregistré dans la base de contexte centralisée sans avoir à réimporter, reconnecter de carte mémoire, ni déclencher de parcours du NAS. |
| | 114 | +- **SC-007**: L'ouverture de l'écran de configuration des boîtiers ne déclenche par défaut aucun parcours du NAS ; un tel parcours ne survient que sur action explicite de l'utilisateur (FR-012). |
| 102 | - **SC-005**: Modifier un chemin du contexte de travail après la configuration initiale ne provoque la perte d'aucun boîtier déjà nommé. | 115 | - **SC-005**: Modifier un chemin du contexte de travail après la configuration initiale ne provoque la perte d'aucun boîtier déjà nommé. |
| | 116 | +- **SC-006**: 100% des tentatives de changer le répertoire de travail local alors qu'un travail non réconcilié y est présent sont bloquées, avec une explication claire de ce qui doit être réconcilié ou archivé au préalable. |
| 103 | | 117 | |
| 104 | ## Assumptions | 118 | ## Assumptions |
| 105 | | 119 | |
| @@ -107,3 +121,4 @@ Un photographe consulte la configuration de Régine et veut donner un nom lisibl |
| 107 | - Les paramètres supplémentaires évoqués comme "à intégrer plus tard" ne sont pas définis dans cette spécification ; seule l'exigence d'extensibilité (FR-011) les anticipe. | 121 | - Les paramètres supplémentaires évoqués comme "à intégrer plus tard" ne sont pas définis dans cette spécification ; seule l'exigence d'extensibilité (FR-011) les anticipe. |
| 108 | - Cette spécification s'appuie sur le mécanisme de profil de boîtiers optionnel déjà défini (`specs/002-profil-boitiers-optionnel`) : elle ajoute un point d'entrée proactif de nommage à partir de l'archive existante, sans modifier les règles de désambiguïsation par collision déjà établies. | 122 | - Cette spécification s'appuie sur le mécanisme de profil de boîtiers optionnel déjà défini (`specs/002-profil-boitiers-optionnel`) : elle ajoute un point d'entrée proactif de nommage à partir de l'archive existante, sans modifier les règles de désambiguïsation par collision déjà établies. |
| 109 | - La base de données de travail mentionnée correspond au manifeste persistant par dossier déjà prévu dans la constitution du projet (Workflow d'archivage) ; cette spécification couvre son initialisation au niveau du contexte de travail, pas son schéma détaillé. | 123 | - La base de données de travail mentionnée correspond au manifeste persistant par dossier déjà prévu dans la constitution du projet (Workflow d'archivage) ; cette spécification couvre son initialisation au niveau du contexte de travail, pas son schéma détaillé. |
| | 124 | +- La base de contexte centralisée (boîtiers) est distincte des bases de données de travail par dossier : elle vit au niveau du contexte de travail, n'est pas archivée avec un dossier particulier, et n'a pas vocation à remplacer l'index inter-dossiers en lecture seule déjà anticipé comme travail futur dans les notes de conception du projet — le parcours à la demande (FR-012) reste une capacité complémentaire, pas une dépendance de cette spécification. |