[P2604] Fase 15: Optimización IA e integración de herramienta candados. Sincronización de bitácoras y actualización de planes de proyecto.

This commit is contained in:
Ricardo Monla
2026-03-19 09:52:29 -03:00
parent 183dbf6fb6
commit 5aa37e7221
138 changed files with 8777 additions and 464 deletions
+45 -7
View File
@@ -412,7 +412,12 @@ module BitacorasDB
[inicio_time, fin_time, descripcion, estado, modo, es_ia,
tema_id, bitacora_id, nodo_id]
)
result.first
entrada = result.first
# Ejecutar hooks después de la creación
ejecutar_hooks_entrada(entrada, :crear) if entrada
entrada
end
# Actualiza una entrada existente
@@ -450,7 +455,12 @@ module BitacorasDB
values << id
result = @connection.exec_params(query, values)
result.first&.to_h
entrada = result.first&.to_h
# Ejecutar hooks después de la actualización
ejecutar_hooks_entrada(entrada, :actualizar) if entrada
entrada
end
# Elimina una entrada existente
@@ -844,10 +854,38 @@ module BitacorasDB
end
end
# Convierte un resultado PG a Hash
def result_to_hash(result)
return {} if result.ntuples.zero?
result.first.to_h
end
# Convierte un resultado PG a Hash
def result_to_hash(result)
return {} if result.ntuples.zero?
result.first.to_h
end
# Ejecuta hooks personalizados después de operaciones de entrada
# Esto implementa el concepto de DB Hooks para migrar triggers.yml a capa de datos
#
# @param entrada [Hash] La entrada que fue creada o actualizada
# @param accion [Symbol] :crear o :actualizar
def ejecutar_hooks_entrada(entrada, accion)
# Hook para proyectos con etiqueta [P2604]
if entrada[:descripcion]&.match?(/\[P2604\]/)
proyecto_codigo = entrada[:descripcion].match(/\[P2604\.(\d+)\.(\d+)\.(\d+)\]/)&.to_s
if proyecto_codigo
# Normalizar formato: P2604.05.01 -> P2604
proyecto_base = proyecto_codigo.split('.')[0..1].join('.')
# Actualizar el manifiesto del proyecto en la base de datos
proyecto = find_proyecto_by_codigo(proyecto_base)
if proyecto
# Aquí podríamos actualizar algún campo del proyecto basado en la entrada
# Por ahora, solo registramos que se debería actualizar
@logger&.info("Hook ejecutado: Entrada #{accion} para proyecto #{proyecto_base} detectada")
# En una implementación completa, aquí actualizaríamos el manifiesto del proyecto
end
end
end
# Otros hooks podrían ir aquí...
# Por ejemplo, hooks para sincronización con nodos, etc.
end
end
end