import asyncio
import httpx
import json

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

ARCHETYPES = [
    {
        "archetypeKey": "VENTAS_TOTALES_MES",
        "sampleQuestion": "Cual es la venta total registrada en lo que va del mes?",
        "daxQuery": "EVALUATE ROW(\"Venta\", ROUND(CALCULATE([Venta], DATESMTD('Calendario'[Fecha])), 0), \"Dia Corte\", [Fecha actualizacion])",
        "category": "UB_PRESUPUESTO"
    },
    {
        "archetypeKey": "VENTAS_CRECIMIENTO_MOM",
        "sampleQuestion": "Cuanto hemos crecido en ventas respecto al mes anterior?",
        "daxQuery": "EVALUATE ROW(\"Crecimiento %\", DIVIDE([Venta] - CALCULATE([Venta], PREVIOUSMONTH('Calendario'[Fecha])), CALCULATE([Venta], PREVIOUSMONTH('Calendario'[Fecha]))))",
        "category": "UB_PRESUPUESTO"
    },
    {
        "archetypeKey": "AUTO_DAME_LA_CARTERA_VENCIDA",
        "sampleQuestion": "Cual es el valor total de la cartera vencida hoy?",
        "daxQuery": "EVALUATE ROW(\"Cartera Vencida\", [Total Vencido])",
        "category": "CARTERA"
    },
    {
        "archetypeKey": "AUTO_DAME_EL_RCC",
        "sampleQuestion": "Cual es el RCC (Rotacion de Cartera) actual?",
        "daxQuery": "EVALUATE ROW(\"RCC\", ROUND(DIVIDE([Cartera Total] * 365, [Ventas 365 Dias], 0), 0))",
        "category": "CARTERA"
    },
    {
        "archetypeKey": "AUTO_DAME_EL_PESO_DEL_ROL_SOBRE_UB",
        "sampleQuestion": "Cual es el peso del rol de pagos sobre la utilidad bruta?",
        "daxQuery": "EVALUATE ROW(\"Peso Rol sobre UB\", [%PesoEmpleado/UB-historico])",
        "category": "TALENTO_HUMANO"
    },
    {
        "archetypeKey": "VENTAS_UTILIDAD_BRUTA_MAQUINARIA",
        "sampleQuestion": "Cual es la utilidad bruta de la division Maquinaria?",
        "daxQuery": "EVALUATE ROW(\"UB Maquinaria\", CALCULATE([Utilidad Bruta], 'MarcaLineaCategoria'[Linea] IN {\"AGROFORESTAL\", \"AGROPECUARIA\", \"HOGAR Y JARDIN\", \"MOVILIDAD\", \"POST-VENTA\"}))",
        "category": "UB_PRESUPUESTO"
    },
    {
        "archetypeKey": "VENTAS_UTILIDAD_BRUTA_AGROQUIMICOS",
        "sampleQuestion": "Cual es la utilidad bruta de la division Agroquimicos (Agricola)?",
        "daxQuery": "EVALUATE ROW(\"UB Agroquimicos\", CALCULATE([Utilidad Bruta], 'MarcaLineaCategoria'[Linea] IN {\"NUTRICIONAL\", \"PLAGUICIDAS CONVENCIONALES\"}))",
        "category": "UB_PRESUPUESTO"
    }
]

async def register():
    async with httpx.AsyncClient() as client:
        for arc in ARCHETYPES:
            print(f"Registrando {arc['archetypeKey']}...")
            try:
                resp = await client.post(f"{BACKAGROTA_URL}/api/v1/precalc/configs", json={
                    "sampleQuestion": arc["sampleQuestion"],
                    "daxQuery": arc["daxQuery"],
                    "category": arc["category"]
                }, headers=HEADERS, timeout=15.0)
                
                if resp.status_code == 200:
                    print(f"OK: Registrado {arc['archetypeKey']}")
                else:
                    print(f"FAIL: {arc['archetypeKey']} ({resp.status_code})")
            except Exception as e:
                print(f"ERROR: {arc['archetypeKey']}: {e}")

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