diff --git a/.ideai/tickets/51/carnet.md b/.ideai/tickets/51/carnet.md index 30d042f..25dbe94 100644 --- a/.ideai/tickets/51/carnet.md +++ b/.ideai/tickets/51/carnet.md @@ -1,6 +1,7 @@ --- issueRef: "#51" -version: 1 -updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"} -updatedAt: 1784412007538 +version: 3 +updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"} +updatedAt: 1784450081385 --- +Endpoints `POST /shares`, `GET /shares/inbox`, `POST /shares/{id}/accept|decline|revoke` implémentés, protégés par le middleware Bearer. Acceptation crée une copie `synced_resources` (nouveaux IDs) pour le destinataire sans jamais modifier la ressource source de l'émetteur — relu et confirmé correct. Gestion des conflits : 404 si partage/destinataire introuvable ou révocation par non-émetteur, 409 si acceptation d'un partage révoqué ou déjà répondu. Emails destinataires inconnus retournés dans `unresolvedEmails` sans échouer toute la requête. Tests unitaires avec fakes en mémoire verts (24/24 sur toute la suite serveur), `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). \ No newline at end of file diff --git a/.ideai/tickets/51/issue.md b/.ideai/tickets/51/issue.md index 39c6d95..ab56ea8 100644 --- a/.ideai/tickets/51/issue.md +++ b/.ideai/tickets/51/issue.md @@ -2,15 +2,15 @@ id: "850ce975-99c3-4ee4-8d39-759ecc55139c" number: 51 title: "[Server] Partage ciblé de programmes et séances entre comptes" -status: "open" +status: "qa" priority: "low" sprint: null links: [{"target":"#46","kind":"relatesTo"},{"target":"#48","kind":"dependsOn"},{"target":"#49","kind":"dependsOn"}] agentRefs: [] 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: 1784412007538 -updatedAt: 1784412007538 -version: 1 +updatedAt: 1784450081385 +version: 3 --- Implémenter le domaine de partage ciblé : `Share`, destinataires par compte utilisateur, statut `pending|accepted|declined|revoked`, payload snapshot autonome de Program ou WorkoutTemplate. Endpoints : `POST /shares`, `GET /shares/inbox`, `POST /shares/{id}/accept`, `POST /shares/{id}/decline`, `POST /shares/{id}/revoke`. À l'acceptation, créer une copie importable dans l'espace du destinataire, sans lien public ouvert. \ No newline at end of file diff --git a/.ideai/tickets/index.json b/.ideai/tickets/index.json index e4fec3a..9275f30 100644 --- a/.ideai/tickets/index.json +++ b/.ideai/tickets/index.json @@ -577,11 +577,11 @@ "issueRef": "#51", "path": "51", "title": "[Server] Partage ciblé de programmes et séances entre comptes", - "status": "open", + "status": "qa", "priority": "low", "sprint": null, "assignedAgentIds": [], - "updatedAt": 1784412007538 + "updatedAt": 1784450081385 }, { "issueRef": "#52",