ciyidogan commited on
Commit
5b08759
·
verified ·
1 Parent(s): bb39e64

Update session.py

Browse files
Files changed (1) hide show
  1. 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."""