openxiangda-skill-kit 2.3.126 → 2.3.128

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openxiangda-skill-kit",
3
- "version": "2.3.126",
3
+ "version": "2.3.128",
4
4
  "description": "OpenXiangda 2.0 中文 AI 技能的校验、分发与安装。",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -17,7 +17,7 @@
17
17
  "README.md"
18
18
  ],
19
19
  "dependencies": {
20
- "openxiangda-devkit-core": "2.71.2"
20
+ "openxiangda-devkit-core": "2.71.3"
21
21
  },
22
22
  "devDependencies": {
23
23
  "tsx": "4.23.12",
@@ -165,15 +165,22 @@ Nest后端注入请求作用域的 `OpenXiangdaWorkflowService`,调用 `delega
165
165
 
166
166
  目录进入独立流程图地址,刷新及浏览器返回保留所查看流程/版本。共享组件按需加载 React Flow 与 ELK 正交布局:所有线段横平竖直、转角为直角;支持画布平移、滚轮缩放、适应全图、聚焦选中和缩略导航。分支标签可选中,详情保留完整条件、顺序和来源;窄屏采用同源节点列表,方向键/Home/End 定位节点。画布布局上限为 200 节点、1024 连线,不提供拖改、删除或连线编辑。
167
167
 
168
+ `WorkflowDiagram`可传入可选`variableChoices`,格式与`WorkflowDesigner`一致:以真实事实路径为键,值为`{ label, value }`选项数组。
169
+ 从当前生成模型目录取得选项,再按实际`subject.factProjection`映射,不在页面维护第二套业务字典。
170
+ 它只提供显示名称,不能新增变量、改写条件或授予权限;每个变量最多64个选项、字典最多128项,并按原事实类型校验。
171
+ 画布分支、提示和可访问列表使用同一中文说明,自定义分支名保留;未知值或类型不兼容时保留原始值,不猜测含义。
172
+ 宿主传给设计器的同一元数据也用于AI建议预览,但预览显示正确不证明模型连接或实际调用可用。
173
+ 只读图保留显式业务条件通向拒绝结果的分支,普通审批拒绝操作的专用终点仍由办理设置/历史说明。
174
+
168
175
  应用自定义管理页面可复用当前用户客户端和共享图组件:
169
176
 
170
177
  ```tsx
171
178
  import { useEffect, useState } from 'react';
172
- import { WorkflowDiagram } from 'openxiangda/react';
179
+ import { WorkflowDiagram, type WorkflowVariableChoices } from 'openxiangda/react';
173
180
  import { loadWorkflowDefinitionGraph, type WorkflowGraphReadResult } from 'openxiangda/core';
174
181
 
175
- export function ReadableWorkflow({ workflowCode, version }: {
176
- workflowCode: string; version: number;
182
+ export function ReadableWorkflow({ workflowCode, version, variableChoices }: {
183
+ workflowCode: string; version: number; variableChoices?: WorkflowVariableChoices;
177
184
  }) {
178
185
  const [result, setResult] = useState<WorkflowGraphReadResult>();
179
186
  const [selected, setSelected] = useState('');
@@ -188,7 +195,7 @@ export function ReadableWorkflow({ workflowCode, version }: {
188
195
  }, [workflowCode, version]);
189
196
  if (error) return <p role="alert">{error}</p>;
190
197
  if (!result) return <p>正在读取流程</p>;
191
- return <WorkflowDiagram graph={result.graph} selectedNodeId={selected} onSelectNode={setSelected} />;
198
+ return <WorkflowDiagram graph={result.graph} variableChoices={variableChoices} selectedNodeId={selected} onSelectNode={setSelected} />;
192
199
  }
193
200
  ```
194
201
 
@@ -254,3 +254,28 @@ const publicDetail = await client.getPublic(publicPage.items[0].data.id as strin
254
254
  8. 生产入口为 HTTPS,没有新增公开存储桶或匿名上传白名单。
255
255
 
256
256
  开发与交付时按[检查与验收](testing.md)保留跨浏览器正反证据。
257
+
258
+
259
+ ## 匿名具名查询的有界批量读取
260
+
261
+ 需要多个独立公开查询时,使用官方 `createAnonymousPublicClient({ routeCode }).queryBatch(operations)`。先按正常公开入口完成 `bootstrap()`,使用同一浏览器匿名凭证;每项显式给出 `key`、`policyCode`、`queryCode`,可带原查询的 `parameters`、`limit`、`cursor`。批次固定当前应用、环境和一个已声明route,不接受浏览器传入SQL、字段、排序、角色或授权上下文。
262
+
263
+ ```ts
264
+ const client = createAnonymousPublicClient({ routeCode: 'public-home', policyCode: 'catalogue' });
265
+ await client.bootstrap();
266
+ const batch = await client.queryBatch([
267
+ { key: 'summary', policyCode: 'catalogue', queryCode: 'summary', limit: 1 },
268
+ { key: 'cards', policyCode: 'catalogue', queryCode: 'cards', limit: 9 },
269
+ ]);
270
+ for (const item of batch.items) {
271
+ if (!item.ok) throw new Error(`${item.error.code} (${item.error.status})`);
272
+ if (item.result.kind === 'records') {
273
+ // 记录行使用 record.data;聚合行是直接含指标/维度的对象。
274
+ console.log(item.result.items.map(record => record.data));
275
+ }
276
+ }
277
+ ```
278
+
279
+ 服务端每批最多10项、合计最多500条请求上限、输入最多64KiB,最多3项并发;每项继续执行原不可变策略、固定条件、字段白名单、限流和真实RLS。批量结果按key/策略/查询精确对应,单项403/404/429/503保留为error;不能把整批HTTP成功当作每项成功,也不能把拒绝变成空表/零。SDK对缺失、重复、错位、超量及错误形状的回执明确拒绝,不自动改走普通Data API或逐项重放。
280
+
281
+ 此能力需要正式平台提供 `POST .../anonymous-public/public/query-batch`;旧平台的404应明确报告并先升级平台。批次是独立只读查询组合,不是同一数据库快照,不承载写入或通知。原单查询API继续可用,`AnonymousPublicQueryResult`、`AnonymousPublicQueryBatchOperation`、`AnonymousPublicQueryBatchResult`等类型从`openxiangda/react`导出。