"""
date_context.py — Fuente única de verdad para el contexto de fecha dinámico.

Formato requerido por la tabla 'Calendario' de Power BI en los 3 tableros:
  Calendario[Mes]  → texto en MAYÚSCULAS en español  (ej: "MARZO")
  Calendario[Año]  → número entero                   (ej: 2026)

Este módulo NO importa nada del paquete `agent`, por lo que puede ser
importado desde cualquier lugar sin riesgo de importaciones circulares.
"""
import pytz
from datetime import datetime

# Mapa estático — evita depender del locale del SO (problema en Windows)
_MESES_ES = {
    1: "enero",    2: "febrero",  3: "marzo",    4: "abril",
    5: "mayo",     6: "junio",    7: "julio",    8: "agosto",
    9: "septiembre", 10: "octubre", 11: "noviembre", 12: "diciembre",
}

def get_current_date_context() -> dict:
    """
    Devuelve el contexto de fecha actual en el formato exacto de la tabla
    'Calendario' de Power BI, forzando zona horaria de Ecuador (GMT-5).

    Returns:
        {
            "mes_actual":    str → "marzo"   (Calendario[Mes], minúsculas)
            "año_actual":    int → 2026      (Calendario[Año], número)
            "mes_anterior":  str → "febrero" (último mes cerrado)
            "año_anterior":  int → 2026      (año del mes anterior)
            "mes_num":       int → 3         (número del mes actual)
        }
    """
    # Forzar zona horaria de Ecuador (GMT-5) para evitar saltos de mes prematuros por servidor en UTC
    tz = pytz.timezone("America/Guayaquil")
    hoy = datetime.now(tz)
    
    mes_num  = hoy.month
    año_num  = hoy.year

    mes_ant_num = 12 if mes_num == 1 else mes_num - 1
    año_ant_num = año_num - 1 if mes_num == 1 else año_num

    return {
        "mes_actual":   _MESES_ES[mes_num],
        "año_actual":   año_num,
        "mes_anterior": _MESES_ES[mes_ant_num],
        "año_anterior": año_ant_num,
        "mes_num":      mes_num,
    }
