docs(development): journaliser le checkpoint A
This commit is contained in:
parent
c4bfef10b8
commit
29d336e4e3
3 changed files with 176 additions and 0 deletions
57
docs/development/DECISIONS_020_DEV3.md
Normal file
57
docs/development/DECISIONS_020_DEV3.md
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
# Décisions architecturales 0.2.0-dev.3
|
||||
|
||||
Les décisions sont ajoutées au fil des checkpoints. Les modèles existants sont privilégiés avant toute nouvelle table.
|
||||
|
||||
## D-000 — Checkpoints indépendants
|
||||
|
||||
**CONTEXTE** : le chantier couvre plusieurs domaines avec migrations et risques différents.
|
||||
|
||||
**OPTIONS ÉTUDIÉES** : un gros développement continu ; checkpoints commitables.
|
||||
|
||||
**CHOIX** : checkpoints A à E, chacun documenté, testé et versionné.
|
||||
|
||||
**JUSTIFICATION** : reprise fiable, absence de régression masquée, dépôt source de vérité.
|
||||
|
||||
**CONSÉQUENCES** : aucun checkpoint suivant ne démarre avant validation du précédent.
|
||||
|
||||
**DATE/COMMIT** : 2026-08-23 / initialisation.
|
||||
|
||||
## D-001 — Service de création Equipment
|
||||
|
||||
**CONTEXTE** : les routes fiche avancée et wizard construisaient des objets différents et le wizard retrouvait ensuite des équipements par nom.
|
||||
|
||||
**OPTIONS ÉTUDIÉES** : conserver les routes indépendantes ; centraliser la construction dans un service.
|
||||
|
||||
**CHOIX** : `core.services.equipment_creation.create_equipment`, lot et catégorie facultatifs, retour de l'instance persistée.
|
||||
|
||||
**JUSTIFICATION** : évite les collisions de noms et garantit la même gestion de quantité, parent, localisation et génération préventive.
|
||||
|
||||
**CONSÉQUENCES** : les anciens parcours sont progressivement migrés ; les relations techniques restent hors `parent_id`.
|
||||
|
||||
**DATE/COMMIT** : 2026-08-23 / checkpoint A en cours.
|
||||
|
||||
## D-003 — Catégorie et lot facultatifs
|
||||
|
||||
**CONTEXTE** : un inventaire peut être saisi avant que le référentiel de maintenance soit complet.
|
||||
|
||||
**OPTIONS ÉTUDIÉES** : bloquer toute création sans lot ; accepter un équipement incomplet et le compléter plus tard.
|
||||
|
||||
**CHOIX** : la création reste valide sans lot (et sans catégorie dans les parcours wizard) ; un lot fourni est validé et peut déclencher la génération préventive.
|
||||
|
||||
**JUSTIFICATION** : respecter le principe de configuration progressive sans fabriquer de maintenance implicite.
|
||||
|
||||
**CONSÉQUENCES** : l'interface doit pouvoir signaler ultérieurement « Lot non renseigné » ; les relations techniques restent indépendantes.
|
||||
|
||||
**DATE/COMMIT** : 2026-08-23 / checkpoint A.
|
||||
|
||||
## D-002 — Durée d'intervention inconnue
|
||||
|
||||
**CONTEXTE** : `Intervention.effective_estimated_duration` retournait silencieusement 60 minutes.
|
||||
|
||||
**CHOIX** : retourner 0 si aucune estimation ou moyenne historique n'existe ; DayPlanner affiche alors une tâche sans durée à renseigner.
|
||||
|
||||
**JUSTIFICATION** : ne pas présenter une estimation arbitraire comme une contrainte métier.
|
||||
|
||||
**CONSÉQUENCES** : les statistiques historiques restent inchangées ; les workflows doivent renseigner les interventions planifiables.
|
||||
|
||||
**DATE/COMMIT** : 2026-08-23 / checkpoint A en cours.
|
||||
81
docs/development/ROADMAP_020_DEV3.md
Normal file
81
docs/development/ROADMAP_020_DEV3.md
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
# Roadmap 0.2.0-dev.3
|
||||
|
||||
## Objectif
|
||||
|
||||
Faire évoluer la GMAO par checkpoints indépendants, reprenables et testables, depuis la consolidation de la création d'équipements jusqu'aux compteurs, au graphe technique et à la page « À documenter ».
|
||||
|
||||
## État initial
|
||||
|
||||
- Version : 0.1.0-dev.12
|
||||
- Migration : j5e6f7a8b9c0
|
||||
- Docker local : gmao-college:0.1.0-dev.12
|
||||
- Pytest baseline : 159 passed, 1 failed, 1 error (lookback GMAO historique)
|
||||
- Benchmark 100 équipements : 214 requêtes après optimisation, génération 3,22 s.
|
||||
|
||||
## Protections
|
||||
|
||||
Alban, watchdogs, ENT, Outlook, Pronote, Yeastar, IA, secrets, données TEST_UI_* et Ancien menu 76/76 doivent rester inchangés sauf nécessité démontrée.
|
||||
|
||||
## Checkpoints
|
||||
|
||||
### A — Fondations équipements → 0.2.0-dev.1
|
||||
|
||||
- [x] service métier unique de création Equipment ;
|
||||
- [x] lot facultatif et équipement incomplet accepté ;
|
||||
- [x] création quantitative/individuelle/groupe/parent homogène ;
|
||||
- [x] suppression des recherches par nom dans les nouveaux workflows ;
|
||||
- [x] audit du fallback Intervention 60 minutes ;
|
||||
- [x] validation des parcours et génération préventive ;
|
||||
- [x] tests ciblés et pytest complet sans nouvelle régression ;
|
||||
- [ ] version 0.2.0-dev.1 commitée séparément.
|
||||
|
||||
### B — Patrimoine, profils, setup → après A
|
||||
|
||||
- [ ] décision RoomType enrichi ou RoomProfile ;
|
||||
- [ ] profils de locaux et propositions d'équipements ;
|
||||
- [ ] ouvrages facultatifs ;
|
||||
- [ ] création en masse et duplication ;
|
||||
- [ ] setup Essentiel/Maintenance/Avancé ;
|
||||
- [ ] logements intégrés avec HousingUnit ;
|
||||
- [ ] charge 200 locaux.
|
||||
|
||||
### C — Compteurs, consommations, contrats → 0.2.0-dev.2
|
||||
|
||||
- [ ] Meter/MeterReading réutilisés ;
|
||||
- [ ] périmètre générique et calendrier scolaire ;
|
||||
- [ ] relevés dans Ma journée ;
|
||||
- [ ] consommation normalisée et alertes ;
|
||||
- [ ] quotas globaux photocopieurs ;
|
||||
- [ ] tests ciblés, complets, migration et version.
|
||||
|
||||
### D — Graphe technique générique
|
||||
|
||||
- [ ] décision et migration non destructive ;
|
||||
- [ ] relations techniques génériques ;
|
||||
- [ ] cascades électricité/eau/gaz/CVC/SSI/informatique ;
|
||||
- [ ] points de coupure progressifs.
|
||||
|
||||
### E — Exploitation / complétude → 0.2.0-dev.3
|
||||
|
||||
- [ ] page Patrimoine → À documenter ;
|
||||
- [ ] navigation des relations ;
|
||||
- [ ] intégration Centre documentaire ;
|
||||
- [ ] compteur en retard et anomalies visibles ;
|
||||
- [ ] benchmark final ;
|
||||
- [ ] version 0.2.0-dev.3 uniquement si tous les critères sont démontrés.
|
||||
|
||||
## Migrations prévues
|
||||
|
||||
Uniquement Alembic, non destructives, testées sur installation existante et neuve. Chaque checkpoint décide ses tables après audit des modèles existants.
|
||||
|
||||
## Risques / dépendances
|
||||
|
||||
- workflows historiques multiples pour Equipment ;
|
||||
- données de test locales non équivalentes à une validation UI ;
|
||||
- absence éventuelle de compte fonctionnel de validation ;
|
||||
- coût N+1 des périmètres et des graphes ;
|
||||
- règles contractuelles de quotas et calendrier.
|
||||
|
||||
## Définition de DONE
|
||||
|
||||
Un checkpoint est DONE quand son code, sa migration éventuelle, ses tests ciblés, le pytest complet, sa documentation, son statut et ses commits sont cohérents et poussés sur origin/main et audit/main.
|
||||
38
docs/development/STATUS_020_DEV3.md
Normal file
38
docs/development/STATUS_020_DEV3.md
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
CURRENT VERSION: 0.1.0-dev.12
|
||||
CURRENT CHECKPOINT: A — validation technique terminée, version à taguer
|
||||
CURRENT COMMIT: 2fa13d4 (fonctionnel non encore commité)
|
||||
CURRENT MIGRATION: j5e6f7a8b9c0
|
||||
DOCKER VERSION: gmao-college:0.1.0-dev.12 (healthy)
|
||||
LAST FULL TEST: 161 passed, 1 failed, 1 error en 198,60 s — uniquement lookback/configuration GMAO historique et son teardown
|
||||
LAST TARGETED TEST: 28 passed (service Equipment, maintenance engine, scope, DayPlanner)
|
||||
BLOCKERS: Aucun nouveau défaut ; les deux erreurs historiques restent autorisées
|
||||
NEXT ACTION: Commiter le code du checkpoint A, puis versionner 0.2.0-dev.1 et reconstruire Docker
|
||||
|
||||
## Avancement
|
||||
|
||||
- [x] mémoire de chantier créée ;
|
||||
- [x] baseline Git/Docker/version vérifié ;
|
||||
- [x] service commun introduit pour les routes fiche et wizard ;
|
||||
- [x] lot facultatif accepté par les routes wizard ;
|
||||
- [x] suppression de la recherche par nom dans le wizard ;
|
||||
- [x] fallback Intervention 60 minutes supprimé ;
|
||||
- [x] tests ciblés A (28 passants) ;
|
||||
- [x] audit A1-A7 ;
|
||||
- [ ] checkpoint A commit/version ;
|
||||
- [ ] checkpoint B ;
|
||||
- [ ] checkpoint C ;
|
||||
- [ ] checkpoint D ;
|
||||
- [ ] checkpoint E.
|
||||
|
||||
## Reprise
|
||||
|
||||
Lire ROADMAP_020_DEV3.md et DECISIONS_020_DEV3.md, puis reprendre sur NEXT ACTION. Ne pas commencer B avant clôture documentée de A.
|
||||
|
||||
## Détail checkpoint A
|
||||
|
||||
- Le service `core.services.equipment_creation.create_equipment` est utilisé par la fiche Equipment et les deux parcours wizard.
|
||||
- Catégorie et lot sont facultatifs dans les créations wizard ; une catégorie/lot explicitement invalide reste rejeté.
|
||||
- Les instances créées sont conservées en mémoire ; aucune recherche post-création par nom n'est effectuée.
|
||||
- Le fallback silencieux de 60 minutes des interventions est remplacé par une durée inconnue (`0`) quand aucune estimation n'est disponible.
|
||||
- Les nouveaux tests unitaires couvrent l'équipement sans lot et les noms dupliqués.
|
||||
- Le test historique `test_gmao_config_caps_lookback_at_one_year` échoue encore (plafond 9000 au lieu de 8760) et son teardown échoue sur `gmao_context.user_id` NULL ; aucune nouvelle régression observée.
|
||||
Loading…
Reference in a new issue