"""运输计划 - 证件到期提醒定时扫描""" import logging from datetime import datetime from zoneinfo import ZoneInfo from app.core.config import settings from app.core.database import SessionLocal from app.services.pl_cert_service import scan_cert_expiry logger = logging.getLogger(__name__) def scan_pl_cert_expiry_job(): """每日扫描 pl_cert,生成证件到期提醒。""" db = SessionLocal() try: logger.info("======== 开始执行证件到期扫描任务 ========") created_count = scan_cert_expiry(db, today=datetime.now(ZoneInfo("Asia/Shanghai")).date()) db.commit() logger.info("证件到期扫描完成,新建提醒 %d 条", created_count) if settings.WECHAT_OA_ENABLED and settings.WECHAT_OA_CERT_REMINDER_ENABLED: from app.services.wechat_cert_notices import enqueue_daily_cert_notices notice_count = enqueue_daily_cert_notices(db) db.commit() logger.info("证件到期微信汇总已入队 %d 条", notice_count) except Exception: db.rollback() logger.exception("证件到期扫描任务失败") raise finally: db.close()