Ir al contenido principal

Puntajes de las categorias (1) - [listCategory]

🧾 Descripción

Obtiene y procesa dinámicamente todas las categorías, preguntas y porcentajes de avance del Check List del Supervisor Nacional 2, basándose en su estructura de campos del DocType y los valores registrados en un documento específico.

Este servicio:

  1. Lee la estructura del DocType para identificar:

    • Secciones (categorías).

    • Preguntas tipo Check, Data, Attach Image.

  2. Recupera los valores reales del documento filtrado por name.

  3. Agrupa los campos por categoría.

  4. Calcula el avance (%) y puntaje por sección.

  5. Devuelve un resumen por categoría con:

    • Total de campos.

    • Campos completados.

    • Progreso (%).

    • Puntaje asignado.


🚀 Endpoint

POST /list-category


📥 Request Body

{ "name": "<id del documento Check List del Supervisor Nacional 2>" }

Parámetros

Campo Tipo Requerido Descripción
name string ID del documento cuyo checklist se evaluará

🔐 Seguridad

El servicio utiliza autenticación interna mediante: $this->general->ServiceErp()

Por lo tanto, requiere credenciales válidas para consumir el ERP.


🧠 Flujo del Servicio (Explicación Técnica Real)

1️⃣ Obtener estructura del DocType

Se consulta: GET resource/DocType/Check List del Supervisor Nacional 2

Esto trae todos los campos del formulario.
El servicio filtra únicamente:

  • Section Break → marca inicio de categoría

  • Check

  • Data

  • Attach Image

También omite los campos de puntaje global:

  • porcentaje_de_imagen_y_presentación

  • puntaje_de_imagen_y_presentación


2️⃣ Construcción dinámica de categorías y preguntas

Ejemplo de agrupación generada:

{ "Gestión Documentaria": [ "documentos_autoridades", "imagen_14", "comentario_14", ... ], "Presentación del almacén": [ "foto_area", "check_orden", "comentario_orden" ] }

3️⃣ Recuperar valores del documento

Se unen todos los fields encontrados y se hace:

GET resource/Check List del Supervisor Nacional 2 ?fields=[...fields] &filters=[["name","=",name]]

Esto trae los valores registrados del documento.


4️⃣ Agrupar los valores por categoría

El servicio arma una estructura:

{ "Gestión Documentaria": { "documentos_autoridades": 1, "imagen_14": "/files/img.png", "comentario_14": "OK" } }

5️⃣ Calcular puntajes y progreso

Para cada categoría:

  • Se cuenta el total de campos (Check, Data, Imagen)

  • Se cuentan los completados:

    • Check → valor 1

  • Se asigna un puntaje:

    • Cada check activo suma 1.82

  • Se calcula:


progreso = (complete_fields / total_fields_categoria) * 100

⚠ Nota: El servicio divide el total de campos entre 3 ($maxFields = $maxFields / 3) para compensar que cada pregunta tiene 3 tipos de fields (check, data, image).


📤 Response 200 – Ejemplo

{ "valor": true, "msn": "Lista De Categorias", "data": [ { "category": "Gestión Documentaria", "progreso": 67, "total_fields": 6, "complete_fields": 4, "section_puntaje": 7.28 }, { "category": "Áreas Críticas", "progreso": 50, "total_fields": 4, "complete_fields": 2, "section_puntaje": 3.64 } ] }


❗ Posibles Errores

1. No se puede obtener el DocType

{ "value": false, "msn": "Ocurrio un error al consular" }

2. Documento no encontrado

(El servicio devolverá valores vacíos por categoría)


🗃 Estructuras Utilizadas

DocType (GET)

Campos analizados:

{ "fieldname": "string", "label": "string", "fieldtype": "Section Break | Check | Data | Attach Image" }

🧩 Lógica en pseudocódigo

doctype = GET DocType fields categorias = {} foreach field in doctype.fields: if field is Section Break: categoria_actual = field.label if field is Check/Data/Image: categorias[categoria_actual].append(field.fieldname) # Obtener valores reales del documento values = GET Check List del Supervisor Nacional 2 where name = request.name # Agrupar valores por categoría foreach categoria in categorias: newQuestions[categoria] = tomar valores según fieldname # Calcular porcentaje y puntaje foreach categoria in newQuestions: total = count(fields) / 3 completos = fields con valor 1 puntaje = completos * 1.82 agregar resultado al response