docs(ideai): mémoire, sprint et tickets du chantier exercices à étapes
Ajoute les notes mémoire d'architecture et UX pour les exercices à étapes, un nouveau sprint, clôture le ticket #56 et reflète les tickets #46/#53, ajoute le cadrage des tickets #57 à #63. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
---
|
||||
issueRef: "#46"
|
||||
version: 4
|
||||
version: 6
|
||||
updatedBy: {"kind":"user"}
|
||||
updatedAt: 1784380502263
|
||||
updatedAt: 1784482343900
|
||||
---
|
||||
|
||||
@ -1,16 +1,16 @@
|
||||
---
|
||||
id: "dda499ac-7197-4321-bd2b-a303510b1bbe"
|
||||
number: 46
|
||||
title: "Créer un application headless serveur pour l'application"
|
||||
title: "Créer un serveur headless pour l'application"
|
||||
status: "open"
|
||||
priority: "low"
|
||||
sprint: null
|
||||
sprint: "4237adfd-91eb-45ff-9f32-6ce1daa39822"
|
||||
links: []
|
||||
agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}]
|
||||
createdBy: {"kind":"user"}
|
||||
updatedBy: {"kind":"user"}
|
||||
createdAt: 1784379695135
|
||||
updatedAt: 1784380502263
|
||||
version: 4
|
||||
updatedAt: 1784482343900
|
||||
version: 6
|
||||
---
|
||||
J'aimerais que l'application puisse proposer des services online aussi. Un peu a la manière de Heavy avec la possibilité de partager ses séances etc. A la manière de Heavy, j'aimerais que l'on puisse se créer un compte et s'y connecter, synchroniser son historique de seances, ses séances, ses programmes ainsi que ses exercices. Ce ticket est la partie serveur/web API, il faudra que ça soit un serveur headless linux qui tourne dans un container docker. Il faudra que je puisse y acceder via un reverse proxy qui tourne sur une machine différente de celle du serveur headless mais dans le même réseau local. J'y accederais via une adresse https. le container se lancera ensuite à partir d'un docker-compose.yaml dans lequel tu laissera les champs libre de tout ce qui sera necessaire de configurer (adresse ip du reverse proxy, de la machine sur laquelle tourne le docker si necessaire etc.). Pour la création du serveur, créé un subdirectory spécialement pour cette partie serveur. Dans le dossier serveur à lma racine, je veux un script pour pouvoir push le container sur le gitea qui est déjà lié au projet, je veux aussi le docker-compose.yaml demandé.
|
||||
@ -1,6 +1,9 @@
|
||||
---
|
||||
issueRef: "#53"
|
||||
version: 1
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedAt: 1784412015509
|
||||
version: 3
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1784469423570
|
||||
---
|
||||
Contrat `server/openapi.yaml` (OpenAPI 3.0.3) documentant les 11 endpoints réels (health, auth register/login/logout, sync push/pull/exchange, shares create/inbox/accept/decline/revoke) avec sécurité bearerAuth et schémas de requêtes/réponses fidèles au code. Trou de couverture comblé : tests API HTTP directs pour les endpoints auth (register/login/logout), qui n'étaient testés qu'au niveau use case/middleware. `server/docs/integration-checklist.md` ajouté pour lister tout ce qui reste à vérifier manuellement une fois un vrai Docker/PostgreSQL disponible. Suite complète serveur verte (29/29), `dart analyze` clean.
|
||||
|
||||
Non vérifié, pour toute la suite du chantier serveur #47-#53 (limite d'environnement du sandbox Main, pas d'accès Docker daemon) : aucun `docker build`/`docker compose up` réel, aucun test contre un vrai PostgreSQL, aucun appel HTTP de bout en bout sur le serveur réellement démarré avec DB. Tout le reste (logique métier, SQL relu manuellement, syntaxe Docker Compose validée via `docker compose config`, 29 tests avec fakes en mémoire) est vérifié. Voir `server/docs/integration-checklist.md` pour la checklist complète à dérouler quand Docker sera disponible.
|
||||
@ -2,15 +2,15 @@
|
||||
id: "d5fce252-f3c4-499f-ad0a-d3c81ea13305"
|
||||
number: 53
|
||||
title: "[Server] Tests API, contrats OpenAPI et vérification d'intégration"
|
||||
status: "open"
|
||||
status: "qa"
|
||||
priority: "low"
|
||||
sprint: null
|
||||
links: [{"target":"#46","kind":"relatesTo"},{"target":"#50","kind":"dependsOn"},{"target":"#51","kind":"dependsOn"},{"target":"#52","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: 1784412015509
|
||||
updatedAt: 1784412015509
|
||||
version: 1
|
||||
updatedAt: 1784469423570
|
||||
version: 3
|
||||
---
|
||||
Ajouter la couverture de validation serveur : tests unitaires domain/application, tests repository PostgreSQL, tests API auth/sync/share, fixtures de payload GameTime, vérification Docker Compose locale. Produire un contrat OpenAPI ou équivalent documentant auth, sync et partage pour les futurs tickets d'intégration Flutter.
|
||||
6
.ideai/tickets/56/carnet.md
Normal file
6
.ideai/tickets/56/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#56"
|
||||
version: 1
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedAt: 1784481516635
|
||||
---
|
||||
16
.ideai/tickets/56/issue.md
Normal file
16
.ideai/tickets/56/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "c902b71c-8033-42dc-a52a-eb6822a1e863"
|
||||
number: 56
|
||||
title: "[DevBackend] Modèle domain + Drift pour exercices à étapes"
|
||||
status: "open"
|
||||
priority: "medium"
|
||||
sprint: null
|
||||
links: [{"target":"#54","kind":"relatesTo"}]
|
||||
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"}
|
||||
createdAt: 1784481516635
|
||||
updatedAt: 1784481516635
|
||||
version: 1
|
||||
---
|
||||
Implémenter le socle domain et Drift pour les exercices à étapes. Ajouter `ExerciseStep`, enum `ExerciseStepType time|reps`, liste `steps` sur `Exercise`, validation max 8 étapes, positions uniques, cible par défaut > 0, score d'étape optionnel avec `ScoreInputMode manual|stopwatch`, label/unité/valeurs par défaut. Ajouter snapshots d'étapes dans `ProgramExercise.toSnapshotJson` et dans les snapshots WorkoutTemplate/History. Migration Drift depuis schemaVersion 7 vers 8 : tables/colonnes nécessaires, contraintes et mappers repository.
|
||||
6
.ideai/tickets/57/carnet.md
Normal file
6
.ideai/tickets/57/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#57"
|
||||
version: 4
|
||||
updatedBy: {"kind":"user"}
|
||||
updatedAt: 1784482343900
|
||||
---
|
||||
16
.ideai/tickets/57/issue.md
Normal file
16
.ideai/tickets/57/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "d5b0bd7e-a021-4824-a278-b2e9c14a1cf6"
|
||||
number: 57
|
||||
title: "Allimenter la mémoire projet pour l'UI online de l'app"
|
||||
status: "open"
|
||||
priority: "medium"
|
||||
sprint: "4237adfd-91eb-45ff-9f32-6ce1daa39822"
|
||||
links: []
|
||||
agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}]
|
||||
createdBy: {"kind":"user"}
|
||||
updatedBy: {"kind":"user"}
|
||||
createdAt: 1784481519943
|
||||
updatedAt: 1784482343900
|
||||
version: 4
|
||||
---
|
||||
L'application aura donc une couche online. L'application se veut cependant rester un maximum offline sur les ofnctionnalités de base. Je veux que cette couche online soit le plus transparente possible pour l'utilisateur. En clair, si le serveur n'est pas disponible, je ne veux pas de popup qui lui dise qu'il n'est pas connecté. Le but, c'est que les informations soient autant que possibles stockées en local pour tout ce qui est necessaire au bon affichage de l'application sans pour autant donner de mauvaises ou de fausses informations (par exemple, garder les exercices créés, les programmes, les séances etc en local, si plus tard on calcule des statistiques pareilles, les garder aussi en local, si il y a un systeme de compte, garder la photo de profile ainsi que le pseudo etc en local. En bref la référence reste encore une fois Heavy qui fait très bien ça). Ajoute ceci à la mémoire du projet pour les futurs features qui traiteront de ça.
|
||||
6
.ideai/tickets/58/carnet.md
Normal file
6
.ideai/tickets/58/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#58"
|
||||
version: 1
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedAt: 1784481524706
|
||||
---
|
||||
16
.ideai/tickets/58/issue.md
Normal file
16
.ideai/tickets/58/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "d18752bf-3e5b-4fb9-935c-064d0d2e837a"
|
||||
number: 58
|
||||
title: "[DevBackend] Exécution persistante des étapes et résultats par passage"
|
||||
status: "open"
|
||||
priority: "medium"
|
||||
sprint: null
|
||||
links: [{"target":"#54","kind":"relatesTo"},{"target":"#56","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"}
|
||||
createdAt: 1784481524706
|
||||
updatedAt: 1784481524706
|
||||
version: 1
|
||||
---
|
||||
Ajouter le modèle d'exécution des étapes distinct de `ActiveSetResult`. Créer une table dédiée type `ActiveExerciseStepProgressState` pour session+position de série, passage courant, étape courante, statut `idle|running|stopped`, `startedAt`, `accumulatedMs`, et actions pause/reprise/skip. Créer `ActiveExerciseStepResult` pour résultats par `activeWorkoutSessionId + programIndex + exerciseIndex + setIndex + passageIndex + stepSnapshotId/stepIndex`, statut `completed|skipped`, durée/rep cible snapshot, score manuel ou score chrono d'étape. À la clôture de séance, projeter vers `WorkoutHistoryStepResult` sans mélanger avec `WorkoutHistorySetResult`.
|
||||
6
.ideai/tickets/59/carnet.md
Normal file
6
.ideai/tickets/59/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#59"
|
||||
version: 1
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedAt: 1784481530478
|
||||
---
|
||||
16
.ideai/tickets/59/issue.md
Normal file
16
.ideai/tickets/59/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "be486426-a17d-4521-b475-9230a2e30169"
|
||||
number: 59
|
||||
title: "[DevFrontend] Éditeur d'exercice avec séquence d'étapes"
|
||||
status: "open"
|
||||
priority: "medium"
|
||||
sprint: null
|
||||
links: [{"target":"#54","kind":"relatesTo"},{"target":"#56","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"9933c93a-b8a1-4164-a3bb-7063fdad747d","role":"assigned"}]
|
||||
createdBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
createdAt: 1784481530478
|
||||
updatedAt: 1784481530478
|
||||
version: 1
|
||||
---
|
||||
Implémenter la section UX `Séquence d'étapes` dans `ExerciseFormScreen` : activation optionnelle, ajout/réordonnancement max 8, écran de détail d'étape, type exclusif temps/répétitions, cible obligatoire > 0, score d'étape optionnel avec mode manual/stopwatch. Préserver l'avertissement existant sur les exercices déjà utilisés : les programmes existants gardent leurs snapshots.
|
||||
6
.ideai/tickets/60/carnet.md
Normal file
6
.ideai/tickets/60/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#60"
|
||||
version: 1
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedAt: 1784481536357
|
||||
---
|
||||
16
.ideai/tickets/60/issue.md
Normal file
16
.ideai/tickets/60/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "4807a946-834e-44a4-8a39-25ad951e6668"
|
||||
number: 60
|
||||
title: "[DevFrontend] Exécution de séance avec module séquence et bips"
|
||||
status: "open"
|
||||
priority: "medium"
|
||||
sprint: null
|
||||
links: [{"target":"#54","kind":"relatesTo"},{"target":"#58","kind":"dependsOn"},{"target":"#59","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"9933c93a-b8a1-4164-a3bb-7063fdad747d","role":"assigned"}]
|
||||
createdBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
createdAt: 1784481536357
|
||||
updatedAt: 1784481536357
|
||||
version: 1
|
||||
---
|
||||
Implémenter le module `Séquence` sur l'écran d'exécution : affichage passage/étape, étapes temps avec compte à rebours, étapes répétitions avec validation manuelle, boucle multi-passages si reps de série actives, skips distincts étape/passage/série, persistance après pause/kill via use cases backend. Ajouter un port audio testable et un adapter Flutter utilisant des bips courts/longs, sans dépendance des tests widget à un lecteur audio réel.
|
||||
6
.ideai/tickets/61/carnet.md
Normal file
6
.ideai/tickets/61/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#61"
|
||||
version: 1
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedAt: 1784481541650
|
||||
---
|
||||
16
.ideai/tickets/61/issue.md
Normal file
16
.ideai/tickets/61/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "1eed02ec-04af-4966-a0ff-449c4a957ea0"
|
||||
number: 61
|
||||
title: "[DevFrontend] Plan de séance et historique avec résultats d'étapes"
|
||||
status: "open"
|
||||
priority: "medium"
|
||||
sprint: null
|
||||
links: [{"target":"#54","kind":"relatesTo"},{"target":"#58","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"9933c93a-b8a1-4164-a3bb-7063fdad747d","role":"assigned"}]
|
||||
createdBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
createdAt: 1784481541650
|
||||
updatedAt: 1784481541650
|
||||
version: 1
|
||||
---
|
||||
Afficher les résultats d'étapes dans le plan de séance et l'historique sans remplacer les résultats de série. Une série avec étapes garde son état global `à faire/en cours/terminée/passée`; le détail affiche les passages, étapes terminées/passées, durées/répétitions et scores d'étape. L'édition ponctuelle d'une série passée/terminée permet de corriger les valeurs enregistrées sans rejouer la séquence interactive et sans déplacer la progression courante.
|
||||
6
.ideai/tickets/62/carnet.md
Normal file
6
.ideai/tickets/62/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#62"
|
||||
version: 1
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedAt: 1784481549150
|
||||
---
|
||||
16
.ideai/tickets/62/issue.md
Normal file
16
.ideai/tickets/62/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "a53d84b5-06d9-4683-ac64-9100cb60669f"
|
||||
number: 62
|
||||
title: "[QA] Validation exercices à étapes, persistance et historique"
|
||||
status: "open"
|
||||
priority: "medium"
|
||||
sprint: null
|
||||
links: [{"target":"#54","kind":"relatesTo"},{"target":"#60","kind":"dependsOn"},{"target":"#61","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"7efa512f-3b3a-47b5-ade0-a2dd13073055","role":"assigned"}]
|
||||
createdBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
createdAt: 1784481549150
|
||||
updatedAt: 1784481549150
|
||||
version: 1
|
||||
---
|
||||
Préparer et exécuter le plan QA pour les exercices à étapes : création/édition et limites max 8, snapshots programme/séance, exécution étapes temps/répétitions, bips 3/2/1/0, enchaînement de chronos, skips étape/passage/série, pause/reprise/kill app, projection historique, édition ponctuelle sans déplacer la progression ni mélanger résultats d'étape et résultats de série.
|
||||
6
.ideai/tickets/63/carnet.md
Normal file
6
.ideai/tickets/63/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#63"
|
||||
version: 6
|
||||
updatedBy: {"kind":"user"}
|
||||
updatedAt: 1784482343900
|
||||
---
|
||||
16
.ideai/tickets/63/issue.md
Normal file
16
.ideai/tickets/63/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "17f54d9f-0317-429d-a275-480966976ced"
|
||||
number: 63
|
||||
title: "Ajouter les features déjà présentes sur le serveur au client"
|
||||
status: "open"
|
||||
priority: "medium"
|
||||
sprint: "4237adfd-91eb-45ff-9f32-6ce1daa39822"
|
||||
links: [{"target":"#57","kind":"dependsOn"},{"target":"#46","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}]
|
||||
createdBy: {"kind":"user"}
|
||||
updatedBy: {"kind":"user"}
|
||||
createdAt: 1784482089895
|
||||
updatedAt: 1784482343900
|
||||
version: 6
|
||||
---
|
||||
Une première version du serveur est disponible. J'aimerais que les features serveur soient ajouté à l'application. Le bon fonctionnement de l'applciation reste prioritaire sur le serveur, à savoir que le serveur sert l'applciation et pas l'inverse, c'est a dire que si une structure de donnée est actuellement différente entre le serveur et l'applciation, alors il faut modifier le serveur pour qu'il accepte la donnée du client. Je pense par exemple aux exercices, entre la création serveur et la réalisation du ticket, je pense que la forme des exercice a été modifiée (ajout entre autre des étapes dans une serie d'un exercice), il faudra alors adapter le serveur à ça.
|
||||
@ -1,3 +1,3 @@
|
||||
{
|
||||
"nextNumber": 55
|
||||
"nextNumber": 64
|
||||
}
|
||||
@ -524,14 +524,14 @@
|
||||
{
|
||||
"issueRef": "#46",
|
||||
"path": "46",
|
||||
"title": "Créer un application headless serveur pour l'application",
|
||||
"title": "Créer un serveur headless pour l'application",
|
||||
"status": "open",
|
||||
"priority": "low",
|
||||
"sprint": null,
|
||||
"sprint": "4237adfd-91eb-45ff-9f32-6ce1daa39822",
|
||||
"assignedAgentIds": [
|
||||
"57695b92-24d0-4876-837c-76116e70a6ae"
|
||||
],
|
||||
"updatedAt": 1784380502263
|
||||
"updatedAt": 1784482343900
|
||||
},
|
||||
{
|
||||
"issueRef": "#47",
|
||||
@ -597,11 +597,11 @@
|
||||
"issueRef": "#53",
|
||||
"path": "53",
|
||||
"title": "[Server] Tests API, contrats OpenAPI et vérification d'intégration",
|
||||
"status": "open",
|
||||
"status": "qa",
|
||||
"priority": "low",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [],
|
||||
"updatedAt": 1784412015509
|
||||
"updatedAt": 1784469423570
|
||||
},
|
||||
{
|
||||
"issueRef": "#54",
|
||||
@ -614,6 +614,102 @@
|
||||
"57695b92-24d0-4876-837c-76116e70a6ae"
|
||||
],
|
||||
"updatedAt": 1784451193831
|
||||
},
|
||||
{
|
||||
"issueRef": "#56",
|
||||
"path": "56",
|
||||
"title": "[DevBackend] Modèle domain + Drift pour exercices à étapes",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"10ee045b-1c41-479e-ba03-dceed9edd495"
|
||||
],
|
||||
"updatedAt": 1784481516635
|
||||
},
|
||||
{
|
||||
"issueRef": "#57",
|
||||
"path": "57",
|
||||
"title": "Allimenter la mémoire projet pour l'UI online de l'app",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"sprint": "4237adfd-91eb-45ff-9f32-6ce1daa39822",
|
||||
"assignedAgentIds": [
|
||||
"57695b92-24d0-4876-837c-76116e70a6ae"
|
||||
],
|
||||
"updatedAt": 1784482343900
|
||||
},
|
||||
{
|
||||
"issueRef": "#58",
|
||||
"path": "58",
|
||||
"title": "[DevBackend] Exécution persistante des étapes et résultats par passage",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"10ee045b-1c41-479e-ba03-dceed9edd495"
|
||||
],
|
||||
"updatedAt": 1784481524706
|
||||
},
|
||||
{
|
||||
"issueRef": "#59",
|
||||
"path": "59",
|
||||
"title": "[DevFrontend] Éditeur d'exercice avec séquence d'étapes",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"9933c93a-b8a1-4164-a3bb-7063fdad747d"
|
||||
],
|
||||
"updatedAt": 1784481530478
|
||||
},
|
||||
{
|
||||
"issueRef": "#60",
|
||||
"path": "60",
|
||||
"title": "[DevFrontend] Exécution de séance avec module séquence et bips",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"9933c93a-b8a1-4164-a3bb-7063fdad747d"
|
||||
],
|
||||
"updatedAt": 1784481536357
|
||||
},
|
||||
{
|
||||
"issueRef": "#61",
|
||||
"path": "61",
|
||||
"title": "[DevFrontend] Plan de séance et historique avec résultats d'étapes",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"9933c93a-b8a1-4164-a3bb-7063fdad747d"
|
||||
],
|
||||
"updatedAt": 1784481541650
|
||||
},
|
||||
{
|
||||
"issueRef": "#62",
|
||||
"path": "62",
|
||||
"title": "[QA] Validation exercices à étapes, persistance et historique",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"7efa512f-3b3a-47b5-ade0-a2dd13073055"
|
||||
],
|
||||
"updatedAt": 1784481549150
|
||||
},
|
||||
{
|
||||
"issueRef": "#63",
|
||||
"path": "63",
|
||||
"title": "Ajouter les features déjà présentes sur le serveur au client",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"sprint": "4237adfd-91eb-45ff-9f32-6ce1daa39822",
|
||||
"assignedAgentIds": [
|
||||
"57695b92-24d0-4876-837c-76116e70a6ae"
|
||||
],
|
||||
"updatedAt": 1784482343900
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user