import {ConfigurableNodeDefinition, NodeType, NodeCategory} from './types';

/**
 * Jenkins构建节点定义（纯配置）
 * 使用 BaseNode 组件渲染，无需自定义渲染代码
 */
export const JenkinsBuildNodeDefinition: ConfigurableNodeDefinition = {
    nodeCode: "JENKINS_BUILD",
    nodeName: "Jenkins构建",
    nodeType: NodeType.JENKINS_BUILD,
    category: NodeCategory.TASK,
    description: "通过Jenkins执行构建任务",

    // 渲染配置（配置驱动）
    renderConfig: {
        shape: 'rounded-rect',
        size: {width: 140, height: 48},
        icon: {
            type: 'emoji',
            content: '🔨',
            size: 32
        },
        theme: {
            primary: '#f59e0b',
            secondary: '#d97706',
            selectedBorder: '#3b82f6',
            hoverBorder: '#f59e0b',
            gradient: ['#ffffff', '#fef3c7']
        },
        handles: {
            input: true,
            output: true
        },
        features: {
            showBadge: true,
            showHoverMenu: true
        }
    },

    // 基本配置Schema
    configSchema: {
        type: "object",
        title: "基本配置",
        description: "节点的基本信息和Jenkins构建配置参数",
        properties: {
            nodeName: {
                type: "string",
                title: "节点名称",
                description: "节点在流程图中显示的名称",
                default: "Jenkins构建"
            },
            nodeCode: {
                type: "string",
                title: "节点编码",
                description: "节点的唯一标识符",
                default: "JENKINS_BUILD"
            },
            description: {
                type: "string",
                title: "节点描述",
                description: "节点的详细说明",
                default: "通过Jenkins执行构建任务"
            },
            jenkinsUrl: {
                type: "string",
                title: "Jenkins服务器地址",
                description: "Jenkins服务器的完整URL地址",
                default: "http://jenkins.example.com:8080",
                format: "uri"
            }
        },
        required: ["nodeName", "nodeCode", "jenkinsUrl"]
    },
    // ✅ 输出能力定义（只读展示，传递给后端）
    outputs: [
        {
            name: "buildNumber",
            title: "构建编号",
            type: "number",
            description: "Jenkins构建的唯一编号",
            example: 123,
            required: true
        },
        {
            name: "buildStatus",
            title: "构建状态",
            type: "string",
            enum: ["SUCCESS", "FAILURE", "UNSTABLE", "ABORTED"],
            description: "构建执行的结果状态",
            example: "SUCCESS",
            required: true
        },
        {
            name: "buildUrl",
            title: "构建URL",
            type: "string",
            description: "Jenkins构建页面的访问地址",
            example: "http://jenkins.example.com/job/app/123/",
            required: true
        },
        {
            name: "artifactUrl",
            title: "构建产物地址",
            type: "string",
            description: "构建生成的jar/war包下载地址",
            example: "http://jenkins.example.com/job/app/123/artifact/target/app-1.0.0.jar",
            required: false
        },
        {
            name: "gitCommitId",
            title: "Git提交ID",
            type: "string",
            description: "本次构建使用的Git提交哈希值",
            example: "a3f5e8d2c4b1a5e9f2d3e7b8c9d1a2f3e4b5c6d7",
            required: true
        },
        {
            name: "buildDuration",
            title: "构建时长",
            type: "number",
            description: "构建执行的时长（秒）",
            example: 120,
            required: true
        }
    ]
};

// ✅ 不再需要单独的渲染组件，使用 BaseNode 即可
