import streamlit as st import psycopg2 import os import plotly.graph_objects as go import pandas as pd from dotenv import load_dotenv from server.db.db import ( get_recipes_count, get_average_latency, get_daily_requests, get_total_cost, get_total_impact ) # Récupérer les données pour afficher sur le dashboard total_recipes = get_recipes_count() average_latency = get_average_latency() total_cost = get_total_cost() total_impact = get_total_impact() # Récupérer les données des requêtes par jour df_requests = get_daily_requests() # Affichage de la page dashboard avec Streamlit st.markdown( """
DASHBOARD
""", unsafe_allow_html=True, ) # Ajouter le CSS pour les cards avec animations et un design moderne st.markdown(""" """, unsafe_allow_html=True) # Créer des colonnes pour disposer les cards col1, col2, col3, col4 = st.columns(4) # Card 1 with col1: st.markdown(f"""
🍲 Nombre de recettes suggerées
{total_recipes}
""", unsafe_allow_html=True) # Card 2 with col2: st.markdown(f"""
⏱️ Latence moyenne
{average_latency}s
""", unsafe_allow_html=True) # Card 3 with col3: st.markdown(f"""
💸 Coût total des requêtes
${total_cost}
""", unsafe_allow_html=True) # Card 4 with col4: st.markdown(f"""
🌱 Impact écologique estimé
{total_impact} kg CO2
""", unsafe_allow_html=True) # Graphique des requêtes par jour st.markdown("### 📅 Nombre de requêtes par jour") fig = go.Figure(data=[go.Scatter(x=df_requests['date'], y=df_requests['nombre_requetes'], mode='lines+markers')]) fig.update_layout( xaxis_title="Date", yaxis_title="Nombre de requêtes", template="plotly_dark" ) st.plotly_chart(fig)