add adresse IP dans AGENTS.md
This commit is contained in:
parent
08039a3542
commit
7d3fc6e5ea
48
AGENTS.md
48
AGENTS.md
@ -131,6 +131,32 @@ avant validation du design de la phase.
|
||||
|
||||
## DÉCISIONS DE DESIGN (écarts et justifications)
|
||||
|
||||
### 3b révisé — délégation EV à l'amont (beta assumée)
|
||||
|
||||
**Décision Patrick** : hybride étagé pour la beta.
|
||||
|
||||
**En beta** : les décisions EV restent dans les méthodes amont
|
||||
`planSurplusCharging` / `planSpotMarketCharging` (`SmartChargingManager`), inchangées.
|
||||
`RuleBasedScheduler::getPlan()` les appelle en **proxy** et reformate leurs sorties
|
||||
(`ChargingActions`) en `LoadAction` pour le log `[Arbitre]`.
|
||||
`EvAdapter::applyAction()` est **inactif** jusqu'à 3g — mais `descriptor()` et
|
||||
`telemetry()` sont utilisés dès maintenant pour le `SurplusContext`.
|
||||
|
||||
**Pipeline ETM réel** (waterfall budget Surplus/Grid, `applyAction`) arrive en **3c**
|
||||
pour les charges non-EV (ECS, SG-Ready), alimenté par le surplus *restant* après
|
||||
déduction de l'`addedPower` des consignes EV du cycle courant (pas encore visible
|
||||
au compteur).
|
||||
|
||||
**Limitations beta assumées** :
|
||||
- EV toujours prioritaire ; waterfall appliqué uniquement aux charges non-EV.
|
||||
- Le classement drag-and-drop (priorités) ne portera que sur les charges non-EV.
|
||||
|
||||
**Étape 3g (post-beta)** : transplantation réelle de la logique EV dans
|
||||
`RuleBasedScheduler` → priorités libres entre toutes les charges (EV, ECS, SG-Ready,
|
||||
batterie).
|
||||
|
||||
---
|
||||
|
||||
### 3b-iii — EnergyArbitrator hérite de SmartChargingManager
|
||||
|
||||
**Design validé en session** : "nouvelle classe dans etm/, n'étend pas SmartChargingManager".
|
||||
@ -162,6 +188,28 @@ publique propre, l'héritage pourrait être remplacé par composition.
|
||||
|
||||
---
|
||||
|
||||
## MODÈLE DE SÉCURITÉ (décision Patrick — immuable)
|
||||
|
||||
Cinq couches indépendantes. Chacune est conçue pour qu'une défaillance des couches
|
||||
supérieures n'affecte pas les couches inférieures. Voir `docs/SAFETY.md` pour le détail.
|
||||
|
||||
| Couche | Qui | Quoi |
|
||||
|--------|-----|------|
|
||||
| **L0** | Disjoncteur / Linky matériel | Coupure physique — hors logiciel |
|
||||
| **L1** | Failsafe natif des bornes | Config installateur, checklist ETM |
|
||||
| **L2** | Watchdog fraîcheur compteur (à coder en 3c) | `QTimer` piloté : si `lastMeterUpdate > 90 s` → mode dégradé (EV min/off, ECS off, pas de charge réseau batterie), `decisionReason` explicite, notification nymea. Scénario simulation dédié : "compteur muet → repli". |
|
||||
| **L3** | Watchdog systemd sur nymead | Repo `etm-powersync-deploy`, hors scope ici |
|
||||
| **L4** | Logique signal-driven existante | Boucle `update()` déclenchée par événements |
|
||||
|
||||
**Règles de code** :
|
||||
- Le watchdog L2 est piloté par **`QTimer`** (pas par signal `meterChanged`) pour
|
||||
rester actif même si le signal ne fire plus.
|
||||
- Mode dégradé = consignes **de repli** sur toutes les charges pilotées (pas d'arrêt
|
||||
brutal) + `decisionReason` non vide + notification `EnergyManagerChanged`.
|
||||
- `verifyOverloadProtection()` (L4) reste intouchable et appelée avant toute planification.
|
||||
|
||||
---
|
||||
|
||||
## DÉFINITION DE FAIT (par étape de phase 3)
|
||||
|
||||
1. Compile amd64 et cross arm64.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user