docs: deux natures d'heure murale — une règle de stockage, pas d'affichage

État vérifié avant d'écrire : +etm53 sur la box, aucune clé de fuseau dans
`GetLoadConfig`, rien à câbler.

La distinction du moteur change ce qu'il faut PERSISTER, pas seulement afficher.
Le fuseau est une propriété du champ :

- une échéance client suit la maison — « 07:00 » nu est le bon stockage, et le
  réinterpréter dans le nouveau fuseau est le comportement juste : l'habitude
  suit le client ;
- une plage d'heures creuses est définie par le fournisseur — la réinterpréter
  parce que la box a bougé est un défaut silencieux, et rien dans la donnée ne
  permet de s'en apercevoir. Elle doit donc porter son fuseau de référence.

Et une demande : ne pas nous laisser coder `Europe/Paris` en dur. Un fournisseur
allemand définit ses plages en `Europe/Berlin` ; l'app choisirait une horloge à
la place de quelqu'un — le défaut d'aujourd'hui reproduit un cran plus haut.

L'avertissement de saisie compare deux choses différentes selon le champ :
installation vs appareil pour l'échéance, fournisseur vs installation pour la
plage tarifaire. Seul le second peut faire acheter au mauvais moment, et c'est
aussi le seul qu'un installateur ne peut pas deviner.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GKM8FDNHZWogAsjjfB8pSw
This commit is contained in:
Patrick Schurig 2026-09-04 16:34:29 +02:00
parent fdbabeb98a
commit 0524e5f7cd

View File

@ -2,6 +2,55 @@
---
## 2026-09-04 (soir) — deux natures d'heure murale : c'est une règle de STOCKAGE, pas d'affichage
La décision « publier le fuseau, ni imposer ni déclarer forfait » est prise, et le `Changed` avec —
état vérifié : `+etm53` sur la box, aucune clé de fuseau dans `GetLoadConfig` pour l'instant, donc
rien à câbler.
Votre distinction va plus loin que ce qu'elle annonce, et je crois qu'elle **change ce qu'il faut
persister**, pas seulement ce qu'il faut afficher.
### Le fuseau est une propriété du CHAMP, pas de l'installation
| champ | d'où vient son fuseau | `"HH:MM"` nu suffit-il ? |
|---|---|---|
| **échéance client** (« avant 7 h ») | l'installation — c'est une **habitude**, elle suit la maison | **oui** : si la box change de fuseau, l'habitude doit suivre |
| **plage d'heures creuses** | le **fournisseur**, `Europe/Paris` | **non** — et c'est là que ça achète au mauvais moment |
Pour l'échéance, réinterpréter « 07:00 » dans le nouveau fuseau est **le comportement juste** : le
client veut son eau chaude avant de se lever, où que vive sa box. Pour la plage tarifaire, la même
réinterprétation est un **défaut silencieux** : la fenêtre est définie ailleurs, elle ne bouge pas
parce que la box a bougé, et rien dans la donnée ne permet de s'en apercevoir.
**Donc une plage tarifaire ne peut pas être stockée en `"HH:MM"` nu.** Elle doit porter son fuseau
de référence — sans quoi le piège d'aujourd'hui revient, à l'identique, sur un champ où il coûte de
l'argent au lieu d'une phrase d'écran.
### Et surtout : ne nous laissez pas coder `Europe/Paris` en dur
Ce serait reproduire le défaut **d'un cran plus haut**. Un fournisseur allemand définit ses plages
en `Europe/Berlin` ; l'app choisirait alors une horloge à la place de quelqu'un, exactement ce que
la décision d'aujourd'hui refuse. **Publiez le fuseau de référence avec la configuration
tarifaire**, comme vous publiez celui de l'installation avec la sienne. Nous ne connaîtrons jamais
le bon par déduction.
### L'avertissement à la saisie compare deux choses différentes selon le champ
Même forme, opérandes différents — et il faut le dire, sinon quelqu'un implémentera une seule
comparaison pour les deux :
- **échéance** : fuseau de l'**installation** ≠ fuseau de l'**appareil** → « vous tapez 07:00 sur
une horloge qui n'est pas celle de la maison » ;
- **plage tarifaire** : fuseau du **fournisseur** ≠ fuseau de l'**installation** → « cette plage
commence à 23:00 chez votre fournisseur, soit 00:00 chez vous ».
Le second est le seul qui puisse faire acheter au mauvais moment, et c'est aussi le seul qu'un
installateur ne peut pas deviner. Avertir **à la saisie**, jamais au résultat : au résultat,
l'heure est passée.
---
## 2026-09-04 (suite) — la baisse, mesurée en lecture seule, et le fuseau qui la datait mal
Banc laissé tel quel — l'obligation est la vôtre, je n'ai rien écrit.