veza/docs/archive/V0_103_RELEASE_SCOPE.md

235 lines
9.7 KiB
Markdown

# Scope v0.103 — Clôture Phase 1 (Fondation)
**Version cible** : v0.103 (X=1, Y=3)
**Prérequis** : v0.102 taguée et stable
**Objectif** : Finaliser la Phase 1 Fondation — auth avancée, profils complets, player/queue avancés, métadonnées enrichies, seller dashboard shell
**Dernière mise à jour** : 20 février 2026
**Effort estimé** : 4-6 semaines de développement
---
## 1. Principe directeur
> **v0.103 = clôture Phase 1 (Fondation).**
>
> Trois axes :
> 1. **Auth avancée** : OAuth Spotify, 2FA SMS, Passkeys, historique connexions
> 2. **Profils & Player** : Bannière profil, liens sociaux, profil privé ; crossfade, gapless, PiP ; queue collaborative
> 3. **Métadonnées & Seller** : BPM, key, lyrics, tags auto ; seller dashboard shell fonctionnel
>
> **Règles** :
> - Aucune nouvelle route/page majeure hors scope (pas de `/education`, `/studio`, `/nft`)
> - Aucune nouvelle dépendance lourde (sauf correctif sécurité)
> - Chaque feature doit correspondre à un item de `docs/archive/root-md/veza_full_features_list.md`
> - Chaque feature livrée doit avoir : tests, story Storybook, documentation
---
## 2. Contexte — État v0.102
### 2.1 Héritage v0.102
| Domaine | Statut v0.102 |
|---------|---------------|
| Gear, Live, Queue, Developer | Routes opérationnelles |
| Playlists | Share, Recommendations, Export, Duplicate activés |
| Social | Like/Comment, badges, trending documenté |
| Player | Vitesse, Media Session, waveform |
| API Keys | CRUD, X-API-Key, CreateAPIKeyModal |
### 2.2 Cible v0.103
- **Features cumulées** : ~270 / 600 (45%)
- **Delta** : +40 features individuelles
- **Phase 1** : complète après v0.103
---
## 3. Features IN SCOPE v0.103
### 3.1 Lot A — Auth avancée (priorité haute)
**Objectif** : Étendre les options d'authentification.
**Effort** : M (3-5 jours)
**Référence** : Module 1 (Auth)
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---------|-----------------|---------|----------|-------------------|
| A1 | **OAuth Spotify** | Intégration OAuth Spotify (comme Google/GitHub) | Provider OAuth à ajouter | Bouton login | Login Spotify fonctionnel |
| A2 | **2FA SMS** | Alternative au TOTP pour 2FA (envoi code SMS) | Service SMS, routes 2FA SMS | Option dans settings 2FA | Reporté v0.104 — requiert Twilio + users.phone_number |
| A3 | **Passkeys / WebAuthn** | Authentification sans mot de passe | WebAuthn backend | Bouton "Utiliser Passkey" | Reporté v0.104 — requiert go-webauthn + webauthn_credentials |
| A4 | **Historique connexions** | Liste des sessions actives, déconnexion à distance | Routes sessions, dernière activité | Page /settings/sessions enrichie | Historique visible, révocation possible |
**Features list v1.0** : 7 (Spotify), 20 (2FA SMS), 22 (Passkeys), 26 (historique)
---
### 3.2 Lot B — Profils complets (priorité moyenne)
**Objectif** : Enrichir les profils utilisateur.
**Effort** : S (2-3 jours)
**Référence** : Module 2
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---------|-----------------|---------|----------|-------------------|
| B1 | **Bannière profil** | Image bannière personnalisable (upload, crop) | Route upload bannière, champ `banner_url` | Composant Bannière dans UserProfile | Bannière affichée et éditable |
| B2 | **Liens sociaux** | Liens externes (Twitter, YouTube, etc.) sur le profil | Champ `social_links` (JSON) | Section liens dans profil | Liens cliquables |
| B3 | **Profil privé** | Option pour masquer le profil public | Champ `is_private` | Toggle settings, message "Profil privé" | Profil masqué si activé |
**Features list v1.0** : 32 (bannière), 44 (liens sociaux), 42 (profil privé)
---
### 3.3 Lot C — Player avancé (priorité moyenne)
**Objectif** : Améliorer l'expérience d'écoute.
**Effort** : M (2-4 jours)
**Référence** : Module 4.1 (features 106-125)
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---------|-----------------|---------|----------|-------------------|
| C1 | **Crossfade** | Transition en fondu entre tracks | N/A | Logique player | Transition fluide 1-10s configurable |
| C2 | **Gapless playback** | Lecture sans silence entre tracks | N/A | Préchargement audio | Pas de coupure entre pistes |
| C3 | **PiP (Picture-in-Picture)** | Mode mini player en overlay vidéo | N/A | Media Session + PiP API | Fenêtre flottante si supporté |
**Features list v1.0** : 115 (crossfade), 116 (gapless), 121 (PiP)
---
### 3.4 Lot D — Queue avancée (priorité basse)
**Objectif** : Queue collaborative et autoplay.
**Effort** : M (3-4 jours)
**Référence** : Module 4.2 (features 126-135)
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---------|-----------------|---------|----------|-------------------|
| D1 | **Queue collaborative** | Partager une queue en session (inviter, synchroniser) | Modèle session queue partagée | UI partage queue | Plusieurs utilisateurs, même queue |
| D2 | **Autoplay / Recommandations** | Quand la queue se termine, proposer des tracks similaires | Route recommandations basée sur écoute | Section "À écouter ensuite" | Suggestions affichées, ajout en 1 clic |
**Features list v1.0** : 134 (queue collaborative), 135 (autoplay)
---
### 3.5 Lot E — Métadonnées enrichies (priorité moyenne)
**Objectif** : Enrichir les métadonnées des tracks.
**Effort** : M (3-5 jours)
**Référence** : Module 3.3
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---------|-----------------|---------|----------|-------------------|
| E1 | **BPM** | Champ BPM (beats per minute) sur les tracks | Migration `bpm` | Affichage + édition dans TrackDetail | BPM visible et éditable |
| E2 | **Musical key** | Clé musicale (C, Am, etc.) | Migration `key` | Affichage + édition | Key visible |
| E3 | **Lyrics** | Paroles synchronisées ou statiques | Modèle/table lyrics, route | Affichage dans TrackDetail ou player | Paroles affichées |
| E4 | **Tags auto** | Suggestions de tags basées sur l'audio (ou mock) | Route ou intégration | UI tags dans édition track | Tags proposés |
**Features list v1.0** : 95 (BPM), 96 (key), 102 (lyrics), 105 (tags auto)
---
### 3.6 Lot F — Seller dashboard shell (priorité basse)
**Objectif** : Rendre le seller dashboard fonctionnel avec des stats basiques.
**Effort** : S (1-2 jours)
**Référence** : Module 7.4
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---------|-----------------|---------|----------|-------------------|
| F1 | **Stats ventes** | Nombre de ventes, revenus (données mock ou réelles) | Route `/sell/stats` ou agrégation | Dashboard vendeur | Chiffres affichés |
| F2 | **Liste produits vendus** | Tracks/albums mis en vente par l'utilisateur | Route existante ou extension | Liste dans seller dashboard | Produits listés |
**Features list v1.0** : M7.4 (seller dashboard)
---
## 4. Récapitulatif par lot
| Lot | Nom | Priorité | Effort | Features |
|-----|-----|----------|--------|----------|
| **A** | Auth avancée | Haute | M | 4 |
| **B** | Profils complets | Moyenne | S | 3 |
| **C** | Player avancé | Moyenne | M | 3 |
| **D** | Queue avancée | Basse | M | 2 |
| **E** | Métadonnées enrichies | Moyenne | M | 4 |
| **F** | Seller dashboard | Basse | S | 2 |
| | **TOTAL** | | **12-20j** | **18** |
---
## 5. Features HORS SCOPE v0.103
| Feature | Raison | Version cible |
|---------|--------|---------------|
| Live streaming vidéo (Go Live) | Périmètre trop large | v0.703 |
| Social trending API | Report v0.102 | v0.301+ |
| Paiement Hyperswitch réel | Nécessite seller mature | v0.402 |
| PWA, WebRTC | Focus web classique d'abord | v0.803, v0.703 |
| Nouvelles routes `/education`, `/studio`, `/nft` | Hors Phase 1 | v0.5xx+ |
| Gamification, IA features | Modules entiers | v0.901, v0.701 |
---
## 6. Critères de stabilité v0.103
### 6.1 Build & compilation
- [ ] `go build ./...` (backend) — 0 erreur
- [ ] `cargo build --release` (chat-server, stream-server)
- [ ] `npm run build` (frontend)
- [ ] `npx tsc --noEmit`
### 6.2 Tests
- [ ] `go test ./...` (backend)
- [ ] `npm test -- --run` (frontend)
- [ ] `npm run test:storybook` — 0 erreur console/réseau
- [ ] E2E : auth, smoke, playlists, search, queue, profils
### 6.3 Documentation
- [ ] `FEATURE_STATUS.md` mis à jour
- [ ] `V0_103_RELEASE_SCOPE.md` checklist cochée
- [ ] Changelog v0.103
- [ ] MSW handlers pour nouveaux endpoints
---
## 7. Ordre de livraison recommandé
| Semaine | Lots | Activités |
|---------|------|-----------|
| **S1** | A (Auth) | OAuth Spotify, 2FA SMS ou Passkeys |
| **S2** | B + C | Profils (bannière, liens, privé), Player (crossfade, gapless) |
| **S3** | D + E | Queue avancée, métadonnées (BPM, key, lyrics) |
| **S4** | F + stabilisation | Seller dashboard, tests, documentation |
---
## 8. Branche et workflow
- **Branche** : `release/v0.103`
- **Feature branches** : `feat/v0.103-oauth-spotify`, `feat/v0.103-profiles`, etc.
- **Format commit** : `feat(scope): description` (ex: `feat(auth): add OAuth Spotify provider`)
---
## 9. Préparation v0.201 (Phase 2 — Contenu)
Après le tag v0.103, la Phase 2 (0.201-0.203) ouvrira :
| Thème | Focus |
|-------|-------|
| Recherche avancée | Filtres, facettes, full-text |
| Métadonnées formats | Support formats additionnels |
| Analytics enrichis | Dashboards, rapports |
| Cible | ~330 / 600 features |
---
## Références
- [V0_102_RELEASE_SCOPE.md](V0_102_RELEASE_SCOPE.md) — Version précédente
- [SCOPE_CONTROL.md](SCOPE_CONTROL.md) — Processus anti-scope-creep
- [FEATURE_STATUS.md](FEATURE_STATUS.md) — Statut des features
- [veza_full_features_list.md](archive/root-md/veza_full_features_list.md) — Cible 1.0 (600 features)