32 lines
1.2 KiB
Python
32 lines
1.2 KiB
Python
"""运输计划 - 证件到期提醒定时扫描"""
|
|
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()
|