import httpx
import asyncio

BACKAGROTA_URL = "http://127.0.0.1:8085/lhia_agrota"
HEADERS = {"LHIA-AGROTA": "admin123", "Content-Type": "application/json"}

KPI_CONFIGS = [
    {
        "archetypeKey": "CARTERA_SALDO_TOTAL_ACTUAL",
        "sampleQuestion": "Saldo total de cartera actual",
        "daxQuery": "EVALUATE ROW(\"Val\", [Cartera Total])",
        "category": "CARTERA"
    },
    {
        "archetypeKey": "AUTO_DAME_LA_CARTERA_VENCIDA",
        "sampleQuestion": "Cartera vencida total",
        "daxQuery": "EVALUATE ROW(\"Cartera Vencida\", [Total Vencido])",
        "category": "CARTERA"
    },
    {
        "archetypeKey": "VENTAS_TOTALES_MES",
        "sampleQuestion": "Ventas totales del mes actual (Abril 2026)",
        "daxQuery": "EVALUATE ROW(\"Val\", CALCULATE([Venta], 'Calendario'[Año] = 2026, 'Calendario'[Mes] = \"abril\"))",
        "category": "UB_PRESUPUESTO"
    },
    {
        "archetypeKey": "VENTAS_UTILIDAD_BRUTA_MES",
        "sampleQuestion": "Utilidad bruta del mes actual (Abril 2026)",
        "daxQuery": "EVALUATE ROW(\"UB\", CALCULATE([Utilidad Bruta], 'Calendario'[Año] = 2026, 'Calendario'[Mes] = \"abril\"))",
        "category": "UB_PRESUPUESTO"
    },
    {
        "archetypeKey": "VENTAS_MARGEN_ACTUAL",
        "sampleQuestion": "Margen de rentabilidad actual (Abril 2026)",
        "daxQuery": "EVALUATE ROW(\"Val\", CALCULATE([Margen%], 'Calendario'[Año] = 2026, 'Calendario'[Mes] = \"abril\"))",
        "category": "UB_PRESUPUESTO"
    },
    {
        "archetypeKey": "VENTAS_CRECIMIENTO_MOM",
        "sampleQuestion": "Crecimiento ventas vs mes anterior",
        "daxQuery": "EVALUATE ROW(\"Val\", DIVIDE(CALCULATE([Venta], 'Calendario'[Año] = 2026, 'Calendario'[Mes] = \"abril\") - CALCULATE([Venta], 'Calendario'[Año] = 2026, 'Calendario'[Mes] = \"marzo\"), CALCULATE([Venta], 'Calendario'[Año] = 2026, 'Calendario'[Mes] = \"marzo\")))",
        "category": "UB_PRESUPUESTO"
    },
    {
        "archetypeKey": "AUTO_DAME_EL_RCC",
        "sampleQuestion": "Días de rotación de cartera (RCC)",
        "daxQuery": "EVALUATE ROW(\"Val\", ROUND(DIVIDE([Cartera Total] * 365, [Ventas 365 Dias], 0), 0))",
        "category": "CARTERA"
    },
    {
        "archetypeKey": "AUTO_DAME_EL_PESO_DEL_ROL_SOBRE_UB",
        "sampleQuestion": "Peso del rol sobre UB (Marzo 2026)",
        "daxQuery": "EVALUATE ROW(\"Val\", CALCULATE([%PesoEmpleado/UB-historico], 'Calendario'[Año] = 2026, 'Calendario'[Mes] = \"MARZO\"))",
        "category": "TALENTO_HUMANO"
    },
    {
        "archetypeKey": "VENTAS_UTILIDAD_BRUTA_MAQUINARIA",
        "sampleQuestion": "UB Línea Maquinaria (Abril 2026)",
        "daxQuery": "EVALUATE ROW(\"Val\", CALCULATE([Utilidad Bruta], MarcaLineaCategoria[Linea] IN {\"AGROFORESTAL\", \"AGROPECUARIA\", \"HOGAR Y JARDIN\", \"MOVILIDAD\", \"POST-VENTA\"}, 'Calendario'[Año] = 2026, 'Calendario'[Mes] = \"abril\"))",
        "category": "UB_PRESUPUESTO"
    },
    {
        "archetypeKey": "VENTAS_UTILIDAD_BRUTA_AGROQUIMICOS",
        "sampleQuestion": "UB Línea Agroquímicos (Abril 2026)",
        "daxQuery": "EVALUATE ROW(\"Val\", CALCULATE([Utilidad Bruta], MarcaLineaCategoria[Linea] IN {\"NUTRICIONAL\", \"PLAGUICIDAS CONVENCIONALES\"}, 'Calendario'[Año] = 2026, 'Calendario'[Mes] = \"abril\"))",
        "category": "UB_PRESUPUESTO"
    }
]

async def register_archetypes():
    async with httpx.AsyncClient() as client:
        for config in KPI_CONFIGS:
            try:
                print(f"Registrando {config['archetypeKey']}...")
                resp = await client.post(f"{BACKAGROTA_URL}/api/v1/precalc/configs", json=config, headers=HEADERS)
                print(f"Respuesta: {resp.status_code} {resp.text}")
            except Exception as e:
                print(f"Error registrando {config['archetypeKey']}: {e}")
        
        try:
            print("\n🚀 Iniciando pre-cálculo manual...")
            resp_run = await client.post(f"{BACKAGROTA_URL}/api/v1/precalc/run-maintenance", headers=HEADERS)
            print(f"Respuesta Run: {resp_run.status_code} - {resp_run.text}")
        except Exception as e:
            print(f"Error iniciando pre-cálculo: {e}")

if __name__ == "__main__":
    asyncio.run(register_archetypes())
