Auto NBA : règle en pause sans enregistrement, une règle par utilisateur

- Une règle désactivée ne programme plus rien : la réconciliation relit
  l'état en base et, en pause, supprime les enregistrements encore
  planifiés (un enregistrement en cours n'est pas coupé).
- Index unique (user_id, kind) : deux activations concurrentes ne créent
  plus deux règles NBA ; le conflit répond 409.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
MichaelandClaude Opus 5.5 committed 2026-10-18 12:35:05 +02:00
1 parent f291b66087
commit 5a15311f98
3 files changed
+123

No files matched your search

+5
View File
@@ -181,6 +181,11 @@ async fn create(state: &SharedState, req: &Req, user: &User) -> Resp {
}
let rule = match state.db.create_auto_rule(&rule) {
Ok(r) => r,
// Activation concurrente (deux onglets, relance) : l'index unique
// (user_id, kind) a tranché.
Err(e) if crate::db::is_unique_violation(&e) => {
return json(409, &json!({"error": "La règle NBA existe déjà"}));
}
Err(e) => return json(500, &json!({"error": format!("Création impossible : {e}")})),
};
// Calendrier et première réconciliation en tâche de fond (≈ 20 requêtes).