DayPlan.demo() fabriquait vingt-quatre heures de flux : une gaussienne solaire et des coefficients écrits en dur — solToEcs = excédent × 0,35, solToVe × 0,3, solToBatt × 0,15, battToHouse = déficit × 0,55 — sous le titre « Plan de la journée · aujourd'hui », sans la moindre mention. Y compris une batterie alimentant la maison à partir de 17 h, sur une installation qui n'a pas de batterie. Cinquième après les deux MPPT, les 38 % de PAC, les 82 % de part solaire et le SOC à 62 %. Même réponse à chaque fois : il n'y a rien derrière. Un plan suppose de savoir ce qui VA arriver — il demande une prévision PV et une source tarifaire, dont aucune n'existe. La carte reviendra avec elles. Le code de fabrication part AVEC la carte : DayPlan, HourlyFlow, WeatherPoint, WeatherKind et le painter sont supprimés, pas mis de côté. Un générateur de données plausibles laissé dans le dépôt se rebranche — c'est exactement ce qui s'est passé quatre fois déjà. 339 tests. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GKM8FDNHZWogAsjjfB8pSw
70 lines
2.2 KiB
Dart
70 lines
2.2 KiB
Dart
/// Modèles du tableau de bord.
|
||
///
|
||
/// 🔴 `HourlyFlow`, `WeatherPoint` et `DayPlan` ont été **supprimés** le 2026-09-08 avec la
|
||
/// carte « Plan de la journée » qu'ils alimentaient. `DayPlan.demo()` fabriquait vingt-quatre
|
||
/// heures de flux à partir d'une gaussienne et de coefficients écrits en dur, présentées sans
|
||
/// mention comme la journée en cours.
|
||
///
|
||
/// Le code part **avec** la carte, délibérément : un générateur de données plausibles laissé
|
||
/// dans le dépôt se rebranche — c'est ce qui s'était passé pour les deux MPPT, les 38 % de
|
||
/// PAC, les 82 % de part solaire et le SOC à 62 %. Un plan reviendra quand il y aura une
|
||
/// prévision PV et une source tarifaire ; il se réécrira sur des données, pas sur celles-ci.
|
||
library;
|
||
|
||
|
||
class HeosAction {
|
||
final String iconKey;
|
||
final String title;
|
||
final String why;
|
||
final double powerKw;
|
||
|
||
const HeosAction({
|
||
required this.iconKey,
|
||
required this.title,
|
||
required this.why,
|
||
required this.powerKw,
|
||
});
|
||
}
|
||
|
||
class HeosDecision {
|
||
final String summary;
|
||
final String highlight;
|
||
final List<HeosAction> actions;
|
||
final DateTime updatedAt;
|
||
|
||
const HeosDecision({
|
||
required this.summary,
|
||
required this.highlight,
|
||
required this.actions,
|
||
required this.updatedAt,
|
||
});
|
||
|
||
static HeosDecision demo() => HeosDecision(
|
||
summary:
|
||
'Le surplus solaire part dans l\'eau chaude et la voiture '
|
||
'plutôt que d\'être revendu à bas prix.',
|
||
highlight: 'plutôt que d\'être revendu à bas prix',
|
||
actions: [
|
||
const HeosAction(
|
||
iconKey: 'water',
|
||
title: 'Chauffe-eau',
|
||
why: 'Surplus PV disponible · coût réseau ce soir 0,22 €/kWh',
|
||
powerKw: 2.0,
|
||
),
|
||
const HeosAction(
|
||
iconKey: 'ev',
|
||
title: 'Voiture — mode Éco',
|
||
why: 'Charge à partir du surplus · objectif 80 % pour 18h',
|
||
powerKw: 3.6,
|
||
),
|
||
const HeosAction(
|
||
iconKey: 'battery',
|
||
title: 'Batterie en charge',
|
||
why: 'Stockage pour couvrir le pic 18h–21h',
|
||
powerKw: 0.8,
|
||
),
|
||
],
|
||
updatedAt: DateTime.now(),
|
||
);
|
||
}
|