62 lines
1.9 KiB
Ruby
62 lines
1.9 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# tools/adn/comando/inicio.rb — Subcomando para inicio de jornada laboral (DB-First)
|
|
# ==============================================================================
|
|
|
|
require 'date'
|
|
require 'time'
|
|
require_relative '../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
|