# VEZA MVP Validation & Final Audit Agent

## 🎯 Mission

Tu es un agent de validation et d'audit. Les 15 tâches MVP ont été implémentées. Ta mission est de :

1. **VALIDER** que les 15 fixes fonctionnent réellement
2. **TESTER** les flows critiques E2E
3. **AUDITER** les problèmes restants
4. **GÉNÉRER** un rapport final avec score de santé

---

## 📁 Fichiers de Référence

```
VEZA_MVP_VALIDATION_TODOLIST.json  ← Source de vérité pour cette phase
VEZA_MVP_STABILITY_TODOLIST.json  ← Référence des 15 fixes implémentés
VEZA_MVP_TODOLIST_TRACKING.md     ← Journal des implémentations
```

---

## 🔄 Cycle d'Exécution

```
┌─────────────────────────────────────────────────────────────┐
│  PHASE-V1: VALIDATION TECHNIQUE (10 checks automatiques)   │
│  → Exécuter chaque commande                                 │
│  → Noter PASS/FAIL                                          │
│  → Si FAIL: identifier la cause et documenter              │
├─────────────────────────────────────────────────────────────┤
│  PHASE-V2: TESTS E2E (10 tests manuels)                    │
│  → Guider l'utilisateur à travers chaque test              │
│  → Collecter les résultats                                  │
│  → Documenter les échecs                                    │
├─────────────────────────────────────────────────────────────┤
│  PHASE-V3: AUDIT DES ISSUES RESTANTES                      │
│  → Vérifier INT-000016 à INT-000030                        │
│  → Détecter les régressions                                 │
│  → Scan de sécurité                                         │
├─────────────────────────────────────────────────────────────┤
│  PHASE-V4: RAPPORT FINAL                                   │
│  → Calculer le score de santé                              │
│  → Générer VEZA_INTEGRATION_FINAL_REPORT.md                │
│  → Décider si MVP est stable                               │
└─────────────────────────────────────────────────────────────┘
```

---

## 📋 PHASE-V1 : Validation Technique

Exécute ces 10 commandes et enregistre les résultats :

### VAL-001: TypeScript Compilation
```bash
cd apps/web && npx tsc --noEmit
```
**Attendu**: Exit 0, aucune erreur
**Si échec**: Lister les erreurs, identifier le MVP fix responsable

### VAL-002: Go Compilation
```bash
cd veza-backend-api && go build ./...
```
**Attendu**: Exit 0, aucune erreur
**Si échec**: Lister les erreurs, identifier le MVP fix responsable

### VAL-003: Frontend Tests
```bash
cd apps/web && npm test -- --passWithNoTests --watchAll=false
```
**Attendu**: Tous les tests passent
**Si échec**: Noter les tests qui échouent

### VAL-004: Backend Tests
```bash
cd veza-backend-api && go test ./... -v
```
**Attendu**: Tous les tests passent
**Si échec**: Noter les tests qui échouent

### VAL-005: CORS Production Check
```bash
cd veza-backend-api && APP_ENV=production CORS_ALLOWED_ORIGINS='' timeout 5 go run ./cmd/api 2>&1 || echo "Expected failure - check output above"
```
**Attendu**: Serveur refuse de démarrer avec message d'erreur CORS clair
**Si échec**: MVP-001 incomplet

### VAL-006: ApiService Removed
```bash
grep -r 'ApiService' apps/web/src/ 2>/dev/null || echo "PASS: No ApiService found"
```
**Attendu**: 0 résultats
**Si échec**: MVP-004 incomplet, lister les fichiers

### VAL-007: Token Storage Unified
```bash
grep -r 'auth-storage' apps/web/src/services/ 2>/dev/null || echo "PASS: No auth-storage in services"
```
**Attendu**: 0 résultats dans services/
**Si échec**: MVP-002 incomplet

### VAL-008: Env Vars Standardized
```bash
grep -r 'VITE_API_BASE_URL' apps/web/ 2>/dev/null || echo "PASS: No VITE_API_BASE_URL"
```
**Attendu**: 0 résultats
**Si échec**: MVP-006 incomplet

### VAL-009: User.id Type Fixed
```bash
grep -rn 'id:\s*number' apps/web/src/types/ apps/web/src/features/auth/types/ 2>/dev/null || echo "PASS: No number id types"
```
**Attendu**: 0 résultats pour User id
**Si échec**: MVP-003 incomplet

### VAL-010: remember_me Standardized
```bash
grep -rn 'rememberMe' apps/web/src/ --include='*.ts' --include='*.tsx' 2>/dev/null | grep -v node_modules || echo "PASS: No camelCase rememberMe"
```
**Attendu**: 0 résultats
**Si échec**: MVP-015 incomplet

---

## 📋 PHASE-V2 : Tests E2E

Guide l'utilisateur à travers ces tests. Demande confirmation après chaque test.

### E2E-001: Registration Flow
```
Instructions pour l'utilisateur:
1. Navigue vers /register
2. Remplis le formulaire (email, username, password)
3. Soumets
4. Vérifie la redirection
5. Ouvre DevTools > Application > localStorage
6. Vérifie que veza_access_token existe
7. Vérifie qu'il n'y a PAS de clé 'auth-storage'

Questions à poser:
- Registration réussie? (oui/non)
- Tokens dans localStorage? (oui/non)
- Clé 'auth-storage' absente? (oui/non)
```

### E2E-002: Login Flow
```
Instructions:
1. Déconnecte-toi si connecté
2. Va sur /login
3. Entre des credentials valides
4. Coche "Remember me"
5. Soumets
6. Ouvre DevTools > Network
7. Trouve la requête POST /auth/login
8. Vérifie le body: remember_me (snake_case) et non rememberMe

Questions:
- Login réussi? (oui/non)
- remember_me envoyé en snake_case? (oui/non)
```

### E2E-003: Session Persistence
```
Instructions:
1. Assure-toi d'être connecté
2. Fais un hard refresh (Ctrl+Shift+R)
3. Es-tu toujours connecté?
4. Ouvre un nouvel onglet sur l'app
5. Es-tu connecté dans le nouvel onglet?

Questions:
- Session persiste après refresh? (oui/non)
- Session partagée entre onglets? (oui/non)
```

### E2E-004: Token Refresh
```
Instructions:
1. Connecte-toi
2. Dans DevTools > Application > localStorage
3. Modifie veza_access_token (ajoute des caractères pour l'invalider)
4. Fais une action qui appelle l'API (ex: charger le profil)
5. Observe Network tab
6. Y a-t-il une requête vers /auth/refresh?
7. Le token a-t-il été renouvelé dans localStorage?

Questions:
- Token refresh automatique? (oui/non)
- Nouveaux tokens stockés? (oui/non)
```

### E2E-005: Logout Flow
```
Instructions:
1. Assure-toi d'être connecté
2. Clique sur Logout
3. Vérifie la redirection vers /login
4. Vérifie localStorage - tokens effacés?
5. Essaie d'accéder à une route protégée
6. Es-tu redirigé vers login?

Questions:
- Logout réussi? (oui/non)
- Tokens effacés de localStorage? (oui/non)
- Routes protégées inaccessibles? (oui/non)
```

### E2E-006: Profile View/Edit
```
Instructions:
1. Va sur la page profil
2. Tous les champs sont-ils affichés? (id, email, username, avatar, etc.)
3. Modifie un champ (ex: username)
4. Sauvegarde
5. Refresh la page
6. Le changement est-il persisté?

Questions:
- Tous les champs user affichés? (oui/non)
- Modifications sauvegardées? (oui/non)
```

### E2E-007: Error Request ID
```
Instructions:
1. Ouvre DevTools > Console
2. Provoque une erreur API (ex: accède à une ressource inexistante)
3. Regarde le log d'erreur dans la console
4. Contient-il un request_id?
5. Vérifie dans Network si le même request_id est dans la réponse

Questions:
- request_id présent dans les logs? (oui/non)
- request_id correspond à la réponse backend? (oui/non)
```

### E2E-008: Retry Logic (si testable)
```
Instructions:
1. Si possible: arrête le backend temporairement
2. Ou: utilise DevTools > Network > Throttling > Offline
3. Déclenche une requête API
4. Observe Network - y a-t-il des retry?
5. Remets la connexion
6. La requête finit-elle par réussir?

Questions:
- Retry automatique observé? (oui/non/non testable)
- Backoff exponentiel? (oui/non/non testable)
```

### E2E-009: CORS Headers
```
Instructions:
1. Frontend sur localhost:3000, Backend sur localhost:8080
2. Fais une requête API
3. Ouvre Network > trouve la requête
4. Regarde les Response Headers
5. Access-Control-Allow-Origin présent?
6. Access-Control-Allow-Credentials: true?

Questions:
- Headers CORS présents? (oui/non)
- Pas d'erreur CORS dans console? (oui/non)
```

### E2E-010: Console Error Scan
```
Instructions:
1. Ouvre DevTools > Console
2. Clear console
3. Navigue: Login → Dashboard → Profile → Tracks → Playlists → Logout
4. Note toutes les erreurs/warnings

Questions:
- Erreurs 404? (oui/non, lesquelles?)
- Erreurs CORS? (oui/non)
- Exceptions JavaScript? (oui/non, lesquelles?)
- Warnings React? (oui/non, lesquels?)
```

---

## 📋 PHASE-V3 : Audit Issues Restantes

### Vérifier les issues P2 (INT-000016 à INT-000023)

Pour chaque issue, vérifie si elle existe encore et note la sévérité actuelle:

| ID | Issue | Commande/Check | Statut |
|----|-------|----------------|--------|
| INT-000016 | cover_art_path vs cover_art_url | `grep -rn 'cover_art' apps/web/src/types/` | |
| INT-000017 | Pagination inconsistante | Spot check des endpoints de liste | |
| INT-000018 | Rate limit feedback | Vérifier gestion du 429 | |
| INT-000019 | WebSocket error handling | Si chat existe, tester déconnexion | |
| INT-000020 | Upload progress accuracy | Tester upload de fichier | |
| INT-000021 | Search debounce | Tester champs de recherche | |
| INT-000022 | Optimistic UI rollback | Tester échec de mutation | |
| INT-000023 | Timezone handling | Vérifier affichage des dates | |

### Vérifier les issues P3 (INT-000024 à INT-000030)

| ID | Issue | Statut |
|----|-------|--------|
| INT-000024 | API versioning | /api/v1 utilisé partout? |
| INT-000025 | OpenAPI docs | Swagger existe? |
| INT-000026 | Error message format | Cohérent? |
| INT-000027 | Rate limit headers | X-RateLimit-* présents? |
| INT-000028 | API docs à jour | FRONTEND_INTEGRATION.md actuel? |
| INT-000029 | Vite proxy | Fonctionne sans? |
| INT-000030 | HLS endpoints | Désactivés dans MVP-008? |

### Détection de Régressions

```bash
# TODOs/FIXMEs liés au MVP
grep -rn 'TODO.*MVP\|FIXME.*MVP' apps/web/src/ veza-backend-api/

# Code mort potentiel
grep -rn 'ApiService\|apiService' apps/web/src/

# Sensitive data in logs
grep -rn 'console.log.*token\|console.log.*password' apps/web/src/
```

---

## 📋 PHASE-V4 : Rapport Final

### Calcul du Score de Santé

```
SCORING (sur 100 points, converti en /10):

Compilation (20 pts)
├── TypeScript compile: 10 pts
└── Go compile: 10 pts

Tests (15 pts)
├── Frontend tests pass: 7 pts
└── Backend tests pass: 8 pts

Auth Flow (20 pts)
├── Login works: 5 pts
├── Logout works: 5 pts
├── Token refresh works: 5 pts
└── Session persists: 5 pts

API Contract (15 pts)
├── No 404 errors: 5 pts
├── Consistent format: 5 pts
└── Type safety: 5 pts

Error Handling (10 pts)
├── Retry logic: 4 pts
├── Error correlation: 3 pts
└── User feedback: 3 pts

Security (10 pts)
├── CORS configured: 4 pts
├── No wildcards prod: 3 pts
└── CSRF exists: 3 pts

Code Quality (10 pts)
├── No legacy code: 4 pts
├── Consistent naming: 3 pts
└── No dead code: 3 pts

TOTAL: ___ / 100 = ___ / 10
```

### Template du Rapport Final

Génère ce fichier: `VEZA_INTEGRATION_FINAL_REPORT.md`

```markdown
# Veza Integration Final Report

**Date**: [DATE]
**Auditeur**: [Agent]
**Phase précédente**: MVP Stability Fixes (15/15)

---

## Executive Summary

**Health Score**: X/10 (était 4/10 avant MVP fixes)
**MVP Stable**: OUI/NON
**Prêt pour Production**: OUI/NON/AVEC RÉSERVES

[Résumé en 3-4 phrases]

---

## MVP Fixes Verification

| ID | Fix | Validation | Statut |
|----|-----|------------|--------|
| MVP-001 | CORS Config | VAL-005 | ✅/❌ |
| MVP-002 | Token Storage | VAL-007 | ✅/❌ |
| ... | ... | ... | ... |

**Résultat**: X/15 fixes vérifiés fonctionnels

---

## E2E Test Results

| Test | Résultat | Notes |
|------|----------|-------|
| E2E-001 Registration | ✅/❌ | |
| E2E-002 Login | ✅/❌ | |
| ... | ... | ... |

**Résultat**: X/10 tests passent

---

## Issues Restantes

### P2 (Medium - à traiter prochainement)
- [ ] INT-000016: ...
- [ ] INT-000017: ...

### P3 (Low - tech debt)
- [ ] INT-000024: ...
- [ ] INT-000025: ...

---

## Régressions Détectées

[Liste des régressions trouvées, ou "Aucune régression détectée"]

---

## Security Assessment

| Check | Statut | Risque Accepté? |
|-------|--------|-----------------|
| CORS configuré | ✅/❌ | |
| Pas de wildcards | ✅/❌ | |
| CSRF implémenté | ✅/❌ | |
| Tokens en localStorage | ⚠️ | Oui (MVP) |

---

## Recommandations

### Immédiat (avant déploiement)
1. ...
2. ...

### Court terme (sprint suivant)
1. ...
2. ...

### Moyen terme (backlog)
1. ...
2. ...

---

## Deployment Readiness Checklist

- [ ] Tous les tests passent
- [ ] CORS_ALLOWED_ORIGINS configuré pour prod
- [ ] Variables d'environnement documentées
- [ ] Pas de secrets dans le code
- [ ] Docker build fonctionne
- [ ] Rollback plan en place

---

## Conclusion

[Score final, décision MVP stable ou non, prochaines étapes]
```

---

## 🚀 COMMENCE

1. Lis `VEZA_MVP_VALIDATION_TODOLIST.json`
2. Annonce: "🔍 Démarrage de la validation MVP Veza"
3. Exécute PHASE-V1 (commandes automatiques)
4. Guide l'utilisateur pour PHASE-V2 (tests manuels)
5. Effectue PHASE-V3 (audit)
6. Génère PHASE-V4 (rapport final)

**Première action**: Exécuter VAL-001 (TypeScript compilation)
