feat: implementacao inicial do sistema LeadRadar
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
import os
|
||||
import streamlit as st
|
||||
|
||||
st.set_page_config(
|
||||
page_title="LeadRadar - Prospecção Ativa & Funil CRM",
|
||||
page_icon="📡",
|
||||
layout="wide",
|
||||
initial_sidebar_state="expanded"
|
||||
)
|
||||
|
||||
# Carregar CSS customizado Dark Tech Slate
|
||||
css_path = os.path.join(os.path.dirname(__file__), 'styles', 'style.css')
|
||||
if os.path.exists(css_path):
|
||||
with open(css_path, 'r', encoding='utf-8') as f:
|
||||
st.markdown(f"<style>{f.read()}</style>", unsafe_allow_html=True)
|
||||
|
||||
from api_client import APIClient
|
||||
from views.login_view import render_login_view
|
||||
from views.radar_busca import render_radar_busca_view
|
||||
from views.crm_kanban import render_crm_kanban_view
|
||||
from views.analytical_table import render_analytical_table_view
|
||||
from views.admin_users import render_admin_users_view
|
||||
from views.profile import render_profile_view
|
||||
|
||||
def main():
|
||||
api_client = APIClient()
|
||||
|
||||
# Verificar se o usuário está autenticado
|
||||
if not st.session_state.get('access_token'):
|
||||
render_login_view(api_client)
|
||||
return
|
||||
|
||||
user_info = st.session_state.get('user', {})
|
||||
is_admin = user_info.get('role') == 'admin'
|
||||
|
||||
# Barra Lateral (Sidebar Navigation)
|
||||
with st.sidebar:
|
||||
st.markdown(
|
||||
f"""
|
||||
<div style="text-align: center; margin-bottom: 20px;">
|
||||
<h2 style="color: #58A6FF; margin-bottom: 0;">📡 LeadRadar</h2>
|
||||
<small style="color: #8B949E;">Prospecção & Mini-CRM</small>
|
||||
</div>
|
||||
""", unsafe_allow_html=True
|
||||
)
|
||||
|
||||
st.markdown(
|
||||
f"""
|
||||
<div style="background-color: #161B22; border: 1px solid #30363D; border-radius: 8px; padding: 10px; margin-bottom: 20px;">
|
||||
<div style="font-weight: 600; color: #E6EDF3;">{user_info.get('nome', 'Usuário')}</div>
|
||||
<div style="font-size: 0.8rem; color: #8B949E;">{user_info.get('email', '')}</div>
|
||||
<span class="lead-badge" style="margin-top: 6px;">{user_info.get('role', 'user').upper()}</span>
|
||||
</div>
|
||||
""", unsafe_allow_html=True
|
||||
)
|
||||
|
||||
nav_options = [
|
||||
"📡 Radar de Busca",
|
||||
"📌 Funil CRM (Kanban)",
|
||||
"📊 Tabela Analítica"
|
||||
]
|
||||
|
||||
if is_admin:
|
||||
nav_options.append("🛡️ Usuários (Admin)")
|
||||
|
||||
nav_options.append("👤 Meu Perfil")
|
||||
|
||||
selected_page = st.radio("Navegação Principal", nav_options, index=0)
|
||||
|
||||
st.markdown("---")
|
||||
if st.button("🚪 Sair (Logout)", use_container_width=True):
|
||||
api_client.logout()
|
||||
st.rerun()
|
||||
|
||||
# Renderização da Página Selecionada
|
||||
if selected_page == "📡 Radar de Busca":
|
||||
render_radar_busca_view(api_client)
|
||||
elif selected_page == "📌 Funil CRM (Kanban)":
|
||||
render_crm_kanban_view(api_client)
|
||||
elif selected_page == "📊 Tabela Analítica":
|
||||
render_analytical_table_view(api_client)
|
||||
elif selected_page == "🛡️ Usuários (Admin)":
|
||||
render_admin_users_view(api_client)
|
||||
elif selected_page == "👤 Meu Perfil":
|
||||
render_profile_view(api_client)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user