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
| Entorno | URL base |
|---|---|
| Desarrollo local | http://localhost:8000 |
| Producción | URL asignada por Railway o Render |
Endpoints disponibles
| Método | Ruta | Descripción |
|---|---|---|
GET | / | Estado general de la API |
GET | /health | Health check para balanceadores de carga |
POST | /api/v1/clasificar | Clasificación ML de un tamizaje SENA |
GET | /api/v1/modelo/info | Información del modelo cargado y sus métricas |
CORS
El middleware CORS está configurado mediante la variable de entornoALLOWED_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:
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
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
| Rol | Descripción |
|---|---|
ADMIN | Acceso total, gestión de usuarios |
PSICOLOGO | Citas, sesiones, canalizaciones, expedientes |
ORIENTADOR | Citas, sesiones, canalizaciones, expedientes |
DIRECTOR | Lectura del dashboard |
ESTUDIANTE | Solo puede contestar su propio cuestionario |
