package tech.easyflow.publicapi.dto;

import java.io.Serializable;

/**
 * 工作流公共执行状态中的安全错误信息。
 */
public class PublicWorkflowStatusError implements Serializable {

    private static final long serialVersionUID = 1L;

    private final String code;
    private final String message;
    private final String nodeId;
    private final String nodeName;
    private final boolean retryable;

    /**
     * 创建安全执行错误。
     *
     * @param code 稳定错误标识
     * @param message 安全错误消息
     * @param nodeId 失败节点 ID
     * @param nodeName 失败节点名称
     * @param retryable 当前状态是否仍可能恢复
     */
    public PublicWorkflowStatusError(
            String code,
            String message,
            String nodeId,
            String nodeName,
            boolean retryable) {
        this.code = code;
        this.message = message;
        this.nodeId = nodeId;
        this.nodeName = nodeName;
        this.retryable = retryable;
    }

    /**
     * 获取错误标识。
     *
     * @return 错误标识
     */
    public String getCode() {
        return code;
    }

    /**
     * 获取安全消息。
     *
     * @return 安全消息
     */
    public String getMessage() {
        return message;
    }

    /**
     * 获取失败节点 ID。
     *
     * @return 节点 ID
     */
    public String getNodeId() {
        return nodeId;
    }

    /**
     * 获取失败节点名称。
     *
     * @return 节点名称
     */
    public String getNodeName() {
        return nodeName;
    }

    /**
     * 判断当前状态是否仍可能恢复。
     *
     * @return 是否可重试
     */
    public boolean isRetryable() {
        return retryable;
    }
}
