Entrevista E-Talent
Descripción
La entrevista E-Talent es el mecanismo mediante el cual un usuario de E-Training que no tiene asignado un eMode (modo existencial) puede obtenerlo a través de una entrevista analizada por inteligencia artificial. La entrevista es procesada por el servicio externo E-Talent, que genera un reporte con el eMode resultante del usuario.
El campo eMode en el usuario puede tener un valor del 1 al 9 (string). Por defecto, el valor es null (sin eMode asignado). Una vez completada la entrevista y procesado el reporte, el sistema actualiza automáticamente el eMode del usuario con el valor determinado por E-Talent.
Ver 05-modos-existenciales.md para entender el concepto de eMode y su relevancia en la plataforma.
Estados de la entrevista
| Estado | Descripción |
|---|---|
PENDING |
El usuario no ha iniciado la entrevista. |
IN_PROGRESS |
El usuario inició la entrevista y está en proceso de responderla. |
PROCESSING |
El usuario terminó la entrevista; la IA está analizando y generando el reporte. |
COMPLETED |
El análisis finalizó. El reporte con el eMode está disponible. |
FAILED |
El usuario no completó la entrevista o el sistema no pudo procesar el reporte. |
Casos de uso
1. Iniciar entrevista (POST /interview/init)
Actor: Usuario autenticado sin eMode asignado.
Objetivo: Obtener la URL de la entrevista para completarla en E-Talent.
Precondiciones:
- El usuario debe estar autenticado (JWT válido).
- El usuario no debe tener un eMode asignado (campo eMode con valor null).
- El usuario no debe tener una entrevista activa (en estado IN_PROGRESS o PROCESSING).
Flujo principal:
- El usuario solicita iniciar la entrevista.
- El sistema verifica que el usuario no tenga eMode asignado.
- El sistema verifica que el usuario no tenga ya una entrevista activa.
- El sistema obtiene los datos del usuario (nombre, email, organización) directamente desde la base de datos por seguridad.
- El sistema solicita a E-Talent la creación de una nueva entrevista con los datos del usuario.
- E-Talent genera la entrevista y devuelve un identificador externo y una URL de redirección.
- El sistema almacena la entrevista localmente (con el identificador externo de E-Talent) y devuelve la URL de redirección al usuario.
Resultado esperado: El usuario recibe una URL (redirect_url) para acceder a la entrevista en E-Talent.
Flujos alternativos:
- Usuario ya tiene eMode: Error 409 (conflicto). No puede iniciar una nueva entrevista si ya tiene eMode asignado.
- Entrevista activa existente: Error 409 (conflicto). Solo puede tener una entrevista activa a la vez.
- No autenticado o token inválido: Error 401 (unauthorized).
2. Consultar entrevista propia (GET /self/interview)
Actor: Usuario autenticado.
Objetivo: Obtener el estado actual de su entrevista.
Precondiciones: - El usuario debe estar autenticado (JWT válido). - El usuario debe tener al menos una entrevista registrada en el sistema.
Flujo principal:
- El usuario solicita consultar su entrevista.
- El sistema busca la entrevista asociada al usuario autenticado.
- El sistema devuelve los datos de la entrevista con su estado actual.
Resultado esperado: El usuario recibe los datos de su entrevista, incluyendo el estado (IN_PROGRESS, PROCESSING o COMPLETED).
Flujos alternativos:
- No autenticado o token inválido: Error 401 (unauthorized).
- Entrevista no encontrada: Error 404 (not found).
3. Consultar reporte de entrevista (GET /self/interview/report)
Actor: Usuario autenticado cuya entrevista ha sido completada.
Objetivo: Obtener el reporte completo generado por E-Talent.
Precondiciones:
- El usuario debe estar autenticado (JWT válido).
- La entrevista del usuario debe estar en estado COMPLETED.
Flujo principal:
- El usuario solicita el reporte de su entrevista.
- El sistema verifica que la entrevista exista y esté en estado
COMPLETED. - El sistema devuelve el reporte completo de la entrevista.
Resultado esperado: El usuario recibe el reporte con los resultados del análisis: dimensiones afectiva, efectiva y perspectiva; recomendaciones; ajuste existencial; y el eMode asignado.
Flujos alternativos:
- No autenticado o token inválido: Error 401 (unauthorized).
- Entrevista no encontrada: Error 404 (not found).
- Entrevista no completada: Error 422 (unprocessable entity). El reporte no está disponible si la entrevista no está en estado
COMPLETED.
4. Webhook de actualización de entrevista (PUT /webhook/interview/{external_interview_id})
Actor: Servicio E-Talent (llamada automática del sistema externo).
Objetivo: Notificar a E-Training sobre cambios de estado en la entrevista y, cuando corresponda, entregar el reporte final con el eMode del usuario.
Precondiciones:
- La entrevista identificada por external_interview_id debe existir en el sistema.
Flujo principal (cambio a IN_PROGRESS):
- E-Talent notifica que el usuario inició la entrevista.
- El sistema localiza la entrevista mediante el
external_interview_id. - El sistema actualiza el estado de la entrevista a
IN_PROGRESS.
Flujo principal (cambio a PROCESSING):
- E-Talent notifica que el usuario terminó la entrevista y la IA está procesando.
- El sistema localiza la entrevista mediante el
external_interview_id. - El sistema actualiza el estado de la entrevista a
PROCESSING.
Flujo principal (cambio a COMPLETED con reporte):
- E-Talent notifica que la entrevista fue completada e incluye el reporte en el cuerpo de la petición.
- El sistema localiza la entrevista mediante el
external_interview_id. - El sistema actualiza el estado de la entrevista a
COMPLETED. - El sistema almacena el reporte completo.
- El sistema extrae el valor de
eModedel reporte. - El sistema actualiza el campo
eModedel usuario propietario de la entrevista con el valor obtenido.
Resultado esperado: El estado de la entrevista queda actualizado. Si el estado es COMPLETED, el eMode del usuario también queda actualizado automáticamente.
Flujos alternativos:
- Entrevista no encontrada: Error 404 (not found).
- Estado inválido o no reconocido: El sistema ignora la notificación o devuelve error 400 (bad request).
Flujo completo (diagrama)
Usuario sin eMode
│
▼
[Ve popup en el cliente]
│
▼
POST /interview/init (JWT)
│
▼
[Sistema solicita entrevista a E-Talent]
│
▼
[E-Talent devuelve redirect_url]
│
▼
[Usuario es redirigido a la URL de la entrevista]
│
▼
[Usuario responde la entrevista en E-Talent]
│
▼
PUT /webhook/interview/{id} → status: IN_PROGRESS
│
▼
[Usuario termina la entrevista]
│
▼
PUT /webhook/interview/{id} → status: PROCESSING
│
▼
[IA analiza la entrevista]
│
▼
PUT /webhook/interview/{id} → status: COMPLETED + report
│
▼
[Sistema actualiza eMode del usuario]
Datos de las peticiones
POST /interview/init
No requiere cuerpo. El sistema obtiene todos los datos del usuario desde la base de datos mediante el JWT.
GET /self/interview
No requiere cuerpo ni parámetros adicionales.
GET /self/interview/report
No requiere cuerpo ni parámetros adicionales.
PUT /webhook/interview/{external_interview_id}
Header 'x-internal-api-key' con el API Key interno.
| Campo | Obligatorio | Descripción |
|---|---|---|
external_interview_id |
Sí (path param) | Identificador de la entrevista en E-Talent |
status |
Sí | Estado nuevo: IN_PROGRESS, PROCESSING o COMPLETED |
report |
Solo si COMPLETED | Objeto con el reporte completo generado por la IA |
report.interviewId |
Solo si COMPLETED | Identificador de la entrevista en E-Talent |
report.emode |
Solo si COMPLETED | Valor del eMode (1–9) determinado por el análisis |
report.affective |
Solo si COMPLETED | Dimensión afectiva del análisis (miedos, confianza, constructor) |
report.effective |
Solo si COMPLETED | Dimensión efectiva del análisis (miedos, confianza, constructor) |
report.perspective |
Solo si COMPLETED | Dimensión de perspectiva del análisis |
report.recommendations |
Solo si COMPLETED | Lista de recomendaciones generadas por la IA |
report.existentialFit |
Solo si COMPLETED | Nivel de ajuste existencial (ej. GREEN) |
report.aiModel |
Solo si COMPLETED | Modelo de IA utilizado para el análisis |
Respuestas del sistema
POST /interview/init
- Éxito: Código 201 con los datos de la entrevista creada, incluyendo
redirect_urlpara redirigir al usuario. - Usuario ya tiene eMode: Código 409 (conflicto).
- Entrevista activa existente: Código 409 (conflicto).
- No autenticado: Código 401.
GET /self/interview
- Éxito: Código 200 con datos de la entrevista (id, estado, fechas).
- No encontrada: Código 404.
- No autenticado: Código 401.
GET /self/interview/report
- Éxito: Código 200 con el reporte completo.
- Entrevista no completada: Código 422.
- No encontrada: Código 404.
- No autenticado: Código 401.
PUT /webhook/interview/{external_interview_id}
- Éxito: Código 200.
- Entrevista no encontrada: Código 404.
- Datos inválidos: Código 400.
Condiciones de negocio (resumen)
- Un usuario solo puede iniciar una entrevista si su
eModeesnull(no tiene eMode asignado). - Un usuario no puede tener más de una entrevista activa simultáneamente (estado
IN_PROGRESSoPROCESSING). - Los datos del candidato (nombre, email, organización) se obtienen siempre desde la base de datos mediante el JWT; nunca se aceptan del cliente por seguridad.
- El eMode del usuario se actualiza automáticamente al recibir el reporte con estado
COMPLETEDa través del webhook. - El eMode puede tomar valores del 1 al 9 (string);
nullindica que el usuario aún no tiene eMode asignado. - El reporte solo está disponible para consulta cuando la entrevista está en estado
COMPLETED. - El webhook es un endpoint sin autenticación de usuario (es llamado por E-Talent), pero debe validar la existencia del
external_interview_idy utilizar un API Key interno. - El
external_interview_ides el identificador de la entrevista en E-Talent; se usa para correlacionar las notificaciones del webhook con la entrevista almacenada en E-Training.
Relación con otros módulos
- Modos existenciales (E-Modes): La entrevista es el mecanismo principal para determinar el eMode de un usuario que no lo tiene asignado. Ver 05-modos-existenciales.md.
- Usuarios: El eMode es un atributo del usuario; se actualiza al completarse la entrevista. Ver 07-usuarios.md.