Project

General

Profile

Actions

Tareas #101

open

Falla script instalaciones_terceros

Added by Demo MiGestion365 Admin about 1 month ago. Updated about 1 month ago.

Status:
Resuelta
Priority:
Normal
Assignee:
-
Start date:
08/12/2026
Due date:
08/14/2026 (45 days late)
% Done:

100%

Estimated time:
6:00 h

Description

Se recibe el aviso a través de la plataforma n8n de que no se está ejecutando el script instalaciones_terceros


Files

clipboard-202608180858-t0gvp.png (38.8 KB) clipboard-202608180858-t0gvp.png Demo MiGestion365 Admin, 08/18/2026 11:59 AM
Resumen_analisis_instalaciones_terceros.docx (39.3 KB) Resumen_analisis_instalaciones_terceros.docx Demo MiGestion365 Admin, 08/18/2026 12:31 PM
Actions #1

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.

Actions #2

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”.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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

  1. 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).

  1. 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.

  1. 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.

Actions #4

Updated by Demo MiGestion365 Admin about 1 month ago

  • Status changed from En curso to Resuelta
Actions #5

Updated by Demo MiGestion365 Admin about 1 month ago

  • Due date changed from 08/21/2026 to 08/14/2026
Actions

Also available in: Atom PDF