# language: fr @ui @moderation @signalement Fonctionnalité: Interface de signalement de contenu (Mobile) En tant qu'utilisateur de l'application mobile Je veux pouvoir signaler un contenu inapproprié facilement Afin de contribuer à améliorer la qualité de la plateforme # 14.1 - Interface de signalement utilisateur Contexte: Étant donné que je suis connecté à l'application mobile Et que je suis en train d'écouter un contenu # Accès au formulaire de signalement Scénario: Accéder au signalement depuis le player audio Étant donné que j'écoute un contenu audio Quand j'ouvre le menu "⋮" du player Alors je vois l'option "🚫 Signaler ce contenu" Et l'option est facilement accessible (3ème position) Et l'icône est rouge pour la visibilité Scénario: Accéder au signalement depuis la page de détails Étant donné que je consulte la page de détails d'un contenu Quand j'ouvre le menu "⋮" en haut à droite Alors je vois l'option "🚫 Signaler ce contenu" Et je peux ouvrir le formulaire de signalement Scénario: Accéder au signalement depuis l'historique d'écoute Étant donné que je consulte mon historique d'écoute Quand je fais un appui long sur un contenu Alors un menu contextuel s'affiche Et je vois l'option "🚫 Signaler" Et je peux signaler le contenu même si je ne l'écoute plus # Formulaire de signalement - Design et UX Scénario: Affichage du formulaire de signalement Étant donné que je clique sur "Signaler ce contenu" Quand le formulaire s'affiche Alors il apparaît en modal plein écran (iOS) ou bottom sheet (Android) Et le titre est "Signaler ce contenu" Et je vois le nom du contenu et le créateur en haut Et le formulaire contient: | élément | type | obligatoire | | Catégorie du problème | Liste déroulante | oui | | Commentaire | Zone texte | non* | | Bouton Annuler | Secondaire (gris) | - | | Bouton Envoyer | Primaire (rouge) | - | Et le bouton "Envoyer" est désactivé tant qu'aucune catégorie n'est sélectionnée Scénario: Design responsive du formulaire Étant donné que le formulaire de signalement est affiché Quand je vérifie l'adaptation de l'interface Alors sur petit écran (<375px), le texte est réduit mais lisible Et sur grand écran (>414px), le formulaire utilise l'espace disponible Et le clavier ne masque pas le bouton "Envoyer" Et je peux scroller si le contenu dépasse la hauteur de l'écran # Liste des catégories avec icônes Scénario: Affichage des 7 catégories prédéfinies Étant donné que le formulaire de signalement est affiché Quand je clique sur "Catégorie du problème" Alors une liste déroulante s'affiche avec 7 options: | icône | catégorie | description visible en sous-titre | | 🚫 | Haine & violence | Incitation à la haine, discrimination | | 🔞 | Contenu sexuel | Pornographie, contenu explicite | | ⚖️ | Illégalité | Terrorisme, apologie de crimes | | 🎵 | Droits d'auteur | Musique/contenu protégé non autorisé | | 📧 | Spam | Publicité non sollicitée, répétition | | ❌ | Fausse information | Désinformation santé, sécurité routière | | 🔧 | Autre | Champ texte obligatoire si sélectionné | Et chaque option affiche l'icône, le titre et la description Et la description est en gris clair pour la hiérarchie visuelle Scénario: Sélection d'une catégorie Étant donné que la liste des catégories est affichée Quand je sélectionne "🚫 Haine & violence" Alors la liste se ferme Et le champ "Catégorie du problème" affiche "🚫 Haine & violence" Et le bouton "Envoyer" s'active (devient rouge) Et je peux passer au champ commentaire (optionnel) Scénario: Animation visuelle lors de la sélection Étant donné que je suis sur le formulaire de signalement Quand je sélectionne une catégorie Alors une animation de validation subtile s'affiche (✓ vert) Et le champ commentaire s'anime légèrement pour attirer l'attention Et l'UX est fluide et encourageante # Catégorie "Autre" avec commentaire obligatoire Scénario: Catégorie "Autre" rend le commentaire obligatoire Étant donné que le formulaire de signalement est affiché Quand je sélectionne "🔧 Autre" Alors le champ "Commentaire" affiche un astérisque rouge (*) Et le placeholder change en "Décrivez le problème (obligatoire)" Et une étiquette "Obligatoire" apparaît en rouge Et le bouton "Envoyer" reste désactivé tant que je n'ai pas saisi de commentaire Scénario: Validation du commentaire obligatoire pour "Autre" Étant donné que j'ai sélectionné "🔧 Autre" Et que je n'ai pas rempli le champ commentaire Quand je clique sur "Envoyer" Alors un message d'erreur s'affiche sous le champ: """ Veuillez décrire le problème (minimum 10 caractères) """ Et le champ commentaire est mis en évidence en rouge Et le signalement n'est pas envoyé # Champ commentaire - UX et validation Scénario: Commentaire optionnel avec incitation Étant donné que j'ai sélectionné une catégorie autre que "Autre" Quand je consulte le champ "Commentaire" Alors le placeholder indique "Décrivez le problème (optionnel mais recommandé)" Et aucun astérisque rouge n'est affiché Et un compteur "0/500" s'affiche en bas à droite Et l'incitation encourage à fournir des détails sans obliger Scénario: Compteur de caractères en temps réel Étant donné que je suis dans le champ commentaire Quand je tape du texte Alors le compteur se met à jour en temps réel: "42/500" Et quand j'atteins 450 caractères, le compteur passe en orange Et quand j'atteins 490 caractères, le compteur passe en rouge Et à 500 caractères, le clavier bloque la saisie Et un message s'affiche: "Limite atteinte" Scénario: Limite stricte de 500 caractères Étant donné que j'ai saisi 500 caractères dans le commentaire Quand j'essaie de taper un caractère supplémentaire Alors le caractère n'est pas accepté Et le clavier vibre légèrement (feedback haptique) Et le compteur reste à "500/500" en rouge # Envoi du signalement Scénario: Envoi d'un signalement sans commentaire Étant donné que j'ai sélectionné "📧 Spam" Et que je n'ai pas rempli le champ commentaire Quand je clique sur "Envoyer" Alors un loader s'affiche sur le bouton "Envoyer" Et le formulaire se ferme après 1 seconde Et le signalement est envoyé avec succès Et aucune erreur ne s'affiche Scénario: Envoi d'un signalement avec commentaire Étant donné que j'ai sélectionné "🚫 Haine & violence" Et que j'ai saisi "Propos discriminatoires à 2:30" Quand je clique sur "Envoyer" Alors un loader s'affiche pendant l'envoi Et le formulaire se ferme Et le signalement est envoyé avec le commentaire Et le commentaire sera visible par les modérateurs Scénario: Gestion d'erreur lors de l'envoi Étant donné que j'ai rempli le formulaire de signalement Et que ma connexion réseau est perdue Quand je clique sur "Envoyer" Alors un message d'erreur s'affiche: """ Impossible d'envoyer le signalement. Vérifiez votre connexion internet. """ Et le formulaire reste ouvert avec mes données Et je peux réessayer sans perdre ma saisie # Toast de confirmation Scénario: Toast de confirmation après envoi réussi Étant donné que j'ai envoyé un signalement Quand le signalement est enregistré avec succès Alors un toast notification s'affiche en bas de l'écran Et le toast contient: | élément | contenu | | Icône | ✓ (vert) | | Message | Signalement envoyé. Examen sous 24-48h. | | Bouton | Voir mes signalements | | Bouton fermer | × (croix en haut à droite) | Et le toast s'affiche pendant 5 secondes Et je peux le fermer manuellement Scénario: Animation du toast Étant donné que le signalement est envoyé Quand le toast s'affiche Alors il apparaît avec une animation slide-up depuis le bas Et après 5 secondes, il disparaît avec une animation fade-out Et l'animation est fluide et professionnelle Scénario: Redirection vers l'historique depuis le toast Étant donné que le toast de confirmation est affiché Quand je clique sur "Voir mes signalements" Alors le toast se ferme Et je suis redirigé vers "Profil > Mes signalements" Et je vois mon nouveau signalement en tête de liste Et le statut est "En cours 🔍" # Modal de découverte au premier signalement Scénario: Découverte du système de badges au 1er signalement Étant donné que je viens d'envoyer mon tout premier signalement Et que le toast de confirmation s'est affiché Quand 2 secondes se sont écoulées Alors une modal d'information s'affiche par-dessus Et la modal contient le titre "🎯 Bravo ! Vous contribuez à une communauté plus saine" Et la modal explique le système de badges: """ 🥉 Bronze : 5 signalements validés 🥈 Argent : 20 signalements validés 🥇 Or : 50 signalements validés → -50% Premium 3 mois """ Et la modal contient 2 boutons: | bouton | action | | En savoir plus | Ouvre page dédiée badges | | J'ai compris | Ferme la modal | Et cette modal ne se réaffiche jamais Scénario: Modal responsive et accessible Étant donné que la modal de découverte s'affiche Quand je vérifie l'accessibilité Alors la modal est centrée sur l'écran Et le fond est assombri (overlay semi-transparent) Et je ne peux pas interagir avec l'écran en arrière-plan Et je peux fermer en cliquant hors de la modal Et le texte est lisible (contraste WCAG AA) # Limite de signalements déjà effectués Scénario: Impossible de signaler deux fois le même contenu Étant donné que j'ai déjà signalé ce contenu il y a 3 jours Quand j'ouvre le menu "⋮" du contenu Alors l'option "Signaler" est désactivée (grisée) Et un tooltip s'affiche: "Vous avez déjà signalé ce contenu" Et je peux consulter mon signalement précédent via le tooltip (lien) Scénario: Redirection vers le signalement existant Étant donné que j'ai déjà signalé ce contenu Et que l'option "Signaler" est désactivée Quand je clique sur le tooltip "Vous avez déjà signalé ce contenu" Alors je suis redirigé vers "Mes signalements" Et le signalement concerné est mis en évidence Et je vois le statut actuel: "En cours 🔍" / "Traité ✓" / "Rejeté ✗" # Accessibilité et dark mode Scénario: Support du dark mode Étant donné que j'ai activé le dark mode sur mon téléphone Quand j'ouvre le formulaire de signalement Alors le formulaire s'adapte au dark mode: | élément | couleur dark mode | | Fond de la modal | Gris foncé (#1E1E1E) | | Texte principal | Blanc (#FFFFFF) | | Texte secondaire | Gris clair (#B0B0B0) | | Bordures | Gris moyen (#3E3E3E) | | Bouton Envoyer | Rouge (#FF4444) | Et le contraste reste suffisant (WCAG AA) Scénario: Accessibilité pour lecteur d'écran Étant donné que j'utilise un lecteur d'écran (VoiceOver/TalkBack) Quand je navigue dans le formulaire de signalement Alors chaque élément a un label descriptif: | élément | label lecteur d'écran | | Bouton menu | "Menu du contenu" | | Option signaler | "Signaler ce contenu" | | Liste catégories | "Sélectionner une catégorie de problème" | | Champ commentaire | "Commentaire optionnel, 500 caractères maximum" | | Bouton Envoyer | "Envoyer le signalement" | Et je peux naviguer au clavier (tab/shift-tab) Et tous les états (activé/désactivé) sont annoncés # Coût et performance Scénario: Performance de l'interface Étant donné que j'ouvre le formulaire de signalement Quand je mesure les performances Alors le formulaire s'affiche en <300ms Et l'animation est fluide (60 FPS) Et l'envoi du signalement prend <2 secondes Et l'UX est instantanée et réactive Scénario: Coût de développement Étant donné que l'interface de signalement est développée Quand on évalue le coût Alors le développement est 100% interne (Flutter) Et aucun service tiers n'est utilisé Et le coût opérationnel est de 0€ Et l'interface est native iOS et Android