veza/VEZA_COMPLETE_AUDIT_PROMPT.md
senke b9821db707 [BE-SEC-001] security: Fix ownership verification for user profile updates
- Verified RequireOwnershipOrAdmin middleware is correctly applied to PUT /users/:id
- Added integration tests for ownership verification
- Test: user cannot update another user's profile (403 Forbidden)
- Test: admin can update any profile (200 OK)
- Test: user can update own profile (200 OK)
- All tests pass

Phase: PHASE-1
Priority: P0
Progress: 1/267 (0.4%)
2025-12-23 01:36:04 +01:00

628 lines
17 KiB
Markdown

# VEZA Complete MVP Audit & Todolist Generator
## 🎯 Mission
Tu es un agent d'audit exhaustif. Ta mission est de scanner **l'intégralité** du codebase Veza et générer une **todolist de 200+ tâches** couvrant tout ce qui est nécessaire pour atteindre un **MVP stable prêt pour la production à petite échelle**.
**RÈGLE ABSOLUE** : Ne JAMAIS ignorer, skipper ou supprimer une feature/route/fonction. Si quelque chose existe côté frontend mais pas backend (ou inversement), **AJOUTE UNE TÂCHE** pour l'implémenter. L'objectif est la **progression**, pas la régression ni la stagnation.
---
## 📁 Répertoires à Scanner
```
veza/
├── apps/web/ # Frontend React/TypeScript (SCAN COMPLET)
│ ├── src/
│ │ ├── components/ # Composants UI
│ │ ├── features/ # Features par domaine
│ │ ├── hooks/ # Custom hooks
│ │ ├── pages/ # Pages/routes
│ │ ├── services/ # Services API
│ │ ├── stores/ # State management
│ │ ├── types/ # Types TypeScript
│ │ ├── utils/ # Utilitaires
│ │ └── schemas/ # Validation Zod
│ ├── public/
│ └── tests/
├── veza-backend-api/ # Backend Go/Gin (SCAN COMPLET)
│ ├── cmd/ # Entry points
│ ├── internal/
│ │ ├── api/ # Routes & handlers
│ │ ├── config/ # Configuration
│ │ ├── dto/ # Data Transfer Objects
│ │ ├── middleware/ # Middlewares
│ │ ├── models/ # Database models
│ │ ├── repository/ # Data access
│ │ ├── services/ # Business logic
│ │ └── errors/ # Error handling
│ └── migrations/
├── veza-common/ # Shared code (SI EXISTE)
├── veza-chat-server/ # Chat server Rust (SI EXISTE)
├── veza-stream-server/ # Streaming server (SI EXISTE)
├── docker-compose*.yml # Infrastructure
└── docs/ # Documentation
```
---
## 🔍 Protocole d'Audit Exhaustif
### ÉTAPE 1 : Cartographie du Frontend (apps/web/)
```bash
# 1.1 Lister TOUTES les routes/pages
find apps/web/src/pages apps/web/src/features/*/pages -name "*.tsx" 2>/dev/null
# 1.2 Lister TOUS les services API
find apps/web/src/services apps/web/src/features/*/services -name "*.ts" 2>/dev/null
# 1.3 Lister TOUS les appels API
grep -rn "apiClient\.\|axios\.\|fetch(" apps/web/src/ --include="*.ts" --include="*.tsx"
# 1.4 Lister TOUS les types/interfaces
find apps/web/src/types apps/web/src/features/*/types -name "*.ts" 2>/dev/null
# 1.5 Lister TOUS les stores (state management)
find apps/web/src/stores apps/web/src/features/*/stores -name "*.ts" 2>/dev/null
# 1.6 Lister TOUS les hooks custom
find apps/web/src/hooks apps/web/src/features/*/hooks -name "*.ts" 2>/dev/null
# 1.7 Lister TOUS les composants
find apps/web/src/components apps/web/src/features/*/components -name "*.tsx" 2>/dev/null
# 1.8 Lister TOUS les schemas de validation
find apps/web/src/schemas apps/web/src/features/*/schemas -name "*.ts" 2>/dev/null
# 1.9 Lister les tests existants
find apps/web/src -name "*.test.ts" -o -name "*.test.tsx" -o -name "*.spec.ts" 2>/dev/null
```
### ÉTAPE 2 : Cartographie du Backend (veza-backend-api/)
```bash
# 2.1 Lister TOUTES les routes définies
grep -rn "router\.\(GET\|POST\|PUT\|DELETE\|PATCH\)" veza-backend-api/internal/api/
# 2.2 Lister TOUS les handlers
find veza-backend-api/internal/handlers veza-backend-api/internal/api -name "*.go" 2>/dev/null
# 2.3 Lister TOUS les models
find veza-backend-api/internal/models -name "*.go" 2>/dev/null
# 2.4 Lister TOUS les DTOs
find veza-backend-api/internal/dto -name "*.go" 2>/dev/null
# 2.5 Lister TOUS les services
find veza-backend-api/internal/services -name "*.go" 2>/dev/null
# 2.6 Lister TOUS les repositories
find veza-backend-api/internal/repository -name "*.go" 2>/dev/null
# 2.7 Lister TOUS les middlewares
find veza-backend-api/internal/middleware -name "*.go" 2>/dev/null
# 2.8 Lister les migrations
find veza-backend-api/migrations -name "*.sql" 2>/dev/null
# 2.9 Lister les tests existants
find veza-backend-api -name "*_test.go" 2>/dev/null
```
### ÉTAPE 3 : Analyse de l'Intégration
```bash
# 3.1 Extraire TOUS les endpoints appelés par le frontend
grep -rohn "apiClient\.[a-z]*\s*(\s*['\"\`][^'\"\`]*" apps/web/src/ | sort | uniq
# 3.2 Extraire TOUTES les routes backend
grep -rn "router\.\(GET\|POST\|PUT\|DELETE\|PATCH\)" veza-backend-api/internal/api/ | grep -o '"[^"]*"' | sort | uniq
# 3.3 Comparer les deux listes pour trouver les gaps
# 3.4 Vérifier la cohérence des types
# Frontend types vs Backend DTOs
# 3.5 Vérifier les variables d'environnement
grep -rn "VITE_" apps/web/src/
grep -rn "os.Getenv" veza-backend-api/
```
### ÉTAPE 4 : Scanner les Autres Services (si présents)
```bash
# veza-common
ls -la veza-common/ 2>/dev/null
# veza-chat-server
ls -la veza-chat-server/ 2>/dev/null
grep -rn "route\|endpoint\|handler" veza-chat-server/src/ 2>/dev/null
# veza-stream-server
ls -la veza-stream-server/ 2>/dev/null
```
---
## 📋 Catégories de Tâches à Générer
Pour chaque élément trouvé, génère des tâches dans ces catégories :
### 1. BACKEND - Routes API (BE-API-XXX)
- Routes manquantes appelées par le frontend
- Routes existantes mais incomplètes
- Validation des inputs manquante
- Gestion des erreurs insuffisante
- Documentation OpenAPI manquante
### 2. BACKEND - Models & Database (BE-DB-XXX)
- Models manquants ou incomplets
- Migrations manquantes
- Index manquants
- Relations mal définies
- Soft delete non implémenté
### 3. BACKEND - Services & Logic (BE-SVC-XXX)
- Business logic manquante
- Validation métier manquante
- Transactions non gérées
- Caching non implémenté
### 4. BACKEND - Security (BE-SEC-XXX)
- Authentication gaps
- Authorization gaps
- Rate limiting manquant
- Input sanitization
- CORS issues
### 5. BACKEND - Tests (BE-TEST-XXX)
- Tests unitaires manquants
- Tests d'intégration manquants
- Coverage insuffisante
### 6. FRONTEND - Pages & Routes (FE-PAGE-XXX)
- Pages incomplètes
- Routes mal configurées
- Layouts manquants
- Navigation broken
### 7. FRONTEND - Components (FE-COMP-XXX)
- Composants manquants
- Props non typées
- Accessibilité (a11y)
- Responsive design
- Error boundaries
### 8. FRONTEND - Services & API (FE-API-XXX)
- Services API incomplets
- Error handling manquant
- Loading states manquants
- Retry logic manquant
### 9. FRONTEND - State Management (FE-STATE-XXX)
- Stores incomplets
- State sync issues
- Cache invalidation
- Optimistic updates
### 10. FRONTEND - Types & Validation (FE-TYPE-XXX)
- Types manquants ou incorrects
- Zod schemas manquants
- Runtime validation
### 11. FRONTEND - Tests (FE-TEST-XXX)
- Tests unitaires manquants
- Tests de composants manquants
- Tests E2E manquants
### 12. INTEGRATION (INT-XXX)
- Contract mismatches
- Type inconsistencies
- Missing endpoints
- Response format issues
### 13. INFRASTRUCTURE (INFRA-XXX)
- Docker configuration
- Environment variables
- CI/CD pipeline
- Monitoring/Logging
### 14. DOCUMENTATION (DOC-XXX)
- API documentation
- README updates
- Architecture docs
- Deployment guide
### 15. SECURITY (SEC-XXX)
- Authentication issues
- Authorization issues
- Data exposure risks
- Dependency vulnerabilities
---
## 📊 Format de Sortie JSON
Génère le fichier `VEZA_COMPLETE_MVP_TODOLIST.json` avec cette structure :
```json
{
"meta": {
"title": "Veza Complete MVP Todolist",
"description": "Exhaustive todolist for production-ready MVP",
"generated_at": "ISO_TIMESTAMP",
"total_tasks": 200,
"target": "Production-ready MVP at small scale",
"scanned_directories": [
"apps/web/",
"veza-backend-api/",
"veza-common/",
"..."
],
"audit_methodology": "Full codebase scan + integration analysis"
},
"summary": {
"by_priority": {
"P0_critical": 0,
"P1_high": 0,
"P2_medium": 0,
"P3_low": 0
},
"by_category": {
"BE-API": 0,
"BE-DB": 0,
"BE-SVC": 0,
"BE-SEC": 0,
"BE-TEST": 0,
"FE-PAGE": 0,
"FE-COMP": 0,
"FE-API": 0,
"FE-STATE": 0,
"FE-TYPE": 0,
"FE-TEST": 0,
"INT": 0,
"INFRA": 0,
"DOC": 0,
"SEC": 0
},
"by_owner": {
"backend": 0,
"frontend": 0,
"fullstack": 0,
"devops": 0
},
"estimated_total_hours": 0
},
"phases": [
{
"id": "PHASE-1",
"name": "Critical Foundation",
"description": "Must fix before any other work",
"priority": "P0",
"estimated_days": 0,
"tasks": []
},
{
"id": "PHASE-2",
"name": "Core Features Completion",
"description": "Complete essential user-facing features",
"priority": "P1",
"estimated_days": 0,
"tasks": []
},
{
"id": "PHASE-3",
"name": "Integration & Consistency",
"description": "Ensure frontend/backend work seamlessly",
"priority": "P1",
"estimated_days": 0,
"tasks": []
},
{
"id": "PHASE-4",
"name": "Security Hardening",
"description": "Security measures for production",
"priority": "P1",
"estimated_days": 0,
"tasks": []
},
{
"id": "PHASE-5",
"name": "Testing & Quality",
"description": "Test coverage and code quality",
"priority": "P2",
"estimated_days": 0,
"tasks": []
},
{
"id": "PHASE-6",
"name": "Performance & Optimization",
"description": "Optimize for production load",
"priority": "P2",
"estimated_days": 0,
"tasks": []
},
{
"id": "PHASE-7",
"name": "Documentation & DevOps",
"description": "Documentation and deployment readiness",
"priority": "P2",
"estimated_days": 0,
"tasks": []
},
{
"id": "PHASE-8",
"name": "Polish & UX",
"description": "UI/UX improvements and polish",
"priority": "P3",
"estimated_days": 0,
"tasks": []
}
],
"tasks": [
{
"id": "BE-API-001",
"phase": "PHASE-2",
"priority": "P1",
"priority_rank": 1,
"category": "backend-api",
"title": "Task title",
"description": "Detailed description",
"owner": "backend",
"estimated_hours": 2,
"status": "todo",
"files_involved": [
{
"path": "veza-backend-api/internal/...",
"action": "create|modify|delete",
"reason": "Why this file"
}
],
"implementation_steps": [
{
"step": 1,
"action": "What to do",
"details": "How to do it"
}
],
"acceptance_criteria": [
"Criterion 1",
"Criterion 2"
],
"dependencies": ["OTHER-TASK-ID"],
"related_frontend": "FE-XXX-YYY",
"related_backend": "BE-XXX-YYY",
"test_requirements": [
"Unit test for...",
"Integration test for..."
],
"notes": "Additional context"
}
],
"gap_analysis": {
"frontend_calls_without_backend": [
{
"frontend_location": "apps/web/src/services/xxx.ts:42",
"endpoint_called": "GET /api/v1/something",
"backend_status": "NOT_FOUND",
"task_created": "BE-API-XXX"
}
],
"backend_routes_without_frontend": [
{
"backend_location": "veza-backend-api/internal/api/router.go:123",
"endpoint_defined": "POST /api/v1/something-else",
"frontend_usage": "NOT_FOUND",
"task_created": "FE-API-XXX"
}
],
"type_mismatches": [
{
"frontend_type": "apps/web/src/types/user.ts - id: number",
"backend_type": "veza-backend-api/internal/dto/user.go - ID: uuid.UUID",
"task_created": "INT-XXX"
}
]
},
"risk_register": [
{
"risk": "Description of risk",
"severity": "high|medium|low",
"mitigation_tasks": ["TASK-ID-1", "TASK-ID-2"],
"owner": "backend|frontend|devops"
}
],
"mvp_definition": {
"must_have_features": [
{
"feature": "User Authentication",
"status": "complete|partial|missing",
"tasks_required": ["BE-API-001", "FE-PAGE-001"]
}
],
"nice_to_have": [
{
"feature": "Advanced Search",
"tasks_if_included": ["BE-API-050", "FE-COMP-030"]
}
],
"out_of_scope": [
"Feature X - reason"
]
},
"progress_tracking": {
"completed": 0,
"in_progress": 0,
"todo": 200,
"blocked": 0,
"last_updated": null,
"completion_percentage": 0
}
}
```
---
## 🔢 Règles de Priorisation
### P0 - Critical (Blocker)
- L'app ne démarre pas
- Crash systématique
- Faille de sécurité majeure
- Perte de données possible
- Authentication cassée
### P1 - High (Core Feature)
- Feature essentielle non fonctionnelle
- Intégration frontend/backend cassée
- UX bloquante pour l'utilisateur
- Performance inacceptable
### P2 - Medium (Important)
- Feature secondaire non fonctionnelle
- Inconsistances visuelles
- Tests manquants pour code critique
- Documentation manquante
### P3 - Low (Nice to Have)
- Améliorations UX mineures
- Refactoring non urgent
- Tests pour code non critique
- Optimisations mineures
---
## ⚠️ Règles Absolues
### NE JAMAIS :
- ❌ Ignorer une route/feature parce qu'elle n'est pas implémentée
- ❌ Recommander de supprimer du code qui appelle des endpoints manquants
- ❌ Sauter des fichiers "parce qu'ils semblent obsolètes"
- ❌ Limiter l'audit à certains dossiers seulement
- ❌ Générer moins de 200 tâches
### TOUJOURS :
- ✅ Créer une tâche pour implémenter ce qui manque
- ✅ Documenter les deux côtés (frontend + backend) pour chaque gap
- ✅ Lier les tâches entre elles (dependencies, related_*)
- ✅ Inclure des critères d'acceptation testables
- ✅ Estimer les heures de travail
---
## 🚀 Séquence d'Exécution
```
1. SCAN FRONTEND
└── Lister tous les fichiers
└── Extraire tous les appels API
└── Identifier tous les types
└── Trouver tous les composants/pages
└── Détecter les tests manquants
2. SCAN BACKEND
└── Lister toutes les routes
└── Extraire tous les handlers
└── Identifier tous les models/DTOs
└── Trouver tous les services
└── Détecter les tests manquants
3. ANALYSE D'INTÉGRATION
└── Comparer endpoints frontend vs backend
└── Comparer types frontend vs DTOs backend
└── Identifier TOUS les gaps
└── Créer tâches pour chaque gap
4. SCAN SERVICES ANNEXES
└── veza-common
└── veza-chat-server
└── veza-stream-server
└── Autres...
5. ANALYSE SÉCURITÉ
└── Auth/AuthZ gaps
└── Input validation
└── CORS/CSRF
└── Secrets exposure
6. ANALYSE INFRA
└── Docker configs
└── Environment vars
└── CI/CD gaps
7. GÉNÉRATION TODOLIST
└── Créer toutes les tâches
└── Assigner les priorités
└── Calculer les estimations
└── Organiser en phases
└── Générer le JSON final
```
---
## 📤 Output Attendu
À la fin de l'audit, tu dois produire :
1. **`VEZA_COMPLETE_MVP_TODOLIST.json`** — Le fichier JSON avec 200+ tâches
2. **Résumé dans la conversation** :
```
══════════════════════════════════════════════════════
📊 AUDIT COMPLET VEZA - RÉSUMÉ
══════════════════════════════════════════════════════
Total tâches générées: XXX
Par priorité:
• P0 (Critical): XX tâches
• P1 (High): XX tâches
• P2 (Medium): XX tâches
• P3 (Low): XX tâches
Par catégorie:
• Backend API: XX
• Backend DB: XX
• Backend Services: XX
• Frontend Pages: XX
• Frontend Components: XX
• Integration: XX
• Security: XX
• Tests: XX
• Infrastructure: XX
• Documentation: XX
Gaps critiques détectés:
• XX endpoints appelés par frontend mais non implémentés
• XX routes backend sans utilisation frontend
• XX type mismatches
Estimation totale: XXX heures (~XX semaines)
Fichier généré: VEZA_COMPLETE_MVP_TODOLIST.json
══════════════════════════════════════════════════════
```
---
## 🎯 COMMENCE MAINTENANT
1. **Lis la structure du projet** :
```bash
ls -la
find . -type d -name "src" | head -20
```
2. **Scanne le frontend** (apps/web/)
3. **Scanne le backend** (veza-backend-api/)
4. **Identifie les gaps d'intégration**
5. **Génère les 200+ tâches**
6. **Produis le fichier JSON final**
**Première action** : Lister la structure racine du projet et identifier tous les répertoires à scanner.