371 lines
9.4 KiB
JSON
371 lines
9.4 KiB
JSON
{
|
||
"schema_version": 1,
|
||
"diagram_type": "workflow",
|
||
"meta": {
|
||
"title": "元境幻生渠道、模型与智能调度目标逻辑",
|
||
"locale": "zh-CN",
|
||
"output": "docs/miragenflow-channel-model-logic.html",
|
||
"animation": "none",
|
||
"visual_preset": "blueprint",
|
||
"quality_profile": "showcase",
|
||
"viewBox": [930, 590],
|
||
"legend": {
|
||
"mode": "all",
|
||
"entries": {
|
||
"frontend": { "label": "管理页面" },
|
||
"backend": { "label": "目录与调度" },
|
||
"messagebus": { "label": "队列与切换" },
|
||
"security": { "label": "状态与治理" },
|
||
"external": { "label": "用户与供应商" }
|
||
}
|
||
},
|
||
"views": [
|
||
{
|
||
"id": "page-responsibilities",
|
||
"label": "页面职责",
|
||
"focus": ["channel-page", "discovery", "model-page", "group-page", "governance-page"],
|
||
"note": "四类管理职责分开,模型发现只提供候选,不再承载无关新增表单。"
|
||
},
|
||
{
|
||
"id": "model-routing",
|
||
"label": "模型与路由",
|
||
"focus": ["discovery", "model-page", "group-page", "route-policy", "scheduler"],
|
||
"note": "公开模型目录与渠道路由池分离,分组内保存明确的渠道优先级。"
|
||
},
|
||
{
|
||
"id": "smart-routing",
|
||
"label": "智能调度",
|
||
"focus": ["user-task", "scheduler", "queue-node", "worker", "provider"],
|
||
"note": "用户只选择公开模型,系统按资格、优先级、健康和负载选择实际渠道。"
|
||
},
|
||
{
|
||
"id": "failure-governance",
|
||
"label": "失败与对账",
|
||
"focus": ["worker", "fallback", "unknown-result", "reconcile", "governance-page"],
|
||
"note": "确认失败才切换,供应商结果未知时暂停结算并进入人工对账。"
|
||
}
|
||
]
|
||
},
|
||
"lanes": [
|
||
{ "id": "admin", "label": "管理页面" },
|
||
{ "id": "catalog", "label": "目录与路由配置" },
|
||
{ "id": "runtime", "label": "任务运行时" },
|
||
{ "id": "exception", "label": "失败与治理", "variant": "exception" }
|
||
],
|
||
"groups": [
|
||
{ "id": "catalog-boundary", "label": "目录边界", "lane": "catalog", "fromCol": 0, "toCol": 2, "variant": "emphasis" },
|
||
{ "id": "routing-boundary", "label": "路由输入", "lane": "catalog", "fromCol": 3, "toCol": 5, "variant": "dashed" },
|
||
{ "id": "recovery-boundary", "label": "需要人工判断的异常", "lane": "exception", "fromCol": 2, "toCol": 5, "variant": "security" }
|
||
],
|
||
"mainPath": ["user-task", "scheduler", "queue-node", "worker", "provider"],
|
||
"nodes": [
|
||
{
|
||
"id": "channel-page",
|
||
"lane": "admin",
|
||
"col": 0,
|
||
"type": "frontend",
|
||
"label": "渠道管理",
|
||
"sublabel": "地址 · 凭证 · 拉取",
|
||
"tag": "现有职责",
|
||
"width": 96
|
||
},
|
||
{
|
||
"id": "model-page",
|
||
"lane": "admin",
|
||
"col": 1,
|
||
"type": "frontend",
|
||
"label": "模型管理",
|
||
"sublabel": "目录 · 参数 · 上架",
|
||
"tag": "不手填渠道",
|
||
"width": 96
|
||
},
|
||
{
|
||
"id": "group-page",
|
||
"lane": "admin",
|
||
"col": 3,
|
||
"type": "frontend",
|
||
"label": "分组管理",
|
||
"sublabel": "模型 × 渠道 × 顺序",
|
||
"tag": "建立路由池",
|
||
"width": 96
|
||
},
|
||
{
|
||
"id": "governance-page",
|
||
"lane": "admin",
|
||
"col": 5,
|
||
"type": "frontend",
|
||
"label": "运行治理",
|
||
"sublabel": "健康 · 任务 · 审计",
|
||
"tag": "独立页面",
|
||
"width": 110
|
||
},
|
||
{
|
||
"id": "discovery",
|
||
"lane": "catalog",
|
||
"col": 0,
|
||
"type": "backend",
|
||
"label": "模型发现",
|
||
"sublabel": "上游列表 → 候选",
|
||
"tag": "不自动创建",
|
||
"width": 96
|
||
},
|
||
{
|
||
"id": "catalog-node",
|
||
"lane": "catalog",
|
||
"col": 2,
|
||
"type": "backend",
|
||
"label": "公开模型目录",
|
||
"sublabel": "公开 ID · 能力 · 分辨率",
|
||
"tag": "人工上架",
|
||
"width": 110
|
||
},
|
||
{
|
||
"id": "route-policy",
|
||
"lane": "catalog",
|
||
"col": 3,
|
||
"type": "backend",
|
||
"label": "路由策略",
|
||
"sublabel": "资格 · 优先级 · 版本",
|
||
"tag": "调度输入",
|
||
"width": 96
|
||
},
|
||
{
|
||
"id": "provider",
|
||
"lane": "catalog",
|
||
"col": 5,
|
||
"type": "external",
|
||
"label": "上游供应商",
|
||
"sublabel": "公开 ID ≠ 请求 ID",
|
||
"tag": "外部接口",
|
||
"width": 110
|
||
},
|
||
{
|
||
"id": "user-task",
|
||
"lane": "runtime",
|
||
"col": 0,
|
||
"type": "external",
|
||
"label": "用户任务",
|
||
"sublabel": "选择公开模型",
|
||
"tag": "不暴露供应商",
|
||
"width": 96
|
||
},
|
||
{
|
||
"id": "scheduler",
|
||
"lane": "runtime",
|
||
"col": 2,
|
||
"type": "backend",
|
||
"label": "智能调度",
|
||
"sublabel": "过滤 · 排序 · 选路",
|
||
"tag": "保存策略快照",
|
||
"width": 110
|
||
},
|
||
{
|
||
"id": "queue-node",
|
||
"lane": "runtime",
|
||
"col": 3,
|
||
"type": "messagebus",
|
||
"label": "任务队列",
|
||
"sublabel": "幂等入队 · 租约",
|
||
"tag": "异步",
|
||
"width": 86
|
||
},
|
||
{
|
||
"id": "worker",
|
||
"lane": "runtime",
|
||
"col": 5,
|
||
"type": "backend",
|
||
"label": "任务执行",
|
||
"sublabel": "尝试 · 结果 · 结算",
|
||
"tag": "记录每次调用",
|
||
"width": 106
|
||
},
|
||
{
|
||
"id": "fallback",
|
||
"lane": "exception",
|
||
"col": 2,
|
||
"type": "messagebus",
|
||
"label": "故障切换",
|
||
"sublabel": "下一候选渠道",
|
||
"width": 72
|
||
},
|
||
{
|
||
"id": "unknown-result",
|
||
"lane": "exception",
|
||
"col": 3,
|
||
"type": "security",
|
||
"label": "未知结果",
|
||
"sublabel": "暂停结算与重试",
|
||
"width": 60
|
||
},
|
||
{
|
||
"id": "reconcile",
|
||
"lane": "exception",
|
||
"col": 5,
|
||
"type": "frontend",
|
||
"label": "人工对账",
|
||
"sublabel": "确认成功或失败",
|
||
"tag": "恢复闭环",
|
||
"width": 100
|
||
}
|
||
],
|
||
"edges": [
|
||
{
|
||
"id": "channel-discovery",
|
||
"from": "channel-page",
|
||
"to": "discovery",
|
||
"label": "主动拉取",
|
||
"variant": "emphasis",
|
||
"route": "drop",
|
||
"fromSide": "bottom",
|
||
"toSide": "top",
|
||
"labelAt": [150, 166]
|
||
},
|
||
{
|
||
"id": "discovery-model",
|
||
"from": "discovery",
|
||
"to": "model-page",
|
||
"variant": "emphasis"
|
||
},
|
||
{
|
||
"id": "catalog-model",
|
||
"from": "model-page",
|
||
"to": "catalog-node",
|
||
"label": "维护公开参数",
|
||
"variant": "emphasis",
|
||
"route": "drop",
|
||
"fromSide": "bottom",
|
||
"toSide": "top",
|
||
"labelAt": [320, 166]
|
||
},
|
||
{
|
||
"id": "model-group",
|
||
"from": "model-page",
|
||
"to": "group-page"
|
||
},
|
||
{
|
||
"id": "group-route",
|
||
"from": "group-page",
|
||
"to": "route-policy",
|
||
"variant": "emphasis",
|
||
"route": "drop",
|
||
"fromSide": "bottom",
|
||
"toSide": "top"
|
||
},
|
||
{
|
||
"id": "governance-route",
|
||
"from": "governance-page",
|
||
"to": "route-policy",
|
||
"label": "健康进入策略",
|
||
"variant": "dashed",
|
||
"route": "drop",
|
||
"fromSide": "bottom",
|
||
"toSide": "top",
|
||
"bias": 0.5,
|
||
"labelAt": [530, 166]
|
||
},
|
||
{
|
||
"id": "route-scheduler",
|
||
"from": "route-policy",
|
||
"to": "scheduler",
|
||
"label": "发布策略版本",
|
||
"variant": "emphasis",
|
||
"route": "drop",
|
||
"fromSide": "bottom",
|
||
"toSide": "top",
|
||
"labelAt": [365, 290]
|
||
},
|
||
{
|
||
"id": "submit-task",
|
||
"from": "user-task",
|
||
"to": "scheduler",
|
||
"label": "公开模型 + 参数",
|
||
"variant": "emphasis"
|
||
},
|
||
{
|
||
"id": "schedule-queue",
|
||
"from": "scheduler",
|
||
"to": "queue-node",
|
||
"variant": "emphasis",
|
||
"route": "straight",
|
||
"fromSide": "right",
|
||
"toSide": "left"
|
||
},
|
||
{
|
||
"id": "queue-worker",
|
||
"from": "queue-node",
|
||
"to": "worker",
|
||
"label": "租约执行",
|
||
"role": "async",
|
||
"labelAt": [525, 367]
|
||
},
|
||
{
|
||
"id": "call-provider",
|
||
"from": "worker",
|
||
"to": "provider",
|
||
"variant": "emphasis"
|
||
},
|
||
{
|
||
"id": "provider-result",
|
||
"from": "provider",
|
||
"to": "worker",
|
||
"variant": "dashed",
|
||
"role": "return",
|
||
"route": "outside-right",
|
||
"fromSide": "right",
|
||
"toSide": "right",
|
||
"channelX": 740
|
||
},
|
||
{
|
||
"id": "retryable-failure",
|
||
"from": "worker",
|
||
"to": "fallback",
|
||
"variant": "security",
|
||
"role": "error",
|
||
"route": "drop",
|
||
"fromSide": "bottom",
|
||
"toSide": "top"
|
||
},
|
||
{
|
||
"id": "next-candidate",
|
||
"from": "fallback",
|
||
"to": "scheduler",
|
||
"variant": "dashed",
|
||
"role": "return",
|
||
"route": "straight",
|
||
"fromSide": "top",
|
||
"toSide": "bottom"
|
||
},
|
||
{
|
||
"id": "unknown-provider-result",
|
||
"from": "provider",
|
||
"to": "unknown-result",
|
||
"variant": "security",
|
||
"role": "error",
|
||
"via": [[760, 243], [760, 540], [430, 540]],
|
||
"fromSide": "right",
|
||
"toSide": "bottom",
|
||
"labelAt": [760, 540]
|
||
},
|
||
{
|
||
"id": "manual-reconcile",
|
||
"from": "unknown-result",
|
||
"to": "reconcile",
|
||
"label": "人工确认",
|
||
"variant": "security",
|
||
"role": "error"
|
||
}
|
||
],
|
||
"cards": [
|
||
{
|
||
"dot": "cyan",
|
||
"title": "职责分层:渠道 / 模型 / 分组 / 套餐",
|
||
"items": []
|
||
},
|
||
{
|
||
"dot": "emerald",
|
||
"title": "调度闭环:过滤 / 优先级 / 健康 / 对账",
|
||
"items": []
|
||
}
|
||
]
|
||
}
|