[AI] Tracking
This commit is contained in:
@@ -26,6 +26,7 @@ class Application:
|
||||
self.is_idle: bool = False
|
||||
self._tracking_thread: Optional[threading.Thread] = None
|
||||
self._running = True
|
||||
self.session_start_time: Optional[float] = None
|
||||
|
||||
# Загружаем задачу
|
||||
if self.config.current_task_id:
|
||||
@@ -73,6 +74,7 @@ class Application:
|
||||
def _check_and_update_tracking(self):
|
||||
with self._lock:
|
||||
if not self.tracking_enabled or not self.current_task:
|
||||
self.session_start_time = None
|
||||
return
|
||||
|
||||
current_time = time.time()
|
||||
@@ -85,12 +87,17 @@ class Application:
|
||||
if current_time - self.last_activity > 60 or is_blocked:
|
||||
self.is_idle = True
|
||||
self.last_window_group = None
|
||||
self.session_start_time = None
|
||||
else:
|
||||
self.is_idle = False
|
||||
if self.last_window_group != group_name:
|
||||
self.last_window_group = group_name
|
||||
self._add_work_detail(group_name, 5.0)
|
||||
|
||||
# Начинаем/продолжаем сессию
|
||||
if self.session_start_time is None:
|
||||
self.session_start_time = current_time
|
||||
|
||||
# Сохраняем при переходе в бездействие
|
||||
if not was_idle and self.is_idle:
|
||||
self.maybe_save_task()
|
||||
@@ -222,7 +229,11 @@ class Application:
|
||||
"detail": f"{window_info.title} | {window_info.process_name}"
|
||||
}
|
||||
|
||||
# === Остальные методы (без изменений, но с локом где нужно) ===
|
||||
def get_current_session_duration(self) -> float:
|
||||
with self._lock:
|
||||
if self.session_start_time is None:
|
||||
return 0.0
|
||||
return time.time() - self.session_start_time
|
||||
|
||||
def _load_or_create_config(self) -> TrackerConfig:
|
||||
if self.config_path.exists():
|
||||
|
||||
Reference in New Issue
Block a user