style: formater GOAL.md et TODO.md (prettier)

This commit is contained in:
devcodetools committed 2026-09-21 17:42:19 +02:00
1 parent 6981da23f1
commit 2ec13f5895
2 files changed
+27 -22

No files matched your search

-1
View File
@@ -34,4 +34,3 @@ Les composants d'accès aux données devront être le plus génériques possible
- Docker via docker-compose - Docker via docker-compose
- Volumes managés - Volumes managés
+27 -21
View File
@@ -25,18 +25,18 @@ Application web **SPA + PWA** : Flashcards affiche des cartes (questions/répons
> Chaque exigence doit être satisfaite avant de considérer la feature terminée. > Chaque exigence doit être satisfaite avant de considérer la feature terminée.
| Ref | Exigence | Critère d'acceptation | | Ref | Exigence | Critère d'acceptation |
|-----|----------|------------------------| | ---- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| F-01 | Afficher une carte au hasard | Un clic sur « Jouer » affiche UNE carte tirée aléatoirement de l'ensemble des cartes | | F-01 | Afficher une carte au hasard | Un clic sur « Jouer » affiche UNE carte tirée aléatoirement de l'ensemble des cartes |
| F-02 | Dans un tirage aléatoire, la question est visible et la réponse cachée | Le terme/question s'affiche ; la réponse ne s'affiche pas | | F-02 | Dans un tirage aléatoire, la question est visible et la réponse cachée | Le terme/question s'affiche ; la réponse ne s'affiche pas |
| F-03 | Révéler la réponse | Un clic (ou action) déroule/affiche la réponse cachée ; un second clic la masque | | F-03 | Révéler la réponse | Un clic (ou action) déroule/affiche la réponse cachée ; un second clic la masque |
| F-04 | Tirer une carte au hasard **par thème** | L'utilisateur choisit un thème ; le tirage se fait uniquement parmi les cartes de ce thème | | F-04 | Tirer une carte au hasard **par thème** | L'utilisateur choisit un thème ; le tirage se fait uniquement parmi les cartes de ce thème |
| F-05 | Créer une carte | Formulaire de création avec question, réponse et thème ; la carte est persistée | | F-05 | Créer une carte | Formulaire de création avec question, réponse et thème ; la carte est persistée |
| F-06 | Modifier une carte | Formulaire pré-rempli ; la modification est persistée | | F-06 | Modifier une carte | Formulaire pré-rempli ; la modification est persistée |
| F-07 | Supprimer une carte | Confirmation avant suppression ; la carte disparaît de la liste | | F-07 | Supprimer une carte | Confirmation avant suppression ; la carte disparaît de la liste |
| F-08 | Lister les cartes | La liste complète des cartes s'affiche (avec au minimum question + thème) | | F-08 | Lister les cartes | La liste complète des cartes s'affiche (avec au minimum question + thème) |
| F-09 | Consulter une carte spécifique | L'accès direct à une carte (via sa route/id) affiche son détail complet | | F-09 | Consulter une carte spécifique | L'accès direct à une carte (via sa route/id) affiche son détail complet |
| F-10 | Thèmes | L'utilisateur peut choisir un thème reflétant les cartes existantes | | F-10 | Thèmes | L'utilisateur peut choisir un thème reflétant les cartes existantes |
--- ---
@@ -44,15 +44,15 @@ Application web **SPA + PWA** : Flashcards affiche des cartes (questions/répons
### Entité `Card` ### Entité `Card`
| Champ | Type | Contrainte | Description | | Champ | Type | Contrainte | Description |
|-------------|------------|-------------------|------------------------------------------| | ----------- | ---------- | ----------- | ---------------------------------------------- |
| `id` | string/INT | unique (PK) | Identifiant stable de la carte | | `id` | string/INT | unique (PK) | Identifiant stable de la carte |
| `question` | string | requis | Terme ou question affiché | | `question` | string | requis | Terme ou question affiché |
| `response` | string | requis | Réponse cachée puis révélée | | `response` | string | requis | Réponse cachée puis révélée |
| `theme` | string | requis | Thème/catégorie (ex. « code », « javascript ») | | `theme` | string | requis | Thème/catégorie (ex. « code », « javascript ») |
| `tags` | string[] | optionnel | Mots-clés additionnels | | `tags` | string[] | optionnel | Mots-clés additionnels |
| `createdAt` | datetime | auto | Date de création | | `createdAt` | datetime | auto | Date de création |
| `updatedAt` | datetime | auto | Date de dernière modification | | `updatedAt` | datetime | auto | Date de dernière modification |
> La liste des thèmes peut être dérivée dynamiquement des valeurs `theme` distinctes présentes en base (simplicité) ou gérée en entité `Theme` dédiée (robustesse). Choix à figer en phase de conception. > La liste des thèmes peut être dérivée dynamiquement des valeurs `theme` distinctes présentes en base (simplicité) ou gérée en entité `Theme` dédiée (robustesse). Choix à figer en phase de conception.
@@ -118,6 +118,7 @@ Une feature est « faite » si et seulement si :
> Ordre d'exécution recommandé. Passer à la phase suivante uniquement si la DoD de la phase courante est remplie. > Ordre d'exécution recommandé. Passer à la phase suivante uniquement si la DoD de la phase courante est remplie.
### Phase 0 — Scaffolding ### Phase 0 — Scaffolding
- [ ] Initialiser le projet Next.js + TypeScript (strict) - [ ] Initialiser le projet Next.js + TypeScript (strict)
- [ ] Configurer Tailwind - [ ] Configurer Tailwind
- [ ] Configurer ESLint + Prettier - [ ] Configurer ESLint + Prettier
@@ -126,6 +127,7 @@ Une feature est « faite » si et seulement si :
- [ ] DoD : `lint`, `format`, `typecheck`, `test` s'exécutent sans erreur sur un squelette - [ ] DoD : `lint`, `format`, `typecheck`, `test` s'exécutent sans erreur sur un squelette
### Phase 1 — Données et couche d'accès générique ### Phase 1 — Données et couche d'accès générique
- [ ] Schéma MySQL (table `cards`) + migration/seed - [ ] Schéma MySQL (table `cards`) + migration/seed
- [ ] Schéma MongoDB (collection `cards`) + seed - [ ] Schéma MongoDB (collection `cards`) + seed
- [ ] Interface générique `CardRepository` (contrat complet) - [ ] Interface générique `CardRepository` (contrat complet)
@@ -136,6 +138,7 @@ Une feature est « faite » si et seulement si :
- [ ] DoD : phase 0 + les 2 repositories testés et interchangeables - [ ] DoD : phase 0 + les 2 repositories testés et interchangeables
### Phase 2 — API / services métier ### Phase 2 — API / services métier
- [ ] Service métier `CardService` reposant uniquement sur l'abstraction repository - [ ] Service métier `CardService` reposant uniquement sur l'abstraction repository
- [ ] Routes API : liste, détail, création, modification, suppression - [ ] Routes API : liste, détail, création, modification, suppression
- [ ] Routes API : tirage aléatoire simple + tirage aléatoire par thème + liste des thèmes - [ ] Routes API : tirage aléatoire simple + tirage aléatoire par thème + liste des thèmes
@@ -145,6 +148,7 @@ Une feature est « faite » si et seulement si :
- [ ] DoD : phases précédentes + contexte de MCP de l'API - [ ] DoD : phases précédentes + contexte de MCP de l'API
### Phase 3 — Interface utilisateur ### Phase 3 — Interface utilisateur
- [ ] Page/vue **liste des cartes** (F-08) - [ ] Page/vue **liste des cartes** (F-08)
- [ ] Page/vue **détail d'une carte** (F-09) - [ ] Page/vue **détail d'une carte** (F-09)
- [ ] Formulaire **création** (F-05) - [ ] Formulaire **création** (F-05)
@@ -155,12 +159,14 @@ Une feature est « faite » si et seulement si :
- [ ] DoD : phases précédentes + parcours utilisateur complet fonctionnel - [ ] DoD : phases précédentes + parcours utilisateur complet fonctionnel
### Phase 4 — Tests ### Phase 4 — Tests
- [ ] Tests des composants UI (composants critiques) - [ ] Tests des composants UI (composants critiques)
- [ ] Couverture des critères F-01 à F-10 - [ ] Couverture des critères F-01 à F-10
- [ ] Coverage au seuil défini (Phase 0) - [ ] Coverage au seuil défini (Phase 0)
- [ ] DoD : toutes phases précédentes vertes + coverage ok - [ ] DoD : toutes phases précédentes vertes + coverage ok
### Phase 5 — PWA, déploiement ### Phase 5 — PWA, déploiement
- [ ] Manifest PWA + service worker (installable, hors-ligne) — la stack SPA le permet - [ ] Manifest PWA + service worker (installable, hors-ligne) — la stack SPA le permet
- [ ] `docker-compose.yml` : `web`, `mysql`, `mongo` - [ ] `docker-compose.yml` : `web`, `mysql`, `mongo`
- [ ] Volumes nommés pour l'ensemble des données - [ ] Volumes nommés pour l'ensemble des données