veza/docs/FEATURE_STATUS.md
senke d820c22d7d chore(release): v1.0.4 — cleanup sprint complete, CI green
7-day cleanup sprint (J1–J7) done. The codebase is unchanged
functionally but the working tree, docs, k8s runbooks, CI, and
Go dependency graph are all realigned with reality for the first
time since the v1.0.0 release.

VERSION          1.0.2 → 1.0.4 (skips v1.0.3 — that tag already
                 exists upstream, unused on this branch)
CHANGELOG.md     full v1.0.4 entry with per-day (J1–J7) breakdown
                 and the govulncheck + CI fix trail
docs/PROJECT_STATE.md   header month + version table refreshed,
                        pointer to AUDIT_REPORT.md added
docs/FEATURE_STATUS.md  header updated — no feature matrix
                        changes (no feature work in this sprint)

Key deliverables of the sprint:
  J1  0e7097ed1  purge 220 MB of debris (binaries, reports,
                 session docs, stale MVP scripts)
  J2  2aea1af36  rewrite CLAUDE.md, fix README, purge chat-server
                 refs from k8s runbooks and env examples
  J3  67f18892a  remove 3 deprecated unused handlers
  J3+ 7fa314866  2FA handler duplicate removal (bundled by parallel
                 ci-cache commit)
  J4  9cdfc6d89  GDPR-compliant hard delete with Redis SCAN cursor
                 and ES DeleteByQuery — closes TODO(HIGH-007)
  J5  0589ec9fc  defer GeoIP, rename v2-v3-types.ts to domain.ts,
                 document Storybook kill
  J5+ 7f89bebe1  fix lint-staged eslint rule (was linting the
                 whole project — root cause of earlier --no-verify)
  J6  113210734  mark 3 dormant docker-compose files deprecated
  fix 3d1f127ad  bump x/image, quic-go, testcontainers-go — drops
                 containerd + docker/docker from dep graph,
                 resolving 5 govulncheck findings without allowlist
  fix b33227a57  bump go.work to 1.25 to match veza-backend-api
  fix 73fc6e128  bump x/net v0.51.0 for GO-2026-4559
  fix 376d9adc4  retire legacy backend-ci.yml, centralize Docker
                 probe in SkipIfNoIntegration

CI status on the consolidated ci.yml workflow for 376d9adc4:
  Veza CI / Backend (Go)        OK 6m36s
  Veza CI / Frontend (Web)      OK 20m57s
  Veza CI / Rust (Stream)       OK 6m25s
  Security Scan / gitleaks      OK 4m13s
  Veza CI / Notify              skipped (fires only on failure)

First fully green CI run of the sprint and the first in a long
time overall. The tag v1.0.4 is cut on this state.

Refs: AUDIT_REPORT.md, all commits 0e7097ed1..376d9adc4
2026-04-15 16:39:30 +02:00

293 lines
26 KiB
Markdown
Raw 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** : avril 2026 — v1.0.4 (release cleanup post-audit, CI verte, dette RGPD fermée)
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 |
| 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: true` (v0.101) | Opérationnel (v0.503) — Backend serving routes (master.m3u8, quality playlists, segments), frontend ABR player, HLS_STREAMING feature flag. |
| 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** | Beta — fonctionne mieux sur le même réseau local (TURN/STUN v1.1) | v1.1 (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.