veza/docs/FEATURE_STATUS.md
senke 2ea5a60dea
Some checks failed
Veza CI / Rust (Stream Server) (push) Successful in 20m54s
E2E Playwright / e2e (full) (push) Failing after 21m0s
Security Scan / Secret Scanning (gitleaks) (push) Successful in 56s
Veza CI / Backend (Go) (push) Failing after 24m45s
Veza CI / Frontend (Web) (push) Successful in 34m57s
Veza CI / Notify on failure (push) Successful in 5s
docs: update PROJECT_STATE + FEATURE_STATUS post-v1.0.8
Both files were dated v1.0.4 (2026-04-15) — three releases out of
date. Surgical updates rather than a rewrite, since the underlying
feature inventory is mostly unchanged.

PROJECT_STATE.md
- §1 "Version actuelle" : tag v1.0.4 → v1.0.8 (2026-04-26). Phase
  description + next-version hint refreshed (v1.0.9 with item G +
  WebRTC TURN as cibles).
- §2 "Ce qui est livré" : prepended v1.0.8, v1.0.7, v1.0.5–v1.0.6.2
  consolidated entries (with batch labels A/B/B9/C and the
  money-movement plan items A–F). The v0.x sections kept verbatim
  for archive — they document phases that pre-date the launch.
- §3 "Prochaines étapes" : replaced the v0.701 retry/dashboard plan
  (long since shipped) with the v1.0.9 candidate list, ordered by
  effort × impact. Item G subscription pending_payment + WebRTC TURN
  are the two cibles. C6 flake stab + wrappers consolidation +
  multipart S3 + register UX + email tokens header migration listed
  alongside.

FEATURE_STATUS.md
- Header date refreshed to 2026-04-26 / v1.0.8 with the chantier
  summary.
- "Upload de tracks" row : added the v1.0.8 MinIO/S3 wiring detail
  (TRACK_STORAGE_BACKEND flag, chunked upload assembly, signed-URL
  redirect 302).
- "HLS Streaming" feature-flag row : flipped default from `true`
  (v0.101 era) to `false` (v1.0.7 default) — referencing the
  fallback /tracks/:id/stream Range cache bypass landed in
  v1.0.7-rc1 commit `b875efcff`.
- "Appels WebRTC" limitation row : note refreshed — signaling OK,
  NAT traversal still HS without STUN/TURN per FUNCTIONAL_AUDIT 🟡 #1,
  cible bumped from v1.1 to v1.0.9 (matches the v1.0.9 plan above).

The v0.x section in PROJECT_STATE.md (Phases 1–5) intentionally left
as-is — it serves as historical record of what shipped before
launch. Future agents reading the file should focus on §1, §2 v1.0.x,
and §3 for current state.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 01:56:44 +02:00

293 lines
26 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Statut des fonctionnalités — Veza
**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.
## Fonctionnalités opérationnelles (19)
| Feature | Frontend | Backend | Notes |
| ------------------------------------------------------- | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Auth (register, login, JWT, refresh) | Oui | Oui | Complet |
| 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. 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 |
| 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 |
| 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. 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 |
| Webhooks | Oui | Oui | Complet |
| Inventory / Gear | Oui | Oui | GET/POST/PUT/DELETE /api/v1/inventory/gear. v0.802 : documents CRUD, repairs CRUD, warranty notifier |
| Live Streaming (métadonnées) | Oui | Oui | GET /api/v1/live/streams — stream vidéo via Stream Server. v0.703 : Go Live, stream key, chat WebSocket, viewer count |
| Analytics | Oui | Oui | Routes /api/v1/analytics/\*. v0.202 : creator stats/charts/export (Lot H) |
| Roles | Oui | Oui | Assign, revoke — flag ROLE_MANAGEMENT |
| Notifications | Oui | Oui | Création auto follow/like/comment. v0.302 : Web Push, préférences |
## Fonctionnalités fantômes (UI sans backend)
| Feature | Localisation | Statut |
| ------------------------------- | ------------ | ---------------- |
| **Studio** (Cloud File Browser) | Supprimé | Dossier supprimé |
| **Education** | Supprimé | Dossier supprimé |
## Abandonné v1.0 (reporté versions futures)
| Feature | Version cible |
| ------------------------------------------------ | -------------------------------- |
| **Gamification** (achievements, leaderboard, XP) | v1.3 — supprimé v0.971 (phantom) |
## Fonctionnalités désactivées (feature flags)
| Feature | Flag | Backend |
| ------------------------ | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| 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 |
## Limitations connues (report versions futures)
| Feature | Limitation | Version cible |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------ |
| **Go Live** (streaming vidéo) | Livré v0.703 — page /live/go-live, stream key, OBS instructions | — |
| **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 |
## Livré en v0.202
| Lot | Feature |
| --- | ---------------------------------------------------------------------------------------- |
| G | Recherche avancée (musical_key, tri pertinence, autocomplete, facettes type, historique) |
| H | Analytics créateur (stats, graphiques, taux complétion, export CSV/JSON) |
| F | Seller dashboard (GET /sell/stats, liste produits marketplace) |
| C | Player (crossfade, gapless preload, PiP) |
| D | Autoplay (GET /tracks/recommendations, section « À écouter ensuite » dans PlayerQueue) |
## Livré en v0.203
| Lot | Feature |
| --- | --------------------------------------------------------------------------------------- |
| L | Social Trending : GET /social/trending, cache Redis, SocialViewTrending connecté |
| K | Recherche enrichie : pg_trgm fuzzy, opérateurs AND/OR/NOT/"phrase exacte", tooltip aide |
| D1 | Queue collaborative : sessions partagées, bouton Partager, polling sync, MSW handlers |
Voir [V0_203_RELEASE_SCOPE.md](V0_203_RELEASE_SCOPE.md) pour le détail.
## Livré en v0.301 (Phase 3 Social)
| Lot | Feature |
| --- | --------------------------------------------------------------------------------------------------------------------- |
| P0 | Chat Server : protocole typing aligné, auth WebSocket documenté |
| C1 | Chat avancé : typing indicators, read receipts, delivered status |
| P1 | Présence : migration 088, GET /users/:id/presence, PresenceBadge, last_seen sur requêtes auth |
| S1 | Social enrichi : feed connecté API, enrichi actor/track, pagination cursor, explore tab, filtres all/following/groups |
Voir [V0_301_RELEASE_SCOPE.md](archive/V0_301_RELEASE_SCOPE.md) pour le détail.
## Livré en v0.302 (Phase 3 Social — suite)
| Lot | Feature |
| --- | --------------------------------------------------------------------------------------------------------------- |
| S2 | Groupes avancés : demander à rejoindre (privé), inviter membres, rôles assign/revoke, feed groupes, mes groupes |
| N1 | Notifications push : Web Push subscription, envoi sur follow/like/comment/message, préférences, badge titre |
| P2 | Présence enrichie : rich presence (track en cours), mode invisible, PUT /users/me/presence |
## Livré en v0.303
| Lot | Feature |
| --- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| C2 | Chat appels : WebRTC audio 1-to-1, signalisation via WebSocket (CallOffer, CallAnswer, ICECandidate, CallHangup, CallReject), CallButton, IncomingCallModal, ActiveCallBar |
## Livré en v0.401 (Phase 4 Commerce)
| Lot | Feature |
| --- | ------------------------------------------------------------------------------------------------------------------------- |
| M1 | Produits & Catalogue : BPM, musical_key, category, previews, images, filtres MarketplaceHome, rich text description |
| M2 | Licences & Droits : product_licenses, types/conditions, GET /licenses/mine, LicenceCard/LicenceDetailsModal, LicensesView |
| M3 | Seller dashboard enrichi : evolution chart, top products, real sales, conversion N/A |
Voir [V0_401_RELEASE_SCOPE.md](archive/V0_401_RELEASE_SCOPE.md) pour le détail.
## Livré en v0.402 (Phase 4 Commerce — checkout & codes promo)
| Lot | Feature |
| --- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| P1 | Checkout Hyperswitch production-ready : return URL avec order_id, CheckoutSuccessView/CheckoutErrorView, webhook cancelled, CheckoutPaymentForm dans Cart |
| P2 | Codes promo / réductions : promo_codes, ValidatePromoCode, GET /commerce/promo/:code, CreateOrder/Checkout avec promo_code, PromoCodeModal connecté, OrderSummary dans Cart |
Voir [V0_402_RELEASE_SCOPE.md](V0_402_RELEASE_SCOPE.md) pour le détail.
## Livré en v0.502 (Phase 5 — Chat Server Rewrite)
| Lot | Feature |
| --- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CH | Chat Server Rust → Go : WebSocket intégré dans backend API (`/api/v1/ws`), 39 types messages (19 in + 20 out), Hub/Client goroutines, PermissionService, RateLimiter in-memory, ChatPubSubService Redis, 4 migrations (109-112), 15 tests unitaires, E2E tests |
## Livré en v0.503 (Phase 5 — HLS E2E + Chat Hardening + Cleanup)
| Lot | Feature |
| --- | -------------------------------------------------------------------------- |
| SS1 | HLS Streaming E2E (backend routes + frontend ABR player) |
| CH1 | Chat Redis rate limiter (sliding window + in-memory fallback) |
| CH1 | Chat persistent presence (Redis-backed, 2min TTL) |
| CH1 | PostgreSQL full-text search on messages (tsvector + GIN index) |
| CL1 | Cleanup: veza-chat-server directory and all operational references removed |
Voir [V0_503_RELEASE_SCOPE.md](V0_503_RELEASE_SCOPE.md) pour le détail.
## Livré en v0.601 (Phase 6 — Production Readiness & Commerce)
| Lot | Feature |
| ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| INF1 | Blue-green deployment (HAProxy), Grafana dashboards (API, Chat, Commerce), Alertmanager, Hyperswitch LIVE_MODE |
| AUTH1 | OAuth Discord, OAuth Spotify (opérationnels) |
| CLN1 | Découpage handler.go en 4 sous-handlers (track_crud, track_social, track_search, track_analytics), interceptors.ts en modules (utils, request, response) |
| QA1 | Tests OAuth Discord/Spotify, MIGRATIONS.md, audit console.log |
Voir [V0_601_RELEASE_SCOPE.md](V0_601_RELEASE_SCOPE.md) pour le détail.
## Livré en v0.602 (Phase 6+ Payout, Dette Technique & Tests E2E)
| Lot | Feature |
| ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CLN2 | Split interceptors : auth.ts, error.ts extraits, interceptors.ts facade (< 30 LOC) |
| P3 | Payout vendeurs : Stripe Connect onboarding, balance, seller_stripe_accounts |
| INF2 | Grafana dashboards enrichis : api-overview (p50, top endpoints, 4xx), chat-overview (WS connections, messages/s), commerce-overview (orders, refunds, payout) |
| QA2 | E2E commerce backend : flow product -> order -> review -> invoice, SMOKE_TEST_V0602.md |
Voir [V0_602_RELEASE_SCOPE.md](archive/V0_602_RELEASE_SCOPE.md) pour le détail.
## Livré en v0.603 (Phase 6+ Transfer automatique, Commission & Stabilisation)
| Lot | Feature |
| --- | -------------------------------------------------------------------------------------- |
| T1 | Transfer automatique Stripe Connect après paiement réussi (webhook Hyperswitch) |
| T1 | Commission plateforme configurable (PLATFORM_FEE_RATE), migration 115 seller_transfers |
| T1 | GET /sell/transfers, carte Transfer History dans SellerDashboard |
| DT1 | Archivage docs pre-v0.501 |
| QA3 | Tests unitaires transfer (success, multi-seller, transfer-fails) |
Voir [V0_603_RELEASE_SCOPE.md](archive/V0_603_RELEASE_SCOPE.md) pour le détail.
## Livré en v0.701 (Phase 7 — Retry, Admin Dashboard, Deep Health)
| Lot | Feature |
| --- | -------------------------------------------------------------------------------------------- |
| R1 | Transfer Retry Worker : retry automatique des transferts failed (backoff exponentiel, max 3) |
| R1 | Migration 116 : retry_count, next_retry_at sur seller_transfers |
| A1 | Admin Transfers Dashboard : GET /admin/transfers, POST /admin/transfers/:id/retry |
| A1 | AdminTransfersView : tableau avec filtres, pagination, bouton Retry |
| H1 | Deep Health : GET /health/deep (DB, Redis, S3, disk, config summary) |
| D1 | docs/API_REFERENCE.md : documentation API avec exemples curl |
Voir [V0_701_RELEASE_SCOPE.md](archive/V0_701_RELEASE_SCOPE.md) pour le détail.
## Livré en v0.702 (Phase 7 — Reviews, Factures, Remboursements & Product Detail)
| Lot | Feature |
| --- | ---------------------------------------------------------------- |
| W1 | Route /marketplace/products/:id avec ProductDetailPage (lazy) |
| M1 | MSW handlers : reviews (GET list, POST create), invoice download |
| T1 | Tests unitaires : reviews (6), invoices (4), refunds (6) |
| D1 | API_REFERENCE.md : sections Reviews, Invoices, Refunds |
Voir [V0_702_RELEASE_SCOPE.md](archive/V0_702_RELEASE_SCOPE.md) pour le détail.
## Livré en v0.703 (Phase 7 — Go Live & Streaming Complet)
| Lot | Feature |
| --- | -------------------------------------------------------------------------------------- |
| GL1 | Go Live : page /live/go-live, stream key, OBS/Streamlabs instructions |
| GL1 | Endpoints : GET/POST /live/streams/me/key, GET /live/streams/me, PUT /live/streams/:id |
| GL3 | Live Chat WebSocket : LiveViewChat connecté, stream_id comme room |
| GL3 | Viewer count temps réel : polling dans LiveViewPlayer |
| GL4 | Media Session : seekbackward/seekforward (10s) |
Voir [V0_703_RELEASE_SCOPE.md](V0_703_RELEASE_SCOPE.md) pour le détail.
## Livré en v0.801 (Phase 8 — UX/UI Polish, Accessibilité & PWA)
| Lot | Feature |
| --- | -------------------------------------------------------------------------------------------- |
| UX1 | Thèmes avancés : high contrast, compact/comfortable density, accent color, font size 1420px |
| UX1 | User preferences : migration 118, PUT /users/me/preferences |
| UX2 | Accessibilité : ARIA labels, aria-haspopup menu, focus-visible ring, useReducedMotion |
| UX3 | PWA : service worker re-enabled (safe caching), Install App in Settings |
| UX3 | Background playback : useWakeLock for mobile |
## Livré en v0.802 (Phase 8 — Cloud avancé, Gear, Tags)
| Lot | Feature |
| --- | ------------------------------------------------------------- |
| C2 | Cloud versioning : create version, list versions, restore |
| C2 | Cloud sharing : create share link, get shared file (public) |
| C3 | GDPR export : POST /users/me/export (async ZIP, notification) |
| C3 | Cloud backup : cron 24h, copie S3 vers prefix backup |
| U1 | Batch upload : BatchUploader, queue parallèle (max 3) |
| T1 | Tags suggest : GET /tags/suggest?q=... (autocomplete) |
| T1 | Formats audio : audio/aiff, audio/x-aiff |
| G2 | Gear documents : CRUD (upload PDF, list, delete) |
| G2 | Gear repairs : CRUD (repair history) |
| G2 | Gear warranty : warranty_start, warranty_notes, notifier 24h |
## Livré en v0.803 (Phase 8 — Sécurité, Compliance & Outillage Dev)
| Lot | Feature |
| ---- | ---------------------------------------------------------------------------------------------------------- |
| SEC1 | Security headers : CSP, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy |
| SEC1 | DDoS rate limiting : global 1000 req/s, per-IP 100 req/s (Redis sliding window 1s) |
| SEC2 | Audit : middleware auto-log POST/PUT/DELETE, migration audit_logs, GET /admin/audit/logs |
| SEC2 | CCPA : Sec-GPC header, POST /users/me/privacy/opt-out |
| SEC2 | Account deletion : DELETE /users/me, anonymisation, S3 cleanup, session revocation |
| DEV1 | OpenAPI/Swagger : GET /swagger/\*, annotations handlers |
| DEV1 | API keys : POST/GET/DELETE /developer/api-keys, auth via X-API-Key header |
| ADM1 | Modération : reports CRUD, GET /admin/reports, POST /admin/reports/:id/resolve (dismiss, warn, ban) |
| ADM1 | Maintenance mode : middleware 503, PUT/GET /admin/maintenance |
| ADM1 | Annonces : CRUD admin, GET /announcements/active (public) |
| ADM1 | Feature flags : DB persistence, GET/PUT /admin/feature-flags |
| FE1 | AdminSettingsView (onglet SETTINGS) : maintenance, feature flags, annonces |
| FE1 | AdminModerationView : actions dismiss/warn/ban alignées backend |
| FE1 | AnnouncementBanner global, AccountSettingsDeleteCard (type DELETE to confirm) |
Voir [V0_803_RELEASE_SCOPE.md](V0_803_RELEASE_SCOPE.md) pour le détail.
## Prévu en v0.403 (Phase 4 Commerce — suite)
| Lot | Feature |
| --- | ------------------------------------------------------------------------ |
| P3 | Payout vendeurs : Stripe Connect onboarding, balance, transferts |
| R1 | Reviews produits : product_reviews, notation, commentaires, note moyenne |
| F1 | Factures : génération PDF par commande, téléchargement |
| R2 | Remboursements : initiation refund, webhook, révocation licence |
Voir [V0_403_RELEASE_SCOPE.md](V0_403_RELEASE_SCOPE.md) pour le détail.
---
## Projets abandonnés
| Projet | Statut |
| -------------------------- | ---------------------------------------------------- |
| **veza-mobile** | Abandonné—35+ erreurs critiques, non fonctionnel |
| **packages/design-system** | Sous-utilisé—seul le CSS importé, pas les composants |
---
## Erratum v0.404
Les corrections suivantes ont été apportées lors de l'audit de stabilisation v0.404 :
- **OAuth Discord/Spotify** : indiqués auparavant comme opérationnels ; en réalité non implémentés.
- **HLS Streaming** : indiqué auparavant comme opérationnel ; en réalité en intégration (v0.404).
- **Chat** : indiqué auparavant comme complet ; statut corrigé en partiel (requiert chat server démarré).
## Erratum v0.502
- **Chat WebSocket** : corrigé de "Partiel" à "Opérationnel" — réécrit en Go, intégré dans le backend API (v0.502). Ne dépend plus d'un chat server séparé.
- **Chat Server Rust** : marqué comme obsolète. Remplacé par l'implémentation Go. Dossier à archiver en v0.503.