62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
import streamlit as st
|
|
|
|
def render_metrics_summary(leads: list):
|
|
total = len(leads)
|
|
novos = sum(1 for l in leads if l.get('status_funil') == 'novo')
|
|
contatados = sum(1 for l in leads if l.get('status_funil') == 'contatado')
|
|
negociacao = sum(1 for l in leads if l.get('status_funil') == 'negociacao')
|
|
ganhos = sum(1 for l in leads if l.get('status_funil') == 'ganho')
|
|
taxa_conversao = (ganhos / total * 100) if total > 0 else 0.0
|
|
|
|
c1, c2, c3, c4, c5 = st.columns(5)
|
|
|
|
with c1:
|
|
st.markdown(
|
|
f"""
|
|
<div class="metric-card">
|
|
<div class="metric-title">Total de Leads</div>
|
|
<div class="metric-value">{total}</div>
|
|
</div>
|
|
""", unsafe_allow_html=True
|
|
)
|
|
|
|
with c2:
|
|
st.markdown(
|
|
f"""
|
|
<div class="metric-card">
|
|
<div class="metric-title">Leads Novos</div>
|
|
<div class="metric-value" style="color: #58A6FF;">{novos}</div>
|
|
</div>
|
|
""", unsafe_allow_html=True
|
|
)
|
|
|
|
with c3:
|
|
st.markdown(
|
|
f"""
|
|
<div class="metric-card">
|
|
<div class="metric-title">Em Negociação</div>
|
|
<div class="metric-value" style="color: #F0883E;">{negociacao}</div>
|
|
</div>
|
|
""", unsafe_allow_html=True
|
|
)
|
|
|
|
with c4:
|
|
st.markdown(
|
|
f"""
|
|
<div class="metric-card">
|
|
<div class="metric-title">Ganhos</div>
|
|
<div class="metric-value" style="color: #3FB950;">{ganhos}</div>
|
|
</div>
|
|
""", unsafe_allow_html=True
|
|
)
|
|
|
|
with c5:
|
|
st.markdown(
|
|
f"""
|
|
<div class="metric-card">
|
|
<div class="metric-title">Taxa Conversão</div>
|
|
<div class="metric-value" style="color: #A371F7;">{taxa_conversao:.1f}%</div>
|
|
</div>
|
|
""", unsafe_allow_html=True
|
|
)
|