Saltar a contenido

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:

  1. El usuario solicita iniciar la entrevista.
  2. El sistema verifica que el usuario no tenga eMode asignado.
  3. El sistema verifica que el usuario no tenga ya una entrevista activa.
  4. El sistema obtiene los datos del usuario (nombre, email, organización) directamente desde la base de datos por seguridad.
  5. El sistema solicita a E-Talent la creación de una nueva entrevista con los datos del usuario.
  6. E-Talent genera la entrevista y devuelve un identificador externo y una URL de redirección.
  7. 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:

  1. El usuario solicita consultar su entrevista.
  2. El sistema busca la entrevista asociada al usuario autenticado.
  3. 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:

  1. El usuario solicita el reporte de su entrevista.
  2. El sistema verifica que la entrevista exista y esté en estado COMPLETED.
  3. 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):

  1. E-Talent notifica que el usuario inició la entrevista.
  2. El sistema localiza la entrevista mediante el external_interview_id.
  3. El sistema actualiza el estado de la entrevista a IN_PROGRESS.

Flujo principal (cambio a PROCESSING):

  1. E-Talent notifica que el usuario terminó la entrevista y la IA está procesando.
  2. El sistema localiza la entrevista mediante el external_interview_id.
  3. El sistema actualiza el estado de la entrevista a PROCESSING.

Flujo principal (cambio a COMPLETED con reporte):

  1. E-Talent notifica que la entrevista fue completada e incluye el reporte en el cuerpo de la petición.
  2. El sistema localiza la entrevista mediante el external_interview_id.
  3. El sistema actualiza el estado de la entrevista a COMPLETED.
  4. El sistema almacena el reporte completo.
  5. El sistema extrae el valor de eMode del reporte.
  6. El sistema actualiza el campo eMode del 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 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_url para 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 eMode es null (no tiene eMode asignado).
  • Un usuario no puede tener más de una entrevista activa simultáneamente (estado IN_PROGRESS o PROCESSING).
  • 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 COMPLETED a través del webhook.
  • El eMode puede tomar valores del 1 al 9 (string); null indica 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_id y utilizar un API Key interno.
  • El external_interview_id es 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.