veza/apps/web/PROCHAINES_ETAPES_TODOLIST.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
}
}