Skip to main content
PsicoScan ML expone dos superficies de API con responsabilidades distintas. La ML API realiza la clasificación de riesgo mediante un modelo de Machine Learning o un motor de reglas heurísticas. Las Server Actions de Next.js manejan todas las operaciones de datos (estudiantes, citas, sesiones, canalizaciones) directamente desde componentes React.

POST /api/v1/clasificar

Envía las escalas SENA y recibe el tipo de caso y semáforo de riesgo del modelo ML.

GET /api/v1/modelo/info

Consulta la versión y métricas del modelo cargado, más los endpoints de salud.

Acciones: Tamizaje

Server actions para procesar y guardar tamizajes SENA con integración ML.

Acciones: Estudiantes y Usuarios

Server actions para registrar y administrar estudiantes y usuarios del sistema.

Acciones: Citas, Sesiones y Canalizaciones

Server actions para agenda de citas, registro de sesiones clínicas y canalizaciones.

ML API (FastAPI)

Servicio Python independiente que expone un modelo de clasificación Random Forest (con fallback a reglas heurísticas cuando el modelo no está entrenado). Se ejecuta como proceso separado del frontend Next.js.

URLs

EntornoURL base
Desarrollo localhttp://localhost:8000
ProducciónURL asignada por Railway o Render

Endpoints disponibles

MétodoRutaDescripción
GET/Estado general de la API
GET/healthHealth check para balanceadores de carga
POST/api/v1/clasificarClasificación ML de un tamizaje SENA
GET/api/v1/modelo/infoInformación del modelo cargado y sus métricas

CORS

El middleware CORS está configurado mediante la variable de entorno ALLOWED_ORIGINS. El valor por defecto es http://localhost:3000 (el frontend Next.js en desarrollo). Para múltiples orígenes en producción, separa las URLs con comas:
ALLOWED_ORIGINS=https://psicoscan.vercel.app,https://admin.psicoscan.mx

Autenticación

La ML API no implementa autenticación propia. La protección se delega a la configuración de CORS y al aislamiento de red (la API no debe estar expuesta públicamente; solo el servidor Next.js debe poder alcanzarla).

Iniciar la API

cd ml-api
pip install -r requirements.txt
uvicorn main:app --reload --port 8000

Next.js Server Actions

Funciones TypeScript marcadas con "use server" que se ejecutan exclusivamente en el servidor Node.js. No son endpoints REST — se invocan directamente desde componentes React (formularios con useActionState, o llamadas directas await).

Características

  • No exponen una URL pública. Next.js las serializa en el bundle del servidor.
  • Autenticación: Todas las acciones protegidas obtienen la sesión mediante getServerSession(authOptions) de NextAuth antes de ejecutar cualquier operación.
  • Invalidación de caché: Usan revalidatePath() para invalidar las rutas afectadas tras mutaciones.
  • Redirecciones: Algunas acciones llaman a redirect() tras completar con éxito.

Roles de acceso

RolDescripción
ADMINAcceso total, gestión de usuarios
PSICOLOGOCitas, sesiones, canalizaciones, expedientes
ORIENTADORCitas, sesiones, canalizaciones, expedientes
DIRECTORLectura del dashboard
ESTUDIANTESolo puede contestar su propio cuestionario

Variables de entorno requeridas

DATABASE_URL="postgresql://usuario:password@host:5432/psicoscan"
NEXTAUTH_SECRET="clave-secreta-larga"
NEXTAUTH_URL="http://localhost:3000"
ML_API_URL="http://localhost:8000"   # URL de la ML API

Build docs developers (and LLMs) love