veza/docs/V0_903_RELEASE_SCOPE.md

261 lines
12 KiB
Markdown
Raw Normal View History

# 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.703v0.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)