{ "version": "1.0.0", "created": "2025-01-27", "sections": [ { "id": "tests", "title": "Tests : Créer les Tests Unitaires et d'Intégration", "status": "pending", "tasks": [ { "id": "test-unit-services", "title": "Tests unitaires services critiques", "status": "pending", "priority": "high", "files": [ "src/services/__tests__/apiClient.test.ts", "src/services/__tests__/tokenRefresh.test.ts", "src/services/__tests__/authService.test.ts", "src/services/__tests__/trackService.test.ts", "src/services/__tests__/playlistService.test.ts" ] }, { "id": "test-unit-hooks", "title": "Tests unitaires hooks personnalisés", "status": "pending", "priority": "medium", "files": [ "src/hooks/__tests__/useAuth.test.ts", "src/hooks/__tests__/useTracks.test.ts", "src/hooks/__tests__/usePlaylists.test.ts", "src/hooks/__tests__/useUpload.test.ts" ] }, { "id": "test-unit-components", "title": "Tests unitaires composants métier", "status": "pending", "priority": "low", "files": [ "src/components/features/__tests__/auth/LoginForm.test.tsx", "src/components/features/__tests__/tracks/TrackUpload.test.tsx", "src/components/features/__tests__/playlists/PlaylistManager.test.tsx" ] }, { "id": "test-e2e", "title": "Tests E2E Playwright", "status": "pending", "priority": "high", "files": [ "e2e/auth-flow.spec.ts", "e2e/track-upload.spec.ts", "e2e/playlist-flow.spec.ts", "e2e/navigation.spec.ts", "e2e/error-handling.spec.ts" ] }, { "id": "test-backend-integration", "title": "Tests d'intégration backend", "status": "pending", "priority": "high", "files": [ "veza-backend-api/tests/integration/auth_test.go", "veza-backend-api/tests/integration/track_test.go", "veza-backend-api/tests/integration/playlist_test.go" ] } ] }, { "id": "config", "title": "Configuration : Variables d'Environnement", "status": "pending", "tasks": [ { "id": "config-backend-env", "title": "Ajouter variables cookies backend", "status": "pending", "priority": "high", "files": [ "veza-backend-api/.env.example", "veza-backend-api/internal/config/config.go", "veza-backend-api/internal/handlers/auth.go" ] }, { "id": "config-frontend-env", "title": "Documenter variables frontend", "status": "pending", "priority": "medium", "files": [ "apps/web/.env.example" ] }, { "id": "config-docker", "title": "Configurer Docker Compose", "status": "pending", "priority": "high", "files": [ "docker-compose.yml", "docker-compose.prod.yml" ] }, { "id": "config-docs", "title": "Mettre à jour documentation config", "status": "pending", "priority": "medium", "files": [ "ENV_CONFIG.md" ] } ] }, { "id": "docs", "title": "Documentation : Mettre à Jour la Documentation API", "status": "pending", "tasks": [ { "id": "docs-swagger-annotations", "title": "Compléter annotations Swagger", "status": "pending", "priority": "high", "files": [ "veza-backend-api/internal/handlers/audit.go", "veza-backend-api/internal/handlers/webhook_handlers.go", "veza-backend-api/internal/handlers/comment_handler.go" ] }, { "id": "docs-cookies", "title": "Documenter cookies httpOnly", "status": "pending", "priority": "high", "files": [ "veza-backend-api/docs/API_DOCUMENTATION.md" ] }, { "id": "docs-examples", "title": "Mettre à jour exemples", "status": "pending", "priority": "medium", "files": [ "tools/tests/http/postman_collection.json" ] }, { "id": "docs-regenerate", "title": "Régénérer documentation Swagger", "status": "pending", "priority": "high", "command": "cd veza-backend-api && swag init -g cmd/api/main.go" } ] }, { "id": "deployment", "title": "Déploiement : Tester en Staging Avant Production", "status": "pending", "tasks": [ { "id": "deploy-staging-config", "title": "Créer configuration staging", "status": "pending", "priority": "high", "files": [ "docker-compose.staging.yml" ] }, { "id": "deploy-staging-script", "title": "Créer script de déploiement", "status": "pending", "priority": "high", "files": [ "scripts/deploy-staging.sh" ] }, { "id": "deploy-staging-tests", "title": "Tests de validation staging", "status": "pending", "priority": "high", "checklist": [ "Authentification complète", "Refresh token avec cookies httpOnly", "Upload de track par chunks", "CRUD playlists", "Navigation et routing", "Gestion d'erreurs", "Performance (p95 < 500ms)", "Sécurité (cookies, CORS, HTTPS)" ] }, { "id": "deploy-production-prep", "title": "Préparation déploiement production", "status": "pending", "priority": "high", "checklist": [ "Tous les tests passent", "Staging validé", "Documentation à jour", "Rollback plan préparé" ] } ] }, { "id": "monitoring", "title": "Monitoring : Surveiller les Performances Après Déploiement", "status": "pending", "tasks": [ { "id": "monitoring-backend-metrics", "title": "Implémenter métriques backend (Prometheus)", "status": "pending", "priority": "high", "files": [ "veza-backend-api/internal/middleware/metrics.go", "veza-backend-api/cmd/api/main.go" ] }, { "id": "monitoring-frontend-sentry", "title": "Configurer Sentry frontend", "status": "pending", "priority": "medium", "files": [ "apps/web/src/lib/sentry.ts" ] }, { "id": "monitoring-dashboards", "title": "Créer dashboards Grafana", "status": "pending", "priority": "high", "files": [ "grafana/dashboards/main.json", "grafana/dashboards/business.json" ] }, { "id": "monitoring-alerts", "title": "Configurer alertes", "status": "pending", "priority": "high", "files": [ "prometheus/alerts.yml" ], "alerts": [ "Taux d'erreur 5xx > 5%", "Temps de réponse p95 > 1s", "CPU > 80%", "Mémoire > 90%", "Service down" ] }, { "id": "monitoring-docker", "title": "Ajouter Prometheus/Grafana à Docker", "status": "pending", "priority": "high", "files": [ "docker-compose.prod.yml" ] } ] } ], "summary": { "total_tasks": 25, "completed": 0, "pending": 25, "in_progress": 0, "blocked": 0 }, "priorities": { "high": 15, "medium": 7, "low": 3 } }