docs(development): document automatic statistical alerts

This commit is contained in:
root 2026-08-24 12:51:11 +00:00
parent cac9dbc632
commit 95a3ed4a21
3 changed files with 13 additions and 8 deletions

View file

@ -118,6 +118,10 @@ Les périodicités DAY/WEEK/MONTH réutilisent le même agrégateur. Les métriq
Les preuves dalerte 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 dune nouvelle entité, et reste remplaçable par une alimentation GTB future. Les preuves dalerte 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 dune nouvelle entité, et reste remplaçable par une alimentation GTB future.
## D-016 — Type de règle statistique C3
`MeterAlertRule.rule_type` distingue explicitement `MANUAL_THRESHOLD` et `STATISTICAL_ANOMALY`. Les règles historiques et les nouvelles règles sans type explicite restent manuelles par défaut. Le service de relevé appelle l'évaluation manuelle ou la médiane statistique selon ce type, en réutilisant `min_comparable_intervals` et `min_deviation_percent`. Une correction réévalue uniquement les intervalles voisins et conserve l'idempotence des preuves. La colonne est ajoutée par la migration additive `r3f4g5h6i7j8`, sans modifier les migrations C3 déjà appliquées.
## D-015 — Clôture C3 : recalcul ciblé et exposition opérationnelle ## 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. 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.

View file

@ -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] 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 ; - [x] C2 : échéances périodiques, Ma journée et tournées de relevés ;
- [x] C3 : consommations, estimations, anomalies, alertes et coûts ; clôture C3-CLOSE en cours de revue (migrations `p1e2f3g4h5i6` et `q2f3g4h5i6j7`) - [x] C3 : consommations, estimations, anomalies, alertes et coûts ; C3-FINAL en cours de revue (migration additive `r3f4g5h6i7j8`)
- [ ] C4 : contrats et quotas photocopieurs ; - [ ] C4 : contrats et quotas photocopieurs ;
- [ ] Meter/MeterReading réutilisés ; - [ ] Meter/MeterReading réutilisés ;
- [ ] périmètre générique et calendrier scolaire ; - [ ] périmètre générique et calendrier scolaire ;

View file

@ -1,12 +1,12 @@
CURRENT VERSION: 0.2.0-dev.2 CURRENT VERSION: 0.2.0-dev.2
CURRENT CHECKPOINT: C3-CLOSE — clôture CURRENT CHECKPOINT: C3-FINAL — branchement automatique des anomalies
CURRENT COMMIT: 14b8040 — test(meters): isolate intervention idempotence fixture CURRENT COMMIT: cac9dbc — fix(meters): automate statistical anomaly detection
CURRENT MIGRATION: q2f3g4h5i6j7 (down_revision p1e2f3g4h5i6) CURRENT MIGRATION: r3f4g5h6i7j8 (down_revision q2f3g4h5i6j7)
DOCKER VERSION: gmao-college:0.2.0-dev.2 (reconstruite, healthy, MariaDB connectée) 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 FULL TEST: baseline précédente 202 passed, 1 failed, 1 error ; les deux anomalies historiques restent visibles
LAST TARGETED TEST: 34 passed (C1/C2/C3) ; mesures C3-CLOSE instrumentées LAST TARGETED TEST: 39 passed (C1/C2/C3) ; 17 tests C3 incluant les anomalies statistiques automatiques
BLOCKERS: validation responsive visuelle et base vide non exécutées ; anomalies pytest historiques conservées BLOCKERS: validation responsive visuelle et base vide non exécutées ; anomalies pytest historiques conservées
NEXT ACTION: effectuer la revue indépendante finale ; ne pas commencer C4 NEXT ACTION: appliquer r3f4g5h6i7j8 dans Docker, terminer pytest complet puis revue indépendante ; ne pas commencer C4
## C3 — socle analytique ## C3 — socle analytique
@ -22,9 +22,10 @@ NEXT ACTION: effectuer la revue indépendante finale ; ne pas commencer C4
- [x] conversion gaz issue de facture et règle eau m³ sans conversion kWh ; - [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] alertes informatives dans Ma journée et graphiques locaux responsives ;
- [x] recalcul ciblé automatique après nouveau relevé et correction auditée ; preuves obsolètes neutralisées sans effacer l'historique clôturé ; - [x] recalcul ciblé automatique après nouveau relevé et correction auditée ; preuves obsolètes neutralisées sans effacer l'historique clôturé ;
- [x] anomalies statistiques branchées automatiquement avec distinction explicite `MANUAL_THRESHOLD` / `STATISTICAL_ANOMALY` ;
- [x] clôture HTTP RBAC, visibilité filtrée dans Ma journée et création d'intervention idempotente ; - [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] dashboard 30 jours avec données insuffisantes et synthèses séparées eau/gaz/électricité ;
- [x] migration `q2f3g4h5i6j7` appliquée ; - [x] migration `q2f3g4h5i6j7` appliquée ; migration additive `r3f4g5h6i7j8` préparé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 ; - [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 ; - [ ] validation Playwright/base vide non effectuée ;
- [ ] C4 non commencé. - [ ] C4 non commencé.