Files
roadwave/features/api/content-creation/modification-suppression.feature
jpgiannetti 37c62206ad 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>
2026-02-01 11:31:41 +01:00

222 lines
9.3 KiB
Gherkin
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# language: fr
Fonctionnalité: Modification et suppression de contenu
En tant que créateur
Je veux pouvoir modifier ou supprimer mes contenus
Afin de garder le contrôle sur mes publications
Contexte:
Étant donné que l'API RoadWave est disponible
Et que je suis un créateur connecté
Et que j'ai publié un contenu
Scénario: Modifier le titre d'un contenu
Étant donné que mon contenu a le titre "Histoire de Paris"
Quand je modifie le titre en "Histoire fascinante de Paris"
Alors la modification est enregistrée immédiatement
Et je vois le message "Titre modifié avec succès"
Scénario: Correction de coquilles dans le titre
Étant donné que mon titre contient une faute "Histoore de Paris"
Quand je corrige en "Histoire de Paris"
Alors la modification est acceptée
Et le titre corrigé est affiché
Scénario: Ajouter une description ultérieurement
Étant donné que j'ai publié sans description
Quand j'ajoute une description "Découvrez l'histoire de la capitale"
Alors la description est enregistrée
Et elle est visible sur la page du contenu
Scénario: Modifier la description existante
Étant donné que mon contenu a déjà une description
Quand je modifie la description
Alors la nouvelle description remplace l'ancienne
Et la modification est immédiate
Scénario: Modifier les tags pour ajuster pertinence
Étant donné que mon contenu est tagué "Sport", "Musique"
Quand je change les tags en "Sport", "Santé"
Alors les nouveaux tags sont appliqués
Et l'algorithme utilise les nouveaux tags pour recommandations
Scénario: Personnaliser l'image de couverture
Étant donné que mon contenu a une image auto-générée
Quand j'uploade une image personnalisée 800×800px
Alors l'image personnalisée remplace l'image par défaut
Et elle est visible sur le contenu
Scénario: Impossible de modifier l'audio
Étant donné que mon contenu audio est publié
Quand j'essaie de remplacer le fichier audio
Alors la modification est refusée
Et je vois le message "L'audio ne peut pas être modifié après publication"
Scénario: Raison - Éviter fraude audio
Étant donné que je veux changer l'audio après validation
Quand j'essaie de modifier
Alors le système refuse pour éviter:
| risque |
| Uploader contenu validé puis remplacer spam |
| Fraude sur l'intégrité du contenu |
Scénario: Impossible de modifier la zone de diffusion
Étant donné que mon contenu est diffusé à Paris
Quand j'essaie de changer la zone en "National"
Alors la modification est refusée
Et je vois le message "La zone de diffusion ne peut pas être modifiée"
Scénario: Raison - Éviter manipulation algorithme
Étant donné que je veux changer ma zone
Quand j'essaie de modifier
Alors le système refuse pour éviter:
| manipulation |
| Créer "Local Paris" puis changer en "National" |
| Boost artificiel de visibilité |
Scénario: Impossible de modifier le type géo
Étant donné que mon contenu est type "Neutre" (pondération 0.2)
Quand j'essaie de changer en "Ancré" (pondération 0.7)
Alors la modification est refusée
Et je vois le message "Le type géographique ne peut pas être modifié"
Scénario: Raison - Éviter abus de pondération
Étant donné que je veux changer le type géo
Quand j'essaie de modifier
Alors le système refuse pour éviter:
| abus |
| Créer "Neutre" puis passer en "Ancré" |
| Manipulation de la pondération algorithme |
Scénario: Impossible de modifier la classification âge
Étant donné que mon contenu est classé "Tout public"
Quand j'essaie de changer en "18+"
Alors la modification est refusée
Et je vois le message "La classification d'âge ne peut pas être modifiée"
Scénario: Raison - Sécurité mineurs
Étant donné que je veux changer la classification
Quand j'essaie de modifier
Alors le système refuse pour garantir:
| protection |
| Classification vérifiée en modération |
| Pas de contournement validation |
| Sécurité des mineurs |
Scénario: Solution si besoin de changer audio/zone/classification
Étant donné que je veux absolument changer l'audio
Quand je consulte les options
Alors je vois "Supprimer et republier le contenu"
Et c'est la seule solution disponible
Scénario: Republication après suppression - créateur <3 validations
Étant donné que je suis un nouveau créateur (2 contenus validés)
Et que je supprime puis republie un contenu
Quand je republie avec les modifications
Alors le contenu repasse en file de validation
Et une nouvelle validation est effectuée
Scénario: Republication après suppression - créateur vérifié
Étant donné que je suis créateur vérifié (3 contenus validés)
Et que je supprime puis republie un contenu
Quand je republie avec les modifications
Alors le contenu est publié immédiatement
Et aucune validation préalable n'est requise
Scénario: Suppression de contenu immédiate
Quand je clique sur "Supprimer le contenu"
Et que je confirme la suppression
Alors le contenu est supprimé immédiatement
Et disparaît de la liste publique
Scénario: Confirmation avant suppression
Quand je clique sur "Supprimer"
Alors je vois un message de confirmation:
| titre | Êtes-vous sûr ? |
| message | Cette action est définitive |
| warning | Le contenu sera supprimé définitivement |
| actions | Confirmer / Annuler |
Scénario: Suppression définitive et non réversible
Étant donné que j'ai supprimé un contenu
Quand j'essaie de le récupérer
Alors la récupération est impossible
Et le contenu est définitivement perdu
Scénario: Suppression BDD + CDN sous 5 minutes
Quand je supprime un contenu
Alors l'entrée en base de données est marquée "deleted"
Et les fichiers CDN sont marqués pour suppression
Et la suppression effective a lieu sous 5 minutes
Scénario: Historique auditeurs conservé anonymisé
Étant donné que 1000 personnes ont écouté mon contenu
Quand je supprime le contenu
Alors leur historique est conservé
Mais marqué "Contenu supprimé par créateur"
Et la durée d'écoute est conservée pour leurs stats
Scénario: Analytics plateforme anonymisées conservées
Étant donné que mon contenu a généré 10K écoutes
Quand je supprime le contenu
Alors les métriques globales sont conservées anonymement:
| métrique | conservée |
| Total écoutes | (anonyme) |
| Durée totale | (anonyme) |
| Catégorie | (anonyme) |
| Auteur | (anonymisé) |
Et c'est conforme RGPD
Scénario: Fichiers CDN supprimés sous 24h
Étant donné que mon contenu est supprimé
Quand 24 heures s'écoulent
Alors tous les fichiers audio sont purgés du NGINX Cache
Et l'espace de stockage est libéré
Scénario: Pas de notification aux auditeurs
Étant donné que 500 utilisateurs ont écouté mon contenu
Quand je supprime le contenu
Alors aucune notification n'est envoyée aux auditeurs
Et il n'y a pas d'effet Streisand
Scénario: Auditeur tente de réécouter contenu supprimé
Étant donné qu'un auditeur a écouté mon contenu
Et que j'ai supprimé ce contenu
Quand l'auditeur tente de le réécouter depuis son historique
Alors il voit le message "Ce contenu n'est plus disponible"
Et la lecture est impossible
Scénario: Historique auditeur conserve trace
Étant donné qu'un auditeur a écouté mon contenu le 15 janvier
Et que je supprime le contenu le 20 janvier
Quand l'auditeur consulte son historique
Alors il voit "Vous avez écouté ce contenu le 15 janvier 2026"
Et le titre est remplacé par "Contenu supprimé"
Et la date d'écoute est conservée
Scénario: Statistiques créateur après suppression
Étant donné que j'ai publié 10 contenus
Et que je supprime 2 contenus
Quand je consulte mes statistiques globales
Alors je vois:
| métrique | valeur |
| Contenus publiés | 8 (actifs) |
| Total historique | 10 |
| Suppressions | 2 |
Et l'historique des suppressions est visible
Scénario: Limite de modifications par contenu
Étant donné que j'ai modifié un titre 10 fois
Quand j'essaie de modifier une 11ème fois
Alors la modification est acceptée
Car il n'y a pas de limite de modifications pour champs autorisés
Scénario: Historique des modifications visible
Étant donné que j'ai modifié un contenu plusieurs fois
Quand je consulte l'historique
Alors je vois:
| date | modification |
| 21/01/2026 | Titre changé |
| 20/01/2026 | Tags modifiés |
| 19/01/2026 | Description ajoutée |
Et je peux tracer toutes les modifications