chore(repo): initialise le dépôt git et l'état de configuration IdeA

Ajoute le .gitignore Flutter/Dart standard (build/, .dart_tool/, Pods,
gradle, etc.) en prévision du scaffolding Flutter (ticket #2), ainsi que
la configuration d'orchestration IdeA (agents, mémoire, tickets, sprints).
L'état d'exécution transitoire (conversations, run/, live-state) reste
ignoré du versionnement.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 17:19:24 +02:00
commit dffca7b6c2
41 changed files with 1442 additions and 0 deletions

View File

@ -0,0 +1,7 @@
---
issueRef: "#1"
version: 3
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784301472470
---
Décisions à prendre par Git : nom de la branche principale de dev (ex: develop) si on ne travaille pas directement sur main, convention de nommage des branches de feature par ticket (ex: feature/#2-scaffolding-flutter). Aucune action sortante (push distant, remote) sans validation explicite de l'utilisateur — repo local pour l'instant.

16
.ideai/tickets/1/issue.md Normal file
View File

@ -0,0 +1,16 @@
---
id: "e6f0a540-055c-4b9d-9d14-3ceabf35c7d6"
number: 1
title: "[Git] Initialiser le dépôt et la stratégie de branches GameTime"
status: "inProgress"
priority: "high"
sprint: null
links: []
agentRefs: [{"agentId":"8f065f64-ef6e-4a00-af9c-d00be079e3cc","role":"assigned"}]
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784301284213
updatedAt: 1784301472470
version: 3
---
Mettre en place la structure de dépôt pour le projet Flutter GameTime : stratégie de branches (main protégée + branches de feature par ticket), conventions de commit, .gitignore adapté Flutter/Dart.

View File

@ -0,0 +1,7 @@
---
issueRef: "#10"
version: 4
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784301394213
---
Référence : mémoire "gametime-ux-conception" section 5. Relance : utiliser la séance-modèle source si elle existe encore ; sinon relancer depuis le snapshot historique avec un message explicite ("La séance originale n'existe plus. Une copie va être utilisée."). L'historique doit rester lisible même si exercices/programmes/séances-modèles sources ont été supprimés depuis (snapshot autonome, cf. ticket #3/#4).

View File

@ -0,0 +1,16 @@
---
id: "4c2a9393-bf0f-4f41-a243-9ce0b4f0c4e1"
number: 10
title: "[DevFrontend] Écran Historique des séances"
status: "open"
priority: "medium"
sprint: null
links: [{"target":"#4","kind":"dependsOn"},{"target":"#9","kind":"dependsOn"}]
agentRefs: [{"agentId":"9933c93a-b8a1-4164-a3bb-7063fdad747d","role":"assigned"}]
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784301309677
updatedAt: 1784301394213
version: 4
---
Liste groupée par période (Aujourd'hui/Cette semaine/Plus ancien) avec résumé par séance. Détail par programme puis exercice puis série (temps/répétitions/score si suivis). Relance : utilise la séance-modèle associée si elle existe encore, sinon relance depuis le snapshot historique avec message explicite. Suppression d'historique (action destructive confirmée). Cf. mémoire "gametime-ux-conception" section 5.

View File

@ -0,0 +1,7 @@
---
issueRef: "#11"
version: 7
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784301397898
---
Points à couvrir en priorité : (1) impossibilité de modifier les mesures activées ou l'ordre des exercices depuis une séance-modèle, seuls setsCount et cibles numériques doivent être modifiables ; (2) reprise de séance après kill complet de l'app (pas juste mise en arrière-plan) ; (3) recalcul correct des timers de repos ajustés (+/-15s) après reprise ; (4) intégrité de l'historique quand l'exercice, le programme ou la séance-modèle source ont été supprimés/archivés entre-temps ; (5) règle "au moins une mesure active" sur un exercice. Rapport d'échec réel obligatoire (commande, sortie brute, diagnostic) — pas d'enjolivement si KO, cf. règle du cycle dans le contexte Main.

View File

@ -0,0 +1,16 @@
---
id: "9592e96c-2c9f-439c-87f0-42b9147c1e00"
number: 11
title: "[QA] Plan et exécution des tests fonctionnels GameTime"
status: "open"
priority: "high"
sprint: null
links: [{"target":"#6","kind":"dependsOn"},{"target":"#7","kind":"dependsOn"},{"target":"#8","kind":"dependsOn"},{"target":"#9","kind":"dependsOn"},{"target":"#10","kind":"dependsOn"}]
agentRefs: [{"agentId":"7efa512f-3b3a-47b5-ade0-a2dd13073055","role":"assigned"}]
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784301312946
updatedAt: 1784301397898
version: 7
---
Écrire et exécuter les tests couvrant : CRUD Exercice/Programme/Séance-modèle, règles d'overrides limités en séance, robustesse de la session active (reprise après fermeture/mise en arrière-plan de l'app, recalcul des timers depuis horodatages), génération correcte de l'historique (snapshot autonome), relance de séance (via séance-modèle et via snapshot si séance-modèle supprimée). Rapport d'échec réel (commande + sortie + diagnostic) sans enjoliver en cas de KO.

View File

@ -0,0 +1,7 @@
---
issueRef: "#12"
version: 3
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784301400489
---
Portée volontairement limitée : pas de backend à développer. Juste s'assurer que change_log est alimenté de façon fiable à chaque mutation (create/update/delete/archive) sur les agrégats définis en #3, et qu'une interface de sync (no-op) existe pour ne pas avoir à toucher au domaine quand le serveur arrivera. Documenter aussi où s'accrochera la notion de profil utilisateur (futureOwnerProfileId, nullable pour l'instant).

View File

@ -0,0 +1,16 @@
---
id: "756cfcb4-8f5a-412f-ba13-5038284679bd"
number: 12
title: "[DevBackend] Préparation technique de la synchro serveur future"
status: "open"
priority: "low"
sprint: null
links: [{"target":"#4","kind":"dependsOn"}]
agentRefs: [{"agentId":"10ee045b-1c41-479e-ba03-dceed9edd495","role":"assigned"}]
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784301314769
updatedAt: 1784301400489
version: 3
---
Alimenter la table change_log à chaque mutation d'agrégat. Définir une interface abstraite de synchronisation (no-op pour l'instant, sans backend serveur). Documenter les invariants nécessaires à une future synchro incrémentale multi-device (résolution de conflits, gestion des profils utilisateurs à venir). Pas de développement serveur à ce stade.

View File

@ -0,0 +1,7 @@
---
issueRef: "#2"
version: 3
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784301371028
---
Référence : mémoire projet "gametime-architecture-initial-stack-data-model" (Architect). Stack : Flutter + Drift (SQLite). Structure hexagonale obligatoire : domain / application / infrastructure(local) / presentation, composition root séparée. Pas de schéma de tables à ce stade (ticket #3), juste la connexion Drift vide et le wiring. Cibler iOS + Android dans le pubspec/config dès le départ même si le test utilisateur se fait sur Android.

16
.ideai/tickets/2/issue.md Normal file
View File

@ -0,0 +1,16 @@
---
id: "736ad58d-1020-438a-b563-5d0c30a05b04"
number: 2
title: "[DevBackend] Scaffolding projet Flutter + architecture hexagonale"
status: "open"
priority: "critical"
sprint: null
links: [{"target":"#1","kind":"dependsOn"}]
agentRefs: [{"agentId":"10ee045b-1c41-479e-ba03-dceed9edd495","role":"assigned"}]
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784301286030
updatedAt: 1784301371028
version: 3
---
Initialiser le projet Flutter (cibles iOS + Android). Mettre en place la structure de dossiers domain / application / infrastructure(local) / presentation. Config lint/format. Intégration Drift de base (connexion DB vide, pas encore de schéma). Le domaine ne doit dépendre ni de Flutter ni de Drift.

View File

@ -0,0 +1,13 @@
---
issueRef: "#3"
version: 3
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784301376032
---
Référence : mémoire "gametime-architecture-initial-stack-data-model" pour le détail des entités (Exercise, MediaAsset, Program, ProgramExercise, WorkoutTemplate, WorkoutTemplateProgram, WorkoutTemplateExerciseOverride, ActiveWorkoutSession, ActiveSetResult, ActiveRestState, WorkoutHistory, WorkoutHistorySetResult, change_log).
Points de friction actés par Architect à respecter dans le schéma :
- Repos matérialisé comme événements concrets à l'exécution, pas comme simple règle statique.
- Exercice jamais supprimé en dur (archivedAt), copies lisibles conservées dans programmes/historique.
- Score = valeur numérique décimale + label/unité textuels snapshotés séparément de l'exercice source.
- IDs stables générés localement (UUIDv7/ULID), pas d'auto-increment comme identifiant métier.
- WorkoutTemplateExerciseOverride ne porte QUE setsCountOverride et les valeurs cibles numériques (targetTimeSecondsOverride, targetRepsOverride, targetScoreOverride) — pas de champ pour changer les mesures activées.

16
.ideai/tickets/3/issue.md Normal file
View File

@ -0,0 +1,16 @@
---
id: "ea99a2e0-3c07-404c-95db-13818be0ee20"
number: 3
title: "[DevBackend] Modèle de données Drift complet (entités + migrations)"
status: "open"
priority: "critical"
sprint: null
links: [{"target":"#2","kind":"dependsOn"}]
agentRefs: [{"agentId":"10ee045b-1c41-479e-ba03-dceed9edd495","role":"assigned"}]
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784301289668
updatedAt: 1784301376032
version: 3
---
Implémenter les tables Drift : Exercise, MediaAsset, Program, ProgramExercise, WorkoutTemplate, WorkoutTemplateProgram, WorkoutTemplateExerciseOverride, ActiveWorkoutSession, ActiveSetResult, ActiveRestState, WorkoutHistory, WorkoutHistorySetResult, change_log. Champs sync-ready sur chaque agrégat : id stable (UUIDv7/ULID), createdAt/updatedAt/deletedAt, schemaVersion, syncState, localRevision, originDeviceId. Voir mémoire projet "gametime-architecture-initial-stack-data-model" pour le détail des champs par entité et les invariants (score = valeur numérique + label/unité snapshotés, exercice jamais supprimé en dur, etc.).

View File

@ -0,0 +1,8 @@
---
issueRef: "#4"
version: 3
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784301378940
---
Règle produit validée avec l'utilisateur (mémoire "gametime-ux-conception" section 3) : une séance-modèle peut surcharger uniquement le nombre de séries et les valeurs cibles numériques des mesures déjà actives d'un exercice — jamais quelles mesures sont actives, jamais l'ordre/la liste des exercices. Ce garde-fou doit être appliqué au niveau des use cases, pas seulement de l'UI.
Pause/reprise de session : recalculer les temps écoulés depuis les horodatages stockés (startedAt, pausedAt, lastPersistedAt), jamais depuis un compteur en mémoire — nécessaire pour survivre à une fermeture d'app.

16
.ideai/tickets/4/issue.md Normal file
View File

@ -0,0 +1,16 @@
---
id: "d3a8bc95-d1c7-4114-a964-7faa5b15835a"
number: 4
title: "[DevBackend] Couche application : use cases et repositories"
status: "open"
priority: "high"
sprint: null
links: [{"target":"#3","kind":"dependsOn"}]
agentRefs: [{"agentId":"10ee045b-1c41-479e-ba03-dceed9edd495","role":"assigned"}]
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784301293308
updatedAt: 1784301378940
version: 3
---
Implémenter ports/repositories et use cases pour : CRUD Exercise (règle "au moins une mesure active", avertissement si exercice déjà utilisé, archivage doux plutôt que suppression) ; CRUD Program (snapshot de l'exercice à l'ajout, mesures activées parmi celles autorisées, séries, cibles, repos rattaché à la série/l'exercice précédent) ; gestion WorkoutTemplate (composition de programmes en snapshot indépendant, overrides limités à setsCount et valeurs cibles numériques uniquement — pas de changement de mesures actives ni de structure) ; gestion ActiveWorkoutSession (démarrage, transitions série/repos, pause/reprise basées sur horodatages, pas sur un compteur mémoire) ; clôture de séance vers WorkoutHistory (snapshot autonome).

View File

@ -0,0 +1,7 @@
---
issueRef: "#5"
version: 3
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784301380781
---
Fichiers médias hors base SQLite, seulement les métadonnées dans MediaAsset (localUri, mimeType, sizeBytes, durationMs pour vidéo, width/height, checksum). Prévoir remoteUri nullable pour la sync future sans l'implémenter.

16
.ideai/tickets/5/issue.md Normal file
View File

@ -0,0 +1,16 @@
---
id: "17cd97da-4b28-47c8-97e5-293e0173d640"
number: 5
title: "[DevBackend] Gestion des médias locaux"
status: "open"
priority: "medium"
sprint: null
links: [{"target":"#3","kind":"dependsOn"}]
agentRefs: [{"agentId":"10ee045b-1c41-479e-ba03-dceed9edd495","role":"assigned"}]
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784301295496
updatedAt: 1784301380781
version: 3
---
Import/association d'images et vidéos aux exercices (entité MediaAsset), stockage fichier dans le stockage applicatif local, référencement par métadonnées SQLite, nettoyage des fichiers orphelins. Prévoir les champs sync-ready (remoteUri nullable, checksum) sans implémenter la synchro.

View File

@ -0,0 +1,7 @@
---
issueRef: "#6"
version: 4
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784301382963
---
Référence : mémoire "gametime-ux-conception" section 1. Point critique UX : la section "Mesures disponibles" doit rester très lisible (toggles Temps/Répétitions/Score avec aide courte par toggle, champs label+unité seulement si Score activé). Règle bloquante : au moins une mesure doit être active pour enregistrer. Message non bloquant si on modifie les mesures d'un exercice déjà utilisé ailleurs (les programmes existants restent inchangés grâce aux snapshots).

16
.ideai/tickets/6/issue.md Normal file
View File

@ -0,0 +1,16 @@
---
id: "c748c16e-b782-47a8-accb-aa5d88b9adfb"
number: 6
title: "[DevFrontend] Écran Bibliothèque d'exercices"
status: "open"
priority: "high"
sprint: null
links: [{"target":"#4","kind":"dependsOn"},{"target":"#5","kind":"dependsOn"}]
agentRefs: [{"agentId":"9933c93a-b8a1-4164-a3bb-7063fdad747d","role":"assigned"}]
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784301298045
updatedAt: 1784301382963
version: 4
---
Liste avec recherche et filtres chips par mesure disponible. Écran création/édition d'exercice : nom, description, image/vidéo optionnelles, section "Mesures disponibles" (toggles Temps/Répétitions/Score cumulables, label+unité si Score). Règle : au moins une mesure obligatoire. Avertissement non bloquant si modification des mesures d'un exercice déjà utilisé. Cf. mémoire "gametime-ux-conception" section 1.

View File

@ -0,0 +1,7 @@
---
issueRef: "#7"
version: 4
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784301385567
---
Référence : mémoire "gametime-ux-conception" section 2. Repos affiché comme "Repos après cette série", attaché à la série/l'exercice précédent pour suivre le réordonnancement (poignée de déplacement). Pas de repos après la toute dernière série du programme. Ligne résumé attendue sur chaque carte exercice : "X séries · [mesures actives] · Repos Ys".

16
.ideai/tickets/7/issue.md Normal file
View File

@ -0,0 +1,16 @@
---
id: "f955dede-b254-49da-95bb-f63adca76d05"
number: 7
title: "[DevFrontend] Écran Création/édition de programme"
status: "open"
priority: "high"
sprint: null
links: [{"target":"#4","kind":"dependsOn"},{"target":"#6","kind":"dependsOn"}]
agentRefs: [{"agentId":"9933c93a-b8a1-4164-a3bb-7063fdad747d","role":"assigned"}]
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784301300945
updatedAt: 1784301385567
version: 4
---
Ajout d'exercices depuis la bibliothèque (recherche, badges de mesures). Cartes réordonnables par exercice. Configuration par exercice : nombre de séries, mesures à suivre (sous-ensemble de celles autorisées par l'exercice), cible par mesure activée, repos après chaque série (hérite du défaut programme, surchargeable). Gestion du cas "exercice archivé/supprimé de la bibliothèque". Cf. mémoire "gametime-ux-conception" section 2.

View File

@ -0,0 +1,7 @@
---
issueRef: "#8"
version: 4
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784301388397
---
Référence : mémoire "gametime-ux-conception" section 3 — décision produit explicitement validée par l'utilisateur. Au premier ajout d'un programme à la séance, afficher le message expliquant qu'une copie est enregistrée et que les futures modifications du programme source ne changeront pas cette séance. Les seuls champs éditables depuis cette surface sont : nombre de séries, et valeurs cibles numériques des mesures déjà actives (temps cible, répétitions cible, score cible). Ne pas permettre l'ajout/suppression/réordonnancement d'exercices ni le changement des mesures activées ici — ça reste au niveau du programme source (ticket #7).

16
.ideai/tickets/8/issue.md Normal file
View File

@ -0,0 +1,16 @@
---
id: "8f24db05-5d56-4324-8bef-68e4837e0e3b"
number: 8
title: "[DevFrontend] Écran Composition de séance-modèle"
status: "open"
priority: "high"
sprint: null
links: [{"target":"#4","kind":"dependsOn"},{"target":"#7","kind":"dependsOn"}]
agentRefs: [{"agentId":"9933c93a-b8a1-4164-a3bb-7063fdad747d","role":"assigned"}]
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784301303492
updatedAt: 1784301388397
version: 4
---
Assemblage nommé et réordonnable de un ou plusieurs programmes (copie/snapshot au moment de l'ajout, avec message explicite à l'utilisateur sur l'indépendance vis-à-vis du programme source). Overrides autorisés uniquement : nombre de séries et valeurs cibles numériques des mesures déjà actives par exercice — pas de changement de mesures actives, pas de réordonnancement/ajout/suppression d'exercice depuis la séance. Cf. mémoire "gametime-ux-conception" section 3 (décision produit tranchée avec l'utilisateur).

View File

@ -0,0 +1,7 @@
---
issueRef: "#9"
version: 4
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784301392430
---
Référence : mémoire "gametime-ux-conception" section 4. Écran le plus sensible du produit : grandes zones tactiles (44-48px mini), utilisable à l'effort, une main. Hiérarchie de saisie si mesures cumulées : Temps (bloc principal) > Répétitions (stepper) > Score (champ + unité, clavier adapté au type). Écran "Repos" séparé avec +15s/-15s et "Ignorer le repos". Pause : "Quitter et sauvegarder" comme action sûre recommandée, "Abandonner" comme action destructive confirmée séparément. Reprise doit fonctionner même après fermeture complète de l'app (bandeau "Séance en cours" au retour). Fin de séance écrit dans WorkoutHistory (ticket #4) avec temps total + scores par série.

16
.ideai/tickets/9/issue.md Normal file
View File

@ -0,0 +1,16 @@
---
id: "311cfb2b-0a09-4c18-ba66-4053994bc109"
number: 9
title: "[DevFrontend] Écran Exécution de séance"
status: "open"
priority: "critical"
sprint: null
links: [{"target":"#4","kind":"dependsOn"},{"target":"#8","kind":"dependsOn"}]
agentRefs: [{"agentId":"9933c93a-b8a1-4164-a3bb-7063fdad747d","role":"assigned"}]
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784301307130
updatedAt: 1784301392430
version: 4
---
Surface critique optimisée pour l'usage à l'effort (grandes zones tactiles, une main). En-tête temps écoulé + pause. Progression Programme/Exercice/Série. Saisie hiérarchisée quand mesures cumulées (Temps > Répétitions > Score avec unité). Écran "Repos" dédié entre séries avec ajustement ±15s et "Ignorer le repos". Pause avec "Quitter et sauvegarder" vs "Abandonner" (destructif confirmé). Reprise après interruption/fermeture app, robuste à l'arrière-plan (recalcul depuis horodatages, pas depuis un état mémoire). Écran de fin de séance (récap + relance) → écriture dans l'historique. Cf. mémoire "gametime-ux-conception" section 4.

View File

@ -0,0 +1,3 @@
{
"nextNumber": 13
}

149
.ideai/tickets/index.json Normal file
View File

@ -0,0 +1,149 @@
{
"version": 1,
"issues": [
{
"issueRef": "#1",
"path": "1",
"title": "[Git] Initialiser le dépôt et la stratégie de branches GameTime",
"status": "inProgress",
"priority": "high",
"sprint": null,
"assignedAgentIds": [
"8f065f64-ef6e-4a00-af9c-d00be079e3cc"
],
"updatedAt": 1784301472470
},
{
"issueRef": "#2",
"path": "2",
"title": "[DevBackend] Scaffolding projet Flutter + architecture hexagonale",
"status": "open",
"priority": "critical",
"sprint": null,
"assignedAgentIds": [
"10ee045b-1c41-479e-ba03-dceed9edd495"
],
"updatedAt": 1784301371028
},
{
"issueRef": "#3",
"path": "3",
"title": "[DevBackend] Modèle de données Drift complet (entités + migrations)",
"status": "open",
"priority": "critical",
"sprint": null,
"assignedAgentIds": [
"10ee045b-1c41-479e-ba03-dceed9edd495"
],
"updatedAt": 1784301376032
},
{
"issueRef": "#4",
"path": "4",
"title": "[DevBackend] Couche application : use cases et repositories",
"status": "open",
"priority": "high",
"sprint": null,
"assignedAgentIds": [
"10ee045b-1c41-479e-ba03-dceed9edd495"
],
"updatedAt": 1784301378940
},
{
"issueRef": "#5",
"path": "5",
"title": "[DevBackend] Gestion des médias locaux",
"status": "open",
"priority": "medium",
"sprint": null,
"assignedAgentIds": [
"10ee045b-1c41-479e-ba03-dceed9edd495"
],
"updatedAt": 1784301380781
},
{
"issueRef": "#6",
"path": "6",
"title": "[DevFrontend] Écran Bibliothèque d'exercices",
"status": "open",
"priority": "high",
"sprint": null,
"assignedAgentIds": [
"9933c93a-b8a1-4164-a3bb-7063fdad747d"
],
"updatedAt": 1784301382963
},
{
"issueRef": "#7",
"path": "7",
"title": "[DevFrontend] Écran Création/édition de programme",
"status": "open",
"priority": "high",
"sprint": null,
"assignedAgentIds": [
"9933c93a-b8a1-4164-a3bb-7063fdad747d"
],
"updatedAt": 1784301385567
},
{
"issueRef": "#8",
"path": "8",
"title": "[DevFrontend] Écran Composition de séance-modèle",
"status": "open",
"priority": "high",
"sprint": null,
"assignedAgentIds": [
"9933c93a-b8a1-4164-a3bb-7063fdad747d"
],
"updatedAt": 1784301388397
},
{
"issueRef": "#9",
"path": "9",
"title": "[DevFrontend] Écran Exécution de séance",
"status": "open",
"priority": "critical",
"sprint": null,
"assignedAgentIds": [
"9933c93a-b8a1-4164-a3bb-7063fdad747d"
],
"updatedAt": 1784301392430
},
{
"issueRef": "#10",
"path": "10",
"title": "[DevFrontend] Écran Historique des séances",
"status": "open",
"priority": "medium",
"sprint": null,
"assignedAgentIds": [
"9933c93a-b8a1-4164-a3bb-7063fdad747d"
],
"updatedAt": 1784301394213
},
{
"issueRef": "#11",
"path": "11",
"title": "[QA] Plan et exécution des tests fonctionnels GameTime",
"status": "open",
"priority": "high",
"sprint": null,
"assignedAgentIds": [
"7efa512f-3b3a-47b5-ade0-a2dd13073055"
],
"updatedAt": 1784301397898
},
{
"issueRef": "#12",
"path": "12",
"title": "[DevBackend] Préparation technique de la synchro serveur future",
"status": "open",
"priority": "low",
"sprint": null,
"assignedAgentIds": [
"10ee045b-1c41-479e-ba03-dceed9edd495"
],
"updatedAt": 1784301400489
}
]
}