# frozen_string_literal: true # tools/adn/comando/cierre.rb — Subcomando para cierre de jornada laboral (DB-First) # ============================================================================== require 'date' require 'time' require_relative '../../bitacoras-db/core/bitacora_db' module ADN class SubcomandoCierre require_relative '../core/colores' def initialize(args, logger) @args = args @logger = logger @fecha = Date.today end def ejecutar if @args.empty? || !(@args.include?('jornada')) puts "#{Color::YELLOW}Uso: ./tools/adn/run cierre de jornada [presencial|remoto]#{Color::RESET}" return end modo = @args.include?('presencial') ? 'P' : 'R' tipo_str = modo == 'P' ? 'Presencial' : 'Remoto' hora_fin = Time.now.strftime('%H:%M') @logger.info("Iniciando cierre de jornada #{tipo_str} (Modo DB-First)") BitacorasDB::BitacoraDB.with_connection do |db| # 1. Buscar la bitácora bitacora = db.find_bitacora_by_fecha(@fecha) unless bitacora @logger.error("No existe bitácora en DB para hoy (#{@fecha}). ¿Iniciaste la jornada?") return end # 2. Obtener nodo srv-ns8 nodo = db.find_nodo_by_nombre('srv-ns8') # 3. Crear entrada de cierre db.create_entrada( inicio: hora_fin, fin: hora_fin, descripcion: "Cierre de jornada #{tipo_str.downcase}. Sincronización final y validación de backups.", estado: '✅', modo: modo, bitacora_id: bitacora['id'], nodo_id: nodo ? nodo['id'] : nil ) @logger.exito("Cierre de jornada registrado en Base de Datos.") end end end end