-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
44 lines (36 loc) · 1.33 KB
/
Copy pathapp.py
File metadata and controls
44 lines (36 loc) · 1.33 KB
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
# app.py - Operations Dashboard
import streamlit as st
import pandas as pd
import plotly.express as px
from datetime import datetime, timedelta
import random
st.set_page_config(
page_title="Operations Dashboard",
page_icon="📊",
layout="wide"
)
st.title("📊 Painel Operacional")
st.caption("Visão consolidada de leads, atendimento e cobranças")
# --- DADOS DE EXEMPLO ---
dates = [datetime.today() - timedelta(days=i) for i in range(30)]
leads = [random.randint(3, 15) for _ in dates]
conversions = [random.randint(1, lead) for lead in leads]
df = pd.DataFrame({
'data': dates,
'leads': leads,
'conversoes': conversions
})
# --- KPIs ---
col1, col2, col3, col4 = st.columns(4)
col1.metric("🔵 Leads (30d)", sum(leads))
col2.metric("🟢 Conversões", sum(conversions))
col3.metric("📊 Taxa Conversão", f"{round(sum(conversions)/sum(leads)*100, 1)}%")
col4.metric("🟡 Cobranças Pendentes", "R$ 4.200")
st.divider()
# --- GRÁFICO ---
fig = px.line(df, x='data', y=['leads', 'conversoes'],
title='Leads vs Conversões (30 dias)',
labels={'value': 'Quantidade', 'data': 'Data'},
color_discrete_map={'leads': '#4f98a3', 'conversoes': '#6daa45'})
st.plotly_chart(fig, use_container_width=True)
st.info("⚠️ Conecte sua fonte de dados real no arquivo data/connection.py")