File size: 2,391 Bytes
1c6c8a6
fdc319c
1c6c8a6
 
fdc319c
1c6c8a6
fdc319c
 
 
1c6c8a6
 
 
 
fdc319c
 
 
 
 
1c6c8a6
fdc319c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
import pandas as pd

def predict(text):
    # Aqui pode integrar o modelo real de churn!
    texto = text.lower()
    sinais_risco = [
        "cancelamento", "migrando", "deixando", "insatisfeito", "não quero mais", "vou sair"
    ]
    if any(sinal in texto for sinal in sinais_risco):
        return "🚨 Classe prevista: FUGA (alto risco de churn)"
    return "✅ Classe prevista: Não fuga (baixo risco de churn)"

def analisar_arquivo(file):
    try:
        df = pd.read_excel(file, engine="openpyxl")
    except Exception as e:
        return f"Erro ao ler o arquivo: {e}", None

    # Checa coluna Resumo
    if "Resumo" not in df.columns:
        return "❌ Coluna 'Resumo' não encontrada.", None

    # Converte para minúsculo, processa cada linha
    df["Resumo"] = df["Resumo"].fillna("").astype(str).str.lower()
    predicoes = df["Resumo"].apply(predict)
    df["Predição"] = predicoes
    # Exibe até 50 linhas no preview
    preview = df[["Resumo", "Predição"]].head(50).to_markdown(index=False)
    # Salva resultado
    saida = "resultado_analise.xlsx"
    df.to_excel(saida, index=False)
    return preview, saida

with gr.Blocks(theme=gr.themes.Soft(primary_hue="blue", secondary_hue="gray")) as demo:
    gr.Markdown("""
    # 🏢 **ChurnSentinel API**
    Sentinela inteligente para detectar risco de fuga de cliente.<br>
    _Analise frases individualmente ou em lote via planilha Excel._
    """)
    with gr.Tab("🔎 Análise de Texto"):
        gr.Markdown("Cole um feedback de relacionamento ou NPS abaixo para analisar:")
        inp = gr.Textbox(label="Texto do relacionamento/NPS do cliente", lines=4, placeholder="Digite ou cole aqui...", elem_id="text-input")
        out = gr.Textbox(label="Predição", elem_id="pred-output")
        btn = gr.Button("Analisar", variant="primary")
        btn.click(predict, inp, out)
    with gr.Tab("📁 Análise em Arquivo"):
        gr.Markdown("Envie uma planilha `.xlsm` ou `.xlsx` contendo a coluna **Resumo**.")
        inp_file = gr.File(label="Arquivo Excel (.xlsm ou .xlsx)", file_types=[".xlsm", ".xlsx"])
        out_markdown = gr.Markdown()
        out_file = gr.File(label="Download da planilha analisada")
        btn2 = gr.Button("Analisar Arquivo", variant="primary")
        btn2.click(analisar_arquivo, inputs=inp_file, outputs=[out_markdown, out_file])

demo.launch()