data-analysis-ai / flows /network_interface.py
qsocialnow's picture
-
b3bcc0d verified
Raw
History Blame Contribute Delete
3.69 kB
import gradio as gr
import pandas as pd
# from io import BytesIO
import tempfile
import os
from analysis.analysis import analizar_excel_redes_y_generar_pdf
def interfaz_redes():
with gr.Row():
with gr.Column(scale=3):
gr.Markdown("## 📝 Análisis de Contenido en Redes Sociales con Inteligencia Artificial")
with gr.Column(scale=1):
boton_excel = gr.Button("📥 Descargar Excel de Ejemplo")
# mensaje_excel = gr.Textbox(label="Estado de descarga", interactive=False)
# archivo_descarga = gr.File(label="Archivo de ejemplo")
archivo_descarga = gr.File(label="Archivo de ejemplo", interactive=False, visible=False)
def generar_excel_ejemplo():
# mensaje = "📄 Generando archivo de ejemplo..."
columnas = ["red_social", "fecha", "autor", "texto"]
df = pd.DataFrame(columns=columnas)
# Crear archivo con nombre específico en un directorio temporal
ruta_directorio = tempfile.gettempdir()
ruta_archivo = os.path.join(ruta_directorio, "Excel_para_analisis_redes.xlsx")
df.to_excel(ruta_archivo, index=False)
return gr.update(value=ruta_archivo, visible=True)
# return gr.update(value=ruta_archivo)
# return ruta_archivo
boton_excel.click(
fn=generar_excel_ejemplo,
inputs=[],
outputs=[archivo_descarga],
show_progress=True
)
archivo_input = gr.File(label="Sube el archivo Excel (.xlsx)")
informe = gr.Dropdown(
["¿Cuál fue HOY mi desempeño en las Redes?",
"Fortalezas y Debilidades en Redes Sociales"
],
label="Selecciona el informe",
value="¿Cuál fue HOY mi desempeño en las Redes?"
)
# 🔽 CAMPOS CONDICIONALES: ingreso del cliente (oculto por defecto)
nombre_cliente = gr.Textbox(label="Nombre del cliente", visible=True)
boton = gr.Button("Generar Análisis", interactive=True)
salida_pdf = gr.File(label="Resumen Global en WORD")
mensaje_error = gr.Textbox(label="Mensajes", interactive=False, visible=True)
progreso_texto = gr.Textbox(label="Progreso de los resúmenes", lines=25, interactive=False)
# 🔁 Mostrar u ocultar el campo del cliente según informe seleccionado
def mostrar_ocultar_cliente(informe_sel):
if informe_sel == "¿Cuál fue HOY mi desempeño en las Redes?":
return gr.update(visible=True)
else:
return gr.update(visible=False)
informe.change(
fn=mostrar_ocultar_cliente,
inputs=[informe],
outputs=[nombre_cliente]
)
# ⏳ Procesamiento
def wrapper_func(archivo_excel, informe, nombre_cliente):
salida = None
mensaje = ""
progreso = ""
yield gr.update(interactive=False), None, "⏳ Procesando archivo... por favor espera.", ""
# yield None, "⏳ Procesando archivo... por favor espera.", ""
for salida_, mensaje_, progreso_ in analizar_excel_redes_y_generar_pdf(archivo_excel, informe, nombre_cliente):
salida, mensaje, progreso = salida_, mensaje_, progreso_
yield gr.update(interactive=False), salida, mensaje, progreso
# yield salida, mensaje, progreso
yield gr.update(interactive=True), salida, mensaje, progreso
# yield salida, mensaje, progreso
boton.click(
fn=wrapper_func,
inputs=[archivo_input, informe, nombre_cliente],
outputs=[boton, salida_pdf, mensaje_error, progreso_texto]
# outputs=[salida_pdf, mensaje_error, progreso_texto]
)