package com.cmvr.test.flow.builder;

import com.alibaba.fastjson2.JSONObject;
import com.cmvr.test.enums.ActionEnum;
import com.cmvr.test.enums.NodeTypeEnum;
import lombok.Data;

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

/**
 * 运行期用的节点模型
 */
@Data
public class FlowNodeWrapper {
    /**
     * 节点ID
     */
    private String nodeId;

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

    /**
     * 节点类型（start/function/branch/loop/end）
     */
    private NodeTypeEnum nodeType;

    /**
     * 节点执行的行为标识（对应 action）
     */
    private ActionEnum action;

    /**
     * 输入参数定义（inputParams）
     */
    private List<FlowParamDef> inputParams;

    /**
     * 节点参数定义（nodeParams）
     */
    private List<FlowParamDef> nodeParams;

    /**
     * 输出参数定义（outParams）
     */
    private List<FlowParamDef> outParams;

    /**
     * 原始属性（如保留 props）
     */
    private JSONObject rawProperties;

    /**
     * 子节点（当节点为循环节点时，此字段存储该节点包含的子节点）
     */
    private List<FlowNodeWrapper> childNodes;

    /**
     * 子节点的连线关系
     */
    private List<FlowEdge> childNodeEdges = new ArrayList<>();

    /**
     * 子流程（当节点为循环节点或包含子流程时，此字段存储子流程）
     */
    private FlowGraph subGraph;

    /**
     * 分支逻辑
     */
    private List<FlowBranchConditionGroup> branchConditions;
}


