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)
|
## 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
|
### 3b-iii — EnergyArbitrator hérite de SmartChargingManager
|
||||||
|
|
||||||
**Design validé en session** : "nouvelle classe dans etm/, n'étend pas 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)
|
## DÉFINITION DE FAIT (par étape de phase 3)
|
||||||
|
|
||||||
1. Compile amd64 et cross arm64.
|
1. Compile amd64 et cross arm64.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user