239 lines
9.2 KiB
Markdown
239 lines
9.2 KiB
Markdown
# Scope v0.201 — Phase 2 Contenu
|
|
|
|
**Version cible** : v0.201 (X=2, Y=1)
|
|
**Prérequis** : v0.103 taguée et stable
|
|
**Objectif** : Phase 2 Contenu — Recherche avancée, métadonnées enrichies, analytics créateur/vendeur
|
|
**Dernière mise à jour** : 20 février 2026
|
|
**Effort estimé** : 6-8 semaines de développement
|
|
|
|
---
|
|
|
|
## 1. Principe directeur
|
|
|
|
> **v0.201 = ouverture Phase 2 (Contenu).**
|
|
>
|
|
> Trois axes principaux :
|
|
> 1. **Recherche avancée** : Filtres, facettes, full-text, autocomplete
|
|
> 2. **Métadonnées** : BPM, key, lyrics, tags (complétion v0.103 Lot E)
|
|
> 3. **Analytics** : Dashboards créateur, stats vendeur, rapports
|
|
>
|
|
> **Carry-over v0.103** : Lots C (Player), D (Queue), E (Métadonnées), F (Seller) non livrés en v0.103 sont intégrés dans v0.201 selon priorité.
|
|
|
|
---
|
|
|
|
## 2. Contexte — État post v0.103
|
|
|
|
### 2.1 Livré en v0.103
|
|
|
|
| Lot | Feature | Statut |
|
|
|-----|---------|--------|
|
|
| A1 | OAuth Spotify | ✅ |
|
|
| A2 | 2FA SMS | Reporté v0.104 |
|
|
| A3 | Passkeys/WebAuthn | Reporté v0.104 |
|
|
| A4 | Sessions enrichies | ✅ |
|
|
| B1 | Bannière profil | ✅ |
|
|
| B2 | Liens sociaux | ✅ |
|
|
| B3 | Profil privé | ✅ |
|
|
|
|
### 2.2 Reporté de v0.103 vers v0.201
|
|
|
|
| Lot | Feature | Priorité v0.201 |
|
|
|-----|---------|-----------------|
|
|
| C | Player (crossfade, gapless, PiP) | Moyenne |
|
|
| D | Queue collaborative, Autoplay | Basse |
|
|
| E | Métadonnées (BPM, key, lyrics, tags) | Haute |
|
|
| F | Seller dashboard (stats, produits) | Moyenne |
|
|
|
|
### 2.3 Cible v0.201
|
|
|
|
- **Features cumulées** : ~330 / 600 (55%)
|
|
- **Delta** : +60 features individuelles
|
|
- **Phase 2** : focus contenu et découverte
|
|
|
|
---
|
|
|
|
## 3. Features IN SCOPE v0.201
|
|
|
|
### 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** | Filtres par genre, BPM, key, durée, date | Query params sur GET /search | UI filtres dans SearchPage | Filtres appliqués, résultats mis à jour |
|
|
| G2 | **Tri avancé** | Tri par pertinence, date, popularité, alphabétique | Paramètre `sort` | Dropdown tri | Tri fonctionnel |
|
|
| G3 | **Autocomplete** | Suggestions pendant la frappe | Route /search/suggestions ou extension | Input avec dropdown | Suggestions affichées |
|
|
| G4 | **Recherche par type** | Tracks, artistes, playlists, utilisateurs | Paramètre `type` ou endpoints dédiés | Onglets ou facettes | Résultats par catégorie |
|
|
| G5 | **Historique recherche** | Mémoriser les dernières recherches | Table/search_history ou localStorage | Section historique | Dernières recherches cliquables |
|
|
|
|
**Features list v1.0** : 352-365 (Module 11)
|
|
|
|
---
|
|
|
|
### 3.2 Lot E (complétion) — Métadonnées enrichies
|
|
|
|
**Objectif** : Compléter 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) | Migration `bpm`, CRUD | TrackDetail, édition | BPM visible et éditable |
|
|
| E2 | **Musical key** | Clé musicale (C, Am, etc.) | Migration `key`, CRUD | TrackDetail, édition | Key visible et éditable |
|
|
| E3 | **Lyrics** | Paroles statiques (synchro optionnelle) | Table lyrics, route GET/POST | TrackDetail, player overlay | Paroles affichées |
|
|
| E4 | **Tags suggérés** | Suggestions de tags (mock ou API) | Route ou logique basée sur genre/BPM | UI édition track | Tags proposés, ajout 1 clic |
|
|
|
|
**Features list v1.0** : 95, 96, 102, 105
|
|
|
|
---
|
|
|
|
### 3.3 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 | Page /analytics ou section | Chiffres affichés |
|
|
| H2 | **Graphiques** | Évolution plays, top tracks | Route /analytics/creator ou extension | Charts (recharts ou équivalent) | Graphiques lisibles |
|
|
| H3 | **Taux de complétion** | % d'écoute complète par track | Calcul backend | Affichage dans dashboard | Métrique visible |
|
|
| H4 | **Export données** | Export CSV/JSON des stats | Route GET /analytics/export | Bouton export | Fichier téléchargé |
|
|
|
|
**Features list v1.0** : 381-395
|
|
|
|
---
|
|
|
|
### 3.4 Lot F (complétion) — Seller dashboard
|
|
|
|
**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 /sell/stats ou agrégation | 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 |
|
|
|
|
**Features list v1.0** : 266-268
|
|
|
|
---
|
|
|
|
### 3.5 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 | Transition fluide 1-10s configurable |
|
|
| C2 | **Gapless playback** | Lecture sans silence entre tracks | N/A | Préchargement audio | Pas de coupure |
|
|
| C3 | **PiP** | Picture-in-Picture (si supporté) | N/A | Media Session + PiP API | Fenêtre flottante |
|
|
|
|
**Features list v1.0** : 115, 116, 121
|
|
|
|
---
|
|
|
|
### 3.6 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 | UI partage | Plusieurs users, même queue |
|
|
| D2 | **Autoplay** | Recommandations quand queue vide | Route recommandations | Section "À écouter ensuite" | Suggestions, ajout 1 clic |
|
|
|
|
**Features list v1.0** : 134, 135
|
|
|
|
---
|
|
|
|
## 4. Récapitulatif par lot
|
|
|
|
| Lot | Nom | Priorité | Effort | Features |
|
|
|-----|-----|----------|--------|----------|
|
|
| **G** | Recherche avancée | Haute | L | 5 |
|
|
| **E** | Métadonnées enrichies | Haute | M | 4 |
|
|
| **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** | | **20-32j** | **20** |
|
|
|
|
---
|
|
|
|
## 5. Features HORS SCOPE v0.201
|
|
|
|
| Feature | Raison | Version cible |
|
|
|---------|--------|---------------|
|
|
| Recherche phonétique, booléenne | Complexité | v0.202+ |
|
|
| Collaborative filtering | Nécessite historique riche | v0.202+ |
|
|
| Social Trending API | Dépend recommandations | v0.301+ |
|
|
| 2FA SMS, Passkeys | v0.104 dédié | v0.104 |
|
|
| Go Live vidéo | v0.703 | v0.703 |
|
|
|
|
---
|
|
|
|
## 6. Critères de stabilité v0.201
|
|
|
|
### 6.1 Build & compilation
|
|
- [ ] `go build ./...` — 0 erreur
|
|
- [ ] `npm run build` — 0 erreur
|
|
- [ ] `npx tsc --noEmit` — 0 erreur
|
|
|
|
### 6.2 Tests
|
|
- [ ] `go test ./...` — pas de régression
|
|
- [ ] `npm test -- --run` — pas de régression
|
|
- [ ] E2E : recherche, analytics, seller
|
|
|
|
### 6.3 Documentation
|
|
- [ ] FEATURE_STATUS.md mis à jour
|
|
- [ ] CHANGELOG v0.201
|
|
- [ ] MSW handlers pour nouveaux endpoints
|
|
|
|
---
|
|
|
|
## 7. Ordre de livraison recommandé
|
|
|
|
| Semaine | Lots | Activités |
|
|
|---------|------|------------|
|
|
| **S1** | E (Métadonnées) | BPM, key, lyrics, tags — base pour recherche |
|
|
| **S2** | G (Recherche) | Filtres, tri, autocomplete, facettes |
|
|
| **S3** | H (Analytics) | Stats créateur, graphiques, export |
|
|
| **S4** | F (Seller) | Stats vendeur, liste produits |
|
|
| **S5** | C (Player) | Crossfade, gapless, PiP |
|
|
| **S6** | D (Queue) | Autoplay, queue collaborative (si temps) |
|
|
| **S7-8** | Stabilisation | Tests, docs, polish |
|
|
|
|
---
|
|
|
|
## 8. Branche et workflow
|
|
|
|
- **Branche** : `release/v0.201`
|
|
- **Format commit** : `feat(scope): description` (ex: `feat(search): add BPM filter`)
|
|
- **Référence scope** : [SCOPE_CONTROL.md](SCOPE_CONTROL.md) → v0.201
|
|
|
|
---
|
|
|
|
## 9. Préparation v0.202 (Phase 2 suite)
|
|
|
|
| Thème | Focus |
|
|
|-------|-------|
|
|
| Recommandations | Algorithme, collaborative filtering |
|
|
| Recherche avancée | Phonétique, booléenne, sauvegardes |
|
|
| Social Trending | API `/social/trending` |
|
|
| Cible | ~360 / 600 features |
|
|
|
|
---
|
|
|
|
## Références
|
|
|
|
- [V0_103_RELEASE_SCOPE.md](V0_103_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)
|
|
- [PROJECT_STATE.md](PROJECT_STATE.md) — État actuel du projet
|