El tablero KPI de Administradores vive dentro del Hub de IA (/ai → /ai/contract-kpi) y requiere tener una empresa activa seleccionada. La configuración del titular ADC y sus suplentes se hace en el ContractHub (/admin/contracts), disponible para quien administra contratos. El aislamiento por contrato (rol acotado) solo aplica si tu rol tiene activada la bandera correspondiente. Consulta con tu administrador si no ves alguna de estas piezas.
Este módulo cubre dos cosas entrelazadas: el rol operativo Administrador de Contrato (ADC) — la persona responsable de uno o varios contratos o faenas — y el tablero KPI de Administradores, un scorecard que mide, contrato por contrato y persona por persona, el porcentaje de cierre de hallazgos. Juntos convierten una responsabilidad difusa («alguien tiene que cerrar las observaciones») en un indicador objetivo que puede sustentar el bono preventivo.
En terreno, cada faena o contrato tiene un administrador que responde por su gestión preventiva. Cuando una inspección levanta un hallazgo (una observacion de condición o conducta insegura), ese hallazgo debe cerrarse: asignar un plan de acción, verificarlo y darlo por resuelto. El KPI mide justamente eso: cuántos hallazgos se cerraron respecto del total, imputando el resultado a la persona titular del contrato.
El módulo resuelve problemas concretos de la línea de mando:
El tablero es de solo lectura: no crea ni modifica datos. Deriva todo de dos fuentes que ya existen en el sistema: los contratos (con su titular y suplentes) y las observaciones (hallazgos). Configurar bien los contratos y registrar bien las observaciones es lo que hace confiable al KPI.
En la faena «Mantención Planta Norte», una inspección levanta un hallazgo de «derrame de aceite sin contener». El hallazgo nace abierto y se le asigna un plan de acción. Semanas después, el prevencionista verifica que el derrame se limpió y cierra el hallazgo. Ese cierre —y no la apertura— es lo que sube el % de cierre del contrato y, por lo tanto, el bono de su titular. El módulo convierte ese ciclo en un número auditable.
Figura 15.1 — Tablero «KPI de Administradores»: encabezado con la bajada del bono y las tres tarjetas de resumen.
| Concepto | Descripción |
|---|---|
| Administrador de Contrato (ADC) | Usuario responsable de uno o varios contratos/faenas. En IAegis se materializa como titular de un contrato y, opcionalmente, como rol acotado por contrato. |
Titular (adminUserId) | La única persona a la que se le imputa el desempeño (bono) de un contrato. Solo puede haber un titular por contrato. |
Suplente (deputyAdminUserIds) | Respaldo operativo del titular. Puede administrar el contrato, pero no carga el KPI salvo que se le designe como titular. |
Rol acotado (isContractScoped) | Bandera del rol que restringe la vista y las acciones del usuario solo a los contratos que administra. |
Contratos administrados (administeredContractIds) | Lista denormalizada de los contratos de los que un usuario es titular o suplente. Es lo que decide «sus contratos». |
| Hallazgo | Una observacion (RecordType.OBSERVATION) de condición o conducta insegura. Es la unidad que mide el KPI. |
| Abierto / Cerrado | Estado del hallazgo. Abierto = Abierto, Plan de Acción Asignado o En Verificación. Cerrado = Cerrado. |
% de cierre (closeRate) | Hallazgos cerrados dividido por el total de hallazgos del contrato, en porcentaje. Base de todo el tablero. |
| Banda de desempeño | Clasificación del % de cierre: Óptimo, En gestión o Crítico. |
Es importante no confundir dos cosas que se refuerzan pero son independientes:
isContractScoped) significa que solo ves y operas tus contratos. Se configura en el rol (Sección 15.5.3).Un usuario puede ser titular sin rol acotado (carga el bono, pero ve toda la empresa) y puede tener rol acotado sin ser titular (solo ve sus contratos como suplente, pero no carga el bono). Ambos conceptos son ortogonales.
Al diseñar los roles de tu empresa, decide por separado quién responde (titular) y qué puede ver (rol acotado). Un gerente puede ser titular de una faena sin necesitar rol acotado; un supervisor con rol acotado puede ver solo sus contratos sin cargar bono. No asumas que van de la mano.
TITULARIDAD (adminUserId) ROL ACOTADO (isContractScoped)
| |
«a mí se me imputa «solo veo/opero
el bono del contrato» mis contratos»
| |
v v
aparece en el KPI aislamiento de datos
(ranking + scorecard) (pantalla + servidor)
Se combinan pero NO dependen uno del otro.
El módulo operacionaliza la responsabilidad del administrador de contrato y de la línea de mando sobre la gestión preventiva:
| Norma | Relación con el módulo |
|---|---|
| Ley 16.744 | Seguro de accidentes del trabajo y enfermedades profesionales. La gestión de riesgos es responsabilidad del empleador y su línea de mando; el KPI mide el cierre efectivo de hallazgos como evidencia de esa gestión. |
| DS 44/2024 | Nuevo reglamento de gestión preventiva (sucesor del DS 40). Obliga a identificar peligros y cerrar las medidas correctivas; el % de cierre de hallazgos es la métrica directa de ese ciclo. |
| DS 594 | Condiciones sanitarias y ambientales básicas. Muchos hallazgos/observaciones que alimentan el KPI derivan de inspecciones de condiciones bajo este decreto. |
| Ley 21.719 | Protección de datos personales. El tablero exhibe nombres, RUT y fotos de trabajadores y administradores. Su acceso debe restringirse a quien tenga necesidad legítima; el aislamiento ADC ayuda a minimizar la exposición. |
Bajo la Ley 21.719, el tablero KPI trata datos personales (nombre, RUT, fotografía). Restringe su uso a gerencia, prevención central y a los propios administradores respecto de sus contratos. El apartado «Reincidencia por trabajador» es especialmente sensible: úsalo solo con criterio y respaldo documental (ver 15.3.7).
Define quién puede abrir el tablero a nivel de organización (gerencia, prevención central) y documenta esa lista. Como la ruta no exige un permiso dedicado, la restricción es más un acuerdo de gobernanza que una barrera técnica.
Este módulo no emite documentos con firma electrónica (Ley 19.799) ni gestiona exámenes de salud (DS 109); esos encuadres se cubren en otros capítulos del manual y no aplican directamente aquí.
El acceso al módulo tiene dos capas: el tablero KPI (analítico, en el Hub de IA) y la configuración de titularidad (en el ContractHub). Además, el aislamiento ADC filtra lo que cada usuario ve dentro del tablero.
El tablero se abre desde el Hub de IA: entra a /ai, baja hasta la sección Herramientas de IA y haz clic en la tarjeta «KPI de Administradores». También puedes ir por URL directa a /ai/contract-kpi.
Figura 15.2 — Tarjeta «KPI de Administradores» dentro de la sección «Herramientas de IA» del Hub de IA.
Guarda la URL directa /ai/contract-kpi en los favoritos de tu navegador para saltarte la navegación del hub cuando revises el tablero a diario.
La ruta /ai/contract-kpi no exige un permiso dedicado: cualquier usuario autenticado con una empresa activa puede abrir el tablero. La única barrera efectiva sobre lo que se muestra es el aislamiento ADC (ver 15.2.3). Como el tablero es la base del bono y expone datos personales, restringe el acceso a nivel organizacional (gerencia/prevención) hasta que exista un permiso específico.
La asignación del titular y de los suplentes vive dentro del ContractHub (/admin/contracts), en el formulario de cada contrato (ContractForm). Para llegar: entra a /admin, abre Nodos Contractuales y usa «Abrir Nuevo Nodo» o el lápiz de edición de un contrato existente. El acceso a este hub se rige por los permisos habituales de administración de contratos (el Tenant Admin ve todo; el ADC acotado, solo lo suyo).
Si vas a configurar varios contratos de una sola vez, usa la búsqueda por nombre o RUT del selector de titular para asignar al mismo responsable en segundos, en vez de desplazarte por la lista completa.
El aislamiento se aplica antes de calcular el KPI y también al listar contratos. Depende de la bandera isContractScoped del rol del usuario:
| Perfil | Rol acotado | Qué ve en el KPI | Qué ve en ContractHub |
|---|---|---|---|
| SuperAdmin / Tenant Admin | No (global) | Todos los contratos de la empresa activa y todos los administradores | Todos los contratos |
| Rol global clásico (con permiso, sin bandera) | No | Todos los contratos (el aislamiento no lo afecta) | Todos los contratos |
ADC acotado (rol con isContractScoped) | Sí | Solo sus contratos y el ranking/scorecards derivados de ellos | Solo sus contratos administrados |
Cuando a un usuario se le asigna como titular (adminUserId) o dentro de los suplentes (deputyAdminUserIds) de un contrato, el sistema agrega ese contrato a su lista administeredContractIds (una relación inversa que se mantiene automáticamente). Esa lista es la que define su cartera. Un rol acotado sin contratos asignados no verá nada.
Antes de activar el rol acotado a un usuario, asígnale al menos un contrato como titular o suplente. De lo contrario, su primera experiencia será un tablero y un ContractHub vacíos, y reportará un falso error de permisos.
El aislamiento no es solo cosmético: se aplica también en el servidor. Si un usuario con rol acotado intenta operar un registro de un contrato que no esta en su cartera, la operación se rechaza con el mensaje: «No administras el contrato {contractId}.». Los registros de nivel empresa (sin contrato asignado) están permitidos para todos.
La bandera isContractScoped es un atributo del rol y, en la versión actual, se configura directamente en la base de datos: no existe todavia un interruptor en la pantalla de roles para activarla o desactivarla. Solicita a tu administrador de plataforma que la active en el rol que corresponda (ver Flujo 4 en la Sección 15.5.3).
| Ruta | Pantalla | Propósito |
|---|---|---|
/ai | Hub de IA | Contiene la tarjeta «KPI de Administradores». |
/ai/contract-kpi | Tablero KPI de Administradores | Scorecard de desempeño por contrato y por persona. |
/admin/contracts | ContractHub | Gestión de contratos; titular/suplentes en el ContractForm. |
/admin/users | Gestión de usuarios | Asignación del rol a la persona. |
/admin/roles | Catalogo de roles | Permisos del rol (la bandera isContractScoped no es editable aquí). |
El tablero /ai/contract-kpi es una única página de solo lectura compuesta por varios paneles. No tiene formularios, filtros de fecha, ni exportación: es puramente informativo. Su encabezado lo deja claro con la bajada literal: «El bono de los administradores depende de prevención — cierre de hallazgos por contrato.»
El tablero lee las 500 observaciones más recientes de la empresa activa (ordenadas por fecha, de la más nueva a la más antigua) y las cruza con los contratos (ya filtrados por el aislamiento ADC) y con los usuarios (para resolver titular y suplentes reales, con su avatar y nombre).
| Concepto | Definición exacta |
|---|---|
| Hallazgo | Una observacion (RecordType.OBSERVATION). No se cuentan otros registros (capacitaciones, EPP, etc.). |
| Abierto | Estado del hallazgo ∈ Abierto, Plan de Acción Asignado o En Verificación. |
| Cerrado | Estado del hallazgo = Cerrado. |
| % de cierre | cerrados ÷ total × 100 (redondeado). Si un contrato no tiene hallazgos (total = 0), su % de cierre es 100%. |
En empresas con volumen muy alto de observaciones, el KPI trabaja con las 500 más recientes. Las más antiguas quedan fuera del cálculo. Tenlo presente al interpretar el desempeño histórico de una faena con mucha actividad.
Una empresa de minería registra 1.200 observaciones en el año. El tablero solo considera las 500 más nuevas. Si un contrato tiene sus hallazgos abiertos justo en las observaciones más antiguas, podrían no entrar al cálculo y el contrato mostraría un % de cierre más optimista de lo real. Antes de premiar, verifica si la faena supera el límite de 500.
Todo el tablero colorea el % de cierre en tres bandas:
| Banda | Regla | Color | Etiqueta |
|---|---|---|---|
| Óptimo | % de cierre ≥ 90 | Verde esmeralda | «Óptimo» |
| En gestión | 70 ≤ % < 90 | Ámbar | «En gestión» |
| Crítico | % de cierre < 70 | Rojo | «Crítico» |
El tablero ordena casi todo peor primero: los contratos y administradores con menor % de cierre aparecen arriba, para que la gestión se enfoque donde más duele. La nota al pie del tablero lo resume: «% de cierre = hallazgos cerrados / total · ordenado por desempeño (peor primero).»
Un contrato con 8 cerrados de 10 totales (80%) cae en «En gestión» (ámbar). Está a 2 cierres de pasar a «Óptimo» (≥ 90), así que la decisión es empujar esos 2 hallazgos abiertos, no abrir inspecciones nuevas. Otro contrato con 6 de 10 (60%) cae en «Crítico» (rojo): ahí la decisión es distinta, revisar por qué se acumulan abiertos y poner plazo a cada uno.
Arriba del tablero, junto al título, hay tres tarjetas de resumen (KPI cards) que dan la foto global de la cartera:
| KPI card | Qué muestra | Cálculo | Color |
|---|---|---|---|
| Contratos evaluados | Cantidad de contratos considerados (ya filtrados por el aislamiento ADC). | Nº de contratos. | Neutro |
| Cierre promedio | Promedio del % de cierre de la cartera. | Promedio simple del % de cada contrato (0 si no hay contratos). | Según la banda del promedio |
| Hallazgos abiertos | Total de hallazgos abiertos en toda la cartera. | Suma de abiertos de todos los contratos. | Siempre rojo |
Figura 15.3 — Encabezado del tablero con el título y las tres KPI cards: Contratos evaluados, Cierre promedio y Hallazgos abiertos.
El «Cierre promedio» de esta tarjeta es un promedio simple (cada contrato pesa igual). El % del ranking por persona (15.3.5) es un promedio ponderado por número de hallazgos. Por eso no tienen por qué coincidir: un contrato con 1 hallazgo pesa lo mismo que uno con 50 en la tarjeta, pero no en el ranking.
La cartera tiene tres contratos con 100%, 80% y 45% de cierre. La tarjeta marca Cierre promedio 75% porque promedia simple: (100 + 80 + 45) ÷ 3 = 75. El número es útil para una foto global, pero esconde que hay un contrato Crítico (45%). No tomes la decisión del bono con la tarjeta: baja al ranking y a los scorecards.
La sección «Resumen visual» presenta tres gráficos que resumen la cartera de un vistazo. Cada uno lleva una leyenda compacta con puntos de color, nombre y valor.
Figura 15.4 — Tablero KPI con la sección «Resumen visual»: barras de % de cierre por contrato y los donuts de bandas y de hallazgos.
| Gráfico | Título | Tipo | Contenido |
|---|---|---|---|
| 1 | «% de cierre por contrato» | Barras verticales | Una barra por contrato, coloreada por banda, peor primero. Eje 0–100%; nombres truncados a 12 caracteres con «…». El tooltip muestra el nombre completo, el administrador y «Cierre: X%». |
| 2 | «Contratos por banda» | Donut | Número de contratos en Óptimo / En gestión / Crítico (solo se muestran las bandas con valor mayor a 0). |
| 3 | «Hallazgos: abiertos vs cerrados» | Donut | Suma de cerrados (verde) frente a abiertos (rojo) de toda la cartera. |
Cuando no hay datos, cada gráfico muestra un estado vacío con el texto «Sin contratos con hallazgos».
Pasa el cursor sobre una barra del gráfico «% de cierre por contrato» para ver el tooltip con el nombre completo del contrato, su administrador y el % exacto. Es la forma más rápida de saber quién responde por un contrato en rojo sin bajar a los scorecards.
Figura 15.5 — Tooltip del gráfico «% de cierre por contrato»: muestra el nombre completo, el administrador y el % de cierre exacto al pasar el cursor.
En el donut «Contratos por banda» ves 7 Óptimo, 4 En gestión y 3 Crítico. La decisión inmediata no es felicitar a los 7: el tablero ordena peor primero, así que esos 3 Crítico son tu plan de trabajo del mes. Baja al ranking, identifica a sus titulares y agenda la revisión con cada uno.
El corazón del tablero para el bono es el «Ranking de Administradores». Su bajada lo explica: «Desempeño imputado a la persona (titular real del contrato). % consolidado = promedio ponderado del cierre por nº de hallazgos de cada contrato (= cierres / hallazgos totales de su cartera). Peor primero.»
Figura 15.6 — «Ranking de Administradores»: cada fila muestra avatar, nombre, cartera y el % consolidado con su banda, ordenado peor primero.
Cada fila del ranking muestra:
El sistema agrupa los contratos por su titular (los sin titular caen en un grupo aparte). Para cada persona suma todos los cierres y todos los hallazgos de su cartera completa y calcula: consolidado = cierres totales ÷ hallazgos totales × 100. Es decir, un promedio ponderado por número de hallazgos: un contrato con muchos hallazgos pesa más que uno con pocos. Si la persona no tiene hallazgos en ninguno de sus contratos (total = 0), su consolidado es 100%. El ranking se ordena peor primero.
El bono se imputa a la persona titular, no a los suplentes. Un suplente puede administrar operativamente el contrato, pero su desempeño no aparece en el ranking mientras no sea titular de algún contrato.
Si designas a alguien como suplente esperando que cargue el bono, te llevarás una sorpresa: el ranking solo imputa al titular. Un suplente que asume la faena de facto no mueve el indicador hasta que lo promuevas a titular del contrato.
Marcela es titular de dos contratos. En «Faena A» tiene 50 hallazgos, 40 cerrados (80%); en «Faena B» tiene 10 hallazgos, 10 cerrados (100%). Su % consolidado no es el promedio 90%, sino el ponderado: (40 + 10) ÷ (50 + 10) = 50 ÷ 60 = 83%. La faena grande pesa más. Para subir rápido, el mayor impacto está en cerrar los 10 abiertos de «Faena A», no en «Faena B» (que ya está perfecta).
Antes de fijar el bono, cruza el % consolidado con el volumen de hallazgos. Un 100% con 2 hallazgos no equivale a un 100% con 80 hallazgos: el primero puede ser ausencia de inspección, no buena gestión.
Si no hay ningún administrador con contratos evaluables (y el tablero ya terminó de cargar), el ranking muestra el estado vacío: «Sin administradores con contratos evaluables.»
Figura 15.7 — Fila «Sin titular asignado» del ranking: borde punteado y triángulo de advertencia, sin avatar ni nombre.
Para detectar contratos sin titular de un vistazo, busca el borde punteado y el triángulo de advertencia en el ranking: es visualmente distinto de las filas con avatar. Es la señal más rápida de que hay responsabilidad sin asignar.
Debajo del ranking hay una grilla de scorecards, una tarjeta por contrato, también ordenadas peor primero. Cada scorecard detalla la situación de un contrato concreto.
Figura 15.8 — Scorecards por contrato: administrador titular, suplentes, % de cierre con barra de progreso y contadores de hallazgos.
| Elemento del scorecard | Qué muestra |
|---|---|
| Nombre del contrato | El nombre del contrato/nodo. |
| Administrador | Avatar + nombre del titular. Si el contrato no tiene titular, usa el nombre legado (gerenteAdmin) del informe SSOMA; si tampoco existe, el literal «[Sin administrador asignado]». |
| Suplentes | Si los hay: línea «Suplentes: nombre1, nombre2» (se descartan los que no se encuentran entre los usuarios). |
| % de cierre | Número grande coloreado por banda, con su etiqueta. |
| Barra de progreso | Barra coloreada al valor del % de cierre. |
| Contadores | N hallazgos · X abiertos (rojo) · Y cerrados (verde). |
Si no hay contratos con hallazgos (y el tablero ya cargó), la grilla muestra: «No hay contratos con hallazgos en el periodo.»
El scorecard es tu herramienta para justificar el ranking. Cuando un administrador aparece crítico en el ranking, revisa sus scorecards para ver que contrato específico arrastra su promedio y cuántos hallazgos abiertos tiene pendientes.
Cuando presentes el tablero en un comité, abre el scorecard del contrato que quieras discutir y lee los contadores en voz alta («20 hallazgos, 11 abiertos, 9 cerrados»). Un número con volumen es mucho más defendible que un simple «está en 45%».
El scorecard de «Faena Sur» muestra 20 hallazgos · 11 abiertos · 9 cerrados y su titular es Rodrigo. De los 11 abiertos, 6 están «En Verificación». La decisión: cerrar los 6 verificados esta semana (el contrato subiría a 75%) y agendar la visita a terreno de los 5 que siguen «Abierto». El scorecard te da el plan, no solo el diagnóstico.
Al final del tablero puede aparecer un panel condicional: «Reincidencia por trabajador». Solo se muestra si hay trabajadores con 2 o más hallazgos en los que figuran como involucrados. Su bajada es: «Trabajadores con ≥2 hallazgos involucrados — base de la carta de amonestación.»
Muestra hasta 8 trabajadores, ordenados por número de hallazgos (de mayor a menor). Cada fila lleva: la posición, el nombre, el RUT, un badge opcional «X alta» (si hay hallazgos de severidad alta) y el conteo total de hallazgos.
Figura 15.9 — Panel «Reincidencia por trabajador»: lista de trabajadores con 2 o más hallazgos y badge de severidad alta.
Este panel es un insumo para una eventual carta de amonestación, no una sanción automática. Trata datos personales sensibles (Ley 21.719): úsalo solo con respaldo documental de cada hallazgo y siguiendo el procedimiento disciplinario interno. No es un ranking punitivo de trabajadores.
El panel muestra a Juan Pérez (12.345.678-9) con 3 hallazgos, uno con badge «alta». Antes de derivar a una carta de amonestación, verifica que los 3 hallazgos estén documentados y que las medidas estén cerradas o en curso. El panel te dice a quién mirar, no qué sanción aplicar: la decisión la toma el procedimiento disciplinario interno.
Revisa «Reincidencia por trabajador» en sesión privada: contiene RUT y datos personales que no deben proyectarse en pantalla abierta ni compartirse por correo sin cifrar.
El tablero tiene muy pocas acciones porque es de solo lectura:
| Botón / Acción | Qué hace | Estado |
|---|---|---|
| «Volver» (flecha del header) | Regresa al Hub de IA (/ai). | Siempre habilitado. |
| Tooltips de gráficos | Muestran el detalle (nombre, administrador, %) al pasar el cursor sobre barras y donuts. | Solo al hacer hover, con datos presentes. |
Estados posibles del tablero:
| Estado | Qué se ve |
|---|---|
| Sin empresa activa | Toda la página se reemplaza por el mensaje «Empresa Requerida»: «El módulo KPI de Administradores de Contrato requiere que seleccione una empresa para continuar.», con los botones «Seleccionar Empresa» y «Volver». |
| Cargando | Mientras se cargan los datos, el ranking y los scorecards no muestran sus estados vacíos (esperan datos). Los gráficos pueden mostrar su estado vacío hasta que lleguen filas. |
| Vacío (sin hallazgos) | Gráficos: «Sin contratos con hallazgos». Ranking: «Sin administradores con contratos evaluables.». Grilla: «No hay contratos con hallazgos en el periodo.». |
| ADC sin contratos asignados | Tras el aislamiento quedan 0 contratos ⇒ se ven los mismos estados vacíos (tablero vacío). |
| Error | No hay panel de error dedicado: si la consulta falla, simplemente no llegan datos y se ven los estados vacíos. |
Figura 15.10 — Tablero KPI sin datos: los gráficos muestran «Sin contratos con hallazgos» y el ranking/grilla sus estados vacíos.
Figura 15.11 — Mensaje «Empresa Requerida» cuando no hay empresa activa, con los botones «Seleccionar Empresa» y «Volver».
Como el tablero no distingue «error» de «sin datos», si crees que debería haber información y ves todo vacío, verifica primero que tengas la empresa activa correcta seleccionada y que existan observaciones registradas en esa empresa.
El % de cierre de un contrato puede subir o bajar de un día a otro según se registren o cierren hallazgos. No compares el número de hoy con el de hace un mes sin mirar también el volumen: un 90% con 100 hallazgos no es lo mismo que un 90% con 5.
El tablero te da números, pero la gestión la decides tú. Esta sección documenta cada indicador con tres preguntas: qué mide, cómo se calcula y un ejemplo práctico con datos para saber qué decisión tomar. Úsala como hoja de referencia cuando presentes el tablero en un comité o prepares el corte del bono.
| Indicador | Qué mide | Cómo se calcula |
|---|---|---|
| Contratos evaluados | El tamaño de la cartera que el tablero está considerando (tras el aislamiento ADC). | Número de contratos con fila en el tablero. |
| Cierre promedio | El nivel de cierre global de la cartera, tratando a todos los contratos por igual. | Promedio simple del % de cierre de cada contrato: (Σ % de cada contrato) ÷ nº de contratos. |
| Hallazgos abiertos | La carga de trabajo pendiente de toda la cartera (lo que todavía no se cierra). | Suma de hallazgos abiertos de todos los contratos. |
| % de cierre por contrato | La salud de un contrato concreto. | cerrados ÷ total × 100, redondeado. |
| % consolidado del ranking | El desempeño de una persona (su cartera completa), base del bono. | Σ cerrados de su cartera ÷ Σ hallazgos de su cartera × 100 (promedio ponderado). |
| Reincidencia por trabajador | Cuántas veces el mismo trabajador figura en hallazgos (insumo disciplinario). | Conteo de hallazgos por trabajador involucrado, solo si ≥ 2. |
Contratos evaluados. La empresa ASPR tiene 12 contratos activos. El tablero de un Tenant Admin muestra Contratos evaluados: 12 y Hallazgos abiertos: 37. Eso significa que la cartera completa entra al cálculo y que hay 37 hallazgos sin cerrar repartidos entre las faenas. Si en cambio un ADC acotado ve Contratos evaluados: 3, es correcto: solo se están computando sus 3 faenas, no hay error de datos.
Cierre promedio. Tres contratos con % de cierre 100%, 80% y 45%. La tarjeta «Cierre promedio» marca 75% porque promedia simple: (100 + 80 + 45) ÷ 3 = 75. La decisión: usa este número solo como termómetro global; para actuar, baja a los scorecards, porque el 45% queda escondido en el promedio.
Hallazgos abiertos. La tarjeta muestra Hallazgos abiertos: 37. Si la semana pasada eran 20, la cartera se está desbalanceando: se abren más hallazgos de los que se cierran. La decisión es detener la apertura de inspecciones nuevas y priorizar el cierre de lo pendiente, o el promedio caerá en los próximos cortes.
% de cierre por contrato. El contrato «Mantención Planta Norte» registra 8 cerrados de 10 totales → 80%, banda «En gestión». La decisión: está a 2 cierres de «Óptimo» (≥ 90), así que el foco es cerrar esos 2 hallazgos abiertos en vez de levantar nuevas observaciones en esa faena.
% consolidado. Un titular con dos faenas, una de 50 hallazgos (40 cerrados) y otra de 10 hallazgos (10 cerrados), consolida 83%, no 90%. La decisión: el mayor impacto para subir está en los 10 abiertos de la faena grande, no en la chica que ya está perfecta.
Reincidencia. Un trabajador con 3 hallazgos (uno de severidad alta) aparece en el panel. La decisión no es sancionar en automático: primero verifica que los 3 hallazgos estén documentados y sus medidas en curso, y recién después evalúa el procedimiento disciplinario. El panel es un disparador, no una sentencia.
Mantén una hoja de cálculo paralela con los indicadores de cada corte mensual. Así puedes ver la tendencia (sube, baja o se estanca) que el tablero, al ser una foto instantánea, no muestra por sí solo.
Documenta por escrito el criterio del bono (bandas y umbrales) y compártelo con los administradores antes del primer corte. Un criterio publicado evita que el ranking se viva como un castigo y lo convierte en una meta.
Cierra el hallazgo solo cuando la medida correctiva esté verificada en terreno. El KPI premia cerrar, y un cierre apurado (sin verificar) distorsiona el indicador y desvirtúa el bono.
El ContractForm es donde se define quién responde por cada contrato. Se abre desde el ContractHub con «Abrir Nuevo Nodo» (título «Nuevo Nodo Contractual») o con el lápiz de edición (título «Editar Nodo Contractual»). Aquí se asigna el titular ADC y sus suplentes.
Figura 15.12 — ContractForm: la sección «Administración del Contrato» con el selector de titular y el bloque de suplentes.
| Campo | Tipo | Requerido | Validación / notas |
|---|---|---|---|
| Empresa | Select | Obligatorio | Empresas accesibles al usuario. Requerido para guardar («Debe seleccionar una empresa para el contrato.»). Bloqueado al editar: «La empresa no puede cambiarse después de crear el contrato». Si no hay empresas, la opción queda deshabilitada como «Crea una empresa primero». Default: empresa activa o la primera de la lista. |
| Nombre del Contrato | Texto | Obligatorio | Requerido («El nombre es requerido»); mínimo 2 caracteres («El nombre debe tener al menos 2 caracteres»); máximo 100 («El nombre no puede exceder 100 caracteres»); se sanitiza quitando etiquetas HTML. Placeholder «Ej: Proyecto Edificio Central»; contador «N/100 caracteres». |
| Meta de Cumplimiento (%) | Número | Obligatorio | Rango 0–100. No negativa («La meta no puede ser negativa»); no mayor a 100 («La meta no puede ser mayor a 100%»); el input recorta automáticamente a 0–100. Default: 90. |
Administrador de Contrato (titular) — adminUserId | Select buscable | Opcional | Usuarios vigentes de la empresa (no inactivos), en orden alfabético; cada opción muestra Nombre · RUT. Solo uno por contrato; al elegir titular se le quita de la lista de suplentes. Placeholder «Selecciona al responsable del contrato» / busqueda «Buscar por nombre o RUT...». Nota del campo: «Se guarda como responsable del cumplimiento (KPI/bono). Solo uno por contrato.». |
Suplentes (opcional) — deputyAdminUserIds | Multi-select por chips | Opcional | Usuarios vigentes excluyendo al titular y a los ya elegidos. No puede incluir al titular; al guardar se depuran ids vacíos o el propio titular. Default: vacío. Placeholder «Agregar suplente...» (o «No hay más usuarios disponibles» si se agotan). Nota: «Respaldo del titular. No asumen el KPI salvo que se les designe como titular.». |
Fecha de Inicio — startDate | Fecha | Opcional | Sin validación propia. |
Fecha de Fin — endDate | Fecha | Opcional | Si hay ambas fechas, el fin debe ser posterior al inicio («La fecha de fin debe ser posterior a la fecha de inicio»); el mínimo del selector es la fecha de inicio. |
El bloque del titular y los suplentes vive bajo un encabezado con ícono de escudo, «Administración del Contrato», con el subtitulo literal: «El titular es el único responsable del cumplimiento y del KPI; los suplentes son respaldo.»
Figura 15.13 — Tarjeta del titular seleccionado con avatar, nombre y el badge «Responsable del KPI», más el botón X para quitarlo.
Figura 15.14 — Suplentes agregados como chips con avatar y su botón X de «Quitar suplente».
Según las fechas, el formulario muestra banners automáticos (no editables):
Figura 15.15 — Banner rojo «Este contrato se marcara como VENCIDO» cuando la fecha de fin ya pasó.
Aunque el titular es opcional a nivel de formulario, en la práctica es indispensable para que el contrato aparezca correctamente en el KPI. Un contrato con hallazgos y sin titular cae al grupo «Sin titular asignado» del ranking. Asigna siempre un responsable real.
Asigna el titular al crear el contrato, no después. Así evitas que el contrato caiga a «Sin titular asignado» y ensucie el ranking mientras queda huérfano.
| Botón / Acción | Qué hace | Estados |
|---|---|---|
| «Crear Contrato» / «Guardar Cambios» (enviar) | Valida y guarda: denormaliza el titular en gerenteAdmin y reconcilia los administeredContractIds. Al terminar, cierra el formulario y refresca la lista. | Al guardar muestra spinner y «Guardando...»; queda deshabilitado. |
| «Cancelar» | Descarta los cambios y vuelve a la lista. | Deshabilitado mientras se guarda. |
| Flecha «Volver» (header) | Vuelve a la lista. | Deshabilitado mientras se guarda. |
| X «Quitar titular» | Limpia el titular (y limpia gerenteAdmin si el contrato ya tenia titular). | Deshabilitado mientras se guarda. |
| X «Quitar suplente» (por chip) | Quita ese usuario de la lista de suplentes. | Deshabilitado mientras se guarda. |
| Agregar suplente (select) | Anade un usuario a la lista de suplentes. | Deshabilitado mientras se guarda, se cargan usuarios o no hay opciones. |
| Estado | Qué se ve |
|---|---|
| Guardando | El botón de envio muestra spinner y «Guardando...»; todos los campos quedan deshabilitados. |
| Validación | Los errores aparecen en rojo bajo cada campo, con ícono de advertencia. Al enviar con errores se abre el Modal de error: «Por favor corrige los errores en el formulario.». |
| Sin usuarios | Cajas informativas descritas arriba («Cargando usuarios...» o la caja ámbar sin usuarios). |
| Éxito | El formulario se cierra y vuelve a la lista. No hay toast: el refresco de la lista es el feedback. |
Figura 15.16 — Validaciones del formulario: errores en rojo bajo cada campo con su mensaje textual.
Al guardar, el sistema ejecuta varias acciones automáticas dentro de una transacción, para mantener la coherencia entre el contrato, el KPI legado y las carteras de los usuarios:
gerenteAdmin (usado por el informe SSOMA y el KPI legado). Si se quita el titular, ese campo se limpia; si nunca hubo titular, no se toca un valor legado existente.administeredContractIds: agrega este contrato a la cartera de los usuarios que son titular o suplente, y lo quita de quienes dejaron de serlo.Asignar o quitar a alguien como titular o suplente cambia su cartera (administeredContractIds). Si esa persona tiene rol acotado, el cambio afecta de inmediato que contratos y registros puede ver y operar. Trata estas asignaciones como una acción de seguridad, no solo administrativa.
Quitar al titular de un contrato no es inocuo: además de sacarlo del ranking, limpia su nombre del informe SSOMA (gerenteAdmin) y lo quita de la cartera del contrato. Si esa persona tiene rol acotado, perderá el acceso al contrato al instante.
El ContractHub (/admin/contracts) es el listado de contratos, llamados «Nodos Contractuales» dentro de la «Estructura Orgánica de Faenas». Es relevante para este capítulo porque es donde se aplica el aislamiento ADC a la vista de contratos y desde donde se abre el ContractForm.
Figura 15.17 — ContractHub: lista de nodos contractuales con filtros por estado y las acciones por tarjeta.
La lista ofrece filtros con conteo: «Todos», «Activos», «Vencidos» e «Inactivos». El botón «Abrir Nuevo Nodo» lanza el ContractForm. Cada tarjeta de contrato tiene tres acciones: el lápiz (editar), la papelera / reactivar (baja o alta lógica) y «Gestionar Estructura Operativa».
Estados de la lista:
| Situación | Qué se ve |
|---|---|
| Sin contratos (según filtro) | «Sin Nodos Configurados» / «Sin Contratos Activos» / «Sin Contratos Vencidos» / «Sin Contratos Inactivos». |
| Error de carga | «Error al Cargar Contratos» con botón «Reintentar». |
| Sin tenant | «Error de Configuración»: «No se pudo determinar el tenant. Por favor, cierre sesión e intente nuevamente.». |
Si eres un ADC acotado, esta lista muestra solo tus contratos administrados. No es un error ni un problema de permisos: es el aislamiento funcionando. Un Tenant Admin, en cambio, ve todos los contratos de la empresa.
Usa el filtro «Vencidos» antes de cada corte de bono para detectar contratos que ya terminaron y que todavía figuran con titular. Un contrato vencido con hallazgos abiertos distorsiona el KPI si no lo desactivas.
Desde la tarjeta de un contrato puedes darlo de baja o de alta lógica. Ambas acciones piden confirmación en un modal.
Figura 15.18 — Modal «Desactivar Contrato»: pide escribir «DESACTIVAR» para habilitar el botón de confirmación.
Al desactivar un contrato, su id se quita de las carteras (administeredContractIds) de su titular y suplentes: dejan de administrarlo. Si esas personas tienen rol acotado, perderán la vista y las acciones sobre ese contrato de inmediato.
Para que un usuario quede acotado a sus contratos hacen falta tres cosas, en este orden:
/admin/roles, el rol del usuario debe tener isContractScoped en verdadero. Hoy esto se setea en la base de datos (no hay interruptor en la pantalla de roles); solicítalo a tu administrador de plataforma./admin/users, asigna ese rol acotado a la persona./admin/contracts, ponlo como titular o suplente de los contratos que administrará. Esto llena su cartera (administeredContractIds).Un rol acotado sin contratos en su cartera verá el ContractHub y el KPI completamente vacíos. Si un ADC reporta que «no ve nada», casi siempre es porque el paso 3 falta o su cartera quedó desincronizada (ver Solución de problemas).
Después de configurar a un ADC acotado, verifica con su propia cuenta (o pidiéndole una captura) que ve exactamente sus contratos y nada más. La verificación del aislamiento es parte de la configuración, no un paso opcional.
/admin/contracts (ContractHub)./ai y abre la tarjeta «KPI de Administradores»./admin/contracts, edita esos contratos y asigna un titular (Caso 1).isContractScoped activo (hoy se setea en la base de datos)./admin/users./admin/contracts.Recorre estos cuatro casos en orden cuando montes el módulo por primera vez: primero asigna titulares (Caso 1), luego revisa el tablero (Caso 2), luego caza los huérfanos (Caso 3) y recién al final acota roles (Caso 4). Así el KPI tiene datos confiables antes de restringir vistas.
Anota el resultado de cada corte de bono (ranking y bandas) en un archivo compartido con la gerencia. Un registro mensual te permite justificar subidas y bajadas de desempeño y evita discusiones de memoria.
Rodrigo llega el primer lunes del mes con una tarea clara: revisar sus KPI antes del comité de gerencia del viernes. Abre el Hub de IA (/ai), baja a Herramientas de IA y entra a la tarjeta «KPI de Administradores». En el encabezado lee las tres tarjetas: 12 contratos evaluados, Cierre promedio 71% y Hallazgos abiertos 37. El 71% promedio lo deja intranquilo: está justo al borde de la banda «En gestión».
Baja a «Resumen visual» y en el donut «Contratos por banda» cuenta 6 Óptimo, 3 En gestión y 3 Crítico. Pasa el cursor sobre la barra roja más baja del gráfico «% de cierre por contrato» y el tooltip le confirma: el contrato «Mantención Planta Norte» está en 45% y su administrador es… él mismo. Rodrigo es titular de esa faena.
En el «Ranking de Administradores» se ve en la posición 1, la peor: % consolidado 63%, banda «Crítico». Su subtexto dice «3 contrato(s) · 12 abiertos · 30 hallazgos». Entiende la matemática: no es que sus tres faenas estén mal, es que «Mantención Planta Norte» arrastra el promedio con 20 hallazgos y solo 9 cerrados (45%).
Baja a los scorecards y abre mentalmente el de «Mantención Planta Norte»: 20 hallazgos · 11 abiertos · 9 cerrados. De los 11 abiertos, 6 están «En Verificación» y 5 «Abierto». Rodrigo anota: mañana cierra los 6 que ya tienen la medida verificada y agenda la visita a terreno de los 5 restantes. Con eso, el contrato pasaría de 45% a 75% (15 cerrados de 20), y su consolidado subiría de 63% a cerca de 80%, sacándolo de «Crítico».
Antes de salir, revisa «Reincidencia por trabajador» y ve a dos de sus operarios con 2 hallazgos cada uno. Los anota para la charla de seguridad del jueves, no como sanción sino como refuerzo.
Cierra el tablero con una decisión concreta: un plan de cierre con fecha para cada hallazgo abierto de su cartera. El viernes, en el comité, muestra el mismo tablero y explica qué subió y por qué. Ese es el uso real del KPI: no juzgar, sino actuar.
Reproduce la revisión de Rodrigo en tu propia rutina: entra al tablero una vez al mes (o a la semana en faenas críticas), anota los tres números de las KPI cards y revisa el primer lugar del ranking. Con 10 minutos obtienes un plan de trabajo concreto.
| Problema | Causa probable | Solución |
|---|---|---|
| El tablero KPI aparece vacío | La empresa no tiene observaciones, o no hay empresa activa seleccionada. | Selecciona la empresa correcta; verifica que existan observaciones registradas. |
| Un administrador aparece con 100% «sin haber hecho nada» | No tiene hallazgos abiertos en su cartera (total = 0 ⇒ 100%). | Es correcto por diseño; cruza con el volumen de observaciones antes de premiar. |
| Veo «Sin titular asignado» en el ranking | Hay contratos con hallazgos sin titular (adminUserId). | Asigna titular en el ContractForm (Caso 1). |
| Un scorecard muestra «[Sin administrador asignado]» | El contrato no tiene titular ni gerenteAdmin legado. | Asigna un titular al contrato. |
| Un ADC dice que «no ve sus contratos» | Falta la bandera del rol, no está asignado a contratos, o su cartera está desincronizada. | Verifica: (a) rol con isContractScoped; (b) asignado como titular/suplente en al menos un contrato; (c) empresa activa. Si nada aparece, corre la reconciliación masiva de carteras. |
| Un ADC recibe «No administras el contrato {id}» | Intento operar un registro fuera de su cartera. | Correcto por diseño (enforcement del servidor); no es un error. |
| El cierre promedio no coincide con el ranking | La KPI card usa promedio simple; el ranking, promedio ponderado. | Es esperado; explica la diferencia (15.3.3). |
| El KPI no cuenta capacitaciones ni EPP | El tablero solo considera observaciones (hallazgos). | Por diseño; el KPI mide cierre de hallazgos, no otros registros. |
| Faltan observaciones antiguas en el cálculo | El tablero usa las 500 más recientes. | Límite conocido; considera el volumen de la faena al interpretar. |
| No puedo cambiar la empresa de un contrato | La empresa se bloquea tras crear el contrato. | Por diseño; crea un contrato nuevo en la empresa correcta si es necesario. |
gerenteAdmin) y las carteras (administeredContractIds) se recalculan solos.| Término | Significado |
|---|---|
| ADC | Administrador de Contrato: usuario responsable de uno o varios contratos/faenas. |
| Titular | Única persona a la que se imputa el desempeño (bono) de un contrato. |
| Suplente | Respaldo operativo del titular; no carga el KPI salvo que se le designe titular. |
| Rol acotado | Rol con la bandera isContractScoped: ve y opera solo sus contratos. |
| Cartera | Lista administeredContractIds: los contratos que un usuario administra. |
| Hallazgo | Observación (RecordType.OBSERVATION) de condición o conducta insegura. |
| % de cierre | Hallazgos cerrados ÷ total × 100. |
| Banda | Clasificación del % de cierre: Óptimo, En gestión o Crítico. |
| Denormalización | Copia de un dato (p. ej., el nombre del titular) en otro lugar para acelerar consultas. |
| Scoping / aislamiento | Filtro que limita la vista y acciones de un usuario a sus contratos, en pantalla y servidor. |