feat(bdd): réorganiser features en catégories api/ui/e2e et créer ADR-024

Résolution des incohérences #10, #11, et #12 de l'analyse d'architecture.

## Phase 1 : Réorganisation Features BDD (Point #10 - RÉSOLU)

- Créer structure features/{api,ui,e2e}
- Déplacer 83 features en 3 catégories via git mv (historique préservé)
  - features/api/ : 53 features (tests API backend)
  - features/ui/ : 22 features (tests UI mobile)
  - features/e2e/ : 8 features (tests end-to-end)

Domaines déplacés :
- API : authentication, recommendation, rgpd-compliance, content-creation,
  moderation, monetisation, premium, radio-live, publicites
- UI : audio-guides, navigation, interest-gauges, mode-offline,
  partage, profil, recherche
- E2E : abonnements, error-handling

## Phase 2 : Mise à jour Documentation

### ADR-007 - Tests BDD
- Ajouter section "Convention de Catégorisation des Features"
- Documenter règles api/ui/e2e avec exemples concrets
- Spécifier step definitions (backend Go, mobile Dart)

### ADR-024 - Stratégie CI/CD Monorepo (NOUVEAU)
- Créer ADR dédié pour stratégie CI/CD avec path filters
- Architecture workflows séparés (backend.yml, mobile.yml, shared.yml)
- Configuration path filters détaillée avec exemples YAML
- Matrice de déclenchement et optimisations (~70% gain temps CI)
- Plan d'implémentation (~2h, reporté jusqu'au développement)

### ADR-016 - Organisation Monorepo
- Simplifier en retirant section CI/CD détaillée
- Ajouter référence vers ADR-024 pour stratégie CI/CD

### INCONSISTENCIES-ANALYSIS.md
- Point #10 (Tests BDD synchronisés) :  RÉSOLU
  - Catégorisation features implémentée
  - ADR-007 mis à jour avec convention complète
- Point #11 (70/30 Split paiements) :  ANNULÉ (faux problème)
  - ADR-009 et Règle 18 parfaitement cohérents
  - Documentation exhaustive existante (formule, SQL, comparaisons)
- Point #12 (Monorepo path filters) : ⏸️ DOCUMENTÉ
  - Architecture CI/CD complète dans ADR-024
  - Implémentation reportée (projet en phase documentation)
- Métriques mises à jour :
  - MODERATE : 6/9 traités (4 résolus + 1 annulé + 1 documenté)
  - ADR à jour : 100% (19/19 avec ADR-024)

## Phase 3 : Validation

- Structure features validée (api/ui/e2e, aucun répertoire restant)
- Historique Git préservé (git mv, renommages détectés)
- 83 features total (API: 53, UI: 22, E2E: 8)

Closes: Point #10 (résolu), Point #11 (annulé), Point #12 (documenté)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
jpgiannetti
2026-02-01 11:31:41 +01:00
parent 841028d1b2
commit 37c62206ad
88 changed files with 625 additions and 67 deletions

View File

@@ -0,0 +1,112 @@
# language: fr
Fonctionnalité: Inscription utilisateur
En tant que nouvel utilisateur
Je veux créer un compte avec email et mot de passe
Afin d'accéder à l'application RoadWave
Contexte:
Étant donné que l'API RoadWave est disponible
Et que Zitadel est configuré
Scénario: Inscription réussie avec données valides
Étant donné que l'email "nouveau@example.com" n'existe pas
Quand je m'inscris avec les données suivantes:
| champ | valeur |
| email | nouveau@example.com |
| mot_de_passe | Password123 |
| pseudo | nouveau_user |
| date_naissance | 1995-06-15 |
Alors mon compte est créé avec succès
Et je reçois un email de vérification
Et le lien de vérification expire dans 7 jours
Et je suis redirigé vers l'application
Scénario: Inscription avec email déjà existant
Étant donné qu'un utilisateur existe avec l'email "existant@example.com"
Quand je m'inscris avec l'email "existant@example.com"
Alors l'inscription échoue
Et je vois le message "Cet email est déjà utilisé"
Scénario: Inscription avec mot de passe invalide - trop court
Quand je m'inscris avec un mot de passe de moins de 8 caractères "Pass1"
Alors l'inscription échoue
Et je vois le message "Le mot de passe doit contenir au moins 8 caractères"
Scénario: Inscription avec mot de passe invalide - sans majuscule
Quand je m'inscris avec un mot de passe sans majuscule "password123"
Alors l'inscription échoue
Et je vois le message "Le mot de passe doit contenir au moins une majuscule"
Scénario: Inscription avec mot de passe invalide - sans chiffre
Quand je m'inscris avec un mot de passe sans chiffre "Password"
Alors l'inscription échoue
Et je vois le message "Le mot de passe doit contenir au moins un chiffre"
Scénario: Inscription avec pseudo invalide - trop court
Quand je m'inscris avec un pseudo de 2 caractères "ab"
Alors l'inscription échoue
Et je vois le message "Le pseudo doit contenir entre 3 et 30 caractères"
Scénario: Inscription avec pseudo invalide - caractères spéciaux
Quand je m'inscris avec un pseudo contenant des caractères spéciaux "user@123"
Alors l'inscription échoue
Et je vois le message "Le pseudo ne peut contenir que des lettres, chiffres et underscores"
Scénario: Inscription avec email invalide
Quand je m'inscris avec un email invalide "email.invalide"
Alors l'inscription échoue
Et je vois le message "Format d'email invalide"
Plan du Scénario: Inscription avec âge minimum non respecté
Étant donné la date du jour est "2026-01-21"
Quand je m'inscris avec une date de naissance "<date_naissance>"
Alors l'inscription échoue
Et je vois le message "Vous devez avoir au moins 13 ans pour créer un compte"
Exemples:
| date_naissance | age |
| 2013-01-22 | 12 |
| 2015-06-15 | 10 |
| 2020-01-01 | 6 |
Scénario: Inscription avec âge limite acceptable (13 ans)
Étant donné la date du jour est "2026-01-21"
Quand je m'inscris avec une date de naissance "2013-01-21"
Alors mon compte est créé avec succès
Et le mode Kids est activé automatiquement
Scénario: Inscription avec âge supérieur à 18 ans
Étant donné la date du jour est "2026-01-21"
Quand je m'inscris avec une date de naissance "1990-06-15"
Alors mon compte est créé avec succès
Et j'ai accès à tous les contenus sans restriction d'âge
Scénario: Données minimales requises à l'inscription
Quand je m'inscris sans fournir de nom complet
Et sans fournir de photo de profil
Et sans fournir de bio
Alors mon compte est créé avec succès
Et un avatar par défaut est généré
Et les champs optionnels sont vides
Scénario: Renvoyer l'email de vérification
Étant donné que je me suis inscrit avec l'email "nouveau@example.com"
Et que je n'ai pas vérifié mon email
Quand je demande à renvoyer l'email de vérification
Alors un nouvel email de vérification est envoyé
Et le précédent lien est invalidé
Scénario: Limite de renvoi d'email de vérification
Étant donné que je me suis inscrit avec l'email "nouveau@example.com"
Et que j'ai déjà renvoyé l'email de vérification 3 fois aujourd'hui
Quand je demande à renvoyer l'email de vérification une 4ème fois
Alors la demande échoue
Et je vois le message "Vous avez atteint la limite de 3 renvois par jour"
Scénario: Expiration du lien de vérification
Étant donné que je me suis inscrit il y a 8 jours
Et que je n'ai pas vérifié mon email
Quand j'essaie d'utiliser le lien de vérification
Alors la vérification échoue
Et je vois le message "Ce lien a expiré"
Et je peux demander un nouveau lien