import gradio as gr import pandas as pd import numpy as np import spaces @spaces.GPU def run_model(file): if file is None: return "Por favor, sube un archivo", "Por favor, sube un archivo", "Por favor, sube un archivo" # Placeholder prediction logic max_credit_limit = 87500 mean_credit_limit = 42300 min_credit_limit = 15000 return ( f"${max_credit_limit:,.0f}", f"${mean_credit_limit:,.0f}", f"${min_credit_limit:,.0f}", ) def load_fake_data(): rng = np.random.default_rng(42) n = 10 customer_names = [f"Cliente {i+1}" for i in range(n)] tax_ids = [f"{rng.integers(10, 99)}.{rng.integers(100, 999)}.{rng.integers(100, 999)}/0001-{rng.integers(10, 99)}" for _ in range(n)] mcust_no = [f"MC{rng.integers(100000, 999999)}" for _ in range(n)] credit_limit = rng.integers(5000, 95000, n) max_credit_limit = credit_limit + rng.integers(1000, 15000, n) min_credit_limit = credit_limit - rng.integers(1000, 10000, n) min_credit_limit = np.clip(min_credit_limit, 0, None) return pd.DataFrame({ "customer_name": customer_names, "tax_id": tax_ids, "mcust_no": mcust_no, "credit_limit": credit_limit, "max_credit_limit": max_credit_limit, "min_credit_limit": min_credit_limit, }) with gr.Blocks(title="Modelo de Límite de Crédito - PowerBI (Proxy)") as demo: # ---------- Header ---------- gr.Markdown("# Modelo de Límite de Crédito - Panel PowerBI (Proxy)") gr.Markdown("Usa este panel para:") gr.Markdown("(1) Predecir límites de crédito a partir de la plantilla Excel de crédito,") gr.Markdown("(2) Visualizar las predicciones actuales de límite de crédito en la base de clientes") gr.Markdown("🚩 **El modelo de crédito actual está limitado a clientes nuevos pequeños (con líneas de crédito esperadas por debajo de 100K).**") gr.Markdown("⚠️ **Esto es solo una muestra de prueba. El panel real de PowerBI aún está por desarrollarse**") gr.Markdown("---") # ---------- Section 1: New prediction ---------- gr.Markdown("## Realizar una nueva predicción") gr.Markdown("Sube tu plantilla de Excel para analizar una empresa. ¡Esto ejecuta el modelo en tiempo real!") with gr.Row(): with gr.Column(): file_input = gr.File(label="Subir plantilla de Excel", file_types=[".xlsx", ".xls", ".xlsm"]) run_button = gr.Button("Ejecutar Modelo") with gr.Column(): gr.Markdown("### Resultados de la Predicción") max_out = gr.Textbox(label="Límite de Crédito Máximo", value="$XXX", interactive=False) mean_out = gr.Textbox(label="Límite de Crédito Promedio", value="$XXX", interactive=False) min_out = gr.Textbox(label="Límite de Crédito Mínimo", value="$XXX", interactive=False) run_button.click(fn=run_model, inputs=file_input, outputs=[max_out, mean_out, min_out]) gr.Markdown("---") # ---------- Section 2: Past predictions ---------- gr.Markdown("## Visualizar predicciones anteriores") gr.Markdown("Consulta las predicciones del modelo sobre la base de clientes actual. Usa los datos de Sharepoint de México, Brasil y MCA.") gr.Dataframe(value=load_fake_data(), interactive=False, wrap=True) if __name__ == "__main__": demo.launch()