Merge branch 'develop' into product

mo91.py Vers5"
This commit is contained in:
2025-07-08 14:27:41 +02:00

View File

@@ -16,6 +16,9 @@ load_dotenv()
st.set_page_config(page_title="Domo91 - Surveillance", layout="wide") st.set_page_config(page_title="Domo91 - Surveillance", layout="wide")
st.title("📊 Domo91 - Surveillance des sondes")
st.write("Bienvenue sur lapplication de supervision.")
# Initialisation session state avec valeurs sûres # Initialisation session state avec valeurs sûres
for key, default in { for key, default in {
"authenticated": False, "authenticated": False,
@@ -28,8 +31,6 @@ for key, default in {
}.items(): }.items():
st.session_state.setdefault(key, default) st.session_state.setdefault(key, default)
st.title("📡 Supervision Températures")
# Configuration MySQL # Configuration MySQL
db_config = { db_config = {
"host": os.getenv("DB_HOST"), "host": os.getenv("DB_HOST"),
@@ -96,11 +97,16 @@ else:
# --- Navigation --- # --- Navigation ---
if st.session_state["authenticated"]: if st.session_state["authenticated"]:
onglets = ["Accueil", "Entretien"] if st.session_state["role"] != "superviseur" else ["Accueil", "Statistiques", "Entretien", "Traffic", "Utilisateurs"] onglets = ["Accueil", "Entretien"] if st.session_state["role"] != "superviseur" else ["Accueil", "Statistiques",
onglet_selectionne = st.sidebar.radio("📁 Navigation", onglets, index=onglets.index(st.session_state["onglet_actif"])) "Entretien", "Traffic",
"Utilisateurs"]
onglet_selectionne = st.sidebar.radio("📁 Navigation", onglets,
index=onglets.index(st.session_state["onglet_actif"]))
st.session_state["onglet_actif"] = onglet_selectionne st.session_state["onglet_actif"] = onglet_selectionne
site_actuel = st.session_state.get("lieu_autorise") if st.session_state["role"] != "superviseur" else st.session_state.get("selected_site", "Saclay") site_actuel = st.session_state.get("lieu_autorise") if st.session_state[
"role"] != "superviseur" else st.session_state.get(
"selected_site", "Saclay")
date_selectionnee = st.session_state.get("selected_date", date.today()) date_selectionnee = st.session_state.get("selected_date", date.today())
periode_selectionnee = st.session_state.get("selected_periode", "Toute la journée") periode_selectionnee = st.session_state.get("selected_periode", "Toute la journée")
@@ -131,7 +137,8 @@ if st.session_state["authenticated"]:
df_sonde = df[df["Sonde"] == sonde_choisie].copy() df_sonde = df[df["Sonde"] == sonde_choisie].copy()
df_sonde["Heure"] = df_sonde["Date"].dt.hour df_sonde["Heure"] = df_sonde["Date"].dt.hour
tranche = st.radio("🕒 Tranche horaire :", ["Toute la journée", "Matin (6h-12h)", "Après-midi (12h-18h)", "Nuit (18h-6h)"]) tranche = st.radio("🕒 Tranche horaire :",
["Toute la journée", "Matin (6h-12h)", "Après-midi (12h-18h)", "Nuit (18h-6h)"])
st.session_state["selected_periode"] = tranche st.session_state["selected_periode"] = tranche
if tranche == "Matin (6h-12h)": if tranche == "Matin (6h-12h)":
@@ -150,6 +157,7 @@ if st.session_state["authenticated"]:
st.subheader("📊 Tableau des relevés") st.subheader("📊 Tableau des relevés")
def surlignage_temp(val): def surlignage_temp(val):
try: try:
if float(val) > seuil_temp: if float(val) > seuil_temp:
@@ -158,6 +166,7 @@ if st.session_state["authenticated"]:
pass pass
return "" return ""
styled_df = df_sonde.style.applymap(surlignage_temp, subset=["Temperature"]) styled_df = df_sonde.style.applymap(surlignage_temp, subset=["Temperature"])
st.dataframe(styled_df, use_container_width=True) st.dataframe(styled_df, use_container_width=True)
@@ -313,7 +322,8 @@ if st.session_state["authenticated"]:
try: try:
conn = get_connection() conn = get_connection()
cursor = conn.cursor(dictionary=True) cursor = conn.cursor(dictionary=True)
cursor.execute("SELECT Utilisateur, Lieu, Date_Connexion FROM Connexion_Log ORDER BY Date_Connexion DESC LIMIT 100") cursor.execute(
"SELECT Utilisateur, Lieu, Date_Connexion FROM Connexion_Log ORDER BY Date_Connexion DESC LIMIT 100")
logs = cursor.fetchall() logs = cursor.fetchall()
df_logs = pd.DataFrame(logs) df_logs = pd.DataFrame(logs)
st.dataframe(df_logs) st.dataframe(df_logs)
@@ -336,7 +346,8 @@ if st.session_state["authenticated"]:
conn = get_connection() conn = get_connection()
cursor = conn.cursor() cursor = conn.cursor()
hash_mdp = hash_password(new_pass) hash_mdp = hash_password(new_pass)
cursor.execute("INSERT INTO MotsDePasse (utilisateur, mot_de_passe, role, Lieu) VALUES (%s, %s, %s, %s)", cursor.execute(
"INSERT INTO MotsDePasse (utilisateur, mot_de_passe, role, Lieu) VALUES (%s, %s, %s, %s)",
(new_user, hash_mdp, new_role, new_lieu)) (new_user, hash_mdp, new_role, new_lieu))
conn.commit() conn.commit()
cursor.close() cursor.close()
@@ -345,4 +356,3 @@ if st.session_state["authenticated"]:
except Exception as e: except Exception as e:
st.error(f"Erreur : {e}") st.error(f"Erreur : {e}")
st.text(traceback.format_exc()) st.text(traceback.format_exc())