docs(todo): le bilan journalier est fait, avec les deux bugs d'unité qu'il a révélés

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016vrTVifar2GN5rtUh89Wkq
This commit is contained in:
Patrick Schurig 2026-08-28 07:58:50 +02:00
parent 23a84fec43
commit 0311766b2b

25
TODO.md
View File

@ -2,20 +2,17 @@
## Ouvert au 2026-08-27
- [ ] 🔴 **Bilan JOURNALIER — il n'en existe aucun dans l'app.** Les quatre tuiles du
tableau de bord (`features/dashboard/widgets/kpi_row.dart`) mêlent deux natures de
grandeur, et aucune n'est journalière : *Autoconsommation* et *Autonomie* sont des
**pourcentages instantanés**, *Vers réseau* et *Depuis réseau* des **kWh cumulés depuis
l'origine** — `totalReturn` / `totalAcquisition` ne sont pas remis à zéro chaque nuit.
Le libellé disait « aujourd'hui » ; il porte « · cumulé » depuis, mais **le bilan du jour
reste à écrire**.
- il passe par `Energy.GetPowerBalanceLogs` avec des bornes à **minuit local**, jamais par
les totaux de `GetPowerBalance` ;
- piège vérifié : les entrées de log portent `production` / `consumption` / `acquisition`
/ `storage`, **sans** le préfixe `currentPower` de `GetPowerBalance`. Réutiliser les
mauvaises clés ne produit **aucune erreur** — tout tombe sur `0` ;
- `.75` publie des cumulés corrompus (9,1e+33 kWh exportés) : `EnergyData.isPlausibleKwh`
existe pour ça, ne pas le contourner.
- [x] ~~🔴 **Bilan JOURNALIER**~~ — **fait le 2026-08-28.** Les quatre tuiles montrent la
journée, sous un en-tête « Aujourd'hui » qui le dit une fois. Méthode : différence des
compteurs entre minuit local et maintenant, jamais l'intégration des puissances —
mesurée contre estimée, 0,8 % d'écart sur `.75`. Le contrôle qui la valide est
l'identité *production + soutiré == consommation + injecté*, vérifiée exactement sur le
banc.
- **Deux bugs d'unité trouvés en chemin** : les compteurs `total*` sont en **kWh** et le
modèle les nommait `Wh`. L'écran Énergie les divisait donc encore par mille — une
journée de 78 kWh s'y lisait « 78 Wh » — et la simulation accumulait des Wh.
- Vérifié sur appareil contre `.75` en lecture seule. Le passage a trouvé quatre libellés
tronqués qu'aucun des 138 tests unitaires ne pouvait voir.
- [ ] ❓ **« ECS d'abord, batterie ensuite » — à porter au moteur.** Demandé le 2026-08-27,
et **pas exprimable aujourd'hui**. `batteryLevelConsideration` fait l'inverse : il annule