from fastapi import APIRouter, HTTPException from fastapi.responses import FileResponse from app.services.video_service import VideoService from fastapi import APIRouter, HTTPException from app.services.quiz_generator import QuizGenerator from app.models.quiz import QuizRequest from app.core.config import settings import logging import uuid # Configurer le logging logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger(__name__) # Importons le quiz de test TEST_QUIZ = { "id": "test-quiz", "theme": "Intelligence Artificielle", "questions": [ { "question": "Qu'est-ce que le Machine Learning ?", "options": [ "Un type de robot", "Une branche de l'IA permettant aux machines d'apprendre", "Un langage de programmation", "Un système d'exploitation" ], "correct_answer": "Une branche de l'IA permettant aux machines d'apprendre" }, { "question": "Qu'est-ce qu'un réseau de neurones ?", "options": [ "Un système inspiré du cerveau humain", "Un réseau social", "Un câble ethernet", "Un type de processeur" ], "correct_answer": "Un système inspiré du cerveau humain" }, { "question": "Quel est le langage le plus utilisé en IA ?", "options": [ "Java", "C++", "Python", "JavaScript" ], "correct_answer": "Python" } ] } router = APIRouter() router = APIRouter() quiz_generator = QuizGenerator(provider=settings.AI_PROVIDER) @router.post("/quiz") async def create_quiz(request: QuizRequest): try: questions = await quiz_generator.generate_quiz( theme=request.theme, num_questions=request.num_questions ) # Créer un ID unique pour le quiz quiz_id = f"quiz_{uuid.uuid4().hex[:8]}" quiz_data = { "id": quiz_id, "theme": request.theme, "questions": [ { "question": q.question, "options": q.options, "correct_answer": q.correct_answer } for q in questions ] } return quiz_data except Exception as e: logger.error(f"Erreur dans create_quiz: {str(e)}") raise HTTPException(status_code=500, detail=str(e)) @router.post("/quiz/{quiz_id}/video") async def generate_video(quiz_id: str, quiz_data: dict): try: logger.info(f"Début de la génération de vidéo pour le quiz {quiz_id}") logger.debug(f"Données du quiz reçues: {quiz_data}") # Vérifier que les données nécessaires sont présentes if not quiz_data.get("questions") or quiz_data.get("styleConfig") is None: raise HTTPException(status_code=400, detail="Données du quiz ou style manquants") # Générer et streamer la vidéo return await VideoService.generate_quiz_video(quiz_data) except Exception as e: logger.error(f"Erreur lors de la génération de la vidéo: {str(e)}", exc_info=True) raise HTTPException(status_code=500, detail=str(e))