Some checks failed
Backend API CI / test-unit (push) Has been cancelled
Backend API CI / test-integration (push) Has been cancelled
Veza CI / Rust (Stream Server) (push) Has been cancelled
Veza CI / Backend (Go) (push) Has been cancelled
Veza CI / Notify on failure (push) Has been cancelled
Veza CI / Frontend (Web) (push) Has been cancelled
Frontend CI / test (push) Has been cancelled
Security Scan / Secret Scanning (gitleaks) (push) Has been cancelled
First-attempt commit02728909fonly captured the .gitignore change; the pre-commit hook silently dropped the 343 staged moves/deletes during lint-staged's "no matching task" path. This commit re-applies the intended J1 content on top of24af2f72b(which was pushed in parallel). Uses --no-verify because: - J1 only touches .md/.json/.log/.png/binaries — zero code that would benefit from lint-staged, typecheck, or vitest - The hook demonstrated it corrupts pure-rename commits in this repo - Explicitly authorized by user for this one commit Changes (343 total: 169 deletions + 174 renames): Binaries purged (~167 MB): - veza-backend-api/{server,modern-server,encrypt_oauth_tokens,seed,seed-v2} Generated reports purged: - 9 apps/web/lint_report*.json (~32 MB) - 8 apps/web/tsc_*.{log,txt} + ts_*.log (TS error snapshots) - 3 apps/web/storybook_*.json (1375+ stored errors) - apps/web/{build_errors*,build_output,final_errors}.txt - 70 veza-backend-api/coverage*.out + coverage_groups/ (~4 MB) - 3 veza-backend-api/internal/handlers/*.bak Root cleanup: - 54 audit-*.png (visual regression baselines, ~11 MB) - 9 stale MVP-era scripts (Jan 27, hardcoded v0.101): start_{iteration,mvp,recovery}.sh, test_{mvp_endpoints,protected_endpoints,user_journey}.sh, validate_v0101.sh, verify_logs_setup.sh, gen_hash.py Session docs archived (not deleted — preserved under docs/archive/): - 78 apps/web/*.md → docs/archive/frontend-sessions-2026/ - 43 veza-backend-api/*.md → docs/archive/backend-sessions-2026/ - 53 docs/{RETROSPECTIVE_V,SMOKE_TEST_V,PLAN_V0_,V0_*_RELEASE_SCOPE, AUDIT_,PLAN_ACTION_AUDIT,REMEDIATION_PROGRESS}*.md → docs/archive/v0-history/ README.md and CONTRIBUTING.md preserved in apps/web/ and veza-backend-api/. Note: The .gitignore rules preventing recurrence were already pushed in02728909fand remain in place — this commit does not modify .gitignore. Refs: AUDIT_REPORT.md §11
12 KiB
12 KiB
V0.903 Release Scope — Stabilisation v1.0 & Launch Readiness
Statut : Planifié Phase : 9 (v1.0 Launch — Final) Prérequis : v0.902 (taguée) Date cible : TBD Estimation : ~4 sprints (20 jours ouvrés) Précédente : v0.902
1. Objectif
Dernière version avant la v1.0. Finalise les modules Recherche & Recommandations (recherche phonétique, correction orthographique, recherches sauvegardées, algorithme de recommandation, playlists auto-générées), Player & Playlists (smart playlists, export M3U, fusion/duplication), Auth & Sécurité (session management device list, notification login inhabituel, historique connexions, CAPTCHA, historique mots de passe). Inclut une phase de stabilisation intensive (load testing k6, optimisation Redis/DB/CDN) et la documentation v1.0 complète. Se conclut par le tag v1.0.
2. État actuel (post-v0.902)
| Composant | État | Détail |
|---|---|---|
| Recherche fulltext | ✅ Livré v0.203 | pg_trgm fuzzy, AND/OR/NOT, autocomplete |
| Recherche phonétique | ❌ Absent | Pas de soundex/metaphone |
| Correction orthographique | ❌ Absent | Pas de "did you mean?" |
| Recherches sauvegardées | ❌ Absent | Pas de persist des recherches |
| Algorithme recommandation | ❌ Absent | Autoplay basique (random), pas de collaborative filtering |
| Playlists auto-générées | ❌ Absent | Pas de "Discover Weekly" type |
| Smart playlists | ❌ Absent | Playlists statiques uniquement |
| Export M3U | ❌ Absent | Pas d'export playlist |
| Merge/duplicate playlists | ❌ Absent | Pas de fusion ni duplication |
| Session management | ❌ Absent | Pas de liste des devices actifs |
| Login inhabituel notif | ❌ Absent | Pas de détection |
| Historique connexions | ❌ Absent | Pas de log |
| CAPTCHA | ❌ Absent | Pas de protection bot |
| Historique mots de passe | ❌ Absent | Pas d'empêchement réutilisation |
| Load testing | ❌ Absent | Pas de k6/vegeta |
| Documentation v1.0 | ⚠️ Partiel | API_REFERENCE existe, manque production guide |
3. Lots
Lot ST1 — Recherche & Recommandations
| # | Tâche | Fichiers impactés | Effort |
|---|---|---|---|
| ST1-01 | Recherche phonétique — extension PostgreSQL pg_trgm + fuzzystrmatch (soundex, metaphone), intégration dans search query |
Backend | M |
| ST1-02 | Correction orthographique — "Did you mean...?" basé sur trigram similarity > 0.3, suggestion de la meilleure correspondance | Backend, frontend | M |
| ST1-03 | Recherches sauvegardées — POST /search/saved, GET /search/saved, DELETE /search/saved/:id, migration 132_saved_searches.sql |
Backend, frontend | M |
| ST1-04 | Algorithme recommandation — collaborative filtering basique (users who listened to X also listened to Y), GET /tracks/recommendations amélioré |
Backend | L |
| ST1-05 | Playlists auto-générées — "Discover Weekly" (30 tracks recommandées, régénérées chaque lundi), "Your Top Tracks" (top plays 30j) | Backend, frontend | L |
| ST1-06 | Frontend — "Did you mean" dans SearchPage, section saved searches, playlists auto dans Library | Frontend | M |
| ST1-07 | Tests — phonetic search, suggestion quality, saved searches CRUD, recommendation relevance | Tests | M |
Lot ST2 — Player & Playlists Final
| # | Tâche | Fichiers impactés | Effort |
|---|---|---|---|
| ST2-01 | Smart playlists — règles dynamiques (genre=hiphop AND bpm>120 AND added_last_30d), auto-update, migration 133_smart_playlists.sql |
Backend | L |
| ST2-02 | Export M3U — GET /playlists/:id/export?format=m3u retourne fichier M3U avec URLs des tracks |
Backend | S |
| ST2-03 | Merge playlists — POST /playlists/merge (body: playlist_ids[], target_name), déduplique les tracks |
Backend | M |
| ST2-04 | Duplicate playlist — POST /playlists/:id/duplicate crée une copie avec nouveau nom |
Backend | S |
| ST2-05 | Frontend — boutons Export, Merge, Duplicate dans PlaylistView, Smart Playlist builder (formulaire de règles) | Frontend | L |
| ST2-06 | Tests — smart playlist auto-update, M3U format, merge dedup, duplicate | Tests | M |
Lot ST3 — Auth & Sécurité Final
| # | Tâche | Fichiers impactés | Effort |
|---|---|---|---|
| ST3-01 | Session management — migration 134_sessions.sql (table sessions: user_id, device, ip, user_agent, created_at, last_active_at), GET /auth/sessions, DELETE /auth/sessions/:id |
Backend | M |
| ST3-02 | Frontend session management — page dans Settings/Security avec liste des devices, bouton "Revoke" | Frontend | M |
| ST3-03 | Login inhabituel — détecter nouvelle IP/device non reconnu, envoyer email notification, flag is_suspicious sur session |
Backend | M |
| ST3-04 | Historique connexions — GET /auth/login-history (dernières 50 connexions avec IP, device, date, status) |
Backend, frontend | M |
| ST3-05 | CAPTCHA — intégration hCaptcha/reCAPTCHA sur login après 3 échecs, registration, password reset | Backend middleware, frontend | M |
| ST3-06 | Historique mots de passe — migration ajout password_history JSONB sur users, empêcher réutilisation des 5 derniers |
Backend | M |
| ST3-07 | Tests — session CRUD, suspicious login detection, CAPTCHA verification, password history | Tests | M |
Lot ST4 — Performance & Load Testing
| # | Tâche | Fichiers impactés | Effort |
|---|---|---|---|
| ST4-01 | k6 load tests — scripts pour auth flow, search, marketplace, streaming, WebSocket chat | tests/load/ (nouveau) |
L |
| ST4-02 | Redis cache optimization — cache strategy review, cache-aside pattern sur queries fréquentes (search, trending, analytics) | Backend | M |
| ST4-03 | DB query optimization — EXPLAIN ANALYZE sur les 10 queries les plus lentes, ajout index manquants, query rewrite | Backend | M |
| ST4-04 | CDN configuration — cache headers sur assets statiques, HLS segments, images produits | Nginx/HAProxy config | M |
| ST4-05 | Performance targets validation — p50 < 50ms, p95 < 200ms, p99 < 500ms sur les endpoints critiques | Tests | M |
Lot ST5 — Documentation v1.0
| # | Tâche | Fichiers impactés | Effort |
|---|---|---|---|
| ST5-01 | API Reference complète — tous les endpoints documentés (swagger + API_REFERENCE.md final) | docs/API_REFERENCE.md |
L |
| ST5-02 | Production Deployment Guide — docker-compose prod, env vars, backup strategy, monitoring setup, scaling guide | docs/PRODUCTION_GUIDE.md (nouveau) |
L |
| ST5-03 | README v1.0 — mise à jour avec architecture, quick start, features list, contributing guide | README.md |
M |
| ST5-04 | Migration Guide — liste toutes les migrations (1 à 134+), procédure upgrade, rollback | docs/MIGRATION_GUIDE.md (nouveau) |
M |
| ST5-05 | CHANGELOG v1.0 — historique complet de toutes les versions v0.101 à v1.0 | CHANGELOG.md |
M |
Lot REL — Release v1.0
| # | Tâche | Fichiers impactés | Effort |
|---|---|---|---|
| REL-01 | E2E pass complet — tous les smoke tests de v0.703 à v0.903 exécutés | Smoke tests | L |
| REL-02 | Security audit final — vérifier headers, rate limiting, auth, GDPR | Audit | M |
| REL-03 | Performance benchmark final — k6 results, Lighthouse scores | Benchmark | M |
| REL-04 | PROJECT_STATE, FEATURE_STATUS — mise à jour finale v1.0 | docs/ |
S |
| REL-05 | RETROSPECTIVE_V0903.md + RETROSPECTIVE_V1.md | docs/ |
M |
| REL-06 | Tag v0.903, tag v1.0 | Git | S |
4. Hors scope v0.903 / v1.0 (reporté v2.0)
| Élément | Raison |
|---|---|
| Module 8 — Education (cours, certificats) | Abandonné — complexité, pas de demande |
| Module 15 — IA (mastering auto, stem separation, AI mixing) | Trop avancé, R&D nécessaire |
| Module 17 — Collaboration temps réel (DAW, whiteboard) | Infrastructure spécialisée requise |
| Module 18 — Blockchain/Web3 (NFT, tokens, DAO) | Priorité basse, marché incertain |
| Module 19 — Intégrations DAW (Ableton Link, FL Studio, etc.) | Plugins spécialisés requis |
| Module 20 — Applications natives (iOS, Android, Desktop) | Post-v1.0, React Native ou Tauri |
| Module 21 — Gamification (XP, niveaux, achievements) | Nice-to-have, pas critique pour v1.0 |
| 2FA SMS / Passkeys | Infra Twilio, WebAuthn — v1.1 |
| Chromecast / AirPlay | Protocoles propriétaires — v2.0 |
| Spectrogram / equalizer visualizer | Nice-to-have — v2.0 |
| PayPal, Crypto payments | Intégration supplémentaire — v2.0 |
| GraphQL API | REST suffisant pour v1.0 |
| SDK JavaScript/Python/Go | Post-launch |
5. Critères d'acceptation v0.903
- Recherche phonétique : "hip hop" trouve "hiphop" et inversement
- "Did you mean" : suggestion si < 3 résultats et similarity > 0.3
- Recherches sauvegardées : CRUD, max 50 par user
- Recommandations : collaborative filtering, au moins 10 tracks pertinentes
- Playlists auto : "Discover Weekly" (30 tracks), "Your Top Tracks" (20 tracks)
- Smart playlists : builder de règles, auto-update quotidien
- Export M3U : fichier téléchargeable avec URLs valides
- Merge/duplicate : fusion avec dedup, copie fidèle
- Session management : liste devices, revoke, logout all
- Login inhabituel : email envoyé, flag suspicious
- CAPTCHA : hCaptcha sur login (3 échecs), register, reset
- Password history : 5 derniers refusés
- k6 load tests : tous les scénarios passent à 100 concurrent users
- p95 latency < 200ms sur les endpoints critiques
- Documentation : API Reference, Production Guide, README, Migration Guide
- Tous les smoke tests v0.703–v0.903 passent
- Tag v0.903 et tag v1.0 créés
6. Critères d'acceptation v1.0
| Critère | Cible |
|---|---|
| Modules opérationnels | 15+ / 24 |
| Features livrées | ~470 / 600 (78%) |
| Score maturité produit | 8/10 |
| Tests backend passants | 100% |
| Frontend build | 0 errors |
| Lighthouse Performance | ≥ 85 |
| Lighthouse Accessibility | ≥ 90 |
| Lighthouse PWA | ≥ 90 |
| p95 latency | < 200ms |
| Security headers | All present |
| GDPR compliance | ✅ (export + deletion) |
| Documentation | API Ref + Production Guide + README |
7. Risques
| Risque | Mitigation |
|---|---|
| Collaborative filtering froid (pas assez de données) | Fallback sur genre/BPM similarity |
| Smart playlists query lente | Index optimisés, cache résultat, limit 500 tracks |
| k6 load test révèle des bottlenecks | 2 sprints buffer pour fixes perf |
| CAPTCHA UX friction | Seulement après échecs, pas au premier login |
| Password history migration lourde | Hasher progressivement à chaque changement |
| Documentation effort sous-estimé | Paralléliser avec le dev, pas en dernier |
8. Architecture v1.0 finale
graph TB
subgraph clients [Clients]
WEB[Web App React PWA]
end
subgraph gateway [Gateway]
HAP[HAProxy LB]
end
subgraph backend [Backend Go]
API[API Server]
WS[WebSocket Hub Chat]
WRK[Background Workers]
end
subgraph data [Data Layer]
PG[(PostgreSQL 16)]
RD[(Redis 7)]
S3[(MinIO S3)]
end
subgraph monitoring [Monitoring]
PROM[Prometheus]
GRAF[Grafana]
ALERT[Alertmanager]
end
subgraph external [External]
HS[Hyperswitch Payments]
SC[Stripe Connect]
SG[SendGrid Email]
GP[Giphy API]
GEO[MaxMind GeoIP]
end
WEB --> HAP
HAP --> API
HAP --> WS
API --> PG
API --> RD
API --> S3
API --> HS
API --> SC
API --> SG
API --> GP
API --> GEO
WS --> PG
WS --> RD
WRK --> PG
WRK --> RD
WRK --> S3
WRK --> SG
API --> PROM
WS --> PROM
PROM --> GRAF
PROM --> ALERT
9. Références
- V0_902_RELEASE_SCOPE.md
- SCOPE_CONTROL.md
- ORIGIN_FEATURES_REGISTRY.md
- ORIGIN_MASTER_ARCHITECTURE.md
- veza_full_features_list.md (600 features cible)
veza-backend-api/internal/(backend complet)apps/web/src/(frontend complet)