707 lines
19 KiB
JSON
707 lines
19 KiB
JSON
{
|
|
"demand": {
|
|
"name": "需求节点",
|
|
"category": "demand",
|
|
"color": "#1890ff",
|
|
"icon": "demand-icon",
|
|
"icon_path": "/assets/icons/demand.svg",
|
|
"shape": "rect",
|
|
"width": 180,
|
|
"height": 50,
|
|
"ports": [
|
|
"top",
|
|
"right",
|
|
"bottom",
|
|
"left"
|
|
],
|
|
"metaFields": [
|
|
{
|
|
"name": "description",
|
|
"type": "string",
|
|
"label": "描述"
|
|
},
|
|
{
|
|
"name": "priority",
|
|
"type": "select",
|
|
"label": "优先级",
|
|
"options": [
|
|
"高",
|
|
"中",
|
|
"低"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"start": {
|
|
"name": "开始",
|
|
"category": "logic",
|
|
"color": "#722ed1",
|
|
"icon": "play-circle",
|
|
"shape": "circle",
|
|
"width": 60,
|
|
"height": 60,
|
|
"ports": [
|
|
"right",
|
|
"bottom",
|
|
"top",
|
|
"left"
|
|
],
|
|
"metaFields": [
|
|
{
|
|
"name": "description",
|
|
"type": "string",
|
|
"label": "描述"
|
|
}
|
|
]
|
|
},
|
|
"end": {
|
|
"name": "结束",
|
|
"category": "logic",
|
|
"color": "#722ed1",
|
|
"icon": "stop-circle",
|
|
"shape": "circle",
|
|
"width": 60,
|
|
"height": 60,
|
|
"ports": [
|
|
"left",
|
|
"top",
|
|
"right",
|
|
"bottom"
|
|
],
|
|
"metaFields": [
|
|
{
|
|
"name": "description",
|
|
"type": "string",
|
|
"label": "描述"
|
|
}
|
|
]
|
|
},
|
|
"condition": {
|
|
"name": "条件",
|
|
"category": "logic",
|
|
"color": "#fa8c16",
|
|
"icon": "question-circle",
|
|
"shape": "diamond",
|
|
"width": 80,
|
|
"height": 80,
|
|
"ports": [
|
|
"top",
|
|
"right",
|
|
"bottom",
|
|
"left"
|
|
],
|
|
"metaFields": [
|
|
{
|
|
"name": "condition",
|
|
"type": "code",
|
|
"label": "条件表达式"
|
|
}
|
|
]
|
|
},
|
|
"and": {
|
|
"name": "AND",
|
|
"category": "logic",
|
|
"color": "#722ed1",
|
|
"icon": "and-icon",
|
|
"shape": "diamond",
|
|
"width": 80,
|
|
"height": 80,
|
|
"ports": [
|
|
"top",
|
|
"right",
|
|
"bottom",
|
|
"left"
|
|
],
|
|
"metaFields": [
|
|
{
|
|
"name": "operation",
|
|
"type": "hidden",
|
|
"defaultValue": "AND"
|
|
}
|
|
]
|
|
},
|
|
"or": {
|
|
"name": "OR",
|
|
"category": "logic",
|
|
"color": "#eb2f96",
|
|
"icon": "or-icon",
|
|
"shape": "diamond",
|
|
"width": 80,
|
|
"height": 80,
|
|
"ports": [
|
|
"top",
|
|
"right",
|
|
"bottom",
|
|
"left"
|
|
],
|
|
"metaFields": [
|
|
{
|
|
"name": "operation",
|
|
"type": "hidden",
|
|
"defaultValue": "OR"
|
|
}
|
|
]
|
|
},
|
|
"httpRequest": {
|
|
"name": "HTTP验证",
|
|
"category": "request",
|
|
"color": "#52c41a",
|
|
"icon": "api",
|
|
"icon_path": "/assets/icons/httpFlow.svg",
|
|
"shape": "rect",
|
|
"width": 150,
|
|
"height": 50,
|
|
"ports": [
|
|
"top",
|
|
"right",
|
|
"bottom",
|
|
"left"
|
|
],
|
|
"metaFields": [
|
|
{
|
|
"name": "method",
|
|
"type": "select",
|
|
"label": "请求方法",
|
|
"options": [
|
|
"GET",
|
|
"POST",
|
|
"PUT",
|
|
"DELETE",
|
|
"PATCH"
|
|
]
|
|
},
|
|
{
|
|
"name": "path",
|
|
"type": "string",
|
|
"label": "请求路径"
|
|
},
|
|
{
|
|
"name": "params",
|
|
"type": "json",
|
|
"label": "查询参数",
|
|
"defaultValue": "{}"
|
|
},
|
|
{
|
|
"name": "headers",
|
|
"type": "json",
|
|
"label": "请求头",
|
|
"defaultValue": "{\"Content-Type\": \"application/json\"}"
|
|
},
|
|
{
|
|
"name": "body",
|
|
"type": "json",
|
|
"label": "请求体",
|
|
"defaultValue": "{\"type\": \"json\", \"content\": \"{}\"}"
|
|
},
|
|
{
|
|
"name": "response",
|
|
"type": "hidden",
|
|
"defaultValue": null
|
|
},
|
|
{
|
|
"name": "endpointId",
|
|
"type": "hidden",
|
|
"defaultValue": ""
|
|
}
|
|
]
|
|
},
|
|
"loadTestHttpRequest": {
|
|
"name": "HTTP 负载测试",
|
|
"category": "perform",
|
|
"color": "#722ed1",
|
|
"icon_path": "/assets/icons/load-test.svg",
|
|
"shape": "rect",
|
|
"width": 180,
|
|
"height": 50,
|
|
"ports": [
|
|
"top",
|
|
"right",
|
|
"bottom",
|
|
"left"
|
|
],
|
|
"metaFields": [
|
|
{
|
|
"name": "endpointId",
|
|
"type": "hidden",
|
|
"defaultValue": ""
|
|
},
|
|
{
|
|
"name": "method",
|
|
"type": "select",
|
|
"label": "请求方法",
|
|
"options": [
|
|
"GET",
|
|
"POST",
|
|
"PUT",
|
|
"DELETE",
|
|
"PATCH"
|
|
],
|
|
"defaultValue": "GET"
|
|
},
|
|
{
|
|
"name": "path",
|
|
"type": "string",
|
|
"label": "请求路径"
|
|
},
|
|
{
|
|
"name": "params",
|
|
"type": "json",
|
|
"label": "查询参数",
|
|
"defaultValue": "{}"
|
|
},
|
|
{
|
|
"name": "headers",
|
|
"type": "json",
|
|
"label": "请求头",
|
|
"defaultValue": "{\"Content-Type\": \"application/json\"}"
|
|
},
|
|
{
|
|
"name": "body",
|
|
"type": "json",
|
|
"label": "请求体",
|
|
"defaultValue": "{\"type\": \"json\", \"content\": \"{}\"}"
|
|
},
|
|
{
|
|
"name": "concurrentUsers",
|
|
"type": "number",
|
|
"label": "并发用户数",
|
|
"defaultValue": 10
|
|
},
|
|
{
|
|
"name": "testDurationSec",
|
|
"type": "number",
|
|
"label": "测试时长(秒)",
|
|
"defaultValue": 30
|
|
},
|
|
{
|
|
"name": "rampUpTimeSec",
|
|
"type": "number",
|
|
"label": "启动时长(秒)",
|
|
"defaultValue": 0,
|
|
"optional": true
|
|
},
|
|
{
|
|
"name": "resultsSummary",
|
|
"type": "textarea",
|
|
"label": "测试结果摘要",
|
|
"readonly": true,
|
|
"rows": 4
|
|
},
|
|
{
|
|
"name": "detailedResults",
|
|
"type": "hidden",
|
|
"defaultValue": null
|
|
}
|
|
]
|
|
},
|
|
"httpLatencyTest": {
|
|
"name": "HTTP 延迟测试",
|
|
"category": "perform",
|
|
"color": "#b37feb",
|
|
"icon_path": "/assets/icons/latency.svg",
|
|
"shape": "rect",
|
|
"width": 180,
|
|
"height": 50,
|
|
"ports": [
|
|
"top",
|
|
"right",
|
|
"bottom",
|
|
"left"
|
|
],
|
|
"metaFields": [
|
|
{
|
|
"name": "endpointId",
|
|
"type": "hidden",
|
|
"defaultValue": ""
|
|
},
|
|
{
|
|
"name": "method",
|
|
"type": "select",
|
|
"label": "请求方法",
|
|
"options": [
|
|
"GET",
|
|
"POST",
|
|
"PUT",
|
|
"DELETE",
|
|
"PATCH"
|
|
],
|
|
"defaultValue": "GET"
|
|
},
|
|
{
|
|
"name": "path",
|
|
"type": "string",
|
|
"label": "请求路径"
|
|
},
|
|
{
|
|
"name": "params",
|
|
"type": "json",
|
|
"label": "查询参数",
|
|
"defaultValue": "{}"
|
|
},
|
|
{
|
|
"name": "headers",
|
|
"type": "json",
|
|
"label": "请求头",
|
|
"defaultValue": "{\"Content-Type\": \"application/json\"}"
|
|
},
|
|
{
|
|
"name": "body",
|
|
"type": "json",
|
|
"label": "请求体",
|
|
"defaultValue": "{\"type\": \"json\", \"content\": \"{}\"}"
|
|
},
|
|
{
|
|
"name": "iterations",
|
|
"type": "number",
|
|
"label": "迭代次数",
|
|
"defaultValue": 10,
|
|
"description": "连续发送请求的次数"
|
|
},
|
|
{
|
|
"name": "delayBetweenMs",
|
|
"type": "number",
|
|
"label": "迭代间隔(ms)",
|
|
"defaultValue": 0,
|
|
"optional": true,
|
|
"description": "每次请求之间的等待时间"
|
|
},
|
|
{
|
|
"name": "latencyStats",
|
|
"type": "textarea",
|
|
"label": "延迟统计",
|
|
"readonly": true,
|
|
"rows": 4,
|
|
"description": "例如: Min, Max, Avg, P95, P99, Errors"
|
|
},
|
|
{
|
|
"name": "detailedLatencies",
|
|
"type": "hidden",
|
|
"defaultValue": null
|
|
}
|
|
]
|
|
},
|
|
"securityScanTrigger": {
|
|
"name": "安全扫描",
|
|
"category": "safety",
|
|
"color": "#f5222d",
|
|
"icon_path": "/assets/icons/safety.svg",
|
|
"shape": "rect",
|
|
"width": 180,
|
|
"height": 50,
|
|
"ports": [
|
|
"top",
|
|
"right",
|
|
"bottom",
|
|
"left"
|
|
],
|
|
"metaFields": [
|
|
{
|
|
"name": "scanTarget",
|
|
"type": "string",
|
|
"label": "扫描目标",
|
|
"description": "例如 URL, IP, 服务名"
|
|
},
|
|
{
|
|
"name": "scanProfile",
|
|
"type": "select",
|
|
"label": "扫描配置/策略",
|
|
"options": [
|
|
"快速扫描",
|
|
"全面扫描",
|
|
"OWASP Top10"
|
|
],
|
|
"defaultValue": "快速扫描"
|
|
},
|
|
{
|
|
"name": "apiKeyRef",
|
|
"type": "string",
|
|
"label": "扫描工具API密钥引用",
|
|
"optional": true,
|
|
"description": "引用环境变量或配置"
|
|
},
|
|
{
|
|
"name": "waitForResult",
|
|
"type": "boolean",
|
|
"label": "等待扫描结果",
|
|
"defaultValue": false
|
|
},
|
|
{
|
|
"name": "scanId",
|
|
"type": "string",
|
|
"label": "扫描任务ID",
|
|
"readonly": true
|
|
},
|
|
{
|
|
"name": "scanStatus",
|
|
"type": "string",
|
|
"label": "扫描状态",
|
|
"readonly": true
|
|
},
|
|
{
|
|
"name": "scanResultSummary",
|
|
"type": "textarea",
|
|
"label": "扫描结果摘要",
|
|
"readonly": true,
|
|
"rows": 3
|
|
},
|
|
{
|
|
"name": "detailedScanResult",
|
|
"type": "hidden"
|
|
}
|
|
]
|
|
},
|
|
"authCheck": {
|
|
"name": "认证授权检查",
|
|
"category": "safety",
|
|
"color": "#faad14",
|
|
"icon_path": "/assets/icons/auth-check.svg",
|
|
"shape": "rect",
|
|
"width": 170,
|
|
"height": 50,
|
|
"ports": [
|
|
"top",
|
|
"right",
|
|
"bottom",
|
|
"left"
|
|
],
|
|
"metaFields": [
|
|
{
|
|
"name": "endpointInfo",
|
|
"type": "json",
|
|
"label": "目标接口信息",
|
|
"defaultValue": "{\"method\":\"GET\", \"path\":\"/api/resource\"}"
|
|
},
|
|
{
|
|
"name": "credentials",
|
|
"type": "json",
|
|
"label": "使用的凭证",
|
|
"defaultValue": "{\"type\":\"token\", \"value\":\"{input.token}\"}",
|
|
"description": "支持从输入引用值"
|
|
},
|
|
{
|
|
"name": "expectedStatus",
|
|
"type": "select",
|
|
"label": "预期HTTP状态",
|
|
"options": [
|
|
"2xx (成功)",
|
|
"401 (未授权)",
|
|
"403 (禁止访问)",
|
|
"其他"
|
|
],
|
|
"defaultValue": "2xx (成功)"
|
|
},
|
|
{
|
|
"name": "customExpectedStatus",
|
|
"type": "number",
|
|
"label": "预期状态码(其他)",
|
|
"optional": true
|
|
},
|
|
{
|
|
"name": "checkResult",
|
|
"type": "string",
|
|
"label": "检查结果",
|
|
"readonly": true
|
|
},
|
|
{
|
|
"name": "responseDetails",
|
|
"type": "hidden"
|
|
}
|
|
]
|
|
},
|
|
"dataMaskingCheck": {
|
|
"name": "数据脱敏检查",
|
|
"category": "compliance",
|
|
"color": "#595959",
|
|
"icon_path": "/assets/icons/masking-check.svg",
|
|
"shape": "rect",
|
|
"width": 160,
|
|
"height": 50,
|
|
"ports": [
|
|
"top",
|
|
"right",
|
|
"bottom",
|
|
"left"
|
|
],
|
|
"metaFields": [
|
|
{
|
|
"name": "dataFieldPath",
|
|
"type": "string",
|
|
"label": "检查字段路径",
|
|
"defaultValue": "body.creditCard",
|
|
"description": "使用点标记法指定字段"
|
|
},
|
|
{
|
|
"name": "expectedFormat",
|
|
"type": "string",
|
|
"label": "预期脱敏格式",
|
|
"defaultValue": "**** **** **** 1234",
|
|
"description": "用*表示脱敏位"
|
|
},
|
|
{
|
|
"name": "checkResult",
|
|
"type": "string",
|
|
"label": "检查结果",
|
|
"readonly": true
|
|
},
|
|
{
|
|
"name": "actualValue",
|
|
"type": "hidden"
|
|
}
|
|
]
|
|
},
|
|
"failureInjection": {
|
|
"name": "故障注入",
|
|
"category": "reliability",
|
|
"color": "#cf1322",
|
|
"icon_path": "/assets/icons/chaos.svg",
|
|
"shape": "rect",
|
|
"width": 160,
|
|
"height": 50,
|
|
"ports": [
|
|
"top",
|
|
"right",
|
|
"bottom",
|
|
"left"
|
|
],
|
|
"metaFields": [
|
|
{
|
|
"name": "targetResource",
|
|
"type": "string",
|
|
"label": "注入目标资源",
|
|
"description": "e.g., service:my-app, pod:app-*, db:orders"
|
|
},
|
|
{
|
|
"name": "failureType",
|
|
"type": "select",
|
|
"label": "故障类型",
|
|
"options": [
|
|
"latency",
|
|
"error",
|
|
"crash",
|
|
"network_loss",
|
|
"resource_limit"
|
|
]
|
|
},
|
|
{
|
|
"name": "magnitude",
|
|
"type": "string",
|
|
"label": "故障程度",
|
|
"description": "e.g., latency: 500ms, error: 503, network_loss: 80%"
|
|
},
|
|
{
|
|
"name": "durationSec",
|
|
"type": "number",
|
|
"label": "持续时间(秒)",
|
|
"defaultValue": 60
|
|
},
|
|
{
|
|
"name": "injectionStatus",
|
|
"type": "string",
|
|
"label": "注入状态",
|
|
"readonly": true
|
|
},
|
|
{
|
|
"name": "details",
|
|
"type": "hidden"
|
|
}
|
|
]
|
|
},
|
|
"agentBrowserTask": {
|
|
"name": "Agent UI任务",
|
|
"category": "ui",
|
|
"color": "#08979c",
|
|
"icon_path": "/assets/icons/agent.svg",
|
|
"shape": "rect",
|
|
"width": 180,
|
|
"height": 60,
|
|
"ports": [
|
|
"top",
|
|
"right",
|
|
"bottom",
|
|
"left"
|
|
],
|
|
"metaFields": [
|
|
{
|
|
"name": "targetUrl",
|
|
"type": "string",
|
|
"label": "目标页面URL"
|
|
},
|
|
{
|
|
"name": "taskPrompt",
|
|
"type": "textarea",
|
|
"label": "任务指令 (Prompt)",
|
|
"rows": 5,
|
|
"description": "给 Agent 的详细操作指令"
|
|
},
|
|
{
|
|
"name": "agentModel",
|
|
"type": "string",
|
|
"label": "Agent模型/配置",
|
|
"optional": true,
|
|
"defaultValue": "default_browser_agent"
|
|
},
|
|
{
|
|
"name": "inputDataUsage",
|
|
"type": "json",
|
|
"label": "输入数据使用方式",
|
|
"optional": true,
|
|
"defaultValue": "{\"map\": [{\"from\": \"input.username\", \"to\": \"form.user\"}, {\"from\": \"input.password\", \"to\": \"form.pass\"}]}",
|
|
"description": "定义如何将输入映射到表单或Prompt"
|
|
},
|
|
{
|
|
"name": "validationCriteria",
|
|
"type": "textarea",
|
|
"label": "成功/失败标准",
|
|
"optional": true,
|
|
"description": "如何判断 Agent 执行结果是否符合预期"
|
|
},
|
|
{
|
|
"name": "executionResult",
|
|
"type": "string",
|
|
"label": "执行结果",
|
|
"readonly": true
|
|
},
|
|
{
|
|
"name": "agentLog",
|
|
"type": "textarea",
|
|
"label": "Agent 执行日志",
|
|
"readonly": true,
|
|
"rows": 4
|
|
},
|
|
{
|
|
"name": "screenshotUrl",
|
|
"type": "string",
|
|
"label": "截图链接",
|
|
"readonly": true,
|
|
"optional": true
|
|
},
|
|
{
|
|
"name": "extractedData",
|
|
"type": "hidden"
|
|
}
|
|
]
|
|
},
|
|
"delayNode": {
|
|
"name": "延迟等待",
|
|
"category": "logic",
|
|
"color": "#bfbfbf",
|
|
"icon_path": "/assets/icons/delay.svg",
|
|
"shape": "circle",
|
|
"width": 60,
|
|
"height": 60,
|
|
"ports": [
|
|
"top",
|
|
"right",
|
|
"bottom",
|
|
"left"
|
|
],
|
|
"metaFields": [
|
|
{
|
|
"name": "delayMs",
|
|
"type": "number",
|
|
"label": "延迟时间 (ms)",
|
|
"defaultValue": 1000
|
|
}
|
|
]
|
|
}
|
|
} |