Carto-RSE / app.py
Ilyas KHIAT
emission detailed
0dc8c45
raw
history blame
7.52 kB
import sys
import os
import streamlit as st
from organisations_engagees import display_organisations_engagees
from localisation import display_map
from statistiques import main as display_statistics
from ActionsRSE import display_actions_rse
from AnalyseActionsRSE import display_analyse_actions_rse
from partiesprenantes import display_materiality_partiesprenantes
from partie_prenante_carte import display_pp
from codecarbon import EmissionsTracker
# Import modifiédes fonctions liées aux scripts
from projetRSE import display_rse_projects
from labelRSE import display_rse_labels
from entreprises_labellisees import display_labelled_companies
from inspirezvous import *
from collaborons import display_company_selection_for_materiality,display_materiality_matrix
from documentations import display_documentation
from RAG_PDF_WEB import rag_pdf_web
from prompt import get_prompts_list,prompt_execution,execute_prompt
from chat_with_pps import display_chat
from high_chart import test_chart
from chat_te import display_chat_te
from comparateur import *
import base64
import pandas as pd
# Function to read and encode an SVG file to Base64
def load_svg_as_base64(file_path):
with open(file_path, "rb") as f:
svg_data = f.read()
return base64.b64encode(svg_data).decode()
def main():
st.markdown(":point_left: Cliquez pour vous inspirer", unsafe_allow_html=True)
if "emission" not in st.session_state:
tracker = EmissionsTracker()
tracker.start()
st.session_state["emission"] = tracker
if "partial_emissions" not in st.session_state:
st.session_state["partial_emissions"] = {
"Scrapping": {"cc": 0, "el": 0}, #cc for codecarbon , el for ecologits
"extraction_pp": {"cc": 0, "el": 0},
"cartographie": {"cc": 0, "el": 0},
"chatbot": {"cc": 0, "el": 0},
"download_rapport": {"cc": 0, "el": 0},
}
st.sidebar.title("OPEN DATA & IA au service de la RSE")
section_principale = st.sidebar.radio(
"Choisissez votre section",
["Data Bordeaux métropole", "Data bziiit","IA RSE","Documentation"],
index=2
)
if section_principale == "Data Bordeaux métropole":
app_mode = st.sidebar.radio(
"Choisissez votre sous-section",
["Localisations", "Organisations engagées", "Statistiques", "Actions RSE", "Analyse actions RSE"]
)
if app_mode == "Localisations":
display_map()
elif app_mode == "Organisations engagées":
display_organisations_engagees()
elif app_mode == "Statistiques":
display_statistics()
elif app_mode == "Actions RSE":
display_actions_rse()
elif app_mode == "Analyse actions RSE":
display_analyse_actions_rse()
elif section_principale == "Data bziiit":
ia_mode = st.sidebar.radio(
"Choisissez votre sous-section",
["Labels RSE", "Entreprises labellisées", "Fiches entreprises"]
)
if ia_mode == "Labels RSE":
display_rse_labels()
elif ia_mode == "Entreprises labellisées":
display_labelled_companies()
elif ia_mode == "Fiches entreprises":
data, bziiit_data = fetch_data()
selected_company = display_company_selection(data)
display_company_info(data, bziiit_data, selected_company)
elif section_principale == "IA RSE":
ia_mode = st.sidebar.radio(
"Choisissez votre sous-section",
[
"Audit flash RSE de vos contenus",
"Parties prenantes",
"Chatbot Parties Prenantes",
# "Prompts RSE - TE",
# "Chatbot RSE - TE",
]
)
if ia_mode == "Parties prenantes":
# data, bziiit_data = fetch_data()
# selected_company = display_company_selection_for_materiality(data)
# if selected_company:
# display_materiality_partiesprenantes(selected_company, data, bziiit_data)
display_pp()
# elif ia_mode == "Matrice de matérialité":
# data, bziiit_data = fetch_data()
# selected_company = display_company_selection_for_materiality(data)
# if selected_company:
# display_materiality_matrix(selected_company, data, bziiit_data)
elif ia_mode == "Chatbot Parties Prenantes":
display_chat()
elif ia_mode == "Audit flash RSE de vos contenus":
rag_pdf_web()
elif ia_mode == "Prompts RSE - TE":
get_prompts_list()
# elif ia_mode == "Générations de contenus RSE":
# st.header("Exécutez un prompt")
# selected_prompt = prompt_execution()
# if selected_prompt:
# execute_prompt(selected_prompt)
elif ia_mode == "Chatbot RSE - TE":
display_chat_te()
elif section_principale == "Documentation":
display_documentation()
#consommation carbone
st.sidebar.markdown("---")
svg_file_path = "feuille.svg"
svg_base64 = load_svg_as_base64(svg_file_path)
st.sidebar.markdown(
f"""
**Votre consommation Carbone**
<img src='data:image/svg+xml;base64,{svg_base64}' alt='svg' width='15' height='15' style='margin-left: 10px;'>
""",
unsafe_allow_html=True
)
serveur_emission = st.session_state['emission'].stop()
emission_api = sum([value["el"] for value in st.session_state["partial_emissions"].values()])
total_emission = serveur_emission + emission_api
pourcentage_api = emission_api / total_emission
pourcentage_serveur = serveur_emission / total_emission
st.sidebar.markdown(f"<div style='text-align: center; margin-bottom: 10px;'><b>{total_emission*1000:.3f}</b> g eq. CO2</div>", unsafe_allow_html=True)
st.sidebar.markdown("Dont :")
st.sidebar.markdown(f"- Empreinte serveur (via CodeCarbon) : **{serveur_emission*1000:.3f}** g eq. CO2 ({pourcentage_serveur:.2%})")
st.sidebar.markdown(f"- Empreinte serveur (via EcoLogits) : **{emission_api*1000:.3f}** g eq. CO2 ({pourcentage_api:.2%})")
# st.sidebar.markdown("(avec l'outil CodeCarbon)")
c1,c2,c3 = st.sidebar.columns([1,1,1])
c2.write("---")
st.sidebar.markdown("**Votre équivalence**")
col1,col2,col3 = st.sidebar.columns([1,1,1])
display_comparaison(col1,total_emission,dict_comparaison_1kgCO2["eau en litre"][0]*1000,dict_comparaison_1kgCO2["eau en litre"][1],"ml")
display_comparaison(col2,total_emission,dict_comparaison_1kgCO2["tgv en km"][0],dict_comparaison_1kgCO2["tgv en km"][1],"km")
display_comparaison(col3,total_emission,dict_comparaison_1kgCO2["voiture en km"][0]*1000,dict_comparaison_1kgCO2["voiture en km"][1],"m")
st.sidebar.markdown("\n")
st.sidebar.markdown(
f"""
Powered by **ADEME**
<a href='https://www.ademe.fr' target='_blank'><img src='https://www.ademe.fr/wp-content/uploads/2022/11/ademe-logo-2022-1.svg' alt='svg' width='30' height='30' style='margin-left: 10px;'>
""",
unsafe_allow_html=True
)
# Instructions communes à toutes les sections
st.sidebar.markdown("---")
st.sidebar.markdown("Powered by **bziiit IA RSE**")
st.sidebar.markdown("2024 : Open source en Licence MIT")
st.sidebar.markdown("[email protected]")
if __name__ == "__main__":
main()