package com.njcn.rdms.module.project.dal.dataobject.duealert;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.rdms.framework.mybatis.core.dataobject.BaseDO;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDate;

/**
 * 临期/逾期告警发送记录 DO（去重凭证，只增不删）。
 *
 * <p>唯一索引 uk_due_alert(object_type, object_id, alert_type, planned_end_date, alert_date)
 * 兜底并发/多实例同日双插。设计见 docs/domains/project/2026-06-12-临期逾期告警-设计.html。</p>
 */
@TableName("rdms_due_alert_record")
@Data
@EqualsAndHashCode(callSuper = true)
public class DueAlertRecordDO extends BaseDO {

    @TableId
    private Long id;

    /** 告警域对象类型，见 DueAlertObjectTypeEnum（个人事项=personal_item，区别于状态机 task） */
    private String objectType;

    /** 对象主键 */
    private Long objectId;

    /** 告警档：approaching=临期 / overdue=逾期，见 DueAlertConstants */
    private String alertType;

    /** 判定时计划完成日快照（临期档去重键，改期后快照不匹配=重新告警） */
    private LocalDate plannedEndDate;

    /** 告警发送日（逾期档每天一条的去重键） */
    private LocalDate alertDate;

}
