闭环:从 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. 权限:给谁用

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;提案关联的反馈自动标记为已处理,反馈人下次打开就能看到改进。

数据放在哪里

本页由 developer/docs/loop.md 生成 · Markdown 原文 · llms.txt