- CI: workflows updates (cd, ci), remove playwright.yml - E2E: global-setup, auth/playlists/profile specs - Remove playwright-report and test-results artifacts from tracking - Backend: auth, handlers, services, workers, migrations - Frontend: components, features, vite config - Add e2e-results.json to gitignore - Docs: REMEDIATION_PROGRESS, audit archive - Rust: chat-server, stream-server updates
11 KiB
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