feat: implementacao inicial do sistema LeadRadar
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
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
|
||||
)
|
||||
Reference in New Issue
Block a user