From 6fad0ad68d2a395882b9452cfe2512a8df358c73 Mon Sep 17 00:00:00 2001 From: senke Date: Tue, 24 Mar 2026 21:18:49 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20stabilize=20frontend=20=E2=80=94=2098=20?= =?UTF-8?q?TS=20errors=20to=200,=20align=20API=20endpoints,=20optimize=20b?= =?UTF-8?q?undle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix 98 TypeScript errors across 37 files: - Service layer double-unwrapping (subscriptionService, distributionService, gearService) - Self-referencing variables in SearchPageResults - FeedView/ExploreView .posts→.items alignment - useQueueSync Zustand subscribe API - AdminAuditLogsView missing interface fields - Toast proxy type, interceptor type narrowing - 22 unused imports/variables removed - 5 storybook mock data fixes - Align frontend API calls with backend endpoints: - Analytics: useAnalyticsView now calls /creator/analytics/dashboard (was /analytics) - Chat: chatService uses /conversations (was mock data), WS URL from backend token - Dashboard StatsSection: uses real /dashboard API data (was hardcoded zeros) - Settings: suppress 2FA toast error when endpoint unavailable - Fix marketplace products: seed uses 'active' status (was 'published') - Enrich seed: admin follows all creators (feed has content) - Optimize bundle: vendor catch-all 793KB→318KB gzip (-60%) Split into vendor-charts, vendor-emoji, vendor-swagger, vendor-media, etc. - Clean repo: remove ~100 orphaned screenshots, audit reports, logs from root Co-Authored-By: Claude Opus 4.6 (1M context) --- 103_RAPPORT_ETAT_FEATURES_2026_02_16.md | 370 -- 103_audit_global_features_states.md | 737 ---- ASVS_CHECKLIST_v0.12.6.md | 233 -- AUDIT_TECHNIQUE_2026-02-22.md | 702 ---- AUDIT_TECHNIQUE_VEZA_2026-03-04.md | 913 ----- CURSOR_PROMPT_VERSIONING.md | 147 - DEMARRAGE_SIMPLE.md | 159 - ORIGIN_GAP_ANALYSIS_2026-03-04.md | 989 ----- PENTEST_REPORT_VEZA_v0.12.6.md | 941 ----- REMEDIATION_MATRIX_v0.12.6.md | 80 - .../components/admin/AdminAuditLogsView.tsx | 6 +- .../components/admin/AdminTransfersView.tsx | 2 +- .../useAdminDashboardView.ts | 8 +- .../components/commerce/CartItem.stories.tsx | 4 +- .../feedback/AnnouncementBanner.tsx | 2 +- .../marketplace/ProductDetailView.stories.tsx | 4 +- .../ProductDetailViewGallery.tsx | 2 +- .../components/seller/SellerDashboardView.tsx | 18 +- .../web/src/components/social/ExploreView.tsx | 22 +- apps/web/src/components/social/FeedView.tsx | 6 +- apps/web/src/components/ui/LazyComponent.tsx | 1 + apps/web/src/components/ui/dialog/types.ts | 2 + .../src/components/upload/BatchUploader.tsx | 2 +- .../pages/analytics-page/AnalyticsView.tsx | 6 +- .../analytics-page/AnalyticsViewHeatmap.tsx | 2 +- .../pages/analytics-page/useAnalyticsView.ts | 37 +- .../features/chat/components/CallButton.tsx | 4 +- .../src/features/chat/components/ChatRoom.tsx | 2 +- .../chat/components/IncomingCallModal.tsx | 2 +- .../chat/components/InviteRoomModal.tsx | 2 +- .../chat/components/MentionAutocomplete.tsx | 2 +- .../chat/components/RoomMembersModal.tsx | 2 +- apps/web/src/features/chat/pages/ChatPage.tsx | 17 +- .../cloud/components/CloudBrowserView.tsx | 2 +- .../cloud/components/CloudUploadModal.tsx | 3 +- .../dashboard/components/StatsSection.tsx | 18 +- .../dashboard/pages/DashboardPage.tsx | 6 - .../distribution/pages/DistributionPage.tsx | 6 +- .../components/GearImageGallery.stories.tsx | 2 +- .../inventory/components/GearImageGallery.tsx | 2 +- .../components/gear/GearCard.stories.tsx | 2 +- .../components/gear/GearDetailModal.tsx | 2 +- .../features/landing/pages/LandingPage.tsx | 19 +- .../pages/go-live-page/GoLiveView.stories.tsx | 4 +- .../live/pages/live-page/LiveView.tsx | 11 +- .../live/pages/live-page/useLiveStreamChat.ts | 2 +- .../notifications-page/NotificationsPage.tsx | 2 +- .../notifications/hooks/usePushSubscribe.ts | 2 +- .../player/components/WaveformDisplay.tsx | 2 +- .../src/features/player/hooks/useQueueSync.ts | 33 +- .../player/pages/ListenTogetherPage.tsx | 4 +- .../components/PlaylistTrackItem.tsx | 1 + .../playlists/pages/FavorisRedirectPage.tsx | 2 +- .../playlists/pages/SharedPlaylistPage.tsx | 2 +- .../presence/components/PresenceBadge.tsx | 1 - .../search-page/SearchPageResults.tsx | 6 +- .../settings/components/TwoFactorSettings.tsx | 2 + .../features/settings/pages/SettingsPage.tsx | 12 + .../settings/services/settingsService.test.ts | 2 +- .../settings/services/settingsService.ts | 7 +- .../subscription/pages/SubscriptionPage.tsx | 6 +- .../tracks/services/commentService.ts | 4 +- apps/web/src/index.css | 5 +- apps/web/src/mocks/handlers-cloud.ts | 5 +- apps/web/src/mocks/handlers-misc.ts | 8 +- apps/web/src/mocks/handlers-playlists.ts | 2 +- apps/web/src/router/AppRouter.tsx | 2 +- apps/web/src/router/routeConfig.tsx | 18 +- apps/web/src/services/2fa-service.ts | 4 +- .../src/services/api/interceptors/error.ts | 10 +- .../src/services/api/interceptors/response.ts | 5 +- apps/web/src/services/chatService.test.ts | 63 +- apps/web/src/services/chatService.ts | 212 +- apps/web/src/services/distributionService.ts | 36 +- apps/web/src/services/educationService.ts | 2 +- apps/web/src/services/gearService.ts | 12 +- apps/web/src/services/subscriptionService.ts | 32 +- apps/web/src/utils/toast.ts | 4 +- apps/web/src/vite-env.d.ts | 9 + apps/web/vite.config.ts | 16 +- flag.txt | 1 - last_errors.txt | 500 --- name Plan UI premium 6.txt | 306 -- package-lock.json | 3169 ++++++++++++++- package.json | 2 + tests/e2e/01-auth.spec.ts | 2 +- tests/e2e/02-navigation.spec.ts | 2 +- tests/e2e/03-player.spec.ts | 2 +- tests/e2e/04-tracks.spec.ts | 2 +- tests/e2e/05-playlists.spec.ts | 2 +- tests/e2e/06-search-discover.spec.ts | 2 +- tests/e2e/07-social.spec.ts | 2 +- tests/e2e/08-marketplace.spec.ts | 2 +- .../09-chat-notifications-settings.spec.ts | 2 +- tests/e2e/10-features.spec.ts | 2 +- tests/e2e/11-accessibility-ethics.spec.ts | 2 +- tests/e2e/12-api.spec.ts | 2 +- tests/e2e/13-workflows.spec.ts | 2 +- tests/e2e/14-edge-cases.spec.ts | 2 +- tests/e2e/15-routes-coverage.spec.ts | 2 +- tests/e2e/16-forms-validation.spec.ts | 2 +- tests/e2e/17-modals-dialogs.spec.ts | 2 +- tests/e2e/18-empty-states.spec.ts | 2 +- tests/e2e/19-responsive.spec.ts | 2 +- tests/e2e/20-network-errors.spec.ts | 2 +- tests/e2e/21-error-boundary.spec.ts | 2 +- tests/e2e/22-performance.spec.ts | 2 +- tests/e2e/23-visual-regression.spec.ts | 2 +- tests/e2e/24-cross-browser.spec.ts | 2 +- tests/e2e/25-profile.spec.ts | 2 +- tests/e2e/26-smoke.spec.ts | 2 +- tests/e2e/27-upload.spec.ts | 2 +- tests/e2e/28-storybook.spec.ts | 2 +- tests/e2e/29-chat-functional.spec.ts | 2 +- tests/e2e/30-marketplace-checkout.spec.ts | 2 +- tests/e2e/31-auth-sessions.spec.ts | 2 +- tests/e2e/32-deep-pages.spec.ts | 2 +- tests/e2e/33-visual-bugs.spec.ts | 2 +- tests/e2e/34-workflows-empty.spec.ts | 2 +- .../audit/accessibility/01-axe-wcag.spec.ts | 2 +- tests/e2e/audit/ethical/01-principles.spec.ts | 2 +- tests/e2e/audit/functional/01-auth.spec.ts | 2 +- .../e2e/audit/functional/02-listener.spec.ts | 2 +- tests/e2e/audit/functional/03-creator.spec.ts | 2 +- tests/e2e/audit/functional/04-admin.spec.ts | 2 +- .../audit/functional/05-marketplace.spec.ts | 2 +- .../functional/06-data-integrity.spec.ts | 2 +- .../interaction/01-dropdowns-menus.spec.ts | 2 +- .../interaction/02-modals-dialogs.spec.ts | 2 +- .../interaction/03-forms-validation.spec.ts | 2 +- .../04-toasts-notifications.spec.ts | 2 +- .../audit/interaction/05-drag-drop.spec.ts | 2 +- .../06-keyboard-navigation.spec.ts | 2 +- .../interaction/07-toasts-advanced.spec.ts | 2 +- .../pixel-perfect/01-element-overlap.spec.ts | 2 +- .../pixel-perfect/02-hover-states.spec.ts | 2 +- .../pixel-perfect/03-focus-states.spec.ts | 2 +- .../04-spacing-alignment.spec.ts | 2 +- .../audit/pixel-perfect/05-typography.spec.ts | 2 +- .../pixel-perfect/06-colors-contrast.spec.ts | 2 +- .../07-borders-radius-shadows.spec.ts | 2 +- .../08-transitions-animations.spec.ts | 2 +- .../pixel-perfect/09-icons-images.spec.ts | 2 +- .../10-responsive-layout.spec.ts | 2 +- .../pixel-perfect/11-text-overflow.spec.ts | 2 +- .../pixel-perfect/12-tap-targets.spec.ts | 2 +- .../13-interactive-spacing.spec.ts | 2 +- .../pixel-perfect/14-disabled-states.spec.ts | 2 +- .../e2e/audit/pixel-perfect/15-images.spec.ts | 2 +- .../pixel-perfect/16-loading-states.spec.ts | 2 +- .../17-scroll-containers.spec.ts | 2 +- .../audit/pixel-perfect/18-dark-mode.spec.ts | 2 +- .../pixel-perfect/19-text-readability.spec.ts | 2 +- .../pixel-perfect/20-borders-shadows.spec.ts | 2 +- .../audit/screenshots/01-all-pages.spec.ts | 2 +- tests/e2e/helpers.ts | 6 +- tests/e2e/playwright.config.ts | 25 +- veza-backend-api/cmd/tools/seed/main.go | 6 +- veza-sumi-design-system.html | 2680 ------------- veza_full_feature_list.md | 842 ---- vitest-output.txt | 1181 ------ vitest_output.txt | 3533 ----------------- 162 files changed, 3616 insertions(+), 14813 deletions(-) delete mode 100644 103_RAPPORT_ETAT_FEATURES_2026_02_16.md delete mode 100644 103_audit_global_features_states.md delete mode 100644 ASVS_CHECKLIST_v0.12.6.md delete mode 100644 AUDIT_TECHNIQUE_2026-02-22.md delete mode 100644 AUDIT_TECHNIQUE_VEZA_2026-03-04.md delete mode 100644 CURSOR_PROMPT_VERSIONING.md delete mode 100644 DEMARRAGE_SIMPLE.md delete mode 100644 ORIGIN_GAP_ANALYSIS_2026-03-04.md delete mode 100644 PENTEST_REPORT_VEZA_v0.12.6.md delete mode 100644 REMEDIATION_MATRIX_v0.12.6.md delete mode 100644 flag.txt delete mode 100644 last_errors.txt delete mode 100644 name Plan UI premium 6.txt delete mode 100644 veza-sumi-design-system.html delete mode 100644 veza_full_feature_list.md delete mode 100644 vitest-output.txt delete mode 100644 vitest_output.txt diff --git a/103_RAPPORT_ETAT_FEATURES_2026_02_16.md b/103_RAPPORT_ETAT_FEATURES_2026_02_16.md deleted file mode 100644 index 38030c5a8..000000000 --- a/103_RAPPORT_ETAT_FEATURES_2026_02_16.md +++ /dev/null @@ -1,370 +0,0 @@ -# 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* diff --git a/103_audit_global_features_states.md b/103_audit_global_features_states.md deleted file mode 100644 index 52cebd0e2..000000000 --- a/103_audit_global_features_states.md +++ /dev/null @@ -1,737 +0,0 @@ -I now have all the data needed. Let me write the comprehensive audit report. - ---- - -# 🔍 AUDIT COMPLET DU MONOREPO VEZA - -**Date** : 16 février 2026 -**Auditeur** : Architecte IA senior -**Scope** : Monorepo complet (`veza-backend-api`, `veza-chat-server`, `veza-stream-server`, `veza-common`, `apps/web`) - ---- - -## PARTIE 1 — ÉTAT DE STABILITÉ - ---- - -### 1.1 Santé du code - -#### Go Backend (`veza-backend-api/`) ✅ - -| Critère | Statut | Détail | -|---------|--------|--------| -| Compilation (`go build ./...`) | ✅ Passe | 0 erreur, 0 warning | -| Vet (`go vet ./...`) | ✅ Passe | 0 issue | -| Imports cassés | ✅ Aucun | — | -| `.env.template` | ✅ Documenté | Complet avec validation rules | -| Secrets hardcodés | ✅ Aucun | Tous via env vars, masqués dans logs | - -**TODOs/FIXMEs critiques (P1) — 7 items :** - -| Fichier | Ligne | Description | -|---------|-------|-------------| -| `internal/core/track/handler.go` | ~340 | `TODO(P2-GO-004)`: `trackUploadService` attend `int64`, reçoit `uuid.UUID` — migration UUID incomplète | -| `internal/core/track/handler.go` | ~355 | `TODO(P2-GO-004)`: même problème, `GetUploadProgress()` incompatible UUID | -| `internal/repositories/playlist_collaborator_repository.go` | ~67 | `FIXME`: modèle `PlaylistCollaborator` doit utiliser UUID | -| `internal/services/playlist_version_service.go` | ~73 | `FIXME`: `PlaylistVersion` ID types à vérifier | -| `internal/services/track_history_service.go` | ~74 | `FIXME`: `TrackHistory` needs UUID migration | -| `internal/services/playlist_service.go` | ~216 | `FIXME`: `PlaylistVersionService` needs UUID update | -| `internal/handlers/auth_handler_test.go` | 225 | `FIXME`: test attend `StatusForbidden` mais l'implémentation permet login non-vérifié | - -**TODOs P2 (18 items)** — les plus notables : - -| Fichier | Description | -|---------|-------------| -| `internal/services/job_service.go` | Job queue non connectée (5 TODOs BE-SVC-003) — pas d'async processing | -| `internal/database/database.go` | OAuth user lookup non implémenté (3 TODOs) | -| `internal/handlers/oauth_handlers.go` | `frontendURL` fallback hardcodé `http://localhost:5173` | -| `internal/config/middlewares_init.go:75` | Configuration CORS à améliorer | -| `internal/api/admin/service.go` | Admin service partiellement implémenté (3 TODOs) | - -#### Rust Chat Server (`veza-chat-server/`) ✅ - -| Critère | Statut | Détail | -|---------|--------|--------| -| Compilation (`cargo check`) | ✅ Passe | 0 erreur, 0 warning | -| Protobuf | ✅ | Utilise fichiers pré-générés | -| `.env.lab.example` | ⚠️ Minimal | Seul un template lab, pas de `.env.example` standard | - -**TODOs (3 items) :** -- `src/read_receipts.rs:230` — TODO: tracking "delivered" non implémenté -- `src/presence.rs:226` — TODO: intégration push notifications (FCM, APNs) -- `src/message_handler.rs:327` — TODO: recherche de salon par nom - -#### Rust Stream Server (`veza-stream-server/`) ✅ - -| Critère | Statut | Détail | -|---------|--------|--------| -| Compilation (`cargo check`) | ✅ Passe | 0 erreur, 0 warning | -| Protobuf | ✅ | Utilise fichiers pré-générés | -| `.env.example` | ✅ Documenté | Variables bien documentées | -| `#![allow(dead_code)]` | ⚠️ | Code mort autorisé dans `lib.rs` | - -**Point critique** : le client gRPC vers le backend Go (`src/grpc/mod.rs`) est un **stub** — `attempt_send()` fait juste un `sleep`, il n'envoie rien réellement. - -#### Rust Common (`veza-common/`) ✅ - -| Critère | Statut | -|---------|--------| -| Compilation | ✅ Passe | -| TODOs | ✅ Aucun | - -#### Frontend React (`apps/web/`) ✅ - -| Critère | Statut | Détail | -|---------|--------|--------| -| TypeScript (`tsc --noEmit`) | ✅ Passe | 0 erreur | -| Build Vite | ✅ Passe | — | -| `.env.example` | ✅ Documenté | Complet avec feature flags | - -**TODOs notables :** -- `src/services/analyticsService.ts:92-97` — endpoints analytics non implémentés côté backend, retournent des valeurs vides -- `src/config/features.ts:50` — HLS endpoints marqués "NOT IMPLEMENTED" -- `src/features/user/components/profile/ProfileSecurity.tsx:12` — "Placeholder for profile security" - ---- - -### 1.2 Points bloquants fonctionnels - -| Module | Statut | Détail | -|--------|--------|--------| -| **Auth** | ✅ Fonctionnel | Register → verify email → login → refresh → logout → 2FA TOTP : flow complet. OAuth Google/GitHub opérationnel. Sessions management complet (list/revoke/logout-all). | -| **Profils** | ✅ Fonctionnel | Création, édition, avatar upload, profil public (`/u/:username`), social links, paramètres. Toutes les routes connectées frontend ↔ backend. | -| **Upload & Fichiers** | ⚠️ Partiel | Upload simple ✅, upload chunked ✅, validation MIME/taille ✅, métadonnées extraites ✅. **Manque** : transcoding async (job queue stub), HLS transcoding désactivé (feature flag `false`). | -| **Streaming/Lecteur** | ⚠️ Partiel | Play/pause/seek/next/volume/shuffle/repeat ✅ via `