From 2213fffec3f8a4aff9e8a077c8630ea22621d0ed Mon Sep 17 00:00:00 2001 From: root Date: Mon, 24 Aug 2026 12:09:07 +0000 Subject: [PATCH] docs(development): close checkpoint C3 status --- docs/development/DECISIONS_020_DEV3.md | 6 ++++++ docs/development/ROADMAP_020_DEV3.md | 6 ++++-- docs/development/STATUS_020_DEV3.md | 19 +++++++++++-------- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/docs/development/DECISIONS_020_DEV3.md b/docs/development/DECISIONS_020_DEV3.md index 7ff28c2..5c95a67 100644 --- a/docs/development/DECISIONS_020_DEV3.md +++ b/docs/development/DECISIONS_020_DEV3.md @@ -118,6 +118,12 @@ Les périodicités DAY/WEEK/MONTH réutilisent le même agrégateur. Les métriq Les preuves d’alerte sont uniques par alerte et intervalle. Les conclusions `CONFIRMED_LEAK` et `READING_ERROR` excluent leurs preuves de la baseline ; `BAD_THRESHOLD` et `NORMAL_EXPLAINED` ne les excluent pas automatiquement. Les régimes chauffage restent liés au compteur avec `network_name` : cette solution permet plusieurs réseaux sans duplication obligatoire d’une nouvelle entité, et reste remplaçable par une alimentation GTB future. +## D-015 — Clôture C3 : recalcul ciblé et exposition opérationnelle + +Les nouveaux relevés déclenchent un recalcul limité aux intervalles voisins ; une correction ne réévalue que les segments précédent et suivant. Les preuves ouvertes dépendant d'une valeur corrigée sont neutralisées et l'alerte est clôturée si elle ne possède plus de preuve valide ; les alertes déjà clôturées restent historiques. Le recalcul est appelé dans la transaction du service de relevé, sans worker externe ni rescannage complet à chaque GET. + +La route de clôture d'alerte réutilise le RBAC `planning.manage`. « Ma journée » ne montre que les alertes ouvertes liées à un compteur attribué au compte ou à une occurrence qui lui est attribuée ; l'administrateur conserve la vision globale. Le dashboard utilise une fenêtre explicite de 30 jours et agrège les unités séparément. Les mesures C3-CLOSE instrumentées sur le jeu de performance donnent notamment 83 requêtes dashboard, 24 fiche analytique, 4 évaluation d'alerte et 86 Ma journée ; les temps restent dépendants de l'environnement MariaDB. + ## D-009 — Rattachement explicite des compteurs **CONTEXTE** : les compteurs historiques étaient obligatoirement rattachés à `Equipment`, alors que l'exploitation nécessite aussi des compteurs de bâtiment, zone, local et logement. diff --git a/docs/development/ROADMAP_020_DEV3.md b/docs/development/ROADMAP_020_DEV3.md index 9965cb2..c2a4213 100644 --- a/docs/development/ROADMAP_020_DEV3.md +++ b/docs/development/ROADMAP_020_DEV3.md @@ -53,7 +53,7 @@ Alban, watchdogs, ENT, Outlook, Pronote, Yeastar, IA, secrets, données TEST_UI_ - [x] C1 : socle Meter/MeterReading, rattachements patrimoine, hiérarchie et relevés audités ; - [x] C2 : échéances périodiques, Ma journée et tournées de relevés ; -- [ ] C3 : consommations, estimations, anomalies, alertes et coûts ; (socle en cours : migration `p1e2f3g4h5i6`) +- [x] C3 : consommations, estimations, anomalies, alertes et coûts ; clôture C3-CLOSE en cours de revue (migrations `p1e2f3g4h5i6` et `q2f3g4h5i6j7`) - [ ] C4 : contrats et quotas photocopieurs ; - [ ] Meter/MeterReading réutilisés ; - [ ] périmètre générique et calendrier scolaire ; @@ -81,13 +81,15 @@ Alban, watchdogs, ENT, Outlook, Pronote, Yeastar, IA, secrets, données TEST_UI_ - [x] unités physiques conservées, sans conversion gaz ni calcul de consommation ; - [x] aucune utilisation de `Equipment.parent_id` pour la hiérarchie des compteurs ; - [x] service des échéances, intégration « Ma journée » et tournées : C2 ; -- [ ] consommation, coefficients gaz, alertes et coûts : C3 ; +- [x] consommation, coefficients gaz, alertes et coûts : C3 ; - [ ] contrats et quotas photocopieurs : C4. ### C3-COMPLETE — finalisation analytique La finalisation C3 ajoute les agrégations DAY/WEEK/MONTH, les métriques contextuelles à répartition temporelle approximative, les seuils statistiques et preuves idempotentes, l’exclusion de baseline, la détection zero/low, la facture gaz, les coûts informatifs, les alertes informatives dans « Ma journée » et les graphiques locaux. La version reste `0.2.0-dev.2` jusqu’à validation indépendante. C4 (contrats, quotas et consommables photocopieurs) reste non commencé. +La clôture C3 ajoute le recalcul ciblé après création/correction d'un relevé, la clôture HTTP d'alerte avec permissions, le filtrage RBAC des alertes informatives de « Ma journée », l'idempotence de l'intervention liée et les synthèses dashboard sur les 30 derniers jours. Les synthèses conservent les unités : eau en m³, gaz en m³ et kWh seulement si converti, électricité en kWh. Les performances mesurées sur `TEST_UI_C3_CLOSE_PERF_*` restent dépendantes de MariaDB ; aucune optimisation ne doit masquer le coût historique de C2. + ### D — Graphe technique générique - [ ] décision et migration non destructive ; diff --git a/docs/development/STATUS_020_DEV3.md b/docs/development/STATUS_020_DEV3.md index 3b31193..970cd5a 100644 --- a/docs/development/STATUS_020_DEV3.md +++ b/docs/development/STATUS_020_DEV3.md @@ -1,12 +1,12 @@ CURRENT VERSION: 0.2.0-dev.2 -CURRENT CHECKPOINT: C3-COMPLETE — validation finale -CURRENT COMMIT: finalisation C3-COMPLETE +CURRENT CHECKPOINT: C3-CLOSE — clôture +CURRENT COMMIT: b20c5a1 — fix(meters): close checkpoint C3 analytics workflows CURRENT MIGRATION: q2f3g4h5i6j7 (down_revision p1e2f3g4h5i6) DOCKER VERSION: gmao-college:0.2.0-dev.2 (reconstruite, healthy, MariaDB connectée) LAST FULL TEST: 199 passed, 1 failed, 1 error ; les deux anomalies historiques restent visibles -LAST TARGETED TEST: 31 passed (C1/C2/C3, performance dashboard) -BLOCKERS: validation responsive visuelle non exécutée ; aucun défaut fonctionnel B restant -NEXT ACTION: terminer pytest C3-COMPLETE, appliquer q2f3g4h5i6j7, puis revue indépendante ; ne pas commencer C4 +LAST TARGETED TEST: 34 passed (C1/C2/C3) ; mesures C3-CLOSE instrumentées +BLOCKERS: validation responsive visuelle et base vide non exécutées ; anomalies pytest historiques conservées +NEXT ACTION: vérifier Docker, pousser b20c5a1 et effectuer la revue indépendante finale ; ne pas commencer C4 ## C3 — socle analytique @@ -21,8 +21,11 @@ NEXT ACTION: terminer pytest C3-COMPLETE, appliquer q2f3g4h5i6j7, puis revue ind - [x] preuves idempotentes et exclusions baseline pour fuite/erreur de relevé ; - [x] conversion gaz issue de facture et règle eau m³ sans conversion kWh ; - [x] alertes informatives dans Ma journée et graphiques locaux responsives ; -- [x] migration `q2f3g4h5i6j7` appliquée et pytest complet : 199 passed, 1 failed, 1 error ; -- [x] mesure dashboard C3 : 1,0400 s / 80 requêtes sur jeu `TEST_UI_C3_PERF_*` ; +- [x] recalcul ciblé automatique après nouveau relevé et correction auditée ; preuves obsolètes neutralisées sans effacer l'historique clôturé ; +- [x] clôture HTTP RBAC, visibilité filtrée dans Ma journée et création d'intervention idempotente ; +- [x] dashboard 30 jours avec données insuffisantes et synthèses séparées eau/gaz/électricité ; +- [x] migration `q2f3g4h5i6j7` appliquée ; +- [x] mesures C3-CLOSE sur `TEST_UI_C3_PERF_*` : dashboard 83 requêtes, fiche 24, évaluation 4, Ma journée 86 ; temps variables selon MariaDB ; - [ ] validation Playwright/base vide non effectuée ; - [ ] C4 non commencé. @@ -37,7 +40,7 @@ NEXT ACTION: terminer pytest C3-COMPLETE, appliquer q2f3g4h5i6j7, puis revue ind - [ ] validation sur base vide non effectuée ; - [ ] validation Playwright authentifiée desktop/tablette/mobile non effectuée ; - [ ] mesure de référence avant C2-FIX : `Ma journée` 199 requêtes / 4,8439 s ; tournée 88 requêtes / 0,6140 s ; -- [ ] C3 et C4 non commencés. +- [x] C3 terminé fonctionnellement sous réserve de revue indépendante ; [ ] C4 non commencé. ## C2-FIX — fiabilisation