# Rapport d'état précis des features — Veza **Date** : 16 février 2026 **Méthode** : Analyse du code source (backend routes, frontend services, migrations DB, tests) --- ## 1. CARTOGRAPHIE GLOBALE — ÉTAT PRÉCIS ### 1.1 Stack | Couche | Technologie | Version | Fichiers clés | |--------|-------------|---------|---------------| | Frontend | React + Vite | 18.2 / 7.1.5 | `apps/web/package.json` | | Backend | Go + Gin | 1.24 / 1.11 | `veza-backend-api/go.mod` | | Chat | Rust + Axum | 0.8 | `veza-chat-server/Cargo.toml` | | Stream | Rust + Axum | 0.8 | `veza-stream-server/Cargo.toml` | | DB | PostgreSQL | 16 | `docker-compose.prod.yml` | | Cache | Redis | 7 | idem | | Queue | RabbitMQ | 3 | idem | ### 1.2 Organisation du repo - **apps/web** : Frontend React (features/, services/, mocks/) - **veza-backend-api** : API REST (router principal : `internal/api/router.go`) - **veza-chat-server** : WebSocket chat - **veza-stream-server** : Streaming audio - **veza-common** : Lib Rust partagée - **packages/** : NPM packages partagés ### 1.3 Point d'entrée API Le routeur **actif** est `APIRouter` dans `internal/api/router.go`. Le fichier `api_manager.go` est **exclu de la compilation** (`//go:build ignore`) — tout ce qu'il contient (achievements, leaderboard, GraphQL, gRPC, etc.) est du **code mort**. --- ## 2. ÉTAT PRÉCIS DE CHAQUE FEATURE ### 2.1 Auth (register, login, JWT, refresh) | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ Complet | `routes_auth.go` : register, login, refresh, logout, /me, 2FA, OAuth, password reset | | Frontend | ✅ Complet | `authStore`, `LoginForm`, `TwoFactorVerify`, `ProtectedRoute` | | DB | ✅ | Tables users, sessions, refresh_tokens, email_verification_tokens | | Tests | ✅ | `auth_handler_test.go`, `auth_integration_test.go`, `LoginForm.stories` | | Sécurité | ✅ | JWT iss/aud/exp, token version, bcrypt cost 12, rate limit login | **Verdict** : **Opérationnel** --- ### 2.2 2FA (TOTP) | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ | `TwoFactorHandler` : setup, verify, disable, status | | Frontend | ✅ | `TwoFactorSetup.tsx`, `TwoFactorVerify.tsx` | | DB | ✅ | Colonnes two_factor_enabled, two_factor_secret, backup_codes | | Tests | ✅ | `two_factor_handler_test.go` | **Verdict** : **Opérationnel** --- ### 2.3 OAuth (Google, GitHub, Discord) | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ | `OAuthHandler` : providers, initiate, callback | | Frontend | ✅ | Boutons OAuth, callback handling | | DB | ✅ | oauth_accounts, users | **Verdict** : **Opérationnel** --- ### 2.4 Profils utilisateur | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ | `routes_users.go` : GET/PUT/DELETE /users/:id, settings, avatar, follow, block | | Frontend | ✅ | `ProfileView`, `ProfilePage`, `useUser` | | DB | ✅ | users, user_profiles, user_settings | **Verdict** : **Opérationnel** --- ### 2.5 Upload de tracks (chunked) | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ | `routes_tracks.go` : initiate, chunk, complete, resume, quota | | Frontend | ✅ | `trackService`, upload flow | | DB | ✅ | tracks, track_uploads | | Sécurité | ✅ | RequireContentCreatorRole, ClamAV optionnel | **Verdict** : **Opérationnel** --- ### 2.6 CRUD Tracks | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ | GET/PUT/DELETE tracks, comments, likes, share, versions, play | | Frontend | ✅ | `trackService`, `LibraryPage`, `TrackDetailPage` | | DB | ✅ | tracks, track_comments, track_likes | **Verdict** : **Opérationnel** --- ### 2.7 Playlists (CRUD, collaboration) | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ | `routes_playlists.go` : CRUD, collaborators, tracks | | Frontend | ✅ | `playlistService`, `PlaylistDetailPage` | | DB | ✅ | playlists, playlist_collaborators, playlist_tracks | **Verdict** : **Opérationnel** --- ### 2.8 Chat WebSocket | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ | `routes_chat.go` : POST /chat/token, GET /chat/stats | | Chat Server | ✅ | Rust, compile OK | | Frontend | ✅ | `ChatView`, WebSocket client | | DB | ✅ | chat_messages (Chat Server) | **Verdict** : **Opérationnel** (Chat Server doit être démarré) --- ### 2.9 Dashboard | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ | `routes_core.go:319` : GET /dashboard, `DashboardHandler` | | Frontend | ✅ | `dashboardService.getDashboardData()` → apiClient.get('/dashboard') | | MSW | ✅ | Mock dans `handlers-admin.ts` (fallback Storybook) | **Note** : FEATURE_STATUS.md indiquait "MSW" — **faux**. Le backend expose bien `/api/v1/dashboard`. **Verdict** : **Opérationnel** --- ### 2.10 Recherche | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ | `TrackSearchService`, endpoints search | | Frontend | ✅ | `SearchPage`, `searchService` | **Verdict** : **Opérationnel** --- ### 2.11 Social (feed, posts, groups, follows, blocks) | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ | `routes_social.go` : feed, posts, groups, like, comments, join/leave | | Frontend | ✅ | `SocialView`, `useSocialView` | | DB | ✅ | posts, social_groups, user_follows, user_blocks | **Verdict** : **Opérationnel** --- ### 2.12 Administration | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ | `routes_core.go` : admin group, RequireAdmin | | Frontend | ✅ | `AdminDashboardPage`, `adminService` | | Audit | ✅ | audit/logs, audit/stats | **Verdict** : **Opérationnel** --- ### 2.13 Marketplace | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ | `routes_marketplace.go` : products, cart, orders, licenses | | Frontend | ✅ | `MarketplacePage`, `Cart`, `PurchasesView` | | Paiement | ✅ | Hyperswitch intégré | | DB | ✅ | marketplace_products, orders, licenses | **Verdict** : **Opérationnel** --- ### 2.14 Webhooks | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ | `routes_webhooks.go` : CRUD, regenerate-key, test, stats | | Frontend | ✅ | `webhookService.ts` (apiClient), `WebhooksView` | | DB | ✅ | webhooks | **Note** : `webhookApi.ts` supprimé — remplacé par `webhookService.ts` qui appelle l'API directement. **Verdict** : **Opérationnel** --- ### 2.15 Inventory / Gear | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ | `routes_gear.go` : GET/POST/PUT/DELETE /inventory/gear | | Frontend | ✅ | `gearService.ts`, `GearView`, `GearPage` | | DB | ✅ | Migration 076 : `gear_items` | | MSW | ✅ | Mock dans `handlers-misc.ts` (Storybook) | **Note** : FEATURE_STATUS.md indiquait "UI + mocks, pas de backend" — **faux**. Backend complet. **Verdict** : **Opérationnel** --- ### 2.16 Live Streaming | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ | `routes_live.go` : GET /live/streams, GET /live/streams/:id, POST (auth) | | Frontend | ✅ | `liveService.ts`, `LiveView`, `LivePage` | | DB | ✅ | Migration 077 : `live_streams` | | MSW | ✅ | Mock dans `handlers-misc.ts` | **Note** : Le streaming vidéo réel (WebRTC/HLS) est géré par le Stream Server. Les routes backend gèrent les **métadonnées** des streams (titre, description, is_live). **Verdict** : **Opérationnel** (métadonnées). Stream vidéo dépend du Stream Server. --- ### 2.17 Analytics | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ | `routes_analytics.go` : tracks plays, top, dashboard | | Frontend | ✅ | `AnalyticsView`, `useAnalyticsView` | | DB | ✅ | track_plays, analytics events | **Verdict** : **Opérationnel** --- ### 2.18 Roles | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ | `setupRoleRoutes` : assign, revoke | | Frontend | ✅ | `AssignRoleModal`, `RolesPage` | | DB | ✅ | roles, user_roles | **Verdict** : **Opérationnel** --- ### 2.19 Notifications | Aspect | État | Preuve | |--------|------|--------| | Backend | ✅ | `routes_core.go` : GET/POST/DELETE /api/v1/notifications, unread-count, read, read-all. Création auto pour follow, like, comment (Phase 2.2) | | Frontend | ✅ | `NotificationsPage`, `notificationService` | | DB | ✅ | Table `notifications` (migration 047) | **Verdict** : **Opérationnel** --- ### 2.20 Gamification (achievements, leaderboard) | Aspect | État | Preuve | |--------|------|--------| | Backend | ❌ Code mort | `api_manager.go` (build ignore) : handleGetAchievements, handleGetLeaderboard | | Frontend | ⚠️ Composants | Storybook : AchievementCard, LeaderboardView, XPBar — pas de route /gamification | | MSW | ? | Handlers gamification possibles dans mocks | **Verdict** : **Fantôme** — api_manager désactivé, pas de route active --- ### 2.21 Studio (Cloud File Browser) | Aspect | État | Preuve | |--------|------|--------| | Backend | ❌ | Aucune route | | Frontend | ❌ | Dossier `features/studio/` **n'existe pas** (supprimé) | **Verdict** : **Supprimé** --- ### 2.22 Education | Aspect | État | Preuve | |--------|------|--------| | Backend | ❌ | Aucune route | | Frontend | ❌ | Dossier `features/education/` **n'existe pas** (supprimé) | **Verdict** : **Supprimé** --- ## 3. RÉCAPITULATIF ### Features opérationnelles (19) Auth, 2FA, OAuth, Profils, Upload tracks, CRUD tracks, Playlists, Chat, Dashboard, Recherche, Social, Admin, Marketplace, Webhooks, Gear, Live (métadonnées), Analytics, Roles, Notifications. ### Features partielles (0) Aucune. ### Features fantômes (1) Gamification — code dans api_manager (mort), composants Storybook. ### Features supprimées (2) Studio, Education — dossiers supprimés. --- ## 4. INCOHÉRENCES DOCUMENTATION / CODE | Document | Affirmation | Réalité | |----------|-------------|---------| | FEATURE_STATUS.md | Dashboard : MSW | Backend réel GET /dashboard | | FEATURE_STATUS.md | Inventory : pas de backend | Backend complet /inventory/gear | | FEATURE_STATUS.md | Live : contenu minimal | Backend complet /live/streams | | FEATURE_STATUS.md | Studio : UI seule | Dossier supprimé | | FEATURE_STATUS.md | Education : MSW | Dossier supprimé | **Recommandation** : Mettre à jour `docs/FEATURE_STATUS.md` et `apps/web/docs/FEATURE_STATUS.md`. --- ## 5. FICHIERS CRITIQUES PAR FEATURE | Feature | Backend | Frontend service | Route | |---------|---------|------------------|-------| | Auth | routes_auth.go | authStore | /auth/* | | Tracks | routes_tracks.go | trackService | /tracks/* | | Playlists | routes_playlists.go | playlistService | /playlists/* | | Chat | routes_chat.go | - | /chat/* | | Dashboard | routes_core.go | dashboardService | /dashboard | | Social | routes_social.go | - | /social/* | | Marketplace | routes_marketplace.go | - | /marketplace/* | | Webhooks | routes_webhooks.go | webhookService | /webhooks/* | | Gear | routes_gear.go | gearService | /inventory/gear | | Live | routes_live.go | liveService | /live/streams | | Analytics | routes_analytics.go | - | /analytics/* | | Roles | routes_users.go | - | /users/:id/roles | --- *Rapport généré le 16 février 2026*