topology:
# 协议启动的起始点
start_at: "node_ingress_check"
nodes:
# 1. 准入审计
- id: "node_ingress_check"
type: "LOGIC_GATE"
rules:
- condition: "inputs.target_asin.length == 10"
next: "node_fetch_market_data"
- condition: "default"
next: "terminate_error"
# 2. 调用外部数据源 (在 Dictionary 中定义的数据源)
- id: "node_fetch_market_data"
type: "HTTP"
config:
ref: "external_data.amazon_market_data" # 引用字典中的定义
on_success: "node_ai_analysis"
on_failure: "node_retry_strategy"
# 3. AI 专家逻辑执行
- id: "node_ai_analysis"
type: "AI_TASK"
config:
model: "gemini-2.0-flash"
prompt: "基于 {{steps.node_fetch_market_data.output}} 分析该产品的市场竞争力..."
on_success: "node_profit_gate"
# 4. 商业逻辑门限
- id: "node_profit_gate"
type: "LOGIC_GATE"
rules:
- condition: "steps.node_ai_analysis.profit_margin > 0.25"
next: "node_expert_sign_off" # 利润达标,进入人工复核
- condition: "default"
next: "node_direct_push" # 利润一般,跳过人工直接推送结果
# 5. 人工卡点 (HITL)
- id: "node_expert_sign_off"
type: "HITL"
config:
# [1] 授权目标:指定谁来审批
assignee: "{{manifest.creator.me_id}}"
# [2] 交互策略:如何触达专家
interaction:
priority: "HIGH" # 高优先级,触发手机强提醒
channel: ["APP", "SLACK"] # 支持多渠道推送
auth_level: "SIGNATURE" # 要求专家使用私钥签名回传,确保不可抵赖
# [3] 界面呈现:专家在 App 里看到的内容
ui:
title: "选品风控审核"
instruction: "请核对 ASIN {{inputs.target_asin}} 的市场毛利是否真实。"
fields: # 展示给专家看的关键上下文切片
- "steps.ai_core.summary"
- "data.market_api.raw_price"
on_success: "node_direct_push"
on_failure: "node_ai_analysis" # 若专家打回,回到 AI 重新分析
# 6. 最终交付
- id: "node_direct_push"
type: "TERMINUS"
config:
output_ref: "outputs.final_delivery" # 引用字典中的输出定义