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)