# En: api/main.py from fastapi import FastAPI from pydantic import BaseModel import time # --- Modelos de datos (Pydantic) para validar la entrada --- # Esto es una buena práctica que los jueces notarán class PredictPayload(BaseModel): edad: int sexo: str asistencia: float notas: float class CoachPayload(BaseModel): consulta: str riesgo: float # Inicializa tu app de FastAPI app = FastAPI(title="API del Tutor Virtual - MOCK") @app.get("/") def read_root(): return {"status": "API de MOCK funcionando"} # --- Endpoint /predict (FALSO) --- @app.post("/predict") async def mock_predict(payload: PredictPayload): """ Simula el endpoint /predict. Devuelve un score y drivers falsos basados en las notas. """ # Simula un pequeño delay, como si un modelo estuviera corriendo time.sleep(0.5) score_falso = 0.0 if payload.notas < 4.0: score_falso = 0.85 elif payload.notas < 5.5: score_falso = 0.45 else: score_falso = 0.15 return { "score": score_falso, "drivers": ["Promedio de Notas", "Asistencia (falso)"] } # --- Endpoint /coach (FALSO) --- @app.post("/coach") async def mock_coach(payload: CoachPayload): """ Simula el endpoint /coach (RAG). Devuelve un plan de acción falso. """ time.sleep(1) # Simula el delay de un LLM respuesta_falsa = f""" Basado en tu riesgo de **{payload.riesgo*100:.0f}%** y tu consulta ('{payload.consulta}'), este es un plan de acción de prueba: 1. **Enfocarse en las notas**: Te sugiero revisar las guías de estudio. 2. **Organización**: Es clave mantener un calendario. Recuerda que esto es solo una simulación del sistema RAG. """ return { "plan": respuesta_falsa, "citas": ["kb/guia_estudio_mock.md", "kb/gestion_tiempo_mock.md"] }