# V0.903 Release Scope — Stabilisation v1.0 & Launch Readiness **Statut** : Planifié **Phase** : 9 (v1.0 Launch — Final) **Prérequis** : v0.902 (taguée) **Date cible** : TBD **Estimation** : ~4 sprints (20 jours ouvrés) **Précédente** : [v0.902](archive/V0_902_RELEASE_SCOPE.md) --- ## 1. Objectif Dernière version avant la v1.0. Finalise les modules **Recherche & Recommandations** (recherche phonétique, correction orthographique, recherches sauvegardées, algorithme de recommandation, playlists auto-générées), **Player & Playlists** (smart playlists, export M3U, fusion/duplication), **Auth & Sécurité** (session management device list, notification login inhabituel, historique connexions, CAPTCHA, historique mots de passe). Inclut une phase de **stabilisation** intensive (load testing k6, optimisation Redis/DB/CDN) et la **documentation v1.0 complète**. Se conclut par le tag **v1.0**. --- ## 2. État actuel (post-v0.902) | Composant | État | Détail | |-----------|------|--------| | **Recherche fulltext** | ✅ Livré v0.203 | pg_trgm fuzzy, AND/OR/NOT, autocomplete | | **Recherche phonétique** | ❌ Absent | Pas de soundex/metaphone | | **Correction orthographique** | ❌ Absent | Pas de "did you mean?" | | **Recherches sauvegardées** | ❌ Absent | Pas de persist des recherches | | **Algorithme recommandation** | ❌ Absent | Autoplay basique (random), pas de collaborative filtering | | **Playlists auto-générées** | ❌ Absent | Pas de "Discover Weekly" type | | **Smart playlists** | ❌ Absent | Playlists statiques uniquement | | **Export M3U** | ❌ Absent | Pas d'export playlist | | **Merge/duplicate playlists** | ❌ Absent | Pas de fusion ni duplication | | **Session management** | ❌ Absent | Pas de liste des devices actifs | | **Login inhabituel notif** | ❌ Absent | Pas de détection | | **Historique connexions** | ❌ Absent | Pas de log | | **CAPTCHA** | ❌ Absent | Pas de protection bot | | **Historique mots de passe** | ❌ Absent | Pas d'empêchement réutilisation | | **Load testing** | ❌ Absent | Pas de k6/vegeta | | **Documentation v1.0** | ⚠️ Partiel | API_REFERENCE existe, manque production guide | --- ## 3. Lots ### Lot ST1 — Recherche & Recommandations | # | Tâche | Fichiers impactés | Effort | |---|-------|--------------------|--------| | ST1-01 | Recherche phonétique — extension PostgreSQL `pg_trgm` + `fuzzystrmatch` (soundex, metaphone), intégration dans search query | Backend | M | | ST1-02 | Correction orthographique — "Did you mean...?" basé sur trigram similarity > 0.3, suggestion de la meilleure correspondance | Backend, frontend | M | | ST1-03 | Recherches sauvegardées — `POST /search/saved`, `GET /search/saved`, `DELETE /search/saved/:id`, migration `132_saved_searches.sql` | Backend, frontend | M | | ST1-04 | Algorithme recommandation — collaborative filtering basique (users who listened to X also listened to Y), `GET /tracks/recommendations` amélioré | Backend | L | | ST1-05 | Playlists auto-générées — "Discover Weekly" (30 tracks recommandées, régénérées chaque lundi), "Your Top Tracks" (top plays 30j) | Backend, frontend | L | | ST1-06 | Frontend — "Did you mean" dans SearchPage, section saved searches, playlists auto dans Library | Frontend | M | | ST1-07 | Tests — phonetic search, suggestion quality, saved searches CRUD, recommendation relevance | Tests | M | ### Lot ST2 — Player & Playlists Final | # | Tâche | Fichiers impactés | Effort | |---|-------|--------------------|--------| | ST2-01 | Smart playlists — règles dynamiques (genre=hiphop AND bpm>120 AND added_last_30d), auto-update, migration `133_smart_playlists.sql` | Backend | L | | ST2-02 | Export M3U — `GET /playlists/:id/export?format=m3u` retourne fichier M3U avec URLs des tracks | Backend | S | | ST2-03 | Merge playlists — `POST /playlists/merge` (body: playlist_ids[], target_name), déduplique les tracks | Backend | M | | ST2-04 | Duplicate playlist — `POST /playlists/:id/duplicate` crée une copie avec nouveau nom | Backend | S | | ST2-05 | Frontend — boutons Export, Merge, Duplicate dans PlaylistView, Smart Playlist builder (formulaire de règles) | Frontend | L | | ST2-06 | Tests — smart playlist auto-update, M3U format, merge dedup, duplicate | Tests | M | ### Lot ST3 — Auth & Sécurité Final | # | Tâche | Fichiers impactés | Effort | |---|-------|--------------------|--------| | ST3-01 | Session management — migration `134_sessions.sql` (table sessions: user_id, device, ip, user_agent, created_at, last_active_at), `GET /auth/sessions`, `DELETE /auth/sessions/:id` | Backend | M | | ST3-02 | Frontend session management — page dans Settings/Security avec liste des devices, bouton "Revoke" | Frontend | M | | ST3-03 | Login inhabituel — détecter nouvelle IP/device non reconnu, envoyer email notification, flag `is_suspicious` sur session | Backend | M | | ST3-04 | Historique connexions — `GET /auth/login-history` (dernières 50 connexions avec IP, device, date, status) | Backend, frontend | M | | ST3-05 | CAPTCHA — intégration hCaptcha/reCAPTCHA sur login après 3 échecs, registration, password reset | Backend middleware, frontend | M | | ST3-06 | Historique mots de passe — migration ajout `password_history JSONB` sur users, empêcher réutilisation des 5 derniers | Backend | M | | ST3-07 | Tests — session CRUD, suspicious login detection, CAPTCHA verification, password history | Tests | M | ### Lot ST4 — Performance & Load Testing | # | Tâche | Fichiers impactés | Effort | |---|-------|--------------------|--------| | ST4-01 | k6 load tests — scripts pour auth flow, search, marketplace, streaming, WebSocket chat | `tests/load/` (nouveau) | L | | ST4-02 | Redis cache optimization — cache strategy review, cache-aside pattern sur queries fréquentes (search, trending, analytics) | Backend | M | | ST4-03 | DB query optimization — EXPLAIN ANALYZE sur les 10 queries les plus lentes, ajout index manquants, query rewrite | Backend | M | | ST4-04 | CDN configuration — cache headers sur assets statiques, HLS segments, images produits | Nginx/HAProxy config | M | | ST4-05 | Performance targets validation — p50 < 50ms, p95 < 200ms, p99 < 500ms sur les endpoints critiques | Tests | M | ### Lot ST5 — Documentation v1.0 | # | Tâche | Fichiers impactés | Effort | |---|-------|--------------------|--------| | ST5-01 | API Reference complète — tous les endpoints documentés (swagger + API_REFERENCE.md final) | `docs/API_REFERENCE.md` | L | | ST5-02 | Production Deployment Guide — docker-compose prod, env vars, backup strategy, monitoring setup, scaling guide | `docs/PRODUCTION_GUIDE.md` (nouveau) | L | | ST5-03 | README v1.0 — mise à jour avec architecture, quick start, features list, contributing guide | `README.md` | M | | ST5-04 | Migration Guide — liste toutes les migrations (1 à 134+), procédure upgrade, rollback | `docs/MIGRATION_GUIDE.md` (nouveau) | M | | ST5-05 | CHANGELOG v1.0 — historique complet de toutes les versions v0.101 à v1.0 | `CHANGELOG.md` | M | ### Lot REL — Release v1.0 | # | Tâche | Fichiers impactés | Effort | |---|-------|--------------------|--------| | REL-01 | E2E pass complet — tous les smoke tests de v0.703 à v0.903 exécutés | Smoke tests | L | | REL-02 | Security audit final — vérifier headers, rate limiting, auth, GDPR | Audit | M | | REL-03 | Performance benchmark final — k6 results, Lighthouse scores | Benchmark | M | | REL-04 | PROJECT_STATE, FEATURE_STATUS — mise à jour finale v1.0 | `docs/` | S | | REL-05 | RETROSPECTIVE_V0903.md + RETROSPECTIVE_V1.md | `docs/` | M | | REL-06 | Tag v0.903, tag v1.0 | Git | S | --- ## 4. Hors scope v0.903 / v1.0 (reporté v2.0) | Élément | Raison | |---------|--------| | Module 8 — Education (cours, certificats) | Abandonné — complexité, pas de demande | | Module 15 — IA (mastering auto, stem separation, AI mixing) | Trop avancé, R&D nécessaire | | Module 17 — Collaboration temps réel (DAW, whiteboard) | Infrastructure spécialisée requise | | Module 18 — Blockchain/Web3 (NFT, tokens, DAO) | Priorité basse, marché incertain | | Module 19 — Intégrations DAW (Ableton Link, FL Studio, etc.) | Plugins spécialisés requis | | Module 20 — Applications natives (iOS, Android, Desktop) | Post-v1.0, React Native ou Tauri | | Module 21 — Gamification (XP, niveaux, achievements) | Nice-to-have, pas critique pour v1.0 | | 2FA SMS / Passkeys | Infra Twilio, WebAuthn — v1.1 | | Chromecast / AirPlay | Protocoles propriétaires — v2.0 | | Spectrogram / equalizer visualizer | Nice-to-have — v2.0 | | PayPal, Crypto payments | Intégration supplémentaire — v2.0 | | GraphQL API | REST suffisant pour v1.0 | | SDK JavaScript/Python/Go | Post-launch | --- ## 5. Critères d'acceptation v0.903 - [ ] Recherche phonétique : "hip hop" trouve "hiphop" et inversement - [ ] "Did you mean" : suggestion si < 3 résultats et similarity > 0.3 - [ ] Recherches sauvegardées : CRUD, max 50 par user - [ ] Recommandations : collaborative filtering, au moins 10 tracks pertinentes - [ ] Playlists auto : "Discover Weekly" (30 tracks), "Your Top Tracks" (20 tracks) - [ ] Smart playlists : builder de règles, auto-update quotidien - [ ] Export M3U : fichier téléchargeable avec URLs valides - [ ] Merge/duplicate : fusion avec dedup, copie fidèle - [ ] Session management : liste devices, revoke, logout all - [ ] Login inhabituel : email envoyé, flag suspicious - [ ] CAPTCHA : hCaptcha sur login (3 échecs), register, reset - [ ] Password history : 5 derniers refusés - [ ] k6 load tests : tous les scénarios passent à 100 concurrent users - [ ] p95 latency < 200ms sur les endpoints critiques - [ ] Documentation : API Reference, Production Guide, README, Migration Guide - [ ] Tous les smoke tests v0.703–v0.903 passent - [ ] Tag v0.903 et tag v1.0 créés --- ## 6. Critères d'acceptation v1.0 | Critère | Cible | |---------|-------| | Modules opérationnels | 15+ / 24 | | Features livrées | ~470 / 600 (78%) | | Score maturité produit | 8/10 | | Tests backend passants | 100% | | Frontend build | 0 errors | | Lighthouse Performance | ≥ 85 | | Lighthouse Accessibility | ≥ 90 | | Lighthouse PWA | ≥ 90 | | p95 latency | < 200ms | | Security headers | All present | | GDPR compliance | ✅ (export + deletion) | | Documentation | API Ref + Production Guide + README | --- ## 7. Risques | Risque | Mitigation | |--------|------------| | Collaborative filtering froid (pas assez de données) | Fallback sur genre/BPM similarity | | Smart playlists query lente | Index optimisés, cache résultat, limit 500 tracks | | k6 load test révèle des bottlenecks | 2 sprints buffer pour fixes perf | | CAPTCHA UX friction | Seulement après échecs, pas au premier login | | Password history migration lourde | Hasher progressivement à chaque changement | | Documentation effort sous-estimé | Paralléliser avec le dev, pas en dernier | --- ## 8. Architecture v1.0 finale ```mermaid graph TB subgraph clients [Clients] WEB[Web App React PWA] end subgraph gateway [Gateway] HAP[HAProxy LB] end subgraph backend [Backend Go] API[API Server] WS[WebSocket Hub Chat] WRK[Background Workers] end subgraph data [Data Layer] PG[(PostgreSQL 16)] RD[(Redis 7)] S3[(MinIO S3)] end subgraph monitoring [Monitoring] PROM[Prometheus] GRAF[Grafana] ALERT[Alertmanager] end subgraph external [External] HS[Hyperswitch Payments] SC[Stripe Connect] SG[SendGrid Email] GP[Giphy API] GEO[MaxMind GeoIP] end WEB --> HAP HAP --> API HAP --> WS API --> PG API --> RD API --> S3 API --> HS API --> SC API --> SG API --> GP API --> GEO WS --> PG WS --> RD WRK --> PG WRK --> RD WRK --> S3 WRK --> SG API --> PROM WS --> PROM PROM --> GRAF PROM --> ALERT ``` --- ## 9. Références - [V0_902_RELEASE_SCOPE.md](archive/V0_902_RELEASE_SCOPE.md) - [SCOPE_CONTROL.md](SCOPE_CONTROL.md) - [ORIGIN_FEATURES_REGISTRY.md](veza-docs/ORIGIN/ORIGIN_FEATURES_REGISTRY.md) - [ORIGIN_MASTER_ARCHITECTURE.md](veza-docs/ORIGIN/ORIGIN_MASTER_ARCHITECTURE.md) - [veza_full_features_list.md](docs/archive/root-md/veza_full_features_list.md) (600 features cible) - `veza-backend-api/internal/` (backend complet) - `apps/web/src/` (frontend complet)