docs: update documentation for v0.803 release
This commit is contained in:
parent
62e3e96884
commit
5063c95a5c
6 changed files with 176 additions and 167 deletions
25
CHANGELOG.md
25
CHANGELOG.md
|
|
@ -1,5 +1,27 @@
|
||||||
# Changelog - Veza
|
# Changelog - Veza
|
||||||
|
|
||||||
|
## [v0.803] - 2026-02-25
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Audit middleware: auto-log POST/PUT/DELETE to AuditService (skip /health, /metrics, /swagger)
|
||||||
|
- CCPA compliance: Sec-GPC header support, POST /users/me/privacy/opt-out
|
||||||
|
- Account deletion hardening: anonymization (deleted-{uuid}), S3 cleanup, session revocation, audit log
|
||||||
|
- Moderation queue: migration reports, model, service, handler; GET /admin/reports, POST /admin/reports/:id/resolve, POST /reports (user report)
|
||||||
|
- Maintenance mode: middleware 503 when enabled, PUT/GET /admin/maintenance (admin toggle)
|
||||||
|
- Announcements: migration, model, service, handler; GET /announcements/active (public), GET/POST/DELETE /admin/announcements
|
||||||
|
- Feature flags: migration, model, service, handler; GET /admin/feature-flags, PUT /admin/feature-flags/:name
|
||||||
|
- Frontend: AdminSettingsView connected to maintenance, announcements, feature flags; AdminModerationView to real reports API
|
||||||
|
- AnnouncementBanner: global banner fetching GET /announcements/active, integrated in DashboardLayout
|
||||||
|
- MSW handlers: reports, announcements, feature flags, maintenance
|
||||||
|
- Swagger annotations: privacy opt-out, account deletion
|
||||||
|
- Unit tests: CCPA, reports, announcements, feature flags handlers
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- AdminSettingsView: local state replaced by API calls for maintenance, feature flags, announcements
|
||||||
|
- AdminModerationView: mock replaced by GET /admin/reports, resolve via POST
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## [v0.802] - 2026-02-25
|
## [v0.802] - 2026-02-25
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
@ -16,7 +38,8 @@
|
||||||
- Frontend: CloudFileVersions, CloudShareModal, Versions/Share buttons in CloudFileList
|
- Frontend: CloudFileVersions, CloudShareModal, Versions/Share buttons in CloudFileList
|
||||||
- Frontend: GearDetailModal tabs (Documents, Repairs), warranty badge
|
- Frontend: GearDetailModal tabs (Documents, Repairs), warranty badge
|
||||||
- MSW handlers: cloud versions/share, gear documents/repairs, tags suggest
|
- MSW handlers: cloud versions/share, gear documents/repairs, tags suggest
|
||||||
- Storybook: CloudFileVersions, CloudShareModal, GearDetailModalWithDocuments/WithRepairs/WarrantyExpiring
|
- Backend unit tests: TagSuggestService, GearWarrantyNotifier
|
||||||
|
- Storybook: CloudFileVersions (WithVersions, Empty, Loading), CloudShareModal, GearDetailModal (WithDocuments, WithRepairs, WarrantyExpiring), GearCard (WarrantyExpiringSoon)
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- gear_document_service: sanitizeGearFilename to avoid conflict with cloud sanitizeFilename
|
- gear_document_service: sanitizeGearFilename to avoid conflict with cloud sanitizeFilename
|
||||||
|
|
|
||||||
|
|
@ -705,6 +705,108 @@ Request GDPR data export. Returns 202 Accepted; export runs asynchronously. User
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Security & Compliance (v0.803)
|
||||||
|
|
||||||
|
### Audit Middleware
|
||||||
|
|
||||||
|
All POST, PUT, DELETE requests are automatically logged to the audit service (user, action, resource, IP). Skipped paths: `/health`, `/metrics`, `/swagger`, `/api/v1/admin`.
|
||||||
|
|
||||||
|
### CCPA / Sec-GPC
|
||||||
|
|
||||||
|
When the client sends `Sec-GPC: 1` (Global Privacy Control), the server sets `do_not_sell=true` in context and responds with `GPC: 1`.
|
||||||
|
|
||||||
|
### POST /users/me/privacy/opt-out
|
||||||
|
|
||||||
|
Set Do Not Sell preference (CCPA compliance).
|
||||||
|
|
||||||
|
**Auth:** Bearer token (required)
|
||||||
|
|
||||||
|
**Body:** `{ "do_not_sell": true }`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Moderation (v0.803)
|
||||||
|
|
||||||
|
### GET /admin/reports
|
||||||
|
|
||||||
|
List reports (admin only). Query: `status` (pending|resolved|dismissed|all), `limit`, `offset`.
|
||||||
|
|
||||||
|
**Auth:** Bearer token + admin role
|
||||||
|
|
||||||
|
### POST /admin/reports/:id/resolve
|
||||||
|
|
||||||
|
Resolve a report. Body: `{ "action": "resolve"|"dismiss"|"ban"|"warn" }`.
|
||||||
|
|
||||||
|
**Auth:** Bearer token + admin role
|
||||||
|
|
||||||
|
### POST /reports
|
||||||
|
|
||||||
|
Create a report (authenticated user). Body: `{ "content_type": "user"|"track"|"comment", "content_id": "uuid", "reason": "..." }`.
|
||||||
|
|
||||||
|
**Auth:** Bearer token (required)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Announcements (v0.803)
|
||||||
|
|
||||||
|
### GET /announcements/active
|
||||||
|
|
||||||
|
List active announcements (public). Used by AnnouncementBanner.
|
||||||
|
|
||||||
|
**Auth:** None
|
||||||
|
|
||||||
|
### GET /admin/announcements
|
||||||
|
|
||||||
|
List all announcements (admin).
|
||||||
|
|
||||||
|
**Auth:** Bearer token + admin role
|
||||||
|
|
||||||
|
### POST /admin/announcements
|
||||||
|
|
||||||
|
Create announcement. Body: `{ "title": "...", "content": "...", "type": "info"|"warning"|"error" }`.
|
||||||
|
|
||||||
|
**Auth:** Bearer token + admin role
|
||||||
|
|
||||||
|
### DELETE /admin/announcements/:id
|
||||||
|
|
||||||
|
Delete an announcement.
|
||||||
|
|
||||||
|
**Auth:** Bearer token + admin role
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Feature Flags (v0.803)
|
||||||
|
|
||||||
|
### GET /admin/feature-flags
|
||||||
|
|
||||||
|
List all feature flags (admin).
|
||||||
|
|
||||||
|
**Auth:** Bearer token + admin role
|
||||||
|
|
||||||
|
### PUT /admin/feature-flags/:name
|
||||||
|
|
||||||
|
Toggle a feature flag. Body: `{ "enabled": true|false }`.
|
||||||
|
|
||||||
|
**Auth:** Bearer token + admin role
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Maintenance Mode (v0.803)
|
||||||
|
|
||||||
|
### GET /admin/maintenance
|
||||||
|
|
||||||
|
Get current maintenance mode status.
|
||||||
|
|
||||||
|
**Auth:** Bearer token + admin role
|
||||||
|
|
||||||
|
### PUT /admin/maintenance
|
||||||
|
|
||||||
|
Enable or disable maintenance mode. Body: `{ "enabled": true|false }`. When enabled, non-admin routes return 503 except `/health`, `/api/v1/admin/*`.
|
||||||
|
|
||||||
|
**Auth:** Bearer token + admin role
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Legacy routes (deprecated)
|
## Legacy routes (deprecated)
|
||||||
|
|
||||||
The following routes are also available at the root (without `/api/v1` prefix) but are deprecated:
|
The following routes are also available at the root (without `/api/v1` prefix) but are deprecated:
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Statut des fonctionnalités — Veza
|
# Statut des fonctionnalités — Veza
|
||||||
|
|
||||||
**Dernière mise à jour** : février 2026 — v0.802 livrée (Cloud avancé, Gear documents/repairs, Tags suggest)
|
**Dernière mise à jour** : février 2026 — v0.803 livrée (Sécurité, Compliance, Modération, Maintenance, Annonces, Feature flags)
|
||||||
|
|
||||||
Ce document décrit le statut réel des fonctionnalités par rapport au code.
|
Ce document décrit le statut réel des fonctionnalités par rapport au code.
|
||||||
|
|
||||||
|
|
@ -19,7 +19,7 @@ Ce document décrit le statut réel des fonctionnalités par rapport au code.
|
||||||
| Dashboard | Oui | Oui | GET /api/v1/dashboard |
|
| Dashboard | Oui | Oui | GET /api/v1/dashboard |
|
||||||
| Recherche | Oui | Oui | GET /search unifié, GET /tracks/search. v0.202 : musical_key, tri pertinence. v0.203 : pg_trgm fuzzy, AND/OR/NOT, tooltip aide |
|
| Recherche | Oui | Oui | GET /search unifié, GET /tracks/search. v0.202 : musical_key, tri pertinence. v0.203 : pg_trgm fuzzy, AND/OR/NOT, tooltip aide |
|
||||||
| Social (feed, posts, groups, follows, blocks, trending) | Oui | Oui | v0.301 : feed API, explore. v0.302 : groupes avancés (request join, invite, rôles, mes groupes) |
|
| Social (feed, posts, groups, follows, blocks, trending) | Oui | Oui | v0.301 : feed API, explore. v0.302 : groupes avancés (request join, invite, rôles, mes groupes) |
|
||||||
| Administration | Oui | Oui | Complet |
|
| Administration | Oui | Oui | Complet. v0.803 : Modération (reports), Maintenance mode, Annonces, Feature flags DB |
|
||||||
| Marketplace | Oui | Oui | Complet (Hyperswitch). v0.603 : Transfer auto Stripe Connect. v0.701 : Retry auto failed transfers, Admin Dashboard. v0.702 : Route product detail, tests reviews/invoices/refunds |
|
| Marketplace | Oui | Oui | Complet (Hyperswitch). v0.603 : Transfer auto Stripe Connect. v0.701 : Retry auto failed transfers, Admin Dashboard. v0.702 : Route product detail, tests reviews/invoices/refunds |
|
||||||
| Webhooks | Oui | Oui | Complet |
|
| Webhooks | Oui | Oui | Complet |
|
||||||
| Inventory / Gear | Oui | Oui | GET/POST/PUT/DELETE /api/v1/inventory/gear. v0.802 : documents CRUD, repairs CRUD, warranty notifier |
|
| Inventory / Gear | Oui | Oui | GET/POST/PUT/DELETE /api/v1/inventory/gear. v0.802 : documents CRUD, repairs CRUD, warranty notifier |
|
||||||
|
|
@ -230,6 +230,19 @@ Voir [V0_703_RELEASE_SCOPE.md](V0_703_RELEASE_SCOPE.md) pour le détail.
|
||||||
| G2 | Gear repairs : CRUD (repair history) |
|
| G2 | Gear repairs : CRUD (repair history) |
|
||||||
| G2 | Gear warranty : warranty_start, warranty_notes, notifier 24h |
|
| G2 | Gear warranty : warranty_start, warranty_notes, notifier 24h |
|
||||||
|
|
||||||
|
## Livré en v0.803 (Phase 8 — Sécurité, Compliance & Outillage Dev)
|
||||||
|
|
||||||
|
| Lot | Feature |
|
||||||
|
|-----|---------|
|
||||||
|
| SEC1 | Audit middleware : auto-log POST/PUT/DELETE |
|
||||||
|
| SEC2 | CCPA : Sec-GPC header, POST /users/me/privacy/opt-out |
|
||||||
|
| SEC3 | Account deletion : anonymisation, S3 cleanup, session revocation |
|
||||||
|
| ADM1 | Modération : reports CRUD, GET /admin/reports, POST /admin/reports/:id/resolve |
|
||||||
|
| ADM2 | Maintenance mode : middleware 503, PUT/GET /admin/maintenance |
|
||||||
|
| ADM3 | Annonces : CRUD, GET /announcements/active (public) |
|
||||||
|
| ADM4 | Feature flags : DB persistence, GET/PUT /admin/feature-flags |
|
||||||
|
| FE1 | AdminSettingsView, AdminModerationView, AnnouncementBanner connectés |
|
||||||
|
|
||||||
## Prévu en v0.403 (Phase 4 Commerce — suite)
|
## Prévu en v0.403 (Phase 4 Commerce — suite)
|
||||||
|
|
||||||
| Lot | Feature |
|
| Lot | Feature |
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,10 @@
|
||||||
|
|
||||||
| Élément | Valeur |
|
| Élément | Valeur |
|
||||||
|---------|--------|
|
|---------|--------|
|
||||||
| **Dernier tag** | v0.802 |
|
| **Dernier tag** | v0.803 |
|
||||||
| **Branche courante** | `main` |
|
| **Branche courante** | `main` |
|
||||||
| **Phase** | Phase 8 — Polish & Scale |
|
| **Phase** | Phase 8 — Polish & Scale |
|
||||||
| **Prochaine version** | v0.803 |
|
| **Prochaine version** | v0.901 |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -73,6 +73,16 @@
|
||||||
- Infra : MinIO S3-compatible (dev, staging, prod), 6 migrations (103–108)
|
- Infra : MinIO S3-compatible (dev, staging, prod), 6 migrations (103–108)
|
||||||
- Sécurité : Trivy container scanning CI
|
- Sécurité : Trivy container scanning CI
|
||||||
|
|
||||||
|
### v0.803 (Phase 8 — Sécurité, Compliance & Outillage Dev)
|
||||||
|
- Audit middleware HTTP (POST/PUT/DELETE auto-log)
|
||||||
|
- CCPA Sec-GPC, opt-out endpoint
|
||||||
|
- Account deletion hardening (anonymisation, S3, sessions)
|
||||||
|
- Moderation queue (reports CRUD)
|
||||||
|
- Maintenance mode (503, admin toggle)
|
||||||
|
- Announcements CRUD, GET /announcements/active
|
||||||
|
- Feature flags DB persistence
|
||||||
|
- AdminSettingsView, AdminModerationView, AnnouncementBanner connectés
|
||||||
|
|
||||||
### v0.802 (Phase 8 — Cloud avancé, Gear, Tags)
|
### v0.802 (Phase 8 — Cloud avancé, Gear, Tags)
|
||||||
- Cloud : versioning, sharing, GDPR export, backup cron
|
- Cloud : versioning, sharing, GDPR export, backup cron
|
||||||
- Gear : documents CRUD, repairs CRUD, warranty notifier
|
- Gear : documents CRUD, repairs CRUD, warranty notifier
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
# Contrôle du scope — Anti-scope-creep
|
# Contrôle du scope — Anti-scope-creep
|
||||||
|
|
||||||
**Objectif** : Éviter toute dérive de scope. Chaque modification doit être intentionnelle et traçable.
|
**Objectif** : Éviter toute dérive de scope. Chaque modification doit être intentionnelle et traçable.
|
||||||
**Référence active** : [V0_803_RELEASE_SCOPE.md](V0_803_RELEASE_SCOPE.md)
|
**Référence active** : [V0_901_RELEASE_SCOPE.md](V0_901_RELEASE_SCOPE.md)
|
||||||
**Version précédente** : [V0_802_RELEASE_SCOPE.md](archive/V0_802_RELEASE_SCOPE.md)
|
**Version précédente** : [V0_803_RELEASE_SCOPE.md](V0_803_RELEASE_SCOPE.md)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 1. Règle d'or
|
## 1. Règle d'or
|
||||||
|
|
||||||
> **Avant d'ajouter quoi que ce soit : vérifier si c'est dans le scope v0.803.**
|
> **Avant d'ajouter quoi que ce soit : vérifier si c'est dans le scope v0.901.**
|
||||||
> Si non → ne pas ajouter. Créer un ticket pour une version ultérieure.
|
> Si non → ne pas ajouter. Créer un ticket pour une version ultérieure.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
### 2.1 Autorisé
|
### 2.1 Autorisé
|
||||||
|
|
||||||
- **Corrections de bugs** sur les features IN SCOPE v0.803
|
- **Corrections de bugs** sur les features IN SCOPE v0.901
|
||||||
- **Stabilisation** : tests, refactoring sans changement de comportement
|
- **Stabilisation** : tests, refactoring sans changement de comportement
|
||||||
- **Nettoyage** : suppression de code mort, consolidation
|
- **Nettoyage** : suppression de code mort, consolidation
|
||||||
- **Documentation** : mise à jour des docs existantes
|
- **Documentation** : mise à jour des docs existantes
|
||||||
|
|
@ -26,17 +26,17 @@
|
||||||
|
|
||||||
### 2.2 Interdit
|
### 2.2 Interdit
|
||||||
|
|
||||||
- **Nouvelles features** hors scope v0.803
|
- **Nouvelles features** hors scope v0.901
|
||||||
- **Nouvelles routes** ou pages hors scope
|
- **Nouvelles routes** ou pages hors scope
|
||||||
- **Nouvelles dépendances** (sauf correctif sécurité)
|
- **Nouvelles dépendances** (sauf correctif sécurité)
|
||||||
- **Changements de comportement** sur les features HORS SCOPE
|
- **Changements de comportement** sur les features HORS SCOPE
|
||||||
- **"Améliorations"** non liées à un bug identifié ou une feature IN SCOPE v0.803
|
- **"Améliorations"** non liées à un bug identifié ou une feature IN SCOPE v0.901
|
||||||
|
|
||||||
### 2.3 Cas limite
|
### 2.3 Cas limite
|
||||||
|
|
||||||
| Situation | Action |
|
| Situation | Action |
|
||||||
|-----------|--------|
|
|-----------|--------|
|
||||||
| Bug dans une feature HORS SCOPE | Corriger si blocant pour une feature IN SCOPE v0.803. Sinon : ticket pour plus tard. |
|
| Bug dans une feature HORS SCOPE | Corriger si blocant pour une feature IN SCOPE v0.901. Sinon : ticket pour plus tard. |
|
||||||
| Dépendance obsolète/vulnérable | Mettre à jour. Documenter dans la PR. |
|
| Dépendance obsolète/vulnérable | Mettre à jour. Documenter dans la PR. |
|
||||||
| Refactoring qui change une API interne | Autorisé si 0 impact sur le contrat public et tests passent. |
|
| Refactoring qui change une API interne | Autorisé si 0 impact sur le contrat public et tests passent. |
|
||||||
| "Petite amélioration UX" | **Non.** Créer un ticket pour v0.803+. |
|
| "Petite amélioration UX" | **Non.** Créer un ticket pour v0.803+. |
|
||||||
|
|
@ -47,13 +47,13 @@
|
||||||
|
|
||||||
### 3.1 Checklist pré-commit (dans la tête)
|
### 3.1 Checklist pré-commit (dans la tête)
|
||||||
|
|
||||||
1. **Mon changement modifie-t-il une feature IN SCOPE v0.803 ?**
|
1. **Mon changement modifie-t-il une feature IN SCOPE v0.901 ?**
|
||||||
- Oui → Continuer. S'assurer qu'il n'y a pas de régression.
|
- Oui → Continuer. S'assurer qu'il n'y a pas de régression.
|
||||||
- Non → **STOP.** Est-ce une correction de bug ? Si oui, la feature est-elle IN SCOPE ?
|
- Non → **STOP.** Est-ce une correction de bug ? Si oui, la feature est-elle IN SCOPE ?
|
||||||
|
|
||||||
2. **Mon changement ajoute-t-il du code ?**
|
2. **Mon changement ajoute-t-il du code ?**
|
||||||
- Nouvelle route, nouveau composant, nouveau service → Vérifier V0_803_RELEASE_SCOPE. Si hors scope → **STOP.**
|
- Nouvelle route, nouveau composant, nouveau service → Vérifier V0_901_RELEASE_SCOPE. Si hors scope → **STOP.**
|
||||||
- Correction, refactoring, test → OK si lié à une feature IN SCOPE v0.803.
|
- Correction, refactoring, test → OK si lié à une feature IN SCOPE v0.901.
|
||||||
|
|
||||||
3. **Mes tests passent-ils ?**
|
3. **Mes tests passent-ils ?**
|
||||||
- `npm test -- --run` (frontend)
|
- `npm test -- --run` (frontend)
|
||||||
|
|
@ -81,7 +81,7 @@ Format : `type(scope): description`
|
||||||
|
|
||||||
Dans chaque PR, le relecteur doit valider :
|
Dans chaque PR, le relecteur doit valider :
|
||||||
|
|
||||||
- [ ] Le changement est dans le scope v0.803 (voir [V0_803_RELEASE_SCOPE.md](V0_803_RELEASE_SCOPE.md))
|
- [ ] Le changement est dans le scope v0.901 (voir [V0_901_RELEASE_SCOPE.md](V0_901_RELEASE_SCOPE.md))
|
||||||
- [ ] Aucune nouvelle feature ajoutée
|
- [ ] Aucune nouvelle feature ajoutée
|
||||||
- [ ] Aucune régression sur les flows critiques
|
- [ ] Aucune régression sur les flows critiques
|
||||||
- [ ] Les tests passent
|
- [ ] Les tests passent
|
||||||
|
|
@ -92,19 +92,19 @@ Dans chaque PR, le relecteur doit valider :
|
||||||
Une PR sera rejetée si :
|
Une PR sera rejetée si :
|
||||||
|
|
||||||
- Elle ajoute une nouvelle route, page ou feature
|
- Elle ajoute une nouvelle route, page ou feature
|
||||||
- Elle modifie le comportement d'une feature HORS SCOPE v0.803 (sauf correctif bug critique)
|
- Elle modifie le comportement d'une feature HORS SCOPE v0.901 (sauf correctif bug critique)
|
||||||
- Les tests échouent
|
- Les tests échouent
|
||||||
- Elle introduit une dépendance non justifiée
|
- Elle introduit une dépendance non justifiée
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 5. Proposer une feature pour APRÈS v0.702
|
## 5. Proposer une feature pour APRÈS v0.803
|
||||||
|
|
||||||
### 5.1 Template
|
### 5.1 Template
|
||||||
|
|
||||||
Utiliser le template [Feature request](.github/ISSUE_TEMPLATE/feature_request.md) avec :
|
Utiliser le template [Feature request](.github/ISSUE_TEMPLATE/feature_request.md) avec :
|
||||||
|
|
||||||
- **Alignement scope** : cocher "Hors scope v0.803 — pour v0.804+"
|
- **Alignement scope** : cocher "Hors scope v0.901 — pour v0.902+"
|
||||||
- **Justification** : pourquoi cette feature est nécessaire
|
- **Justification** : pourquoi cette feature est nécessaire
|
||||||
- **Effort estimé** : S / M / L / XL
|
- **Effort estimé** : S / M / L / XL
|
||||||
- **Dépendances** : quelles features v0.802 doivent être stables avant
|
- **Dépendances** : quelles features v0.802 doivent être stables avant
|
||||||
|
|
@ -112,8 +112,8 @@ Utiliser le template [Feature request](.github/ISSUE_TEMPLATE/feature_request.md
|
||||||
### 5.2 Workflow
|
### 5.2 Workflow
|
||||||
|
|
||||||
1. Créer une issue avec le template
|
1. Créer une issue avec le template
|
||||||
2. **Ne pas implémenter** tant que v0.803 n'est pas taguée
|
2. **Ne pas implémenter** tant que v0.901 n'est pas défini
|
||||||
3. Une fois v0.803 stable, prioriser les issues post-v0.803 dans le scope suivant
|
3. Une fois v0.901 défini, prioriser les issues dans le scope suivant
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -178,11 +178,12 @@ Pour tout cas ambigu :
|
||||||
- v0.703 : Phase 7 — Go Live & Streaming Complet — taguée
|
- v0.703 : Phase 7 — Go Live & Streaming Complet — taguée
|
||||||
- v0.801 : Phase 8 — UX/UI Polish, Accessibilité & PWA — taguée
|
- v0.801 : Phase 8 — UX/UI Polish, Accessibilité & PWA — taguée
|
||||||
- v0.802 : Phase 8 — Cloud avancé, Gear documents/repairs, Tags suggest — taguée
|
- v0.802 : Phase 8 — Cloud avancé, Gear documents/repairs, Tags suggest — taguée
|
||||||
|
- v0.803 : Phase 8 — Sécurité, Compliance & Outillage Dev — taguée
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 8. Rappel pour les contributeurs
|
## 8. Rappel pour les contributeurs
|
||||||
|
|
||||||
- **Cursor / IA** : Les règles dans `.cursorrules` rappellent de vérifier le scope avant toute modification.
|
- **Cursor / IA** : Les règles dans `.cursorrules` rappellent de vérifier le scope avant toute modification.
|
||||||
- **Humains** : Lire [V0_803_RELEASE_SCOPE.md](V0_803_RELEASE_SCOPE.md) avant de coder.
|
- **Humains** : Lire [V0_901_RELEASE_SCOPE.md](V0_901_RELEASE_SCOPE.md) avant de coder.
|
||||||
- **En doute ?** Ouvrir une issue "Scope clarification" plutôt que de coder.
|
- **En doute ?** Ouvrir une issue "Scope clarification" plutôt que de coder.
|
||||||
|
|
|
||||||
|
|
@ -1,150 +1,10 @@
|
||||||
# V0.901 Release Scope — Marketplace Complet & Analytics Avancés
|
# Scope v0.901 — À définir
|
||||||
|
|
||||||
**Statut** : Planifié
|
**Statut** : Placeholder. Le scope sera défini après stabilisation de v0.803.
|
||||||
**Phase** : 9 (v1.0 Launch — Lot 1)
|
|
||||||
**Prérequis** : v0.803 (taguée)
|
|
||||||
**Date cible** : TBD
|
|
||||||
**Estimation** : ~3 sprints (15 jours ouvrés)
|
|
||||||
**Précédente** : [v0.803](archive/V0_803_RELEASE_SCOPE.md)
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 1. Objectif
|
## Référence
|
||||||
|
|
||||||
Première version de la Phase 9. Complète le module **Marketplace** (wishlist, promotions/flash sales, dispute/réclamation, réponses aux reviews, re-téléchargement illimité, informations fiscales) et les **Analytics avancés** (géographie auditeurs, démographie, devices, sources de trafic, projections revenus, analytics admin). Ces fonctionnalités finalisent le volet commerce et données pour la v1.0.
|
- Version précédente : [V0_803_RELEASE_SCOPE.md](V0_803_RELEASE_SCOPE.md)
|
||||||
|
- [SCOPE_CONTROL.md](SCOPE_CONTROL.md) — Anti-scope-creep
|
||||||
---
|
|
||||||
|
|
||||||
## 2. État actuel (post-v0.803)
|
|
||||||
|
|
||||||
| Composant | État | Détail |
|
|
||||||
|-----------|------|--------|
|
|
||||||
| **Produits & Catalogue** | ✅ Livré v0.401 | CRUD, filtres, images, previews |
|
|
||||||
| **Licences & Droits** | ✅ Livré v0.401 | Types, conditions, LicenceCard |
|
|
||||||
| **Checkout Hyperswitch** | ✅ Livré v0.402 | Production-ready, return URL |
|
|
||||||
| **Codes promo** | ✅ Livré v0.402 | Validation, OrderSummary |
|
|
||||||
| **Reviews** | ✅ Livré v0.702 | Create, List, tests unitaires |
|
|
||||||
| **Factures PDF** | ✅ Livré v0.702 | GenerateInvoice, download |
|
|
||||||
| **Remboursements** | ✅ Livré v0.702 | RefundOrder, licence revocation |
|
|
||||||
| **Seller dashboard** | ✅ Livré v0.401 | Stats, evolution chart, top products |
|
|
||||||
| **Transfer auto** | ✅ Livré v0.603 | Stripe Connect, commission plateforme |
|
|
||||||
| **Wishlist** | ❌ Absent | wishlist.go existe mais non connecté frontend |
|
|
||||||
| **Promotions / flash sales** | ❌ Absent | Pas de système de promotions dynamiques |
|
|
||||||
| **Dispute / réclamation** | ❌ Absent | Pas de flow dispute client |
|
|
||||||
| **Répondre aux reviews** | ❌ Absent | Pas de réponse vendeur aux reviews |
|
|
||||||
| **Re-téléchargement illimité** | ❌ Absent | Pas de re-download après achat |
|
|
||||||
| **Informations fiscales** | ❌ Absent | Pas de calcul taxes automatique |
|
|
||||||
| **Analytics créateur** | ✅ Livré v0.202 | Stats, charts, export CSV/JSON |
|
|
||||||
| **Géographie auditeurs** | ❌ Absent | Pas de carte géographique |
|
|
||||||
| **Démographie** | ❌ Absent | Pas de données démographiques |
|
|
||||||
| **Device analytics** | ❌ Absent | Pas de breakdown par device |
|
|
||||||
| **Admin analytics** | ❌ Absent | Pas de DAU/MAU, rétention |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 3. Lots
|
|
||||||
|
|
||||||
### Lot MK1 — Marketplace Avancé
|
|
||||||
|
|
||||||
| # | Tâche | Fichiers impactés | Effort |
|
|
||||||
|---|-------|--------------------|--------|
|
|
||||||
| MK1-01 | Wishlist frontend — connecter wishlist.go existant, `WishlistView`, bouton coeur sur ProductCard, `GET /marketplace/wishlist` | Frontend + routes | M |
|
|
||||||
| MK1-02 | `POST /marketplace/wishlist/:productId`, `DELETE /marketplace/wishlist/:productId` — ajout/retrait wishlist | Backend routes | S |
|
|
||||||
| MK1-03 | Promotions — migration `126_promotions.sql` (table promotions: product_id, discount_percent, starts_at, ends_at, is_active), CRUD endpoints | Migrations, handlers | L |
|
|
||||||
| MK1-04 | Flash sales frontend — badge "PROMO -X%" sur ProductCard, countdown timer, page /marketplace/deals | Frontend | M |
|
|
||||||
| MK1-05 | Dispute / réclamation — migration `127_disputes.sql` (table disputes: order_id, buyer_id, reason, status, resolution), `POST /marketplace/orders/:id/dispute`, `GET /admin/disputes` | Migrations, handlers | L |
|
|
||||||
| MK1-06 | Réponse aux reviews — `POST /marketplace/reviews/:id/reply` (seller uniquement), affichage reply dans ProductDetailViewReviews | Backend, frontend | M |
|
|
||||||
| MK1-07 | Re-download — `GET /marketplace/orders/:id/download` retourne lien S3 temporaire pour les fichiers achetés, illimité dans le temps | Backend | M |
|
|
||||||
| MK1-08 | Taxes — config `TAX_RATE` par pays (défaut 0), calcul automatique dans checkout, affichage dans OrderSummary | Backend, frontend | M |
|
|
||||||
| MK1-09 | MSW handlers — wishlist, promotions, disputes, review reply, download | MSW | S |
|
|
||||||
| MK1-10 | Tests — wishlist CRUD, promotion validity, dispute flow, re-download auth | Tests | M |
|
|
||||||
|
|
||||||
### Lot AN1 — Creator Analytics Complet
|
|
||||||
|
|
||||||
| # | Tâche | Fichiers impactés | Effort |
|
|
||||||
|---|-------|--------------------|--------|
|
|
||||||
| AN1-01 | Géographie auditeurs — collecte IP → country (MaxMind GeoIP2-Lite), `GET /analytics/geography` | Backend | L |
|
|
||||||
| AN1-02 | Carte géographique frontend — composant carte avec heatmap par pays (bibliothèque légère, ex: react-simple-maps) | Frontend | L |
|
|
||||||
| AN1-03 | Démographie — user-agent parsing (device, OS, browser), `GET /analytics/demographics` | Backend | M |
|
|
||||||
| AN1-04 | Device analytics — breakdown desktop/mobile/tablet, chart donut | Frontend | M |
|
|
||||||
| AN1-05 | Sources de trafic — referrer tracking, `GET /analytics/traffic-sources` | Backend | M |
|
|
||||||
| AN1-06 | Revenue projections — `GET /analytics/revenue/projection` basé sur tendance 30/60/90 jours (régression linéaire simple) | Backend | M |
|
|
||||||
| AN1-07 | Comparaison périodes — `GET /analytics/compare?period1=...&period2=...` | Backend | M |
|
|
||||||
| AN1-08 | Frontend analytics dashboard enrichi — onglets Geography, Demographics, Traffic, Revenue | Frontend | L |
|
|
||||||
| AN1-09 | Tests — geography parsing, projection calculation, comparison | Tests | M |
|
|
||||||
|
|
||||||
### Lot AN2 — Admin Analytics
|
|
||||||
|
|
||||||
| # | Tâche | Fichiers impactés | Effort |
|
|
||||||
|---|-------|--------------------|--------|
|
|
||||||
| AN2-01 | DAU/MAU — `GET /admin/analytics/users` basé sur last_active_at | Backend | M |
|
|
||||||
| AN2-02 | Nouveaux inscrits — `GET /admin/analytics/signups?period=30d` | Backend | S |
|
|
||||||
| AN2-03 | Taux de rétention — calcul D1, D7, D30 retention | Backend | M |
|
|
||||||
| AN2-04 | Volume de transactions — `GET /admin/analytics/transactions` (revenus, nombre, ticket moyen) | Backend | S |
|
|
||||||
| AN2-05 | Performances infrastructure — `GET /admin/analytics/performance` (p50, p95 latency, error rate) via Prometheus API | Backend | M |
|
|
||||||
| AN2-06 | Frontend admin analytics — dashboard avec widgets DAU/MAU, signups chart, retention curve, transactions summary | Frontend | L |
|
|
||||||
| AN2-07 | Tests — DAU calculation, retention formula, transaction aggregation | Tests | M |
|
|
||||||
|
|
||||||
### Lot QA1 — Tests & Release
|
|
||||||
|
|
||||||
| # | Tâche | Fichiers impactés | Effort |
|
|
||||||
|---|-------|--------------------|--------|
|
|
||||||
| QA1-01 | Smoke test v0.901 | `docs/SMOKE_TEST_V0901.md` | S |
|
|
||||||
| QA1-02 | Mise à jour docs | `docs/` | S |
|
|
||||||
| QA1-03 | Rétrospective, archivage, placeholder v0.902, tag | `docs/`, Git | S |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 4. Hors scope v0.901
|
|
||||||
|
|
||||||
| Élément | Version cible |
|
|
||||||
|---------|---------------|
|
|
||||||
| Chat enrichi (images, GIFs) | v0.902 |
|
|
||||||
| Transactional emails | v0.902 |
|
|
||||||
| Social complete (hashtags, QR) | v0.902 |
|
|
||||||
| Profiles complete (verified badge) | v0.902 |
|
|
||||||
| Search recommendations ML | v0.903 |
|
|
||||||
| PayPal support | v2.0 |
|
|
||||||
| Crypto payments | v2.0 |
|
|
||||||
| Signature électronique licences | v2.0 |
|
|
||||||
| Contrat automatique généré | v2.0 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 5. Critères d'acceptation
|
|
||||||
|
|
||||||
- [ ] Wishlist : ajout/retrait produit, page /marketplace/wishlist, coeur sur ProductCard
|
|
||||||
- [ ] Promotions : CRUD, discount appliqué au checkout, badge PROMO, countdown, page /deals
|
|
||||||
- [ ] Dispute : création par buyer, liste admin, résolution (refund/dismiss)
|
|
||||||
- [ ] Review reply : vendeur peut répondre, reply affiché sous la review
|
|
||||||
- [ ] Re-download : lien S3 temporaire illimité pour les achats
|
|
||||||
- [ ] Taxes : calcul auto par pays, affiché dans OrderSummary
|
|
||||||
- [ ] Géographie : carte heatmap des auditeurs par pays
|
|
||||||
- [ ] Démographie : breakdown device/OS/browser
|
|
||||||
- [ ] Traffic sources : referrer top 10
|
|
||||||
- [ ] Revenue projections : prévision 30/60/90j
|
|
||||||
- [ ] Admin DAU/MAU, signups, retention, transactions
|
|
||||||
- [ ] Tag v0.901 créé
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 6. Risques
|
|
||||||
|
|
||||||
| Risque | Mitigation |
|
|
||||||
|--------|------------|
|
|
||||||
| GeoIP database size | Utiliser MaxMind GeoIP2-Lite (gratuit, ~60MB), refresh mensuel |
|
|
||||||
| Projections revenus fausses | Disclaimer "estimation basée sur les 90 derniers jours" |
|
|
||||||
| Carte géographique lourde (SVG) | react-simple-maps avec lazy load, simplification polygones |
|
|
||||||
| Dispute flow complexe | Flow simple v1 (open → resolve), workflow avancé en v2 |
|
|
||||||
| Taxes multi-pays | Taux configurables par pays dans admin, pas de calcul auto TVA complexe |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 7. Références
|
|
||||||
|
|
||||||
- [V0_803_RELEASE_SCOPE.md](archive/V0_803_RELEASE_SCOPE.md)
|
|
||||||
- [SCOPE_CONTROL.md](SCOPE_CONTROL.md)
|
|
||||||
- `veza-backend-api/internal/core/marketplace/` (service, models, wishlist.go)
|
|
||||||
- `veza-backend-api/internal/core/analytics/`
|
|
||||||
- `apps/web/src/features/marketplace/`
|
|
||||||
- `apps/web/src/features/analytics/`
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue