# frozen_string_literal: true # tools/adn/comando/inicio.rb — Subcomando para inicio de jornada laboral (DB-First) # ============================================================================== require 'date' require 'time' require_relative '../../bitacoras-db/core/bitacora_db' module ADN class SubcomandoInicio 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 inicio de jornada [presencial|remoto]#{Color::RESET}" return end modo = @args.include?('presencial') ? 'P' : 'R' tipo_str = modo == 'P' ? 'Presencial' : 'Remoto' hora_ini = Time.now.strftime('%H:%M') @logger.info("Iniciando jornada #{tipo_str} (Modo DB-First)") BitacorasDB::BitacoraDB.with_connection do |db| # 1. Asegurar que existe la bitácora bitacora = db.find_bitacora_by_fecha(@fecha) unless bitacora @logger.info("Creando bitácora en DB para hoy...") bitacora = db.create_bitacora(fecha: @fecha) end # 2. Obtener nodo srv-ns8 nodo = db.find_nodo_by_nombre('srv-ns8') unless nodo @logger.warn("Nodo 'srv-ns8' no encontrado, usando nodo general...") # Podríamos crearlo o buscar uno por defecto end # 3. Crear entrada de inicio db.create_entrada( inicio: hora_ini, descripcion: "Inicio de jornada #{tipo_str.downcase}. Sincronización de contexto y revisión de tareas.", estado: '👁️', modo: modo, bitacora_id: bitacora['id'], nodo_id: nodo ? nodo['id'] : nil ) @logger.exito("Entrada de inicio creada en Base de Datos.") end end end end