Ir al contenido principal

Evaluaciones (1) - [serviceForNotesPerEmployee_old]

🧾 Descripción

Servicio que consulta y consolida los resultados de evaluaciones (exámenes) rendidos por un empleado durante un mes específico.

El servicio obtiene:

  • Datos del empleado por su email corporativo.

  • Los exámenes asignados según su puesto (Designation).

  • Los resultados obtenidos en el mes solicitado (Quiz Activity).

  • Devuelve un resumen con:

    • Lista de todos los exámenes esperados

    • Puntajes obtenidos

    • Estado (Pass / No Pass / No rindió)

Esta es una versión antigua del servicio, mantenida por compatibilidad.


🚀 Endpoint

POST /service-for-notes-employee-old


📥 Request Body

{ "email": "usuario@empresa.com", "date": "2024-05-01" }

Parámetros

Campo Tipo Obligatorio Descripción
email string ✔️ Email corporativo del empleado (user_id).
date string (YYYY-MM-DD) ✔️ Fecha usada para identificar el mes a consultar.

🔐 Seguridad

Utiliza autenticación interna mediante apiService() (token ERP interno).

No requiere autenticación del cliente (uso interno backend → ERP).


🧠 Flujo del Servicio (Explicación Real)

1) Validación inicial

  • El email es obligatorio.
    Si falta, responde:

{ "valor": false, "msn": "Email necesario para la busqueda" }

2) Obtener empleado por email

Consulta al ERP:

GET Employee ?limit=None &fields=["name","passport_number","designation","fecha_de_ingreso_real"] &filters=[["user_id","=", "<email>"]]

Validaciones:

  • Si no devuelve datos → error.

  • Si el empleado no tiene designation → error.


3) Obtener información del puesto (Designation)


GET Designation/<designation>
  • Trae la lista de exámenes asignados al puesto.

  • Transformación especial si el puesto contiene espacios (caso HR).


4) Rango de fechas del mes

A partir del parámetro date:

  • Primer día del mes

  • Último día del mes

Ejemplo: 2024-05-01 to 2024-05-31


5) Obtener evaluaciones del mes

Consulta al ERP:

GET Quiz Activity ?limit=None &fields=["dni","quiz","status","score","activity_date"] &filters=[ ["dni","=", "<employee.passport_number>"], ["creation","Between", ["<firstDay>", "<lastDay>"]] ] &order_by=activity_date asc

6) Construcción del resultado

  • Se genera una lista con todos los exámenes del puesto, con estado inicial:


    puntaje = "-" estado = "No rindió"
  • Se recorren las evaluaciones rendidas:

    • Se conserva la mejor nota por examen.

    • Se asigna estado:

      • Pass → "Pass"

      • Fail → "No Pass"


📤 Response 200 – Ejemplo

{ "valor": true, "msn": "Resultados de los examenes generado correctamente", "data": { "EXAMEN 1": { "examen": "EXAMEN 1", "puntaje": "85", "estado": "Pass" }, "EXAMEN 2": { "examen": "EXAMEN 2", "puntaje": "-", "estado": "No rindió" } }, "list_test": [ "EXAMEN 1", "EXAMEN 2" ] }

❗ Posibles Errores

1. Email vacío

{ "valor": false, "msn": "Email necesario para la busqueda" }

2. Error buscando empleado

{ "valor": false, "msn": "Error al buscar empleado" }

3. Sin puesto asignado

{ "valor": false, "msn": "El empleado no tiene un puesto asociado" }

4. Error obteniendo exámenes

{ "valor": false, "msn": "Error traer los examenes" }

5. Error obteniendo resultados

{ "valor": false, "msn": "Error traer los resultados de los examenes" }

6. Error interno del servidor

{ "valor": false, "msn": "Error al generar Servicio" }

📚 Schemas

Employee

{ "name": "string", "passport_number": "string", "designation": "string", "fecha_de_ingreso_real": "date" }

Designation

{ "exa": [ { "examen": "string" } ] }

Quiz Activity

{ "dni": "string", "quiz": "string", "status": "Pass|Fail", "score": "number", "activity_date": "date" }

🗃 Lógica en pseudo-código

email = request.email date = request.date if email is empty: return error employee = GET Employee by user_id=email if empty: return error designation = employee.designation if empty: return error exams = GET Designation/exams range = firstDayOfMonth(date), lastDayOfMonth(date) quizResults = GET QuizActivity where dni = employee.passport_number and creation between range prepare response: for each exam: set puntaje = "-" set estado = "No rindió" for each quizResult: keep best score set estado based on Pass/Fail return json