docs(ideai): met à jour les tickets #65/#67 après le partage client, ajoute le ticket #71

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-19 21:54:52 +02:00
parent 010e055404
commit 334d40cd1d
8 changed files with 56 additions and 19 deletions

View File

@ -1,6 +1,9 @@
---
issueRef: "#65"
version: 1
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
updatedAt: 1784488343589
version: 3
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784490128397
---
SyncUseCases.synchronize() implémenté avec push/pull LWW réel, changement silencieux d'état (success/failure) sans jamais laisser remonter d'exception, réutilise la table change_log déjà présente (écrite mais jamais lue jusqu'ici). 119/119 tests verts, flutter analyze clean, APK debug buildé.
Point de nettoyage identifié, non bloquant : `AppDependencies` expose toujours l'ancien port `SyncGateway`/`NoOpSyncGateway` (vestige du ticket #12) EN PLUS du nouveau `SyncUseCases` réel — les deux coexistent, rien n'appelle plus `syncGateway.synchronize()` de façon utile puisque #68 branchera l'UI sur `syncUseCases.synchronize()` directement. À évaluer en QA (#70) si `SyncGateway`/`NoOpSyncGateway` doivent être supprimés pour éviter la confusion entre deux abstractions de sync.

View File

@ -2,15 +2,15 @@
id: "f0c554b7-e388-49b3-aa74-0a47886961ad"
number: 65
title: "[DevBackend] Sync client incrémentale LWW vers API serveur"
status: "open"
status: "qa"
priority: "medium"
sprint: null
links: [{"target":"#63","kind":"relatesTo"},{"target":"#64","kind":"dependsOn"}]
agentRefs: [{"agentId":"10ee045b-1c41-479e-ba03-dceed9edd495","role":"assigned"}]
createdBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784488343589
updatedAt: 1784488343589
version: 1
updatedAt: 1784490128397
version: 3
---
Remplacer le `NoOpSyncGateway` par une orchestration réelle offline-first. Mapper Exercise, Program, WorkoutTemplate, WorkoutHistory et MediaAsset metadata vers `resourceType/clientId/schemaVersion/clientUpdatedAt/deletedAt/payload`. Utiliser `change_log`, `syncState`, `updatedAt` et `localRevision` pour pousser les mutations, stocker localement `serverCursor`, appliquer `/sync/pull` LWW sans résolution interactive, puis marquer les ressources acceptées comme synced. Les erreurs réseau restent silencieuses et déclenchent retry différé.