Who writes what
开发者写的是业务,平台给的是每个系统都要的部分。
分工写在应用清单里:应用声明自己有什么,平台据此提供登录、权限、审阅、审计和多端。
Developer
开发者写
- 清单。页面、对象、操作(op)与输入结构、权限点、资源类型。
- 业务数据与规则。自己的表,在清单里声明迁移。
- 页面。在工作台里以沙箱 iframe 打开。
- 服务端。操作的预演与执行,由平台托管运行或自己部署。
{
"protocol": "k3/0.5",
"id": "crm",
"name": "客户管理(模板)",
"version": "0.1.0",
"level": 3,
"embed": "iframe",
"web": {
"url": "http://localhost:8080",
"capabilities": [
"presence",
"ui.toast"
]
},
"openapi": "http://localhost:8080/openapi.json",
"nav": [
{
"label": "客户",
"route": "/accounts"
}
],
…
k3 app init 生成的清单用模板创建一个应用 →
Six layers
一个业务系统的六层,只有一层由开发者写。
| 层 | 包括 | 谁提供 |
|---|---|---|
| 多端 | Web 工作台(宽屏三栏、平板两栏、手机一屏)、Raise 浏览器(macOS、Windows)、iOS 与 Android 应用 | 平台 |
| 助手 | 对话、定时任务、草稿与确认卡、自动应用规则;外部 Agent 经 MCP 桥接入 | 平台 |
| 业务应用 | 对象、操作、页面、服务;20 个参考应用也在这一层 | 开发者 |
| 平台服务 | 审批、消息中心、文件与检索、收款、对象引擎、资源访问、连接器、通知与事件 | 平台 |
| 身份、权限、审计 | 单点登录与企业登录、部门 / 角色 / 权限点 / 数据范围 / 字段、只追加的哈希链审计 | 平台 |
| 运行与交付 | 行级安全的多组织隔离、应用托管运行、许可证、Compose / Helm / 离线安装包 | 平台 |
Interfaces
应用经三张接口面使用平台。
参考应用和第三方应用用的是同一组接口。每个调用都带范围,范围写在清单里,随版本审核。
- 开放接口 /open/v1。组织的数据:客户、成员与组织、多维表的视图行等。集成方和应用用凭证换令牌调用。
- 应用接口 /app/v1。平台能力:权限点判定、审批、收款、审计、文件、通知、草稿、资源访问、模型等。
- 平台到应用的签名合约 K3-Assertion。平台把操作的预演与执行、服务的一次运行送到应用时,带平台签发的短期断言,应用用平台的 JWKS 验证。
curl -sS -X GET "https://api.${DOMAIN}/open/v1/whoami" \
-H "Authorization: Bearer ${ACCESS_TOKEN}"
acc, err := c.App.Access.Check(ctx, &raise.AppAccessCheckParams{Point: "app.shop-sync.orders.read"})
if err != nil {
return err
}
fmt.Println(acc.Allowed, acc.Units)
whoami;本应用一个权限点的判定应用接口 →