docs(ideai): met à jour sprints et tickets après le partage de programmes/séances
Ajoute un sprint, clôture le ticket #50, ajoute le cadrage du ticket #54. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
id: "1bb8bdf2-9c35-4f53-9a31-1390a47bec63"
|
||||||
|
order: 2
|
||||||
|
name: "Exercice editor enhancement"
|
||||||
|
status: "planned"
|
||||||
|
createdBy: {"kind":"user"}
|
||||||
|
updatedBy: {"kind":"user"}
|
||||||
|
createdAt: 1784449859008
|
||||||
|
updatedAt: 1784449859008
|
||||||
|
version: 1
|
||||||
|
---
|
||||||
@ -9,6 +9,15 @@
|
|||||||
"status": "planned",
|
"status": "planned",
|
||||||
"updatedAt": 1784329015766,
|
"updatedAt": 1784329015766,
|
||||||
"version": 1
|
"version": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1bb8bdf2-9c35-4f53-9a31-1390a47bec63",
|
||||||
|
"path": "1bb8bdf2-9c35-4f53-9a31-1390a47bec63",
|
||||||
|
"order": 2,
|
||||||
|
"name": "Exercice editor enhancement",
|
||||||
|
"status": "planned",
|
||||||
|
"updatedAt": 1784449859008,
|
||||||
|
"version": 1
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -1,6 +1,7 @@
|
|||||||
---
|
---
|
||||||
issueRef: "#50"
|
issueRef: "#50"
|
||||||
version: 1
|
version: 3
|
||||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||||
updatedAt: 1784412001974
|
updatedAt: 1784449447058
|
||||||
---
|
---
|
||||||
|
Endpoints `POST /sync/push`, `GET /sync/pull`, `POST /sync/exchange` implémentés, protégés par le middleware Bearer. LWW rendu atomique côté SQL (CTE `INSERT ... ON CONFLICT ... WHERE client_updated_at < EXCLUDED.client_updated_at` + fallback pour `ignoredOlder`), relu manuellement et jugé correct. Tests unitaires avec fakes en mémoire verts (15/15), `dart analyze` clean. Non vérifié : aucun test de bout en bout contre un vrai PostgreSQL (pas d'accès Docker dans le sandbox Main). À faire avant mise en prod : une fois #52 livré, tester `push`/`pull`/`exchange` via curl contre le serveur réel + vérifier la concurrence de l'upsert LWW sous charge.
|
||||||
@ -2,15 +2,15 @@
|
|||||||
id: "983aa02b-7577-4fde-b77a-12355df0efdb"
|
id: "983aa02b-7577-4fde-b77a-12355df0efdb"
|
||||||
number: 50
|
number: 50
|
||||||
title: "[Server] API de synchronisation incrémentale LWW"
|
title: "[Server] API de synchronisation incrémentale LWW"
|
||||||
status: "open"
|
status: "qa"
|
||||||
priority: "low"
|
priority: "low"
|
||||||
sprint: null
|
sprint: null
|
||||||
links: [{"target":"#46","kind":"relatesTo"},{"target":"#48","kind":"dependsOn"},{"target":"#49","kind":"dependsOn"}]
|
links: [{"target":"#46","kind":"relatesTo"},{"target":"#48","kind":"dependsOn"},{"target":"#49","kind":"dependsOn"}]
|
||||||
agentRefs: []
|
agentRefs: []
|
||||||
createdBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
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: 1784412001974
|
createdAt: 1784412001974
|
||||||
updatedAt: 1784412001974
|
updatedAt: 1784449447058
|
||||||
version: 1
|
version: 3
|
||||||
---
|
---
|
||||||
Implémenter les ports/use cases et endpoints de sync incrémentale authentifiée. Endpoints : `POST /sync/push`, `GET /sync/pull?since=...`, optionnel `POST /sync/exchange`. Stratégie v1 last-write-wins basée sur `clientUpdatedAt` puis tie-breaker `serverUpdatedAt`/`serverId`. Supporter upsert, soft delete, réponses par item (`accepted`, `ignoredOlder`, `conflictLwwApplied`, `error`) et cursor serveur monotone. Ne pas intégrer le client Flutter dans ce ticket.
|
Implémenter les ports/use cases et endpoints de sync incrémentale authentifiée. Endpoints : `POST /sync/push`, `GET /sync/pull?since=...`, optionnel `POST /sync/exchange`. Stratégie v1 last-write-wins basée sur `clientUpdatedAt` puis tie-breaker `serverUpdatedAt`/`serverId`. Supporter upsert, soft delete, réponses par item (`accepted`, `ignoredOlder`, `conflictLwwApplied`, `error`) et cursor serveur monotone. Ne pas intégrer le client Flutter dans ce ticket.
|
||||||
6
.ideai/tickets/54/carnet.md
Normal file
6
.ideai/tickets/54/carnet.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
issueRef: "#54"
|
||||||
|
version: 2
|
||||||
|
updatedBy: {"kind":"user"}
|
||||||
|
updatedAt: 1784449895057
|
||||||
|
---
|
||||||
15
.ideai/tickets/54/issue.md
Normal file
15
.ideai/tickets/54/issue.md
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
id: "7e6894d5-36ad-413b-9fda-be3ba26db6cb"
|
||||||
|
number: 54
|
||||||
|
title: "Exercice à plusieurs étapes"
|
||||||
|
status: "open"
|
||||||
|
priority: "medium"
|
||||||
|
sprint: "1bb8bdf2-9c35-4f53-9a31-1390a47bec63"
|
||||||
|
links: []
|
||||||
|
agentRefs: []
|
||||||
|
createdBy: {"kind":"user"}
|
||||||
|
updatedBy: {"kind":"user"}
|
||||||
|
createdAt: 1784449895047
|
||||||
|
updatedAt: 1784449895057
|
||||||
|
version: 2
|
||||||
|
---
|
||||||
@ -1,3 +1,3 @@
|
|||||||
{
|
{
|
||||||
"nextNumber": 54
|
"nextNumber": 55
|
||||||
}
|
}
|
||||||
@ -567,11 +567,11 @@
|
|||||||
"issueRef": "#50",
|
"issueRef": "#50",
|
||||||
"path": "50",
|
"path": "50",
|
||||||
"title": "[Server] API de synchronisation incrémentale LWW",
|
"title": "[Server] API de synchronisation incrémentale LWW",
|
||||||
"status": "open",
|
"status": "qa",
|
||||||
"priority": "low",
|
"priority": "low",
|
||||||
"sprint": null,
|
"sprint": null,
|
||||||
"assignedAgentIds": [],
|
"assignedAgentIds": [],
|
||||||
"updatedAt": 1784412001974
|
"updatedAt": 1784449447058
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"issueRef": "#51",
|
"issueRef": "#51",
|
||||||
@ -602,6 +602,16 @@
|
|||||||
"sprint": null,
|
"sprint": null,
|
||||||
"assignedAgentIds": [],
|
"assignedAgentIds": [],
|
||||||
"updatedAt": 1784412015509
|
"updatedAt": 1784412015509
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"issueRef": "#54",
|
||||||
|
"path": "54",
|
||||||
|
"title": "Exercice à plusieurs étapes",
|
||||||
|
"status": "open",
|
||||||
|
"priority": "medium",
|
||||||
|
"sprint": "1bb8bdf2-9c35-4f53-9a31-1390a47bec63",
|
||||||
|
"assignedAgentIds": [],
|
||||||
|
"updatedAt": 1784449895057
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user