diff --git a/docs/FEATURE_STATUS.md b/docs/FEATURE_STATUS.md index f01c6d372..6a81eed5f 100644 --- a/docs/FEATURE_STATUS.md +++ b/docs/FEATURE_STATUS.md @@ -1,6 +1,6 @@ # Statut des fonctionnalités — Veza -**Dernière mise à jour** : avril 2026 — v1.0.4 (release cleanup post-audit, CI verte, dette RGPD fermée) +**Dernière mise à jour** : 2026-04-26 — **v1.0.8** (MinIO end-to-end, OpenAPI orval = single source, E2E Playwright workflow, queue + auth password annotations, authService 9/9). Ce document décrit le statut réel des fonctionnalités par rapport au code. @@ -12,7 +12,7 @@ Ce document décrit le statut réel des fonctionnalités par rapport au code. | 2FA (TOTP) | Oui | Oui | Complet | | OAuth (Google, GitHub, Discord, Spotify) | Oui | Oui | Opérationnel (v0.601) — tous les fournisseurs | | Profils utilisateur | Oui | Oui | Bannière, liens sociaux, profil privé (v0.103 B1-B3) | -| Upload de tracks | Oui | Oui | Complet | +| Upload de tracks | Oui | Oui | Complet. v1.0.8 : MinIO/S3 backend wired (`TRACK_STORAGE_BACKEND=s3` flag), chunked upload assemblé puis stream single-shot vers S3, 302 redirect signed URL pour stream/download. | | CRUD Tracks | Oui | Oui | Complet — BPM, musical_key, lyrics, tags (v0.201 Lot E) | | Playlists (CRUD, collaboration) | Oui | Oui | Complet | | Chat WebSocket | Oui | Oui | Opérationnel — réécrit en Go (v0.502), intégré dans backend API | @@ -45,7 +45,7 @@ Ce document décrit le statut réel des fonctionnalités par rapport au code. | Feature | Flag | Backend | | ------------------------ | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | -| HLS Streaming | `HLS_STREAMING: true` (v0.101) | Opérationnel (v0.503) — Backend serving routes (master.m3u8, quality playlists, segments), frontend ABR player, HLS_STREAMING feature flag. | +| HLS Streaming | `HLS_STREAMING: false` (v1.0.7 default) | **Off par défaut depuis v1.0.7** (FUNCTIONAL_AUDIT §4 #5 — fallback `/tracks/:id/stream` Range cache bypass v1.0.7-rc1 commit `b875efcff`). Backend serving routes opérationnel quand activé (master.m3u8, quality playlists, segments). Frontend ABR player wired. | | Role Management | `ROLE_MANAGEMENT` | Opérationnel si activé | | Playlist Share | `PLAYLIST_SHARE: true` (v0.102) | Opérationnel | | Playlist Recommendations | `PLAYLIST_RECOMMENDATIONS: true` (v0.102) | Opérationnel | @@ -55,7 +55,7 @@ Ce document décrit le statut réel des fonctionnalités par rapport au code. | Feature | Limitation | Version cible | | ----------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------ | | **Go Live** (streaming vidéo) | Livré v0.703 — page /live/go-live, stream key, OBS instructions | — | -| **Appels WebRTC** | Beta — fonctionne mieux sur le même réseau local (TURN/STUN v1.1) | v1.1 (flag WEBRTC_CALLS) | +| **Appels WebRTC** | Signaling ✅ ; **NAT traversal HS sans STUN/TURN** (FUNCTIONAL_AUDIT 🟡 #1 — toujours ouvert). Cible v1.0.9 — coturn déploiement à prévoir. | v1.0.9 (flag WEBRTC_CALLS) | | **2FA SMS** | Option « Envoyer par SMS » pendant la vérification 2FA — requiert infra Twilio + users.phone_number | v0.104 | | **Passkeys / WebAuthn** | Login sans mot de passe — requiert go-webauthn, table webauthn_credentials, frontend navigator.credentials | v0.104 | diff --git a/docs/PROJECT_STATE.md b/docs/PROJECT_STATE.md index 8868953de..e63737533 100644 --- a/docs/PROJECT_STATE.md +++ b/docs/PROJECT_STATE.md @@ -6,23 +6,59 @@ ## 1. Version actuelle -| Élément | Valeur | -| --------------------- | ------------------------------------------- | -| **Dernier tag** | v1.0.4 (2026-04-15) | -| **Branche courante** | `main` | -| **Phase** | Phase 9 — v1.0 Launch — Post-cleanup stable | -| **Prochaine version** | v1.0.5 ou v1.1.0 selon scope | +| Élément | Valeur | +| --------------------- | ---------------------------------------------------------- | +| **Dernier tag** | **v1.0.8** (2026-04-26) | +| **Branche courante** | `main` | +| **Phase** | Phase 9+ — v1.0 Launch — Stabilisation continue | +| **Prochaine version** | v1.0.9 (Item G subscription + WebRTC TURN/STUN cibles) | -> v1.0.4 est une **release cleanup** post-audit : 7 jours de sprint -> (J1–J7), ~-220 MB de débris retirés, docs alignées sur la réalité, -> TODO RGPD `HIGH-007` fermé, CI consolidée verte. Voir `CHANGELOG.md` -> pour le détail. `AUDIT_REPORT.md` à la racine contient l'audit qui -> a généré ce sprint. +> **v1.0.8** (2026-04-26) — Quatre chantiers parallèles : +> - **Batch A** : MinIO/S3 wired bout-en-bout (upload + read + transcode), ferme le 🟡 stockage local de FUNCTIONAL_AUDIT. +> - **Batch B** : migration OpenAPI orval — 4 services migrés (dashboard / profile / playlist / track) + authService 9/9 (incluant register / refresh / password / verify migrés post-tag dans une session dédiée d'annotation queue + auth password). +> - **Batch B9** : suppression de `@openapitools/openapi-generator-cli` — orval = source unique. −198 fichiers / 23k LOC legacy. +> - **Batch C** : workflow Playwright E2E sur Forgejo Actions (`@critical` PR / full push+nightly), `--ci` seed flag (~5s vs ~60s), runbook `docs/CI_E2E.md`. +> +> **v1.0.7** (2026-04-23) — Release post-BFG : `.git` 2.3 GB → 66 MB, +> transactions marketplace `b5281bec`, UserRateLimiter wired +> `ebf3276d`, certs/clés rotatées hors git. +> +> **v1.0.4** (2026-04-15) — Release cleanup post-audit AUDIT_REPORT v1 +> (~220 MB débris retirés, docs alignées sur la réalité, RGPD +> HIGH-007 fermé, CI consolidée). +> +> Détail commit-par-commit : `CHANGELOG.md`. Audits source : +> `AUDIT_REPORT.md` v3 + `FUNCTIONAL_AUDIT.md` v2 à la racine. --- ## 2. Ce qui est livré +### v1.0.8 (2026-04-26 — Storage / OpenAPI / E2E CI) + +- **Batch A — MinIO/S3** : `tracks.storage_backend` column, `S3StorageService.UploadStream` + `GetSignedURL`, `TrackService.UploadTrack` wired S3, chunked upload assembly to S3, signed URL redirect 302 stream/download, transcoder lit signed HTTPS URL, `cmd/migrate_storage` CLI bulk local→S3. +- **Batch B — OpenAPI orval migration** : install orval@^7 + Axios mutator, swaggo annotations sur 50+ endpoints (track / playlist / user / queue / password). 5 services migrés : `dashboardService`, `profileService`, `playlistService`, `trackService`, `authService` (9/9 fonctions, dont les renames wire-shape `password_confirm` → `password_confirmation`, `refreshToken` → `refresh_token`, `verifyEmail` GET→POST). `services/api/queue.ts` migré. +- **Batch B9** : suppression `@openapitools/openapi-generator-cli` + `apps/web/src/types/generated/` (198 fichiers / 23k LOC). orval = source unique. Pre-commit drift guard simplifié. +- **Batch C — E2E Playwright CI** : `.github/workflows/e2e.yml` (`@critical` PR / full push+nightly), `--ci` seed flag (`cmd/tools/seed --ci`, ~5s vs ~60s), `playwright.config.ts` `reuseExistingServer: !CI`, runbook `docs/CI_E2E.md`. +- **Cleanup** : `fast-check` install (déblo­que pre-commit hermétique), CLAUDE.md stack table à jour, frontend-ci.yml fold dans ci.yml. + +### v1.0.7 (2026-04-23 — BFG history rewrite + hardening) + +- **BFG pass** : `.git` 2.3 GB → 66 MB (−97%). Stripped : binaires Go, kubectl vendoré (60 MB), audio uploads, 48 PNG racine, `.playwright-mcp/`, `.env*`, certs TLS, builds Incus. +- **Hardening backend** : `core/marketplace/service.go` `UpdateProductImages` + `SetProductLicenses` wrappés en transaction GORM (commit `b5281bec`). `UserRateLimiter` wired dans `AuthMiddleware.RequireAuth()` (commit `ebf3276d`). +- **`docs/ENV_VARIABLES.md`** : réécriture complète (172 → ~600 lignes), ~180 env vars surveyées du code. +- **Orphelins** : `internal/api/handlers/{chat,rbac,rbac_test}.go`, `internal/repository/user_repository.go`, `proto/chat/chat.proto`, `veza-common/src/types/{chat,websocket}.rs`. 19 workflows `.disabled` archivés. +- **MinIO + mc** pinned aux tags datés (`RELEASE.2025-09-07*`). + +### v1.0.5 / v1.0.6 / v1.0.6.1 / v1.0.6.2 (mars-avril 2026) + +Money-movement hardening — items A à F du plan v1.0.7 livrés en +cascade (idempotency keys Hyperswitch, persist `stripe_transfer_id`, +async Stripe Connect reversal worker, reconciliation sweep, webhook +raw audit log, ledger-health Prometheus gauges + 3 alertes +Alertmanager). Détail dans `CHANGELOG.md`. Item G (subscription +`pending_payment`) deferred v1.0.9. + ### v0.103 (Phase 1 Fondation) - Auth : OAuth Spotify (A1), Sessions enrichies (A4) @@ -191,22 +227,24 @@ ## 3. Prochaines étapes -### v0.503 (livrée 2026-02-22) +### Cible v1.0.9 -- SS1 : HLS Streaming E2E (backend routes + frontend ABR player) -- CH1 : Chat hardening (rate limiter Redis, présence persistante Redis, FTS PostgreSQL) -- CL1 : Cleanup veza-chat-server, nettoyage CI/CD/config -- QA1 : Tests, documentation -- Référence : [V0_503_RELEASE_SCOPE.md](V0_503_RELEASE_SCOPE.md) +Triés par effort × impact : -### Prochaine version (v0.701) +- **Item G subscription `pending_payment`** (M, 3j) — `docs/audit-2026-04/v107-plan.md` §G. State machine + recovery endpoint + tests + E2E `@critical`. Le hotfix v1.0.6.2 compense via filter ; G replace le creation path. **TODO marqué dans `subscription/service.go`**. +- **WebRTC STUN/TURN** (M, 1-2j) — FUNCTIONAL_AUDIT 🟡 #1. Coturn (Incus container ?), env vars, UI fallback si NAT échoue. Le seul 🟡 fonctionnel encore ouvert. +- **Email tokens query→header** (S, 0.5j) — FUNCTIONAL_AUDIT §4 #7. Sécu (anti-leak Referer/logs). Coupler avec migration `verifyEmail` POST déjà landée v1.0.8. +- **Register UX** (S, 0.5j) — FUNCTIONAL_AUDIT §4 #8. JWT émis avant l'email send → 403 immédiat tant que non-vérifié. Friction UX. +- **Multipart S3 chunked upload natif** (M, 1-2j) — plan v1.0.8 D4 deferred. Aujourd'hui : assemble local puis single-shot stream 500 MB. Risque OOM en pic de concurrence. +- **Consolider `services/api/*.ts` wrappers** (M, 1j) — auth/users/tracks/playlists/search/social. Parallèles aux feature services ; rewire ~30 importers vers feature-direct. +- **C6 E2E flake stab** (S, 0.5j) — après le 1er run E2E vert, identifier les vrais flakes en CI vs ceux observés en dev. -- Retry automatique des transferts échoués (cron + backoff exponentiel) -- Dashboard admin des transferts (GET /admin/transfers, retry manuel) -- Deep health checks (GET /health/deep — DB, Redis, S3, disk) -- Startup config validation -- Documentation API Reference -- Référence : [V0_701_RELEASE_SCOPE.md](V0_701_RELEASE_SCOPE.md) +### Plus tard (deferred v1.1+) + +- Consolidation dual-trigger transcode gRPC + RabbitMQ (FUNCTIONAL §2 parcours 2 #5). +- Études OOM stockage si scale x10. +- Backfill `seller_transfers.stripe_transfer_id` pour les rows pré-v1.0.7 (CHANGELOG ops task #38). +- Sandbox Hyperswitch → prod réel (mode `live`). ---