File size: 3,694 Bytes
b3bcc0d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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]
    )