diff --git a/src/chat/chat_loop/sleep_manager/sleep_manager.py b/src/chat/chat_loop/sleep_manager/sleep_manager.py index 7eb1d3d61..3bf099be7 100644 --- a/src/chat/chat_loop/sleep_manager/sleep_manager.py +++ b/src/chat/chat_loop/sleep_manager/sleep_manager.py @@ -25,8 +25,7 @@ class SleepManager: """ 初始化睡眠管理器。 """ - self.time_checker = TimeChecker(self) # 时间检查器,用于判断当前是否处于理论睡眠时间 - self.today_schedule: Optional[List[Dict[str, Any]]] = None # 当天的日程安排 + self.time_checker = TimeChecker() # 时间检查器,用于判断当前是否处于理论睡眠时间 self.last_sleep_log_time = 0 # 上次记录睡眠日志的时间戳 self.sleep_log_interval = 35 # 睡眠日志记录间隔(秒) @@ -284,14 +283,6 @@ class SleepManager: logger.info(f"将在 {re_sleep_delay_minutes} 分钟后尝试重新入睡。") self._save_sleep_state() - def get_today_schedule(self) -> Optional[List[Dict[str, Any]]]: - """获取今天的日程安排。""" - return self.today_schedule - - def update_today_schedule(self, schedule: Optional[List[Dict[str, Any]]]): - """更新今天的日程安排。""" - self.today_schedule = schedule - def _save_sleep_state(self): """将当前所有睡眠相关的状态打包并保存到本地存储。""" state_data = { diff --git a/src/chat/chat_loop/sleep_manager/time_checker.py b/src/chat/chat_loop/sleep_manager/time_checker.py index 32521d408..cbe3d45e8 100644 --- a/src/chat/chat_loop/sleep_manager/time_checker.py +++ b/src/chat/chat_loop/sleep_manager/time_checker.py @@ -1,19 +1,19 @@ from datetime import datetime, time, timedelta -from typing import Optional +from typing import Optional, List, Dict, Any import random from src.common.logger import get_logger from src.config.config import global_config +from src.schedule.schedule_manager import schedule_manager logger = get_logger("time_checker") class TimeChecker: - def __init__(self, schedule_source): - self.schedule_source = schedule_source + def __init__(self): # 缓存当天的偏移量,确保一天内使用相同的偏移量 - self._daily_sleep_offset = None - self._daily_wake_offset = None + self._daily_sleep_offset: int = 0 + self._daily_wake_offset: int = 0 self._offset_date = None def _get_daily_offsets(self): @@ -34,9 +34,13 @@ class TimeChecker: return self._daily_sleep_offset, self._daily_wake_offset + def get_today_schedule(self) -> Optional[List[Dict[str, Any]]]: + """从全局 ScheduleManager 获取今天的日程安排。""" + return schedule_manager.today_schedule + def is_in_theoretical_sleep_time(self, now_time: time) -> tuple[bool, Optional[str]]: if global_config.sleep_system.sleep_by_schedule: - if self.schedule_source.get_today_schedule(): + if self.get_today_schedule(): return self._is_in_schedule_sleep_time(now_time) else: return self._is_in_sleep_time(now_time) @@ -46,7 +50,7 @@ class TimeChecker: def _is_in_schedule_sleep_time(self, now_time: time) -> tuple[bool, Optional[str]]: """检查当前时间是否落在日程表的任何一个睡眠活动中""" sleep_keywords = ["休眠", "睡觉", "梦乡"] - today_schedule = self.schedule_source.get_today_schedule() + today_schedule = self.get_today_schedule() if today_schedule: for event in today_schedule: try: diff --git a/src/schedule/schedule_manager.py b/src/schedule/schedule_manager.py index 491f106fa..f97d7c03c 100644 --- a/src/schedule/schedule_manager.py +++ b/src/schedule/schedule_manager.py @@ -7,7 +7,6 @@ from src.common.database.sqlalchemy_models import Schedule, get_db_session from src.config.config import global_config from src.common.logger import get_logger from src.manager.async_task_manager import AsyncTask, async_task_manager -from ..chat.chat_loop.sleep_manager.sleep_manager import SleepManager from .database import update_plan_usage from .llm_generator import ScheduleLLMGenerator from .plan_manager import PlanManager @@ -23,7 +22,6 @@ class ScheduleManager: self.plan_manager = PlanManager() self.daily_task_started = False self.schedule_generation_running = False - self.sleep_manager = SleepManager() async def start_daily_schedule_generation(self): if not self.daily_task_started: @@ -45,7 +43,6 @@ class ScheduleManager: schedule_data = self._load_schedule_from_db(today_str) if schedule_data: self.today_schedule = schedule_data - self.sleep_manager.update_today_schedule(self.today_schedule) self._log_loaded_schedule(today_str) return @@ -100,7 +97,6 @@ class ScheduleManager: if schedule_data: self._save_schedule_to_db(today_str, schedule_data) self.today_schedule = schedule_data - self.sleep_manager.update_today_schedule(self.today_schedule) self._log_generated_schedule(today_str, schedule_data) if sampled_plans: