openxiangda-skill-kit 2.3.3 → 2.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/skills/openxiangda-v2/SKILL.md +11 -11
- package/skills/openxiangda-v2/references/appspec.md +8 -1
- package/skills/openxiangda-v2/references/backend.md +38 -0
- package/skills/openxiangda-v2/references/cli.md +3 -1
- package/skills/openxiangda-v2/references/data-authz.md +35 -0
- package/skills/openxiangda-v2/references/declarations-cheatsheet.md +7 -1
- package/skills/openxiangda-v2/references/design-workflow.md +90 -74
- package/skills/openxiangda-v2/references/development.md +3 -3
- package/skills/openxiangda-v2/references/frontend.md +11 -4
- package/skills/openxiangda-v2/references/getting-started.md +34 -2
- package/skills/openxiangda-v2/references/mcp.md +12 -6
- package/skills/openxiangda-v2/references/product-design.md +1 -1
- package/skills/openxiangda-v2/references/public-access.md +16 -6
- package/skills/openxiangda-v2/references/testing.md +2 -0
- package/skills/openxiangda-v2/references/upgrading.md +1 -1
- package/skills/openxiangda-v2/references/workflow-events.md +42 -0
- package/skills/openxiangda-v2/references/design-craft.md +0 -1526
- package/skills/openxiangda-v2/references/opendesign-methods.md +0 -756
|
@@ -139,7 +139,8 @@ MCP 使用项目锁定的根包;在客户端配置下列 stdio 启动参数,
|
|
|
139
139
|
"minimum": 0,
|
|
140
140
|
"maximum": 9007199254740991
|
|
141
141
|
}
|
|
142
|
-
}
|
|
142
|
+
},
|
|
143
|
+
"additionalProperties": false
|
|
143
144
|
}
|
|
144
145
|
```
|
|
145
146
|
|
|
@@ -169,7 +170,8 @@ MCP 使用项目锁定的根包;在客户端配置下列 stdio 启动参数,
|
|
|
169
170
|
},
|
|
170
171
|
"required": [
|
|
171
172
|
"deploymentId"
|
|
172
|
-
]
|
|
173
|
+
],
|
|
174
|
+
"additionalProperties": false
|
|
173
175
|
}
|
|
174
176
|
```
|
|
175
177
|
|
|
@@ -229,7 +231,8 @@ MCP 使用项目锁定的根包;在客户端配置下列 stdio 启动参数,
|
|
|
229
231
|
"production"
|
|
230
232
|
]
|
|
231
233
|
}
|
|
232
|
-
}
|
|
234
|
+
},
|
|
235
|
+
"additionalProperties": false
|
|
233
236
|
}
|
|
234
237
|
```
|
|
235
238
|
|
|
@@ -265,7 +268,8 @@ MCP 使用项目锁定的根包;在客户端配置下列 stdio 启动参数,
|
|
|
265
268
|
},
|
|
266
269
|
"required": [
|
|
267
270
|
"workflowCode"
|
|
268
|
-
]
|
|
271
|
+
],
|
|
272
|
+
"additionalProperties": false
|
|
269
273
|
}
|
|
270
274
|
```
|
|
271
275
|
|
|
@@ -298,7 +302,8 @@ MCP 使用项目锁定的根包;在客户端配置下列 stdio 启动参数,
|
|
|
298
302
|
"description": "仅本地完整检查;结果 validationScope=local,不核对现场条件",
|
|
299
303
|
"type": "boolean"
|
|
300
304
|
}
|
|
301
|
-
}
|
|
305
|
+
},
|
|
306
|
+
"additionalProperties": false
|
|
302
307
|
}
|
|
303
308
|
```
|
|
304
309
|
|
|
@@ -523,7 +528,8 @@ MCP 使用项目锁定的根包;在客户端配置下列 stdio 启动参数,
|
|
|
523
528
|
"description": "持续跟踪原运行至结束,最多 15 分钟",
|
|
524
529
|
"type": "boolean"
|
|
525
530
|
}
|
|
526
|
-
}
|
|
531
|
+
},
|
|
532
|
+
"additionalProperties": false
|
|
527
533
|
}
|
|
528
534
|
```
|
|
529
535
|
|
|
@@ -141,4 +141,4 @@ context 的 `readyForImplementation` 为真时才制定具体实现任务,把
|
|
|
141
141
|
- [Design OS,固定提交](https://github.com/buildermethods/design-os/tree/529dedb43bfec24b2cbb128f26dd8cbc6143f754)(MIT)。
|
|
142
142
|
- [Spec Kit,固定提交](https://github.com/github/spec-kit/tree/4a7341a93d944d6efe153b71da4a1adb9c2b578c)(MIT)。
|
|
143
143
|
|
|
144
|
-
|
|
144
|
+
有界面影响的工作默认由当前 AI Agent 完成视觉方向、真实页面实现和浏览器修正,见[设计工作流](design-workflow.md)。需要建立新方向时可按需使用 Image 2.5 等当前图片能力生成少量参考;图片不定义交互、权限或验收,采用的资源以 AppSpec assets 固定。
|
|
@@ -92,8 +92,11 @@ export default defineOpenXiangdaApp({
|
|
|
92
92
|
|
|
93
93
|
附件、图片、多选等多值字段使用数组,存储不允许 null;这不意味着用户必须填写。上例照片可选,
|
|
94
94
|
可以省略或提交空数组,不放入 `requiredFields`。如果业务确实要求上传,资源字段声明 `required: true`,
|
|
95
|
-
公开策略也必须将它列入 `requiredFields`;提交时省略、null
|
|
96
|
-
|
|
95
|
+
公开策略也必须将它列入 `requiredFields`;提交时省略、null 或空数组都会被拒绝。`requiredFields` 必须覆盖
|
|
96
|
+
资源已有的必填业务字段;比模型必填**更严**(列入模型未声明 `required: true` 的字段)时编译器给出警告
|
|
97
|
+
`APP_CONFIG_ANONYMOUS_POLICY_REQUIRED_FIELDS_STRICTER_THAN_MODEL`:标准表单控件不为这些字段生成必填
|
|
98
|
+
校验,空值提交会被服务端 `REQUIRED_FIELD_MISSING` 拒绝。需要前端必填校验时在模型字段上声明
|
|
99
|
+
`required: true`,使模型必填与策略对齐。缺失覆盖的诊断会指出字段和 `fields`/`requiredFields` 路径。
|
|
97
100
|
|
|
98
101
|
操作按页面实际需要最小声明:
|
|
99
102
|
|
|
@@ -158,15 +161,22 @@ publicFilters: [{ field: 'enabled', operator: 'eq', value: true }]
|
|
|
158
161
|
|
|
159
162
|
匿名创建需要平台生成的不可预测字段时,使用 `serverGeneratedFields`。这些字段不属于
|
|
160
163
|
`fields`,调用方不能在草稿中写入;提交事务会由平台生成随机值并在提交回执的 `generated`
|
|
161
|
-
|
|
164
|
+
对象中返回。目前仅支持 `random-token` 一种 kind,只适用于不承载身份信息的核验令牌等用途:
|
|
162
165
|
|
|
163
166
|
```ts
|
|
164
167
|
serverGeneratedFields: [{ field: 'qrToken', kind: 'random-token' }]
|
|
165
168
|
```
|
|
166
169
|
|
|
167
|
-
需要跨资源复核预约窗口等业务不变量时,可声明 `schedule
|
|
168
|
-
|
|
169
|
-
|
|
170
|
+
需要跨资源复核预约窗口等业务不变量时,可声明 `schedule`。它把本策略资源上的
|
|
171
|
+
`campusField`(校区)、`dateField`(日期)和 `timeField`(时间)绑定到另外两个**只读公开
|
|
172
|
+
策略**(`campusPolicyCode`/`rulePolicyCode`,必须是同 `publicAccess` 中已声明的策略 code),
|
|
173
|
+
并在规则策略暴露的资源上指定读取哪些字段:`ruleCampusField`(规则所属校区)、
|
|
174
|
+
`ruleWeekdaysField`(开放星期)、`ruleOpenAtField`/`ruleCloseAtField`(每日开放窗口)、
|
|
175
|
+
`ruleSlotMinutesField`(离散时段分钟数)、`ruleAdvanceHoursField`/`ruleAdvanceDaysField`
|
|
176
|
+
(可提前预约的小时/天数上限),以及两个策略各自的启用开关
|
|
177
|
+
`campusEnabledField`/`ruleEnabledField`。十四个键全部必填,字段 code 必须真实存在于
|
|
178
|
+
对应资源。平台会在最终创建事务中重新读取启用的校区与规则,校验星期、日期范围、提前量
|
|
179
|
+
和离散时段;页面端校验只能改善体验,不能替代这次服务端复核。
|
|
170
180
|
|
|
171
181
|
子表中的文件引用会自动带上受控的 `resourceCode` 与父字段绑定;应用如需为附件生成下载地址,使用
|
|
172
182
|
`fileContentUrl(fileId, disposition, variant, resourceCode, parentFieldCode)`,不要自行拼接文件路径。
|
|
@@ -32,6 +32,8 @@ Web 默认保留开发服务回环访问检查。按需 Nest 使用 `tsx --test`
|
|
|
32
32
|
|
|
33
33
|
应用入口或导航变更必须从平台应用列表实际点击进入,再验证应用根路径、登录返回和刷新后的深链接。使用后台的应用检查 `/admin` 进入首个有权菜单、自定义页只出现一个 Shell、菜单切换与未保存保护、无权限拒绝;纯用户应用验证其声明首页,不强制增加后台。直达开发者给出的 `/home` 或报表链接通过,不能替代平台实际入口验收。
|
|
34
34
|
|
|
35
|
+
平台浏览器入口有两个:`/view/<应用标识>/...` 是正式环境入口,`/dev/<应用标识>/...` 是预发(测试环境)入口,路径中的应用标识即 `app.code`。测试部署通过后从 `/dev/<应用标识>` 做浏览器验收;生产晋级后用 `/view/<应用标识>` 复核。`/dev` 入口要求已登录平台账号(应用内数据和功能仍按应用角色权限控制),未部署的环境返回明确的 503 页面,响应头 `X-OpenXiangda-Environment` 标识当前环境。本地 `pnpm openxiangda dev` 的回环地址只用于开发迭代,不能替代这两个平台入口的验收。
|
|
36
|
+
|
|
35
37
|
只改文案时验证受影响页面。复杂事务、并发和值转换使用聚焦测试。浏览器验收实际操作并检查错误,不能用模拟响应或空页面加载代替真实角色验收。
|
|
36
38
|
|
|
37
39
|
匿名访问另验证续填、上传、校验、幂等提交、own.list/own.read;另一浏览器应无法获取前一浏览器的记录。工作流按已启用功能检查发起、处理、历史详情和消息跳转,不为未启用通道增加测试负担。
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
共享校验使用 `configuration-compatibility/v2` 描述,包含校验实现摘要。切换到这一契约时,平台和项目工具链需按同一发布说明配套升级。随后每次发布在构建前核对实现摘要;不要反复修改业务代码来处理工具版本不配套。
|
|
18
18
|
|
|
19
|
-
引导式开发使用 workspace-context/v3 与 AppSpec context/
|
|
19
|
+
引导式开发使用 workspace-context/v3 与 AppSpec context/v4。升级后按实际业务补齐总纲与关联变更;空模板不能正式测试发布,生产晋级需要原测试版本的验收计划和实际报告。旧候选缺少计划时建立新的测试候选并验收,不自动补写过去的确认或通过记录。普通 dev/check 仍可用于整理和验证尚未完成的项目。
|
|
20
20
|
|
|
21
21
|
## 更新项目 {#upgrade}
|
|
22
22
|
|
|
@@ -58,6 +58,46 @@ events: {
|
|
|
58
58
|
外部 Webhook 和自定义代码仍使用已有签名、回执、重试及接收端幂等协议,按至少
|
|
59
59
|
一次投递处理。轻量操作历史仍通过已有审计 API 查询,不依赖是否订阅了事件。
|
|
60
60
|
|
|
61
|
+
## 定时与日期触发
|
|
62
|
+
|
|
63
|
+
除订阅平台数据事件外,`events` 还能声明两类自有时程触发器;两者都只负责在到期时
|
|
64
|
+
发出应用事件,业务效果仍由订阅(含 `execution: native-data`)或应用后端处理。
|
|
65
|
+
|
|
66
|
+
`events.timers` 按 cron 周期发事件。`code` 为 kebab-case 且唯一;`eventType` 必须是
|
|
67
|
+
`events.schemas` 已声明的应用事件;`cronExpression` 为六段 cron(秒 分 时 日 月 周),
|
|
68
|
+
`timezone` 使用 IANA 名称(如 `Asia/Shanghai`),最短触发间隔为 60 秒;`misfirePolicy`
|
|
69
|
+
目前仅支持 `coalesce_one`(错过合并为一次);`payload` 是普通对象,必须完整满足所引用
|
|
70
|
+
事件的 JSON Schema 且不超过 64 KiB。定时声明属于环境中立的 AppVersion,不写
|
|
71
|
+
`environmentKey`;启用/暂停和下次触发时间由平台按环境管理。
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
events: {
|
|
75
|
+
schemas: [{
|
|
76
|
+
eventType: 'app.report.digest.v1',
|
|
77
|
+
dataSchemaVersion: '1',
|
|
78
|
+
jsonSchema: {
|
|
79
|
+
type: 'object', additionalProperties: false,
|
|
80
|
+
required: ['kind'], properties: { kind: { type: 'string' } },
|
|
81
|
+
},
|
|
82
|
+
}],
|
|
83
|
+
timers: [{
|
|
84
|
+
code: 'daily-digest',
|
|
85
|
+
eventType: 'app.report.digest.v1',
|
|
86
|
+
cronExpression: '0 0 9 * * *',
|
|
87
|
+
timezone: 'Asia/Shanghai',
|
|
88
|
+
payload: { kind: 'daily' },
|
|
89
|
+
}],
|
|
90
|
+
},
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
`events.dateTriggers` 相对记录的 date/datetime 字段发事件:字段值加 `offset`(ISO-8601
|
|
94
|
+
时长,十年内,如 `-PT1H` 表示提前一小时)到达时触发。适合到期提醒、超期升级等场景;
|
|
95
|
+
同一条记录的字段更新后按新值重算。`code` 唯一,`eventType` 同样引用已声明应用事件。
|
|
96
|
+
|
|
97
|
+
两类触发器各最多 100 条。事件 Schema 用 `events.schemas` 声明
|
|
98
|
+
(`{ eventType, dataSchemaVersion, jsonSchema, sensitiveFields? }`),`eventType` 遵循
|
|
99
|
+
`xxx.yyy.v1` 版本后缀模式;触发器只发事件,不直接写数据或调用流程。
|
|
100
|
+
|
|
61
101
|
## 标准详情与当前用户入口
|
|
62
102
|
|
|
63
103
|
普通记录、流程记录、任务和实例复用同一详情框架。流程详情提供申请内容、审批历史和变更记录三个标签页;管理员在当前抽屉或页面中切换到普通表单编辑,直接保存并自动留下变更记录,审批结果保持不变。PC 子表在表格内编辑,父表提交时统一校验。
|
|
@@ -113,6 +153,8 @@ Workflow 发起只接受 `{ resourceCode, id }` 形式的 `dataRef`,并要求
|
|
|
113
153
|
|
|
114
154
|
首期只支持 `approval`、`condition`、`end`,以及 `single`、`any`、`all`、`sequence` 审批模式。标准操作为提交、同意、拒绝、退回、重新提交、转交、委托、前/后加签、撤回、管理员改派、管理员终止和不改变流程状态的催办。
|
|
115
155
|
|
|
156
|
+
除命令集之外,平台为实例管理员提供两个维护动作:`admin_jump`(把处于运行或退回状态的实例跳转到指定节点)与 `admin_delete`(删除实例,可选同时删除表单数据、是否触发自动化)。两者走平台管理端点的预览/执行两步流程并要求同源浏览器请求,不属于应用声明的工作流命令,也不占用 `commandToken` 命令合同。
|
|
157
|
+
|
|
116
158
|
复杂业务状态机继续放在应用领域服务。不要把任意 JavaScript、Service Task、BPMN、通用长事务或业务记录复制进 Workflow。
|
|
117
159
|
|
|
118
160
|
所有页面和消息动作必须来自后端 Workflow Surface 的 `operations[]`。前端、模板和渠道 Adapter 不自行推断操作权限。
|