openxiangda 2.59.1 → 2.59.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.
Files changed (84) hide show
  1. package/dist/browser/components/platform-fields/AttachmentFileList.d.ts +5 -0
  2. package/dist/browser/components/platform-fields/AttachmentFileList.d.ts.map +1 -1
  3. package/dist/browser/components/platform-fields/AttachmentFileList.js +11 -0
  4. package/dist/browser/components/platform-fields/AttachmentFileList.js.map +1 -1
  5. package/dist/browser/components/platform-fields/MobileManagedFileField.d.ts +2 -1
  6. package/dist/browser/components/platform-fields/MobileManagedFileField.d.ts.map +1 -1
  7. package/dist/browser/components/platform-fields/MobileManagedFileField.js +4 -4
  8. package/dist/browser/components/platform-fields/MobileManagedFileField.js.map +1 -1
  9. package/dist/browser/components/platform-fields/SubtableField.d.ts +3 -0
  10. package/dist/browser/components/platform-fields/SubtableField.d.ts.map +1 -1
  11. package/dist/browser/components/platform-fields/SubtableField.js +9 -4
  12. package/dist/browser/components/platform-fields/SubtableField.js.map +1 -1
  13. package/dist/browser/components/resource/SurfaceFields.d.ts +2 -0
  14. package/dist/browser/components/resource/SurfaceFields.d.ts.map +1 -1
  15. package/dist/browser/components/resource/SurfaceFields.js +7 -7
  16. package/dist/browser/components/resource/SurfaceFields.js.map +1 -1
  17. package/dist/browser/components/resource/generated-resource-definition.d.ts +1 -0
  18. package/dist/browser/components/resource/generated-resource-definition.d.ts.map +1 -1
  19. package/dist/browser/components/resource/resource-form-operations.d.ts.map +1 -1
  20. package/dist/browser/components/resource/resource-form-operations.js +3 -2
  21. package/dist/browser/components/resource/resource-form-operations.js.map +1 -1
  22. package/dist/browser/components/workflow/StandardWorkflowPages.d.ts +7 -0
  23. package/dist/browser/components/workflow/StandardWorkflowPages.d.ts.map +1 -1
  24. package/dist/browser/components/workflow/StandardWorkflowPages.js +24 -7
  25. package/dist/browser/components/workflow/StandardWorkflowPages.js.map +1 -1
  26. package/dist/browser/components/workflow/WorkflowDiagram.d.ts.map +1 -1
  27. package/dist/browser/components/workflow/WorkflowDiagram.js +12 -5
  28. package/dist/browser/components/workflow/WorkflowDiagram.js.map +1 -1
  29. package/dist/browser/components/workflow/WorkflowFlowCanvas.d.ts.map +1 -1
  30. package/dist/browser/components/workflow/WorkflowFlowCanvas.js +14 -7
  31. package/dist/browser/components/workflow/WorkflowFlowCanvas.js.map +1 -1
  32. package/dist/browser/components/workflow/standard-process-values.d.ts +2 -2
  33. package/dist/browser/components/workflow/standard-process-values.d.ts.map +1 -1
  34. package/dist/browser/components/workflow/standard-process-values.js +18 -3
  35. package/dist/browser/components/workflow/standard-process-values.js.map +1 -1
  36. package/dist/browser/components/workflow/workflow-graph-presentation.d.ts +1 -1
  37. package/dist/browser/components/workflow/workflow-graph-presentation.d.ts.map +1 -1
  38. package/dist/browser/components/workflow/workflow-graph-presentation.js +4 -3
  39. package/dist/browser/components/workflow/workflow-graph-presentation.js.map +1 -1
  40. package/dist/browser/components/workflow/workflow-submission-form.d.ts +4 -0
  41. package/dist/browser/components/workflow/workflow-submission-form.d.ts.map +1 -1
  42. package/dist/browser/components/workflow/workflow-submission-form.js +8 -1
  43. package/dist/browser/components/workflow/workflow-submission-form.js.map +1 -1
  44. package/dist/browser/runtime-authorization-recovery.d.ts.map +1 -1
  45. package/dist/browser/runtime-authorization-recovery.js +3 -1
  46. package/dist/browser/runtime-authorization-recovery.js.map +1 -1
  47. package/dist/browser/styles.css +19 -0
  48. package/documentation/AGENTS.md +1 -0
  49. package/documentation/administration.md +3 -0
  50. package/documentation/application-operations.md +150 -0
  51. package/documentation/appspec.md +1 -1
  52. package/documentation/field-components.md +7 -0
  53. package/documentation/getting-started.md +7 -7
  54. package/documentation/managed-concurrency-frontend.md +1 -1
  55. package/documentation/manifest.json +15 -9
  56. package/documentation/reference/cli.md +1 -1
  57. package/documentation/reference/mcp.md +1120 -0
  58. package/documentation/workflow-events.md +48 -1
  59. package/package.json +29 -26
  60. package/releases/2.59.4.json +38 -0
  61. package/releases/2.59.5.json +40 -0
  62. package/skills/manifest.json +1 -1
  63. package/skills/openxiangda-v2/SKILL.md +5 -4
  64. package/skills/openxiangda-v2/references/administration.md +3 -0
  65. package/skills/openxiangda-v2/references/application-operations.md +150 -0
  66. package/skills/openxiangda-v2/references/appspec.md +1 -1
  67. package/skills/openxiangda-v2/references/cli.md +1 -1
  68. package/skills/openxiangda-v2/references/field-components.md +7 -0
  69. package/skills/openxiangda-v2/references/getting-started.md +7 -7
  70. package/skills/openxiangda-v2/references/managed-concurrency-frontend.md +1 -1
  71. package/skills/openxiangda-v2/references/mcp.md +1120 -0
  72. package/skills/openxiangda-v2/references/workflow-events.md +48 -1
  73. package/releases/2.51.0.json +0 -32
  74. package/releases/2.54.4.json +0 -30
  75. package/releases/2.54.6.json +0 -30
  76. package/releases/2.55.0.json +0 -34
  77. package/releases/2.55.1.json +0 -32
  78. package/releases/2.55.5.json +0 -30
  79. package/releases/2.55.6.json +0 -32
  80. package/releases/2.57.1.json +0 -31
  81. package/releases/2.58.0.json +0 -37
  82. package/releases/2.58.1.json +0 -31
  83. package/releases/2.59.0.json +0 -36
  84. package/releases/2.59.1.json +0 -37
@@ -496,8 +496,11 @@ return <WorkflowSubmissionPage workflowCode="reinstatement" variant="mobile" for
496
496
 
497
497
  初值仅在当前匹配的发起合同内应用到未触碰字段,每字段一次;后到资料和父组件重新渲染
498
498
  不会覆盖已填写或手动清空的内容。日期和范围使用canonical值,标准页通过原codec转换。
499
- `fieldState`读取canonical值,`required`只能增加校验,不能撤销原必填或隐藏原必填字段;
499
+ 条件隐藏同步也读取表单当前值,避免预填或联动刚写入的来源行被旧显隐投影清空。
500
+ `fieldState`读取canonical值,`required`只能增加校验,不能撤销原必填;
500
501
  可选字段隐藏时清为`hiddenValue`或undefined,提交也使用同一投影,不发送旧材料/人员。
502
+
503
+ 必填字段也可以隐藏,但必须提供非null/undefined的规范`hiddenValue`,例如表单外已经选定的业务对象。0与false是有效输入;平台仍核验类型、必填和授权,应用须重新核验对象。未提供值时表单继续阻断。
501
504
  初值或规则引用范围外字段会阻断表单。`intro`只提供页面说明,不拥有身份、授权或提交。
502
505
  资料加载/失败或业务资格提示可传`preparation`内容,它仅阻断尚未提交的表单;原请求查询
503
506
  及已接受命令的展示优先于该提示。应用应始终挂载标准页,避免当前资格变化遮蔽原结果恢复。
@@ -511,6 +514,10 @@ return <WorkflowSubmissionPage workflowCode="reinstatement" variant="mobile" for
511
514
  联动;PC/手机规则一致。异常保留输入并阻断新提交,下一次成功输入可恢复,原提交结果
512
515
  查询及已接受命令仍优先。异步资料读取放准备阶段,服务器仍校验资格和业务不变量。
513
516
 
517
+ 对已有台账等来源固定的子表,可以传 `subtableFixedRows: ['existingPositions']`,关闭新增、删除和导入,并保留允许字段的编辑、上传和分页。此项仅限制页面操作;业务动作仍须后台重读来源,核验行集合与来源版本,不能把它作为数据授权或防篡改守卫。
518
+
519
+ 当只读来源标识或版本需要发给后台核对时,使用 `subtableReadonlyInputFields: { existingPositions: ['ledgerId', 'ledgerRevision'] }`。字段必须属于当前操作的子表白名单;这些值仅在页面只读,仍是未经信任的输入,后台必须重读并执行版本/集合守卫。不得与同字段的 `subtableReadonlyFields` 混用,后者会省略派生输入。
520
+
514
521
  具名owned新建表单可传`subtableReadonlyFields: { lines: ['employeeNumber'] }`,
515
522
  把当前子行的派生值显示为只读,并从提交输入排除。表名与字段必须属于当前sealed
516
523
  owned闭包;配置错误会拒绝新表单。值仍可供应用联动展示,Server应重新计算可信值。
@@ -620,6 +627,31 @@ outbox容量等事务故障会回滚,处理器按原键核对后重交,不
620
627
  等待处理器的失败从原事件管理受控重放,保留原执行键。普通详情只显示安全状态
621
628
  摘要;原输入、输出和外部回执不放入普通时间线。
622
629
 
630
+ ### 在固定步骤内写入业务数据 {#step-data-transaction}
631
+
632
+ 审批中途需要更新台账时,使用 `reconciled-effect` 动作,并在固定 `handler` 上声明
633
+ `dataTransaction: true`。编译器自动要求 `workflow.step-data-transaction@1.0.0`,
634
+ 标记进入签名处理器合同;旧具名版本不可直接改变,增加新版本时保留原实现。
635
+
636
+ 在已验证并领取的事件处理器内,注入 `OpenXiangdaApplicationDataApiService`。
637
+ `reconcile` 先调用 `resolveWorkflowStepData()`:`committed` 用原事务结果重建固定
638
+ `output/receipt`,`not_observed` 返回 `not-executed`,响应未知或失败保留原执行键。
639
+ `handle` 调用 `commitWorkflowStepData({ guards, operations })`。执行ID从事件上下文
640
+ 取得,应用不传人、角色、下一节点或幂等键。每个 execution 只允许一个 Native 事务,
641
+ 内容不同返回冲突;普通事务不能使用保留的 `workflow-step:` 键。
642
+
643
+ 计划必须包含流程 subject 的 `record-match` 或 `record-assert` guard,其 `revision`
644
+ 等于事件数据的固定 `dataRevision`。Native 继续强制来源读取权限、目标写入权限和
645
+ CAS;此接口不能直接修改流程 subject,任务补填仍使用原任务页面。数据计划遵循
646
+ Native 的2016操作、2MiB限制,不支持 decimalReservation 或排队命令。复用原应用
647
+ `data:read/data:write/data:transaction` 权限,不额外授予全校数据读取。
648
+
649
+ 平台先取得环境围栏、实例和步骤锁,再检查有效投递/领取租约,最后执行数据计划。
650
+ 业务行、数据事件、Native回执和步骤的回执引用一起提交;任一行失败或租约过期全部
651
+ 回滚。取消先取得锁时拒绝新写;数据先提交后取消、换阶段或换Head,resolve仍恢复
652
+ 同一原回执。原回执缺失时明确拒绝,不能以未知结果为由重新写入。步骤输出和后续
653
+ 流转继续由原事件回执处理,晚拒绝不自动撤销已写台账;补偿属于应用显式业务规则。
654
+
623
655
  ## 代码任务页面与补填 {#task-page-submit}
624
656
 
625
657
  需要办理人补填时,在定义的 `taskPages` 声明命名页面,审批节点以
@@ -1096,3 +1128,18 @@ nodes: {
1096
1128
  自动协商 `workflow.correction-business-command@1.0.0`,无需额外开启功能。
1097
1129
  本人标量补正支持 Native 写入,owned 子表补正仍不支持;原已成功结果先于当前资料重验
1098
1130
  恢复,不因日期推移或资料后来停用而被误报为失败。接入方法见[后端](backend.md#correction-business-command)。
1131
+
1132
+ 具名来源行需要展示原资源的材料时,表单可提供 `fileResourceCodes: { [fileId]: resourceCode }`。PC/手机按来源选择 Native 附件读取入口;这是展示提示,平台仍检查当前用户对每个原文件的权限。新上传保留声明的目标资源,提交后台仍须验证来源并使用原复制回执,不能直接绑定另一资源文件。
1133
+
1134
+ 角色绑定 `app_role` / `app_role_in_scope` 可声明 `selectedInputPath`,从固定代码步骤输出或流程事实中读取人员数组(用户ID或 `{ value, label }`)。平台按当前角色和范围重新核验,再按输入顺序保留其职责出处。越权、失效或重复人员整体拒绝;缺值阻断,只有显式 `[]` 可以消费节点已声明的无人策略。不可与 `routing`、`candidateField`、`inputPath` 混用。编译器要求 `workflow.role-input-selection@1.0.0`;该路径属于代码定义,不是管理员可改的连接或条件。
1135
+
1136
+ ### 申请人补正中的非流转子表
1137
+
1138
+ 固定 `correction` 任务可以包含一层 owned 子表,只要这些子表不在
1139
+ `subject.factProjection` 中。页内的 `subtable.create/delete/reorder` 和子字段
1140
+ 白名单、只读、必填及模型 `minRows/maxRows` 仍生效。使用原任务的
1141
+ `key/state/values/id/revision` 编辑,不把新建申请的 `data` 行结构套到原行。
1142
+ 平台把父子修改与 `resubmit` 放在同一授权、版本校验和事务中,应用的业务重提
1143
+ 只需重核自身业务不变量,不能另写一次子行。投影为流程事实的子表暂不支持此
1144
+ 补正形式,仍返回 `WORKFLOW_CORRECTION_OWNED_FACTS_UNSUPPORTED`;不能通过
1145
+ 移除真实流转事实来绕过。原返回、重走首节点、职责和原命令恢复规则保持。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openxiangda",
3
- "version": "2.59.1",
3
+ "version": "2.59.5",
4
4
  "description": "OpenXiangda 2.0 的统一命令、应用 SDK、MCP 与中文 AI 技能资料。",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -71,13 +71,13 @@
71
71
  "dayjs": "1.11.18",
72
72
  "docx-preview": "0.3.7",
73
73
  "elkjs": "0.12.0",
74
- "openxiangda-cli": "2.7.1",
75
- "openxiangda-contracts": "2.69.1",
76
- "openxiangda-devkit-core": "2.51.1",
74
+ "openxiangda-cli": "2.8.2",
75
+ "openxiangda-contracts": "2.71.1",
76
+ "openxiangda-devkit-core": "2.53.1",
77
77
  "openxiangda-legacy": "npm:openxiangda@1.0.269",
78
- "openxiangda-mcp": "2.0.108",
79
- "openxiangda-nest": "2.15.1",
80
- "openxiangda-skill-kit": "2.3.89",
78
+ "openxiangda-mcp": "2.1.1",
79
+ "openxiangda-nest": "2.16.2",
80
+ "openxiangda-skill-kit": "2.3.92",
81
81
  "xlsx": "https://github.com/1377385356/openxiangda/releases/download/vendor-mirror/xlsx-0.20.3.tgz"
82
82
  },
83
83
  "peerDependencies": {
@@ -143,40 +143,43 @@
143
143
  },
144
144
  "openxiangdaRelease": {
145
145
  "schemaVersion": "openxiangda.release-notes/v1",
146
- "version": "2.59.1",
146
+ "version": "2.59.5",
147
147
  "status": "reviewed",
148
- "title": "同源托管断连恢复与声明生成修复",
149
- "summary": "发布同源托管只读断连恢复及主线已评审能力,并补齐大型资源类型生成和自动审批只读详情的修复。",
148
+ "title": "开发者AI应用自助操作与主线工具组合",
149
+ "summary": "让AI沿用当前应用权限直接诊断事件、复用加密环境凭据、配置通知和恢复指定投递;发行同源主线已评审的流程及编译契约。",
150
150
  "newFeatures": [
151
- "流程支持发起人补正、具名业务补正命令、审批节点代理范围、批准后代理和原子Native阶段条件;新能力通过目标平台协商。",
152
- "owned子表支持最少行数、可信初始流程事实、具名只读展示和任务字段来源;资源关联支持显式绑定变化清空。",
153
- "日期字段支持分钟精度,日期事件支持可信来源投影;大型应用声明与JSON节点预算可显式协商扩展。",
154
- "连接开发支持普通浏览器登录身份与平台可信后台调用;新增纯表达式入口供浏览器和Node共享流程表达式。"
151
+ "admin operations和MCP application_operations发现20项有界操作;admin execute及application_operation直接执行,必须明确环境,密钥仅返回元信息。",
152
+ "角色审批可按固定代码步骤或事实的选人结果取当前有效角色候选;平台必须提供workflow.role-input-selection能力,缺失时拒绝新声明。",
153
+ "流程表单支持已加载固定子表行及按原Native资源授权读取材料;流程图支持展开已声明代码逻辑说明。"
155
154
  ],
156
155
  "fixes": [
157
- "read、mine、result、allocation的已标记连接中断与繁忙共用固定预算、尝试上限、退避及取消边界;已受理观察继续原结果,不延长首次提交截止。",
158
- "修复受控子表字段联动、审批已确认任务转交后的页面继续和普通浏览器业务API的CSRF传递。",
159
- "大型资源目录使用命名条目与精确只读类型,避免TypeScript序列化上限;自动发起人审批允许已解析的完全只读详情,保留可编辑席位人工办理。"
156
+ "当前能力目录完整合法闭包不再受旧64项上限误拒绝;未知代码、重复项及制品绑定仍拒绝。",
157
+ "补正可编辑未参与流转事实投影的一层owned子表;固定子表条件隐藏采用当前表单值。",
158
+ "流程画布就绪后才开放导航,用户导航不再被迟到初始化覆盖;大型AppSpec支持512文件并保留原字节界限。",
159
+ "流程提交遵循当前声明的隐藏字段保留或清空策略,并保留提交字段白名单。",
160
+ "冻结发行允许权威主线后续前进;源提交必须仍在主线,制品及参考应用证据必须保持原样。",
161
+ "流程变量叶路径继承已声明父变量的显示标签;路径、条件和单位事实保持。",
162
+ "冻结manifest在planned回执建立前即可验证主线祖先关系;缺失或损坏制品拒绝,实际验证门禁仍必需。"
160
163
  ],
161
164
  "affectedUsers": [
162
- "使用托管并发查询、标准流程表单、owned子表或普通角色连接开发的V2应用。"
165
+ "使用V2开发者CLI/MCP进行应用运维,或使用本批流程/编译增强的应用。稳定V1独立维护。"
163
166
  ],
164
167
  "upgradeSteps": [
165
- "通过精确版本安装完整同源发行组合;启用新声明前核验目标平台能力。托管高并发应用需在真实浏览器与隔离压测中重新校准恢复行为。"
168
+ "精确更新完整工具组合,刷新工作区Skill和AGENTS平台区块并重启MCP。先读docs application-operations及admin operations --json。",
169
+ "共享校验器须与平台安装的openxiangda-contracts 2.71.1配对;已有生产应用保持原不可变版本,升级工具不代表重新部署业务。"
166
170
  ],
167
171
  "knownLimitations": [
168
- "客户上一档万人HTTP请求图有29人结果观察被断连中断;后台全部终结但该档仍未完整通过。本版本的新万人复测尚未完成,既有最高完整通过为8000人HTTP请求图。",
169
- "不自动重放业务写入,不将断连认定为已受理,不覆盖集中SSO登录或浏览器JS渲染容量;权限、依赖及未标记错误继续拒绝。",
170
- "新增可选流程及普通角色源码调用需要配套平台能力;旧平台不能启用未支持的声明。"
172
+ "沿用当前应用管理授权;首次账号授权、权限委托和外部身份目录维护仍由原owner处理。旧平台缺少接口时明确拒绝,不使用SQL或保护绕过。",
173
+ "通道健康成功不证明实际老师收件或已读。恢复只处理指定原投递,不自动导入、重建业务、批量重发历史通知或读取密钥明文。"
171
174
  ],
172
175
  "issues": [],
173
176
  "compatibility": {
174
177
  "node": ">=24",
175
- "platform": "托管断连恢复复用现有接口;新增声明按目标平台能力协商",
176
- "v1": "V1不消费本批V2运行时能力"
178
+ "platform": "共享纯校验器同源配对;新增角色选人声明要求workflow.role-input-selection@1.0.0",
179
+ "v1": "V1不消费本批V2契约或运行时"
177
180
  },
178
- "sha256": "3a9716eafe5e14bfe5eda8b2482393e4aad28155fde5933f3fe759a6a98c5972",
179
- "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.59.1"
181
+ "sha256": "a50ff28ce680ae7ec080219eb0e010ba087b3915c65582a13578ba3b9a7833b7",
182
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.59.5"
180
183
  },
181
184
  "scripts": {
182
185
  "build": "node ../../scripts/prune-package-dist.mjs && tsc -p tsconfig.json && node scripts/copy-assets.mjs",
@@ -0,0 +1,38 @@
1
+ {
2
+ "schemaVersion": "openxiangda.release-notes/v1",
3
+ "version": "2.59.4",
4
+ "status": "reviewed",
5
+ "title": "开发者AI应用自助操作与主线工具组合",
6
+ "summary": "让AI沿用当前应用权限直接诊断事件、复用加密环境凭据、配置通知和恢复指定投递;发行同源主线已评审的流程及编译契约。",
7
+ "newFeatures": [
8
+ "admin operations和MCP application_operations发现20项有界操作;admin execute及application_operation直接执行,必须明确环境,密钥仅返回元信息。",
9
+ "角色审批可按固定代码步骤或事实的选人结果取当前有效角色候选;平台必须提供workflow.role-input-selection能力,缺失时拒绝新声明。",
10
+ "流程表单支持已加载固定子表行及按原Native资源授权读取材料;流程图支持展开已声明代码逻辑说明。"
11
+ ],
12
+ "fixes": [
13
+ "当前能力目录完整合法闭包不再受旧64项上限误拒绝;未知代码、重复项及制品绑定仍拒绝。",
14
+ "补正可编辑未参与流转事实投影的一层owned子表;固定子表条件隐藏采用当前表单值。",
15
+ "流程画布就绪后才开放导航,用户导航不再被迟到初始化覆盖;大型AppSpec支持512文件并保留原字节界限。",
16
+ "流程提交遵循当前声明的隐藏字段保留或清空策略,并保留提交字段白名单。",
17
+ "冻结发行允许权威主线后续前进;源提交必须仍在主线,制品及参考应用证据必须保持原样。"
18
+ ],
19
+ "affectedUsers": [
20
+ "使用V2开发者CLI/MCP进行应用运维,或使用本批流程/编译增强的应用。稳定V1独立维护。"
21
+ ],
22
+ "upgradeSteps": [
23
+ "精确更新完整工具组合,刷新工作区Skill和AGENTS平台区块并重启MCP。先读docs application-operations及admin operations --json。",
24
+ "共享校验器须与平台安装的openxiangda-contracts 2.71.0配对;已有生产应用保持原不可变版本,升级工具不代表重新部署业务。"
25
+ ],
26
+ "knownLimitations": [
27
+ "沿用当前应用管理授权;首次账号授权、权限委托和外部身份目录维护仍由原owner处理。旧平台缺少接口时明确拒绝,不使用SQL或保护绕过。",
28
+ "通道健康成功不证明实际老师收件或已读。恢复只处理指定原投递,不自动导入、重建业务、批量重发历史通知或读取密钥明文。"
29
+ ],
30
+ "issues": [],
31
+ "compatibility": {
32
+ "node": ">=24",
33
+ "platform": "共享纯校验器同源配对;新增角色选人声明要求workflow.role-input-selection@1.0.0",
34
+ "v1": "V1不消费本批V2契约或运行时"
35
+ },
36
+ "sha256": "24320b39c5220c3acaf513b68532629801d3fc90f70f65659efcc69e1c7d616c",
37
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.59.4"
38
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "schemaVersion": "openxiangda.release-notes/v1",
3
+ "version": "2.59.5",
4
+ "status": "reviewed",
5
+ "title": "开发者AI应用自助操作与主线工具组合",
6
+ "summary": "让AI沿用当前应用权限直接诊断事件、复用加密环境凭据、配置通知和恢复指定投递;发行同源主线已评审的流程及编译契约。",
7
+ "newFeatures": [
8
+ "admin operations和MCP application_operations发现20项有界操作;admin execute及application_operation直接执行,必须明确环境,密钥仅返回元信息。",
9
+ "角色审批可按固定代码步骤或事实的选人结果取当前有效角色候选;平台必须提供workflow.role-input-selection能力,缺失时拒绝新声明。",
10
+ "流程表单支持已加载固定子表行及按原Native资源授权读取材料;流程图支持展开已声明代码逻辑说明。"
11
+ ],
12
+ "fixes": [
13
+ "当前能力目录完整合法闭包不再受旧64项上限误拒绝;未知代码、重复项及制品绑定仍拒绝。",
14
+ "补正可编辑未参与流转事实投影的一层owned子表;固定子表条件隐藏采用当前表单值。",
15
+ "流程画布就绪后才开放导航,用户导航不再被迟到初始化覆盖;大型AppSpec支持512文件并保留原字节界限。",
16
+ "流程提交遵循当前声明的隐藏字段保留或清空策略,并保留提交字段白名单。",
17
+ "冻结发行允许权威主线后续前进;源提交必须仍在主线,制品及参考应用证据必须保持原样。",
18
+ "流程变量叶路径继承已声明父变量的显示标签;路径、条件和单位事实保持。",
19
+ "冻结manifest在planned回执建立前即可验证主线祖先关系;缺失或损坏制品拒绝,实际验证门禁仍必需。"
20
+ ],
21
+ "affectedUsers": [
22
+ "使用V2开发者CLI/MCP进行应用运维,或使用本批流程/编译增强的应用。稳定V1独立维护。"
23
+ ],
24
+ "upgradeSteps": [
25
+ "精确更新完整工具组合,刷新工作区Skill和AGENTS平台区块并重启MCP。先读docs application-operations及admin operations --json。",
26
+ "共享校验器须与平台安装的openxiangda-contracts 2.71.1配对;已有生产应用保持原不可变版本,升级工具不代表重新部署业务。"
27
+ ],
28
+ "knownLimitations": [
29
+ "沿用当前应用管理授权;首次账号授权、权限委托和外部身份目录维护仍由原owner处理。旧平台缺少接口时明确拒绝,不使用SQL或保护绕过。",
30
+ "通道健康成功不证明实际老师收件或已读。恢复只处理指定原投递,不自动导入、重建业务、批量重发历史通知或读取密钥明文。"
31
+ ],
32
+ "issues": [],
33
+ "compatibility": {
34
+ "node": ">=24",
35
+ "platform": "共享纯校验器同源配对;新增角色选人声明要求workflow.role-input-selection@1.0.0",
36
+ "v1": "V1不消费本批V2契约或运行时"
37
+ },
38
+ "sha256": "a50ff28ce680ae7ec080219eb0e010ba087b3915c65582a13578ba3b9a7833b7",
39
+ "url": "https://github.com/1377385356/openxiangda/releases/tag/v2.59.5"
40
+ }
@@ -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": "3fcaf3ced4c43928021d5397d1f9239f5be96fa9df98b9029f5db25e29350788"
7
+ "sha256": "aa8ff464d2919e6ab9ad31d316255b2fe8ad07b0bcec8dcb1f19a7dcbad0fcbf"
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.59.1 auth status --cwd <应用目录> --base-url <平台地址> --json
44
- pnpm dlx openxiangda@2.59.1 login --cwd <应用目录> --base-url <平台地址>
45
- pnpm dlx openxiangda@2.59.1 create <应用目录> --base-url <同一平台地址>
46
- pnpm dlx openxiangda@2.59.1 skill install --force
43
+ pnpm dlx openxiangda@2.59.5 auth status --cwd <应用目录> --base-url <平台地址> --json
44
+ pnpm dlx openxiangda@2.59.5 login --cwd <应用目录> --base-url <平台地址>
45
+ pnpm dlx openxiangda@2.59.5 create <应用目录> --base-url <同一平台地址>
46
+ pnpm dlx openxiangda@2.59.5 skill install --force
47
47
  ```
48
48
 
49
49
  创建前把产品要求的目标平台明确带入命令,不从旧登录态推断站点。已有工作区从原绑定恢复,平台不一致时先解决登录与目标,不改 link 文件跨站创建。
@@ -77,6 +77,7 @@ pnpm dlx openxiangda@2.59.1 skill install --force
77
77
  | 热点读取、抢票、排队、名额预占与原结果恢复 | [缓存、排队与配额](references/managed-concurrency.md) |
78
78
  | 报名按钮、表单排队、短确认页、预占倒计时与前端恢复 | [并发前端接入](references/managed-concurrency-frontend.md):按六种形式选择;仅使用已导出的 API,区分待实现封装 |
79
79
  | 管理成员或查看有效流程参数 | [应用管理](references/administration.md) |
80
+ | 高水位/死信、正式环境缺密钥、通知未发送或收件人错误 | [AI 应用自助操作](references/application-operations.md);先读 `admin operations --json` 或 MCP `application_operations`,在已有授权范围内直接执行,沿用当前平台账号,无需人工打开管理页 |
80
81
  | 检查、部署、生产发布与故障恢复 | [验收](references/testing.md)、[交付](references/delivery.md) |
81
82
  | 需求记录与版本升级 | [全流程记录](references/appspec.md)、[升级](references/upgrading.md) |
82
83
  | 选择 CLI/MCP 操作 | [命令](references/cli.md)、[MCP](references/mcp.md) |
@@ -1,5 +1,8 @@
1
1
  # 应用管理与有效配置
2
2
 
3
+ 事件高水位、正式环境缺凭据或消息未发送时,开发者AI直接读取[应用自助操作](application-operations.md)
4
+ 并使用 `admin operations` / MCP `application_operations` 发现和执行已有管理能力,无需人工管理页面。
5
+
3
6
  平台的应用管理控制台维护应用成员、角色授权和流程运行参数。应用自身声明的 `/admin` 业务菜单展示业务页面,两者职责不同。可见入口和可执行操作以当前用户与目标环境返回结果为准。
4
7
 
5
8
  角色成员的范围维度也支持模型字段的 `userCandidates.scope` 引用,不要求为审批人职责增加无关的数据读写策略。目录 `scopeDimensions[].applicability.candidateFields` 返回字段所在的资源、数据修订、字段、角色与操作;当前环境及仍在办理的历史流程所引用的字段均可贡献范围适用性。实例完成或发起命令取消后,旧字段不再单独贡献适用性。配置成员的范围不会自动授予数据读写、菜单或应用管理权限;实际选人与提交仍核验范围、操作、成员有效期及账号状态。
@@ -0,0 +1,150 @@
1
+ # AI 应用运行自助操作
2
+
3
+ 开发者 AI 使用当前平台账号和工作区绑定直接完成事件、环境凭据和消息中心维护。
4
+ 用户已授权的诊断及修复无需再让用户点击管理页面。平台仍核验已有应用管理权限;
5
+ 首次账号登录沿用原认证流程,开发者身份不自动获得管理员权限。
6
+
7
+ ## 发现和执行 {#discovery}
8
+
9
+ ```bash
10
+ pnpm openxiangda context --json
11
+ pnpm openxiangda admin context --environment production --json
12
+ pnpm openxiangda admin operations --json
13
+ pnpm openxiangda docs application-operations
14
+ printf '%s' '{}' | pnpm openxiangda admin execute events.status --environment production --input - --json
15
+ ```
16
+
17
+ `admin operations` 读取本地目录,每项给出 `operation/inputSchema/effect/permission/recovery`。
18
+ `admin execute <operation> --environment <test|production> --input <file|-> --json` 直接执行。
19
+ 输入文件或标准输入只放目录中的 **input** 对象,最多32KiB,不放密码。
20
+ 执行必须明确环境;test映射平台preproduction。应用、站点和身份来自当前工作区及会话,
21
+ 拒绝任意路径、自报appCode、tenantId、actor和environmentKey。
22
+
23
+ MCP先调用 `application_operations`,再调用 `application_operation`:
24
+
25
+ ```json
26
+ {"operation":"events.status","environment":"production","input":{}}
27
+ ```
28
+
29
+ CLI与MCP共用输入Schema、服务和平台错误。成功结果在 `data.result`,环境在 `data.environment`。
30
+ 配置与恢复在已授权范围内直接执行;health访问外部健康接口并保存元信息。
31
+ 操作目录不证明远端接口已部署或当前用户有权,执行结果由平台决定。
32
+
33
+ ## 事件高水位与指定恢复 {#events}
34
+
35
+ 遇到 `EVENT_V2_BACKPRESSURE_HIGH_WATER` 先读 `events.status` 的admission:采样新鲜度、
36
+ 触发条件、当前值、阈值、恢复条件和消费者健康。再用 `events.subscriptions`、
37
+ `events.deliveries`、`events.journal`、`events.audit` 定位订阅、原事实及投递。
38
+ 分页默认20/最大100,按服务器cursor继续,不无限遍历历史。
39
+ 按原requestId或commandId核对事务,见[部署与诊断](delivery.md)。未观测到、超时或503
40
+ 不能证明未提交,不换键重建业务数据。
41
+
42
+ Native记录事件才能使用 `ordering:record`。订阅错误先修正应用声明并正常部署,
43
+ 再用 `events.replay` 恢复指定原deliveryId:
44
+
45
+ ```json
46
+ {
47
+ "deliveryId":"11111111-1111-4111-8111-111111111111",
48
+ "reason":"原订阅配置已修复并部署,恢复该投递",
49
+ "idempotencyKey":"event-recovery:original-operation-id",
50
+ "useCurrentSubscription":true
51
+ }
52
+ ```
53
+
54
+ 示例UUID换成实际查询结果。false使用原订阅规格,必须显式选择。
55
+ 平台核对类型、过滤和排序事实,只恢复该订阅投递并保留历史审计,不重建会员。
56
+ 未知结果先查投递/审计,保留同键同请求。低于阈值且取得新鲜采样后自动恢复写入;
57
+ 没有清队列或提高容量阈值的应用操作。验证单笔事务回执及列表后再继续授权导入。
58
+
59
+ ## 环境凭据复用 {#secrets}
60
+
61
+ 遇到 `APPLICATION_V2_SECRET_NOT_CONFIGURED`,分别在test及production执行 `secrets.list`。
62
+ 只返回名称、状态、revision、hasValue和有效期等元信息。来源用途已经验证且有效时,
63
+ 在目标production执行 `secrets.copy`,首次正式部署前也可操作,无需询问或读取明文:
64
+
65
+ ```json
66
+ {
67
+ "sourceEnvironment":"test",
68
+ "reason":"正式环境复用已验证的集成凭据",
69
+ "idempotencyKey":"secret-copy:original-operation-id",
70
+ "secrets":[{"name":"integration-client-secret","sourceRevision":3,"expectedRevision":0}]
71
+ }
72
+ ```
73
+
74
+ 名称和修订取自两侧实时列表;目标不存在用0,覆盖用目标实际revision。最多50个唯一名称,
75
+ 同应用跨环境原子复制,任一冲突拒绝整批。目标拥有独立加密版本,来源轮换不自动覆盖。
76
+ 未知结果保留原键和完整请求,先回读,必要时显式同键重试。确认的409先刷新两侧基准、
77
+ 核对后形成新操作,不能只递增revision强行覆盖。
78
+ 随后执行 `deploy --environment production --from <成功测试运行ID> --dry-run`。
79
+ 环境变量注入需新部署才读取目标版本;动态Secret服务沿用原读取规则。
80
+ 工具不会自动复制所有项;测试凭据是否适用于真实生产由已确认的集成用途决定。
81
+
82
+ ## 通知渠道与默认路由 {#channels}
83
+
84
+ 先读 `notifications.diagnostics/channels/rules`。缺少标准模板/规则时执行
85
+ `notifications.bootstrap` 再回读。已有健康渠道可直接选默认,不必重新配置或获取密码。
86
+ 新增/更新分别用 `notifications.configure-external-http` 和 `notifications.configure-dingtalk-oa`。
87
+ 完整参数见目录inputSchema;新渠道revision用0,更新用实时revision。配置只接受Secret引用,
88
+ 不接受token、明文clientSecret或收件身份。External HTTP支持HMAC、OAuth2客户端凭据和mTLS。
89
+ 正式启用沿用服务器 `confirmProduction:true`,表示该请求明确选择正式环境,无需管理页。
90
+
91
+ 以下仅演示结构,真实providerCode、baseUrl、identityRealm、功能和Secret引用来自已授权集成,
92
+ 不能直接把示例地址发送到生产:
93
+
94
+ ```json
95
+ {
96
+ "bindingCode":"organization.default","expectedRevision":0,"status":"active","confirmProduction":true,
97
+ "config":{
98
+ "schemaVersion":"openxiangda.notification.external-http-channel/v2",
99
+ "providerCode":"organization","baseUrl":"https://notify.example.com","identityRealm":"organization",
100
+ "auth":{"mode":"HMAC_SHA256","keyId":"primary","secretRef":"notification-hmac"},
101
+ "callback":{"enabled":false,"maxSkewSeconds":300,"actionTokenTtlMinutes":60},
102
+ "features":{"interactiveActions":false,"readReceipt":false,"todoSemantics":true},
103
+ "requestTimeoutMs":10000
104
+ }
105
+ }
106
+ ```
107
+
108
+ 配置后执行 `notifications.test`:
109
+
110
+ ```json
111
+ {"bindingCode":"organization.default","channel":"external-http"}
112
+ ```
113
+
114
+ 这是协议/凭据健康检查,不发实际收件通知。随后执行 `notifications.set-default`:
115
+
116
+ ```json
117
+ {"bindingCode":"organization.default","expectedRevision":2,"expectedBindingRevision":1}
118
+ ```
119
+
120
+ 两个revision分别来自workflow.standard规则和渠道。冲突先回读核对。默认只影响当前环境
121
+ 的标准工作流通知;自定义规则仍由原owner维护。正式隐式路由不选Fake,Fake成功只证明模拟。
122
+
123
+ ## 原通知失败与恢复 {#notification-recovery}
124
+
125
+ `notifications.messages` 按correlationId或recipientUserId查原消息,默认20/最大100;
126
+ `notifications.message` 传原messageId,读取recipients/deliveries/attempts/审计。
127
+ 平台受理、渠道发送、已读和待办关闭分别核对,不能把受理当成老师已经收到。
128
+
129
+ | 证据 | AI下一步 |
130
+ | --- | --- |
131
+ | 凭据缺失/禁用/过期 | secrets.list核对;用途合适时secrets.copy,随后test |
132
+ | 默认未设置或规则缺少 | rules/channels核对,必要时bootstrap,再set-default |
133
+ | 通道协议或联通失败 | 核对原集成接口、鉴权引用和功能,configure修正后test |
134
+ | RECIPIENT_CHANNEL_IDENTITY_NOT_FOUND | 核对目标平台用户及identityRealm对应外部账号;由现有身份目录/消息服务owner维护映射,不创建虚假老师身份 |
135
+ | 共享队列、数据库或网络故障 | 保存requestId、环境、消息/投递ID及状态证据,交给平台基础设施owner |
136
+ | 403权限不足 | 由应用管理员授予已有管理权限,不获取服务器root或密码替代 |
137
+ | 404新接口不存在 | 核对工具及平台版本,升级对应能力,不用临时SQL绕过 |
138
+
139
+ 修复后查 `notifications.dead-letters`,可按messageId限定。确认原任务仍有效且授权包括
140
+ 实际通知恢复,再执行 `notifications.replay`,只传指定deadLetterId。这可能真正发送通知。
141
+ 平台保留原消息、目标和审计;不重建通知或批量恢复历史待办。
142
+ 网络中断后查询原死信/消息;已恢复后的404不能当成未执行,不自动连续重放。
143
+ 已投递或被新修订取代的消息遵守服务器原有规则。
144
+
145
+ ## 升级与验收 {#verification}
146
+
147
+ 已有项目使用精确锁定版本;升级后运行 `skill install --workspace <应用目录> --force` 并
148
+ 重启MCP。应用AI不需要本地平台、数据库、Docker或学校服务器账号。
149
+ 先做只读诊断、无实际收件人的健康测试及CAS拒绝验证,再验收单笔回执/落库/实际投递。
150
+ 不要用批量导入或历史群发测试恢复。首次会话授权、权限委托和外部身份owner边界沿用原合同。
@@ -172,7 +172,7 @@ ADR 状态支持 `proposed`、`accepted`、`superseded`、`rejected`;按真实
172
172
 
173
173
  ### 按 ID 读取
174
174
 
175
- `context` / `workspace_context` 默认返回总纲、相关变更索引、阶段缺口和下一步。`spec context` / `appspec_context` 的 context v4 默认只返回总纲正文及有界索引,按稳定 ID 加载相关能力、变更、ADR 和 DES-* 设计正文及 documents 传递引用。product/experience/design/reviews 的单层 Markdown 也进入当前资料与原测试提交读取;非 Markdown 原型只引用不执行。当前资料最多 128 文件、2 MiB,正文上下文最多 256 KiB,超出时明确诊断。
175
+ `context` / `workspace_context` 默认返回总纲、相关变更索引、阶段缺口和下一步。`spec context` / `appspec_context` 的 context v4 默认只返回总纲正文及有界索引,按稳定 ID 加载相关能力、变更、ADR 和 DES-* 设计正文及 documents 传递引用。product/experience/design/reviews 的单层 Markdown 也进入当前资料与原测试提交读取;非 Markdown 原型只引用不执行。当前资料最多 512 文件、2 MiB,正文上下文最多 256 KiB,超出时明确诊断。较大的应用可保留各批次的产品、架构、变更与评审,不需要删除历史来容纳新模块;增加文件数量不放宽字节或上下文预算。
176
176
 
177
177
  历史与当前资料独立预算,每页 50 条,使用 `--history-offset 50` 或 MCP `historyOffset` 翻页。历史索引仅读取头部,稳定历史 ID 可直接读取页外正文;归档增加不会挤掉当前资料。索引读取上限为 256 个年份目录、10 万个记录名和 5 秒,达到预算给出提示,文件不会删除。`workspaceDigest` 对应当前资料与实时契约,分页不改变它;`selectionDigest` 对应选中的具体正文与契约。
178
178
 
@@ -7,7 +7,7 @@
7
7
  | `pnpm openxiangda auth` | 只读 | 只读核验指定平台授权,不登录或刷新会话 |
8
8
  | `pnpm openxiangda context` | 只读 | 只读查看工作区、版本与平台绑定 |
9
9
  | `pnpm openxiangda docs` | 只读 | 按主题和章节读取当前版本中文资料 |
10
- | `pnpm openxiangda admin` | 只读 | 只读查看应用管理能力和流程节点运行配置 |
10
+ | `pnpm openxiangda admin` | 远端变更 | 查看管理能力、自助操作契约,或按明确环境执行事件、密钥及通知操作 |
11
11
  | `pnpm openxiangda create` | 远端变更 | 创建、绑定并初始化应用 |
12
12
  | `pnpm openxiangda source` | 远端变更 | 配置应用源码仓库、查看状态或提交推送 |
13
13
  | `pnpm openxiangda dev` | 本地写入 | 连接平台测试数据启动本地 Web,按需启动 Nest |
@@ -334,6 +334,13 @@ ISO instant)与 `minuteStep`(1 到 60 且整除 60)。设置步长后只
334
334
 
335
335
  ### 子表提交行数
336
336
 
337
+ 单个子表 `maxRows` 最多500。同一模型下所有子表的声明上限合计默认最多500;
338
+ 历史快照加行程、多种材料等场景可在模型上显式声明 `ownedRowLimit: 550` 或
339
+ `ownedRowLimit: 1000`,最多1000。此限额随模型编译到Native资源,不由提交请求指定。
340
+ 扩展声明需要平台支持 `data.aggregate-owned-subtable-capacity`;旧平台在激活前拒绝。
341
+ 标准表单、任务补填、具名初建和级联删除共用该限额与原子事务。完整替换最多2016个
342
+ 操作,但一次事务/草稿/任务值仍限2MiB;超额或最后行版本冲突整笔失败,不自动裁剪或分批写。
343
+
337
344
  `subtable.minRows`为可选整数,默认0,不能超过`maxRows`(默认20);恰好一行可用
338
345
  `minRows: 1, maxRows: 1`。它约束父表提交的owned计划,独立子表写权限仍应关闭。
339
346
  普通新建即使省略表也检查;编辑只检查本次提交的表。任务草稿/保存允许不足,
@@ -68,10 +68,10 @@ MCP 服务随项目根包一起安装,AI 客户端的 stdio 连接仍需配置
68
68
  以下命令的版本占位符由随包资料替换为该根包的精确版本。网站源码阅读者应先确认要使用的发行版本。
69
69
 
70
70
  ```bash
71
- pnpm dlx openxiangda@2.59.1 skill install --force
72
- pnpm dlx openxiangda@2.59.1 auth status --base-url <平台地址> --json
73
- pnpm dlx openxiangda@2.59.1 login --cwd my-app --base-url https://platform.example.com
74
- pnpm dlx openxiangda@2.59.1 create my-app --base-url https://platform.example.com
71
+ pnpm dlx openxiangda@2.59.5 skill install --force
72
+ pnpm dlx openxiangda@2.59.5 auth status --base-url <平台地址> --json
73
+ pnpm dlx openxiangda@2.59.5 login --cwd my-app --base-url https://platform.example.com
74
+ pnpm dlx openxiangda@2.59.5 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
@@ -204,9 +204,9 @@ MCP 的 `docs_read` 可以读取本说明,当前没有独立的源码操作 MC
204
204
  无需本地工作区,使用本 Skill 随包精确版本或已安装的对应 CLI:
205
205
 
206
206
  ```bash
207
- pnpm dlx openxiangda@2.59.1 auth status --base-url <平台> --json
208
- pnpm dlx openxiangda@2.59.1 source resolve <仓库URL> --base-url <平台> --json
209
- pnpm dlx openxiangda@2.59.1 source clone <仓库URL> <新目录> --base-url <平台> --json
207
+ pnpm dlx openxiangda@2.59.5 auth status --base-url <平台> --json
208
+ pnpm dlx openxiangda@2.59.5 source resolve <仓库URL> --base-url <平台> --json
209
+ pnpm dlx openxiangda@2.59.5 source clone <仓库URL> <新目录> --base-url <平台> --json
210
210
  ```
211
211
 
212
212
  登录缺失或站点不匹配时,先按该平台执行 login。resolve 根据平台已经登记的绑定返回
@@ -246,6 +246,6 @@ permit 的 ManagedCommandGate 仍只用于 admitted 短确认,不用于 durabl
246
246
 
247
247
  ### 入口等待与身份加载连续性
248
248
 
249
- 平台启用入口排队时,SDK 的当前用户读取只对明确的入口繁忙响应接续等待:HTTP 429、`CONCURRENCY_BOOTSTRAP_BUSY`、可重试以及有效的等待状态与 `remainingMs`。第一次有效回执固定等待截止,后续回执只能缩短,最长不超过首次读取开始后的三十分钟。按平台排队提示每 2–15 秒查询,加最多 20% 抖动;不会因普通繁忙或网络错误无限延长。普通身份读取仍使用五分钟恢复预算;权限拒绝、版本变化、入口过期和满额终止恢复。单次读取、投影和网络失败的限制保持独立。
249
+ 平台启用入口排队时,SDK 的当前用户读取只对明确的入口繁忙响应接续等待:HTTP 429、`CONCURRENCY_BOOTSTRAP_BUSY`、可重试以及有效的等待状态与 `remainingMs`。第一次有效回执固定等待截止,后续回执只能缩短,最长不超过首次读取开始后的三十分钟。查询至少间隔 2 秒,尊重更长的服务端提示,再加最多 20% 抖动;例如 60 秒提示实际等待 60–72 秒,不提前压成 15 秒。若提示达到剩余等待预算,保留最后响应并停止,不能提前查询或刷新截止。不会因普通繁忙或网络错误无限延长。普通身份读取仍使用五分钟恢复预算;权限拒绝、版本变化、入口过期和满额终止恢复。单次读取、投影和网络失败的限制保持独立。
250
250
 
251
251
  该行为只读取平台身份,不替应用发起或重放报名,也不改变已经受理命令的原始请求键与结果截止。上线容量需在使用该 SDK 的实际应用制品上重新验证。