|
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 |
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
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}, |
|
"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", |
|
|
|
|
|
] |
|
) |
|
|
|
if ia_mode == "Parties prenantes": |
|
|
|
|
|
|
|
|
|
display_pp() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 == "Chatbot RSE - TE": |
|
display_chat_te() |
|
|
|
elif section_principale == "Documentation": |
|
display_documentation() |
|
|
|
|
|
|
|
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%})") |
|
|
|
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 |
|
) |
|
|
|
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() |