Add Release Scope, Implementation Plan, and Smoke Test for 7 versions: - v0.703: Go Live & Streaming Complet (Phase 7 Finale) - v0.801: UX/UI Polish, Accessibilite & PWA (Phase 8) - v0.802: Cloud Complet, Fichiers & Gear Avance (Phase 8) - v0.803: Securite, Compliance & Outillage Dev (Phase 8) - v0.901: Marketplace Complet & Analytics Avances (Phase 9) - v0.902: Social Complet, Chat & Notifications (Phase 9) - v0.903: Stabilisation v1.0 & Launch Readiness (Phase 9) 21 documents total (3 per version), covering all remaining features needed to reach v1.0 from v0.702.
148 lines
8.4 KiB
Markdown
148 lines
8.4 KiB
Markdown
# V0.802 Release Scope — Cloud Complet, Fichiers & Gear Avancé
|
|
|
|
**Statut** : Planifié
|
|
**Phase** : 8 (Polish & Scale — Lot 2)
|
|
**Prérequis** : v0.801 (taguée)
|
|
**Date cible** : TBD
|
|
**Estimation** : ~3 sprints (15 jours ouvrés)
|
|
**Précédente** : [v0.801](archive/V0_801_RELEASE_SCOPE.md)
|
|
|
|
---
|
|
|
|
## 1. Objectif
|
|
|
|
Deuxième version de la Phase 8. Complète les modules **Cloud Storage** (versioning, restauration, partage, backup, export GDPR), **Gestion de Fichiers** (batch upload, pause/resume, tags auto-suggest, formats supplémentaires), et **Gear Avancé** (garantie, factures, historique SAV). Ces fonctionnalités enrichissent les outils de gestion de contenu et de matériel pour les musiciens.
|
|
|
|
---
|
|
|
|
## 2. État actuel (post-v0.801)
|
|
|
|
| Composant | État | Détail |
|
|
|-----------|------|--------|
|
|
| **Cloud Storage MVP** | ✅ Livré v0.501 | Upload, dossiers, quota 5GB, prévisualisation audio, publication cloud→track |
|
|
| **Versioning fichiers** | ❌ Absent | Pas de versions historiques des fichiers |
|
|
| **Restauration versions** | ❌ Absent | Pas de rollback |
|
|
| **Partage fichiers** | ❌ Absent | Pas de liens de partage avec permissions |
|
|
| **Backup automatique** | ❌ Absent | Pas de backup planifié |
|
|
| **Export données GDPR** | ❌ Absent | Pas d'export complet des données utilisateur |
|
|
| **Upload fichier unique** | ✅ Livré | Upload avec progress bar |
|
|
| **Upload batch** | ❌ Absent | Un fichier à la fois uniquement |
|
|
| **Pause/resume upload** | ❌ Absent | Upload atomique, pas de reprise |
|
|
| **Tags auto-suggest** | ⚠️ Partiel | Tags manuels, pas de suggestions |
|
|
| **Formats additionnels** | ⚠️ Partiel | MP3, WAV, FLAC. Manque OGG, AIFF, M4A |
|
|
| **Gear inventaire** | ✅ Livré v0.501 | CRUD, profils publics, galerie images, recherche |
|
|
| **Garantie tracking** | ❌ Absent | Pas de date de garantie ni notification |
|
|
| **Upload facture** | ❌ Absent | Pas de stockage de facture/PDF sur le gear |
|
|
| **Historique SAV** | ❌ Absent | Pas de notes de réparation/coût |
|
|
|
|
---
|
|
|
|
## 3. Lots
|
|
|
|
### Lot CL1 — Cloud Storage Avancé
|
|
|
|
| # | Tâche | Fichiers impactés | Effort |
|
|
|---|-------|--------------------|--------|
|
|
| CL1-01 | Migration `119_cloud_file_versions.sql` — table `cloud_file_versions` (file_id, version, storage_key, size, created_at) | Migrations | S |
|
|
| CL1-02 | Service `CreateVersion` — sauvegarder version précédente avant écrasement, limit 10 versions par fichier | `internal/services/cloud_service.go` | M |
|
|
| CL1-03 | `GET /cloud/files/:id/versions` — lister les versions d'un fichier | `internal/handlers/cloud_handler.go` | S |
|
|
| CL1-04 | `POST /cloud/files/:id/restore/:version` — restaurer une version précédente | `internal/handlers/cloud_handler.go` | M |
|
|
| CL1-05 | Partage fichiers — `POST /cloud/files/:id/share` (génère lien unique, permissions read/write, expiration) | `internal/handlers/cloud_handler.go` | M |
|
|
| CL1-06 | `GET /cloud/shared/:token` — accéder à un fichier partagé (public, sans auth si token valide) | `internal/handlers/cloud_handler.go`, routes | M |
|
|
| CL1-07 | Backup auto — cron job background qui copie les fichiers cloud vers un bucket S3 dédié, configurable interval | `internal/services/cloud_backup.go` (nouveau) | L |
|
|
| CL1-08 | `POST /users/me/export` — export GDPR, génère un ZIP avec profil, tracks, playlists, messages, gear, cloud files | `internal/handlers/user_handler.go` | L |
|
|
| CL1-09 | Frontend CloudView — onglet versions, bouton restore, bouton share, lien copié | `apps/web/src/features/cloud/` | M |
|
|
| CL1-10 | MSW handlers cloud — versions, restore, share | `apps/web/src/mocks/handlers-cloud.ts` | S |
|
|
| CL1-11 | Tests — versioning CRUD, restore, share token, export | Tests | M |
|
|
|
|
### Lot FM1 — Gestion de Fichiers Avancée
|
|
|
|
| # | Tâche | Fichiers impactés | Effort |
|
|
|---|-------|--------------------|--------|
|
|
| FM1-01 | Batch upload — multi-file input, parallel upload queue (max 3 concurrent), individual progress bars | `apps/web/src/components/upload/` | L |
|
|
| FM1-02 | Pause/resume upload — chunked upload (5MB chunks), resume from last successful chunk, backend support | `internal/handlers/upload_handler.go`, frontend | L |
|
|
| FM1-03 | Tags auto-suggest — `GET /tags/suggest?q=...` basé sur les tags existants (top 10 par fréquence) | `internal/handlers/`, frontend | M |
|
|
| FM1-04 | Formats additionnels — validation MIME pour OGG, AIFF, M4A/AAC, transcoding vers MP3 standard | `internal/services/`, config | M |
|
|
| FM1-05 | Tests — batch upload, chunked resume, tag suggest, format validation | Tests | M |
|
|
|
|
### Lot GR1 — Gear Avancé
|
|
|
|
| # | Tâche | Fichiers impactés | Effort |
|
|
|---|-------|--------------------|--------|
|
|
| GR1-01 | Migration `120_gear_warranty.sql` — ajout colonnes `warranty_start`, `warranty_end`, `warranty_notes` sur gear | Migrations | S |
|
|
| GR1-02 | Migration `121_gear_documents.sql` — table `gear_documents` (gear_id, type, storage_key, filename, uploaded_at) | Migrations | S |
|
|
| GR1-03 | Migration `122_gear_repairs.sql` — table `gear_repairs` (gear_id, date, description, cost, provider) | Migrations | S |
|
|
| GR1-04 | Modèle et service — GearDocument, GearRepair, méthodes CRUD | `internal/models/gear.go`, `internal/services/gear_service.go` | M |
|
|
| GR1-05 | Handlers — POST /gear/:id/documents (upload facture/PDF), GET /gear/:id/documents, POST /gear/:id/repairs, GET /gear/:id/repairs | `internal/handlers/gear_handler.go` | M |
|
|
| GR1-06 | Notification garantie — cron background qui envoie notification 30 jours avant expiration warranty | `internal/services/gear_warranty_notifier.go` (nouveau) | M |
|
|
| GR1-07 | Frontend — onglets Documents et Réparations dans la fiche gear, upload PDF, formulaire réparation, badge "Warranty expires soon" | `apps/web/src/features/inventory/` | M |
|
|
| GR1-08 | MSW handlers gear — documents, repairs | `apps/web/src/mocks/handlers-gear.ts` | S |
|
|
| GR1-09 | Tests — warranty dates, document upload, repair CRUD, notification trigger | Tests | M |
|
|
|
|
### Lot QA1 — Tests & Release
|
|
|
|
| # | Tâche | Fichiers impactés | Effort |
|
|
|---|-------|--------------------|--------|
|
|
| QA1-01 | Smoke test v0.802 | `docs/SMOKE_TEST_V0802.md` | S |
|
|
| QA1-02 | Mise à jour PROJECT_STATE, FEATURE_STATUS, CHANGELOG | `docs/` | S |
|
|
| QA1-03 | Rétrospective, archivage, placeholder v0.803, tag | `docs/`, Git | S |
|
|
|
|
---
|
|
|
|
## 4. Hors scope v0.802
|
|
|
|
| Élément | Version cible |
|
|
|---------|---------------|
|
|
| OpenAPI/Swagger | v0.803 |
|
|
| Audit logs | v0.803 |
|
|
| Admin modération | v0.803 |
|
|
| Wishlist marketplace | v0.901 |
|
|
| Upload depuis cloud externe (Dropbox, Drive) | v2.0 |
|
|
| Scan antivirus | v2.0 |
|
|
| Watermarking automatique | v2.0 |
|
|
| Compression images automatique | v2.0 |
|
|
| Backup incrémental | v2.0 |
|
|
| ZFS snapshots | v2.0 |
|
|
| Assurance matériel | v2.0 |
|
|
|
|
---
|
|
|
|
## 5. Critères d'acceptation
|
|
|
|
- [ ] Versioning : upload écrase → ancienne version sauvegardée, 10 max par fichier
|
|
- [ ] Restore : version précédente restaurée, nouvelle version créée
|
|
- [ ] Share : lien unique avec token, permissions, expiration optionnelle
|
|
- [ ] Backup auto : cron copie vers bucket S3 dédié (configurable)
|
|
- [ ] Export GDPR : ZIP téléchargeable contenant toutes les données utilisateur
|
|
- [ ] Batch upload : multi-fichiers, progress individuel, max 3 concurrents
|
|
- [ ] Pause/resume : chunks 5MB, reprise depuis le dernier chunk
|
|
- [ ] Tags auto-suggest : top 10 par fréquence, recherche prefix
|
|
- [ ] Formats : OGG, AIFF, M4A acceptés et transcodés
|
|
- [ ] Gear warranty : dates, notification 30j avant expiration
|
|
- [ ] Gear documents : upload facture/PDF, liste documents
|
|
- [ ] Gear repairs : CRUD historique réparations avec coût
|
|
- [ ] Tag v0.802 créé
|
|
|
|
---
|
|
|
|
## 6. Risques
|
|
|
|
| Risque | Mitigation |
|
|
|--------|------------|
|
|
| Versioning storage explose | Limit 10 versions, cleanup cron des versions > 90 jours |
|
|
| Chunked upload complexité | Library tus.io ou implémentation simplifiée avec Content-Range |
|
|
| Export GDPR lent (gros utilisateurs) | Background job, notification quand prêt, lien temporaire |
|
|
| Backup auto coût S3 | Configurable, désactivé par défaut en dev |
|
|
| Warranty notifications spam | Max 1 notification par gear par période de 30j |
|
|
|
|
---
|
|
|
|
## 7. Références
|
|
|
|
- [V0_801_RELEASE_SCOPE.md](archive/V0_801_RELEASE_SCOPE.md)
|
|
- [SCOPE_CONTROL.md](SCOPE_CONTROL.md)
|
|
- `veza-backend-api/internal/services/cloud_service.go`
|
|
- `veza-backend-api/internal/handlers/cloud_handler.go`
|
|
- `veza-backend-api/internal/handlers/gear_handler.go`
|
|
- `apps/web/src/features/cloud/`
|
|
- `apps/web/src/features/inventory/`
|