167 lines
7 KiB
Markdown
167 lines
7 KiB
Markdown
# Scope v0.101 — Version stable cible
|
|
|
|
**Version cible** : v0.101
|
|
**Objectif** : Projet complètement stable, sans régressions, base solide pour évolutions futures
|
|
**Dernière mise à jour** : février 2026
|
|
|
|
---
|
|
|
|
## 1. Principe directeur
|
|
|
|
> **v0.101 = freeze fonctionnel.** Aucune nouvelle feature. Uniquement stabilisation, corrections et nettoyage du périmètre défini ci-dessous.
|
|
>
|
|
> **Tous les modules doivent fonctionner ensemble** — Backend, Frontend, Chat Server, Stream Server, ClamAV, RabbitMQ. Même incomplets, ils doivent tourner et communiquer correctement.
|
|
|
|
---
|
|
|
|
## 2. Features IN SCOPE v0.101
|
|
|
|
### 2.1 Cœur produit (obligatoires)
|
|
|
|
| Feature | Frontend | Backend | Tests requis | Critère de stabilité |
|
|
|---------|----------|---------|--------------|------------------------|
|
|
| **Auth** (register, login, logout, refresh) | ✅ | ✅ | Unit + E2E | Flow complet sans erreur |
|
|
| **2FA** (TOTP) | ✅ | ✅ | E2E (si configuré) | Login 2FA fonctionnel |
|
|
| **OAuth** (Google, GitHub, Discord) | ✅ | ✅ | E2E (optionnel) | Redirection + callback OK |
|
|
| **Profils utilisateur** | ✅ | ✅ | Unit | CRUD profil, avatar |
|
|
| **Upload de tracks** | ✅ | ✅ | Integration | Upload → métadonnées → jouable |
|
|
| **CRUD Tracks** | ✅ | ✅ | Unit + E2E | Liste, détail, édition, suppression |
|
|
| **Playlists** (CRUD, collaboration) | ✅ | ✅ | Unit + E2E | CRUD, ajout/retrait tracks |
|
|
| **Player audio** (lecture, queue, contrôles) | ✅ | N/A | Unit | Play, pause, seek, next, volume |
|
|
| **Streaming audio** (HLS, lecture des tracks) | ✅ | ✅ | Integration | Lecture adaptative fonctionnelle — **doit être opérationnel** |
|
|
| **Dashboard** | ✅ | ✅ | Unit | Affichage stats, pas de crash |
|
|
| **Recherche** | ✅ | ✅ | E2E | Recherche tracks/playlists/users |
|
|
| **Settings** (préférences, compte) | ✅ | ✅ | Unit | Sauvegarde, pas de régression |
|
|
| **Library** (mes tracks) | ✅ | ✅ | Unit | Liste, filtres |
|
|
| **Erreurs** (404, 500) | ✅ | N/A | - | Pages d'erreur affichées |
|
|
|
|
### 2.2 Features secondaires (stables, sans régression)
|
|
|
|
| Feature | Frontend | Backend | Critère |
|
|
|---------|----------|---------|---------|
|
|
| **Chat** | ✅ | ✅ | Connexion WebSocket, envoi/réception — Chat Server obligatoire |
|
|
| **Notifications** | ✅ | ✅ | Liste, marquer lu |
|
|
| **Admin** (dashboard, rôles) | ✅ | ✅ | Accès admin uniquement, pas de crash |
|
|
| **Social** (feed, posts, groups) | ✅ | ✅ | Affichage feed, création post |
|
|
| **Marketplace** (catalogue, panier) | ✅ | ✅ | Navigation catalogue, panier en mémoire |
|
|
| **Profile public** (`/u/:username`) | ✅ | ✅ | Affichage profil public |
|
|
|
|
### 2.3 Routes à conserver (état actuel)
|
|
|
|
- `/login`, `/register`, `/forgot-password`, `/verify-email`, `/reset-password`
|
|
- `/dashboard`, `/library`, `/profile`, `/settings`, `/settings/sessions`
|
|
- `/tracks/:id`, `/playlists/*`, `/search`, `/chat`, `/notifications`
|
|
- `/marketplace`, `/sell`, `/wishlist`, `/purchases`
|
|
- `/admin`, `/admin/roles`, `/social`, `/analytics`, `/webhooks`
|
|
- `/gear`, `/live`, `/queue`, `/developer`
|
|
- `/design-system`, `/u/:username`
|
|
- `/404`, `/500`
|
|
|
|
---
|
|
|
|
## 3. Features HORS SCOPE v0.101 (ne pas toucher)
|
|
|
|
Ces features existent dans le code mais **ne font pas partie du périmètre stable**.
|
|
Elles restent en l'état. Aucun développement, aucune "amélioration".
|
|
|
|
| Feature | Statut | Action |
|
|
|---------|--------|--------|
|
|
| **Live streaming** (flux vidéo) | Mock/partiel | HORS SCOPE — le streaming vidéo ne nous intéresse pas pour v0.101 |
|
|
| **Seller dashboard** (logique vendeur) | Shell vide | Conserver tel quel |
|
|
| **Developer portal** (API keys complètes) | Partiel | Conserver tel quel |
|
|
| **Paiement Hyperswitch** (intégration réelle) | Non connecté | Conserver tel quel |
|
|
| **PWA** (service worker, install) | Partiel | Conserver tel quel |
|
|
| **WebRTC** (streaming peer-to-peer) | Non intégré | Conserver tel quel |
|
|
|
|
---
|
|
|
|
## 4. Features à masquer ou simplifier (Coming Soon)
|
|
|
|
Ces routes affichent un placeholder "Coming Soon". **Ne pas développer** pour v0.101.
|
|
|
|
| Route | Composant cible | Action v0.101 |
|
|
|-------|-----------------|--------------|
|
|
| `/queue` | ComingSoon ou QueuePage | Garder état actuel |
|
|
| `/developer` | ComingSoon ou DeveloperDashboard | Garder état actuel |
|
|
| `/gear` | GearPage (backend OK) | Garder état actuel |
|
|
| `/live` | LivePage (mock) | Garder état actuel |
|
|
|
|
---
|
|
|
|
## 5. Critères de stabilité v0.101
|
|
|
|
### 5.1 Build & compilation
|
|
|
|
- [x] `go build ./...` (backend) — 0 erreur
|
|
- [x] `cargo build --release` (chat-server) — 0 erreur
|
|
- [x] `cargo build --release` (stream-server) — 0 erreur
|
|
- [x] `npm run build` (frontend) — 0 erreur
|
|
- [x] `npx tsc --noEmit` — 0 erreur
|
|
|
|
### 5.2 Tests
|
|
|
|
- [x] `go test ./...` (backend) — 0 échec
|
|
- [x] `npm test -- --run` (frontend) — 0 échec (validate-light)
|
|
- [x] `npm run test:storybook` — 0 erreur console/réseau
|
|
- [x] E2E auth, smoke, playlists, search — 0 échec (validé en CI ; local : `./scripts/run-e2e-local.sh`)
|
|
|
|
### 5.3 Qualité
|
|
|
|
- [x] `npm run lint` — 0 erreur
|
|
- [x] Aucune régression sur les flows critiques (auth, upload, playlists, player, streaming audio)
|
|
- [x] Pas de `console.log` en production
|
|
- [x] Pas de TODO/FIXME critiques dans le code modifié
|
|
|
|
### 5.4 Sécurité
|
|
|
|
- [x] Aucun secret commité
|
|
- [x] `.env` exclus du git
|
|
- [x] Rate limiting actif en production
|
|
- [x] CORS configuré correctement
|
|
|
|
---
|
|
|
|
## 6. Services requis pour v0.101
|
|
|
|
**Tous les modules doivent fonctionner ensemble.** Même incomplets, chaque service doit tourner et communiquer correctement avec les autres.
|
|
|
|
| Service | Obligatoire v0.101 | Note |
|
|
|---------|--------------------|------|
|
|
| **Backend API** (Go) | ✅ | Cœur |
|
|
| **PostgreSQL** | ✅ | Cœur |
|
|
| **Redis** | ✅ | Sessions, rate limit, CSRF |
|
|
| **Frontend** (Vite) | ✅ | Cœur |
|
|
| **Chat Server** (Rust) | ✅ | Doit fonctionner avec le frontend |
|
|
| **Stream Server** (Rust) | ✅ | Streaming audio HLS — doit être opérationnel |
|
|
| **RabbitMQ** | ✅ | Événements async — doit être connecté |
|
|
| **ClamAV** | ✅ | Scan virus sur les uploads — doit être actif |
|
|
|
|
---
|
|
|
|
## 7. Définition de "stable"
|
|
|
|
Une feature est **stable** pour v0.101 si :
|
|
|
|
1. **Happy path** fonctionne sans erreur
|
|
2. **Erreurs gérées** : états Loading, Error, Empty présents
|
|
3. **Tests** : au moins 1 test (unit ou E2E) couvrant le flow principal
|
|
4. **Pas de régression** : les tests existants passent
|
|
5. **Story** : composants feature ont une story Storybook (Loading, Error, Empty)
|
|
|
|
---
|
|
|
|
## 8. Ce qui change APRÈS v0.101
|
|
|
|
Une fois v0.101 atteinte et taguée :
|
|
|
|
- Les nouvelles features seront ajoutées **uniquement** via le processus défini dans `docs/SCOPE_CONTROL.md`
|
|
- Chaque nouvelle feature devra avoir un ticket validé et un scope explicite
|
|
- Les versions suivantes (v0.102, v0.103…) auront leur propre document de scope
|
|
|
|
---
|
|
|
|
## Références
|
|
|
|
- [SCOPE_CONTROL.md](SCOPE_CONTROL.md) — Processus anti-scope-creep
|
|
- [FEATURE_STATUS.md](FEATURE_STATUS.md) — Statut détaillé des features
|
|
- [REMEDIATION_PROGRESS.md](REMEDIATION_PROGRESS.md) — Progression de la stabilisation
|