ZY Action Platform · 落地方案

最基础版「AI 行动系统」Demo 落地方案

把「建数据源 → 建管道 → 导数据 → 建本体 → 查询 → AI 自动工作流 → 人工审批 → 邮件/飞书通知」用真实功能串成一条可演示、可复现、可验收的 AI 自动化经营闭环。

适用范围:AIP + Foundry(P1/P2 双产品) 形态:开发/演示手册 全部步骤为已实现功能

文档卡片

项目说明
方案名称最基础版「AI 行动系统」Demo——一条端到端的 AI 自动化经营闭环
业务主题库存水位监控 → AI 研判 → 自动补货 → 人工审批 → 多渠道通知 → 证据回看(沿用 Foundry bootstrap 预置的 inventory / purchase_request 演示对象,无需造数据)
覆盖产品P1 AIP智能查询 / Agent / 工作流 / Automation Copilot / 飞书与邮件通知 P2 Foundry数据源 / 数据集 / 同步 / 数据管道 / 本体(对象+动作)/ 版本与动作审批 / 语义查询 / 血缘 / 审计
Demo 时长完整分幕约 40~60 分钟;验收最小路线约 15 分钟(第 6 节标 ⭐ 项);3 分钟台词见第 7 节
参考依据action/wiki/upgrade-v5/UPGRADE-PLAN.md(V5 现状)、wiki/docs/{aip,foundry}/docs/story/、bootstrap/seed 代码与冒烟脚本 temp/smoke_foundry.sh 撰写;端点以当前分支代码为准
前置结论平台已具备「事件驱动 + AI 执行 + 人工审批 + 通知」完整能力,无需新增开发即可演示;本方案不做代码改动,只做「如何把已实现功能串起来」的操作编排

1 这个 Demo 是什么

1.1 一句话定义

最基础版「AI 行动系统」=智能体/自动化 负责发现问题、做决策、发起行动数据平台 负责存数据、定语义、审动作、留证据,最后把结果主动推给邮件与飞书。人只在该拍板的地方拍板(审批),其余全自动。

它回答演示中最常被问的四个问题:

  1. AI 怎么“行动”而不是只“回答”? —— Agent / 工作流调用本体 Action 写真实数据(走写路径安全流水线:校验 → 授权 → 幂等 → 乐观锁 → 审计)。
  2. 自动化从哪来? —— 手工搭(工作流编排)或用一句话让 Automation Copilot 建(AI 辅助配置)。
  3. 什么时候自动触发? —— 手动 / cron 定时 / webhook / Foundry 对象变化事件(event)四种触发器。
  4. AI 闯祸怎么办? —— 人工审批卡点(Foundry 工作流 human_task、本体版本/动作审批)+ 全链路审计与对象变化事件可回看。

1.2 验收标准(做完后应能逐项打勾)

  1. 数据层:演示页能看到一个已建/预置数据源并显示可连接;数据管道可创建并运行成功(rows_in/rows_out 有值),或数据同步/数据集产生一条成功记录。
  2. 本体层:能看到带「对象+属性+动作」的本体(如 inventory 库存 / purchase_request 采购申请),动作能通过页面或 API 执行并真正改到业务表。
  3. 查询层:一句话查数(NLQ)返回 SQL+表格/图表;对象查询/语义检索/指标至少命中一条真实数据。
  4. 自动化层:存在至少一条已发布工作流,可用「立即运行」跑出一次成功执行,节点回放可见;并用 Automation Copilot 对话再生成一条新工作流。
  5. 事件驱动:执行一次本体动作 → EventScheduler 按 ~30s 轮询拾取 change-event 后触发 event 工作流,自动完成后续动作与通知(端到端时长 = 1 个轮询周期 + 执行时长,验收口径 ≤90s,实测约 24~32s;可配置 filters 防自触发)。
  6. 人工审批:Foundry 工作流中出现一条 human_task 待办,审批人 approve 后实例继续走完;或有本体版本审批 approve/reject 放行案例。
  7. 通知层:邮件/飞书「状态」页为已配置状态;工作流通知节点至少产生一条 internal 审计通知,email/feishu 视凭证可选演示。
  8. 证据层:审计日志含 ACTION_EXECUTE / WORKFLOW_NOTIFICATION 等事件;对象变化事件 change-events 可查;血缘能看到 源→管道→对象 链路。

1.3 范围边界(诚实的“不做什么”)

  • 本方案只串 AIP + Foundry 两条产品线的最小闭环;Apollo 部署交付、Gotham 情报研判、Swift 卫星结算不在主剧情内(可作延伸演示,见 §5.10)。
  • 凡是依赖 LLM 的环节(AI 分析文案、Copilot 生成 DAG、Text2SQL)结果不完全确定,脚本给的是“标准答法”,演示时如跑偏就用自然语言补一句纠正,不算 bug。
  • 「自动导入」是受控的三种姿势(§5.3),不是任意数据即传即用;演示数据由 bootstrap 每次启动幂等重建,重启即还原,适合演练不适合留档。
  • AIP 工作流引擎(AI 自动化)与 Foundry 工作流引擎(业务流程审批)是两套引擎,本方案通过“Foundry 对象变化事件 → AIP event 工作流”“AIP 执行动作 → Foundry 审批任务”把它们接成一条跨产品链(§5.8 / §5.10),而不是把它们做成一套。

2 产品与能力落点

“AI 行动系统”每个环节在平台里都有一个真实落点:

系统环节承担产品 / 模块前端入口(示例)后端 API(前缀 /api/v1,AIP 前缀 /aip-api/v1)
数据接入与治理Foundry 数据源 / 数据集 / 同步 / 管道 / 质量 / 血缘数据源、数据集、同步、管道、SQL 工作台、血缘/datasources/datasets/sync/targets/pipelines/lineage
语义建模Foundry 本体四层(对象/属性/链接/动作)+ 指标语义层对象工作台、动作测试、指标管理、YAML/ontology/objects/ontology/actions/*/metrics/*/ontology/change-events
智能查询AIP NLQ(意图→RAG→Text2SQL)+ Foundry 对象/语义查询AIP 智能查询 /chat、语义检索、对象查询/chat/ontology/semantic-search/objects/:id/query
AI 决策/行动AIP Agent(工具执行)+ 工作流(execute_foundry_action 节点)+ OAG 对象路Agent 运行 /agent、工作流编排、工具管理/agents/tasks/tools/:name/execute/workflows/oag/actions/:name/execute
AI 辅助配置AIP Automation Copilot(function calling 自动建自动化)管理后台 → AI 自动化经营 /admin/automation/automation/chat(SSE)、/automation/automations
触发调度AIP cron / webhook / event 触发器 + 统一调度器工作流编排(触发器配置)/workflows/webhooks/:name/scheduler/jobs
人工审批Foundry 业务流程工作流(human_task)+ 本体版本/动作审批工作流(我的待办/审批)、版本历史/workflows/tasks/my/tasks/:id/approve|reject/ontology/drafts/:vid/approve
通知触达AIP internal / 飞书 / 邮件三渠道飞书设置、邮件设置、站内通知中心/feishu/status|push/email/status|test
证据留痕AIP 审计 / Foundry 审计 + 血缘 + 事件审计日志、AI 决策审计、血缘、对象变化事件/audit/logs/audit/events/lineage

3 一条端到端链路(全景图)

主剧情推荐的业务闭环(点击各节跳到对应操作):

业务事件:库存 water_level 低于 reorder_point │ ▼ ① 数据在库:Foundry 业务表 inventory(bootstrap 预置,可再经“数据管道/同步”自动灌数 §5.2-5.3) │ ▼ ② 语义可读:本体对象 inventory + 动作 update_inventory / create_purchase_request(§5.4 查询、§5.5-5.6 AI 可懂) │ ▼ ③ AI 发现:AIP /chat 一句话“哪些库存低于补货点?”(§5.5 查询层)或 Agent 任务自动查(§5.9) │ ▼ ④ AI 行动:AIP 工作流 / Copilot 生成的自动化,经 execute_foundry_action 调用 Foundry 动作写库(§5.6-5.7) │ ├─ 写路径:校验 → 权限 → 幂等 → 乐观锁 → 审计(§5.9 可做 VALIDATE / 幂等重放 / 冲突演练) │ ├─ 同时产生 object change-event(对象变化事件) ▼ ▼ ⑤ 事件驱动:AIP event 工作流轮询到 change-event → AI 研判 → 自动跟进动作 + 通知(§5.8) │ ▼ ⑥ 人该拍板:Foundry 业务流程工作流 human_task 审批(approve 才放行下游动作)(§5.8) │ ▼ ⑦ 通知触达:internal 审计 / email 邮件 / 飞书卡片(§5.9) │ ▼ ⑧ 证据回看:审计日志 / change-events / 执行回放 / 血缘(§5.10)

图中每个箭头都是「已实现的路由或前端页面」,没有一条是 PPT 上虚构的能力。§5 分幕即按此链路展开。

4 环境准备与启动

4.1 前置依赖

必需

  • 代码分支 action-v5,仓库含 action/ 与根目录 config.yaml
  • Go 1.25+、Node.js(前端构建)
  • PostgreSQL 17(可选:未装时平台自动降级 SQLite,见下)
  • LLM Key:config.yaml → llm.api_keys.deepseek(或环境变量),无 Key 时 AI 环节会降级/失败

可选(对应演示能力)

  • 飞书自建应用 App ID/Secret(机器人 & 卡片通知演示)
  • SMTP 邮箱账号(邮件通知演示)
  • DashScope/embedding Key(RAG 向量检索增强,缺省可降级)

4.2 配置检查清单(决定哪些幕能演)

根目录 action/config.yaml(注意:在 action/ 目录下,不是仓库根)是 AIP 与 Foundry 的共享配置。启动前逐项核对:

配置节建议值影响
foundry.oag.enabledtrue(已开,见 action/config.yaml关闭时 OAG 对象路不注入,Copilot 的 query_objects / execute_action 返回 503,§5.5/§5.6 不可演示
foundry.base_urlhttp://localhost:18081AIP → Foundry 的跨产品调用目标;为空则 event 触发器不启动
feishu.enabled / app_id / app_secrettrue + 真实凭据飞书机器人/推送;未配则 send_notification 的 feishu 渠道直接失败(设计如此,不静默丢通知)
email.username/password/server真实 SMTP 凭据邮件渠道;为空则 email 节点失败。GET /api/v1/email/status 可看状态
security.secret_key强密钥(≥16 字符、非默认弱值)启动门槛(v5 修复后,全产品生效):缺失/弱值时非演示模式拒绝启动;无 config.yaml 的演示场景用 AIP_DEMO / FOUNDRY_DEMO / GOTHAM_DEMO / SWIFT_DEMO =1 显式放行(Apollo 无开关,依赖 .env 的 SECRET_KEY)
security.username_fallbacktrue跨产品 JWT 用户对齐(AIP admin ↔ Foundry admin),省去配 service_token
llm.api_keys.deepseek已配置AI 分析 / Copilot / Text2SQL 主模型
database(PG 连接)127.0.0.1:5432 / chatbi_action_dev平台元数据库;PG 不可达自动降级 SQLite(体验基本一致)
说明:两台后端都指向平台库 chatbi_action_dev(AIP 与 Foundry 常量同名),因此跨产品 JWT 在同一 SECRET_KEY + username_fallback 下天然互信:在一个产品登录拿到的 token,另一个产品后端也认。这也是 §5.5 “AIP 查数、Foundry 出数据”能无缝串场的原因。AIP 对 Foundry 的服务间调用令牌为 1h 短周期并自动续签(事件流/长跑场景不会因令牌过期 401)。

4.3 启动方式

方式 A:一键发布包(最省事)

若已打发布包(action/release/*/),运行根目录 运行AI商业行动系统.bat:注入 Key → 拉起 AIP(18080)/Foundry(18081)/网关(80) → 自动打开 http://127.0.0.1/。本方案演示优先用开发模式(B),因为要单独盯日志。

方式 B:开发模式(推荐演示用)

开三个终端:

# 终端 1 —— Foundry 后端(本体/管道/工作流审批/数据源,端口 18081)
cd <本机检出目录>/action            # 例如 E:\GitHub\auto_project_gen\action
go run ./products/foundry/cmd

# 终端 2 —— AIP 后端(NLQ / Agent / 工作流 / Copilot / 通知,端口 18080)
cd <本机检出目录>/action
go run ./products/aip/cmd

# 终端 3 —— 前端(Vite 5173,按前缀分流:/api→18081、/aip-api→18080)
cd <本机检出目录>/action/web
npm run dev
  • 健康检查:curl http://127.0.0.1:18081/healthcurl http://127.0.0.1:18080/health 返回 ok。
  • SECRET_KEY 启动门槛(v5 修复后):config.yaml 已配强密钥即可直接 go run;若配置缺失/弱值,后端进程会直接退出——演示场景显式 AIP_DEMO=1 FOUNDRY_DEMO=1(其余产品同理,Apollo 依赖 .env 的 SECRET_KEY)再启动。
  • 只演示“查询/本体/审批”可只起 Foundry;要演 AI/自动化/通知必须 AIP+Foundry 都起(event 触发器轮询 Foundry)。
  • 默认库:PG 优先(自动建库建表 + seed),失败降级 SQLite action/temp/foundry_demo.db(Foundry 侧)。
Windows 提醒:bash 的 cwd 每次重置为家目录,命令请带全路径 cd … && … 前缀;停进程用 PowerShell Stop-Process -Name xxx -Force,不要用 taskkill(WOW64 32 位杀不掉 64 位)。8080/8000 已被占用,勿改用这两个端口。

4.4 登录与演示数据

说明
账号超级管理员 admin / admin1(AIP、Foundry 各自库中同名,token 跨产品通用)。演示审批时再注册一名普通用户当“审批人”更真实。admin 密码不再被启动覆盖(v5 修复后重启不重置;确需重置用 DEFAULT_ADMIN_RESET=1 启动一次)。
演示业务表Foundry bootstrap 幂等重建 SQLite 演示库 foundry_demo.dborders / customers / products / inventory / purchase_request 等业务表
演示本体对象(seed 预置)customer 客户 / order 订单 / product 产品 / inventory 库存 / purchase_request 采购申请 / production_line 产线…;动作含 update_inventory(改库存量,乐观锁+幂等)、create_purchase_request(建采购申请)等
演示指标total_gmv(GMV 总和)/ aov(客单价)/ cumulative_gmv,entity=sales,维度 created_at(day)
演示数据源AIP 侧 aip_demo_warehouse(NLQ 用);Foundry 侧 foundry_demo_warehouse(OAG data_source_map 把二者对起来)
“改完跑偏”补救:重启对应后端即按 seed 幂等重建演示数据,回到初始态;但平台库(本体定义/工作流/审计)保留,不会丢。

5 主剧情:库存补货「AI 行动 + 人工审批」闭环

5.0 剧情地图与推荐节奏

整个主剧情把 8 个常用功能按“数据 → 语义 → 智能 → 行动 → 审批 → 通知 → 证据”串成一条线。每条幕都有「怎么做」「怎么验」;对一次性看完,可只走标 ⭐必演 的路线(约 15 分钟)。

做的事对应功能(用户问题)推荐节奏
5.1建/查数据源 + 测试连接新建数据源⭐ 必演
5.2建数据管道 / 数据同步 / 数据集——并把“自动导入”配起来创建数据管道、导入数据、自动导入怎么配管道必演,同步/数据集按需
5.3本体建模:对象/属性/动作 + 版本与审批配置本体信息⭐ 必演(看库存对象+动作)
5.4怎么查询:NLQ / 语义检索 / 对象查询 / 指标怎么进行查询⭐ 必演
5.5手搭 AIP 自动工作流(cron/事件/手动三种触发)创建自动工作流⭐ 必演
5.6Automation Copilot:一句话让 AI 建自动化如何借助 AI 进行配置⭐ 必演
5.7Foundry 人工审批流(human_task 待办 approve/reject)人工审批怎么测⭐ 必演
5.8Agent 执行本体的动作验证(幂等/乐观锁/审计)Agent 执行本体动作验证⭐ 必演
5.9邮件 / 飞书:配置、状态、随工作流触达关联 email、飞书配置必演,真实发送按凭证
5.10证据回看:审计 / 对象变化事件 / 执行回放 / 血缘闭环验收必演(简版)

5.1 第一幕 · 数据源(新建 → 测试 → 元数据)

目的:让“数据在哪”变成平台看得见、连得通的一等公民。Foundry 在 V5 已自持数据源管理(与 AIP 侧数据源并列:AIP 数据源供 NLQ 取数,Foundry 数据源供数据集/同步/管道/本体写路径使用)。

操作(推荐在 Foundry 前端做,两处二选一即可)

  1. 进入 Foundry 侧边栏 数据源页(前端路由 /foundry/datasources,调 Foundry 后端 /api/v1/datasources)。
  2. 点“新建数据源”:名称/类型(表单下拉已与连接器 allow-list 对齐:PostgreSQL / MySQL / SQLite / SQL Server 可建,Oracle / ClickHouse 置灰需授权启用)、主机/端口/库名/账号/密码/描述。
  3. 测试连接:返回成功即连通(后端 POST /datasources/:id/test按请求体完整连接配置真实建连,而非仅用库内记录)。
  4. 导入元数据:拉取表结构进平台(POST /datasources/:id/import-metadata,V5 已任务化:15s 内完成直接返回结果,超时返回 202 受理 {task_id},前端进度条按 1.5s 轮询 GET /system/tasks/:id;导入即对账清理:按 table_schema_id 清理旧列后重建,且 prune_stale 默认 true 会一并删除实库已消失的陈旧表/列(O-026),避免残留表名误导 RAG;显式传 false 才保留纯 upsert 行为)。

怎么验

  • 数据源列表出现新行且“测试连接”通过;导入后能看到 inventory / purchase_request / orders 等表名。
  • AIP 侧演示库数据源(aip_demo_warehouse)在 AIP 的 数据源管理页(/datasources)也可查看/重导。
★ 把 5.2~5.4 中“库存”故事全部建立在 foundry_demo.db(含 inventory 表)上;这是 AIP/Foundry 都能经本体/动作写入的同一事实源。新数据源请起别的库/表名,避免与演示库互相污染。
两个必知边界(实测):① 连接器工厂 allow-list 默认仅放行 MYSQL / SQLSERVER / POSTGRESQL,SQLite 等需 AllowAdvancedTypes("SQLITE") 显式授权(AIP 演示数据链路已授权,自建数据源若选 SQLite 连不上先查这里;测试连接失败的错误 JSON 会明示类型不支持);② 页头「导入时 AI 生成描述」开关在 Foundry 侧 LLM 未装配时会明确报错(诚实降级,不会静默跳过)——需要 AI 表/列描述请在 AIP 侧数据源页勾选,或先确认 Foundry 侧 LLM 服务已注入。
凭据口径(v5 修复后):数据源密码已改为 AES-256-GCM 加密落库(旧明文存量兼容读回),列表/详情接口回显掩码 ****(更新时留空或传 **** 即表示“不改密码”)——验收断言不要按“接口返回明文密码”写。

5.2 第二幕 · 数据管道与自动导入

目的:演示“数据进平台”的三种姿势,并解释“自动导入”到底怎么配。平台按用途给了三种受控手段,不是“任意文件即传即用”:

姿势谁来做本质什么时候算“自动”
A. 数据管道Foundry 管道构建器(SQL 步骤管道,/foundry/pipelines按 SQL 步骤建表/洗数/落结果表;可 enable/disable管道支持启用态;配合 V5 统一调度器按 cron_expr 到点自动执行(产生 scheduler_runs 记录)
B. 数据同步作业Foundry 同步引擎(/foundry/sync把外部数据源的表按计划抽取成平台内数据集(可版本化)sync target 配置后“run”;按调度周期拉取即自动同步
C. 数据集上传Foundry 数据集(/foundry/datasetsCSV/文件上传建数据集 + 发布版本(分支/回滚=切版本指针)手动 upload + publish;质量画像自动出分(完整度/唯一度等)

操作 A:管道(主推,能跑真实 SQL)

  1. 管道构建页 → 新建管道:名称(api_name 唯一,编辑不可改)、源连接器 ID(数据源数字 id)、目标对象类型 ID(可选,用于 write_mode 同步)、描述、保持「启用」勾选。
  2. 写入模式(append / append_only_new / snapshot_replace / snapshot_replace_and_remove / changelog——changelog 未实现,创建/更新即被 400 显式拒绝,不会进入可运行态);选触发类型 manual(默认)或 cron(选 cron 必填表达式,如 0 2 * * *)。
  3. 「+ 步骤」加 SQL 步骤(名称 + 类型 select/insert/update/create_table_as + SQL),如 CREATE TABLE IF NOT EXISTS stock_daily AS SELECT product_id, warehouse, stock_level, reorder_point FROM inventory(类型 create_table_as)。
  4. 保存后点 运行:confirm 后 POST /api/v1/pipelines/:id/run(同步执行),返回 run 记录;展开「运行历史」看 status=success 与 rows_in/rows_out(前端 30s 超时后 run 仍在后端执行,勿重复点运行,用运行历史确认终态)。
  5. 若想“自动跑”:触发类型选 cron + 启用 → 保存即注册到平台统一调度器(syncSchedule 幂等注册 pipeline:<id>)→ 到点自动执行,triggered_by=cron,调度记录可查(GET /api/v1/scheduler/jobs);停用/删除/改 manual 即反注册。
  6. 质量联动:管道 run 会执行挂在它名下的质量规则(scope=pipeline 且 enabled),error 级违规使 run 标 failed 并阻断目标对象同步

操作 B:同步作业(“拉取外部表”语义,B1-3 同步引擎)

  1. 数据同步页 → 新建同步目标(两步向导):目标名称 + 目标数据集(先在数据集页建好,或选登记型)。
  2. 第一步选来源类型:platform_ds(填数据源 ID + 来源查询 SQL,如 SELECT order_id, amount, updated_at FROM orders)或 object(本体对象快照,仅 full 模式)。
  3. 第二步选同步模式full(单事务清空目标行表全量重写)/ incremental(必填水位列 watermark_col,如 updated_at,运行时自动包装 SELECT * FROM (查询) WHERE 水位列 > 上次值;可选 field_map 幂等键映射 {"order_id":"order_id"},冲突跳过)。
  4. 可填 cron 调度(空=仅手动;如 0 */2 * * * 每 2 小时)+ 勾选「创建后立即启用」→ 创建即注册调度条目 sync:<targetID>(注册失败如非法 cron 会回滚创建)。
  5. 保存后点「立即运行」(任务化:POST /api/v1/sync/targets/:id/run,15s 快路径或返回 task_id 走进度条轮询)→ 运行历史 GET /sync/targets/:id/runs 出现 success 与 rows_synced;同步成功链自动触发数据集质量画像 + 血缘打点 source→dataset。

操作 C:数据集(CSV/上传 + 画像)

  1. 数据集页 → 上传 CSV(仅 CSV/JSON,XLSX 显式拒绝;表头列名必须过白名单 ^[a-z][a-z0-9_]*$——小写字母开头、仅小写/数字/下划线,含大写/中文/空格直接拒绝,上限 32MB)→ 自动生成 schema → 预览 50 行 → 发布版本(POST /api/v1/datasets/upload/datasets/:id/versions/publish;发布=指针推进不拷数据)。
  2. 打开画像(GET /datasets/:id/profile)看质量分(每列 null 率/distinct/avg/top5 高频值)。
  3. 也可用「新建数据集(数据源查询)」:填数据源 ID + 查询 SQL(建议带 LIMIT)→ 创建即拉数落平台行表并推断 schema,自动打血缘 datasource→dataset。

怎么验

  • 管道/同步/数据集各有 ≥1 条 success 记录;血缘页能看到“源 → 管道 → 对象/数据集”的边(若打了目标对象)。
  • 调度器页能看到注册的管道/作业与其最近一次运行结果。
demo 库存表由 bootstrap 重建,若你把管道输出建到 inventory 同名表上会与 seed 冲突——管道输出表请用独立名(如 stock_daily)。
数据面权限(v5 修复后):管道创建/运行、同步目标创建/运行、经数据源拉数建数据集等数据面操作已收敛为 admin 专属(普通用户返回 403;统一调度器等系统内部触发不受限)。演示请全程用 admin;CSV 上传数据集与查询类接口不受此限。

5.3 第三幕 · 本体建模:对象 / 动作 / 版本审批

目的:本体是“AI 能懂业务”的语义层:对象=表,属性=列,动作=授权写入口。seed 已把 inventory / purchase_request 等建好,本幕一是看懂结构,二是演示编辑流程(版本 draft→review→merge + 需要时 approve)。

操作 ①:看懂 seed 本体

  1. 进 Foundry 对象工作台/foundry,FoundryPage)→ 切到“对象”Tab,列表含 customer / order / product / inventory / purchase_request
  2. 打开 inventory:看属性(inventory_id / product_id / warehouse / stock_level 库存量 / reorder_point 补货点 / updated_at)与动作 update_inventory(modify,参数 inventory_id+stock_level+expected_updated_at,乐观锁+幂等键字段=inventory_id)。
  3. 打开 purchase_request:看动作 create_purchase_request(create,新增采购申请)。这两个对象 + 动作是主剧情“补货”的语义基础。

操作 ②:改一版本体并走审批(演示“本体信息不是随便改的”)

  1. 在对象工作台对某对象点“建草稿”(POST /ontology/objects/:id/drafts)→ 改一个属性显示名/加说明(PUT /ontology/drafts/:vid)。
  2. 提交评审(POST /ontology/drafts/:vid/review)。
  3. 若该对象动作/策略要求多人审批(requires_approval 且 min_approvals>1),合入会先返回 409 APPROVAL_REQUIRED:审批人调用 POST /ontology/objects/:id/versions/:vid/approve,票数够了再 POST /ontology/drafts/:vid/merge 才放行;自批会被 409 APPROVAL_DENIED 拦下
  4. 看版本历史(时间线 draft→review→merged + change_diff),点“影响分析”看受影响的指标/对象。

怎么验

  • 版本号 +1、状态回到 merged;版本时间线、影响分析有内容。
  • “被引用对象禁止删除”“merge 需审批”这些治理规则能触发一次让你讲解。

5.4 第四幕 · 智能查询

目的:把“库里有什么”变成“一句话问出来”。给你 4 个查询入口,按演示需求选:

入口在哪适合问真实例子
NLQ 智能查询AIP 菜单 /chatPOST /api/v1/chat口径稳定的聚合查数“查询各区域订单销售额” → 返回 intent + SQL + 表格 + 图表 + RAG 上下文 + 审计
语义检索 SemanticSearchFoundry 语义检索页(POST /ontology/semantic-search“哪个对象/指标管这事”inventory → 命中库存对象+属性+动作;搜 销售额 → 命中 total_gmv(口径 SUM(amount))
对象查询 Object QueryFoundry 对象查询页(POST /objects/:id/query对真实行的过滤/分页查询(带列白名单防注入)对 inventory:fields=[product_id,warehouse,stock_level,reorder_point],filters=stock_level gte 0,看真实库存行
指标查询Foundry 指标管理 / 仪表盘指标口径total_gmv 返回聚合值;catalog 列出全部指标

怎么验(推荐组合拳,演示“AI 看得懂库存语义”)

  1. AIP /chat 问一次订单销售额——展示“一句话出数”,并强调 OAG 已把 Foundry 对象/口径注入 Prompt。
  2. 语义检索搜 inventorypurchase_request——展示“AI 能找到动作与字段”。
  3. 对象查询真实过滤 inventory,找出 stock_level < reorder_point 的行——这是后续自动化的事实输入(若嫌手写 filters 麻烦,也可让 5.5 的事件触发把状态带出来)。
列级权限口径(v5 修复后):SQL 工作台/语义查询在用户未配置列级权限时正常放行(响应 meta.security_note 注明“CLS 跳过注入,无列限制”);只有显式配置了列隐藏/掩码策略时才按 fail-closed 拦截——想演示“权限拦截”,先给角色真实配一条 COLUMN_ACCESS 列权限。

5.5 第五幕 · 自动工作流(手搭 + 触发器 + 事件驱动)

目的:把“查数/分析/动作/通知”编排成一条可反复跑的自动化流水线。工作流引擎 9 类节点:trigger / query_data / nlq_query / ai_analysis / ai_generate / condition / send_notification / call_api / execute_foundry_action;触发器 4 种:manual / cron / webhook / event。操作入口:AIP 管理后台 → 工作流编排/admin/workflows)。

推荐演示:做一个“库存异动 → AI 研判 → 通知/动作”的 event 工作流

事件工作流的妙处:不用先有数据源连接,事件 payload 自带业务上下文(prior_state / new_state),最不容易“卡壳”。

  1. 新建工作流,名称如 stock_drop_alert;触发器选 event 并填 filters:object_types=[inventory], action_names=[update_inventory]防止自动动作写库再自触发,这是防环关键)。
  2. 编排节点(JSON / 或前端节点表单;节点输出在节点间用 {{.节点id.output.字段}} 引用):
    节点 t0  trigger        // 触发数据注入 {{.trigger.event.*}}
    节点 a   ai_analysis    // prompt: 库存 {{.trigger.event.new_state.stock_level}}
                            // 低于补货点 {{.trigger.event.new_state.reorder_point}} 吗?给一句话研判
    节点 c   condition      // condition_template: true → 放行;false → 兜底分支
    节点 n   send_notification // channel=internal(默认)|feishu|email,主题/正文可引 {{.a.output.text}}
    节点 x   execute_foundry_action // action_name=create_purchase_request, params 引用事件字段,
                            // idempotency_key=stock-event-{{.trigger.event.id}}
  3. 保存并 发布POST /workflows/:id/publish,发布后 event 调度器每 ~30s 轮询 Foundry change-events)。
  4. 立即运行(manual,POST /workflows/:id/run)可先验证一次不报错;再进入 5.8 用一次真实动作触发 event 路径。

补充演示:cron 定时(“自动”的字面意思)与 webhook

  • 把同一工作流触发器改为 cron: 0 9 * * *(每天 9 点)→ 发布即注册到调度器;/admin/monitoringGET /scheduler/jobs 可见下次触发时间。若内部有 query_data 节点要“定期盘点”,请确保其数据源里确有对应表。
  • webhook 触发:配置 trigger_config.type=webhook, path=price-alert → 任意调用方 POST /api/v1/webhooks/price-alert(公开)即触发。仅适合轻量场景,网关建议限来源。

怎么验

  • 工作流列表状态 published;手动 run 返回一次 execution,GET /workflows/executions/:eid 能看到逐节点状态/输入/输出(执行回放);通知节点落 WORKFLOW_NOTIFICATION 审计。
  • 事件触发后,executions 的 trigger_type=event、trigger_data 含 event 对象(可核对 id 与动作名)。
模板占位符易错(实测):event 触发用 {{.trigger.event.字段}}(含 prior_state/new_state/params);manual/cron 触发时运行参数是顶层 {{.trigger.参数名}}切勿{{.trigger.params.*}}{{.trigger.trigger_data.*}}(nil pointer 渲染失败)。数值比较建议带小数点(如 10.0),避免 int/float 不匹配。AI 节点输出引用 {{.analysis.output.text}} 之类。{{json .trigger.event}} 可把整包事件喂给 LLM。

5.6 第六幕 · Automation Copilot:一句话让 AI 建自动化

目的:上面手搭 DAG 门槛高——Copilot 把“配置自动化”变成对话。它通过 function calling 调用工具:create_automation / list_automations / enable / disable / delete / run_automation_now / query_objects / execute_action / list_change_events / get_doc,并把配置写成完整可执行、已发布的工作流。入口:AIP 管理后台 → AI 自动化经营/admin/automation,AutomationConsole)。

三段对话演示(照着念,跑偏就补一句纠正)

  1. 建定时简报:“每天 9 点检查一遍低于补货点的库存,帮我生成一段中文分析,发到站内通知,并把发现的低库存商品自动创建采购申请。”——Copilot 会先 list_automations 避免重复,再 create_automation(trigger_type=cron)并发布;右侧自动化列表应出现新行。
  2. 建事件规则:“以后每次库存被调低,如果低于补货点就自动建采购申请并通知我。”——生成 event 模板:t0→ai_analysis→condition→execute_foundry_action+send_notification,幂等键 automation-event-{{.trigger.event.id}}
  3. 直接问/做:“现在有哪些库存低于补货点?”(query_objects,展示 AI 懂库存语义);如想演示写库再补一句“把 SKU-0001 的库存量改成 80”(execute_action 前它会先说明影响,演示人点头再放行)。

怎么验

  • 对话落 automation_sessions/automation_messages;每次工具调用审计 AUTOMATION_TOOL_CALL;生成的自动化在“工作流编排”里可见且 status=published
  • 把 5.5 的 event filters 加进对话:“只监听库存更新事件,避免自触发”——Copilot 会把它写进 filters。
说明:Copilot 的 execute_action 写操作需要 OAG(foundry.oag.enabled=true),未启用返回 503 OAG_UNAVAILABLE。带乐观锁的动作它若碰到 409 冲突会自动重新查 updated_at 后重试。

5.7 第七幕 · 人工审批(human_task 待办 approve/reject)

目的:演示“AI/自动化做决定之前,人可以设一道闸”。Foundry 有一套业务流程工作流引擎,节点含 start / human_task / auto_task / script_task / gateway / wait / endhuman_task 把流程停在人工待办上,approve / reject 后流程继续;auto_task 可调用本体 Action(走写路径执行)。入口:Foundry 侧边栏 → 工作流/foundry/workflows)。

演示一个“补货审批”工作流

  1. 新建工作流(JSON 编辑节点与边,表单预填 start→human_task→end 示例)。推荐两个版本:
    • 线性版(最稳,推荐先演):start → human_task(经理审批) → auto_task(创建采购申请) → end。审批通过则自动建采购申请;拒绝即实例 failed(MVP 语义:reject 置实例 failed,无退回/分支)
      nodes:
      - {"key":"s","type":"start","label":"开始"}
      - {"key":"h","type":"human_task","label":"采购经理审批",
         "config":{"assignee_role":"admin"}}          // 或 {"assignee_user":"用户ID"};可加 "due_in_hours":24
      - {"key":"a","type":"auto_task","label":"创建采购申请",
         "config":{"action":"create_purchase_request","object_type_id":<采购申请对象ID>,
                   "params":{"product_id":1,"quantity":20}}}
      - {"key":"e","type":"end","label":"结束"}
      edges:
      - {"source_node_id":"s","target_node_id":"h"}
      - {"source_node_id":"h","target_node_id":"a"}
      - {"source_node_id":"a","target_node_id":"e"}
    • 分支版(讲条件路由时用):条件分支要用 gateway 节点——引擎只对 gateway 的出边逐条求值(EvalCondition,如 {{amount}} > 1000),取首个 true 的边;human_task 出边挂 condition 不生效。审批通过后 human_task 把 {decision:"approved",comment,handler} 写入上下文,后续 gateway 用 {{approval.decision}} 点路径引用。
  2. 校验(POST /workflows/:id/validate,DAG 校验:唯一 start/end、类型合法、环检测、可达 end)→ 发布(版本自增置 active,未发布不能启动)→ 启动POST /workflows/:id/start,prompt 填 JSON 输入)→ 实例停在 human_task(任务 assigned + 发站内通知)。
  3. 换审批人账号登录,进 我的待办GET /tasks/my)→ 看到该任务 → 填意见后 通过/拒绝POST /tasks/:id/approve|reject;后端强制「仅限被分配人处理」,否则 403)。
  4. 同意后引擎恢复快照继续推进 → auto_task 调用本体动作 create_purchase_request 走写路径落库(幂等键 wf-<instanceID>-<nodeID> 防重复写);驳回则实例置 failed。

怎么验

  • 任务中心出现 human 待办,approve 前业务表无新采购申请,approve 后出现新行——审批闸门是真的。
  • 实例详情能看到节点执行轨迹;审批动作留痕(任务状态 completed/rejected + 审计)。
  • 关联的评论(/comments)与站内通知(/notifications)也一并可用,可补一句“审批还能 @ 同事、留言”。
版本审批(5.3)与这里的人工任务审批是平台里两种“审批”,口径不同:前者管本体结构改不改,后者管一笔业务动作做不做。演示时讲清这个区别是加分项。
表达式说明:人工任务审批通过后,引擎把任务输出 {decision:"approved",comment,handler}节点 key 为变量名写入上下文(节点 key 为 approval 则用 {{approval.decision}} 点路径引用);gateway 出边条件形如 {{amount}} > 1000,空条件=默认分支,全部不命中报「无匹配条件分支」。auto_task 的 config.action 必须与本体对象上的动作名一致(如 seed 里的 create_purchase_request),审批通过后才真正执行、落库、留审计;未注入写路径执行器时 auto_task 仅模拟执行(返回 {"simulated":true,...},Foundry 已注入)。幂等执行:auto_task 以 wf-<instanceID>-<nodeID> 作幂等键,实例重跑不会重复写库。

5.8 第八幕 · Agent 执行本体动作验证

目的:演示“AI 不是只会说,而是能执行受控动作”,并验证安全机制(校验/幂等/乐观锁/审计/事件)。平台提供四种“动作执行入口”,同一套写路径安全流水线:

入口在哪特点
① Foundry 动作测试Foundry Action 测试页(/foundry/actions最直观,可 VALIDATE / VALIDATE_AND_EXECUTE / ASYNC
② AIP Agent 任务AIP Agent 运行页(/agent,API POST /agents/tasks给 goal 让 Agent 规划多步工具链(nlq_to_sql → query_data…),返回 task_id/status/steps
③ 工具执行AIP 管理后台 → 工具(/tools/:name/executeexecute_foundry_action 工具,治理+强一致校验
④ 工作流/ Copilotexecute_foundry_action 节点 / Copilot execute_action自动化链路里的动作

操作:①(动作测试)+ ②(Agent)组合拳

  1. 校验动作本身:动作测试页固定 VALIDATE_AND_EXECUTE 模式(页面不提供模式切换);纯校验用 API POST /ontology/actions/:name/validate(mode 强制 VALIDATE,不落盘不耗幂等键)。
  2. 拿乐观锁:对象查询看某行 updated_at(update_inventory 的 SQL 模板带 AND updated_at=:expected_updated_at,参数 schema 的 required 含 inventory_id/stock_level/expected_updated_at)。
  3. 真实执行:选动作 → 按 param_schema 生成参数表单(number/enum 自动渲染)→ 点「生成」自动产生幂等键(crypto.randomUUID)→ 执行,把 stock_level 调低(低于 reorder_point,为 5.5/5.6 的事件流“递补货理由”)→ 返回 success + rows_affected=1 + operation_id(run_<id>)。
  4. 幂等重放:点页面「重放上次执行」按钮(复用 lastKey 再提交)→ 返回 replayed + replayed_from_run_id,rows_affected 回放首次值,不重复写库。
  5. 乐观锁冲突:故意用旧 expected_updated_at 再跑 → 返回 conflict(409 ACTION_CONFLICT)。注意契约:HTTP 200 ≠ 成功——validation_failed(422)/forbidden(403)/conflict(409) 业务失败时响应体仍携带完整 mode/status/validation/edits;仅 replayed 降为 200。
  6. Agent 查证:AIP /agent 新建任务 goal=“统计各客户消费总额”(或“查询当前低于补货点的库存”),模式 plan_execute(当前唯一模式)→ 同步执行(前端 timeout 120s),返回 steps 时间线(工具名+状态+结果摘要)+ result_summary——体现“Agent 规划并调用工具完成目标”,随后把步骤结论作为“要不要补货”的依据。
参数白名单(v5 修复后):写路径动作(create/link)会校验参数键:create 的键须命中 insert_columns 声明集或对象属性名,link 的键须在 param_schema 声明内,未知参数键直接 422 validation_failed(非法标识符 400)——手动拼参数/API 调用时按本体定义传,勿夹带物理列名等额外键。

怎么验

  • 动作执行后:业务表行被改、审计 ACTION_EXECUTE success、GET /ontology/change-events 出现对应事件(prior_state/new_state/operation_id/user_id)——为 5.5 event 工作流供料。
  • Agent 任务返回 completed + steps 明细;工具执行有审计。

5.9 第九幕 · 关联邮件与飞书

目的:把“自动化的结论/待办”主动推给真人。通知演进:internal(审计即通知)→ feishu(私聊/卡片)→ email(SMTP)。管理工作流通知节点三渠道可配。

配置与状态检查

  1. 邮件:AIP 管理后台 → 邮件设置/admin/email)填 SMTP 账号;用 POST /api/v1/email/test 发测试邮件,GET /email/status 看状态。未配置时 email 节点会直接失败(设计如此,不静默丢通知)。
  2. 飞书:飞书设置页(/admin/feishu)显示机器人运行状态(config 已配 app_id/app_secret 且 feishu.enabled=true 时默认启用);POST /feishu/push 可主动推(receive_type=open_id|chat_id)。
  3. 通知中心:站内通知(列表/标已读)在 Foundry 工作流页与 AIP 均有入口,适合 offline 演示兜底。

接到工作流上

  1. 在 5.5 的事件工作流里把 send_notification 节点配三渠道:channel=internal(必现)、channel=email(填收件邮箱)、channel=feishu(填收件人 open_id)。
  2. 跑一次事件触发 → 对应渠道收到消息:internal 落审计 WORKFLOW_NOTIFICATION、email 收到 SMTP 邮件、飞书收到卡片。任一渠道因缺凭证失败会在节点状态里明确报错——这本身就是“配置检查”的演示。
进阶(可选):飞书 default_channel=copilot 时,可直接在飞书私聊里跟 Automation Copilot 对话、让 NLQ 查数结果推回飞书。

5.10 第十幕 · 证据回看(闭环验收)

把上面各幕的“留痕”统一收口,回答“凭什么相信 AI 干了这些”:

证据在哪看断言什么
审计日志AIP /admin/audit、Foundry 审计ACTION_EXECUTE(含 action/params/user)、WORKFLOW_NOTIFICATIONAUTOMATION_TOOL_CALL 等事件齐全
对象变化事件Foundry 对象工作台 → 变化事件 / GET /ontology/change-eventsupdate_inventory / create_purchase_request 的事件含 prior_state/new_state/operation_id
执行回放工作流编排 → 执行历史(GET /workflows/executions/:eid逐节点 status/输入输出/耗时可回放
调度与运行GET /scheduler/jobs / 管道运行记录cron/event 触发次数与结果
数据血缘Foundry 血缘页(GET /lineage源→管道→对象→指标 链路可见
AI 决策审计AIP /admin/ai-auditCopilot / NLQ 决策细节可追溯

跨产品串讲(收尾话术)

把整个主线连起来讲一遍:① 某商品库存被调低(8 的 ActionTester)→ ② 事件触发 AIP event 工作流(5.5),Copilot 生成的规则负责 AI 研判并建采购申请、发通知(5.6/5.9)→ ③ 采购经理在 Foundry 任务中心审批(5.7)→ ④ approve 后流程继续 → ⑤ 全部动作进审计/事件/血缘(5.10)。演示时逐个页面翻证据,就是一个“AI 行动系统”的完整故事。

6 分步验收测试单

给演示/回归用,勾选式 PASS/FAIL。标 是最小演示集。

#验收点操作(详见节)通过标准
⭐1两后端在线 + 登录§4.3/4.4/health ok;admin/admin1 登录,token 跨产品有效
⭐2数据源可见/可连§5.1数据源列表有 demo 行;测试连接通过(密码回掩码 ****,非明文)
3管道运行成功§5.2pipeline run status=success,rows_in/rows_out>0(admin 执行;普通用户建/跑 403)
4本体对象+动作可读§5.3inventory 含 update_inventory 动作;参数含乐观锁字段
⭐5NLQ 一句话出数§5.4/chat 返回 SQL+结果,审计有 NLQ_QUERY
⭐6语义检索命中对象/指标§5.4搜 inventory/销售额 有命中
⭐7事件工作流发布并手动可跑§5.5workflow status=published;run 返回 execution 含节点回放
⭐8Copilot 对话生成自动化§5.6新 automation 出现且 published;审计有 AUTOMATION_TOOL_CALL
⭐9事件驱动自动触发§5.5+5.8改库存 → ≤90s 内 event execution 出现且完成后续动作/通知(EventScheduler ~30s 轮询 + 执行时长,实测 24s/32s)
⭐10人工审批放行/驳回§5.7human 待办 approve 后业务表出现采购申请;reject 则无
⭐11动作执行安全机制§5.8execute success;同 key 重放=replayed;错 updated_at=conflict
12Agent 多步工具链§5.8/agent 任务返回 completed + steps 明细
13邮件/飞书状态与推送§5.9email/test 成功或 feishu/push 200(无凭证则看节点明确报错)
⭐14证据齐全§5.10审计 ACTION_EXECUTE + change-events + 执行回放可见

7 3 分钟演示小抄

  1. 开场 20s:翻到 Foundry 本体对象 inventory(属性+动作),说“数据在这,动作受控写库”。
  2. 40s:AIP /chat 一句话“各区域订单销售额”→ 图表出来,“AI 能查”。
  3. 60s:切到 Automation Copilot 对话:“每天 9 点检查低库存,低于补货点自动建采购申请并通知我”→ 右侧自动化 published,“AI 能配自动化”。
  4. 80s:动作测试把某库存调低 → 打开工作流执行列表,≤90s 内(~30s 轮询相位 + 执行时长,实测 24~32s)出现一条 event 触发、自动建单+通知,“AI 能行动”。
  5. 100s:换审批账号打开任务中心,approve → 采购申请落库,“关键时刻人拍板”。
  6. 120s:审计 + 对象变化事件翻两屏,“全程留痕可回看”。收工。

8 常见坑与应对(本方案范围内实测经验)

症状原因 / 应对
后端启动即退出,日志报 SECRET_KEY 弱值v5 修复后弱密钥拒绝启动(全产品):config.yaml 配强密钥(≥16 位非默认值),或演示场景显式 AIP_DEMO / FOUNDRY_DEMO / GOTHAM_DEMO / SWIFT_DEMO =1(Apollo 无开关,读 .env 的 SECRET_KEY)。
Copilot execute_action / query_objects 返回 503 OAG_UNAVAILABLEOAG 未启用:config 置 foundry.oag.enabled=true 并确认 Foundry base_url;重启 AIP。
工作流模板渲染 nil pointer / 数值不匹配占位符写错:event 用 {{.trigger.event.*}}、manual 用 {{.trigger.*}};数值比较带小数点。{{json .trigger.event}} 兜底调试。
event 工作流被自己“喂饱”,反复自触发漏配 filters:event 触发器填 object_types/action_names 只监听源动作;demo 多场景并行时建议串行跑并测完清理。
send_notification 的 email/feishu 节点失败凭证未配即失败属设计(不静默丢通知):先看 /email/status/feishu/status;internal 渠道永远可演示。
Action 执行返回 409 ACTION_CONFLICT乐观锁:先查询目标行最新 updated_at 再执行;Copilot/Agent 冲突会自动重查重试。
动作重复写库幂等键:execute_foundry_action 填 idempotency_key(事件流建议含 event id),同 key 自动 replayed。
动作执行 422 validation_failed 提示未知参数写路径参数白名单:create/link 的参数键须按本体定义传(insert_columns 声明集/对象属性名/link param_schema),夹带未知键(如物理列名)被 422 拒绝(§5.8)。
普通用户建/跑管道、同步、数据集返回 403数据面收敛 admin-only(v5 修复后):管道/同步/经数据源拉数等操作用 admin 执行(§5.2)。
本地接入 WorkBuddy MCP 时 404真实端点是 /mcp/<令牌>(AIP 启动日志公布完整 URL,默认 127.0.0.1:18085,仅限本机回环),裸 /mcp 固定 404 提示;云端 hub 出站连接断线后自动指数退避重连,无需手工干预。
演示库被改乱想还原重启对应后端,bootstrap 幂等重建 seed 数据(平台库定义保留)。
端口/进程问题勿用 8080/8000;停进程用 PowerShell Stop-Process;bash 里命令带 cd 全路径 && 前缀。
LLM 环节跑偏(AI 文案/Copilot DAG 不合预期)不是 bug:对话里补一句明确要求(“触发器用 event 且只监听 update_inventory”)重试;AI 生成类结果天然有方差。

9 API 速查手册

本方案用到的全部端点(均 Bearer <token>prot=登录可用,admin=管理员)。演示时优先走前端页面,需要脚本化/自动化回归时用这里。

9.1 AIP(/aip-api/v1 → 后端 18080)

端点鉴权用途
认证POST /auth/register · /auth/login公开注册/登录(demo:admin/admin1)
GET /meprot当前用户
数据源GET|POST /datasources · GET|PUT|DELETE /datasources/:idprotAIP 侧数据源(供 NLQ)
POST /datasources/:id/test · /import-metadataprot测试连接 / 导入元数据
NLQPOST /chatprot一句话查数(返回 intent/sql/rows/图表建议)
AgentPOST /agents/tasksprot建 Agent 任务(body: goal / mode=plan_execute…)
GET /agents/tasks · GET /agents/tasks/:idprot任务列表 / 详情(含 steps)
工具GET /tools · GET /tools/:name · POST /tools/:name/executeprot工具列表/详情/执行(execute_foundry_action 写库)
工作流POST /workflows · PUT|DELETE /workflows/:id · POST /workflows/:id/publish|unpublishadmin定义写操作
GET /workflows · /workflows/node-types · /workflows/:id · GET /workflows/:id/executions · POST /workflows/:id/run · POST /workflows/executions/:eid/cancelprot读与运行(执行回放 / 手动触发)
POST /webhooks/:name公开webhook 触发
CopilotPOST /automation/chatprotSSE 对话(自动建/启停自动化)
GET /automation/sessions · /sessions/:id · /tools · /automationsprot会话/工具/自动化列表
OAGPOST /oag/actions/:name/validate|execute · GET /oag/actions/runs/:idprot经对象路执行 Foundry 动作
通知GET /feishu/status · POST /feishu/pushadmin飞书状态 / 主动推送
GET /email/status · POST /email/testadmin邮件状态 / 测试发送
审计GET /audit/logs · GET /ai-auditadmin审计日志 / AI 决策审计
调度GET /scheduler/jobs · /scheduler/jobs/:name/runsprot统一调度器作业与运行

9.2 Foundry(/api/v1 → 后端 18081)

端点鉴权用途
认证POST /auth/register · /auth/login公开注册/登录(demo:admin/admin1)
数据源GET|POST /datasources · GET|PUT|DELETE /datasources/:idprotFoundry 数据源
POST /datasources/:id/testprot测试连接
POST /datasources/:id/import-metadataprot导入元数据(任务化)
数据集 / 同步GET|POST /datasets · POST /datasets/upload · GET|PUT|DELETE /datasets/:idprot数据集 CRUD + CSV 上传
POST /datasets/:id/versions/publish · GET /datasets/:id/versions · GET /datasets/:id/preview|profileprot版本发布/预览/质量画像
GET|POST /sync/targets · GET|PUT|DELETE /sync/targets/:id · POST /sync/targets/:id/run · GET /sync/targets/:id/runsprot同步引擎
管道GET|POST /pipelines · GET|PUT|DELETE /pipelines/:id · POST /pipelines/:id/run · GET /pipelines/:id/runs · POST /pipelines/:id/enable|disableprot数据管道
本体GET|POST /ontology/objects · GET|PUT|DELETE /ontology/objects/:idprot对象类型
POST /ontology/objects/:id/drafts · PUT /ontology/drafts/:vid · POST /ontology/drafts/:vid/review|mergeprot版本状态机
POST /ontology/objects/:id/versions/:vid/approve|reject · POST /ontology/objects/:id/rollbackprot版本审批 / 回滚
GET /ontology/objects/:id/export?format=yaml|json|owl|ttl|shacl · POST /ontology/objects/import(Content-Type: application/yaml,body 限 1MB)· /ontology/objects/:id/impactprotYAML/OWL/SHACL 导出(export 返回原始文本非 JSON 包装)/ 声明式导入(两遍扫描,单对象失败不整体回滚)/ 影响分析
动作(写路径)POST /ontology/actions/:name/validate|execute · GET /ontology/actions/runs/:idprot执行本体动作(幂等+乐观锁+审计)
GET /ontology/change-eventsprot对象变化事件(供 AIP event 轮询)
查询POST /objects/:id/query · GET /ontology/query/:nameprot对象语义查询
POST /ontology/semantic-searchprot结构化语义检索
指标GET|POST /metrics · PUT|DELETE /metrics/:id · POST /metrics/query · GET /metrics/catalogprot指标语义层
血缘 / 质量GET /lineage · GET /quality/rules · POST /quality/rules · GET /quality/issuesprot血缘追溯 / 质量规则与问题
业务流程工作流(人工审批)GET|POST /workflows · GET|PUT|DELETE /workflows/:id · POST /workflows/:id/validate|publish|startprot工作流定义与实例启动
GET /workflows/:id/instances · /instances/:instanceIdprot实例历史
GET /tasks/my · GET /tasks/:id · POST /tasks/:id/approve|reject|reassign · GET|POST /comments · GET /notificationsprot我的待办 / 审批 / 评论 / 通知
审计 / 调度GET /audit/events · GET /audit/events/summary · GET /scheduler/jobsprot审计事件 / 调度作业
注(v5 修复后):管道/同步/经数据源拉数的数据集等数据面创建与运行接口实际需 admin 角色(普通用户 403,见 §5.2);CSV 上传、查询与审批类接口保持 prot。数据源接口的密码一律回掩码 ****(AES-256-GCM 加密落库,见 §5.1);写路径动作对未知参数键返回 422(见 §5.8)。

10 相关文档索引

  • 产品与路线:wiki/OVERVIEW.mdwiki/ROADMAP.mdwiki/upgrade-v5/UPGRADE-PLAN.md(V5 数据域+知识域双线蓝图)
  • AIP 模块开发文档:wiki/docs/aip/{workflow_automation, automation_copilot, tool_system, agent_framework, nlq_engine, oag, datasource_connector}.md
  • Foundry 模块开发文档:wiki/docs/foundry/{ontology_modeling, ontology_sql, pipeline_builder, dataset, sync, data_lineage, actionctl}.md
  • 业务故事站(面向听众的叙述素材):docs/story/aip/{workflow-automation, agent-orchestration, oag-object-path, datasource-onboarding}.htmldocs/story/foundry/{ontology-modeling, pipelines, semantic-query, action-writepath}.htmldocs/story/cross/combined-demo.html(旧 v4 口径:无编排、靠人接力——本方案即把其中“靠人接力”的短板用 AI 自动化补上)
  • 真实回归参考:冒烟脚本 temp/smoke_foundry.sh(本体/语义/动作写路径/管道全链路 23 项 PASS);AIP v4 测试(products/aip/server/agent_http_test.goautomation_http_test.go)可作为自动化用例的“标准答法”
  • 各幕前端页面:见 §2 表与各幕操作;前端源码 web/src/router/index.js、各 views/*.vue
  • 前端页面操作手册(逐页详解,与本方案配套食用最佳)action/docs/frontend-intro-v5/markdown/(foundry/ 30 篇:data-sources、datasets、sync、pipelines、yaml、object-query、action-tester、workflows、apps 等;aip/ 36 篇:chat、agent-run、admin-automation、admin-workflows、admin-email、admin-feishu 等;另有同名 html 版)。进阶版「从新手到资深」全流程使用文档见 action/docs/manuals/usage-guide/(16 章)