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)