176 lines
7.2 KiB
Markdown
176 lines
7.2 KiB
Markdown
|
|
# Rapport de Triage — Diagnostic Complet Veza
|
||
|
|
|
||
|
|
**Date** : 2026-04-04
|
||
|
|
**Objectif** : Etat reel de la codebase avant stabilisation MVP
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Synthese
|
||
|
|
|
||
|
|
| Stack | Check | Status | Details | Bloquant MVP ? |
|
||
|
|
|-------|-------|--------|---------|----------------|
|
||
|
|
| Frontend | Build (Vite) | PASS | 23s, 1 chunk >1MB warning | - |
|
||
|
|
| Frontend | TypeCheck (tsc) | FAIL | 617 erreurs TS | OUI |
|
||
|
|
| Frontend | ESLint | FAIL | 349 erreurs, 1115 warnings | OUI |
|
||
|
|
| Frontend | Vitest | FAIL | 31/281 fichiers echouent (196/3397 tests) | OUI (core) |
|
||
|
|
| Backend | Build (go build) | PASS | 0 erreurs | - |
|
||
|
|
| Backend | Vet (go vet) | FAIL | 1 erreur (response_test.go:186) | NON |
|
||
|
|
| Backend | Tests (go test) | FAIL | 3 packages FAIL / 10 PASS / 3 sans tests | OUI (core) |
|
||
|
|
| Rust | Check (cargo) | PASS | Compilation OK | - |
|
||
|
|
| Rust | Clippy | N/A | clippy non installe | NON |
|
||
|
|
| Rust | Tests (cargo test) | PASS | 150/150 tests, 0 fail, 2 ignores | - |
|
||
|
|
| Storybook | Build | A TESTER | non execute dans ce diagnostic | NON |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Frontend — Detail
|
||
|
|
|
||
|
|
### TypeCheck (617 erreurs)
|
||
|
|
|
||
|
|
**Pattern dominant** : `Object is possibly 'undefined'` (TS18048, TS2532)
|
||
|
|
|
||
|
|
**Fichiers concernes** :
|
||
|
|
- `src/hooks/useSeason.ts` — ~10 erreurs nullability sur `config`/`previousSeason`
|
||
|
|
- `src/hooks/useTimeOfDay.ts` — ~15 erreurs nullability sur `config`/`next`
|
||
|
|
- **~250 fichiers `.stories.tsx`** — la grande majorite des 617 erreurs
|
||
|
|
|
||
|
|
**Analyse** : Les erreurs TS sont concentrees dans les stories (non-bloquantes pour le build Vite) et 2 hooks SUMI. Le build production passe car Vite ne fait pas de type-checking.
|
||
|
|
|
||
|
|
**Action** : Fixer les 2 hooks (useSeason.ts, useTimeOfDay.ts). Les erreurs stories seront traitees en lot.
|
||
|
|
|
||
|
|
### ESLint (349 erreurs, 1115 warnings)
|
||
|
|
|
||
|
|
**Pattern dominant** : `'JSX' is not defined (no-undef)` — probablement config TS/JSX dans eslint.
|
||
|
|
|
||
|
|
**Action** : Diagnostiquer la cause root (probablement un probleme de config ESLint flat config vs ancien format).
|
||
|
|
|
||
|
|
### Vitest (31 fichiers en echec, 196 tests echouent)
|
||
|
|
|
||
|
|
**Taux de reussite** : 94.2% des tests passent (3201/3397)
|
||
|
|
|
||
|
|
**Echec identifie** :
|
||
|
|
- `src/features/search/components/search-page/SearchPage.test.tsx` — `getByPlaceholderText(/search for tracks/i)` ne trouve pas l'element (i18n ou changement de placeholder)
|
||
|
|
|
||
|
|
**Analyse** : 89% des fichiers de test passent. Les 31 fichiers en echec sont probablement des tests perimes (composants modifies mais tests pas mis a jour) ou des problemes de mocks MSW.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Backend — Detail
|
||
|
|
|
||
|
|
### Tests Go (3 packages FAIL)
|
||
|
|
|
||
|
|
**Packages en echec :**
|
||
|
|
|
||
|
|
| Package | Tests echoues | Duree | Analyse |
|
||
|
|
|---------|--------------|-------|---------|
|
||
|
|
| `internal/handlers` | 3 tests | 4.5s | TestErrorContractAuthEndpoints, TestMarketplaceHandler_ListProducts_Success, TestMarketplaceHandler_GetDownloadURL_NoLicense |
|
||
|
|
| `internal/services` | 1 test | 82s | TestPlaybackAnalyticsService_GetTrackStats (timeout probable) |
|
||
|
|
| `internal/core/track` | 1 test | 1.6s | TestTrackHandler_GetTrackLikes_Success (expected 200, got 401 — auth test setup) |
|
||
|
|
|
||
|
|
**Packages qui passent (10)** :
|
||
|
|
- core/admin, core/analytics, core/auth, core/discover, core/distribution
|
||
|
|
- core/education, core/marketplace, core/moderation, core/subscription
|
||
|
|
- services/hyperswitch
|
||
|
|
|
||
|
|
**Packages sans tests (3)** :
|
||
|
|
- core/collaboration, core/feed, core/social
|
||
|
|
|
||
|
|
**Analyse detaillee des echecs** :
|
||
|
|
1. **TestErrorContractAuthEndpoints** — Probablement un contrat de reponse d'erreur qui a change
|
||
|
|
2. **TestMarketplaceHandler_*** — MVP-OUT (marketplace differ), non-bloquant
|
||
|
|
3. **TestPlaybackAnalyticsService_GetTrackStats** — 82s pour un package = timeout ou test bloque sur I/O
|
||
|
|
4. **TestTrackHandler_GetTrackLikes_Success** — Recoit 401 au lieu de 200, setup auth du test casse
|
||
|
|
|
||
|
|
### Vet (1 erreur)
|
||
|
|
|
||
|
|
```
|
||
|
|
response_test.go:186: RespondWithAppError called with 3 args, expects 2
|
||
|
|
```
|
||
|
|
|
||
|
|
Signature de fonction changee, test pas mis a jour.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Rust — Detail
|
||
|
|
|
||
|
|
**Etat : EXCELLENT**
|
||
|
|
|
||
|
|
- Compilation : PASS
|
||
|
|
- 150 tests : tous passent
|
||
|
|
- 2 tests ignores (probablement des tests necessitant de l'infra externe)
|
||
|
|
- Clippy non installe (a installer pour le lint)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Classification des problemes
|
||
|
|
|
||
|
|
### Bloquant MVP (a fixer en Phase 1)
|
||
|
|
|
||
|
|
| # | Probleme | Impact | Effort estime |
|
||
|
|
|---|----------|--------|---------------|
|
||
|
|
| 1 | 2 hooks TS casses (useSeason, useTimeOfDay) | TypeCheck rouge | 30 min |
|
||
|
|
| 2 | Config ESLint cassee (JSX not defined) | Lint rouge | 1h |
|
||
|
|
| 3 | TestTrackHandler_GetTrackLikes_Success (401) | Test auth setup | 30 min |
|
||
|
|
| 4 | TestErrorContractAuthEndpoints | Contrat erreur | 30 min |
|
||
|
|
| 5 | TestPlaybackAnalyticsService_GetTrackStats (80s) | Timeout/blocage | 1h |
|
||
|
|
| 6 | response_test.go:186 (vet error) | Signature changee | 15 min |
|
||
|
|
| 7 | ~31 fichiers vitest en echec (core seulement) | Tests perimes | 2-3h |
|
||
|
|
|
||
|
|
### Non-bloquant (differ)
|
||
|
|
|
||
|
|
| # | Probleme | Raison du report |
|
||
|
|
|---|----------|-----------------|
|
||
|
|
| 8 | 617 erreurs TS dans stories | N'affecte pas le build production |
|
||
|
|
| 9 | TestMarketplaceHandler_* (2 tests) | Feature MVP-OUT |
|
||
|
|
| 10 | Pas de tests pour feed/social/collaboration | Ecrire apres stabilisation |
|
||
|
|
| 11 | cargo clippy non installe | Nice-to-have, pas bloquant |
|
||
|
|
| 12 | 1115 ESLint warnings | Warnings, pas erreurs |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Phase 1 — Stabilisation : TERMINEE (2026-04-05)
|
||
|
|
|
||
|
|
Tous les bloquants MVP ont ete fixes :
|
||
|
|
- Frontend TypeCheck : 0 erreurs (non-stories)
|
||
|
|
- Frontend ESLint : 0 erreurs (de 349 a 0)
|
||
|
|
- Frontend Vitest : 3396/3397 tests passent (98%+ pass rate)
|
||
|
|
- Backend Vet : 0 erreurs
|
||
|
|
- Backend Tests : 3 tests MVP fixes (auth contract, track likes, playback analytics)
|
||
|
|
- Backend tests : seuls 2 tests marketplace echouent (MVP-OUT, reportes)
|
||
|
|
|
||
|
|
## Phase 2 — Detection bugs visuels : TERMINEE (2026-04-05)
|
||
|
|
|
||
|
|
### Resultats Storybook Audit (1244 stories)
|
||
|
|
- **0 stories avec erreurs console**
|
||
|
|
- **0 erreurs totales**
|
||
|
|
- Rapport complet : `apps/web/storybook_audit_detailed.json`
|
||
|
|
|
||
|
|
Conclusion : Les composants individuels rendent proprement. Les bugs visuels rapportes sont probablement au niveau de l'integration page/layout, non au niveau composant.
|
||
|
|
|
||
|
|
### Limitation connue : Storybook Vitest (browser mode)
|
||
|
|
L'infrastructure `vitest.storybook.config.ts` a un probleme de MSW en mode browser :
|
||
|
|
`onUnhandledRequest: 'error'` fait crash les tests qui tentent d'appeler des APIs non mockees.
|
||
|
|
Ce probleme est **d'infrastructure de test**, pas un bug produit.
|
||
|
|
Le vrai Storybook (`npm run storybook`) fonctionne sans erreur.
|
||
|
|
|
||
|
|
## Phase 3 — Pipeline CI verte : TERMINEE (2026-04-05)
|
||
|
|
|
||
|
|
### Etat final des tests
|
||
|
|
|
||
|
|
| Stack | Status | Details |
|
||
|
|
|-------|--------|---------|
|
||
|
|
| **Frontend Build (Vite)** | PASS | 35s, bundle OK |
|
||
|
|
| **Frontend TypeCheck** | PASS | 0 erreurs non-stories (586 en stories, non-bloquantes) |
|
||
|
|
| **Frontend ESLint** | PASS | 0 erreurs (de 349 a 0) |
|
||
|
|
| **Frontend Vitest** | PASS | 281/281 fichiers, 3396/3397 tests (1 skip documente) |
|
||
|
|
| **Backend Build** | PASS | 0 erreurs |
|
||
|
|
| **Backend Vet** | PASS | 0 erreurs |
|
||
|
|
| **Backend Tests** | PASS | 13 packages testes, TOUS passent |
|
||
|
|
| **Rust Check** | PASS | Compilation clean |
|
||
|
|
| **Rust Tests** | PASS | 150/150 tests |
|
||
|
|
| **Storybook Audit** | PASS | 0 erreurs sur 1244 stories |
|
||
|
|
|
||
|
|
### Fixes appliques en Phase 3
|
||
|
|
- `internal/core/marketplace/service.go` : remplacement `NOW()` PostgreSQL par `time.Now()` portable
|
||
|
|
- `internal/handlers/marketplace_test.go` : ajout des migrations manquantes (ProductImage, ProductPreview, ProductLicense, ProductReview)
|