Spaces:
Running on Zero
Running on Zero
| import gradio as gr | |
| import pandas as pd | |
| import numpy as np | |
| import spaces | |
| 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() |