[Bloquant v1.0] Pas de déduplication de compte (async_set_unique_id) + store d'énergie global partagé entre entrées #79
Labels
No labels
v1.0 · bloquant
v1.0 · majeur
v1.0 · mineur
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
mat/homeassistant-comwatt#79
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problème
Deux défauts complémentaires :
config_flow.py) : aucun appel àasync_set_unique_id/_abort_if_unique_id_configured. Le même compte Comwatt peut être configuré N fois — la cléalready_configureddéclarée dansstrings.jsonettranslations/en.jsonest du code mort.coordinator.py:28) :_STORE_KEY = "comwatt.energy_state"est global au domaine, pas clé parentry_id. Deux entrées (doublon du même compte ou 2 comptes Comwatt distincts) lisent/écrivent le même store ; chaque sauvegarde reconstruit tout le dict et écrase l'état d'énergie de l'autre entrée.Risque
Corruption silencieuse de compteurs
total_increasing(dernier écrivain gagne), entités dupliquées/rejetées, reauth croisés entre les entrées.Recommandation (décision produit à trancher avant v1.0)
await self.async_set_unique_id(user_input["username"].lower())+self._abort_if_unique_id_configured()dansasync_step_user, et clé de store parentry.entry_id."single_config_entry": truedans le manifest + quand même le unique_id.Dans tous les cas, ajouter des tests : double soumission du même username → abort
already_configured; deux entrées simultanées → états d'énergie isolés.Constaté lors de la review de code pré-v1.0 (v0.8.1).