"""定时任务调度模块。 使用 APScheduler 在后台定时执行提醒检查等周期性任务。 由 main.py 的 lifespan 管理启动和关闭。 """ import logging from apscheduler.schedulers.background import BackgroundScheduler from backend.app.db import SessionLocal from backend.app.services.reminder_service import reminder_service logger = logging.getLogger(__name__) scheduler = BackgroundScheduler() def run_reminder_checks(): """执行所有提醒检查(欠款、沉默客户、物流超时)。""" session = SessionLocal() try: result = reminder_service.check_all(session) logger.info("定时提醒检查完成: %s", result) except Exception: logger.exception("定时提醒检查异常") finally: session.close() def init_scheduler(): """初始化并启动调度器。 每日 08:30 自动执行所有提醒检查。 """ scheduler.add_job( run_reminder_checks, "cron", hour=8, minute=30, id="reminder_checks", replace_existing=True, ) scheduler.start() logger.info("定时任务调度器已启动,每日 08:30 执行提醒检查") def shutdown_scheduler(): """关闭调度器。""" scheduler.shutdown(wait=False) logger.info("定时任务调度器已关闭")