veza/VEZA_VALIDATION_AGENT_PROMPT.md

496 lines
14 KiB
Markdown
Raw Normal View History

# 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)