veza/docs/archive/V0_202_RELEASE_SCOPE.md

201 lines
8.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Scope v0.202 — Phase 2 Contenu (suite)
**Version cible** : v0.202 (X=2, Y=2)
**Prérequis** : v0.201 taguée et mergée dans main
**Objectif** : Phase 2 Contenu — Recherche avancée, Analytics créateur, Seller dashboard, Player, Queue
**Dernière mise à jour** : 20 février 2026
**Effort estimé** : 5-7 semaines de développement
---
## 1. Principe directeur
> **v0.202 = suite Phase 2 (Contenu) après v0.201.**
>
> Cinq axes principaux :
> 1. **Recherche avancée (Lot G)** : Filtres, tri, autocomplete, facettes, historique
> 2. **Analytics créateur (Lot H)** : Stats, graphiques, export
> 3. **Seller dashboard (Lot F)** : Stats ventes, liste produits
> 4. **Player avancé (Lot C)** : Crossfade, gapless, PiP
> 5. **Queue avancée (Lot D)** : Autoplay, queue collaborative
---
## 2. Contexte — État post v0.201
### 2.1 Livré en v0.201
| Lot | Feature | Statut |
|-----|---------|--------|
| E1 | BPM | ✅ |
| E2 | Musical key | ✅ |
| E3 | Lyrics | ✅ |
| E4 | Tags suggérés | ✅ |
### 2.2 Fondation existante (à enrichir)
| Domaine | Existant | À ajouter v0.202 |
|---------|----------|-------------------|
| **Recherche tracks** | `TrackSearchService`, GET /tracks/search, filtres BPM/durée/genre/format/date, tri (popularity, title, created_at) | musical_key, autocomplete, unification search unifiée, historique |
| **Search unifiée** | GET /search (q, type=track|user|playlist), SearchService | Filtres, tri, pagination |
| **Analytics** | Routes /api/v1/analytics/*, playback_analytics | Route créateur, graphiques, export |
| **Player** | MediaSession, usePlayer | Crossfade, gapless, PiP |
| **Queue** | Queue sync, PlayerQueue | Autoplay, queue collaborative |
---
## 3. Features IN SCOPE v0.202
### 3.1 Lot G — Recherche avancée (priorité haute)
**Objectif** : Enrichir la recherche existante.
**Effort** : L (5-7 jours)
**Référence** : Module 11 (veza_full_features_list)
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---------|-----------------|---------|----------|-------------------|
| G1 | **Filtres recherche** | musical_key manquant ; tags déjà dans TrackSearchParams | Ajouter `musical_key` à TrackSearchParams + handler | Vérifier UI SearchPage/TrackSearch utilise tous les filtres | Filtres appliqués, résultats mis à jour |
| G2 | **Tri avancé** | Tri pertinence, date, popularité, alphabétique | Déjà : sort_by, sort_order. Ajouter "relevance" si full-text | Dropdown tri dans SearchPage | Tri fonctionnel |
| G3 | **Autocomplete** | Suggestions pendant la frappe | Route GET /search/suggestions?q=… (tracks, users, playlists) ou extension GET /search avec limit=5 | Input avec dropdown debounced | Suggestions affichées, clic → recherche |
| G4 | **Recherche par type** | Tracks, artistes, playlists, utilisateurs | SearchService : param `type` existant. Vérifier cohérence | Onglets/facettes dans SearchPage | Résultats par catégorie |
| G5 | **Historique recherche** | Mémoriser les dernières recherches | Optionnel : table search_history. Sinon localStorage | Section "Récent" | Dernières recherches cliquables |
**Fichiers clés** :
- Backend : `track_search_service.go`, `search_service.go`, `search_handlers.go`, `routes_search.go`, `routes_tracks.go`
- Frontend : `TrackSearch.tsx`, `TrackSearchFilters`, `trackSearchService.ts`, `SearchPage`
---
### 3.2 Lot H — Analytics créateur (priorité haute)
**Objectif** : Dashboard analytics pour créateurs.
**Effort** : L (5-7 jours)
**Référence** : Module 12.1
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---------|-----------------|---------|----------|-------------------|
| H1 | **Stats d'écoute** | Plays par track, période, durée moyenne | Agrégation playback_analytics, route GET /analytics/creator/stats | Page /analytics ou section créateur | Chiffres affichés |
| H2 | **Graphiques** | Évolution plays, top tracks | Route GET /analytics/creator/charts | Charts (recharts ou équivalent) | Graphiques lisibles |
| H3 | **Taux de complétion** | % d'écoute complète par track | Calcul backend (plays complètes / total) | Affichage dans dashboard | Métrique visible |
| H4 | **Export données** | Export CSV/JSON des stats | Route GET /analytics/creator/export?format=csv|json | Bouton export | Fichier téléchargé |
**Fichiers clés** :
- Backend : `playback_analytics_handler.go`, `routes`, modèles analytics
- Frontend : Page Analytics, composants charts, export
---
### 3.3 Lot F — Seller dashboard (priorité moyenne)
**Objectif** : Dashboard vendeur fonctionnel.
**Effort** : M (3-4 jours)
**Référence** : Module 7.4
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---------|-----------------|---------|----------|-------------------|
| F1 | **Stats ventes** | Nombre ventes, revenus, période | Route GET /sell/stats ou agrégation Hyperswitch/marketplace | Page /sell | Chiffres affichés |
| F2 | **Liste produits** | Tracks/albums en vente par l'utilisateur | Extension catalogue existant | Liste dans seller dashboard | Produits listés |
---
### 3.4 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
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---------|-----------------|---------|----------|-------------------|
| C1 | **Crossfade** | Transition en fondu entre tracks | N/A | Logique player (gain, overlap) | Transition fluide 1-10s configurable |
| C2 | **Gapless playback** | Lecture sans silence entre tracks | N/A | Préchargement audio, Web Audio API ou HTMLMediaElement | Pas de coupure |
| C3 | **PiP** | Picture-in-Picture (si supporté) | N/A | Media Session + PiP API (document.pictureInPictureEnabled) | Fenêtre flottante |
**Fichiers clés** : `GlobalPlayer.tsx`, `AudioPlayer.tsx`, `usePlayer.ts`, `playerStore.ts`
---
### 3.5 Lot D — Queue avancée (priorité basse)
**Objectif** : Queue collaborative et autoplay.
**Effort** : M (3-4 jours)
**Référence** : Module 4.2
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---------|-----------------|---------|----------|-------------------|
| D1 | **Queue collaborative** | Partager queue en session | Modèle session queue partagée, routes queue | UI partage | Plusieurs users, même queue |
| D2 | **Autoplay** | Recommandations quand queue vide | Route GET /recommendations ou extension playlists | Section "À écouter ensuite" | Suggestions, ajout 1 clic |
---
## 4. Récapitulatif par lot
| Lot | Nom | Priorité | Effort | Features |
|-----|-----|----------|--------|----------|
| **G** | Recherche avancée | Haute | L | 5 |
| **H** | Analytics créateur | Haute | L | 4 |
| **F** | Seller dashboard | Moyenne | M | 2 |
| **C** | Player avancé | Moyenne | M | 3 |
| **D** | Queue avancée | Basse | M | 2 |
| | **TOTAL** | | **16-27j** | **16** |
---
## 5. Features HORS SCOPE v0.202
| Feature | Raison | Version cible |
|---------|--------|---------------|
| Recherche phonétique, booléenne | Complexité | v0.203+ |
| Collaborative filtering | Nécessite historique riche | v0.203+ |
| Social Trending API | Dépend recommandations | v0.203+ |
| 2FA SMS, Passkeys | v0.104 dédié | v0.104 |
| Go Live vidéo | v0.703 | v0.703 |
---
## 6. Ordre de livraison recommandé
| Semaine | Lots | Activités |
|---------|------|-----------|
| **S1** | G (Recherche) | G1G5 : filtres musical_key, tri, autocomplete, facettes, historique |
| **S2** | H (Analytics) | H1H4 : stats, graphiques, taux complétion, export |
| **S3** | F (Seller) | F1F2 : stats ventes, liste produits |
| **S4** | C (Player) | C1C3 : crossfade, gapless, PiP |
| **S5** | D (Queue) | D1D2 : autoplay, queue collaborative |
| **S6** | Stabilisation | Tests, docs, polish |
---
## 7. Branche et workflow
- **Branche** : `release/v0.202`
- **Format commit** : `feat(scope): description` (ex: `feat(search): add musical_key filter`)
- **Référence scope** : [SCOPE_CONTROL.md](SCOPE_CONTROL.md) → v0.202
- **PR** : `gh pr create --base main --head release/v0.202 --title "Release v0.202"`
---
## 8. Critères de stabilité v0.202
### 8.1 Build & compilation
- [ ] `go build ./...` — 0 erreur
- [ ] `npm run build` — 0 erreur
- [ ] `npx tsc --noEmit` — 0 erreur
### 8.2 Tests
- [ ] `go test ./...` — pas de régression
- [ ] `npm test -- --run` — pas de régression
- [ ] E2E : recherche, analytics, seller (si applicable)
### 8.3 Documentation
- [ ] FEATURE_STATUS.md mis à jour
- [ ] CHANGELOG v0.202
- [ ] MSW handlers pour nouveaux endpoints
---
## Références
- [V0_201_RELEASE_SCOPE.md](V0_201_RELEASE_SCOPE.md) — Version précédente (Lot E livré)
- [SCOPE_CONTROL.md](SCOPE_CONTROL.md) — Processus anti-scope-creep
- [FEATURE_STATUS.md](FEATURE_STATUS.md) — Statut des features
- [PROJECT_STATE.md](PROJECT_STATE.md) — État actuel du projet