176 lines
7.5 KiB
Markdown
176 lines
7.5 KiB
Markdown
# Scope v0.203 — Phase 2 Contenu (finalisation)
|
||
|
||
**Version cible** : v0.203 (X=2, Y=3)
|
||
**Prérequis** : v0.202 taguée et mergée dans main
|
||
**Objectif** : Finaliser Phase 2 — Queue collaborative, recherche enrichie, Social Trending
|
||
**Dernière mise à jour** : 20 février 2026
|
||
**Effort estimé** : 3-4 semaines de développement
|
||
|
||
---
|
||
|
||
## 1. Principe directeur
|
||
|
||
> **v0.203 = dernière version Phase 2 (Contenu) avant Phase 3 (Social).**
|
||
>
|
||
> Trois axes principaux :
|
||
> 1. **Queue collaborative (D1)** : Partager une queue en session
|
||
> 2. **Recherche enrichie (Lot K)** : Phonétique, opérateurs booléens
|
||
> 3. **Social Trending (Lot L)** : API `/social/trending`, brancher l’UI existante
|
||
|
||
---
|
||
|
||
## 2. Contexte — État post v0.202
|
||
|
||
### 2.1 Livré en v0.202
|
||
|
||
| Lot | Feature | Statut |
|
||
|-----|---------|--------|
|
||
| G | Recherche avancée (musical_key, tri pertinence, autocomplete, facettes, historique) | ✅ |
|
||
| H | Analytics créateur (stats, charts, completion rate, export) | ✅ |
|
||
| F | Seller dashboard (GET /sell/stats, liste produits) | ✅ |
|
||
| C | Player (crossfade, gapless, PiP) | ✅ |
|
||
| D2 | Autoplay (GET /tracks/recommendations) | ✅ |
|
||
|
||
### 2.2 Fondation existante (à enrichir)
|
||
|
||
| Domaine | Existant | À ajouter v0.203 |
|
||
|---------|----------|-------------------|
|
||
| **Queue** | Queue sync, PlayerQueue, autoplay | D1 : session partagée, routes queue collaborative |
|
||
| **Recherche** | GET /search, /tracks/search, suggestions, filters | Phonétique (fuzzy), opérateurs booléens (AND/OR/NOT) |
|
||
| **Social** | Feed, posts, groups, SocialViewTrending (statique) | API GET /social/trending basée sur données réelles |
|
||
|
||
---
|
||
|
||
## 3. Features IN SCOPE v0.203
|
||
|
||
### 3.1 Lot D1 — Queue collaborative (priorité moyenne)
|
||
|
||
**Objectif** : Permettre à plusieurs utilisateurs de partager une queue en session.
|
||
**Effort** : M (4-5 jours)
|
||
**Référence** : Module 4.2, feature 134 (veza_full_features_list)
|
||
|
||
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|
||
|---|---------|-----------------|---------|----------|-------------------|
|
||
| D1.1 | **Session queue** | Créer/joindre une session de queue partagée | Modèle `queue_session`, routes POST/GET/DELETE `/queue/session` | UI création / lien partage | Session créée, lien généré |
|
||
| D1.2 | **Sync temps réel** | Participants voient la même queue | WebSocket ou polling ; extension queue API | PlayerQueue affiche queue partagée si session active | Ajout/suppression visible par tous |
|
||
| D1.3 | **Contrôles** | Qui peut modifier la queue | Rôle créateur vs participant (optionnel v1) | Bouton « Passer la main » ou permissions | Au moins créateur peut modifier |
|
||
|
||
**Fichiers clés** :
|
||
- Backend : `queue_service.go`, `queue_handler.go`, `routes_queue.go`, modèles queue_session
|
||
- Frontend : `PlayerQueue.tsx`, `useQueueSync.ts`, queue API service
|
||
- Chat/WebSocket : réutilisation ou extension pour sync queue (si pertinent)
|
||
|
||
---
|
||
|
||
### 3.2 Lot K — Recherche enrichie (priorité haute)
|
||
|
||
**Objectif** : Améliorer la pertinence et la flexibilité de la recherche.
|
||
**Effort** : M (3-4 jours)
|
||
**Référence** : Module 11, features 361, 363
|
||
|
||
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|
||
|---|---------|-----------------|---------|----------|-------------------|
|
||
| K1 | **Recherche phonétique** | Tolérance aux fautes de frappe, similarité sonore | Extension Postgres `pg_trgm` ou équivalent ; `similarity()` dans TrackSearchService | Aucun (transparent) | « synthewave » → résultats « synthwave » |
|
||
| K2 | **Opérateurs booléens** | AND, OR, NOT, guillemets pour phrase exacte | Parser query dans SearchService / TrackSearchService ; mapping vers tsquery ou ILIKE | Option avancée ou syntaxe dans input | `rock AND jazz` → intersection ; `"love song"` → phrase exacte |
|
||
|
||
**Fichiers clés** :
|
||
- Backend : `track_search_service.go`, `search_service.go`, migrations (pg_trgm si nécessaire)
|
||
- Frontend : `SearchPageHeader.tsx`, aide contextuelle sur syntaxe booléenne (tooltip)
|
||
|
||
---
|
||
|
||
### 3.3 Lot L — Social Trending (priorité haute)
|
||
|
||
**Objectif** : Remplacer les tags statiques par des données réelles.
|
||
**Effort** : S (2-3 jours)
|
||
**Référence** : Module 6, feature 214 ; SocialViewTrending existant
|
||
|
||
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|
||
|---|---------|-----------------|---------|----------|-------------------|
|
||
| L1 | **API Trending** | Hashtags/posts/tracks tendance | Route GET `/social/trending` ; agrégation posts récents, comptage hashtags | Brancher SocialViewTrending sur l’API | Données dynamiques affichées |
|
||
| L2 | **Cache / perf** | Éviter agrégation à chaque requête | Cache Redis 15–60 min ou matview | — | Latence < 500 ms |
|
||
|
||
**Fichiers clés** :
|
||
- Backend : `social_handler.go` ou nouveau `trending_handler.go`, `routes_social.go`
|
||
- Frontend : `SocialViewTrending.tsx`, service `socialService.ts` ou `trendingService.ts`
|
||
|
||
---
|
||
|
||
## 4. Récapitulatif par lot
|
||
|
||
| Lot | Nom | Priorité | Effort | Features |
|
||
|-----|-----|----------|--------|----------|
|
||
| **D1** | Queue collaborative | Moyenne | M (4-5j) | 3 |
|
||
| **K** | Recherche enrichie | Haute | M (3-4j) | 2 |
|
||
| **L** | Social Trending | Haute | S (2-3j) | 2 |
|
||
| | **TOTAL** | | **9-12j** | **7** |
|
||
|
||
---
|
||
|
||
## 5. Features HORS SCOPE v0.203
|
||
|
||
| Feature | Raison | Version cible |
|
||
|---------|--------|---------------|
|
||
| Collaborative filtering (rec. ML) | Nécessite historique riche, complexité | v0.301+ |
|
||
| Correction orthographique (K3) | Dépendance externe, effort | v0.301+ |
|
||
| Recherches sauvegardées | UX secondaire | v0.301+ |
|
||
| 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** | L (Social Trending) | L1–L2 : API /social/trending, cache, brancher SocialViewTrending |
|
||
| **S2** | K (Recherche) | K1–K2 : phonétique, booléens |
|
||
| **S3** | D1 (Queue collaborative) | D1.1–D1.3 : session, sync, contrôles |
|
||
| **S4** | Stabilisation | Tests, docs, polish Phase 2 |
|
||
|
||
---
|
||
|
||
## 7. Branche et workflow
|
||
|
||
- **Branche** : `release/v0.203`
|
||
- **Format commit** : `feat(scope): description` (ex: `feat(search): add boolean operators`)
|
||
- **Référence scope** : [SCOPE_CONTROL.md](SCOPE_CONTROL.md) → v0.203
|
||
- **PR** : `gh pr create --base main --head release/v0.203 --title "Release v0.203"`
|
||
|
||
---
|
||
|
||
## 8. Critères de stabilité v0.203
|
||
|
||
### 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
|
||
- [ ] Tests unitaires sur nouveaux services (search, trending, queue session)
|
||
- [ ] E2E : recherche booléenne, trending (si applicable)
|
||
|
||
### 8.3 Documentation
|
||
- [ ] FEATURE_STATUS.md mis à jour
|
||
- [ ] CHANGELOG v0.203
|
||
- [ ] MSW handlers pour `/social/trending`, `/queue/session` (si pertinent)
|
||
|
||
---
|
||
|
||
## 9. Transition vers Phase 3 (Social)
|
||
|
||
À l’issue de v0.203 :
|
||
- Phase 2 Contenu est **complète** (~360 / 600 features)
|
||
- Prochaine version : **v0.301** — Phase 3 Social (chat avancé, présence, social complet)
|
||
- Document de scope : `V0_301_RELEASE_SCOPE.md` (à créer après tag v0.203)
|
||
|
||
---
|
||
|
||
## Références
|
||
|
||
- [V0_202_RELEASE_SCOPE.md](V0_202_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
|
||
- [PROJECT_STATE.md](PROJECT_STATE.md) — État actuel du projet
|
||
- [veza_full_features_list.md](archive/root-md/veza_full_features_list.md) — Cible v1.0 (600 features)
|