Tareas #101
open
Falla script instalaciones_terceros
100%
Description
Se recibe el aviso a través de la plataforma n8n de que no se está ejecutando el script instalaciones_terceros

Files
Updated by Demo MiGestion365 Admin about 1 month ago
Analizando el caso, me arroja una entrada duplicada en una de las tablas.
Conclusión final
La falla no estaba en load_instalaciones_terceros.py.
La causa raíz fue la presencia de dos registros para la misma instancia (AINST0068385) en la tabla sn.instance, proveniente de la carga de ServiceNow. Al realizar el join con sn.metric, se duplicaba la tarea WOT0093923, generando el error de clave única durante la inserción en aux.instalaciones_terceros.
Updated by Demo MiGestion365 Admin about 1 month ago
- Due date set to 08/21/2026
- Status changed from Nueva to En curso
- % Done changed from 0 to 100
- Estimated time set to 6:00 h
Resumen del análisis del error de duplicado
Proceso: load_instalaciones_terceros.py
Resultado
La falla quedó resuelta al eliminar de sn.instance la fila duplicada de la instancia AINST0068385 con estado “Listo para evaluar”.
- Problema inicial
El proceso fallaba durante la carga desde ServiceNow por una violación de la restricción única de la tabla destino:
duplicate key value violates unique constraint "uq_instalaciones_terceros"
Key (tarea_id, origen) = (WOT0093923, SN_MTTOCORRECTIVO) already exists
La restricción UNIQUE (tarea_id, origen) indicaba que el INSERT intentaba generar dos veces la misma clave lógica.
- Hipótesis evaluadas
El registro ya existía previamente en aux.instalaciones_terceros.
El SELECT utilizado por el INSERT devolvía varias filas para la misma tarea.
- Verificación de la tabla destino
Se verificó la existencia previa de WOT0093923 / SN_MTTOCORRECTIVO en aux.instalaciones_terceros.
Validación
Resultado
Registro previo en destino
0 registros
Conclusión: el problema no estaba en la tabla destino.
- Análisis del SELECT del INSERT
La consulta fuente del INSERT devolvió 2 filas para la tarea WOT0093923. Esto confirmó que la duplicación ocurría antes de la inserción.
- Investigación de los joins
Se revisaron individualmente las tablas involucradas para determinar cuál multiplicaba las filas.
Tabla
Validación
Resultado
cm.ci_sfat_mfat_bfat
TG01-FATC-8-109315
1 fila. Descartada.
sn.task
WOT0093923
1 fila. Descartada.
sn.metric
AINST0068385
1 fila directa.
- Aislamiento del punto de duplicación
Se contó el resultado del join entre sn.metric y sn.instance:
SELECT COUNT(*)
FROM sn.metric m
JOIN sn.instance i
ON i.number = m.instance
WHERE i.task_id = 'WOT0093923'
AND m.metric ILIKE '%CTO DE TERCEROS EN CUADRA%'
AND m.metric_definition = 'Si';
Resultado: 2 filas. La duplicación aparecía al unir sn.metric con sn.instance.
- Hallazgo definitivo
En sn.instance se encontraron dos registros para la misma instancia y tarea, diferenciados únicamente por el estado:
number
task_id
state
AINST0068385
WOT0093923
Listo para evaluar
AINST0068385
WOT0093923
Finalizado
- Causa raíz
La fila única de sn.metric coincidía con dos filas de sn.instance mediante i.number = m.instance. El join generaba dos resultados para WOT0093923 y ambos intentaban insertarse con la misma clave:
(WOT0093923, SN_MTTOCORRECTIVO)
(WOT0093923, SN_MTTOCORRECTIVO)
La segunda inserción violaba la restricción UNIQUE (tarea_id, origen).
- Corrección aplicada
Se eliminó de sn.instance el registro de la instancia AINST0068385 con estado “Listo para evaluar”:
DELETE FROM sn.instance
WHERE number = 'AINST0068385'
AND state = 'Listo para evaluar';
Después de eliminar esa fila, load_instalaciones_terceros.py ejecutó correctamente.
- Conclusión final
La falla no estaba en load_instalaciones_terceros.py. La causa fue la presencia de dos registros para AINST0068385 en sn.instance. Al realizar el join con sn.metric, la tarea WOT0093923 se duplicaba y causaba el error de clave única en aux.instalaciones_terceros.
Updated by Demo MiGestion365 Admin about 1 month ago
Updated by Demo MiGestion365 Admin about 1 month ago
- Status changed from En curso to Resuelta
Updated by Demo MiGestion365 Admin about 1 month ago
- Due date changed from 08/21/2026 to 08/14/2026