File size: 3,973 Bytes
a3d26e6
 
 
3a8ddd8
a3d26e6
 
 
f7289a6
a3d26e6
59ba192
a3d26e6
3a8ddd8
 
 
214b1f8
3a8ddd8
c3b4e7b
 
3a8ddd8
59ba192
8c27c79
3a8ddd8
a3d26e6
 
 
 
 
3536eb7
a3d26e6
ea96b1d
a3d26e6
c3b4e7b
 
8c27c79
d4c1058
 
 
3a8ddd8
c3b4e7b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8b93442
3a8ddd8
 
 
 
a3d26e6
 
 
720c02e
a3d26e6
5480e8d
f7289a6
 
 
 
 
 
 
 
 
 
5480e8d
a3d26e6
720c02e
 
ef365c3
c3b4e7b
a3d26e6
 
720c02e
59ba192
 
 
 
 
e49d193
59ba192
c3b4e7b
 
 
 
 
 
 
 
59ba192
c3b4e7b
 
 
 
 
59ba192
a3d26e6
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import streamlit as st
import os

from dotenv import load_dotenv
from rag import Rag
from vectore_store.PineconeConnector import PineconeConnector
from vectore_store.VectoreStoreManager import VectoreStoreManager
from subscription.index import get_usages, is_usage_limit_reached, daily_limit_enabled

from util import getYamlConfig

load_dotenv()

GROUP_NAME = os.environ.get("APP_NAME")
LOGO = "assets/logo.png"

COMPANIES = []

def init_app():

    config = getYamlConfig()

    if len(st.session_state) == 0:
        # Define Vectore store strategy
        pinecone_connector = PineconeConnector()
        vs_manager = VectoreStoreManager(pinecone_connector)

        st.session_state["retrived_documents"] = []
        st.session_state["messages"] = []
        st.session_state["remove_undefined_value"] = True
        st.session_state["assistant"] = Rag(vectore_store=vs_manager)
        st.session_state["data_dict"] = {}
        st.session_state["company_code"] = None
        st.session_state["prompt_system"] = config['prompt_system']
        st.session_state["chat_history_afp"] = []
        st.session_state["chat_history_cettons"] = []
        st.session_state["chat_history_steel"] = []

        # Initialize data_dict for each company
        for company in config['companies']:
            COMPANIES.append(company)
            company_code = company['code']

            st.session_state["data_dict"][company_code] = []

            if 'parts' in company['variables']:
                # Flatten structure by adding part name to each field
                st.session_state["data_dict"][company_code] = [
                    {**field, "part": part["name"]}
                    for part in company["variables"]["parts"]
                    for field in part["fields"]
                ]

            else:
                # Initialize session state with single list of variables
                st.session_state["data_dict"][company_code] = [
                    {**field} for field in company["variables"]
                ]


def main():

    init_app()

    st.set_page_config(page_title=GROUP_NAME)

    st.logo(LOGO)
    st.title(GROUP_NAME)
    
    if daily_limit_enabled():
        usages = get_usages()
        reached = is_usage_limit_reached()

        st.sidebar.html(f"<p style='margin:0;text-align:center;font-weight:bold;font-size:24px;'>{usages['count']} / {usages['daily_limit']}</p>")
        if reached:
            st.sidebar.html(f"<p style='text-align:center;font-style:italic;'>Vous avez atteint la limite d'utilisation<p>")
        else:
            st.sidebar.html(f"<p style='text-align:center;'>Nombre de messages envoyés aujourd'hui<p>")

    

    saved_documents = st.Page("pages/persistent_documents.py", title="Communs", icon="🗃️")
    documents = st.Page("pages/documents.py", title="Vos documents", icon="📂")
    prompt_system = st.Page("pages/prompt_system.py", title="Prompt système", icon="🖊️")
    # chatbot = st.Page("pages/chatbot.py", title="Chatbot", icon="🤖", default=True)

    pg = st.navigation(
        {
            "Documents": [
                saved_documents,
                documents,
            ],
            "Configurations": [
                prompt_system,
            ],
            "Auto France Parts": [
                st.Page("pages/afp.py", title="Paramètres", icon="📋"),
                st.Page("pages/chatbot_afp.py", title="Dialogue", icon="🤖", default=True),
            ],
            "La Pyramide des Cettons": [
                st.Page("pages/cettons.py", title="Paramètres", icon="📋"),
                st.Page("pages/chatbot_cettons.py", title="Dialogue", icon="🤖"),

            ],
            "Steel France": [
                st.Page("pages/steel.py", title="Paramètres", icon="📋"),
                st.Page("pages/chatbot_steel.py", title="Dialogue", icon="🤖"),

            ]
        }
    )

    pg.run()


if __name__ == "__main__":
    main()