|
|
|
|
|
from fastapi import FastAPI
|
|
|
from pydantic import BaseModel
|
|
|
import time
|
|
|
|
|
|
|
|
|
|
|
|
class PredictPayload(BaseModel):
|
|
|
edad: int
|
|
|
sexo: str
|
|
|
asistencia: float
|
|
|
notas: float
|
|
|
|
|
|
class CoachPayload(BaseModel):
|
|
|
consulta: str
|
|
|
riesgo: float
|
|
|
|
|
|
|
|
|
app = FastAPI(title="API del Tutor Virtual - MOCK")
|
|
|
|
|
|
@app.get("/")
|
|
|
def read_root():
|
|
|
return {"status": "API de MOCK funcionando"}
|
|
|
|
|
|
|
|
|
@app.post("/predict")
|
|
|
async def mock_predict(payload: PredictPayload):
|
|
|
"""
|
|
|
Simula el endpoint /predict.
|
|
|
Devuelve un score y drivers falsos basados en las notas.
|
|
|
"""
|
|
|
|
|
|
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)"]
|
|
|
}
|
|
|
|
|
|
|
|
|
@app.post("/coach")
|
|
|
async def mock_coach(payload: CoachPayload):
|
|
|
"""
|
|
|
Simula el endpoint /coach (RAG).
|
|
|
Devuelve un plan de acci贸n falso.
|
|
|
"""
|
|
|
time.sleep(1)
|
|
|
|
|
|
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"]
|
|
|
} |