package com.njcn.rdms.module.project.job;

import com.njcn.rdms.module.project.service.duealert.DueAlertScanService;
import com.njcn.rdms.module.project.util.DueRangeSupport;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.time.LocalDate;

/**
 * 临期/逾期告警每日扫描任务（业务侧首个定时任务）。
 *
 * <p>默认每日 05:00（用户定稿），可经配置项 rdms.due-alert.scan-cron 覆盖，不改环境配置文件。
 * 逾期每天一条 / 临期窗口一次的去重在 service 层，重复触发幂等。
 * 设计见 docs/domains/project/2026-06-12-临期逾期告警-设计.html。</p>
 */
@Component
@Slf4j
public class DueAlertScanJob {

    @Resource
    private DueAlertScanService dueAlertScanService;

    @Scheduled(cron = "${rdms.due-alert.scan-cron:0 0 5 * * ?}")
    public void scan() {
        LocalDate today = DueRangeSupport.today();
        log.info("[scan][临期/逾期告警扫描开始 today({})]", today);
        dueAlertScanService.scan(today);
        log.info("[scan][临期/逾期告警扫描结束 today({})]", today);
    }

}
