docs: Actualización de contexto IA, Drones, Candados y nuevos nodos

This commit is contained in:
Ricardo Monla
2026-04-08 18:09:04 -03:00
parent cad987ce7f
commit fb8c8eefe5
139 changed files with 900 additions and 36345 deletions
+30 -4
View File
@@ -666,20 +666,45 @@ module BitacorasDB
where_clause = conditions.empty? ? '' : "WHERE #{conditions.join(' AND ')}"
# Para events, adaptar condiciones (solo las que aplican)
where_clause_events = if conditions.empty?
''
else
# Reemplazar referencias a e. por ev. y eliminar condiciones que no aplican a events
conditions_events = conditions.reject { |c| c.include?('bitacora_id') || c.include?('tema_id') || c.include?('ambito_id') }
"WHERE #{conditions_events.join(' AND ').gsub('e.', 'ev.')}"
end
# Unificar eventos de tabla events y entradas para mostrar todo junto
query = <<~SQL
SELECT e.id, e.inicio, e.fin, e.descripcion, e.estado, e.modo, e.es_ia,
e.tema_id, e.bitacora_id, e.nodo_id, e.ambito_id, e.created_at, e.updated_at,
SELECT ev.id, ev.inicio::text as inicio, ev.fin::text as fin, ev.descripcion, ev.estado,
'A' as modo, false as es_ia,
NULL as tema_id, NULL as bitacora_id, ev.nodo_id, NULL as ambito_id,
ev.created_at, ev.updated_at,
CURRENT_DATE as bitacora_fecha,
n.nombre as nodo_nombre,
NULL as tema_titulo,
na.nombre as ambito_nombre
FROM bitacoras.events ev
LEFT JOIN bitacoras.nodos n ON ev.nodo_id = n.id
LEFT JOIN bitacoras.ambitos na ON n.ambito_id = na.id
#{where_clause_events}
UNION ALL
SELECT e.id, e.inicio::text, e.fin::text, e.descripcion, e.estado, e.modo, e.es_ia,
e.tema_id, e.bitacora_id, e.nodo_id, e.ambito_id,
e.created_at, e.updated_at,
b.fecha as bitacora_fecha,
n.nombre as nodo_nombre,
t.titulo as tema_titulo,
a.nombre as ambito_nombre
COALESCE(a.nombre, na.nombre) as ambito_nombre
FROM #{SCHEMA}.#{TABLES[:entradas]} e
LEFT JOIN #{SCHEMA}.#{TABLES[:bitacoras]} b ON e.bitacora_id = b.id
LEFT JOIN #{SCHEMA}.#{TABLES[:nodos]} n ON e.nodo_id = n.id
LEFT JOIN #{SCHEMA}.#{TABLES[:temas]} t ON e.tema_id = t.id
LEFT JOIN #{SCHEMA}.ambitos a ON e.ambito_id = a.id
LEFT JOIN #{SCHEMA}.ambitos na ON n.ambito_id = na.id
#{where_clause}
ORDER BY COALESCE(b.fecha, CURRENT_DATE) DESC, e.inicio DESC
ORDER BY bitacora_fecha DESC, inicio DESC
LIMIT $#{param_index} OFFSET $#{param_index + 1}
SQL
@@ -1007,6 +1032,7 @@ module BitacorasDB
public
# Crear un evento en la tabla events (visible en Bitácora Web)
# El ámbito se obtiene automáticamente del nodo mediante JOIN en las consultas
def crear_evento(nodo_id:, descripcion:, estado: '⏳', inicio: nil, fin: nil, modo: 'A', metadata: nil)
inicio ||= Time.now.strftime('%H:%M')
query = <<~SQL