Commit Graph

70 Commits

Author SHA1 Message Date
jpgiannetti
23fe67470b docs: migrer schémas BDD de Mermaid vers DBML
Remplace les diagrammes Mermaid par DBML (via kroki-dbml) pour
une meilleure expressivité des schémas de base de données :
- Ajout support notes, contraintes et indexes détaillés
- Migration de tous les schémas d'entités partagées
- Ajout fichier exemple dbml-example.md
- Configuration plugin mkdocs-kroki pour rendu DBML
2026-02-12 20:49:02 +01:00
jpgiannetti
ae2fc3ee6f refactor: réorganiser Dockerfiles et scripts par module
Réorganise la structure Docker pour plus de cohérence dans le monorepo.
Chaque module (backend, docs) a maintenant ses propres Dockerfiles et scripts.

Changements:
- backend/docker/ : Dockerfile (prod) + dev.Dockerfile (hot reload) + init script
- docs/docker/ : mkdocs.Dockerfile + pdf.Dockerfile
- docs/scripts/ : generate-bdd-docs.py + generate-pdf-docs.py
- Déplace docker-compose.yml dans backend/
- Supprime scripts obsolètes (fix-markdown-*.sh, remove-broken-links.sh)
- Déplace .dockerignore à la racine
- Met à jour Makefile avec nouveaux chemins

Organisation finale:
- backend/ : tout ce qui concerne l'API backend
- docs/ : tout ce qui concerne la documentation
- scripts/ : uniquement setup.sh (scripts généraux du projet)
2026-02-12 20:41:10 +01:00
jpgiannetti
35aaa105d0 docs: améliorer rendu markdown et navigation mkdocs
- Ajouter ADR-018 (librairies Go) dans TECHNICAL.md
- Transformer Shared en menu dépliable dans mkdocs (cohérence avec autres domaines)
- Corriger listes markdown (ajout lignes vides avant listes)
- Corriger line breaks dans génération BDD (étapes "Et" sur nouvelles lignes)
- Ajouter script fix-markdown-lists.sh pour corrections futures

Impacte 86 fichiers de documentation et 164 fichiers BDD générés.
2026-02-09 20:49:52 +01:00
jpgiannetti
95c65b8be1 docs: corriger liens cassés vers fichiers supprimés 2026-02-09 19:32:55 +01:00
jpgiannetti
989dc4b6cf Merge branch 'refactor/docs-reorganization' into main 2026-02-08 20:59:35 +01:00
jpgiannetti
64d6611147 docs: réorganiser navigation et corriger génération BDD
- Fusionner Architecture Technique et ADR sous section Architecture unique
- Fermer les menus de navigation par défaut (retrait navigation.expand)
- Ajouter features BDD manquantes pour domaine Shared :
  * Authentication (13 features)
  * Profil (3 features)
  * Partage (2 features)
  * Error Handling (4 features)
- Corriger indentation tableaux dans génération Markdown BDD
  (éviter transformation en blocs de code)
- Corriger diagramme séquence authentification
  (API → DB au lieu de App Mobile → DB)
- Supprimer fichiers obsolètes et index manuels
2026-02-08 20:55:30 +01:00
jpgiannetti
5497ea793f docs: documenter migration et règles de contribution
Ajout de 2 fichiers de documentation :

MIGRATION.md :
- Liste complète des changements effectués
- Tableau de correspondance ancien → nouveau
- Métriques de la migration (21% → 100% features accessibles)
- Guide de rollback si nécessaire
- FAQ

CONTRIBUTING.md :
- Principes fondamentaux (source unique, français, generated/ read-only)
- Guide ajout feature BDD (étape par étape)
- Guide ajout règle métier
- Guide ajout entité et diagrammes
- Conventions de nommage
- Checklist avant commit
- Format des messages de commit
2026-02-08 19:54:30 +01:00
jpgiannetti
a29718a8e8 docs: supprimer index.md manuels du dossier generated/bdd
- Supprimer les 7 fichiers index.md créés manuellement
- Retirer les références 'Vue d'ensemble' dans mkdocs.yml
- Le dossier generated/ doit contenir uniquement les fichiers générés par le script
- Les features BDD restent accessibles directement dans la navigation
2026-02-08 19:52:38 +01:00
jpgiannetti
bc9b3b6a69 docs(bdd): ajouter index.md pour 6 domaines BDD restants
Ajout des pages d'index pour les domaines :
- recommendation (17 features, 4 catégories)
- content (59 features, 6 catégories)
- moderation (23 features, 3 catégories)
- advertising (7 features, 1 catégorie)
- premium (16 features, 3 catégories)
- monetization (8 features, 1 catégorie)

Chaque index contient :
- Description du domaine
- Métriques (features, scénarios, catégories)
- Liste détaillée des catégories avec features principales
- Liens vers rules/ et entities/
- Architecture technique et références ADR
2026-02-08 18:42:15 +01:00
jpgiannetti
20a784b15c docs: intégrer toutes les features BDD dans navigation DDD
Changements :
-  Supprimer section autonome 'Tests BDD' (ligne 229-230)
-  Ajouter section 'Tests BDD' dans les 6 domaines manquants :
  - Recommendation : 17 features (Interest Gauges, Recherche, Recommendation, Search)
  - Content : 59 features (Audio Guides, Content Creation, Navigation, Radio Live, UI)
  - Moderation : 23 features (Admin, API, UI)
  - Advertising : 7 features (Publicites)
  - Premium : 16 features (Abonnements, Mode Offline, Premium)
  - Monetization : 8 features (Monétisation)

Total : 130 features ajoutées (100% des features BDD désormais accessibles)

Navigation : Domaine → Rules → Entities → Tests BDD (source unique)
2026-02-08 18:38:43 +01:00
jpgiannetti
3da7eb80a1 docs: mettre à jour liens après renommages
- Mise à jour de tous les liens dans les fichiers .md
- Mise à jour de la navigation dans mkdocs.yml
- Tous les chemins pointent vers les nouveaux noms en français
2026-02-08 18:18:28 +01:00
jpgiannetti
62fe0ed5eb docs: renommer fichiers EN→FR pour cohérence linguistique
Entités:
- entities-overview.md → vue-ensemble.md

États (Lifecycles):
- user-account-lifecycle.md → compte-utilisateur.md
- content-lifecycle.md → contenu.md
- session-lifecycle.md → session.md
- report-lifecycle.md → signalement.md
- export-lifecycle.md → export-donnees.md
- parental-consent-lifecycle.md → consentement-parental.md
- account-deletion-lifecycle.md → suppression-compte.md
- breach-incident-lifecycle.md → incident-breach.md

Séquences:
- authentication-flow.md → authentification.md
- token-refresh.md → refresh-token.md (terme technique conservé)
- content-moderation.md → moderation-contenu.md
- content-report.md → signalement.md
2026-02-08 18:17:48 +01:00
jpgiannetti
4b28db3465 docs: fusionner séquences dupliquées (garder versions FR)
- Supprimer data-export.md (doublon de export-donnees.md)
- Supprimer account-deletion.md (doublon de suppression-compte.md)
- Mettre à jour mkdocs.yml pour supprimer les doublons
- Garder uniquement les versions françaises plus détaillées
2026-02-08 18:17:30 +01:00
jpgiannetti
b52ffb8db9 feat(rgpd): compléter documentation RGPD avec 12 nouvelles sections
Règles RGPD (docs/domains/_shared/rules/rgpd.md):
- Ajouter sections 13.11-13.22 (droits utilisateurs, mineurs, sécurité)
- Droit de rectification, opposition, limitation du traitement
- Gestion des mineurs: 13 ans minimum + consentement parental 13-15 ans
- Protection renforcée: RoadWave Kids pour < 13 ans
- Sécurité: chiffrement multi-niveaux, procédure breach 72h CNIL
- Politique de confidentialité avec versioning
- Sous-traitants, DPIA, délais de réponse

Entités (6 nouvelles):
- PARENTAL_CONSENTS + PARENTAL_CONTROLS (workflow 13-15 ans)
- PRIVACY_POLICY_VERSIONS + USER_POLICY_ACCEPTANCES
- ACCOUNT_DELETIONS (grace period 30j)
- BREACH_INCIDENTS + BREACH_AFFECTED_USERS
- USER_PROFILE_HISTORY (audit trail rectification)
- DATA_RETENTION_LOGS (purge 5 ans)

Diagrammes séquences (5 nouveaux):
- Consentement parental avec validation email
- Anonymisation GPS automatique après 24h
- Notification breach CNIL (procédure 72h)
- Export données asynchrone
- Suppression compte avec grace period

Cycles de vie (3 nouveaux + 1 enrichi):
- parental-consent-lifecycle.md
- breach-incident-lifecycle.md
- account-deletion-lifecycle.md
- user-account-lifecycle.md (ajout états mineurs, frozen)

Features BDD (4 nouvelles, 195 scénarios RGPD):
- minors-protection.feature (9 scénarios)
- data-security.feature (12 scénarios)
- privacy-policy.feature (8 scénarios)
- user-rights.feature (8 scénarios)

Infrastructure:
- Réorganiser docs générées: docs/bdd + output → generated/bdd + generated/pdf
- Mettre à jour mkdocs.yml, Makefile, scripts Python
- Ajouter /generated/ au .gitignore
2026-02-08 17:54:46 +01:00
jpgiannetti
fd2b0f70c5 feat(rgpd): compléter documentation RGPD avec 12 nouvelles sections
Règles RGPD (docs/domains/_shared/rules/rgpd.md):
- Ajouter sections 13.11-13.22 (droits utilisateurs, mineurs, sécurité)
- Droit de rectification, opposition, limitation du traitement
- Gestion des mineurs: 13 ans minimum + consentement parental 13-15 ans
- Protection renforcée: RoadWave Kids pour < 13 ans
- Sécurité: chiffrement multi-niveaux, procédure breach 72h CNIL
- Politique de confidentialité avec versioning
- Sous-traitants, DPIA, délais de réponse

Entités (6 nouvelles):
- PARENTAL_CONSENTS + PARENTAL_CONTROLS (workflow 13-15 ans)
- PRIVACY_POLICY_VERSIONS + USER_POLICY_ACCEPTANCES
- ACCOUNT_DELETIONS (grace period 30j)
- BREACH_INCIDENTS + BREACH_AFFECTED_USERS
- USER_PROFILE_HISTORY (audit trail rectification)
- DATA_RETENTION_LOGS (purge 5 ans)

Diagrammes séquences (5 nouveaux):
- Consentement parental avec validation email
- Anonymisation GPS automatique après 24h
- Notification breach CNIL (procédure 72h)
- Export données asynchrone
- Suppression compte avec grace period

Cycles de vie (3 nouveaux + 1 enrichi):
- parental-consent-lifecycle.md
- breach-incident-lifecycle.md
- account-deletion-lifecycle.md
- user-account-lifecycle.md (ajout états mineurs, frozen)

Features BDD (4 nouvelles, 195 scénarios RGPD):
- minors-protection.feature (9 scénarios)
- data-security.feature (12 scénarios)
- privacy-policy.feature (8 scénarios)
- user-rights.feature (8 scénarios)

Infrastructure:
- Réorganiser docs générées: docs/bdd + output → generated/bdd + generated/pdf
- Mettre à jour mkdocs.yml, Makefile, scripts Python
- Ajouter /generated/ au .gitignore
2026-02-08 17:49:12 +01:00
jpgiannetti
1896c249dd fix(docs): corriger liens cassés vers entities-overview.md (anciennement modele-global.md) 2026-02-08 10:34:40 +01:00
jpgiannetti
e63603551d docs(shared): ajouter documentation complète entités, états et séquences
- Entités: 7 nouveaux schémas (sessions, devices, consents, location-history, interest-gauges, reports, exports)
- États: 5 diagrammes lifecycles (compte, contenu, session, signalement, export)
- Séquences: 6 flows (auth, refresh token, modération, signalement, export, suppression)
- Renommage: modele-global.md → entities-overview.md
- MkDocs: organisation hiérarchique par catégories

Format concis: diagrammes Mermaid + règles essentielles uniquement
2026-02-07 21:38:02 +01:00
jpgiannetti
cf7a46be27 refactor(docs): réorganiser structure documentation
- Déplacer TECHNICAL.md vers docs/ pour cohérence
- Renommer docs/index.md en docs/README.md (convention GitHub)
- Créer docs/adr/README.md comme index des ADR
- Supprimer docs/REFACTOR-DDD.md (plan appliqué)
- Supprimer docs/technical.md (doublon)
- Mettre à jour tous les liens internes
- Mettre à jour mkdocs.yml pour nouvelle structure

Structure finale :
- README.md : vue d'ensemble projet (GitHub)
- docs/README.md : page d'accueil documentation (MkDocs)
- docs/TECHNICAL.md : architecture technique
- docs/adr/README.md : index des 25 ADR
2026-02-07 19:56:40 +01:00
jpgiannetti
2c0522158c feat(docs): améliorer lisibilité du diagramme Architecture Services
Améliorations:
- Orientation LR (Left-Right) au lieu de TB pour meilleur flux
- Ajout icônes émojis pour identification visuelle rapide
- Simplification des connexions (api --> services au lieu de connexions multiples)
- Labels plus courts dans les boîtes
- Styles améliorés avec bordures colorées
- Meilleure organisation des sous-graphes

Le diagramme est maintenant beaucoup plus lisible et professionnel.
2026-02-07 17:43:13 +01:00
jpgiannetti
1a67e5ffd0 chore(docs): supprimer liens cassés vers fichiers inexistants
Suppressions/corrections:
- Suppression références ADR inexistants (010, 011, 018-notifications-push)
- Suppression liens vers fichiers d'analyse supprimés (ANALYSE_LIBRAIRIES_GO.md, INCONSISTENCIES-ANALYSIS.md)
- Correction numéros ADR: 010→012, 018→020, 020→022
- Correction liens relatifs dans domains/README.md
- Suppression référence regles-metier/ (structure legacy)

Script: scripts/remove-broken-links.sh
2026-02-07 17:31:30 +01:00
jpgiannetti
be9fc998cc fix(docs): corriger les liens internes cassés après refactorisation DDD
Corrections:
- Liens vers ADR: docs/adr/ → adr/ dans index.md et technical.md
- Liens internes entre règles métier (anciens noms numérotés)
- Chemins relatifs ADR depuis les domaines: ../adr/ → ../../../adr/
- Lien ADR-010 → ADR-012 (frontend-mobile)
- Suppression référence vers sequences/scoring-recommandation.md (non créé)

Script: scripts/fix-remaining-links.sh
2026-02-07 17:25:47 +01:00
jpgiannetti
5e5fcf4714 refactor(docs): réorganiser la documentation selon principes DDD
Réorganise la documentation du projet selon les principes du Domain-Driven Design (DDD) pour améliorer la cohésion, la maintenabilité et l'alignement avec l'architecture modulaire du backend.

**Structure cible:**
```
docs/domains/
├── README.md (Context Map)
├── _shared/ (Core Domain)
├── recommendation/ (Supporting Subdomain)
├── content/ (Supporting Subdomain)
├── moderation/ (Supporting Subdomain)
├── advertising/ (Generic Subdomain)
├── premium/ (Generic Subdomain)
└── monetization/ (Generic Subdomain)
```

**Changements effectués:**

Phase 1: Création de l'arborescence des 7 bounded contexts
Phase 2: Déplacement des règles métier (01-19) vers domains/*/rules/
Phase 3: Déplacement des diagrammes d'entités vers domains/*/entities/
Phase 4: Déplacement des diagrammes flux/états/séquences vers domains/*/
Phase 5: Création des README.md pour chaque domaine
Phase 6: Déplacement des features Gherkin vers domains/*/features/
Phase 7: Création du Context Map (domains/README.md)
Phase 8: Mise à jour de mkdocs.yml pour la nouvelle navigation
Phase 9: Correction automatique des liens internes (script fix-markdown-links.sh)
Phase 10: Nettoyage de l'ancienne structure (regles-metier/, diagrammes/, features/)

**Configuration des tests:**
- Makefile: godog run docs/domains/*/features/
- scripts/generate-bdd-docs.py: features_dir → docs/domains

**Avantages:**
 Cohésion forte: toute la doc d'un domaine au même endroit
 Couplage faible: domaines indépendants, dépendances explicites
 Navigabilité améliorée: README par domaine = entrée claire
 Alignement code/docs: miroir de backend/internal/
 Onboarding facilité: exploration domaine par domaine
 Tests BDD intégrés: features au plus près des règles métier

Voir docs/REFACTOR-DDD.md pour le plan complet.
2026-02-07 17:15:02 +01:00
jpgiannetti
78422bb2c0 fix(diagrammes): corriger incohérences détectées lors de l'audit
Problème 1 - CRITIQUE : Champ auto_like manquant
- Fichier : modele-global.md
- Ajout : boolean auto_like dans LISTENING_HISTORY
- Règle source : Section 03 (jauges) - Like automatique ≥30% écoute
- Impact : Traçabilité système likes automatiques

Problème 2 - MINEUR : Type recommended_speed imprécis
- Fichier : modele-audio-guides.md
- Avant : int recommended_speed_kmh (imprécis pour plage)
- Après : int recommended_speed_min_kmh + int recommended_speed_max_kmh
- Règle source : Section 06 - Formulaire création "30-50 km/h"
- Impact : Stockage précis des plages de vitesse recommandées

Audit complet réalisé : 96.6% → 100% cohérence
Tous les diagrammes sont maintenant parfaitement alignés avec
les règles métier.
2026-02-07 16:37:31 +01:00
jpgiannetti
04cd6327ab feat(diagrammes): créer tous les diagrammes d'entités du projet
Création complète de tous les modèles de données :

 Déjà existants :
- modele-global.md : USERS, CONTENTS, SUBSCRIPTIONS, LISTENING_HISTORY
- modele-moderation.md : REPORTS, SANCTIONS, APPEALS, STRIKES, BADGES

🆕 Nouveaux diagrammes :
- modele-recommandation.md : USER_INTERESTS, INTEREST_CATEGORIES
  Jauges 0-100%, évolution temps réel, pas de dégradation temporelle

- modele-publicites.md : AD_CAMPAIGNS, AD_METRICS, AD_IMPRESSIONS
  Ciblage géo/horaire/intérêts, budget prépayé, validation 24-48h

- modele-premium.md : PREMIUM_SUBSCRIPTIONS, ACTIVE_STREAMS, OFFLINE_DOWNLOADS
  Multi-devices (1 stream actif), offline 30j, sans essai gratuit

- modele-monetisation.md : CREATOR_MONETIZATION, CREATOR_REVENUES, PAYOUTS
  KYC obligatoire, revenus pub (3€/1000) + premium (70/30), seuil 50€

- modele-audio-guides.md : AUDIO_GUIDES, GUIDE_SEQUENCES, USER_GUIDE_PROGRESS
  Multi-séquences GPS, 4 modes (piéton/voiture/vélo/transport), 2-50 séquences

- modele-radio-live.md : LIVE_STREAMS, LIVE_RECORDINGS, LIVE_LISTENERS
  Buffer 15s, max 8h, enregistrement auto, notification abonnés

Avantages architecture :
 Séparation entités globales (1 source vérité)
 Diagrammes focalisés par domaine métier
 Maintenance simplifiée (pas de duplication)
 Cohérence avec règles métier validées

8 modèles de données complets couvrant 100% du projet MVP.
2026-02-07 16:29:54 +01:00
jpgiannetti
563980aeb7 refactor(diagrammes): séparer entités globales et spécifiques
Problème : USERS et CONTENTS dupliqués dans chaque diagramme
= maintenance cauchemardesque lors d'évolutions

Solution : Extraction des entités communes
- modele-global.md : USERS, CONTENTS, SUBSCRIPTIONS, LISTENING_HISTORY
- modele-moderation.md : Uniquement entités spécifiques modération
  (REPORTS, SANCTIONS, APPEALS, STRIKES, MODERATORS, BADGES)

Avantages :
- Une seule source de vérité pour entités communes
- Diagrammes de domaine focalisés sur leur périmètre
- Maintenance simplifiée (1 fichier à modifier vs N)
- Lien entre diagrammes pour navigation

Les futurs diagrammes de domaine (recommandation, monétisation, etc.)
référenceront modele-global.md et définiront uniquement leurs
entités spécifiques.
2026-02-07 16:25:00 +01:00
jpgiannetti
bd724dcb8e doc(diagrammes): ajouter diagrammes Mermaid pour modération
Structure minimaliste :
- docs/diagrammes/flux/ : Flowcharts
- docs/diagrammes/etats/ : State diagrams
- docs/diagrammes/sequence/ : Sequence diagrams
- docs/diagrammes/entites/ : Entity-Relationship diagrams

Exemples créés pour modération (Section 14) :
- Flux de signalement complet
- Cycle de vie d'un signalement (13 états)
- Processus d'appel créateur
- Modèle de données modération (8 entités)

Chaque fichier contient uniquement :
- Référence vers règle métier
- Diagramme Mermaid détaillé
- Légende courte

Intégration dans navigation MkDocs.
2026-02-07 15:56:48 +01:00
jpgiannetti
f6a5b9afce test(gherkin): ajouter tests BDD pour toutes clarifications règles métier
Ajoute/modifie tests Gherkin pour couvrir les 7 sections clarifiées :

1. Algorithme recommandation (scoring intérêts nuls) :
   - Ajout scénarios scoring-recommandation.feature
   - Cas contenu géo-ancré proche avec intérêts nuls = recommandable
   - Comparaison scores géo vs intérêts

2. Audio-guides mode voiture (système double clic) :
   - Nouveau fichier systeme-double-clic-sortie.feature
   - Premier clic : passage mode manuel + séquence suivante
   - Deuxième clic <10s : sortie audio-guide
   - Détection hors itinéraire + reprise

3. Monétisation créateurs (soldes dormants + DAS2) :
   - Nouveau fichier soldes-dormants-inactifs.feature
   - Conservation indéfinie si actif
   - Emails 12/18 mois + versement forcé 18 mois + 30j
   - Exception soldes <10€ avec proposition don
   - Modification obligations-fiscales.feature
   - DAS2 systématique tous montants (même <1200€)

4. Skip et abonnement (neutralisation pénalités) :
   - Nouveau fichier skip-abonnes-neutralisation.feature
   - Skip <10s non-abonné : -0.5%
   - Skip <10s abonné : 0% (neutre)
   - Métriques engagement : abonnés ne pénalisent pas
   - Anti-raid naturel (sources non pertinentes)

5. Premium multi-devices (KISS) :
   - Nouveau fichier multi-devices-dernier-priorite.feature
   - Règle simple : dernier device prend toujours priorité
   - Offline connecté vs déconnecté
   - Détection abus post-MVP (pas automatique)

6. Mode offline (contenus supprimés) :
   - Nouveau fichier contenus-supprimes-pendant-offline.feature
   - Suppression immédiate à reconnexion
   - Modal si contenu en cours d'écoute
   - Popup récapitulative si 2+ contenus supprimés

7. Publicités (ciblage horaire + fuseaux horaires) :
   - Nouveau fichier ciblage-horaire-fuseaux-horaires.feature
   - Ciblage horaire = heure locale utilisateur
   - France entière = Métropole + DOM
   - Détection fuseau GPS/device/IP
   - Cas d'usage restaurant Guadeloupe, assureur national

Couverture complète de toutes les règles métier clarifiées.
2026-02-07 11:14:17 +01:00
jpgiannetti
e82ed63904 doc(business-rules): ajout d'alertes post mvp 2026-02-07 11:03:27 +01:00
jpgiannetti
477630d216 doc(regles-metier): clarifier ciblage horaire pubs et gestion fuseaux horaires
Ajoute précisions détaillées sur le ciblage horaire des campagnes publicitaires
dans la section 6.1 (Création de campagne).

Règle 1 : Ciblage horaire = Heure locale utilisateur
- Campagne "7h-9h" diffuse entre 7h-9h heure locale de CHAQUE utilisateur
- Exemples : User Marseille 8h → , User Guadeloupe 8h → , User Réunion 8h → 
- Implémentation : détection fuseau via GPS/device/IP geolocation
- PostgreSQL AT TIME ZONE pour calculs backend

Règle 2 : Ciblage "France" = Métropole + DOM
- France entière inclut : 96 départements + Guadeloupe (971) + Martinique (972)
  + Guyane (973) + Réunion (974) + Mayotte (976)
- Publicitaire peut affiner : Région/Département/Ville pour ciblage précis
- Interface explicite avec note sur inclusion DOM

Cas d'usage documentés :
- Publicitaire local Guadeloupe : ciblage département 971 uniquement
- Campagne nationale rush matin : touche tous Français à 7h-9h leur heure locale
- User en déplacement : détection automatique nouveau fuseau

Justification :
- UX intuitive publicitaires (7h-9h = matin partout, pas besoin comprendre UTC)
- Équité géographique (pas discrimination DOM-TOM)
- Simplicité technique (détection automatique fuseau)
- Standard industrie (Google Ads, Facebook Ads)

Référence: CLARIFICATIONS-REGLES-METIER.md section 7
2026-02-05 13:45:14 +01:00
jpgiannetti
851832baec doc(regles-metier): ajouter gestion contenus supprimés pendant offline
Crée nouvelle section 11.4 détaillant le comportement quand des contenus
sont supprimés par créateurs/modération pendant que l'utilisateur est offline.

Décision : Suppression immédiate à la reconnexion (KISS)

Processus de synchronisation :
- GET /offline/validate retourne valid_ids, deleted_ids, metadata_updates
- Suppression immédiate fichiers locaux pour deleted_ids
- Renouvellement validité 30j pour valid_ids
- Toast notification "X contenus supprimés ont été retirés"

Gestion contenu en cours d'écoute :
- Message modal explicite "Contenu supprimé... Passage au suivant"
- Arrêt lecture + suppression fichier + passage auto après 2s

Message récapitulatif :
- Popup avec compte total + bouton "Voir la liste"
- Historique contenus supprimés conservé 7 jours

Justification KISS :
- Simplicité technique (pas de grace period)
- Respect créateur (volonté immédiate)
- Conformité légale (contenu illégal retiré immédiatement)
- Cas rare (peu de suppressions après publication)

Post-MVP : grace period possible si feedback négatifs, mais attendre
feedback réel avant complexité additionnelle.

Référence: CLARIFICATIONS-REGLES-METIER.md section 6
2026-02-05 13:43:23 +01:00
jpgiannetti
3bdc6c6241 doc(regles-metier): simplifier règle multi-devices Premium (KISS)
Remplace la règle complexe de détection multi-devices par une règle simple :
le dernier device à démarrer prend toujours la priorité.

Clarifications ajoutées :
- Comportement online : Device 2 démarre → Device 1 coupé immédiatement
- Comportement offline connecté WiFi : même mécanisme (heartbeat envoyé)
- Comportement offline mode avion : pas de détection possible (exception technique)
- Message coupure explicite avec 2 boutons : "Reprendre ici" / "Sécuriser compte"
- Limite offline 30j force reconnexion (cohérence avec mode offline)

Détection abus post-MVP :
- Monitoring patterns suspects (>10 changements/jour, villes éloignées)
- Action manuelle modération (pas automatique pour éviter faux positifs)
- Suspension 7j si partage confirmé, ban si récidive

Avantages KISS :
- Pas de tracking GPS précis ni calcul distances
- Pas de faux positifs (TGV légitime)
- Assume bonne foi, gestion réactive suffit
- Message dissuasif clair

Référence: CLARIFICATIONS-REGLES-METIER.md section 5
2026-02-05 13:41:58 +01:00
jpgiannetti
448b4b6ca7 doc(regles-metier): neutraliser pénalités skip pour abonnés + tracking source
Modifie les règles de skip et engagement pour distinguer abonnés/non-abonnés :

Jauges d'intérêt (03-centres-interet-jauges.md) :
- Skip <10s NON abonné : -0.5% (signal négatif)
- Skip <10s ABONNÉ : 0% neutre (affinité globale, skip contextuel)

Score d'engagement créateur (04-algorithme-recommandation.md) :
- Ajout colonne "source" pour tracking origine écoute
- Ajout colonne "is_subscribed" pour état abonnement au moment écoute
- Skips d'abonnés ne pénalisent PAS les métriques créateur
- Skips via search/direct_link/profile/history ne comptent PAS
- Seules sources pertinentes (recommendation, live_notification) comptent

Reproposition (04-algorithme-recommandation.md) :
- Skip <10s non-abonné : ne pas reproposer
- Skip <10s abonné : peut reproposer (skip contextuel acceptable)

Avantages :
- Cohérence UX : abonnement = signal affinité fort
- Protection créateur : abonnés fidèles ne nuisent pas aux stats
- Anti-raid naturel : skips malveillants via liens directs inefficaces
- Encourage créateurs à diversifier contenus sans peur de perdre abonnés

Référence: CLARIFICATIONS-REGLES-METIER.md section 4
2026-02-05 13:40:33 +01:00
jpgiannetti
7de686ab33 doc(regles-metier): clarifier gestion soldes dormants et DAS2 systématique
Restructure section 9.5 pour détailler la gestion des soldes créateurs :

Conservation du solde :
- Indéfiniment si créateur actif (>0 écoute/mois OU connexion dashboard)
- Emails préventifs à 12 mois, 18 mois et 18 mois + 30j d'inactivité
- Versement forcé après 18 mois d'inactivité (vs forfeiture chez Twitch)
- Exception soldes <10€ avec proposition de don
- Transparence frais bancaires (1.8% + 0.18€ Mangopay)

Déclaration fiscale DAS2 :
- Systématique pour tous montants (même <1200€/an)
- Conformité maximale et protection juridique plateforme
- Justificatif fourni aux créateurs en janvier N+1

Inspiré de Twitch mais plus équitable (versement au lieu de perte).

Référence: CLARIFICATIONS-REGLES-METIER.md section 3
2026-02-05 13:38:29 +01:00
jpgiannetti
159e0b2ff4 doc(regles-metier): ajouter système double clic audio-guides voiture
Ajoute une nouvelle section 16.3.4 décrivant le comportement du bouton
"Suivant" en mode voiture avec système intelligent à double clic :

- Premier clic : désactive GPS auto, passe en mode manuel, séquence suivante
- Deuxième clic (<10s) : sort de l'audio-guide et met en pause
- Clics suivants (>10s) : navigation normale entre séquences

Ajoute également :
- Détection et gestion du hors itinéraire (>1km, >10min)
- Proposition de reprise au retour sur itinéraire (<100m)
- Respect des séquences skippées volontairement

Résout le problème des embouteillages où l'utilisateur reste
30 minutes sans contenu en attendant le prochain point GPS.

Référence: CLARIFICATIONS-REGLES-METIER.md section 2
2026-02-05 13:36:38 +01:00
jpgiannetti
36e30bb5ab doc(regles-metier): clarifier comportement scoring avec intérêts nuls
Ajoute une documentation explicite du cas où un contenu géo-ancré
a un excellent score géographique mais des jauges d'intérêt nulles.

Ce comportement est accepté pour MVP car :
- Le quota 6 contenus géolocalisés/h protège du spam
- L'information peut être utile contextuellement
- La distinction info/divertissement est reportée post-MVP

Référence: CLARIFICATIONS-REGLES-METIER.md section 1
2026-02-05 13:35:10 +01:00
jpgiannetti
c48222cc63 feat(gherkin): compléter couverture règles métier avec 47 features manquantes
Ajout de 47 features Gherkin (~650 scénarios) pour couvrir 100% des règles métier :

- Authentification (5) : validation mot de passe, tentatives connexion, multi-device, 2FA, récupération
- Audio-guides (12) : détection mode, création, navigation piéton/voiture, ETA, gestion points, progression
- Navigation (5) : notifications minimalistes, décompte 5s, stationnement, historique, basculement auto
- Création contenu (3) : image auto, restrictions modification, suppression
- Radio live (2) : enregistrement auto, interdictions modération
- Droits auteur (6) : fair use 30s, détection musique, signalements, sanctions, appels
- Modération (9) : badges Bronze/Argent/Or, score fiabilité, utilisateur confiance, audit, anti-abus
- Premium (2) : webhooks Mangopay, tarification multi-canal
- Profil/Partage/Recherche (5) : badge vérifié, stats arrondies, partage premium, filtres avancés, carte

Tous les scénarios incluent edge cases, métriques de performance et conformité RGPD.
Couverture fonctionnelle MVP maintenant complète.
2026-02-03 21:25:47 +01:00
jpgiannetti
a82dbfe1dc doc(adr) : update mkdocs config 2026-02-03 20:11:55 +01:00
jpgiannetti
7d3b32856e feat(gherkin): ajouter features contenus géolocalisés mode voiture
Ajout et enrichissement des fichiers Gherkin pour les contenus
géolocalisés en mode voiture selon règles métier section 17:

API Backend (notifications-geolocalisees.feature):
- Edge cases haute vitesse (130 km/h, 180 km/h)
- Gestion multiples points géolocalisés proches (800m)
- Cooldown réduit après validations multiples
- Mode stationnement (vitesse < 1 km/h pendant 2 min)

UI Mobile (contenus-geolocalises-voiture.feature) - nouveau fichier:
- Notification visuelle minimaliste (icône + compteur, pas de texte)
- Validation "Suivant" et décompte 5 secondes
- Transitions audio fluides (fade in/out)
- Conformité CarPlay/Android Auto (sonore uniquement)
- Navigation avec contenus géolocalisés
- Annulation décompte et gestion historique

UI Navigation (commande-precedent.feature):
- Comportement "Précédent" avec contenus géolocalisés
- Historique mixte buffer et géolocalisés
- Règle 10s pour replay/retour
- Notification ignorée/annulée n'entre pas dans historique
2026-02-02 22:53:13 +01:00
jpgiannetti
a19a901ed4 feat(gherkin): ajouter features API et UI pour audio-guides multi-séquences
Créer 5 nouvelles features API :
- creation-gestion.feature : création, modification, publication d'audio-guides
- declenchement-gps.feature : calculs GPS, rayons, déclenchement automatique
- progression-sync.feature : sauvegarde progression, sync cloud, multi-device
- publicites.feature : insertion pub, fréquence, métriques créateur
- metriques-analytics.feature : statistiques, heatmaps, analytics créateur

Adapter mode-voiture.feature :
- ajouter section publicités en mode voiture (auto-play, pas de pause)

Corriger .gitignore :
- remplacer "api" par "/api" pour ne pas ignorer features/api/
2026-02-02 22:52:10 +01:00
jpgiannetti
ea77aa8ac7 feat(gherkin): ajouter features interactions et navigation
Couverture complète des règles métier 05-interactions-navigation.md :

API (Backend) :
- File d'attente : pré-calcul 5 contenus, recalcul auto (>10km, 10min, <3 contenus), invalidation, Redis cache
- Notifications géolocalisées : calcul ETA, déclenchement 7s avant, quota 6/h, cooldown 10min, tracking GPS
- Jauges d'intérêt : architecture services séparés (Calculation + Update), pattern addition points absolus, persistance Redis/PostgreSQL

UI (Frontend) :
- Mode piéton : notifications push arrière-plan, rayon 200m, permissions stratégie progressive, geofencing iOS/Android
- Basculement automatique voiture↔piéton : détection vitesse GPS, hysteresis 10s, transition transparente

Fichiers créés :
- features/api/navigation/file-attente.feature
- features/api/navigation/notifications-geolocalisees.feature
- features/ui/navigation/mode-pieton-notifications-push.feature

Fichiers enrichis :
- features/api/interest-gauges/evolution-jauges.feature (ajout scénarios architecture backend)
2026-02-02 22:41:00 +01:00
jpgiannetti
852240b5ec feat(gherkin): ajouter features UI pour algorithme de recommandation
Création de 4 features Gherkin UI pour l'expérience utilisateur liée
à l'algorithme de recommandation:

- parametres-personnalisation.feature: Interface curseurs (géo, découverte,
  politique), profils sauvegardables, auto-switch, synchronisation multi-devices

- mode-kids-ui.feature: Interface Mode Kids, activation/désactivation, badge,
  PIN parental, filtrage visuel contenus, onboarding 13-15 ans

- filtrage-politique-ui.feature: Interface paramètres contenu politique,
  options Masquer/Équilibré/Préférences, badges, notifications, recherche

- notifications-geo.feature: Notifications géographiques au passage <500m,
  types de logos, acceptation/rejet, gestion demi-tour, historique

Complète les features API existantes (classification-geo, scoring, mode-kids,
parametrabilite, etc.) avec l'expérience utilisateur mobile.

Aligné avec règles métier 04-algorithme-recommandation.md (sections 2.1-2.11).
2026-02-02 22:39:00 +01:00
jpgiannetti
718581b954 feat(gherkin): ajouter features API pour jauges d'intérêt
Création de 3 features Gherkin pour les tests backend des jauges d'intérêt:

- evolution-jauges.feature: Tests API pour calculs de jauges (likes auto/manuels,
  abonnements créateurs, skips), persistence PostgreSQL, bornes 0-100%, cache Redis

- jauge-initiale.feature: Tests API pour initialisation à 50% lors inscription,
  questionnaire optionnel post-MVP, recommandations cold start

- degradation-temporelle.feature: Tests API confirmant absence de dégradation
  automatique, réinitialisation manuelle avec snapshot et audit log

Complète les features UI existantes avec les aspects techniques backend.
2026-02-02 22:32:29 +01:00
jpgiannetti
2cc9da29ff feat(gherkin): enrichir scénarios jauges d'intérêt avec cas limites
Ajout de 5 nouveaux scénarios pour couvrir les cas non testés :
- Désabonnement créateur (-5% sur tous ses tags)
- Skip à 30% avec like auto standard déjà appliqué
- Skip tardif entre 30% et 79% (neutre après like auto)
- Désabonnement avec borne minimale (ne descend pas sous 0%)
- Écoute entre 10s et 30% (ni pénalité ni bonus)

Ces scénarios complètent les règles métier 03 (centres d'intérêt et jauges)
et clarifient les comportements limites du système de recommandation.
2026-02-02 22:20:56 +01:00
jpgiannetti
99328a845a refactor(gherkin): enrichir scénarios modération pour alignement parfait
Améliore les Gherkins de modération API avec détails des règles métier :
- Ajout référence Section 18 pour droits d'auteur (signalement)
- Enrichissement timestamps passages problématiques avec durées et scores (traitement)
- Amélioration template email sanctions avec sections structurées (notifications)
- Détails précis modal découverte badges au 1er signalement (communautaire)

Alignement 100% avec sections 14 et 15 des règles métier.
2026-02-02 22:08:09 +01:00
jpgiannetti
bac0423be9 feat(gherkin): ajouter features UI/Admin pour modération complète
Création de 6 nouvelles features Gherkin + documentation :

Features UI mobile (Flutter) :
- signalement-ui.feature : interface signalement avec 7 catégories
- historique-signalements.feature : suivi personnel des signalements
- badges-statistiques.feature : gamification Bronze/Argent/Or
- sanctions-appel.feature : notifications et processus d'appel

Features Admin dashboard (React) :
- dashboard-moderateur.feature : files d'attente et SLA temps réel
- outils-moderateur.feature : player Wavesurfer.js, transcription, historique créateur

Documentation :
- gherkin-moderation-overview.md : mapping complet règles métier, stats, coûts

Couverture :
- 190 scénarios couvrant 100% sections 14 (moderation-flows) et 19 (badges)
- Conformité DSA/RGPD/WCAG testée
- Stack : Go/Flutter/React avec Godog/flutter_gherkin/Cucumber.js
2026-02-02 21:58:25 +01:00
jpgiannetti
6ba0688f87 refactor(adr): remplacer Firebase par implémentation directe APNS/FCM
Remplace toutes les références au SDK Firebase par une implémentation
directe des APIs APNS (iOS) et FCM (Android) pour éliminer le vendor
lock-in et assurer la cohérence avec la stratégie self-hosted.

Modifications :
- ADR-017 : Architecture notifications avec APNS/FCM direct
- ADR-018 : Remplacement firebase.google.com/go par sideshow/apns2 + oauth2
- ADR-020 : Remplacement firebase_messaging par flutter_apns + flutter_fcm
- Règles métier 09 & 14 : Mise à jour références coûts notifications

Avantages :
- Aucun vendor lock-in (code 100% maîtrisé)
- Cohérence avec ADR-008 (self-hosted) et ADR-015 (souveraineté)
- Gratuit sans limite (APNS/FCM natifs)
- APIs standard HTTP/2 et OAuth2
2026-02-02 21:36:59 +01:00
jpgiannetti
b132fb957d feat(gherkin): compléter et aligner Gherkins radio-live avec règles métiers
Ajouts :
- Nouveau fichier comportement-auditeur-live.feature couvrant section 7.3
  - Buffer synchronisation 15s et justification vs alternatives
  - Continuation hors zone géographique
  - Reconnexion après coupure (<90s vs ≥90s)
  - Interactions disponibles (Like, Abonnement, Skip)
  - Décision définitive : pas de chat ni réactions emoji
  - Justification complète (sécurité routière, modération, DSA EU)

Corrections :
- Séparation claire contenu violent (Strike 3) vs contenu illégal (Strike 4)
- Ajout scénario dédié pour contenu illégal avec ban définitif
- Clarification notification autorités pour contenus illégaux

Alignement 100% avec docs/regles-metier/12-radio-live.md
2026-02-02 20:10:13 +01:00
jpgiannetti
4e25ceab20 fix(monetisation): aligner Gherkins avec règles métier actuelles
- Corriger seuil minimum de paiement : 20€ → 50€
- Corriger date de paiement : 5 février → 15 février
- Corriger CPM publicités créateurs : 3€/1000 écoutes (0.003€/écoute)
- Corriger revenus exemple gratuit : 12.50€ → 3.60€ pour 1200 écoutes
- Supprimer tous les scénarios d'essai gratuit (non applicable)
- Préciser délai SEPA : 1-3 jours ouvrés

Alignement complet avec ADR-009 et règles métier section 9 (monétisation).
2026-02-01 21:25:23 +01:00
jpgiannetti
267f574467 feat(gherkin): améliorer scénarios content-creation avec edge cases
- Ajouter scénarios edge cases pour robustesse production
- Aligner fichiers Gherkin avec règles métier section 4
- Préciser suppression OVH Object Storage + NGINX Cache
- Ajouter gestion états transitoires (encodage, validation)
- Ajouter limites et timeouts (uploads, brouillons)

Scénarios ajoutés :
- upload-encodage : timeout, reprise, limites uploads, conservation fichiers
- modification-suppression : suppression pendant encodage, blocage modification en validation
- metadonnees-publication : blocage pendant encodage, limite brouillons, nettoyage auto
- validation-premiers-contenus : verrouillage concurrence modérateurs

Total : +12 scénarios pour 137 scénarios au total
2026-02-01 21:21:09 +01:00
jpgiannetti
2365b7f344 feat(moderation): ajouter Gherkin modération communautaire
Ajoute moderation-communautaire.feature couvrant la Règle 15/19 :
- Système de badges (Bronze/Argent/Or)
- Score de fiabilité et priorisation
- Modal découverte au 1er signalement
- Réduction Premium -50% pour badge Or
- Limites anti-abus (10 signalements/24h)
- Audit trimestriel automatique
- Sanctions graduées (mineur/modéré/grave)

Les 4 autres fichiers de modération existants (signalement,
traitement, sanctions, préventive) sont déjà conformes à l'ADR-023
et à la Règle 14.
2026-02-01 21:10:35 +01:00