V0.601 Release Scope — Phase 6 : Production Readiness & Commerce
Statut : En planification
Phase : 6 — Production & Commerce
Prérequis : v0.503 (taguée)
Date cible : TBD
Estimation : ~6 sprints (30 jours ouvrés)
Précédente : v0.503
1. Objectif
Rendre la plateforme prête pour un déploiement production fiable (blue-green, monitoring), finaliser la boucle commerce (reviews, factures, remboursements), implémenter OAuth Discord/Spotify, et réduire la dette technique structurante (découpage fichiers, consolidation migrations).
2. État actuel (pré-v0.601)
| Composant |
État |
Détail |
| Déploiement |
⚠️ Rolling simple |
Pas de blue-green, pas de rollback rapide |
| Monitoring |
⚠️ Prometheus + alertes |
Pas de dashboards Grafana prêts |
| Commerce |
⚠️ Checkout + promos |
Pas de reviews, factures, remboursements |
| OAuth |
⚠️ Google, GitHub |
Discord, Spotify non implémentés |
| Hyperswitch |
⚠️ Mode test |
Production mode non activé |
| Dette |
⚠️ Fichiers > 1000 LOC |
handler.go (track) ~1463 LOC, interceptors.ts ~1207 LOC |
| Migrations |
⚠️ 113+ fichiers |
Pas de baseline consolidée |
3. Lots
Lot INF1 — Infrastructure Production
Objectif : Déploiement blue-green et monitoring opérationnel.
| # |
Tâche |
Fichiers impactés |
Effort |
| INF1-01 |
Blue-green deployment — configurer HAProxy/Caddy pour deux backends (blue/green), health checks, bascule manuelle ou automatique |
config/haproxy/, config/caddy/, docker-compose.prod.yml, scripts deploy |
L |
| INF1-02 |
Dashboards Grafana — créer 3 dashboards : API (latence, erreurs, throughput), Chat (connexions WS, messages/s), Commerce (orders, checkout) |
config/grafana/dashboards/ |
M |
| INF1-03 |
Alertmanager — configurer notifications (email/webhook Slack) pour les alertes Prometheus critiques |
config/alertmanager/ |
S |
| INF1-04 |
Graceful shutdown — s'assurer que le backend Go et le stream server gèrent SIGTERM (drain connexions, fin des jobs en cours) |
cmd/api/main.go, veza-stream-server/src/main.rs |
M |
| INF1-05 |
Health check enrichi — GET /api/v1/health retourne status DB, Redis, RabbitMQ (degraded si un service down) |
internal/handlers/health.go |
S |
Lot COM1 — Commerce Finalisation
Objectif : Reviews produits, factures PDF, remboursements. Payout reporté si Stripe Connect complexe.
| # |
Tâche |
Fichiers impactés |
Effort |
| COM1-01 |
Reviews produits — migration product_reviews, CRUD, notation 1-5, commentaire, GET /products/:id/reviews, affichage moyenne |
migrations/, internal/handlers/, internal/models/, frontend ProductDetail |
M |
| COM1-02 |
Factures PDF — génération PDF par commande (template, numéro facture, items, total, TVA), GET /orders/:id/invoice, téléchargement |
internal/services/invoice_service.go, lib PDF (gofpdf ou similar), frontend OrdersView |
M |
| COM1-03 |
Remboursements — POST /orders/:id/refund (vendeur/admin), appel Hyperswitch refund API, webhook refund, mise à jour order + révocation licence |
internal/handlers/, internal/services/, Hyperswitch client |
M |
| COM1-04 |
Hyperswitch production — config pour passer en mode live (HYPERSWITCH_LIVE_MODE), validation webhook signature stricte, documentation |
internal/config/, internal/services/hyperswitch/ |
S |
| COM1-05 |
MSW + Stories — handlers commerce enrichis, stories ProductReviews, InvoiceDownload, RefundButton |
apps/web/src/mocks/, apps/web/src/features/ |
S |
Lot AUTH1 — OAuth Discord & Spotify
Objectif : Implémenter les providers OAuth manquants (actuellement stub).
| # |
Tâche |
Fichiers impactés |
Effort |
| AUTH1-01 |
OAuth Discord — config provider, scopes (identify, email), callback, mapping user Discord → Veza |
internal/services/oauth_service.go, config, frontend OAuthButton |
M |
| AUTH1-02 |
OAuth Spotify — config provider, scopes (user-read-email), callback, mapping |
Idem |
M |
| AUTH1-03 |
Tests — vérifier flux register/login via Discord et Spotify |
internal/services/oauth_*_test.go |
S |
| AUTH1-04 |
FEATURE_STATUS — mettre à jour OAuth Discord/Spotify de "non implémenté" à "opérationnel" |
docs/FEATURE_STATUS.md |
S |
Lot CLN1 — Dette Technique Structurante
Objectif : Réduire la complexité des fichiers les plus longs et consolider les migrations.
| # |
Tâche |
Fichiers impactés |
Effort |
| CLN1-01 |
Découper handler.go (~1463 LOC) — extraire en sous-handlers : track_crud_handler.go, track_social_handler.go, track_search_handler.go, track_analytics_handler.go. Garder facade. |
internal/core/track/ |
L |
| CLN1-02 |
Découper interceptors.ts (~1200 LOC) — extraire par responsabilité : auth interceptor, error interceptor, retry interceptor, logging. |
apps/web/src/services/api/ |
M |
| CLN1-03 |
Consolidation migrations — script scripts/squash_migrations.sh générant une baseline SQL à partir des 113 migrations. Documenter dans docs/MIGRATIONS.md. Ne PAS supprimer les migrations existantes. |
scripts/, docs/MIGRATIONS.md |
M |
| CLN1-04 |
Audit console.log — remplacer les console.log en production par le logger frontend. Garder uniquement les logs intentionnels. |
apps/web/src/ |
S |
Lot QA1 — Tests & Documentation
Objectif : Valider l'ensemble, mettre à jour la documentation.
| # |
Tâche |
Fichiers impactés |
Effort |
| QA1-01 |
Tests E2E commerce — upload → achat → review → facture → remboursement (si applicable) |
veza-backend-api/internal/integration/ ou Playwright |
M |
| QA1-02 |
Smoke test v0.601 — checklist 25+ features E2E |
docs/SMOKE_TEST_V0601.md |
S |
| QA1-03 |
Mise à jour PROJECT_STATE.md, FEATURE_STATUS.md, CHANGELOG.md |
docs/ |
S |
| QA1-04 |
Archiver V0_601_RELEASE_SCOPE.md, créer placeholder V0_602_RELEASE_SCOPE.md |
docs/archive/, docs/ |
S |
| QA1-05 |
Rétrospective v0.601 |
docs/RETROSPECTIVE_V0601.md |
S |
| QA1-06 |
Tag v0.601 |
Git |
S |
4. Hors scope v0.601
| Élément |
Version cible |
| Payout vendeurs (Stripe Connect) |
v0.602 (si COM1 trop chargé) |
| Migration React 19 |
v0.602 |
| Go Live (streaming vidéo) |
v0.703 |
| 2FA SMS / Passkeys |
v0.104 |
| IaC (Terraform/Pulumi) |
v0.801 |
5. Fichiers impactés (récapitulatif)
Backend Go (nouveau)
| Fichier |
Action |
internal/services/invoice_service.go |
Nouveau — génération PDF |
internal/handlers/track_crud_handler.go |
Nouveau — extrait de track_handler |
internal/handlers/track_upload_handler.go |
Nouveau |
internal/handlers/track_hls_handler.go |
Nouveau |
internal/handlers/track_waveform_handler.go |
Nouveau |
migrations/114_product_reviews.sql |
Nouveau (ou numéro suivant) |
Backend Go (modifier)
| Fichier |
Action |
internal/handlers/health.go |
Enrichir health check |
internal/core/track/handler.go |
Réduire à facade |
internal/services/oauth_service.go |
Ajouter Discord, Spotify |
internal/handlers/marketplace_handler.go |
Reviews, refund |
cmd/api/main.go |
Graceful shutdown |
Frontend (nouveau/modifier)
| Fichier |
Action |
apps/web/src/services/api/interceptors.ts |
Découper |
apps/web/src/features/commerce/ |
Reviews, Invoice, Refund UI |
apps/web/src/mocks/handlers-commerce.ts |
Enrichir |
Infra
| Fichier |
Action |
config/haproxy/ |
Blue-green config |
config/grafana/dashboards/ |
3 dashboards |
config/alertmanager/ |
Notifications |
scripts/squash_migrations.sh |
Nouveau |
6. Critères d'acceptation globaux
7. Risques
| Risque |
Mitigation |
| Stripe Connect / Payout trop complexe |
Reporter en v0.602, focus sur reviews/factures/remboursements |
| Génération PDF lourde |
Utiliser lib légère (gofpdf), génération async si besoin |
| Blue-green nécessite 2x ressources |
Documenter option "rolling" si ressources limitées |
| OAuth Discord/Spotify quotas API |
Documenter limites, rate limiting côté provider |