docs(ideai): met à jour les tickets et la mémoire projet après le scaffolding
Ajoute la note mémoire sur l'environnement de dev et reflète l'avancement du ticket #2 (terminé) et le cadrage du ticket #3 dans les carnets/issues. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -3,3 +3,4 @@
|
||||
- [gametime-product-scope](gametime-product-scope.md) — memory note gametime-product-scope
|
||||
- [gametime-ux-conception](gametime-ux-conception.md) — memory note gametime-ux-conception
|
||||
- [gametime-architecture-initial-stack-data-model](gametime-architecture-initial-stack-data-model.md) — memory note gametime-architecture-initial-stack-data-model
|
||||
- [gametime-dev-environment](gametime-dev-environment.md) — memory note gametime-dev-environment
|
||||
|
||||
46
.ideai/memory/gametime-dev-environment.md
Normal file
46
.ideai/memory/gametime-dev-environment.md
Normal file
@ -0,0 +1,46 @@
|
||||
---
|
||||
name: gametime-dev-environment
|
||||
description: memory note gametime-dev-environment
|
||||
metadata:
|
||||
type: project
|
||||
---
|
||||
# GameTime — Environnement de build local
|
||||
|
||||
Flutter SDK et Android SDK sont installés et opérationnels sur la machine du projet (2026-07-17). Premier APK debug buildé avec succès le 2026-07-17.
|
||||
|
||||
## Flutter
|
||||
- Installé via le paquet AUR `flutter-bin` (3.44.6, stable), pas `flutter` (source AUR) — ce dernier a un conflit de dépendance avec `dart` déjà présent sur le système (`dart<3.12.0` requis alors que 3.12.2 est installé).
|
||||
- Binaire `flutter` disponible dans `/usr/bin/flutter` (wrapper `flutter-bin`), SDK réel monté via unionfs sous `~/.cache/flutter_sdk`.
|
||||
|
||||
## Android SDK
|
||||
- Installé via le paquet AUR `android-sdk-cmdline-tools-latest`, posé dans `/opt/android-sdk` (appartenait à root par défaut — il a fallu `chown -R anthony:anthony /opt/android-sdk` pour que `sdkmanager` puisse installer des composants sans sudo).
|
||||
- Composants installés : `platform-tools`, `platforms;android-34/35/36`, `build-tools;34.0.0/28.0.3/36.0.0`, NDK 28.2.13676358, CMake 3.22.1 (certains installés automatiquement par Gradle au premier build).
|
||||
- Licences acceptées via `sdkmanager --licenses`.
|
||||
- `flutter config --android-sdk /opt/android-sdk` exécuté pour lier Flutter au SDK.
|
||||
|
||||
## JDK — point de friction important
|
||||
- Le JDK système par défaut est `java-26-openjdk` (trop récent : `Unsupported class file major version 70` avec Gradle 9.1 utilisé par le template Flutter).
|
||||
- Installé `jdk21-openjdk` (dépôt officiel Arch, pas besoin d'AUR) en complément, sans le mettre par défaut système.
|
||||
- Flutter configuré spécifiquement pour l'utiliser : `flutter config --jdk-dir=/usr/lib/jvm/java-21-openjdk`. Cette config est stockée dans la config Flutter (probablement `~/.config/flutter/settings` ou équivalent), donc persistante indépendamment du JDK système par défaut.
|
||||
|
||||
## Variables d'environnement persistées
|
||||
Ajoutées dans `~/.zshrc`, `~/.bashrc` et `~/.config/fish/config.fish` (le shell de login est zsh, mais les agents peuvent tourner en bash) :
|
||||
```
|
||||
ANDROID_HOME=/opt/android-sdk
|
||||
ANDROID_SDK_ROOT=/opt/android-sdk
|
||||
PATH inclut $ANDROID_HOME/cmdline-tools/latest/bin et $ANDROID_HOME/platform-tools
|
||||
```
|
||||
|
||||
## Limite connue
|
||||
- Pas de Chrome installé (web toolchain Flutter indisponible), sans impact puisque la cible du projet est mobile (Android/iOS), pas web.
|
||||
- Pas de device/émulateur Android connecté — seul `flutter build apk --debug` (sans device) est utilisable pour produire l'APK à transférer manuellement sur le téléphone de l'utilisateur (pas de `flutter run` direct sur device depuis cet environnement).
|
||||
- **Les sandbox des agents (DevBackend, DevFrontend, etc.) n'ont pas d'accès réseau à pub.dev**, contrairement à l'environnement de Main (Bash direct). Conséquence pratique : `flutter pub get`, `flutter analyze` (si dépend de packages non encore en cache) et `flutter build apk` doivent être exécutés par Main en vérification finale après le travail de code d'un agent, pas par l'agent lui-même. Les agents peuvent en revanche modifier pubspec.yaml, écrire du code Dart, etc.
|
||||
|
||||
## Commande de build APK de référence
|
||||
```bash
|
||||
export ANDROID_HOME=/opt/android-sdk
|
||||
export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$PATH"
|
||||
cd /home/anthony/Documents/Projects/GameTime
|
||||
flutter pub get && flutter analyze && flutter build apk --debug
|
||||
```
|
||||
APK produit : `build/app/outputs/flutter-apk/app-debug.apk`.
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
issueRef: "#1"
|
||||
version: 3
|
||||
version: 4
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1784301472470
|
||||
updatedAt: 1784301585782
|
||||
---
|
||||
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.
|
||||
@ -2,7 +2,7 @@
|
||||
id: "e6f0a540-055c-4b9d-9d14-3ceabf35c7d6"
|
||||
number: 1
|
||||
title: "[Git] Initialiser le dépôt et la stratégie de branches GameTime"
|
||||
status: "inProgress"
|
||||
status: "closed"
|
||||
priority: "high"
|
||||
sprint: null
|
||||
links: []
|
||||
@ -10,7 +10,7 @@ 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
|
||||
updatedAt: 1784301585782
|
||||
version: 4
|
||||
---
|
||||
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.
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
issueRef: "#2"
|
||||
version: 3
|
||||
version: 5
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1784301371028
|
||||
updatedAt: 1784304100048
|
||||
---
|
||||
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.
|
||||
@ -2,7 +2,7 @@
|
||||
id: "736ad58d-1020-438a-b563-5d0c30a05b04"
|
||||
number: 2
|
||||
title: "[DevBackend] Scaffolding projet Flutter + architecture hexagonale"
|
||||
status: "open"
|
||||
status: "closed"
|
||||
priority: "critical"
|
||||
sprint: null
|
||||
links: [{"target":"#1","kind":"dependsOn"}]
|
||||
@ -10,7 +10,7 @@ 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
|
||||
updatedAt: 1784304100048
|
||||
version: 5
|
||||
---
|
||||
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.
|
||||
@ -1,8 +1,8 @@
|
||||
---
|
||||
issueRef: "#3"
|
||||
version: 3
|
||||
version: 4
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1784301376032
|
||||
updatedAt: 1784304100173
|
||||
---
|
||||
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 :
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
id: "ea99a2e0-3c07-404c-95db-13818be0ee20"
|
||||
number: 3
|
||||
title: "[DevBackend] Modèle de données Drift complet (entités + migrations)"
|
||||
status: "open"
|
||||
status: "inProgress"
|
||||
priority: "critical"
|
||||
sprint: null
|
||||
links: [{"target":"#2","kind":"dependsOn"}]
|
||||
@ -10,7 +10,7 @@ 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
|
||||
updatedAt: 1784304100173
|
||||
version: 4
|
||||
---
|
||||
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.).
|
||||
@ -5,37 +5,37 @@
|
||||
"issueRef": "#1",
|
||||
"path": "1",
|
||||
"title": "[Git] Initialiser le dépôt et la stratégie de branches GameTime",
|
||||
"status": "inProgress",
|
||||
"status": "closed",
|
||||
"priority": "high",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"8f065f64-ef6e-4a00-af9c-d00be079e3cc"
|
||||
],
|
||||
"updatedAt": 1784301472470
|
||||
"updatedAt": 1784301585782
|
||||
},
|
||||
{
|
||||
"issueRef": "#2",
|
||||
"path": "2",
|
||||
"title": "[DevBackend] Scaffolding projet Flutter + architecture hexagonale",
|
||||
"status": "open",
|
||||
"status": "closed",
|
||||
"priority": "critical",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"10ee045b-1c41-479e-ba03-dceed9edd495"
|
||||
],
|
||||
"updatedAt": 1784301371028
|
||||
"updatedAt": 1784304100048
|
||||
},
|
||||
{
|
||||
"issueRef": "#3",
|
||||
"path": "3",
|
||||
"title": "[DevBackend] Modèle de données Drift complet (entités + migrations)",
|
||||
"status": "open",
|
||||
"status": "inProgress",
|
||||
"priority": "critical",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"10ee045b-1c41-479e-ba03-dceed9edd495"
|
||||
],
|
||||
"updatedAt": 1784301376032
|
||||
"updatedAt": 1784304100173
|
||||
},
|
||||
{
|
||||
"issueRef": "#4",
|
||||
|
||||
Reference in New Issue
Block a user