package com.qqchen.deploy.backend.workflow.dto.inputmapping;

import com.qqchen.deploy.backend.workflow.enums.ApprovalModeEnum;
import com.qqchen.deploy.backend.workflow.enums.ApproverTypeEnum;
import com.qqchen.deploy.backend.workflow.enums.TimeoutActionEnum;
import lombok.Data;

import java.util.List;

/**
 * 审批节点输入映射
 * 
 * @author qqchen
 * @date 2025-10-23
 */
@Data
public class ApprovalInputMapping {

    /**
     * 审批模式
     */
    private ApprovalModeEnum approvalMode;

    /**
     * 审批人类型
     */
    private ApproverTypeEnum approverType;

    /**
     * 审批人列表（当 approverType = USER 时使用）
     * 使用用户名，如 ["admin", "zhangsan"]
     */
    private List<String> approvers;

    /**
     * 审批角色列表（当 approverType = ROLE 时使用）
     * 使用角色编码，如 ["ROLE_ADMIN", "ROLE_MANAGER"]
     */
    private List<String> approverRoles;

    /**
     * 审批部门列表（当 approverType = DEPARTMENT 时使用）
     * 使用部门编码，如 ["DEPT_RD", "DEPT_OPS"]
     */
    private List<String> approverDepartments;

    /**
     * 审批人变量（当 approverType = VARIABLE 时使用）
     * 格式：${变量名}
     */
    private String approverVariable;

    /**
     * 审批标题
     */
    private String approvalTitle;

    /**
     * 审批内容
     */
    private String approvalContent;

    /**
     * 超时时间（小时），0表示不限制
     */
    private Integer timeoutDuration;

    /**
     * 超时处理方式
     */
    private TimeoutActionEnum timeoutAction;

    /**
     * 是否允许转交
     */
    private Boolean allowDelegate;

    /**
     * 是否允许加签
     */
    private Boolean allowAddSign;

    /**
     * 是否必须填写意见
     */
    private Boolean requireComment;
}
