openxiangda 2.48.2 → 2.55.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 (178) hide show
  1. package/dist/browser/AuthoritativeSelector.d.ts +3 -2
  2. package/dist/browser/AuthoritativeSelector.d.ts.map +1 -1
  3. package/dist/browser/AuthoritativeSelector.js +32 -11
  4. package/dist/browser/AuthoritativeSelector.js.map +1 -1
  5. package/dist/browser/FilePreviewPage.d.ts.map +1 -1
  6. package/dist/browser/FilePreviewPage.js +4 -0
  7. package/dist/browser/FilePreviewPage.js.map +1 -1
  8. package/dist/browser/components/administration/RoleMembershipManager.d.ts.map +1 -1
  9. package/dist/browser/components/administration/RoleMembershipManager.js +5 -5
  10. package/dist/browser/components/administration/RoleMembershipManager.js.map +1 -1
  11. package/dist/browser/components/administration/scope-applicability.d.ts +3 -0
  12. package/dist/browser/components/administration/scope-applicability.d.ts.map +1 -0
  13. package/dist/browser/components/administration/scope-applicability.js +7 -0
  14. package/dist/browser/components/administration/scope-applicability.js.map +1 -0
  15. package/dist/browser/components/platform-fields/ConstrainedUserField.d.ts +16 -0
  16. package/dist/browser/components/platform-fields/ConstrainedUserField.d.ts.map +1 -0
  17. package/dist/browser/components/platform-fields/ConstrainedUserField.js +140 -0
  18. package/dist/browser/components/platform-fields/ConstrainedUserField.js.map +1 -0
  19. package/dist/browser/components/platform-fields/ManagedMediaPlayer.d.ts +19 -0
  20. package/dist/browser/components/platform-fields/ManagedMediaPlayer.d.ts.map +1 -0
  21. package/dist/browser/components/platform-fields/ManagedMediaPlayer.js +42 -0
  22. package/dist/browser/components/platform-fields/ManagedMediaPlayer.js.map +1 -0
  23. package/dist/browser/components/platform-fields/MobileSelection.d.ts +3 -1
  24. package/dist/browser/components/platform-fields/MobileSelection.d.ts.map +1 -1
  25. package/dist/browser/components/platform-fields/MobileSelection.js +2 -2
  26. package/dist/browser/components/platform-fields/MobileSelection.js.map +1 -1
  27. package/dist/browser/components/platform-fields/ResourceReferenceField.d.ts +3 -2
  28. package/dist/browser/components/platform-fields/ResourceReferenceField.d.ts.map +1 -1
  29. package/dist/browser/components/platform-fields/ResourceReferenceField.js +2 -2
  30. package/dist/browser/components/platform-fields/ResourceReferenceField.js.map +1 -1
  31. package/dist/browser/components/platform-fields/SubtableField.js +2 -2
  32. package/dist/browser/components/platform-fields/SubtableField.js.map +1 -1
  33. package/dist/browser/components/platform-fields/managed-media-read.d.ts +19 -0
  34. package/dist/browser/components/platform-fields/managed-media-read.d.ts.map +1 -0
  35. package/dist/browser/components/platform-fields/managed-media-read.js +32 -0
  36. package/dist/browser/components/platform-fields/managed-media-read.js.map +1 -0
  37. package/dist/browser/components/platform-fields/user-candidate-context.d.ts +51 -0
  38. package/dist/browser/components/platform-fields/user-candidate-context.d.ts.map +1 -0
  39. package/dist/browser/components/platform-fields/user-candidate-context.js +62 -0
  40. package/dist/browser/components/platform-fields/user-candidate-context.js.map +1 -0
  41. package/dist/browser/components/resource/GeneratedResourceCrud.d.ts.map +1 -1
  42. package/dist/browser/components/resource/GeneratedResourceCrud.js +26 -2
  43. package/dist/browser/components/resource/GeneratedResourceCrud.js.map +1 -1
  44. package/dist/browser/components/resource/GeneratedResourceForm.js +1 -1
  45. package/dist/browser/components/resource/GeneratedResourceForm.js.map +1 -1
  46. package/dist/browser/components/resource/RecordDetailFrame.d.ts +3 -1
  47. package/dist/browser/components/resource/RecordDetailFrame.d.ts.map +1 -1
  48. package/dist/browser/components/resource/RecordDetailFrame.js +2 -2
  49. package/dist/browser/components/resource/RecordDetailFrame.js.map +1 -1
  50. package/dist/browser/components/resource/ResourceFormFrame.d.ts +2 -1
  51. package/dist/browser/components/resource/ResourceFormFrame.d.ts.map +1 -1
  52. package/dist/browser/components/resource/ResourceFormFrame.js +2 -2
  53. package/dist/browser/components/resource/ResourceFormFrame.js.map +1 -1
  54. package/dist/browser/components/resource/ResourceRecordComments.d.ts +13 -0
  55. package/dist/browser/components/resource/ResourceRecordComments.d.ts.map +1 -0
  56. package/dist/browser/components/resource/ResourceRecordComments.js +75 -0
  57. package/dist/browser/components/resource/ResourceRecordComments.js.map +1 -0
  58. package/dist/browser/components/resource/ResourceRecordDeletion.d.ts +7 -0
  59. package/dist/browser/components/resource/ResourceRecordDeletion.d.ts.map +1 -0
  60. package/dist/browser/components/resource/ResourceRecordDeletion.js +53 -0
  61. package/dist/browser/components/resource/ResourceRecordDeletion.js.map +1 -0
  62. package/dist/browser/components/resource/ResourceRecordPrintPreview.d.ts +16 -0
  63. package/dist/browser/components/resource/ResourceRecordPrintPreview.d.ts.map +1 -0
  64. package/dist/browser/components/resource/ResourceRecordPrintPreview.js +92 -0
  65. package/dist/browser/components/resource/ResourceRecordPrintPreview.js.map +1 -0
  66. package/dist/browser/components/resource/SurfaceFields.d.ts +8 -3
  67. package/dist/browser/components/resource/SurfaceFields.d.ts.map +1 -1
  68. package/dist/browser/components/resource/SurfaceFields.js +16 -8
  69. package/dist/browser/components/resource/SurfaceFields.js.map +1 -1
  70. package/dist/browser/components/resource/generated-resource-definition.d.ts +13 -0
  71. package/dist/browser/components/resource/generated-resource-definition.d.ts.map +1 -1
  72. package/dist/browser/components/resource/record-comment-session.d.ts +17 -0
  73. package/dist/browser/components/resource/record-comment-session.d.ts.map +1 -0
  74. package/dist/browser/components/resource/record-comment-session.js +64 -0
  75. package/dist/browser/components/resource/record-comment-session.js.map +1 -0
  76. package/dist/browser/components/resource/record-deletion-session.d.ts +19 -0
  77. package/dist/browser/components/resource/record-deletion-session.d.ts.map +1 -0
  78. package/dist/browser/components/resource/record-deletion-session.js +64 -0
  79. package/dist/browser/components/resource/record-deletion-session.js.map +1 -0
  80. package/dist/browser/components/resource/record-print-session.d.ts +12 -0
  81. package/dist/browser/components/resource/record-print-session.d.ts.map +1 -0
  82. package/dist/browser/components/resource/record-print-session.js +32 -0
  83. package/dist/browser/components/resource/record-print-session.js.map +1 -0
  84. package/dist/browser/components/resource/resource-field-selection.d.ts +1 -0
  85. package/dist/browser/components/resource/resource-field-selection.d.ts.map +1 -1
  86. package/dist/browser/components/resource/useResourceFormDrafts.d.ts.map +1 -1
  87. package/dist/browser/components/workflow/StandardWorkflowPages.d.ts +13 -2
  88. package/dist/browser/components/workflow/StandardWorkflowPages.d.ts.map +1 -1
  89. package/dist/browser/components/workflow/StandardWorkflowPages.js +68 -36
  90. package/dist/browser/components/workflow/StandardWorkflowPages.js.map +1 -1
  91. package/dist/browser/components/workflow/WorkflowNodeCard.js +2 -2
  92. package/dist/browser/components/workflow/WorkflowNodeCard.js.map +1 -1
  93. package/dist/browser/components/workflow/WorkflowNodeConfigurationEditor.d.ts.map +1 -1
  94. package/dist/browser/components/workflow/WorkflowNodeConfigurationEditor.js +4 -4
  95. package/dist/browser/components/workflow/WorkflowNodeConfigurationEditor.js.map +1 -1
  96. package/dist/browser/components/workflow/WorkflowRecordEditor.js +1 -1
  97. package/dist/browser/components/workflow/WorkflowRecordEditor.js.map +1 -1
  98. package/dist/browser/components/workflow/WorkflowRecordHistoryPanel.d.ts +9 -0
  99. package/dist/browser/components/workflow/WorkflowRecordHistoryPanel.d.ts.map +1 -0
  100. package/dist/browser/components/workflow/WorkflowRecordHistoryPanel.js +50 -0
  101. package/dist/browser/components/workflow/WorkflowRecordHistoryPanel.js.map +1 -0
  102. package/dist/browser/components/workflow/WorkflowTaskForm.d.ts +2 -1
  103. package/dist/browser/components/workflow/WorkflowTaskForm.d.ts.map +1 -1
  104. package/dist/browser/components/workflow/WorkflowTaskForm.js +18 -3
  105. package/dist/browser/components/workflow/WorkflowTaskForm.js.map +1 -1
  106. package/dist/browser/components/workflow/workflow-submission-form.d.ts +18 -0
  107. package/dist/browser/components/workflow/workflow-submission-form.d.ts.map +1 -0
  108. package/dist/browser/components/workflow/workflow-submission-form.js +44 -0
  109. package/dist/browser/components/workflow/workflow-submission-form.js.map +1 -0
  110. package/dist/browser/components/workflow/workflow-task-required-errors.d.ts +10 -0
  111. package/dist/browser/components/workflow/workflow-task-required-errors.d.ts.map +1 -0
  112. package/dist/browser/components/workflow/workflow-task-required-errors.js +28 -0
  113. package/dist/browser/components/workflow/workflow-task-required-errors.js.map +1 -0
  114. package/dist/browser/durable-command.d.ts.map +1 -1
  115. package/dist/browser/durable-command.js +6 -1
  116. package/dist/browser/durable-command.js.map +1 -1
  117. package/dist/browser/platform-client.d.ts +30 -1
  118. package/dist/browser/platform-client.d.ts.map +1 -1
  119. package/dist/browser/platform-client.js +161 -5
  120. package/dist/browser/platform-client.js.map +1 -1
  121. package/dist/browser/record-comments.css +14 -0
  122. package/dist/browser/record-deletion.css +11 -0
  123. package/dist/browser/record-print.css +31 -0
  124. package/dist/browser/styles.css +30 -0
  125. package/dist/browser/workflow-operation-input.d.ts +15 -0
  126. package/dist/browser/workflow-operation-input.d.ts.map +1 -0
  127. package/dist/browser/workflow-operation-input.js +64 -0
  128. package/dist/browser/workflow-operation-input.js.map +1 -0
  129. package/dist/core.d.ts +2 -2
  130. package/dist/core.d.ts.map +1 -1
  131. package/dist/core.js +1 -1
  132. package/dist/core.js.map +1 -1
  133. package/dist/field-kit.d.ts +3 -0
  134. package/dist/field-kit.d.ts.map +1 -1
  135. package/dist/field-kit.js +3 -0
  136. package/dist/field-kit.js.map +1 -1
  137. package/dist/nest.d.ts +1 -1
  138. package/dist/nest.d.ts.map +1 -1
  139. package/dist/nest.js.map +1 -1
  140. package/dist/react.d.ts +6 -2
  141. package/dist/react.d.ts.map +1 -1
  142. package/dist/react.js +5 -1
  143. package/dist/react.js.map +1 -1
  144. package/dist/testing.d.ts +1 -1
  145. package/dist/testing.d.ts.map +1 -1
  146. package/dist/testing.js +1 -1
  147. package/dist/testing.js.map +1 -1
  148. package/documentation/administration.md +7 -1
  149. package/documentation/backend.md +72 -1
  150. package/documentation/data-authz.md +42 -2
  151. package/documentation/declarations-cheatsheet.md +9 -0
  152. package/documentation/field-components.md +44 -0
  153. package/documentation/frontend.md +8 -0
  154. package/documentation/getting-started.md +7 -7
  155. package/documentation/managed-concurrency-frontend.md +1 -1
  156. package/documentation/manifest.json +11 -11
  157. package/documentation/testing.md +17 -0
  158. package/documentation/workflow-events.md +127 -2
  159. package/package.json +23 -20
  160. package/releases/2.51.0.json +32 -0
  161. package/releases/2.54.4.json +30 -0
  162. package/releases/2.54.6.json +30 -0
  163. package/releases/2.55.0.json +34 -0
  164. package/releases/2.55.1.json +32 -0
  165. package/skills/manifest.json +1 -1
  166. package/skills/openxiangda-v2/SKILL.md +4 -4
  167. package/skills/openxiangda-v2/references/administration.md +7 -1
  168. package/skills/openxiangda-v2/references/backend.md +72 -1
  169. package/skills/openxiangda-v2/references/data-authz.md +42 -2
  170. package/skills/openxiangda-v2/references/declarations-cheatsheet.md +9 -0
  171. package/skills/openxiangda-v2/references/field-components.md +44 -0
  172. package/skills/openxiangda-v2/references/frontend.md +8 -0
  173. package/skills/openxiangda-v2/references/getting-started.md +7 -7
  174. package/skills/openxiangda-v2/references/managed-concurrency-frontend.md +1 -1
  175. package/skills/openxiangda-v2/references/testing.md +17 -0
  176. package/skills/openxiangda-v2/references/workflow-events.md +127 -2
  177. package/releases/2.48.1.json +0 -30
  178. package/releases/2.48.2.json +0 -29
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "schemaVersion": "openxiangda.documentation/v1",
3
- "version": "2.48.2",
3
+ "version": "2.55.1",
4
4
  "topics": [
5
5
  {
6
6
  "id": "getting-started",
7
7
  "title": "安装与开始开发",
8
8
  "file": "getting-started.md",
9
- "sha256": "6e3655a4d0427889199c85ec85034aa2bdce23d54fbbd83a9330ba8d9dd857a5"
9
+ "sha256": "592aa59bab9fcb430ee5caf042c872bf902a8ae5ac8e666b643ebf2e0c103b4a"
10
10
  },
11
11
  {
12
12
  "id": "product-design",
@@ -36,7 +36,7 @@
36
36
  "id": "declarations-cheatsheet",
37
37
  "title": "声明速查:一次写对 config",
38
38
  "file": "declarations-cheatsheet.md",
39
- "sha256": "726d9e992c16531aef0ee2e8510729d3dd4f2b1320104e39bba9744181946330"
39
+ "sha256": "4fa1bc8920af2157bc67ba5819e85fbc271da93155be18650bfbe51c02eac782"
40
40
  },
41
41
  {
42
42
  "id": "application-foundation",
@@ -60,19 +60,19 @@
60
60
  "id": "frontend",
61
61
  "title": "页面与标准组件扩展",
62
62
  "file": "frontend.md",
63
- "sha256": "9fdc5f950356843dca2dcfad3c0f5ff0d44b5158bd79cbd0f14ae99a48a543cf"
63
+ "sha256": "0d122e3f9096a549f355ba88a4800b6473180a19b926e3748c84d51bb44f02b6"
64
64
  },
65
65
  {
66
66
  "id": "field-components",
67
67
  "title": "字段、表单与移动控件",
68
68
  "file": "field-components.md",
69
- "sha256": "6eb794dd3fa05f368da653a2a8899a34d07cd4ea7b8ed3706b9f1d78a85f107b"
69
+ "sha256": "e621fef870bdafa01bd41a294be6169094f1c8b5d6d31c89fa64df105d86a3d5"
70
70
  },
71
71
  {
72
72
  "id": "data-authz",
73
73
  "title": "数据查询与权限",
74
74
  "file": "data-authz.md",
75
- "sha256": "5c8592f0b45e14c619b6146c6570c65161f0e0cb8ee86724050b3417f9e90e50"
75
+ "sha256": "1f77cbaf778a0a01dfa877610e7d87451716fd60d4364fda43adb4f92c5010f1"
76
76
  },
77
77
  {
78
78
  "id": "public-access",
@@ -84,13 +84,13 @@
84
84
  "id": "workflow-events",
85
85
  "title": "审批、事件与通知",
86
86
  "file": "workflow-events.md",
87
- "sha256": "1bb4bec3df75433f63f6584e70991b75bb76f8d0872ba9a7b8a4bc03be36cecd"
87
+ "sha256": "0c02e0253ee52804d22801bab215933c5240974c72e4951bafb0a27e35d0cbd4"
88
88
  },
89
89
  {
90
90
  "id": "backend",
91
91
  "title": "按需后端与业务动作",
92
92
  "file": "backend.md",
93
- "sha256": "a8dc288d6c220f10638eddaf49edd7c55baa29f8e70880dd29ba1354efc4577d"
93
+ "sha256": "5fcea9d1f9197d7f9ed1d65d0e181465092f34feeb0eec46552f20264bf02f85"
94
94
  },
95
95
  {
96
96
  "id": "agent-cards",
@@ -114,19 +114,19 @@
114
114
  "id": "managed-concurrency-frontend",
115
115
  "title": "并发能力的前端接入",
116
116
  "file": "managed-concurrency-frontend.md",
117
- "sha256": "0e6c4aa63ae82f7ce8c19c1dea061688c6507cebe93733be715b27fab71afa2e"
117
+ "sha256": "c4b18991058fec5878f73355e63da063a677ced8413e7fc2b4f03edfb0c2341a"
118
118
  },
119
119
  {
120
120
  "id": "administration",
121
121
  "title": "应用管理与有效配置",
122
122
  "file": "administration.md",
123
- "sha256": "a5e17ced019746f314bf9a2005b023786308204233565b96ddf3db2150de2216"
123
+ "sha256": "084b3bcb6ff371701045ec900149d90f8294323259ddd260f7e2c8bfedda2378"
124
124
  },
125
125
  {
126
126
  "id": "testing",
127
127
  "title": "检查与真实业务验收",
128
128
  "file": "testing.md",
129
- "sha256": "bc16ffa07fae9ddf17baf3ca99f7076aeee5976244864e46c701816c77ee9abd"
129
+ "sha256": "d70da0c44c8c949e916b62dbd05eb527a00b5b26c0c152de35ea84f5450958f2"
130
130
  },
131
131
  {
132
132
  "id": "delivery",
@@ -36,6 +36,23 @@ Web 默认保留开发服务回环访问检查。按需 Nest 使用 `tsx --test`
36
36
 
37
37
  只改文案时验证受影响页面。复杂事务、并发和值转换使用聚焦测试。浏览器验收实际操作并检查错误,不能用模拟响应或空页面加载代替真实角色验收。
38
38
 
39
+ 应用后端生成 Native 事务或 BusinessProcess 数据守卫时,业务测试通过统一根包的公开测试入口校验真实生成的请求,不复制验证规则或额外依赖底层包:
40
+
41
+ ```ts
42
+ import { SCHEMA_VERSIONS, validateDataTransactionRequest } from 'openxiangda/testing';
43
+
44
+ const diagnostics = validateDataTransactionRequest({
45
+ schemaVersion: SCHEMA_VERSIONS.dataTransactionRequest,
46
+ idempotencyKey: submission.idempotencyKey,
47
+ guards: submission.data.guards,
48
+ operations: submission.data.operations.map(item => ({
49
+ operation: item.kind, resourceCode: item.resourceCode, data: item.data,
50
+ })),
51
+ });
52
+ ```
53
+
54
+ 合法请求返回空诊断数组;守卫失败码必须使用 `OPENXIANGDA_*`。纯合同校验不证明数据库锁、权限、实际执行或失败恢复通过,这些仍需要对应角色和原操作的运行验收。
55
+
39
56
  匿名访问另验证续填、上传、校验、幂等提交、own.list/own.read;另一浏览器应无法获取前一浏览器的记录。工作流按已启用功能检查发起、处理、历史详情和消息跳转,不为未启用通道增加测试负担。
40
57
 
41
58
  ## 可选临时身份 {#temporary-identities}
@@ -254,14 +254,18 @@ fields: [{ code: 'startsAt', label: '开始时间', type: 'datetime', required:
254
254
  所声明精确 capability 的用户;capability 必须在同一应用显式声明,不支持
255
255
  通配符。该授权同时允许读取对应流程实例的详情及时间线,包括完成后查阅;
256
256
  不授予审批、抄送、改派、删除、普通数据读取或管理后台权限。撤销 capability
257
- 后读取和终止权限都失效。撤回、终止均要求填写原因;超级管理员也遵守已声明时限。
257
+ 后读取和终止权限都失效。撤回默认要求填写原因;固定定义显式声明
258
+ `instanceCommands: { withdraw: { reasonRequired: false } }` 时允许省略、空串或空白,
259
+ 仍拒绝已提供的非字符串及超过4000字符。该选项自动要求
260
+ `workflow.optional-withdrawal-reason@1.0.0`,旧平台不能激活。`beforeFact` 可独立
261
+ 声明或与选填组合,空策略无效。终止仍必填原因;超级管理员也遵守已声明时限。
258
262
 
259
263
  不声明 `instanceCommands` 时沿用既有行为;只为终止授权时可以省略其
260
264
  `beforeFact`。声明策略的交付包自动要求平台能力
261
265
  `workflow.instance-cancellation-policy`,旧平台无法激活该应用版本。
262
266
  已经固定该策略的实例存在期间,平台回滚也必须保留策略执行能力。
263
267
  发布新 definition 不会改写旧实例固定的 definition 版本,因此不会给旧实例
264
- 补上截止时间或业务管理员终止授权。升级前应盘点存量实例,按各自原定义完成
268
+ 补上截止时间、选填原因或业务管理员终止授权。升级前应盘点存量实例,按各自原定义完成
265
269
  或由原有授权主体处置;不要通过重发事件或改写事实迁移策略。已使用新策略的
266
270
  实例在截止后及终态仍允许当前被授权的业务管理员查阅,撤销其 capability
267
271
  也会撤销这些存量实例的详情读取权限。
@@ -404,6 +408,38 @@ processCommand 路径和 allowlisted context 预填。标准页调用原 Named A
404
408
  `ProcessCommandSurface`;`awaiting_input` 只回答已生成 requirement,`started` 再进入 pinned
405
409
  instance entry。浏览器不再导出 prepare/start 发起协议。
406
410
 
411
+ ### 标准提交页的业务表单扩展
412
+
413
+ 应用读取获授权的业务资料后,可将 canonical 预填值和同步字段规则传给公开
414
+ `WorkflowSubmissionPage` 的 `formOptions`。PC和手机复用同一个组件及Field Kit;
415
+ 上传、具名动作、幂等操作和未知结果恢复继续由标准页处理,应用不要复制提交生命周期。
416
+
417
+ ```tsx
418
+ import { WorkflowSubmissionPage, type WorkflowSubmissionFormOptions } from 'openxiangda/react';
419
+
420
+ const formOptions: WorkflowSubmissionFormOptions = {
421
+ initialValues: { phone: profile.phone, className: profile.className },
422
+ fieldState: values => {
423
+ const medical = (values.reason as { value?: string } | undefined)?.value === 'illness';
424
+ return {
425
+ recoveryEvidence: { visible: medical, required: medical, hiddenValue: [] },
426
+ medicalReviewer: { visible: medical, required: medical, hiddenValue: null },
427
+ };
428
+ },
429
+ intro: <p>请核对预填资料;因病申请需要康复证明。</p>,
430
+ };
431
+ return <WorkflowSubmissionPage workflowCode="reinstatement" variant="mobile" formOptions={formOptions} />;
432
+ ```
433
+
434
+ 初值仅在当前匹配的发起合同内应用到未触碰字段,每字段一次;后到资料和父组件重新渲染
435
+ 不会覆盖已填写或手动清空的内容。日期和范围使用canonical值,标准页通过原codec转换。
436
+ `fieldState`读取canonical值,`required`只能增加校验,不能撤销原必填或隐藏原必填字段;
437
+ 可选字段隐藏时清为`hiddenValue`或undefined,提交也使用同一投影,不发送旧材料/人员。
438
+ 初值或规则引用范围外字段会阻断表单。`intro`只提供页面说明,不拥有身份、授权或提交。
439
+ 资料加载/失败或业务资格提示可传`preparation`内容,它仅阻断尚未提交的表单;原请求查询
440
+ 及已接受命令的展示优先于该提示。应用应始终挂载标准页,避免当前资格变化遮蔽原结果恢复。
441
+ 这些规则属于应用代码,不能通过管理员节点配置修改;服务器仍独立校验实际业务资格与字段。
442
+
407
443
  通用应用待办页通过 `frontend.user.applicationTodoCenter: true` 启用,平台同时提供
408
444
  `/todos` 和 `/m/todos`。它只投影当前登录用户的 Notification Hub 收件人数据,
409
445
  `查看详情` 使用上述统一导航解析;待办页不常驻业务详情,审批命令仍在目标 Workflow
@@ -607,6 +643,12 @@ approve/resubmit 携带 `form: { expectedRevision, values }` 时,Native 业务
607
643
  多人补填与管理纠错使用 Native 记录 CAS,冲突保留输入。首次请求的明确拒绝会只读刷新,
608
644
  修订变化时对照最新已保存值和本人输入,核对前锁住字段与操作;可选择保留输入或采用最新值。
609
645
  拒绝后的读取失败明确提示本次未提交,锁住旧操作,恢复读取后再核对;未知结果仍只能恢复原请求。
646
+ 操作确认表单使用同一 Surface 的必填、字符数与非空白规则校验意见和原因。
647
+ 拒绝意见默认必填。固定节点显式设置 `operationPolicy.reject.commentRequired: false` 时允许省略或空意见,目标须具备 `workflow.optional-rejection-comment@1.0.0`;已进入任务使用冻结规则,后续配置不追溯。选填仍限制为最多4000字符的字符串,不写入假意见。
648
+ `commentRequired` 只配置同意/拒绝的 `comment`;转交、委托、加签、退回与管理员改派
649
+ 继续使用原合同的必填 `reason`,不用再填写第二份意见。
650
+ 明确拒绝后,实例、任务版本及操作签名仍一致且操作仍可用时,对话框保留输入供人工核对;
651
+ 任务、权限、字段规则或版本变化时不能沿用旧操作。刷新和保留输入都不会自动重发请求。
610
652
  补填刷新固定事实投影;
611
653
  修改已计算步骤的输入时清除当前失效输出及依赖输出。仅退回 replay 且所有前向
612
654
  审批路径确定重经生产者时允许;resume_current 或后置补填跳过重算会返回
@@ -702,3 +744,86 @@ PC/手机保留格式、图片和前后文字;插图未知时锁住编辑,
702
744
  自定义 Field Kit 上传 renderer 的第四参数为可选 `onRecovered(file)`,仅在恢复原任务上传
703
745
  时采用完整字段值;正常上传仍返回 `DataFileRef`。非数组字段必须提供该回调;不能用文件数组
704
746
  append 处理签名或 HTML。当前任务、实例、记录或字段改变时清理旧图片预览,重新按范围读取。
747
+
748
+ ### 发起人同时参与审批
749
+
750
+ 审批节点可声明 `initiatorApprovalPolicy: 'auto_approve'`;省略或声明 `manual` 时由本人办理。
751
+ 该策略由流程代码固定,管理员可以调整已开放的审批方式与人员,不能修改此策略。
752
+ 仅当前已激活、由原人员解析或授权解析重试产生的发起人直接席位自动同意。
753
+ 单人/或签按正常同意规则完成;会签仍等待其他席位;依次审批只有轮到本人时才自动处理。
754
+ 发起人代理给他人、他人代理给发起人、转交、加签、管理员重分配及退回补正均需人工。
755
+
756
+ 带 `taskPageCode`、可写字段或强制同意意见的节点不能使用自动同意。需要补选负责人等
757
+ 业务输入的节点继续采用人工办理;配置也不能给自动节点增加强制同意意见。
758
+ 实际自动票使用原审批依赖与事务,历史显示“发起人自动同意”,事件包含 `automatic: true`
759
+ 及流程内核主体;没有伪造人工意见。后续解析失败会回滚本次自动票、任务与事件。
760
+ 每个事务最多进入 200 个节点、处理 200 个自动席位,业务步骤仍等待原业务结果。
761
+ 前一办理人来源保留原发起人;重启或原命令重放不重复自动票。
762
+
763
+ 此声明要求 `workflow.initiator-approval-policy@1.0.0`,缺少实现的目标平台会拒绝应用。
764
+
765
+ ### 审批人为空时的节点策略
766
+
767
+ 审批节点可声明 `emptyPolicy: 'skip'`,省略或声明 `block` 时保持阻塞。第一版 skip 支持 fixed_users、input_users、form_field_users、app_role、app_role_in_scope;编译器拒绝其他来源与 skip 组合。表单人员明确为 `[]`,或存在的角色在有效范围内没有成员,且解析成功、没有警告,才允许自动继续到 `onApprove`。缺失/null 字段、不存在的角色、无效账号、缺少范围、解析失败和非零人数不满足 min/max 都不能跳过。
768
+
769
+ 该策略由代码固定。每次实际跳过记录节点访问、当时配置、解析依据和 `openxiangda.workflow.node.skipped.v2` 事件;图和 PC/手机历史显示“已跳过”。连续节点推进受 200 节点上限约束,业务步骤仍等待其正式结果。后续失败与业务变更在原事务一起回滚,重试沿用原命令。
770
+
771
+ 退回补正(return_review)必须有人实际处理,不能靠空人跳过;重提后的正常 replay/resume 流转继续采用原节点策略。使用此声明时,生成契约要求目标平台支持 `workflow.approval-empty-policy@1.0.0`,缺少该能力的旧服务端不能接收。
772
+
773
+ ## 按业务资料权限查看办理历史 {#record-history-read}
774
+
775
+ 发起人、审批人、抄送人使用既有 Workflow 详情。业务查看人员需要根据当前资料范围读取办理记录时,模型可显式声明:
776
+
777
+ ```ts
778
+ workflowHistory: { read: ['app:my-app:history:read'] },
779
+ ```
780
+
781
+ `read: true` 绑定本资源的 read 能力,`false` 关闭入口;省略也关闭。能力数组引用已声明能力,最多20项,必须由同一角色成员全部持有,同时具备资源read。ALL资料读取角色与本人历史角色组合时,历史仍限本人行;Perspective和Native RLS继续收窄范围。此声明不授予审批、转交、后台或流程图管理能力,且独立于 `audit.read` 的资料变更记录。
782
+
783
+ 标准Native详情按声明提供折叠的“流程办理记录”。自定义用户端PC/手机页面可复用 `WorkflowRecordHistoryPanel`(`openxiangda/react`),传入 `resourceCode`、`recordId` 和 `variant`。通过 `loadWorkflowRecordHistory`(`openxiangda/core` 或 `openxiangda/react`)直接读取时,可传 `instanceId` 查看该记录的原固定实例,以及 `limit`(默认20、最多100)、`offset`(最多500)。环境来自当前平台runtime;接口不提供办理Surface或操作令牌。
784
+
785
+ 结果仅包含原流程版本、实际节点访问、人员、操作时间和意见,不返回条件事实、业务字段、代码、角色席位、原始log detail或授权摘要。每次请求重新授权;无权、没有可读实例、容量超限及读取中资料/实例变化分别保留明确失败。组件清除失败后的旧数据并提供手动重试,不自动重放写入。单实例最多500操作、200访问、1000审批/自动抄送席位,响应最多2MiB;历史较大时返回413,不静默截断。
786
+
787
+ 本能力要求平台 `workflow.record-history-read@1.0.0`。只读历史不提供评论发布、源系统打印或删除;这些行为需分别声明、授权和验收。
788
+
789
+ ## 拒绝通知的修改人 {#workflow-rejection-notification}
790
+
791
+ 当业务要求“申请被拒绝时通知最后修改人”,在固定流程定义中声明:
792
+
793
+ ```ts
794
+ rejectionNotification: {
795
+ recipient: 'record_last_modifier',
796
+ title: '审批拒绝',
797
+ summary: '您有一个审批被拒绝,请查看',
798
+ },
799
+ ```
800
+
801
+ 最后修改人是拒绝事务读取的 Native 主记录 `updated_by`,即最后一次成功业务写入所归属的用户。
802
+ 例如 A 发起、B 成功补填、C 拒绝时,专用拒绝通知发给 B。审批意见、拒绝操作和未成功的
803
+ 业务写入不会替换修改人。平台在原事务锁定主记录、冻结当前资料 revision 和收件人,
804
+ 通知队列恢复时使用原事实;之后的编辑不会改变这次通知的对象。
805
+
806
+ 标题最多160、摘要最多500字符,都是固定文本;不支持客户端收件人、任意字段路径、
807
+ 默认兜底人或节点管理员修改。缺失记录、空修改人或当前租户内无有效普通用户时,
808
+ 事实明确记录跳过原因;数据库或资源绑定失败沿原命令回滚,不产生部分拒绝事实。
809
+
810
+ 能力 `workflow.rejection-notification@1.0.0` 和 Notification Hub 由声明自动推导,平台
811
+ 初始化无需增加开关。省略声明或旧固定实例继续原行为。消息只读且没有审批按钮;
812
+ 点击仍认证并核验当前详情权限,收到消息不产生资料查看或流程办理权。
813
+ 实例原参与消息继续更新终态,专用消息另以实例为键去重。发送仍采用既有 outbox 的
814
+ 至少一次语义,沿原回执恢复;本地验证使用站内或 fake 渠道。
815
+
816
+ 应用无需后端或自建事件订阅。可编译例子见
817
+ `examples/workflow-administration/rejection-notification.ts`。
818
+
819
+ ### 提交前检查必需审批人
820
+
821
+ 需要在保存业务资料前确认特定审批节点有人时,可在固定 definition 中声明:
822
+
823
+ ```ts
824
+ launchPreflight: { requiredApprovalNodes: ['departmentReview', 'finalReview'] }
825
+ ```
826
+
827
+ 节点必须为实际 approval,最多20个且不能重复;本版只支持 fixed_users、initiator、app_role、app_role_in_scope,不能依赖未来任务补填、外部 provider 或候选字段。BusinessProcess.commit 在业务写入的同一事务内,按当前有效节点配置和真实成员/范围解析这些节点;空人、失效账号、超限或需要尚未提供的交互输入时整笔回滚。emptyPolicy:skip 不能绕过该准入。命中原提交回执时不会重新执行检查。
828
+
829
+ 这是提交准入,不预先冻结未来审批人;实际进入节点仍重新解析。声明要求目标具备 workflow.launch-preflight@1.0.0,未声明的流程保持原提交行为。实际角色与事务回滚需在目标平台验收。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openxiangda",
3
- "version": "2.48.2",
3
+ "version": "2.55.1",
4
4
  "description": "OpenXiangda 2.0 的统一命令、应用 SDK、MCP 与中文 AI 技能资料。",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -67,13 +67,13 @@
67
67
  "dayjs": "1.11.18",
68
68
  "docx-preview": "0.3.7",
69
69
  "elkjs": "0.12.0",
70
- "openxiangda-cli": "2.6.52",
71
- "openxiangda-contracts": "2.47.0",
72
- "openxiangda-devkit-core": "2.41.6",
70
+ "openxiangda-cli": "2.6.83",
71
+ "openxiangda-contracts": "2.63.0",
72
+ "openxiangda-devkit-core": "2.48.2",
73
73
  "openxiangda-legacy": "npm:openxiangda@1.0.269",
74
- "openxiangda-mcp": "2.0.77",
75
- "openxiangda-nest": "2.13.7",
76
- "openxiangda-skill-kit": "2.3.57",
74
+ "openxiangda-mcp": "2.0.101",
75
+ "openxiangda-nest": "2.14.3",
76
+ "openxiangda-skill-kit": "2.3.81",
77
77
  "xlsx": "https://github.com/1377385356/openxiangda/releases/download/vendor-mirror/xlsx-0.20.3.tgz"
78
78
  },
79
79
  "peerDependencies": {
@@ -139,32 +139,35 @@
139
139
  },
140
140
  "openxiangdaRelease": {
141
141
  "schemaVersion": "openxiangda.release-notes/v1",
142
- "version": "2.48.2",
142
+ "version": "2.55.1",
143
143
  "status": "reviewed",
144
- "title": "子表输入与整表提交校验",
145
- "summary": "保留子表分页的全部校验,在提交时定位离页错误,输入时稳定停留在当前页。",
146
- "newFeatures": [],
144
+ "title": "持久原结果恢复与流程字段策略修复",
145
+ "summary": "已受理命令的短读取超时不会提前终止原三十分钟观察;同步主线的条件必填错误清理和冻结的选填撤回原因策略。",
146
+ "newFeatures": [
147
+ "固定流程定义支持 instanceCommands.withdraw.reasonRequired:false;省略仍必填,新声明要求 workflow.optional-withdrawal-reason@1.0.0。"
148
+ ],
147
149
  "fixes": [
148
- "父级子表完整校验只在显式校验或提交时执行,避免逐键扫描全部行并跳转至尚未填写的页;当前页字段仍即时反馈。"
150
+ "已受理 durable 原结果查询收到 SDK 明确标记可恢复的短读取预算耗尽后,在原绝对截止前按退避继续只读查询;不重放提交。",
151
+ "另一字段解除条件必填后清除 SDK 自己生成的旧必填错误,保留其他客户端、子表和服务端错误。"
149
152
  ],
150
153
  "affectedUsers": [
151
- "使用V2标准主子表、流程发起或任务办理页面的用户。"
154
+ "使用 durable 持久命令的热点报名应用和包含条件必填或撤回策略的 V2 流程。"
152
155
  ],
153
156
  "upgradeSteps": [
154
- "升级精确SDK/CLI并重新构建应用;本修正不引入服务端迁移或数据格式变更。",
155
- "本任务仅本地包消费与合成验证,不执行npm发布。"
157
+ "使用正式精确版本升级应用 SDK;原结果恢复无需更改服务端协议。",
158
+ "使用选填撤回原因时,平台必须具备对应能力;已有实例继续使用冻结版本。"
156
159
  ],
157
160
  "knownLimitations": [
158
- "分页是渲染边界,数据和事务仍遵守原先每表100行、声明合计400行等预算。",
159
- "最大附件组合与学校完整源流程运行验收仍单独验证。"
161
+ "一次读取仍最多两分钟,总观察仍为原三十分钟;权限、依赖和普通网络错误不会被自动隐藏。",
162
+ "容量必须在目标硬件上独立测量;单元验证不能证明万人或浏览器洪峰已通过。"
160
163
  ],
161
164
  "issues": [],
162
165
  "compatibility": {
163
166
  "node": ">=24",
164
- "platform": "沿用2.48.0匹配平台;1.x不消费此组件"
167
+ "platform": "durable 恢复沿用既有结果协议;显式选填撤回原因要求 workflow.optional-withdrawal-reason@1.0.0"
165
168
  },
166
- "sha256": "bfc22a1f10ca53c3d5146d4e0b797363afa4f0ae78dda80b0a9724e74d0bc4f9",
167
- "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.48.2"
169
+ "sha256": "c6c0691f9fe9571dfe1c9078546a5db3f63645ba11a67a3f3d0d6324ba7713d1",
170
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.55.1"
168
171
  },
169
172
  "scripts": {
170
173
  "build": "node ../../scripts/prune-package-dist.mjs && tsc -p tsconfig.json && node scripts/copy-assets.mjs",
@@ -0,0 +1,32 @@
1
+ {
2
+ "schemaVersion": "openxiangda.release-notes/v1",
3
+ "version": "2.51.0",
4
+ "status": "reviewed",
5
+ "title": "固定流程支持通知最后业务修改人",
6
+ "summary": "申请被拒绝时,在原事务冻结最后成功业务写入者,通知队列沿原事实投递和恢复。",
7
+ "newFeatures": [
8
+ "流程定义新增固定 rejectionNotification 声明,源码与目标编译器导出相同能力闭包。",
9
+ "平台读取 Native updated_by 与当前资料 revision,固定一个有效用户或明确跳过原因。",
10
+ "通知中心复用标准模板、站内消息、导航和 outbox,不要求应用后端或自建订阅。"
11
+ ],
12
+ "fixes": [],
13
+ "affectedUsers": [
14
+ "需要向最后业务修改人发送拒绝通知的 V2 流程应用。"
15
+ ],
16
+ "upgradeSteps": [
17
+ "消费同源包和提供 workflow.rejection-notification@1.0.0 的 Server,再注册与激活新固定流程版本。",
18
+ "声明固定文案和 record_last_modifier 收件来源;初始化无需增加开关。"
19
+ ],
20
+ "knownLimitations": [
21
+ "尚未发布 npm、写学校或生产数据;本地应用运行验收待共享平台验证结束。",
22
+ "最后成功业务写入者是明确目标语义,宜搭 form_inst_modifier 的事件时点仍需另核。",
23
+ "修改人当前无法查看详情时,消息跳转按现有权限拒绝,不扩大授权。"
24
+ ],
25
+ "issues": [],
26
+ "compatibility": {
27
+ "node": ">=24",
28
+ "platform": "workflow.rejection-notification@1.0.0;未声明应用和旧固定实例继续原行为。"
29
+ },
30
+ "sha256": "598c4fd3660cbe3d50693da26488fa6b31f400ad71f330f4dda6382b97552a33",
31
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.51.0"
32
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "schemaVersion": "openxiangda.release-notes/v1",
3
+ "version": "2.54.4",
4
+ "status": "reviewed",
5
+ "title": "原子业务审批的最终状态合同修正",
6
+ "summary": "同源SDK的审批事务守卫对齐Workflow实例实际的已通过、已拒绝状态,防止最终审批或驳回被错误阻断。",
7
+ "newFeatures": [],
8
+ "fixes": [
9
+ "expectedTransition.status使用running、approved、rejected、withdrawn;拒绝将任务completed状态当作实例状态。",
10
+ "Schema与公开TypeScript类型同步,补充四种实际状态与错误completed状态的回归验证。"
11
+ ],
12
+ "affectedUsers": [
13
+ "显式使用definition.commandHandlers及BusinessProcess.commandWithData的V2应用。"
14
+ ],
15
+ "upgradeSteps": [
16
+ "整体使用同源SDK发行,并配套接受实际实例状态的平台Server;在测试环境验证原token、回执、补填及业务效果的原子提交。"
17
+ ],
18
+ "knownLimitations": [
19
+ "这是本机测试候选,npm发布和真实三端业务验收分别记录,源码检查不代表完成交付。",
20
+ "固定handler仍仅支持approve、reject、withdraw;不降级为分离事务,也不支持跳转、强制决定或自动同意。",
21
+ "正式npm发行验证仍需配套参考应用锁文件;本机同源制品不替代该门禁。"
22
+ ],
23
+ "issues": [],
24
+ "compatibility": {
25
+ "node": ">=24",
26
+ "platform": "workflow.business-data-command@1.0.0,Server使用真实实例状态与同事务Native效果。"
27
+ },
28
+ "sha256": "245c53a18b1af890f22f38e5d0f75129e47aaae8898ae98844fa0ebd141ba48b",
29
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.54.4"
30
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "schemaVersion": "openxiangda.release-notes/v1",
3
+ "version": "2.54.6",
4
+ "status": "reviewed",
5
+ "title": "业务提交前检查必需审批人",
6
+ "summary": "流程可显式要求提交前解析指定审批节点。缺少当前有效审批人时,平台在业务事务内拒绝申请,避免保存后留下无法推进的流程。",
7
+ "newFeatures": [
8
+ "固定 definition.launchPreflight.requiredApprovalNodes 指定最多20个必需审批节点,两端编译器验证引用、范围和本机参与人来源。",
9
+ "BusinessProcess 同事务解析当前有效配置与 Native 角色成员;原成功提交回执优先返回,实际节点进入仍重新核验审批人。"
10
+ ],
11
+ "fixes": [],
12
+ "affectedUsers": [
13
+ "需要在保存申请时保证前置审批人存在的 V2 应用;仅显式声明时要求新平台能力。"
14
+ ],
15
+ "upgradeSteps": [
16
+ "完整升级同源SDK与支持 workflow.launch-preflight@1.0.0 的平台,然后为所需审批节点声明准入并验证当前角色范围。"
17
+ ],
18
+ "knownLimitations": [
19
+ "当前为本机开发候选,未发布 npm 或学校生产;工具检查、平台事务测试与真实应用角色验收分别记录。",
20
+ "仅支持 fixed_users、initiator、app_role、app_role_in_scope;未来任务字段、外部provider和交互选人不参与同步准入。",
21
+ "准入不冻结未来参与人,成功后人员改变仍由实际节点进入处理;正式 npm 发行门禁尚未完成。"
22
+ ],
23
+ "issues": [],
24
+ "compatibility": {
25
+ "node": ">=24",
26
+ "platform": "workflow.launch-preflight@1.0.0(显式声明才要求)"
27
+ },
28
+ "sha256": "ca379b1ab33ef8362ea34b9242cc30772caf30c0830f2a77fbd4dba1b17a6c21",
29
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.54.6"
30
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "schemaVersion": "openxiangda.release-notes/v1",
3
+ "version": "2.55.0",
4
+ "status": "reviewed",
5
+ "title": "流程拒绝意见策略与受限资料编辑",
6
+ "summary": "流程定义可显式允许选填拒绝意见,保留旧流程必填默认和管理员收紧边界;同步主线的具名资料编辑支持固定字段及受限输入。",
7
+ "newFeatures": [
8
+ "固定审批节点可声明 operationPolicy.reject.commentRequired:false;省略时仍必填,新声明要求 workflow.optional-rejection-comment@1.0.0。",
9
+ "具名资料编辑可声明固定资源和字段,复用受限人员、字典和托管附件输入,PC 与移动页共用 Field Kit。"
10
+ ],
11
+ "fixes": [
12
+ "审批节点 JSON Schema 接受并有界校验正式 operationPolicy,Surface 和执行端使用同一冻结策略。",
13
+ "主线修正 dataCommands 在开发配置和产物投影中的遗漏。"
14
+ ],
15
+ "affectedUsers": [
16
+ "需要保留选填拒绝意见语义的 V2 流程,或使用具名动作编辑固定资料字段的应用。"
17
+ ],
18
+ "upgradeSteps": [
19
+ "完整升级同源 SDK 与目标平台;选填拒绝意见须启用支持该能力的平台,并以新不可变流程版本声明。",
20
+ "已有任务继续使用进入节点时冻结的规则,管理员不得放宽代码必填策略。"
21
+ ],
22
+ "knownLimitations": [
23
+ "当前用于本机开发配套,不代表 npm 或学校生产已发布;真实应用验收单独记录。",
24
+ "选填仅允许省略、空串或空白;已提供的非字符串及超过 4000 字符仍拒绝。",
25
+ "具名资料编辑仍受动作能力、行范围和原修订校验约束,不开放普通 UPDATE。"
26
+ ],
27
+ "issues": [],
28
+ "compatibility": {
29
+ "node": ">=24",
30
+ "platform": "显式选填要求 workflow.optional-rejection-comment@1.0.0;具名资料编辑按声明要求匹配平台能力"
31
+ },
32
+ "sha256": "c48e83ce9ccb01af7e8af97458fee0fb192e0945fc6a596b985ed1fffaf876a0",
33
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.55.0"
34
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "schemaVersion": "openxiangda.release-notes/v1",
3
+ "version": "2.55.1",
4
+ "status": "reviewed",
5
+ "title": "持久原结果恢复与流程字段策略修复",
6
+ "summary": "已受理命令的短读取超时不会提前终止原三十分钟观察;同步主线的条件必填错误清理和冻结的选填撤回原因策略。",
7
+ "newFeatures": [
8
+ "固定流程定义支持 instanceCommands.withdraw.reasonRequired:false;省略仍必填,新声明要求 workflow.optional-withdrawal-reason@1.0.0。"
9
+ ],
10
+ "fixes": [
11
+ "已受理 durable 原结果查询收到 SDK 明确标记可恢复的短读取预算耗尽后,在原绝对截止前按退避继续只读查询;不重放提交。",
12
+ "另一字段解除条件必填后清除 SDK 自己生成的旧必填错误,保留其他客户端、子表和服务端错误。"
13
+ ],
14
+ "affectedUsers": [
15
+ "使用 durable 持久命令的热点报名应用和包含条件必填或撤回策略的 V2 流程。"
16
+ ],
17
+ "upgradeSteps": [
18
+ "使用正式精确版本升级应用 SDK;原结果恢复无需更改服务端协议。",
19
+ "使用选填撤回原因时,平台必须具备对应能力;已有实例继续使用冻结版本。"
20
+ ],
21
+ "knownLimitations": [
22
+ "一次读取仍最多两分钟,总观察仍为原三十分钟;权限、依赖和普通网络错误不会被自动隐藏。",
23
+ "容量必须在目标硬件上独立测量;单元验证不能证明万人或浏览器洪峰已通过。"
24
+ ],
25
+ "issues": [],
26
+ "compatibility": {
27
+ "node": ">=24",
28
+ "platform": "durable 恢复沿用既有结果协议;显式选填撤回原因要求 workflow.optional-withdrawal-reason@1.0.0"
29
+ },
30
+ "sha256": "c6c0691f9fe9571dfe1c9078546a5db3f63645ba11a67a3f3d0d6324ba7713d1",
31
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.55.1"
32
+ }
@@ -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": "b8d9f8625838d2c246b059fb8d14ac107fa1a8183f7bb3066e1fcad10087f1ed"
7
+ "sha256": "a8cd59d165b5b58e5c39ce53b7e19b6a886d0567d3da711f721fce35e806a591"
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.48.2 auth status --cwd <应用目录> --base-url <平台地址> --json
44
- pnpm dlx openxiangda@2.48.2 login --cwd <应用目录> --base-url <平台地址>
45
- pnpm dlx openxiangda@2.48.2 create <应用目录> --base-url <同一平台地址>
46
- pnpm dlx openxiangda@2.48.2 skill install --force
43
+ pnpm dlx openxiangda@2.55.1 auth status --cwd <应用目录> --base-url <平台地址> --json
44
+ pnpm dlx openxiangda@2.55.1 login --cwd <应用目录> --base-url <平台地址>
45
+ pnpm dlx openxiangda@2.55.1 create <应用目录> --base-url <同一平台地址>
46
+ pnpm dlx openxiangda@2.55.1 skill install --force
47
47
  ```
48
48
 
49
49
  创建前把产品要求的目标平台明确带入命令,不从旧登录态推断站点。已有工作区从原绑定恢复,平台不一致时先解决登录与目标,不改 link 文件跨站创建。
@@ -2,6 +2,12 @@
2
2
 
3
3
  平台的应用管理控制台维护应用成员、角色授权和流程运行参数。应用自身声明的 `/admin` 业务菜单展示业务页面,两者职责不同。可见入口和可执行操作以当前用户与目标环境返回结果为准。
4
4
 
5
+ 角色成员的范围维度也支持模型字段的 `userCandidates.scope` 引用,不要求为审批人职责增加无关的数据读写策略。目录 `scopeDimensions[].applicability.candidateFields` 返回字段所在的资源、数据修订、字段、角色与操作;当前环境及仍在办理的历史流程所引用的字段均可贡献范围适用性。实例完成或发起命令取消后,旧字段不再单独贡献适用性。配置成员的范围不会自动授予数据读写、菜单或应用管理权限;实际选人与提交仍核验范围、操作、成员有效期及账号状态。
6
+
7
+ 流程的 `app_role_in_scope` 绑定也贡献范围适用性,包括审批、抄送、兼容的节点人员覆盖及路由补充来源。目录 `scopeDimensions[].applicability.workflowBindings` 返回流程、节点、角色、定义/绑定版本、配置修订、来源和 `active`/`in_flight` 上下文;不包含业务事实或标题。当前启用定义和仍在办理的固定版本均可维护其职责,终态实例或已取消发起命令不再单独贡献适用性。
8
+
9
+ 自定义管理页面按“候选字段引用该角色、有效流程范围职责引用该角色,或任一数据策略规则适用于该角色”筛选维度。每条策略须单独处理 `unrestrictedRoleCodes`;不能仅依据汇总 `allRoles`、`roleCodes` 或全局排除列表判断。未返回 `candidateFields` 或 `workflowBindings` 时按空列表处理。流程职责的范围维护不授予普通数据读写权限,也不改变已创建任务的参与人快照。
10
+
5
11
  ## 发现当前入口 {#context}
6
12
 
7
13
  ```bash
@@ -158,7 +164,7 @@ export function ReadableWorkflow({ workflowCode, version }: {
158
164
 
159
165
  开发者在审批节点的 `administration` 声明可维护的模式、人员来源和任务按钮。未声明这些项的节点保留名称、说明及原人员来源维护;拓扑、分支、范围计算仍由代码控制。使用新声明的应用需要平台 `workflow.node-administration@1.0.0`,编译与激活均检查该能力。
160
166
 
161
- 模式为 `single/any/all/sequence` 的允许子集;可维护来源限 `fixed_users/app_role/app_role_in_scope`,范围角色必须已有代码声明的 scope。按钮 code 保持同意、拒绝、退回、转交、委托、加签的稳定语义;同意和拒绝不能关闭。只有同意/拒绝支持意见规则,拒绝或代码已有必填意见不能放宽。字段显隐、填写与必填行为由应用页面和代码维护,不提供流程节点的字段管理覆盖。可编译声明见 `examples/workflow-administration/declaration.ts`。
167
+ 模式为 `single/any/all/sequence` 的允许子集;可维护来源限 `fixed_users/app_role/app_role_in_scope`,范围角色必须已有代码声明的 scope。按钮 code 保持同意、拒绝、退回、转交、委托、加签的稳定语义;同意和拒绝不能关闭。只有同意/拒绝支持意见规则;拒绝默认必填,固定节点代码可用 operationPolicy.reject.commentRequired: false 显式选填。管理员可收紧选填规则,也可恢复代码明确允许的选填;不能放宽代码必填或未声明时的拒绝默认必填。已进入的任务保留冻结规则。字段显隐、填写与必填行为由应用页面和代码维护,不提供流程节点的字段管理覆盖。可编译声明见 `examples/workflow-administration/declaration.ts`。
162
168
 
163
169
  自动抄送节点仅开放名称、说明和显式声明的 `administration.assigneeProviders`;未开放时接收来源只读。共享编辑器显示“抄送人”,不显示审批方式或审批按钮,固定名单最多20人。`next`、空人策略和通知策略仍归代码;新配置只影响以后进入,过去抄送名单保持冻结。完整例子见 `examples/workflow-administration/automatic-cc.ts`,执行及读取边界见[自动抄送](workflow-events.md#automatic-cc)。
164
170