最基础版「AI 行动系统」Demo 落地方案
把「建数据源 → 建管道 → 导数据 → 建本体 → 查询 → AI 自动工作流 → 人工审批 → 邮件/飞书通知」用真实功能串成一条可演示、可复现、可验收的 AI 自动化经营闭环。
▎文档卡片
| 项目 | 说明 |
|---|---|
| 方案名称 | 最基础版「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 行动系统」=智能体/自动化 负责发现问题、做决策、发起行动,数据平台 负责存数据、定语义、审动作、留证据,最后把结果主动推给邮件与飞书。人只在该拍板的地方拍板(审批),其余全自动。
它回答演示中最常被问的四个问题:
- AI 怎么“行动”而不是只“回答”? —— Agent / 工作流调用本体 Action 写真实数据(走写路径安全流水线:校验 → 授权 → 幂等 → 乐观锁 → 审计)。
- 自动化从哪来? —— 手工搭(工作流编排)或用一句话让 Automation Copilot 建(AI 辅助配置)。
- 什么时候自动触发? —— 手动 / cron 定时 / webhook / Foundry 对象变化事件(event)四种触发器。
- AI 闯祸怎么办? —— 人工审批卡点(Foundry 工作流 human_task、本体版本/动作审批)+ 全链路审计与对象变化事件可回看。
1.2 验收标准(做完后应能逐项打勾)
- 数据层:演示页能看到一个已建/预置数据源并显示可连接;数据管道可创建并运行成功(rows_in/rows_out 有值),或数据同步/数据集产生一条成功记录。
- 本体层:能看到带「对象+属性+动作」的本体(如 inventory 库存 / purchase_request 采购申请),动作能通过页面或 API 执行并真正改到业务表。
- 查询层:一句话查数(NLQ)返回 SQL+表格/图表;对象查询/语义检索/指标至少命中一条真实数据。
- 自动化层:存在至少一条已发布工作流,可用「立即运行」跑出一次成功执行,节点回放可见;并用 Automation Copilot 对话再生成一条新工作流。
- 事件驱动:执行一次本体动作 → 30s 内 event 工作流被触发并自动完成后续动作与通知(可配置 filters 防自触发)。
- 人工审批:Foundry 工作流中出现一条 human_task 待办,审批人 approve 后实例继续走完;或有本体版本审批 approve/reject 放行案例。
- 通知层:邮件/飞书「状态」页为已配置状态;工作流通知节点至少产生一条 internal 审计通知,email/feishu 视凭证可选演示。
- 证据层:审计日志含
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 一条端到端链路(全景图)
主剧情推荐的业务闭环(点击各节跳到对应操作):
图中每个箭头都是「已实现的路由或前端页面」,没有一条是 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.enabled | true(已开,见 action/config.yaml) | 关闭时 OAG 对象路不注入,Copilot 的 query_objects / execute_action 返回 503,§5.5/§5.6 不可演示 |
foundry.base_url | http://localhost:18081 | AIP → Foundry 的跨产品调用目标;为空则 event 触发器不启动 |
feishu.enabled / app_id / app_secret | true + 真实凭据 | 飞书机器人/推送;未配则 send_notification 的 feishu 渠道直接失败(设计如此,不静默丢通知) |
email.username/password/server | 真实 SMTP 凭据 | 邮件渠道;为空则 email 节点失败。GET /api/v1/email/status 可看状态 |
security.username_fallback | true | 跨产品 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 出数据”能无缝串场的原因。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/health、curl http://127.0.0.1:18080/health返回 ok。 - 只演示“查询/本体/审批”可只起 Foundry;要演 AI/自动化/通知必须 AIP+Foundry 都起(event 触发器轮询 Foundry)。
- 默认库:PG 优先(自动建库建表 + seed),失败降级 SQLite
action/temp/foundry_demo.db(Foundry 侧)。
cd … && … 前缀;停进程用 PowerShell Stop-Process -Name xxx -Force,不要用 taskkill(WOW64 32 位杀不掉 64 位)。8080/8000 已被占用,勿改用这两个端口。4.4 登录与演示数据
| 项 | 说明 |
|---|---|
| 账号 | 超级管理员 admin / admin1(AIP、Foundry 各自库中同名,token 跨产品通用)。演示审批时再注册一名普通用户当“审批人”更真实。 |
| 演示业务表 | Foundry bootstrap 幂等重建 SQLite 演示库 foundry_demo.db:orders / 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 把二者对起来) |
5 主剧情:库存补货「AI 行动 + 人工审批」闭环
5.0 剧情地图与推荐节奏
整个主剧情把 8 个常用功能按“数据 → 语义 → 智能 → 行动 → 审批 → 通知 → 证据”串成一条线。每条幕都有「怎么做」与「怎么验」;对一次性看完,可只走标 ⭐必演 的路线(约 15 分钟)。
| 幕 | 做的事 | 对应功能(用户问题) | 推荐节奏 |
|---|---|---|---|
| 5.1 | 建/查数据源 + 测试连接 | 新建数据源 | ⭐ 必演 |
| 5.2 | 建数据管道 / 数据同步 / 数据集——并把“自动导入”配起来 | 创建数据管道、导入数据、自动导入怎么配 | 管道必演,同步/数据集按需 |
| 5.3 | 本体建模:对象/属性/动作 + 版本与审批 | 配置本体信息 | ⭐ 必演(看库存对象+动作) |
| 5.4 | 怎么查询:NLQ / 语义检索 / 对象查询 / 指标 | 怎么进行查询 | ⭐ 必演 |
| 5.5 | 手搭 AIP 自动工作流(cron/事件/手动三种触发) | 创建自动工作流 | ⭐ 必演 |
| 5.6 | Automation Copilot:一句话让 AI 建自动化 | 如何借助 AI 进行配置 | ⭐ 必演 |
| 5.7 | Foundry 人工审批流(human_task 待办 approve/reject) | 人工审批怎么测 | ⭐ 必演 |
| 5.8 | Agent 执行本体的动作验证(幂等/乐观锁/审计) | Agent 执行本体动作验证 | ⭐ 必演 |
| 5.9 | 邮件 / 飞书:配置、状态、随工作流触达 | 关联 email、飞书 | 配置必演,真实发送按凭证 |
| 5.10 | 证据回看:审计 / 对象变化事件 / 执行回放 / 血缘 | 闭环验收 | 必演(简版) |
5.1 第一幕 · 数据源(新建 → 测试 → 元数据)
目的:让“数据在哪”变成平台看得见、连得通的一等公民。Foundry 在 V5 已自持数据源管理(与 AIP 侧数据源并列:AIP 数据源供 NLQ 取数,Foundry 数据源供数据集/同步/管道/本体写路径使用)。
操作(推荐在 Foundry 前端做,两处二选一即可)
- 进入 Foundry 侧边栏 数据源页(前端路由
/foundry/datasources,调 Foundry 后端/api/v1/datasources)。 - 点“新建数据源”:名称/类型(表单选项 PostgreSQL / MySQL / SQLite / SQL Server / Oracle / ClickHouse)、主机/端口/库名/账号/密码/描述。
- 点 测试连接:返回成功即连通(后端
POST /datasources/:id/test,按请求体完整连接配置真实建连,而非仅用库内记录)。 - 点 导入元数据:拉取表结构进平台(
POST /datasources/:id/import-metadata,V5 已任务化:15s 内完成直接返回结果,超时返回 202 受理{task_id},前端进度条按 1.5s 轮询GET /system/tasks/:id;导入逻辑会按table_schema_id清理旧列后重建,避免残留表名误导 RAG)。
怎么验
- 数据源列表出现新行且“测试连接”通过;导入后能看到
inventory / purchase_request / orders等表名。 - AIP 侧演示库数据源(
aip_demo_warehouse)在 AIP 的 数据源管理页(/datasources)也可查看/重导。
foundry_demo.db(含 inventory 表)上;这是 AIP/Foundry 都能经本体/动作写入的同一事实源。新数据源请起别的库/表名,避免与演示库互相污染。AllowAdvancedTypes("SQLITE") 显式授权(AIP 演示数据链路已授权,自建数据源若选 SQLite 连不上先查这里;测试连接失败的错误 JSON 会明示类型不支持);② 页头「导入时 AI 生成描述」开关在 Foundry 侧 LLM 未装配时会明确报错(诚实降级,不会静默跳过)——需要 AI 表/列描述请在 AIP 侧数据源页勾选,或先确认 Foundry 侧 LLM 服务已注入。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/datasets) | CSV/文件上传建数据集 + 发布版本(分支/回滚=切版本指针) | 手动 upload + publish;质量画像自动出分(完整度/唯一度等) |
操作 A:管道(主推,能跑真实 SQL)
- 进 管道构建页 → 新建管道:名称(api_name 唯一,编辑不可改)、源连接器 ID(数据源数字 id)、目标对象类型 ID(可选,用于 write_mode 同步)、描述、保持「启用」勾选。
- 选写入模式(append / append_only_new / snapshot_replace / snapshot_replace_and_remove / changelog——changelog 未实现,运行即 failed);选触发类型 manual(默认)或 cron(选 cron 必填表达式,如
0 2 * * *)。 - 「+ 步骤」加 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)。 - 保存后点 运行:confirm 后
POST /api/v1/pipelines/:id/run(同步执行),返回 run 记录;展开「运行历史」看status=success与 rows_in/rows_out(前端 30s 超时后 run 仍在后端执行,勿重复点运行,用运行历史确认终态)。 - 若想“自动跑”:触发类型选 cron + 启用 → 保存即注册到平台统一调度器(
syncSchedule幂等注册pipeline:<id>)→ 到点自动执行,triggered_by=cron,调度记录可查(GET /api/v1/scheduler/jobs);停用/删除/改 manual 即反注册。 - 质量联动:管道 run 会执行挂在它名下的质量规则(scope=pipeline 且 enabled),error 级违规使 run 标 failed 并阻断目标对象同步。
操作 B:同步作业(“拉取外部表”语义,B1-3 同步引擎)
- 进 数据同步页 → 新建同步目标(两步向导):目标名称 + 目标数据集(先在数据集页建好,或选登记型)。
- 第一步选来源类型:
platform_ds(填数据源 ID + 来源查询 SQL,如SELECT order_id, amount, updated_at FROM orders)或object(本体对象快照,仅 full 模式)。 - 第二步选同步模式:
full(单事务清空目标行表全量重写)/incremental(必填水位列 watermark_col,如updated_at,运行时自动包装SELECT * FROM (查询) WHERE 水位列 > 上次值;可选 field_map 幂等键映射{"order_id":"order_id"},冲突跳过)。 - 可填 cron 调度(空=仅手动;如
0 */2 * * *每 2 小时)+ 勾选「创建后立即启用」→ 创建即注册调度条目sync:<targetID>(注册失败如非法 cron 会回滚创建)。 - 保存后点「立即运行」(任务化:
POST /api/v1/sync/targets/:id/run,15s 快路径或返回 task_id 走进度条轮询)→ 运行历史GET /sync/targets/:id/runs出现 success 与 rows_synced;同步成功链自动触发数据集质量画像 + 血缘打点 source→dataset。
操作 C:数据集(CSV/上传 + 画像)
- 进 数据集页 → 上传 CSV(仅 CSV/JSON,XLSX 显式拒绝;表头列名必须过白名单
^[a-z][a-z0-9_]*$——小写字母开头、仅小写/数字/下划线,含大写/中文/空格直接拒绝,上限 32MB)→ 自动生成 schema → 预览 50 行 → 发布版本(POST /api/v1/datasets/upload、/datasets/:id/versions/publish;发布=指针推进不拷数据)。 - 打开画像(
GET /datasets/:id/profile)看质量分(每列 null 率/distinct/avg/top5 高频值)。 - 也可用「新建数据集(数据源查询)」:填数据源 ID + 查询 SQL(建议带 LIMIT)→ 创建即拉数落平台行表并推断 schema,自动打血缘 datasource→dataset。
怎么验
- 管道/同步/数据集各有 ≥1 条 success 记录;血缘页能看到“源 → 管道 → 对象/数据集”的边(若打了目标对象)。
- 调度器页能看到注册的管道/作业与其最近一次运行结果。
inventory 同名表上会与 seed 冲突——管道输出表请用独立名(如 stock_daily)。5.3 第三幕 · 本体建模:对象 / 动作 / 版本审批
目的:本体是“AI 能懂业务”的语义层:对象=表,属性=列,动作=授权写入口。seed 已把 inventory / purchase_request 等建好,本幕一是看懂结构,二是演示编辑流程(版本 draft→review→merge + 需要时 approve)。
操作 ①:看懂 seed 本体
- 进 Foundry 对象工作台(
/foundry,FoundryPage)→ 切到“对象”Tab,列表含customer / order / product / inventory / purchase_request。 - 打开
inventory:看属性(inventory_id / product_id / warehouse / stock_level 库存量 / reorder_point 补货点 / updated_at)与动作 update_inventory(modify,参数 inventory_id+stock_level+expected_updated_at,乐观锁+幂等键字段=inventory_id)。 - 打开
purchase_request:看动作 create_purchase_request(create,新增采购申请)。这两个对象 + 动作是主剧情“补货”的语义基础。
操作 ②:改一版本体并走审批(演示“本体信息不是随便改的”)
- 在对象工作台对某对象点“建草稿”(
POST /ontology/objects/:id/drafts)→ 改一个属性显示名/加说明(PUT /ontology/drafts/:vid)。 - 提交评审(
POST /ontology/drafts/:vid/review)。 - 若该对象动作/策略要求多人审批(requires_approval 且 min_approvals>1),合入会先返回
409 APPROVAL_REQUIRED:审批人调用POST /ontology/objects/:id/versions/:vid/approve,票数够了再POST /ontology/drafts/:vid/merge才放行;自批会被 409 APPROVAL_DENIED 拦下。 - 看版本历史(时间线 draft→review→merged + change_diff),点“影响分析”看受影响的指标/对象。
怎么验
- 版本号 +1、状态回到 merged;版本时间线、影响分析有内容。
- “被引用对象禁止删除”“merge 需审批”这些治理规则能触发一次让你讲解。
5.4 第四幕 · 智能查询
目的:把“库里有什么”变成“一句话问出来”。给你 4 个查询入口,按演示需求选:
| 入口 | 在哪 | 适合问 | 真实例子 |
|---|---|---|---|
| NLQ 智能查询 | AIP 菜单 /chat(POST /api/v1/chat) | 口径稳定的聚合查数 | “查询各区域订单销售额” → 返回 intent + SQL + 表格 + 图表 + RAG 上下文 + 审计 |
| 语义检索 SemanticSearch | Foundry 语义检索页(POST /ontology/semantic-search) | “哪个对象/指标管这事” | 搜 inventory → 命中库存对象+属性+动作;搜 销售额 → 命中 total_gmv(口径 SUM(amount)) |
| 对象查询 Object Query | Foundry 对象查询页(POST /objects/:id/query) | 对真实行的过滤/分页查询(带列白名单防注入) | 对 inventory:fields=[product_id,warehouse,stock_level,reorder_point],filters=stock_level gte 0,看真实库存行 |
| 指标查询 | Foundry 指标管理 / 仪表盘 | 指标口径 | total_gmv 返回聚合值;catalog 列出全部指标 |
怎么验(推荐组合拳,演示“AI 看得懂库存语义”)
- AIP
/chat问一次订单销售额——展示“一句话出数”,并强调 OAG 已把 Foundry 对象/口径注入 Prompt。 - 语义检索搜
inventory、purchase_request——展示“AI 能找到动作与字段”。 - 对象查询真实过滤
inventory,找出stock_level < reorder_point的行——这是后续自动化的事实输入(若嫌手写 filters 麻烦,也可让 5.5 的事件触发把状态带出来)。
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),最不容易“卡壳”。
- 新建工作流,名称如
stock_drop_alert;触发器选event并填 filters:object_types=[inventory], action_names=[update_inventory](防止自动动作写库再自触发,这是防环关键)。 - 编排节点(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}} - 保存并 发布(
POST /workflows/:id/publish,发布后 event 调度器每 ~30s 轮询 Foundry change-events)。 - 点 立即运行(manual,
POST /workflows/:id/run)可先验证一次不报错;再进入 5.8 用一次真实动作触发 event 路径。
补充演示:cron 定时(“自动”的字面意思)与 webhook
- 把同一工作流触发器改为
cron: 0 9 * * *(每天 9 点)→ 发布即注册到调度器;/admin/monitoring或GET /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 与动作名)。
{{.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)。
三段对话演示(照着念,跑偏就补一句纠正)
- 建定时简报:“每天 9 点检查一遍低于补货点的库存,帮我生成一段中文分析,发到站内通知,并把发现的低库存商品自动创建采购申请。”——Copilot 会先
list_automations避免重复,再create_automation(trigger_type=cron)并发布;右侧自动化列表应出现新行。 - 建事件规则:“以后每次库存被调低,如果低于补货点就自动建采购申请并通知我。”——生成 event 模板:t0→ai_analysis→condition→execute_foundry_action+send_notification,幂等键
automation-event-{{.trigger.event.id}}。 - 直接问/做:“现在有哪些库存低于补货点?”(query_objects,展示 AI 懂库存语义);如想演示写库再补一句“把 SKU-0001 的库存量改成 80”(execute_action 前它会先说明影响,演示人点头再放行)。
怎么验
- 对话落
automation_sessions/automation_messages;每次工具调用审计AUTOMATION_TOOL_CALL;生成的自动化在“工作流编排”里可见且status=published。 - 把 5.5 的 event filters 加进对话:“只监听库存更新事件,避免自触发”——Copilot 会把它写进 filters。
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 / end:human_task 把流程停在人工待办上,approve / reject 后流程继续;auto_task 可调用本体 Action(走写路径执行)。入口:Foundry 侧边栏 → 工作流(/foundry/workflows)。
演示一个“补货审批”工作流
- 新建工作流(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}}点路径引用。
- 线性版(最稳,推荐先演):start → human_task(经理审批) → auto_task(创建采购申请) → end。审批通过则自动建采购申请;拒绝即实例 failed(MVP 语义:reject 置实例 failed,无退回/分支)。
- 校验(
POST /workflows/:id/validate,DAG 校验:唯一 start/end、类型合法、环检测、可达 end)→ 发布(版本自增置 active,未发布不能启动)→ 启动(POST /workflows/:id/start,prompt 填 JSON 输入)→ 实例停在 human_task(任务 assigned + 发站内通知)。 - 换审批人账号登录,进 我的待办(
GET /tasks/my)→ 看到该任务 → 填意见后 通过/拒绝(POST /tasks/:id/approve|reject;后端强制「仅限被分配人处理」,否则 403)。 - 同意后引擎恢复快照继续推进 → auto_task 调用本体动作 create_purchase_request 走写路径落库(幂等键
wf-<instanceID>-<nodeID>防重复写);驳回则实例置 failed。
怎么验
- 任务中心出现 human 待办,approve 前业务表无新采购申请,approve 后出现新行——审批闸门是真的。
- 实例详情能看到节点执行轨迹;审批动作留痕(任务状态 completed/rejected + 审计)。
- 关联的评论(
/comments)与站内通知(/notifications)也一并可用,可补一句“审批还能 @ 同事、留言”。
{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/execute) | execute_foundry_action 工具,治理+强一致校验 |
| ④ 工作流/ Copilot | execute_foundry_action 节点 / Copilot execute_action | 自动化链路里的动作 |
操作:①(动作测试)+ ②(Agent)组合拳
- 校验动作本身:动作测试页固定
VALIDATE_AND_EXECUTE模式(页面不提供模式切换);纯校验用 APIPOST /ontology/actions/:name/validate(mode 强制 VALIDATE,不落盘不耗幂等键)。 - 拿乐观锁:对象查询看某行
updated_at(update_inventory 的 SQL 模板带AND updated_at=:expected_updated_at,参数 schema 的 required 含 inventory_id/stock_level/expected_updated_at)。 - 真实执行:选动作 → 按 param_schema 生成参数表单(number/enum 自动渲染)→ 点「生成」自动产生幂等键(crypto.randomUUID)→ 执行,把 stock_level 调低(低于 reorder_point,为 5.5/5.6 的事件流“递补货理由”)→ 返回 success + rows_affected=1 + operation_id(
run_<id>)。 - 幂等重放:点页面「重放上次执行」按钮(复用 lastKey 再提交)→ 返回
replayed+replayed_from_run_id,rows_affected 回放首次值,不重复写库。 - 乐观锁冲突:故意用旧
expected_updated_at再跑 → 返回conflict(409 ACTION_CONFLICT)。注意契约:HTTP 200 ≠ 成功——validation_failed(422)/forbidden(403)/conflict(409) 业务失败时响应体仍携带完整 mode/status/validation/edits;仅 replayed 降为 200。 - Agent 查证:AIP
/agent新建任务 goal=“统计各客户消费总额”(或“查询当前低于补货点的库存”),模式 plan_execute(当前唯一模式)→ 同步执行(前端 timeout 120s),返回 steps 时间线(工具名+状态+结果摘要)+ result_summary——体现“Agent 规划并调用工具完成目标”,随后把步骤结论作为“要不要补货”的依据。
怎么验
- 动作执行后:业务表行被改、审计
ACTION_EXECUTEsuccess、GET /ontology/change-events出现对应事件(prior_state/new_state/operation_id/user_id)——为 5.5 event 工作流供料。 - Agent 任务返回 completed + steps 明细;工具执行有审计。
5.9 第九幕 · 关联邮件与飞书
目的:把“自动化的结论/待办”主动推给真人。通知演进:internal(审计即通知)→ feishu(私聊/卡片)→ email(SMTP)。管理工作流通知节点三渠道可配。
配置与状态检查
- 邮件:AIP 管理后台 → 邮件设置(
/admin/email)填 SMTP 账号;用POST /api/v1/email/test发测试邮件,GET /email/status看状态。未配置时 email 节点会直接失败(设计如此,不静默丢通知)。 - 飞书:飞书设置页(
/admin/feishu)显示机器人运行状态(config 已配 app_id/app_secret 且feishu.enabled=true时默认启用);POST /feishu/push可主动推(receive_type=open_id|chat_id)。 - 通知中心:站内通知(列表/标已读)在 Foundry 工作流页与 AIP 均有入口,适合 offline 演示兜底。
接到工作流上
- 在 5.5 的事件工作流里把
send_notification节点配三渠道:channel=internal(必现)、channel=email(填收件邮箱)、channel=feishu(填收件人 open_id)。 - 跑一次事件触发 → 对应渠道收到消息:internal 落审计
WORKFLOW_NOTIFICATION、email 收到 SMTP 邮件、飞书收到卡片。任一渠道因缺凭证失败会在节点状态里明确报错——这本身就是“配置检查”的演示。
default_channel=copilot 时,可直接在飞书私聊里跟 Automation Copilot 对话、让 NLQ 查数结果推回飞书。5.10 第十幕 · 证据回看(闭环验收)
把上面各幕的“留痕”统一收口,回答“凭什么相信 AI 干了这些”:
| 证据 | 在哪看 | 断言什么 |
|---|---|---|
| 审计日志 | AIP /admin/audit、Foundry 审计页 | ACTION_EXECUTE(含 action/params/user)、WORKFLOW_NOTIFICATION、AUTOMATION_TOOL_CALL 等事件齐全 |
| 对象变化事件 | Foundry 对象工作台 → 变化事件 / GET /ontology/change-events | update_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-audit | Copilot / 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.2 | pipeline run status=success,rows_in/rows_out>0 |
| 4 | 本体对象+动作可读 | §5.3 | inventory 含 update_inventory 动作;参数含乐观锁字段 |
| ⭐5 | NLQ 一句话出数 | §5.4 | /chat 返回 SQL+结果,审计有 NLQ_QUERY |
| ⭐6 | 语义检索命中对象/指标 | §5.4 | 搜 inventory/销售额 有命中 |
| ⭐7 | 事件工作流发布并手动可跑 | §5.5 | workflow status=published;run 返回 execution 含节点回放 |
| ⭐8 | Copilot 对话生成自动化 | §5.6 | 新 automation 出现且 published;审计有 AUTOMATION_TOOL_CALL |
| ⭐9 | 事件驱动自动触发 | §5.5+5.8 | 改库存 → ≤30s 内 event execution 出现且完成后续动作/通知 |
| ⭐10 | 人工审批放行/驳回 | §5.7 | human 待办 approve 后业务表出现采购申请;reject 则无 |
| ⭐11 | 动作执行安全机制 | §5.8 | execute success;同 key 重放=replayed;错 updated_at=conflict |
| 12 | Agent 多步工具链 | §5.8 | /agent 任务返回 completed + steps 明细 |
| 13 | 邮件/飞书状态与推送 | §5.9 | email/test 成功或 feishu/push 200(无凭证则看节点明确报错) |
| ⭐14 | 证据齐全 | §5.10 | 审计 ACTION_EXECUTE + change-events + 执行回放可见 |
7 3 分钟演示小抄
- 开场 20s:翻到 Foundry 本体对象 inventory(属性+动作),说“数据在这,动作受控写库”。
- 40s:AIP /chat 一句话“各区域订单销售额”→ 图表出来,“AI 能查”。
- 60s:切到 Automation Copilot 对话:“每天 9 点检查低库存,低于补货点自动建采购申请并通知我”→ 右侧自动化 published,“AI 能配自动化”。
- 80s:动作测试把某库存调低 → 打开工作流执行列表,20-30s 内出现一条 event 触发、自动建单+通知,“AI 能行动”。
- 100s:换审批账号打开任务中心,approve → 采购申请落库,“关键时刻人拍板”。
- 120s:审计 + 对象变化事件翻两屏,“全程留痕可回看”。收工。
8 常见坑与应对(本方案范围内实测经验)
| 症状 | 原因 / 应对 |
|---|---|
| Copilot execute_action / query_objects 返回 503 OAG_UNAVAILABLE | OAG 未启用: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。 |
| 演示库被改乱想还原 | 重启对应后端,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 /me | prot | 当前用户 | |
| 数据源 | GET|POST /datasources · GET|PUT|DELETE /datasources/:id | prot | AIP 侧数据源(供 NLQ) |
| POST /datasources/:id/test · /import-metadata | prot | 测试连接 / 导入元数据 | |
| NLQ | POST /chat | prot | 一句话查数(返回 intent/sql/rows/图表建议) |
| Agent | POST /agents/tasks | prot | 建 Agent 任务(body: goal / mode=plan_execute…) |
| GET /agents/tasks · GET /agents/tasks/:id | prot | 任务列表 / 详情(含 steps) | |
| 工具 | GET /tools · GET /tools/:name · POST /tools/:name/execute | prot | 工具列表/详情/执行(execute_foundry_action 写库) |
| 工作流 | POST /workflows · PUT|DELETE /workflows/:id · POST /workflows/:id/publish|unpublish | admin | 定义写操作 |
| GET /workflows · /workflows/node-types · /workflows/:id · GET /workflows/:id/executions · POST /workflows/:id/run · POST /workflows/executions/:eid/cancel | prot | 读与运行(执行回放 / 手动触发) | |
| POST /webhooks/:name | 公开 | webhook 触发 | |
| Copilot | POST /automation/chat | prot | SSE 对话(自动建/启停自动化) |
| GET /automation/sessions · /sessions/:id · /tools · /automations | prot | 会话/工具/自动化列表 | |
| OAG | POST /oag/actions/:name/validate|execute · GET /oag/actions/runs/:id | prot | 经对象路执行 Foundry 动作 |
| 通知 | GET /feishu/status · POST /feishu/push | admin | 飞书状态 / 主动推送 |
| GET /email/status · POST /email/test | admin | 邮件状态 / 测试发送 | |
| 审计 | GET /audit/logs · GET /ai-audit | admin | 审计日志 / AI 决策审计 |
| 调度 | GET /scheduler/jobs · /scheduler/jobs/:name/runs | prot | 统一调度器作业与运行 |
9.2 Foundry(/api/v1 → 后端 18081)
| 域 | 端点 | 鉴权 | 用途 |
|---|---|---|---|
| 认证 | POST /auth/register · /auth/login | 公开 | 注册/登录(demo:admin/admin1) |
| 数据源 | GET|POST /datasources · GET|PUT|DELETE /datasources/:id | prot | Foundry 数据源 |
| POST /datasources/:id/test | prot | 测试连接 | |
| POST /datasources/:id/import-metadata | prot | 导入元数据(任务化) | |
| 数据集 / 同步 | GET|POST /datasets · POST /datasets/upload · GET|PUT|DELETE /datasets/:id | prot | 数据集 CRUD + CSV 上传 |
| POST /datasets/:id/versions/publish · GET /datasets/:id/versions · GET /datasets/:id/preview|profile | prot | 版本发布/预览/质量画像 | |
| GET|POST /sync/targets · GET|PUT|DELETE /sync/targets/:id · POST /sync/targets/:id/run · GET /sync/targets/:id/runs | prot | 同步引擎 | |
| 管道 | GET|POST /pipelines · GET|PUT|DELETE /pipelines/:id · POST /pipelines/:id/run · GET /pipelines/:id/runs · POST /pipelines/:id/enable|disable | prot | 数据管道 |
| 本体 | GET|POST /ontology/objects · GET|PUT|DELETE /ontology/objects/:id | prot | 对象类型 |
| POST /ontology/objects/:id/drafts · PUT /ontology/drafts/:vid · POST /ontology/drafts/:vid/review|merge | prot | 版本状态机 | |
| POST /ontology/objects/:id/versions/:vid/approve|reject · POST /ontology/objects/:id/rollback | prot | 版本审批 / 回滚 | |
| GET /ontology/objects/:id/export?format=yaml|json|owl|ttl|shacl · POST /ontology/objects/import(Content-Type: application/yaml,body 限 1MB)· /ontology/objects/:id/impact | prot | YAML/OWL/SHACL 导出(export 返回原始文本非 JSON 包装)/ 声明式导入(两遍扫描,单对象失败不整体回滚)/ 影响分析 | |
| 动作(写路径) | POST /ontology/actions/:name/validate|execute · GET /ontology/actions/runs/:id | prot | 执行本体动作(幂等+乐观锁+审计) |
| GET /ontology/change-events | prot | 对象变化事件(供 AIP event 轮询) | |
| 查询 | POST /objects/:id/query · GET /ontology/query/:name | prot | 对象语义查询 |
| POST /ontology/semantic-search | prot | 结构化语义检索 | |
| 指标 | GET|POST /metrics · PUT|DELETE /metrics/:id · POST /metrics/query · GET /metrics/catalog | prot | 指标语义层 |
| 血缘 / 质量 | GET /lineage · GET /quality/rules · POST /quality/rules · GET /quality/issues | prot | 血缘追溯 / 质量规则与问题 |
| 业务流程工作流(人工审批) | GET|POST /workflows · GET|PUT|DELETE /workflows/:id · POST /workflows/:id/validate|publish|start | prot | 工作流定义与实例启动 |
| GET /workflows/:id/instances · /instances/:instanceId | prot | 实例历史 | |
| GET /tasks/my · GET /tasks/:id · POST /tasks/:id/approve|reject|reassign · GET|POST /comments · GET /notifications | prot | 我的待办 / 审批 / 评论 / 通知 | |
| 审计 / 调度 | GET /audit/events · GET /audit/events/summary · GET /scheduler/jobs | prot | 审计事件 / 调度作业 |
10 相关文档索引
- 产品与路线:
wiki/OVERVIEW.md、wiki/ROADMAP.md、wiki/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}.html、docs/story/foundry/{ontology-modeling, pipelines, semantic-query, action-writepath}.html、docs/story/cross/combined-demo.html(旧 v4 口径:无编排、靠人接力——本方案即把其中“靠人接力”的短板用 AI 自动化补上) - 真实回归参考:冒烟脚本
temp/smoke_foundry.sh(本体/语义/动作写路径/管道全链路 23 项 PASS);AIP v4 测试(products/aip/server/agent_http_test.go、automation_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 章)