docs: Actualización de contexto IA, Drones, Candados y nuevos nodos
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user