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)