Changement type stockage user
Browse files- LesChatsDeSeatech.py +18 -22
LesChatsDeSeatech.py
CHANGED
|
@@ -138,20 +138,13 @@ def handle_role_selection(session_id, selected_role=None):
|
|
| 138 |
if session_id not in conversation_history_global:
|
| 139 |
conversation_history_global[session_id] = []
|
| 140 |
print(f"Session {session_id} - Rôle sélectionné : {selected_role}")
|
| 141 |
-
# Si un rôle est sélectionné, l'enregistrer dans
|
| 142 |
if selected_role and selected_role in profile_mapping:
|
| 143 |
-
#
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
# Créer un nouveau dictionnaire et l'assigner à session (crucial pour que Flask détecte les modifications)
|
| 147 |
-
user_profile = {
|
| 148 |
'role': selected_role,
|
| 149 |
'confirmed': True
|
| 150 |
}
|
| 151 |
-
session['user_profile'] = user_profile
|
| 152 |
-
|
| 153 |
-
# Force Flask à sauvegarder la session
|
| 154 |
-
session.modified = True
|
| 155 |
|
| 156 |
# Message de bienvenue personnalisé selon le rôle
|
| 157 |
role_config = profile_mapping[selected_role]
|
|
@@ -168,7 +161,7 @@ def handle_role_selection(session_id, selected_role=None):
|
|
| 168 |
})
|
| 169 |
|
| 170 |
logger.info(f"Rôle '{selected_role}' confirmé pour la session {session_id}")
|
| 171 |
-
logger.info(f"
|
| 172 |
return selected_role
|
| 173 |
|
| 174 |
return None
|
|
@@ -551,15 +544,15 @@ def search_similar_chunks_with_confirmed_role(query, index, is_faiss, embeddings
|
|
| 551 |
# 3. Fonction pour vérifier si l'utilisateur a confirmé son rôle
|
| 552 |
def is_role_confirmed(session_id):
|
| 553 |
"""Vérifie si l'utilisateur a confirmé son rôle."""
|
| 554 |
-
|
| 555 |
-
|
| 556 |
-
logger.info(f"Vérification rôle pour session {session_id}: user_profile={user_profile}, confirmed={confirmed}")
|
| 557 |
return confirmed
|
| 558 |
|
| 559 |
def get_confirmed_role(session_id):
|
| 560 |
"""Récupère le rôle confirmé de l'utilisateur."""
|
| 561 |
-
|
| 562 |
-
|
|
|
|
| 563 |
def keyword_search(query, chunks_data, top_n=5):
|
| 564 |
"""Recherche par mots-clés en fallback."""
|
| 565 |
query_terms = query.lower().split()
|
|
@@ -788,6 +781,7 @@ app.config['SESSION_COOKIE_HTTPONLY'] = True
|
|
| 788 |
app.config['SESSION_COOKIE_SAMESITE'] = 'Lax'
|
| 789 |
app.config['PERMANENT_SESSION_LIFETIME'] = 3600 # 1 heure
|
| 790 |
conversation_history_global = {}
|
|
|
|
| 791 |
# ajout Daly
|
| 792 |
|
| 793 |
# Charger modèle Vosk une seule fois au démarrage
|
|
@@ -866,7 +860,9 @@ def index():
|
|
| 866 |
|
| 867 |
conv = conversation_history_global.get(session_id, [])
|
| 868 |
current_datetime = datetime.now()
|
| 869 |
-
user_profile =
|
|
|
|
|
|
|
| 870 |
|
| 871 |
return render_template("index.html",
|
| 872 |
conversation=conv,
|
|
@@ -1013,16 +1009,16 @@ def api_reset_role():
|
|
| 1013 |
"""Permet de réinitialiser le rôle sélectionné."""
|
| 1014 |
session.permanent = True
|
| 1015 |
|
| 1016 |
-
if 'user_profile' in session:
|
| 1017 |
-
session.pop('user_profile')
|
| 1018 |
-
session.modified = True
|
| 1019 |
-
|
| 1020 |
if 'session_id' in session:
|
| 1021 |
session_id = session['session_id']
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1022 |
if session_id in conversation_history_global:
|
| 1023 |
conversation_history_global[session_id] = []
|
|
|
|
| 1024 |
|
| 1025 |
-
logger.info(f"Rôle réinitialisé pour la session {session.get('session_id')}")
|
| 1026 |
return jsonify({
|
| 1027 |
"response": "<p>Rôle réinitialisé. Veuillez sélectionner votre nouveau profil.</p>",
|
| 1028 |
"role_confirmed": False,
|
|
|
|
| 138 |
if session_id not in conversation_history_global:
|
| 139 |
conversation_history_global[session_id] = []
|
| 140 |
print(f"Session {session_id} - Rôle sélectionné : {selected_role}")
|
| 141 |
+
# Si un rôle est sélectionné, l'enregistrer dans le dictionnaire global
|
| 142 |
if selected_role and selected_role in profile_mapping:
|
| 143 |
+
# Stocker le profil dans le dictionnaire global (plus fiable que Flask Session)
|
| 144 |
+
user_profiles_global[session_id] = {
|
|
|
|
|
|
|
|
|
|
| 145 |
'role': selected_role,
|
| 146 |
'confirmed': True
|
| 147 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 148 |
|
| 149 |
# Message de bienvenue personnalisé selon le rôle
|
| 150 |
role_config = profile_mapping[selected_role]
|
|
|
|
| 161 |
})
|
| 162 |
|
| 163 |
logger.info(f"Rôle '{selected_role}' confirmé pour la session {session_id}")
|
| 164 |
+
logger.info(f"user_profiles_global après confirmation: {user_profiles_global}")
|
| 165 |
return selected_role
|
| 166 |
|
| 167 |
return None
|
|
|
|
| 544 |
# 3. Fonction pour vérifier si l'utilisateur a confirmé son rôle
|
| 545 |
def is_role_confirmed(session_id):
|
| 546 |
"""Vérifie si l'utilisateur a confirmé son rôle."""
|
| 547 |
+
confirmed = session_id in user_profiles_global and user_profiles_global[session_id].get('confirmed', False)
|
| 548 |
+
logger.info(f"Vérification rôle pour session {session_id}: {confirmed}, profils={user_profiles_global}")
|
|
|
|
| 549 |
return confirmed
|
| 550 |
|
| 551 |
def get_confirmed_role(session_id):
|
| 552 |
"""Récupère le rôle confirmé de l'utilisateur."""
|
| 553 |
+
if session_id in user_profiles_global:
|
| 554 |
+
return user_profiles_global[session_id].get('role', None)
|
| 555 |
+
return None
|
| 556 |
def keyword_search(query, chunks_data, top_n=5):
|
| 557 |
"""Recherche par mots-clés en fallback."""
|
| 558 |
query_terms = query.lower().split()
|
|
|
|
| 781 |
app.config['SESSION_COOKIE_SAMESITE'] = 'Lax'
|
| 782 |
app.config['PERMANENT_SESSION_LIFETIME'] = 3600 # 1 heure
|
| 783 |
conversation_history_global = {}
|
| 784 |
+
user_profiles_global = {} # Stocker les profils utilisateur plutôt que dans la session Flask
|
| 785 |
# ajout Daly
|
| 786 |
|
| 787 |
# Charger modèle Vosk une seule fois au démarrage
|
|
|
|
| 860 |
|
| 861 |
conv = conversation_history_global.get(session_id, [])
|
| 862 |
current_datetime = datetime.now()
|
| 863 |
+
user_profile = user_profiles_global.get(session_id, {})
|
| 864 |
+
|
| 865 |
+
logger.info(f"Route / render_template - session_id: {session_id}, user_profile: {user_profile}")
|
| 866 |
|
| 867 |
return render_template("index.html",
|
| 868 |
conversation=conv,
|
|
|
|
| 1009 |
"""Permet de réinitialiser le rôle sélectionné."""
|
| 1010 |
session.permanent = True
|
| 1011 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1012 |
if 'session_id' in session:
|
| 1013 |
session_id = session['session_id']
|
| 1014 |
+
# Supprimer le profil du dictionnaire global
|
| 1015 |
+
if session_id in user_profiles_global:
|
| 1016 |
+
del user_profiles_global[session_id]
|
| 1017 |
+
# Vider l'historique de conversation
|
| 1018 |
if session_id in conversation_history_global:
|
| 1019 |
conversation_history_global[session_id] = []
|
| 1020 |
+
logger.info(f"Rôle réinitialisé pour la session {session_id}")
|
| 1021 |
|
|
|
|
| 1022 |
return jsonify({
|
| 1023 |
"response": "<p>Rôle réinitialisé. Veuillez sélectionner votre nouveau profil.</p>",
|
| 1024 |
"role_confirmed": False,
|