diff --git a/backend/app/services/agent_schedule_service.py b/backend/app/services/agent_schedule_service.py index a842971..3b55847 100644 --- a/backend/app/services/agent_schedule_service.py +++ b/backend/app/services/agent_schedule_service.py @@ -25,6 +25,11 @@ def compute_next_run(cron_expression: str, after: Optional[datetime] = None, tz: 下次执行的 UTC datetime(naive,存储时与 datetime.utcnow() 对齐) """ base = after or datetime.now(timezone.utc) + # 确保 base 是 timezone-aware UTC(datetime.utcnow() 返回 naive,需要先 localize) + if base.tzinfo is None: + base = pytz.UTC.localize(base) + else: + base = base.astimezone(pytz.UTC) # 将 UTC 时间转换为目标时区,cron 表达式在目标时区下解释 try: target_tz = pytz.timezone(tz) @@ -117,7 +122,7 @@ def check_and_run_due_schedules() -> int: db: Optional[Session] = None try: db = SessionLocal() - now = datetime.utcnow() + now = datetime.now(timezone.utc).replace(tzinfo=None) # naive UTC,与 DB 存储一致 due_schedules = ( db.query(AgentSchedule)