闭环:从 ERP 到持续变好的应用
这一页用吉兴天津 8100 生产进度的真实做法,把五个 SDK 串成一条线:连接(ERP 只读)→ 数据(数据层)→ 语义(对象、Action)→ 权限(谁能看、谁能改、分享)→ 日志(用得怎么样)→ 自提升(下一个版本)。恒田缅甸二厂车缝产量是同一套做法。
SAP / MES(只读)
│ 连接 SDK:发布端(客户箱上的 systemd 服务,不是 cron)
▼
数据层(AIDC 中枢)── 数据 SDK:同步绑定、增删改查、实时订阅
▼
语义层 ── 语义 SDK:工单线体 / 线体、链接、Action「登记异常」「解决异常」「维护线体」
▼
Nexus 应用 · 智能体 ── 权限 SDK:成员可改、公开链接只读 ── 日志 SDK:打开、操作、反馈、版本
▲ │
└──────────────── 自提升 SDK:证据 → 提案 → 新语义版本 / 新应用版本 ◀──┘
1. 连接:数据源只读地推上来
发布端装在客户箱上,读 SAP 的报工确认(AFRU)与生产进度报表(ZPP015),有变化才推一批到数据流 tj8100-progress(见连接 SDK · 实时数据流)。它只有一把只能往这条流发布的 Key,永远不会写 SAP。
2. 语义:先定义「这是什么」
aidc semantic define ontology/ # production.issue_status(枚举)、production.line、production.order_line、三个 Action
aidc semantic publish --notes "天津 8100 生产进度首版"
production.order_line 的属性分两类:工单、线体、计划、累计合格、实际 JPH……来自 SAP(只读);异常状态、异常说明、登记人、处理说明……只在语义层维护(writeback)。Action 定义「登记异常」要哪些参数、改哪些属性、谁能做(见语义 SDK)。
3. 数据:把数据流同步进语义层
aidc data bind tj8100-progress production.order_line --map order_no=order,line_code=line,material=material,product=product,shift=shift,plan=plan,ok=ok,gap=gap,jph_actual=jph_actual,jph_std=jph_std,last_op=last_op,day=day
aidc data bind tj8100-progress production.line --map line_code=line --mode upsert
aidc data query production.order_line --sort -gap --limit 5
从这一刻起,SAP 每一次变化都进语义层:数据源层更新、人改过的值不动。应用和智能体不再碰数据流,更不碰 SAP。
4. 应用:读语义层、用 Action 改
import { data, semantic, auth, log } from "/developer/sdk/v1/aidc.js";
const view = data.table("production.order_line").live({ sort: "-gap", onUpdate: render }); // 实时
const me = await auth.me(); // 我能做什么
await semantic.action("production.flag_issue").apply({ issue: "缺料", severity: "异常" }, { object: row.pk });
log.feedback({ topic: "看板", message: "希望按班次筛选" });
清单登记用到的 SDK 与语义资源(部署时会核对 import,用了没登记的直接拒收):
{
"sdk": ["data", "semantic", "auth", "log"],
"semantic": { "types": ["production.order_line", "production.line"], "actions": ["production.flag_issue", "production.resolve_issue", "production.update_line"] }
}
aidc app deploy app/ # → Developer 预览(test),版本号 = 清单 version
aidc app publish tj8100-live --notes "语义层 + 异常登记" # 测过的版本 → Nexus
aidc app registry # 登记表:这个应用用了哪些 SDK、读写哪些类型 / Action
5. 权限:给谁用
- 本公司成员打开
/nexus/cell-gissing-ai/apps/tj8100-live就能看、能执行「登记异常」(Action 的 roles 含 member)。 - 班组长在别的公司账号下?
aidc share tj8100-live --user 他的邮箱 --role editor --days 30。 - 给客户或领导一个只读大屏链接:
aidc share tj8100-live --public(真实数据,发之前确认;随时aidc share revoke)。
6. 日志:用得怎么样
aidc log summary tj8100-live --days 7
打开几次、谁在用、登记了多少次异常、哪些反馈还没处理、每个版本号的状态(已上线 / 已被替换…)、语义版本——都在这里。Action 的记录还能从对象上反查:aidc data get production.order_line <主键> --history。
7. 自提升:下一个版本
aidc improve suggest tj8100-live --file 生产日报口径.md --conversation 班组长群.txt
aidc improve proposals --status open
aidc improve accept <id> && aidc improve apply <id> # 语义类:改说明 / 同义词 / 加属性 → 自动发 v2
应用类提案(「加按班次筛选」)由开发者或智能体改代码,aidc app deploy → 测试 → aidc app publish,最后 aidc improve apply <id> --version 1.2.0;提案关联的反馈自动标记为已处理,反馈人下次打开就能看到改进。
数据放在哪里
- 语义层对象、变化记录、日志、分享、提案都在 AIDC 中枢(Supabase Postgres),按公司隔离;只存看板与协作需要的业务字段,身份证、银行卡、密码之类的字段在定义层就被拒收。
- ERP / MES 只被发布端读;发布 Key 只能往一条流发。
- 删掉一个数据流会连带停止同步;删掉对象类型的定义会归档它(对象保留,直到开发者清理)。
本页由 developer/docs/loop.md 生成 · Markdown 原文 · llms.txt