DrGabrielLopez's picture
Update app.py
2cd1572 verified
Raw
History Blame Contribute Delete
3.38 kB
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()