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:
7
.ideai/tickets/1/carnet.md
Normal file
7
.ideai/tickets/1/carnet.md
Normal 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
16
.ideai/tickets/1/issue.md
Normal 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.
|
||||
7
.ideai/tickets/10/carnet.md
Normal file
7
.ideai/tickets/10/carnet.md
Normal 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).
|
||||
16
.ideai/tickets/10/issue.md
Normal file
16
.ideai/tickets/10/issue.md
Normal 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.
|
||||
7
.ideai/tickets/11/carnet.md
Normal file
7
.ideai/tickets/11/carnet.md
Normal 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.
|
||||
16
.ideai/tickets/11/issue.md
Normal file
16
.ideai/tickets/11/issue.md
Normal 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.
|
||||
7
.ideai/tickets/12/carnet.md
Normal file
7
.ideai/tickets/12/carnet.md
Normal 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).
|
||||
16
.ideai/tickets/12/issue.md
Normal file
16
.ideai/tickets/12/issue.md
Normal 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.
|
||||
7
.ideai/tickets/2/carnet.md
Normal file
7
.ideai/tickets/2/carnet.md
Normal 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
16
.ideai/tickets/2/issue.md
Normal 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.
|
||||
13
.ideai/tickets/3/carnet.md
Normal file
13
.ideai/tickets/3/carnet.md
Normal 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
16
.ideai/tickets/3/issue.md
Normal 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.).
|
||||
8
.ideai/tickets/4/carnet.md
Normal file
8
.ideai/tickets/4/carnet.md
Normal 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
16
.ideai/tickets/4/issue.md
Normal 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).
|
||||
7
.ideai/tickets/5/carnet.md
Normal file
7
.ideai/tickets/5/carnet.md
Normal 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
16
.ideai/tickets/5/issue.md
Normal 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.
|
||||
7
.ideai/tickets/6/carnet.md
Normal file
7
.ideai/tickets/6/carnet.md
Normal 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
16
.ideai/tickets/6/issue.md
Normal 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.
|
||||
7
.ideai/tickets/7/carnet.md
Normal file
7
.ideai/tickets/7/carnet.md
Normal 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
16
.ideai/tickets/7/issue.md
Normal 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.
|
||||
7
.ideai/tickets/8/carnet.md
Normal file
7
.ideai/tickets/8/carnet.md
Normal 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
16
.ideai/tickets/8/issue.md
Normal 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).
|
||||
7
.ideai/tickets/9/carnet.md
Normal file
7
.ideai/tickets/9/carnet.md
Normal 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
16
.ideai/tickets/9/issue.md
Normal 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.
|
||||
3
.ideai/tickets/counter.json
Normal file
3
.ideai/tickets/counter.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"nextNumber": 13
|
||||
}
|
||||
149
.ideai/tickets/index.json
Normal file
149
.ideai/tickets/index.json
Normal 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
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user