Spaces:
Building
Building
Update session.py
Browse files- session.py +41 -1
session.py
CHANGED
@@ -31,6 +31,11 @@ class Session:
|
|
31 |
# history
|
32 |
self.chat_history: List[Dict[str, str]] = []
|
33 |
|
|
|
|
|
|
|
|
|
|
|
34 |
self.created_at: datetime = datetime.now()
|
35 |
self.last_activity: datetime = datetime.now()
|
36 |
|
@@ -51,7 +56,42 @@ class Session:
|
|
51 |
self.last_intent = None
|
52 |
self.awaiting_parameters.clear()
|
53 |
self.missing_ask_count = 0
|
54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
|
56 |
class SessionStore:
|
57 |
"""Thread-safe global store."""
|
|
|
31 |
# history
|
32 |
self.chat_history: List[Dict[str, str]] = []
|
33 |
|
34 |
+
# smart parameter collection tracking
|
35 |
+
self.asked_parameters: Dict[str, int] = {} # parametre_adı -> kaç_kez_soruldu
|
36 |
+
self.unanswered_parameters: List[str] = [] # sorulduğu halde cevaplanmayan parametreler
|
37 |
+
self.parameter_ask_rounds: int = 0 # toplam kaç tur soru soruldu
|
38 |
+
|
39 |
self.created_at: datetime = datetime.now()
|
40 |
self.last_activity: datetime = datetime.now()
|
41 |
|
|
|
56 |
self.last_intent = None
|
57 |
self.awaiting_parameters.clear()
|
58 |
self.missing_ask_count = 0
|
59 |
+
# Smart collection tracking'i reset etme,
|
60 |
+
# çünkü aynı session'da başka intent için kullanılabilir
|
61 |
+
|
62 |
+
# -------- smart parameter collection methods ------
|
63 |
+
def record_parameter_question(self, param_names: List[str]):
|
64 |
+
"""Sorulan parametreleri kaydet"""
|
65 |
+
self.parameter_ask_rounds += 1
|
66 |
+
log(f"📝 Recording parameter question round {self.parameter_ask_rounds} for: {param_names}")
|
67 |
+
|
68 |
+
for param in param_names:
|
69 |
+
self.asked_parameters[param] = self.asked_parameters.get(param, 0) + 1
|
70 |
+
log(f" - {param} asked {self.asked_parameters[param]} time(s)")
|
71 |
+
|
72 |
+
def mark_parameters_unanswered(self, param_names: List[str]):
|
73 |
+
"""Cevaplanmayan parametreleri işaretle"""
|
74 |
+
for param in param_names:
|
75 |
+
if param not in self.unanswered_parameters:
|
76 |
+
self.unanswered_parameters.append(param)
|
77 |
+
log(f"❓ Parameter marked as unanswered: {param}")
|
78 |
+
|
79 |
+
def mark_parameter_answered(self, param_name: str):
|
80 |
+
"""Parametre cevaplandığında işareti kaldır"""
|
81 |
+
if param_name in self.unanswered_parameters:
|
82 |
+
self.unanswered_parameters.remove(param_name)
|
83 |
+
log(f"✅ Parameter marked as answered: {param_name}")
|
84 |
+
|
85 |
+
def get_parameter_ask_count(self, param_name: str) -> int:
|
86 |
+
"""Bir parametrenin kaç kez sorulduğunu döndür"""
|
87 |
+
return self.asked_parameters.get(param_name, 0)
|
88 |
+
|
89 |
+
def reset_parameter_tracking(self):
|
90 |
+
"""Parametre takibini sıfırla (yeni intent için)"""
|
91 |
+
self.asked_parameters.clear()
|
92 |
+
self.unanswered_parameters.clear()
|
93 |
+
self.parameter_ask_rounds = 0
|
94 |
+
log("🔄 Parameter tracking reset for new intent")
|
95 |
|
96 |
class SessionStore:
|
97 |
"""Thread-safe global store."""
|