package com.cmvr.test.flow.runtime.message;

import com.alibaba.fastjson2.JSONObject;
import com.cmvr.test.enums.ActionEnum;
import com.cmvr.test.flow.builder.FlowGraph;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * 单个节点的执行输入消息
 */
@Data
public class TaskNodeExecuteMessage {

    /**
     * 实例ID
     */
    private String instId;

    /**
     * 任务ID
     */
    private String taskId;

    /**
     * 检测项ID（用于定位流程）
     */
    private String itemId;

    /**
     * 节点ID
     */
    private String nodeId;

    /**
     * 待执行检测项数
     */
    private int pendingItemCount;

    /**
     * 流程执行图
     */
    private transient FlowGraph graph;

    /**
     * 循环节点执行到第几次
     * 默认 0 次
     */
    private transient int loopNum = 0;

    /**
     * 全局迭代路径（嵌套循环时用）
     */
    private List<Integer> iterations = new ArrayList<>();

    private Object loopArray;

    /**
     * 节点名称
     */
    private String nodeName;

    /**
     * 节点类型（START、FUNCTION、END 等）
     */
    private String nodeType;

    /**
     * 节点行为（动作标识符）
     */
    private ActionEnum action;

    /**
     * 是否试运行
     */
    private boolean trial;

    /**
     * 所属终端ID
     */
    private String terminalId;

    /**
     * 节点入参
     */
    private JSONObject inputParams;

    /**
     * 上游输出参数（来自上一个节点的输出）
     */
    private JSONObject upStreamOutput;

    /**
     * 循环参数(项目执行时用到)
     */
    private JSONObject loopDetail;

}
