289 lines
8.2 KiB
JSON
289 lines
8.2 KiB
JSON
{
|
|
"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
|
|
}
|
|
}
|
|
|