openxiangda 2.61.3 → 2.62.1

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.
Files changed (67) hide show
  1. package/dist/browser/components/administration/membership-batch-model.d.ts.map +1 -1
  2. package/dist/browser/components/administration/membership-batch-model.js +2 -1
  3. package/dist/browser/components/administration/membership-batch-model.js.map +1 -1
  4. package/dist/browser/components/platform-fields/MobileManagedFileField.d.ts.map +1 -1
  5. package/dist/browser/components/platform-fields/MobileManagedFileField.js +2 -1
  6. package/dist/browser/components/platform-fields/MobileManagedFileField.js.map +1 -1
  7. package/dist/browser/components/platform-fields/SubtableField.d.ts.map +1 -1
  8. package/dist/browser/components/platform-fields/SubtableField.js +3 -2
  9. package/dist/browser/components/platform-fields/SubtableField.js.map +1 -1
  10. package/dist/browser/components/resource/ResourceBatchActions.d.ts.map +1 -1
  11. package/dist/browser/components/resource/ResourceBatchActions.js +7 -6
  12. package/dist/browser/components/resource/ResourceBatchActions.js.map +1 -1
  13. package/dist/browser/components/resource/record-comment-session.d.ts.map +1 -1
  14. package/dist/browser/components/resource/record-comment-session.js +2 -1
  15. package/dist/browser/components/resource/record-comment-session.js.map +1 -1
  16. package/dist/browser/components/resource/record-deletion-session.d.ts.map +1 -1
  17. package/dist/browser/components/resource/record-deletion-session.js +2 -1
  18. package/dist/browser/components/resource/record-deletion-session.js.map +1 -1
  19. package/dist/browser/components/resource/useResourceFormDrafts.d.ts.map +1 -1
  20. package/dist/browser/components/resource/useResourceFormDrafts.js +2 -9
  21. package/dist/browser/components/resource/useResourceFormDrafts.js.map +1 -1
  22. package/dist/browser/components/workflow/WorkflowAssignmentRoutingEditor.d.ts.map +1 -1
  23. package/dist/browser/components/workflow/WorkflowAssignmentRoutingEditor.js +2 -1
  24. package/dist/browser/components/workflow/WorkflowAssignmentRoutingEditor.js.map +1 -1
  25. package/dist/browser/components/workflow/WorkflowBusinessStepRecoveryPanel.d.ts.map +1 -1
  26. package/dist/browser/components/workflow/WorkflowBusinessStepRecoveryPanel.js +2 -1
  27. package/dist/browser/components/workflow/WorkflowBusinessStepRecoveryPanel.js.map +1 -1
  28. package/dist/browser/components/workflow/WorkflowDelegationManager.d.ts.map +1 -1
  29. package/dist/browser/components/workflow/WorkflowDelegationManager.js +2 -1
  30. package/dist/browser/components/workflow/WorkflowDelegationManager.js.map +1 -1
  31. package/dist/browser/components/workflow/WorkflowNodeConfigurationEditor.d.ts.map +1 -1
  32. package/dist/browser/components/workflow/WorkflowNodeConfigurationEditor.js +2 -1
  33. package/dist/browser/components/workflow/WorkflowNodeConfigurationEditor.js.map +1 -1
  34. package/dist/browser/components/workflow/WorkflowRecordEditor.d.ts.map +1 -1
  35. package/dist/browser/components/workflow/WorkflowRecordEditor.js +2 -1
  36. package/dist/browser/components/workflow/WorkflowRecordEditor.js.map +1 -1
  37. package/dist/browser/components/workflow/WorkflowTaskDraftPanel.d.ts.map +1 -1
  38. package/dist/browser/components/workflow/WorkflowTaskDraftPanel.js +2 -1
  39. package/dist/browser/components/workflow/WorkflowTaskDraftPanel.js.map +1 -1
  40. package/dist/browser/components/workflow/WorkflowTaskFiles.d.ts.map +1 -1
  41. package/dist/browser/components/workflow/WorkflowTaskFiles.js +2 -1
  42. package/dist/browser/components/workflow/WorkflowTaskFiles.js.map +1 -1
  43. package/dist/browser/durable-command.d.ts.map +1 -1
  44. package/dist/browser/durable-command.js +2 -1
  45. package/dist/browser/durable-command.js.map +1 -1
  46. package/dist/browser/managed-command.d.ts.map +1 -1
  47. package/dist/browser/managed-command.js +2 -1
  48. package/dist/browser/managed-command.js.map +1 -1
  49. package/dist/browser/platform-client.d.ts.map +1 -1
  50. package/dist/browser/platform-client.js +4 -5
  51. package/dist/browser/platform-client.js.map +1 -1
  52. package/dist/browser/uuid.d.ts +7 -0
  53. package/dist/browser/uuid.d.ts.map +1 -0
  54. package/dist/browser/uuid.js +19 -0
  55. package/dist/browser/uuid.js.map +1 -0
  56. package/documentation/backend.md +20 -0
  57. package/documentation/getting-started.md +7 -7
  58. package/documentation/manifest.json +4 -4
  59. package/documentation/workflow-events.md +2 -0
  60. package/package.json +25 -24
  61. package/releases/2.62.0.json +40 -0
  62. package/releases/2.62.1.json +34 -0
  63. package/skills/manifest.json +1 -1
  64. package/skills/openxiangda-v2/SKILL.md +4 -4
  65. package/skills/openxiangda-v2/references/backend.md +20 -0
  66. package/skills/openxiangda-v2/references/getting-started.md +7 -7
  67. package/skills/openxiangda-v2/references/workflow-events.md +2 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openxiangda",
3
- "version": "2.61.3",
3
+ "version": "2.62.1",
4
4
  "description": "OpenXiangda 2.0 的统一命令、应用 SDK、MCP 与中文 AI 技能资料。",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -87,13 +87,13 @@
87
87
  "dayjs": "1.11.18",
88
88
  "docx-preview": "0.3.7",
89
89
  "elkjs": "0.12.0",
90
- "openxiangda-cli": "2.8.11",
91
- "openxiangda-contracts": "2.77.0",
92
- "openxiangda-devkit-core": "2.58.0",
90
+ "openxiangda-cli": "2.8.13",
91
+ "openxiangda-contracts": "2.78.0",
92
+ "openxiangda-devkit-core": "2.59.0",
93
93
  "openxiangda-legacy": "npm:openxiangda@1.0.269",
94
- "openxiangda-mcp": "2.1.8",
95
- "openxiangda-nest": "2.17.2",
96
- "openxiangda-skill-kit": "2.3.99",
94
+ "openxiangda-mcp": "2.1.9",
95
+ "openxiangda-nest": "2.18.0",
96
+ "openxiangda-skill-kit": "2.3.100",
97
97
  "xlsx": "https://github.com/1377385356/openxiangda/releases/download/vendor-mirror/xlsx-0.20.3.tgz"
98
98
  },
99
99
  "peerDependencies": {
@@ -159,36 +159,37 @@
159
159
  },
160
160
  "openxiangdaRelease": {
161
161
  "schemaVersion": "openxiangda.release-notes/v1",
162
- "version": "2.61.3",
162
+ "version": "2.62.1",
163
163
  "status": "reviewed",
164
- "title": "Field Kit 富文本工具栏溢出操作",
165
- "summary": "官方富文本 Field Kit 在桌面窄容器中显示可发现的更多工具入口,并支持稳定展开多行,避免靠后的编辑操作被隐藏。",
166
- "newFeatures": [
167
- "桌面工具栏发生横向溢出时显示“更多工具”按钮,点击后展开为多行并提供收起状态。",
168
- "ResizeObserver 与 MutationObserver 共同覆盖容器尺寸、菜单和动态表格工具变化,移动端继续使用原有换行布局。"
169
- ],
164
+ "title": "兼容非 HTTPS 私有入口的浏览器幂等操作",
165
+ "summary": "修复私有 HTTP 入口缺少 crypto.randomUUID 时工作流节点配置、路由和其他浏览器操作无法生成幂等标识的问题,统一使用 Web Crypto getRandomValues 回退生成 UUID。",
166
+ "newFeatures": [],
170
167
  "fixes": [
171
- "修复富文本工具栏隐藏滚动条后图片、视频、表格和撤销/重做等操作不可发现的问题。",
172
- "修复展开后因重新测量导致按钮闪退的问题;组件卸载会清理观察器和待执行测量。"
168
+ "工作流节点配置保存不再依赖安全上下文专属的 crypto.randomUUID,HTTP 预发入口可以正常提交并保留原操作 ID 重试。",
169
+ "统一修复浏览器端管理、工作流、资源批量、文件和草稿操作的 UUID 生成,避免同类私有 HTTP 部署故障。"
173
170
  ],
174
171
  "affectedUsers": [
175
- "使用 OpenXiangda 官方 Field Kit 富文本字段的应用开发者和编辑人员。"
172
+ "通过 HTTP 私有地址访问 OpenXiangda 管理后台或应用内工作流管理页面的用户。",
173
+ "使用工作流节点配置、路由、委托、恢复、资源批量和文件草稿等浏览器幂等操作的应用。"
176
174
  ],
177
175
  "upgradeSteps": [
178
- "升级 openxiangda 至 2.61.3,并使用匹配的 openxiangda-cli 2.8.11。",
179
- "重新构建应用前端即可获得平台组件行为;HTML、清洗、媒体上传和数据协议无需迁移。"
176
+ "平台管理后台和应用统一升级到 openxiangda 2.62.1 与配套 CLI 2.8.13,重新生成封存七包。",
177
+ "部署后用 HTTP 预发入口保存一个工作流节点描述,确认后台 configuration.revision/history 有一次写入。",
178
+ "继续保留原请求 ID 语义,若结果未知只重试相同请求,不新建幂等键。"
180
179
  ],
181
180
  "knownLimitations": [
182
- "使用自定义编辑器的应用不会自动继承官方 Field Kit 的工具栏布局;移动端按既有换行规则展示。"
181
+ "浏览器仍需要 Web Crypto getRandomValues;极旧浏览器完全没有 Web Crypto 时会明确报错,不回退到可预测的 Math.random。",
182
+ "包版本升级和平台部署不替代真实角色权限、CAS 冲突和业务配置验收。"
183
183
  ],
184
184
  "compatibility": {
185
+ "generation": "v2",
185
186
  "node": ">=24",
186
- "platform": "data.rich-text 1.0.0",
187
- "generation": "OpenXiangda Native V2"
187
+ "platform": "browser Web Crypto getRandomValues",
188
+ "v1": "独立1.x维护包不变"
188
189
  },
189
190
  "issues": [],
190
- "sha256": "b2bfeb9d8bbaaa20a142b8abf4da4f4384edf013e4b5c542bb7cdca75e966f40",
191
- "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.61.3"
191
+ "sha256": "e818f70adf8c607af8a45465bfc67fee0fcb082102f4e973435b18b51525dd5b",
192
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.62.1"
192
193
  },
193
194
  "scripts": {
194
195
  "build": "node ../../scripts/prune-package-dist.mjs && tsc -p tsconfig.json && node scripts/copy-assets.mjs",
@@ -0,0 +1,40 @@
1
+ {
2
+ "schemaVersion": "openxiangda.release-notes/v1",
3
+ "version": "2.62.0",
4
+ "status": "reviewed",
5
+ "title": "受控事件、机器回调与后台补偿原子写入",
6
+ "summary": "以不可变资源、操作、字段和数量声明支持 action-owned 资源的验证事件、具名机器回调及活动租约 Worker 原子事务,保留默认拒绝、CAS、幂等与原有用户权限。",
7
+ "newFeatures": [
8
+ "platformAccess.dataMutations 固定资源、create/update/delete/increment、字段白名单和单事务数量上限;要求 data.service-mutations 1.0.0 平台能力。",
9
+ "ApplicationDataApiService.transactionFromServiceAction 在机器操作的已验证请求下提交同一个 Native 事务,不把机器冒充用户。",
10
+ "ApplicationDataApiService.withWorkerAction 使用 SDK 活动后台租约并要求 allowRuntimeWorker:true,复用既有回调/补偿服务,支持最多50条履约节点与签署完成件一并提交。"
11
+ ],
12
+ "fixes": [
13
+ "Correction 的业务 resubmit handler 与普通 return_review 标准 Kernel 重提分离;普通退回任务不再错误要求起草 capability,已有固定定义和实例无需重建。"
14
+ ],
15
+ "affectedUsers": [
16
+ "使用 action-owned 资源、审批终态事件或真实机器回调的 OpenXiangda 2.0 应用。",
17
+ "需要权威查询补偿和多记录原子回写的 Scheduler/Worker 应用。"
18
+ ],
19
+ "upgradeSteps": [
20
+ "升级配套平台并核对 data.service-mutations 1.0.0 与完整配置 validatorDigest。",
21
+ "将工作区所有 OpenXiangda 包升级到同一胶囊版本2.62.0并安装锁文件依赖。",
22
+ "事件订阅和机器操作显式声明 dataMutations;后台动作按需显式加 allowRuntimeWorker:true,保持原业务幂等键和各行CAS。",
23
+ "机器请求调用 transactionFromServiceAction;Worker 用 withWorkerAction 包裹现有服务;真实测试环境分别验收事件、回调、补偿和50条整事务回滚。"
24
+ ],
25
+ "knownLimitations": [
26
+ "字段授权不替代外部供应商验签、业务状态守卫、底稿摘要或当前用户成员权限;role-member/actor-authority仍由用户动作拥有。",
27
+ "机器入口使用已有短期网关invocation的有效期;过期结果按原业务号核对,通过活动租约补偿,不延长或伪造证明。",
28
+ "Native事务自身总操作/字段/字节限额仍生效,本文档的maxOperations是单资源额外上限。",
29
+ "生产晋级仍须实际业务验收,不能将包测试或Pod Ready视作签署、通知或财务验收。"
30
+ ],
31
+ "compatibility": {
32
+ "generation": "v2",
33
+ "node": ">=24",
34
+ "platform": "data.service-mutations 1.0.0 and exact configuration validator",
35
+ "v1": "独立1.x维护包不变"
36
+ },
37
+ "issues": [],
38
+ "sha256": "c547759f4a202325b30134e2db40f2bc9bdd05b74fc4da393acd46c2802832a5",
39
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.62.0"
40
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "schemaVersion": "openxiangda.release-notes/v1",
3
+ "version": "2.62.1",
4
+ "status": "reviewed",
5
+ "title": "兼容非 HTTPS 私有入口的浏览器幂等操作",
6
+ "summary": "修复私有 HTTP 入口缺少 crypto.randomUUID 时工作流节点配置、路由和其他浏览器操作无法生成幂等标识的问题,统一使用 Web Crypto getRandomValues 回退生成 UUID。",
7
+ "newFeatures": [],
8
+ "fixes": [
9
+ "工作流节点配置保存不再依赖安全上下文专属的 crypto.randomUUID,HTTP 预发入口可以正常提交并保留原操作 ID 重试。",
10
+ "统一修复浏览器端管理、工作流、资源批量、文件和草稿操作的 UUID 生成,避免同类私有 HTTP 部署故障。"
11
+ ],
12
+ "affectedUsers": [
13
+ "通过 HTTP 私有地址访问 OpenXiangda 管理后台或应用内工作流管理页面的用户。",
14
+ "使用工作流节点配置、路由、委托、恢复、资源批量和文件草稿等浏览器幂等操作的应用。"
15
+ ],
16
+ "upgradeSteps": [
17
+ "平台管理后台和应用统一升级到 openxiangda 2.62.1 与配套 CLI 2.8.13,重新生成封存七包。",
18
+ "部署后用 HTTP 预发入口保存一个工作流节点描述,确认后台 configuration.revision/history 有一次写入。",
19
+ "继续保留原请求 ID 语义,若结果未知只重试相同请求,不新建幂等键。"
20
+ ],
21
+ "knownLimitations": [
22
+ "浏览器仍需要 Web Crypto getRandomValues;极旧浏览器完全没有 Web Crypto 时会明确报错,不回退到可预测的 Math.random。",
23
+ "包版本升级和平台部署不替代真实角色权限、CAS 冲突和业务配置验收。"
24
+ ],
25
+ "compatibility": {
26
+ "generation": "v2",
27
+ "node": ">=24",
28
+ "platform": "browser Web Crypto getRandomValues",
29
+ "v1": "独立1.x维护包不变"
30
+ },
31
+ "issues": [],
32
+ "sha256": "e818f70adf8c607af8a45465bfc67fee0fcb082102f4e973435b18b51525dd5b",
33
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.62.1"
34
+ }
@@ -4,7 +4,7 @@
4
4
  {
5
5
  "name": "openxiangda-v2",
6
6
  "description": "使用 OpenXiangda 2.0 从模糊业务想法、已有资料或具体变更出发,通过对话发现模块、完成详细产品设计,由当前 AI Agent 按需用 Image 2.5 等图片能力形成视觉参考,直接实现真实页面并在浏览器修正,再检查和交付应用;维护 1.x 应用时使用对应的 1.x 技能。",
7
- "sha256": "701a44dddf0d887278d114335ac085484f77a3e7f955237230e681b963b68395"
7
+ "sha256": "8f4e119b269e737dcae990bf348d0cbc7628323cf5c2dd35ec04a6e386fada69"
8
8
  }
9
9
  ]
10
10
  }
@@ -40,10 +40,10 @@ AI 接到新应用、页面或改版任务时,在同一个 OpenXiangda 工作
40
40
  未创建工作区时使用本 Skill 随根包发布的精确版本:
41
41
 
42
42
  ```bash
43
- pnpm dlx openxiangda@2.61.3 auth status --cwd <应用目录> --base-url <平台地址> --json
44
- pnpm dlx openxiangda@2.61.3 login --cwd <应用目录> --base-url <平台地址>
45
- pnpm dlx openxiangda@2.61.3 create <应用目录> --base-url <同一平台地址>
46
- pnpm dlx openxiangda@2.61.3 skill install --force
43
+ pnpm dlx openxiangda@2.62.1 auth status --cwd <应用目录> --base-url <平台地址> --json
44
+ pnpm dlx openxiangda@2.62.1 login --cwd <应用目录> --base-url <平台地址>
45
+ pnpm dlx openxiangda@2.62.1 create <应用目录> --base-url <同一平台地址>
46
+ pnpm dlx openxiangda@2.62.1 skill install --force
47
47
  ```
48
48
 
49
49
  创建前把产品要求的目标平台明确带入命令,不从旧登录态推断站点。已有工作区从原绑定恢复,平台不一致时先解决登录与目标,不改 link 文件跨站创建。
@@ -622,3 +622,23 @@ CAS与写后范围检查同事务执行。应用仍负责业务规则和字典gu
622
622
  没有新增独立的部门可见范围策略。任何部门不存在或已删除时,整组失败,不按姓名匹配,
623
623
  不接受客户端标签,也不回退到应用内复制的组织表。`snapshotRevision` 描述返回事实,
624
624
  `resolvedAt` 来自数据库时间;快照不能替代后续业务事务的权限检查。
625
+
626
+ ## action-owned 资源的受控事件与机器回调事务
627
+
628
+ 声明 `platformAccess.dataMutations`,把资源、操作、字段和单事务数量上限固定到事件订阅或机器操作:
629
+
630
+ ```ts
631
+ platformAccess: { dataMutations: [
632
+ { resourceCode: 'contracts', operations: ['update'], fieldCodes: ['status', 'signingStatus'], maxOperations: 1 },
633
+ { resourceCode: 'performance-plans', operations: ['update'], fieldCodes: ['planDate', 'status'], maxOperations: 50 },
634
+ ] }
635
+ ```
636
+
637
+ 该能力要求平台 `data.service-mutations` 1.0.0。受验证的 `@OpenXiangdaEventHandler` 内继续使用 `OpenXiangdaApplicationDataApiService.transaction`;SDK 自动携带事件来源,平台在同一事务锁定原投递与 processing receipt 的有效租约,并解析当前不可变订阅声明。
638
+
639
+ 机器回调在 `@OpenXiangdaOperation` 已验证请求内使用 `applicationData.transactionFromServiceAction(request, transaction)`。`request` 必须是平台已验证的 service 具名操作上下文;平台独立验证原始短期网关 invocation、机器的操作 capability 和当前部署,同时仍验证运行凭据。用户/developer、裸 OAuth data:write 和调用方填写的 operation/source 对象不能替代此证明。
640
+
641
+ 字段、资源、操作或数量超出声明时整事务拒绝;CAS、原幂等键、额度终态与文件绑定校验继续生效。不分批提交 50 个节点,不绕过 Native owner 门禁,不把 JWT/租约 nonce 保存到业务表。role-member/actor-authority 仍需要真实用户动作,服务源不冒充用户成员。声明相同原事件在新的有效投递租约下可按原键重试;证明不能离开处理器执行使用。
642
+
643
+ 可信 Scheduler/补偿 Worker:给可供后台执行的同一具名操作 `dataMutations` 条目加 `allowRuntimeWorker: true`,并使用
644
+ `await applicationData.withWorkerAction('callback-operation-code', () => callbackService.handle(originalInput))`。此作用域中的 `.transaction()` 自动携带当前 RuntimeLeaseService 的持有者与租约证明;平台在原事务锁定当前运行凭据、部署/Head 和该后台租约,并逐资源拒绝没有该 opt-in 的条目。无需 HTTP 请求或用户身份;没有活动租约、普通 OAuth 或已过期/被替代的实例仍被拒绝。该作用域可调用现有 CallbackService、DueSweep 等服务,整批操作同事务,保持原业务幂等键。
@@ -68,10 +68,10 @@ MCP 服务随项目根包一起安装,AI 客户端的 stdio 连接仍需配置
68
68
  以下命令的版本占位符由随包资料替换为该根包的精确版本。网站源码阅读者应先确认要使用的发行版本。
69
69
 
70
70
  ```bash
71
- pnpm dlx openxiangda@2.61.3 skill install --force
72
- pnpm dlx openxiangda@2.61.3 auth status --base-url <平台地址> --json
73
- pnpm dlx openxiangda@2.61.3 login --cwd my-app --base-url https://platform.example.com
74
- pnpm dlx openxiangda@2.61.3 create my-app --base-url https://platform.example.com
71
+ pnpm dlx openxiangda@2.62.1 skill install --force
72
+ pnpm dlx openxiangda@2.62.1 auth status --base-url <平台地址> --json
73
+ pnpm dlx openxiangda@2.62.1 login --cwd my-app --base-url https://platform.example.com
74
+ pnpm dlx openxiangda@2.62.1 create my-app --base-url https://platform.example.com
75
75
  cd my-app
76
76
  pnpm openxiangda context --json
77
77
  pnpm openxiangda dev
@@ -203,9 +203,9 @@ MCP 的 `docs_read` 可以读取本说明,当前没有独立的源码操作 MC
203
203
  无需本地工作区,使用本 Skill 随包精确版本或已安装的对应 CLI:
204
204
 
205
205
  ```bash
206
- pnpm dlx openxiangda@2.61.3 auth status --base-url <平台> --json
207
- pnpm dlx openxiangda@2.61.3 source resolve <仓库URL> --base-url <平台> --json
208
- pnpm dlx openxiangda@2.61.3 source clone <仓库URL> <新目录> --base-url <平台> --json
206
+ pnpm dlx openxiangda@2.62.1 auth status --base-url <平台> --json
207
+ pnpm dlx openxiangda@2.62.1 source resolve <仓库URL> --base-url <平台> --json
208
+ pnpm dlx openxiangda@2.62.1 source clone <仓库URL> <新目录> --base-url <平台> --json
209
209
  ```
210
210
 
211
211
  登录缺失或站点不匹配时,先按该平台执行 login。resolve 根据平台已经登记的绑定返回
@@ -1210,3 +1210,5 @@ subject update和来源guards提交实际改变的派生字段;普通补填仍
1210
1210
  缺少规则、返回 `undefined` 或回调失败均保持原显示。PC/手机共用这一规则,
1211
1211
  最后一个字段被省略后对应空分组也消失。这是同步展示扩展,不发请求、不写数据,
1212
1212
  不改变字段授权、审批参数或流程版本;不提供该选项的应用保持既有行为。
1213
+
1214
+ `commandHandlers.resubmit` 仅绑定固定 correction 节点的业务重校验。普通 `return_review` 任务继续由 Kernel 标准 `resubmit` 办理:Surface 不返回 correction operationCode,审批人不需要起草提交 capability。无需增加 `taskKinds` 字段、改动已有定义版本或重建在途实例;直接对普通退回任务调用 correction 业务动作仍被拒绝。