Détection de conflits — événements #19

Open
opened 2026-09-22 21:25:28 +01:00 by claudeagent · 0 comments
Collaborator

Description

Deux personnes qui modifient le même événement de l'agenda familial : le dernier qui enregistre écrase le premier, sans que personne ne le sache. Ici l'autre auteur n'est pas forcément dans l'application — l'agenda est un agenda Nextcloud, modifiable depuis l'application Agenda ou un téléphone synchronisé en CalDAV.

Ce qui existe

  • editEvent relit déjà l'objet CalDAV avant de l'écrire (D15, pour garder les exceptions d'une série), puis le réécrit par un PUT sans condition.
  • CalDAV porte nativement un ETag par objet : un PUT avec If-Match est refusé en 412 si l'objet a changé. Le mécanisme existe côté Nextcloud ; il manque de faire voyager l'ETag jusqu'au formulaire et de le renvoyer à l'écriture.
  • #5 fixe ce que voit l'utilisateur d'un refus (formulaire gardé, bandeau, second enregistrement qui écrase) : voir la conception de #5.

Ce qu'il faut trancher

  • La granularité : l'ETag couvre l'objet entier, série et exceptions comprises — modifier une occurrence entre en conflit avec toute modification de la série.
  • Dire ce qui a changé : un ETag dit « ça a bougé », pas quoi ; le comparer suppose de relire et d'analyser l'objet.
  • La lecture de la semaine (REPORT) doit ramener getetag pour chaque objet.
  • Les agendas projetés (tâches, repas) restent en lecture seule (D31) et hors du sujet.

Dépend de #5.

Plan d'action

  • TODO

Recette

  • Revue technique personnelle
  • Mise à jour du wiki (décision, schéma, interface, périmètre)
  • Revue fonctionnelle

Plan de MEP

  • TODO Planification de la livraison
## Description Deux personnes qui modifient le même événement de l'agenda familial : le dernier qui enregistre écrase le premier, sans que personne ne le sache. Ici l'autre auteur n'est pas forcément dans l'application — l'agenda est un agenda Nextcloud, modifiable depuis l'application Agenda ou un téléphone synchronisé en CalDAV. **Ce qui existe** - `editEvent` relit déjà l'objet CalDAV avant de l'écrire (D15, pour garder les exceptions d'une série), puis le réécrit par un `PUT` sans condition. - CalDAV porte nativement un ETag par objet : un `PUT` avec `If-Match` est refusé en 412 si l'objet a changé. Le mécanisme existe côté Nextcloud ; il manque de faire voyager l'ETag jusqu'au formulaire et de le renvoyer à l'écriture. - #5 fixe ce que voit l'utilisateur d'un refus (formulaire gardé, bandeau, second enregistrement qui écrase) : voir la [conception de #5](https://git.lozach.eu/maxime/OrganisateurFamilial/issues/5#issuecomment-152). **Ce qu'il faut trancher** - **La granularité** : l'ETag couvre l'objet entier, série et exceptions comprises — modifier une occurrence entre en conflit avec toute modification de la série. - **Dire ce qui a changé** : un ETag dit « ça a bougé », pas quoi ; le comparer suppose de relire et d'analyser l'objet. - **La lecture de la semaine** (`REPORT`) doit ramener `getetag` pour chaque objet. - Les agendas projetés (tâches, repas) restent en lecture seule (D31) et hors du sujet. Dépend de #5. ## Plan d'action - [ ] TODO ## Recette - [ ] Revue technique personnelle - [ ] Mise à jour du wiki (décision, schéma, interface, périmètre) - [ ] Revue fonctionnelle ## Plan de MEP - [ ] TODO Planification de la livraison
Sign in to join this conversation.
No description provided.