CAL-003
Autoapertura de ticket por evaluación baja
Garantizar que una evaluación con promedio inferior a 4 genere automáticamente un ticket de queja trazable, sin depender de que el socio lo solicite.
1. Objetivo
Establecer que toda evaluación de producto con promedio inferior a 4, en una escala de 1 a 7, abre automáticamente un ticket de queja trazable, preservando el ciclo de calidad sin requerir acción adicional del socio.
2. Alcance
Cubre la detección automática de evaluaciones bajas y la apertura del ticket resultante, desde que el socio envía la evaluación hasta que el ticket queda registrado y disponible para que Soporte lo gestione.
No cubre:
- la apertura manual de tickets → [[wiki/entities/dispensai/protocolos/CAL-002]];
- la investigación del ticket → [[wiki/entities/dispensai/protocolos/CAL-004]];
- la respuesta y el cierre → [[wiki/entities/dispensai/protocolos/CAL-005]];
- la derivación a no conformidad → CAL-006.
3. Definiciones
- Evaluación baja: evaluación de producto cuyo promedio de dimensiones calificadas es inferior a 4 en la escala 1-7.
- Autoapertura: apertura de ticket iniciada por el sistema, sin intervención explícita del socio.
- auto_generated: atributo del ticket que identifica su origen como automático, distinguiéndolo de los tickets presentados manualmente.
- Umbral: valor 4 (exclusive). Un promedio de 3,99 activa la autoapertura; 4,00 no lo hace.
4. Roles y responsables
| Rol | Responsabilidad |
|---|---|
| Socio / evaluador | Envía la evaluación del producto con sus dimensiones. |
| Sistema | Calcula el promedio, detecta si está bajo el umbral y abre el ticket. |
| Soporte | Recibe el ticket automático y lo gestiona desde CAL-004. |
| Calidad | Monitorea la tasa de tickets automáticos y su distribución por producto. |
5. Disparador de inicio
El socio envía una evaluación de producto post-dispensación. El disparador específico es el
resultado del cálculo de promedio en submitProductEvaluation: si averageRating < 4, se
activa la autoapertura, siempre que el socio no haya solicitado explícitamente abrir un ticket
en el mismo envío.
Si el socio marcó que desea abrir un ticket (createTicket = true), el flujo de autoapertura
se omite y el ticket se abre por CAL-002 con la evaluación como antecedente adjunto.
6. Requisitos previos
- El socio tiene una dispensación registrada y un producto evaluable.
- El formulario de evaluación está activo en el perfil del socio.
- La función
createComplaintFromEvaluationestá disponible en el módulo de conformidades. - El registro de eventos ISO está operativo para la tabla
evaluationsyservice_complaints.
7. Entradas
- Identificador de evaluación.
- Promedio calculado de las dimensiones evaluadas.
- Comentarios ingresados por el socio (opcionales).
- Identificador de dispensación y de producto vinculados a la evaluación.
8. Procedimiento paso a paso
- El socio completa y envía su evaluación del producto.
- El sistema calcula el promedio de las dimensiones calificadas (
averageRating). - Si
averageRating < 4y el socio no solicitó abrir ticket manualmente, el sistema emite el evento ISOevaluation_low_ratingsobre la tablaevaluations. - El sistema llama a
createComplaintFromEvaluationcon los datos de la evaluación, la dispensación y el producto. - La función crea un ticket en
service_complaintscon estadoopen,auto_generated: true, elcomplaint_numbergenerado, lapriorityderivada y referencias a la evaluación y la dispensación. - El sistema emite el evento ISO
evaluation_complaintsobre la tablaservice_complaints, vinculando el ticket a la evaluación de origen. - El ticket queda disponible para gestión en el panel de administración. Desde aquí continúa [[wiki/entities/dispensai/protocolos/CAL-004]].
9. Puntos de control
| # | Control | Momento |
|---|---|---|
| C1 | Promedio calculado correctamente sobre las dimensiones evaluadas | Paso 2 |
| C2 | Umbral < 4 verificado antes de actuar | Paso 3 |
| C3 | Sin duplicación: no abre ticket si el socio ya solicitó uno | Paso 3 |
| C4 | Evento ISO evaluation_low_rating emitido | Paso 3 |
| C5 | Ticket creado en service_complaints con auto_generated: true | Paso 5 |
| C6 | Evento ISO evaluation_complaint emitido con referencias cruzadas | Paso 6 |
10. Criterios de decisión
| Situación | Resultado |
|---|---|
averageRating < 4 y createTicket = false | Sistema abre el ticket automáticamente |
averageRating >= 4 | No se abre ticket automático |
createTicket = true, cualquier promedio | El socio abrió el ticket explícitamente; no actúa la autoapertura |
Fallo en createComplaintFromEvaluation | La evaluación se guarda; el ticket no se crea; el incidente queda sin gestión de calidad |
11. Excepciones y escalamiento
- Fallo en la creación del ticket. La acción captura el error y continúa sin propagarlo. La evaluación queda registrada pero el ticket no existe. Soporte no tiene visibilidad automática. Ver brecha 2 en §17.
- Evaluación con promedio exactamente 4. No activa la autoapertura. Si existe malestar que no queda capturado, el socio puede abrir un ticket manualmente por CAL-002.
- Producto sin stock o sin dispensación activa. El flujo de evaluación requiere una dispensación de origen; si no existe, la evaluación no procede.
12. Registros generados
- Fila en
evaluationscon todas las dimensiones calificadas y el promedio. - Evento ISO
evaluation_low_rating. - Ticket en
service_complaintsconauto_generated: true,complaint_number, referencias a evaluación, dispensación y producto. - Evento ISO
evaluation_complaint.
13. Indicadores
| Indicador | Fórmula | Meta | Fuente |
|---|---|---|---|
| Tasa de autoapertura | Tickets automáticos ÷ evaluaciones recibidas | Monitoreo de tendencia | evaluations + service_complaints |
| Evaluaciones bajas sobre total | Evaluaciones con avg < 4 ÷ total | Monitoreo; meta organizacional | evaluations |
| Tiempo apertura automática | Timestamp ticket − timestamp evaluación | < 1 minuto | service_complaints + evaluations |
| Tickets automáticos sin asignar | Conteo de auto_generated con assigned_to vacío | 0 en > 24 h | service_complaints |
14. Riesgos y controles
| Riesgo | Control | Tipo |
|---|---|---|
| Evaluación baja sin ticket | C2 y C5 — umbral y creación verificada | Preventivo |
| Ticket duplicado (manual + automático) | C3 — bloqueo si createTicket = true | Preventivo |
| Ticket creado sin notificación a Soporte | Ver brecha 2 en §17 | — |
| Evento ISO perdido silenciosamente | Ver brecha 1 en §17 | — |
15. Normativa y referencias
- ISO 9001:2015 §9.1, Seguimiento, medición, análisis y evaluación: la evaluación de la percepción del socio es un dato de desempeño que debe monitorearse. La norma emplea el término «cliente»; en esta organización esa figura es el socio, y no existe relación de cliente ni de compraventa.
- ISO 26000:2010 §6.7.6, Resolución de conflictos y reclamaciones: canal accesible y respuesta trazable para toda reclamación, incluyendo las detectadas proactivamente.
- [[wiki/entities/dispensai/protocolos/CAL-002]] — apertura de ticket o queja.
- [[wiki/entities/dispensai/protocolos/CAL-004]] — investigación del ticket generado.
16. Anexos y formularios vinculados
- Formulario de evaluación de producto (en perfil del socio).
- Catálogo de categorías y prioridades del ticket.
17. Implementación en el sistema
Este protocolo está implementado. El mecanismo central es submitProductEvaluation en
dispensai/app/actions/evaluations.ts, que llama a createComplaintFromEvaluation de
dispensai/app/actions/iso-conformities.ts cuando averageRating < 4.
| Elemento del protocolo | Dónde vive |
|---|---|
| Paso 2 — cálculo del promedio | submitProductEvaluation, cálculo de averageRating |
| Paso 3 — verificación del umbral | Condición if (averageRating < 4 && !createTicket) |
| Paso 3 — evento low_rating | logISOSystemEvent("evaluation_low_rating", "evaluations", ...) |
| Paso 5 — creación del ticket | createComplaintFromEvaluation(evaluationId, { userId, orderId, productId, averageRating, comments }) |
| Paso 6 — evento evaluation_complaint | logISOSystemEvent("evaluation_complaint", "service_complaints", ...) |
| Tabla de evaluaciones | db:evaluations, con RLS para SELECT propio |
| Tabla de tickets | db:service_complaints |
Brechas conocidas:
- Los eventos ISO de autoapertura son best-effort. Tanto
evaluation_low_ratingcomoevaluation_complaintse emiten dentro de bloquestry/catchque silencian el error. Siiso_system_eventsfalla, la evaluación y el ticket quedan registrados pero sin la cadena de trazabilidad que los vincula. La traza de auditoría es incompleta. - Fallo silencioso en la creación del ticket. Si
createComplaintFromEvaluationlanza un error, la acción lo captura y continúa sin propagar. No existe alerta ni registro de la creación fallida. Un incidente con evaluación baja puede quedar sin ticket y sin que nadie lo sepa. - La autoapertura no notifica a Soporte. El bloque de creación automática del ticket
(
evaluations.tslíneas 250–286) no contiene llamada a ninguna función de notificación. A diferencia de la apertura manual de CAL-002, el ticket generado automáticamente no desencadena alerta activa al equipo de Soporte. Un incidente de calidad puede pasar desapercibido hasta que alguien revise el listado de tickets.
Brecha observada en auditoría 2026-08-31
- Ruta no encontrada exacta:
/dashboard/perfil/tickets— puede ser variante (singular/plural, /admin vs /dashboard) o ruta renombrada. Acción correctora: actualizar el frontmatter con la ruta real que usa el sistema.
18. Historial de versiones
| Versión | Fecha | Cambio | Autor |
|---|---|---|---|
| 1.0 | 2026-08-28 | Versión inicial, derivada de la navegación del flujo de evaluaciones | Calidad |
| 1.1 | 2026-08-29 | Cierre de INFERIDO: brecha 3 confirmada — el bloque evaluations.ts:250-286 no contiene llamada de notificación; la ausencia es ahora una brecha confirmada, no una duda. Estado ascendido a Vigente. | Harness dispensai-protocolos |
| 1.0+audit-2026-08-31 | 2026-08-31 | Detectados gaps en auditoría: /dashboard/perfil/tickets. §17 actualizada para documentar la brecha con evidencia de código. Estado documental sin cambio. | Auditoría automática |
Documentos asociados
- Registro de evaluación
- Ticket generado automáticamente
Registros y evidencia
- Evaluación en tabla evaluations
- Evento ISO evaluation_low_rating
- Evento ISO evaluation_complaint
- Ticket en service_complaints con auto_generated true
Indicadores
- % de evaluaciones bajas que generan ticket
- Tiempo entre evaluación y apertura de ticket
- Tickets automáticos sobre total de tickets abiertos
Normativa y referencias
- ISO 9001:2015 §9.1
- ISO 26000:2010 6.7.6
Dónde deja rastro en el sistema
- Rutas
-
- /dashboard/perfil/tickets
- Tablas
-
- evaluations
- service_complaints
- Eventos
-
- evaluation_low_rating
- evaluation_complaint