package com.njcn.rdms.module.project.framework.notify;

/**
 * 站内信模板场景码常量。
 *
 * <p>每个 code 对应 {@code system_notify_template} 一条模板（发送前模板必须已配置，
 * 否则能力层抛错、被 {@link NotifySendEventListener} 兜底为 log.warn）。</p>
 *
 * @author hongawen
 */
public class NotifyTemplateCodeConstants {

    /** 任务指派：创建任务后通知负责人 + 协办人 */
    public static final String TASK_ASSIGNED = "task_assigned";

    /** 临期提醒-负责人：对象进入临期窗口时通知负责人（项目负责人/owner/需求处理人→提出人） */
    public static final String DUE_ALERT_APPROACHING_OWNER = "due_alert_approaching_owner";

    /** 临期提醒-协办人：已停发（2026-07-15 起告警仅通知负责人），模板保留在库，常量供历史消息匹配 */
    public static final String DUE_ALERT_APPROACHING_ASSIGNEE = "due_alert_approaching_assignee";

    /** 逾期提醒-负责人：每天一条持续提醒，直到终态或暂停 */
    public static final String DUE_ALERT_OVERDUE_OWNER = "due_alert_overdue_owner";

    /** 逾期提醒-协办人：已停发（2026-07-15 起告警仅通知负责人），仍参与"未读不重发"历史消息匹配 */
    public static final String DUE_ALERT_OVERDUE_ASSIGNEE = "due_alert_overdue_assignee";

    /** 工作报告团队催办：主管催办下属提交指定周期工作报告 */
    public static final String WORK_REPORT_TEAM_REMIND = "work_report_team_remind";

    /** 项目半月报团队催办：主管按项目槽位催办下属提交项目半月报 */
    public static final String WORK_REPORT_PROJECT_HALF_MONTH_TEAM_REMIND =
            "work_report_project_half_month_team_remind";

    /** 工作报告待直属上级审批通知：周报/月报通用 */
    public static final String WORK_REPORT_PENDING_APPROVAL_NOTIFY =
            "work_report_pending_approval_notify";

    /** 项目半月报待直属上级审批通知 */
    public static final String WORK_REPORT_PROJECT_HALF_MONTH_PENDING_APPROVAL_NOTIFY =
            "work_report_project_half_month_pending_approval_notify";

    /** 执行指派：创建执行后通知负责人 + 协办人 */
    public static final String EXECUTION_ASSIGNED = "execution_assigned";

    /** 项目创建：通知项目团队成员（排除创建者角色） */
    public static final String PROJECT_CREATED = "project_created";

    /** 产品创建：通知产品团队成员（排除创建者角色） */
    public static final String PRODUCT_CREATED = "product_created";

    /** 项目需求创建：通知处理人 */
    public static final String PROJECT_REQUIREMENT_ASSIGNED = "project_requirement_assigned";

    /** 产品需求创建：通知处理人 */
    public static final String PRODUCT_REQUIREMENT_ASSIGNED = "product_requirement_assigned";

    /** 绩效表发送：通知员工确认绩效表 */
    public static final String PERFORMANCE_SENT = "performance_sent";

    /** 绩效待确认催办：主管催办员工确认绩效表 */
    public static final String PERFORMANCE_PENDING_CONFIRM_REMIND = "performance_pending_confirm_remind";

    /** 绩效待发送催办：提醒直属上级发送或重新发送绩效表 */
    public static final String PERFORMANCE_PENDING_SEND_REMIND = "performance_pending_send_remind";

    /** 绩效表退回：通知直属上级处理员工退回的绩效表 */
    public static final String PERFORMANCE_REJECTED = "performance_rejected";

}
