package com.fs.his.vo;

import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * AI工作流导出JSON VO
 *
 * @author fs
 * @date 2026-01-06
 */
@Data
public class FsAiWorkflowExportVO implements Serializable {
    private static final long serialVersionUID = 1L;

    /** 工作流ID */
    private Long workflowId;

    /** 工作流名称 */
    private String workflowName;

    /** 工作流描述 */
    private String workflowDesc;

    /** 工作流类型 1对话流程 2任务流程 3审批流程 */
    private Integer workflowType;

    /** 工作流类型名称 */
    private String workflowTypeName;

    /** 版本号 */
    private Integer version;

    /** 节点列表 */
    private List<NodeInfo> nodes;

    /** 连接列表(按顺序) */
    private List<EdgeInfo> edges;

    /** 节点信息 */
    @Data
    public static class NodeInfo implements Serializable {
        private static final long serialVersionUID = 1L;

        /** 节点唯一标识 */
        private String nodeKey;

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

        /** 节点类型编码 */
        private String nodeType;

        /** 节点类型名称 */
        private String nodeTypeName;

        /** 节点配置JSON */
        private String nodeConfig;

        /** X坐标 */
        private Integer posX;

        /** Y坐标 */
        private Integer posY;

        /** 排序 */
        private Integer sortOrder;

        /**
         * 语音URL
         */
        private String voiceUrl;
    }

    /** 连接信息 */
    @Data
    public static class EdgeInfo implements Serializable {
        private static final long serialVersionUID = 1L;

        /** 连线唯一标识 */
        private String edgeKey;

        /** 连线标签 */
        private String edgeLabel;

        /** 源节点Key */
        private String sourceNodeKey;

        /** 源节点名称 */
        private String sourceNodeName;

        /** 目标节点Key */
        private String targetNodeKey;

        /** 目标节点名称 */
        private String targetNodeName;

        /** 条件表达式 */
        private String conditionExpr;

        /** 排序 */
        private Integer sortOrder;
    }
}
