flycode-mcp 1.4.0 → 1.5.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.
- package/README.md +23 -4
- package/dist/clients/entityClient.js.map +1 -1
- package/dist/clients/formClient.js.map +1 -1
- package/dist/clients/logicClient.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/service/logic.js +4 -1
- package/dist/service/logic.js.map +1 -1
- package/dist/tools/common.js +61 -0
- package/dist/tools/common.js.map +1 -0
- package/dist/tools/entity/read.js +30 -74
- package/dist/tools/entity/read.js.map +1 -1
- package/dist/tools/entity/schemas.js +65 -0
- package/dist/tools/entity/schemas.js.map +1 -0
- package/dist/tools/form/read.js +4 -2
- package/dist/tools/form/read.js.map +1 -1
- package/dist/tools/logic/read.js +18 -18
- package/dist/tools/logic/read.js.map +1 -1
- package/dist/tools/logic/schemas.js +77 -61
- package/dist/tools/logic/schemas.js.map +1 -1
- package/dist/utils/snowflake.js +119 -0
- package/dist/utils/snowflake.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ A [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server for the
|
|
|
11
11
|
- 基于官方 `@modelcontextprotocol/sdk` 实现,使用标准 `stdio` 传输协议。
|
|
12
12
|
- 启动即完成 APaaS IDE 平台鉴权链路:账号登录 → 获取租户信息 → 获取 IDE Token。
|
|
13
13
|
- 内置统一请求层 `request`,自动按请求类型(`center` / `tenant`)切换中心服务地址与当前租户连接地址,并自动注入鉴权 Token。
|
|
14
|
-
- 当前提供工具:业务逻辑类 `page_model_logic_list`(分页查询业务逻辑列表)、`get_model_logic`(查询单个业务逻辑详情)、`save_model_logic`(保存 / 更新业务逻辑完整 JSON)、`simple_save_flycode_model_logic`(轻量保存 flycode 业务逻辑,只传 `modelLogicCode` / `flycode` / 可选 `input` / `output`);实体类 `page_entity_list`(分页查询实体列表)、`get_entity`(查询实体详情);表单 / 页面类 `page_form_list`(分页查询表单 / 页面列表)、`get_form`(查询表单 /
|
|
14
|
+
- 当前提供工具:业务逻辑类 `page_model_logic_list`(分页查询业务逻辑列表)、`get_model_logic`(查询单个业务逻辑详情)、`save_model_logic`(保存 / 更新业务逻辑完整 JSON)、`simple_save_flycode_model_logic`(轻量保存 flycode 业务逻辑,只传 `modelLogicCode` / `flycode` / 可选 `input` / `output`);实体类 `page_entity_list`(分页查询实体列表)、`get_entity`(查询实体详情);表单 / 页面类 `page_form_list`(分页查询表单 / 页面列表)、`get_form`(查询表单 / 页面详情);通用类 `generate_unique_code`(生成唯一编码,用于新建实体 / 领域 / 表单时生成 JSON 中的 `code` 字段)。
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -240,6 +240,22 @@ username=<账号>&password=<密码>&tenantCode=<租户号>&envName=<环境名>
|
|
|
240
240
|
|
|
241
241
|
> 注:工具的 `description` 中附有「字段速查」,列出了各顶层对象的关键字段与编码枚举含义(如 `pageinfo.type` 页面类型、`marktype` 创建标记、`clientcategorycode` 用户端等),便于理解返回 JSON。详情类型的字段定义见 `src/clients/formClient.ts`(`FormResult` / `FormPageInfo` / `FormViewNode` / `FormControl` 等接口)。
|
|
242
242
|
|
|
243
|
+
### `generate_unique_code` — 生成唯一编码
|
|
244
|
+
|
|
245
|
+
通过雪花算法(`src/utils/snowflake.ts`)生成一个全局唯一 ID(code)。在新建实体、领域、表单等内容时,其 JSON 字段中通常需要携带一个唯一 `code`(如实体的 `objectcode`、表单的 `code` 等),可调用本工具获取并填入。底层直接调用 snowflake 实例的 `nextId()`。
|
|
246
|
+
|
|
247
|
+
**输入参数:**
|
|
248
|
+
|
|
249
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
250
|
+
| ------- | ------ | ---- | ---------------------------------------------------------------------------- |
|
|
251
|
+
| `prefix`| string | 否 | 可选前缀,拼接到生成的唯一 ID 之前(例如实体编码前缀);不传则只返回纯数字 ID 字符串 |
|
|
252
|
+
|
|
253
|
+
**返回:** 一个 JSON 对象 `{ "code": "..." }`:
|
|
254
|
+
|
|
255
|
+
- `code`:生成的唯一编码。以**字符串**形式返回,避免雪花 ID 超过 `Number.MAX_SAFE_INTEGER` 时的大整数精度丢失。
|
|
256
|
+
|
|
257
|
+
> 注:本工具仅在本地生成 ID,**不修改任何服务端数据**,且每次调用返回不同的 ID(非幂等)。如需带固定前缀的编码(如 `kx_877483974950260736`),传入 `prefix` 即可。
|
|
258
|
+
|
|
243
259
|
---
|
|
244
260
|
|
|
245
261
|
## 项目结构
|
|
@@ -261,18 +277,21 @@ flycode-mcp/
|
|
|
261
277
|
│ │ ├── token.ts # 鉴权 Token 存储器
|
|
262
278
|
│ │ └── tenant.ts # 当前租户及连接信息存储器
|
|
263
279
|
│ ├── tools/ # 按能力分类的 MCP 工具定义
|
|
280
|
+
│ │ ├── common.ts # 通用工具(generate_unique_code:雪花算法生成唯一编码)
|
|
264
281
|
│ │ ├── logic/
|
|
265
282
|
│ │ │ ├── read.ts # 只读类工具(page_model_logic_list / get_model_logic)
|
|
266
283
|
│ │ │ ├── write.ts # 写入类工具(save_model_logic / simple_save_model_logic)
|
|
267
284
|
│ │ │ └── schemas.ts # 业务逻辑共享 zod schema(LogicResult / 参数 / operations / bindjson)
|
|
268
|
-
│ │
|
|
269
|
-
│ │
|
|
285
|
+
│ │ ├── entity/
|
|
286
|
+
│ │ │ ├── read.ts # 只读类工具(page_entity_list / get_entity)
|
|
287
|
+
│ │ │ └── schemas.ts # 实体共享 zod schema(EntityResult / EntityProperty,宽松透传结构)
|
|
270
288
|
│ │ └── form/
|
|
271
289
|
│ │ └── read.ts # 只读类工具(page_form_list / get_form)
|
|
272
290
|
│ └── utils/
|
|
273
291
|
│ ├── config.ts # 从命令行参数解析连接配置(BASE_URL / 账号等)
|
|
274
292
|
│ ├── request.ts # 统一 axios 请求层(中心/租户地址切换 + Token 注入)
|
|
275
293
|
│ ├── mcp-types.ts # MCP 工具统一定义类型 ToolDef
|
|
294
|
+
│ ├── snowflake.ts # 雪花算法 ID 生成器(generate_unique_code 依赖)
|
|
276
295
|
│ └── date.ts # 日期格式化工具(saverecord 提交时间用)
|
|
277
296
|
├── dist/ # 编译产物(由 tsc 生成,已忽略)
|
|
278
297
|
├── package.json
|
|
@@ -288,7 +307,7 @@ flycode-mcp/
|
|
|
288
307
|
2. **登录**:`service/auth.ts` 中的 `authenticate()` 调用 `/api/multiplat/auth/login` 获取 Token,存入内存。
|
|
289
308
|
3. **定位租户与环境**:`authenticate()` 调用 `/api/multiplat/auth/getTenantInfo`,依据 `tenantCode + envName` 匹配出目标租户,保存其连接信息(`conn.config`)到内存。
|
|
290
309
|
4. **获取 IDE Token**:`authenticate()` 调用 `/api/multiplat/auth/getIdeToken` 换取 IDE 专用 Token 并覆盖内存中的 Token。
|
|
291
|
-
5. **注册并启动**:创建 `McpServer`,注册 `page_model_logic_list`、`get_model_logic`、`save_model_logic`、`simple_save_flycode_model_logic`、`page_entity_list`、`get_entity`、`page_form_list`、`get_form` 等工具,通过 `StdioServerTransport` 监听请求。
|
|
310
|
+
5. **注册并启动**:创建 `McpServer`,注册 `page_model_logic_list`、`get_model_logic`、`save_model_logic`、`simple_save_flycode_model_logic`、`page_entity_list`、`get_entity`、`page_form_list`、`get_form`、`generate_unique_code` 等工具,通过 `StdioServerTransport` 监听请求。
|
|
292
311
|
6. **业务请求**:工具被调用时,`logicClient` / `entityClient` / `formClient` 通过 `request({ type: "tenant" })` 自动切换到当前租户连接地址,并携带已注入的 Token 发起查询。
|
|
293
312
|
|
|
294
313
|
---
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entityClient.js","sourceRoot":"","sources":["../../src/clients/entityClient.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"entityClient.js","sourceRoot":"","sources":["../../src/clients/entityClient.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAA;AA+FzC;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAsB;IACnD,OAAO,OAAO,CAAC;QACb,GAAG,EAAE,uBAAuB;QAC5B,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACJ,CAAC;AAuID;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAkB;IAC1C,OAAO,OAAO,CAAC;QACb,GAAG,EAAE,2BAA2B;QAChC,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formClient.js","sourceRoot":"","sources":["../../src/clients/formClient.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"formClient.js","sourceRoot":"","sources":["../../src/clients/formClient.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAA;AAmHzC;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAoB;IAC/C,OAAO,OAAO,CAAC;QACb,GAAG,EAAE,2BAA2B;QAChC,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACJ,CAAC;AAkzBD;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,IAAgB;IACtC,OAAO,OAAO,CAAC;QACb,GAAG,EAAE,0BAA0B;QAC/B,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logicClient.js","sourceRoot":"","sources":["../../src/clients/logicClient.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"logicClient.js","sourceRoot":"","sources":["../../src/clients/logicClient.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,qBAAqB,CAAA;AAkHzC;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAqB;IACtD,OAAO,OAAO,CAAoB;QAChC,GAAG,EAAE,sCAAsC;QAC3C,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACJ,CAAC;AAkUD;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAAiB;IAC7C,OAAO,OAAO,CAAC;QACb,GAAG,EAAE,iCAAiC;QACtC,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAiB;IAC9C,OAAO,OAAO,CAAC;QACb,GAAG,EAAE,kCAAkC;QACvC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE;YACJ,GAAG,IAAI;YACP,WAAW;YACX,SAAS,EAAE,KAAK;SACjB;QACD,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { readTools as logicReadTools } from './tools/logic/read.js';
|
|
|
6
6
|
import { writeTools as logicWriteTools } from './tools/logic/write.js';
|
|
7
7
|
import { readTools as entityReadTools } from './tools/entity/read.js';
|
|
8
8
|
import { readTools as formReadTools } from './tools/form/read.js';
|
|
9
|
+
import { commonTools } from './tools/common.js';
|
|
9
10
|
// 鉴权初始化(登录 -> 获取租户信息 -> 获取 IDE Token)
|
|
10
11
|
await authenticate();
|
|
11
12
|
// 创建 MCP 服务器
|
|
@@ -19,6 +20,7 @@ const allTools = [
|
|
|
19
20
|
...logicWriteTools,
|
|
20
21
|
...entityReadTools,
|
|
21
22
|
...formReadTools,
|
|
23
|
+
...commonTools,
|
|
22
24
|
];
|
|
23
25
|
for (const t of allTools) {
|
|
24
26
|
server.registerTool(t.name, t.config, t.handler);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,sCAAsC;AACtC,MAAM,YAAY,EAAE,CAAA;AAEpB,aAAa;AACb,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAA;AAEF,uCAAuC;AACvC,MAAM,QAAQ,GAAc;IAC1B,GAAG,cAAc;IACjB,GAAG,eAAe;IAClB,GAAG,eAAe;IAClB,GAAG,aAAa;IAChB,GAAG,WAAW;CACf,CAAA;AAED,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;IACzB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AAClD,CAAC;AAED,OAAO;AACP,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAA;IAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC/B,kBAAkB;IAClB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;AACjD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAA"}
|
package/dist/service/logic.js
CHANGED
|
@@ -56,7 +56,10 @@ export async function simpleSaveFlyCodeModelLogic(modelLogicCode, flycode, input
|
|
|
56
56
|
}
|
|
57
57
|
// 2. 更新其中的 flycode 和 input 和 output
|
|
58
58
|
// flycode 位于 operations[].templateparams.flycode,通常数组内只有单元素,更新首元素即可
|
|
59
|
-
|
|
59
|
+
// templateparams 在部分结构可能缺省/为空,做兜底:缺省时初始化一个对象再写入 flycode,
|
|
60
|
+
// 已存在时保留其 sourcemap / tempcompiledflycode 等其余字段
|
|
61
|
+
const op = logic.operations[0];
|
|
62
|
+
op.templateparams = { ...(op.templateparams ?? {}), flycode };
|
|
60
63
|
if (input !== undefined)
|
|
61
64
|
logic.input = input;
|
|
62
65
|
if (output !== undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logic.js","sourceRoot":"","sources":["../../src/service/logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,aAAa,EAAE,cAAc,IAAI,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC5H,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAc7C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAkB,EAAE,aAA4B;IACnF,qCAAqC;IACrC,IAAI,aAAa,CAAC,UAAU,KAAK,YAAY;QAAE,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAA;IAEjH,oBAAoB;IACpB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;IAE7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAA;QAC7C,OAAO,MAAM,CAAC,SAAS,CAAA;IACzB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAAsC,CAAA;QAClD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAA;QACpC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,cAAsB,EAC7B,OAAe,EACf,KAAyB,EACzB,MAA0B,EAC1B,aAAa,GAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;IACzI,+CAA+C;IAC/C,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAA;IACnE,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAA;IAE3B,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjE,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,KAAK,EAAE,wEAAwE;YAC/E,IAAI,EAAE,sEAAsE;SAC7E,CAAC,CAAA;IACJ,CAAC;IAED,oCAAoC;IACpC,oEAAoE;IACpE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"logic.js","sourceRoot":"","sources":["../../src/service/logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,aAAa,EAAE,cAAc,IAAI,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC5H,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAc7C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAkB,EAAE,aAA4B;IACnF,qCAAqC;IACrC,IAAI,aAAa,CAAC,UAAU,KAAK,YAAY;QAAE,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAA;IAEjH,oBAAoB;IACpB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;IAE7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAA;QAC7C,OAAO,MAAM,CAAC,SAAS,CAAA;IACzB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAAsC,CAAA;QAClD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAA;QACpC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,cAAsB,EAC7B,OAAe,EACf,KAAyB,EACzB,MAA0B,EAC1B,aAAa,GAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;IACzI,+CAA+C;IAC/C,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAA;IACnE,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAA;IAE3B,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjE,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,KAAK,EAAE,wEAAwE;YAC/E,IAAI,EAAE,sEAAsE;SAC7E,CAAC,CAAA;IACJ,CAAC;IAED,oCAAoC;IACpC,oEAAoE;IACpE,yDAAyD;IACzD,gDAAgD;IAChD,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IAC9B,EAAE,CAAC,cAAc,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,cAAc,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAA;IAC7D,IAAI,KAAK,KAAK,SAAS;QAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAA;IAC5C,IAAI,MAAM,KAAK,SAAS;QAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;IAE/C,qEAAqE;IACrE,OAAO,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;AAC7C,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { nextId } from '../utils/snowflake.js';
|
|
3
|
+
/**
|
|
4
|
+
* 通用工具:生成唯一编码(code)。
|
|
5
|
+
*
|
|
6
|
+
* 在新建实体、领域、表单等内容时,其 JSON 字段中通常需要携带一个唯一
|
|
7
|
+
* code(如实体的 objectcode、领域的 objecttypecode、表单的 formcode 等)。
|
|
8
|
+
* 本工具借助 @utils/snowflake 的雪花算法生成全局唯一 ID 作为该 code,
|
|
9
|
+
* 以字符串形式返回以避免超过 Number.MAX_SAFE_INTEGER 时的大整数精度丢失。
|
|
10
|
+
*/
|
|
11
|
+
export const commonTools = [
|
|
12
|
+
{
|
|
13
|
+
name: 'generate_unique_code',
|
|
14
|
+
config: {
|
|
15
|
+
title: '生成唯一编码',
|
|
16
|
+
description: '通过雪花算法(snowflake)生成一个全局唯一 ID(code)。在新建实体、领域、表单等内容时,其 JSON 字段中通常需要携带一个唯一 code,可调用本工具获取。',
|
|
17
|
+
inputSchema: {
|
|
18
|
+
prefix: z.string().optional().describe('可选前缀,拼接到生成的唯一 ID 之前(例如实体编码前缀);不传则只返回纯数字 ID 字符串')
|
|
19
|
+
},
|
|
20
|
+
outputSchema: {
|
|
21
|
+
code: z.string().describe('生成的唯一编码(code)。字符串形式以避免大整数精度丢失')
|
|
22
|
+
},
|
|
23
|
+
annotations: {
|
|
24
|
+
readOnlyHint: true, // 仅本地生成 ID,不修改任何服务端数据
|
|
25
|
+
destructiveHint: false, // 无破坏性
|
|
26
|
+
idempotentHint: false // 每次调用返回不同 ID
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
handler: async (args) => {
|
|
30
|
+
const { prefix = '' } = args;
|
|
31
|
+
try {
|
|
32
|
+
const id = nextId().toString();
|
|
33
|
+
const code = prefix ? `${prefix}${id}` : id;
|
|
34
|
+
const result = { code };
|
|
35
|
+
return {
|
|
36
|
+
content: [{
|
|
37
|
+
type: 'text',
|
|
38
|
+
text: JSON.stringify(result)
|
|
39
|
+
}],
|
|
40
|
+
// outputSchema 已在工具上声明,SDK 1.30 要求调用结果必须携带
|
|
41
|
+
// structuredContent 与之匹配,否则会抛 -32602;这里同时返回
|
|
42
|
+
// 文本(给人/模型阅读)和结构化内容(供 schema 校验)。
|
|
43
|
+
structuredContent: result
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
// 雪花算法在时钟回拨过大等异常情况下会抛错,原样返回错误信息。
|
|
48
|
+
const err = e;
|
|
49
|
+
const body = { error: err.message ?? String(e) };
|
|
50
|
+
return {
|
|
51
|
+
isError: true,
|
|
52
|
+
content: [{
|
|
53
|
+
type: 'text',
|
|
54
|
+
text: JSON.stringify(body)
|
|
55
|
+
}]
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
];
|
|
61
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/tools/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAE9C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAc;IACpC;QACE,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE;YACN,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,wFAAwF;YACrG,WAAW,EAAE;gBACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;aACzF;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;aAC3D;YACD,WAAW,EAAE;gBACX,YAAY,EAAE,IAAI,EAAO,sBAAsB;gBAC/C,eAAe,EAAE,KAAK,EAAG,OAAO;gBAChC,cAAc,EAAE,KAAK,CAAI,cAAc;aACxC;SACF;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,IAAI,CAAA;YAC5B,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAA;gBAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC3C,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,CAAA;gBACvB,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;yBAC7B,CAAC;oBACF,2CAA2C;oBAC3C,4CAA4C;oBAC5C,kCAAkC;oBAClC,iBAAiB,EAAE,MAA4C;iBAChE,CAAA;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,iCAAiC;gBACjC,MAAM,GAAG,GAAG,CAAyB,CAAA;gBACrC,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;gBAChD,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;yBAC3B,CAAC;iBACH,CAAA;YACH,CAAC;QACH,CAAC;KACF;CACF,CAAA"}
|
|
@@ -1,31 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { getEntity, pageEntityList } from '../../clients/entityClient.js';
|
|
3
|
-
|
|
4
|
-
* 实体的“属性”结构(EntityProperty):
|
|
5
|
-
* 实体详情中 properties 数组里每个对象携带的字段级属性。
|
|
6
|
-
* 字段类型严格依据 entityClient.ts 中的 EntityProperty 接口声明构建:
|
|
7
|
-
* string -> z.string(),纯数字 -> z.coerce.number(),string|number -> z.union([z.string(), z.number()])。
|
|
8
|
-
*/
|
|
9
|
-
const entityPropertySchema = z.array(z.object({
|
|
10
|
-
columnname: z.string().describe('属性列的列名,即数据库表的字段的名字'),
|
|
11
|
-
idxtype: z.union([z.string(), z.number()]).describe('索引方式:1-无;2-主键索引'),
|
|
12
|
-
ismaster: z.string().optional().describe('保留字段,暂无特殊含义'),
|
|
13
|
-
marktype: z.string().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
14
|
-
propertycategorycode: z.string().describe('属性类别编码'),
|
|
15
|
-
propertycode: z.string().describe('属性编码,唯一标识一个属性'),
|
|
16
|
-
propertydescr: z.string().describe('属性描述'),
|
|
17
|
-
propertyname: z.string().describe('属性中文名,便于阅读'),
|
|
18
|
-
propertytypecode: z.string().describe('属性类型编码,编码和值的对应关系:1-主键(int8);2-名称(200);3-文本(200);4-长文本;5-整数(int4);6-长整数(int8);10-数字(numeric);7-日期时间(ts);30-时间范围;29-年月日(date);18-状态(int4);16-图片;26-附件;17-定位;19-选项集;200000000000-关联对象;100000000000-业务对象;10000000000-字典对象;300000000000-复杂关联对象;1000000000-本对象;8-创建人(int8);9-修改人(int8);11-创建时间(ts);12-修改时间(ts);31-拼音;100-是否默认;13-手机号;15-固定电话;14-邮箱;27-邮编;20-排序(int4)'),
|
|
19
|
-
publishstatus: z.union([z.string(), z.number()]).describe('属性的发布状态,1-已发布;2-未发布'),
|
|
20
|
-
relationobjectcode: z.string().optional().describe('关联的实体编码,此属性关联了其他实体,则说明 SQL 查询的时候可以用此字段连其他实体对应的表的主键'),
|
|
21
|
-
relationpropertycode: z.string().optional().describe('保留字段,一般为空字符串'),
|
|
22
|
-
status: z.union([z.string(), z.number()]).describe('属性的状态,1-启用;2-停用'),
|
|
23
|
-
seq: z.coerce.number().optional().describe('属性序号'),
|
|
24
|
-
columnnameError: z.boolean().optional().describe('视图实体属性字段,标记列名是否错误'),
|
|
25
|
-
candelete: z.boolean().optional().describe('视图实体属性字段,标记是否可删除'),
|
|
26
|
-
parentpropertycode: z.string().optional().describe('数据字典属性字段,父属性编码'),
|
|
27
|
-
defaultvalue: z.string().optional().describe('数据字典属性字段,默认值')
|
|
28
|
-
}));
|
|
3
|
+
import { entityResultSchema } from './schemas.js';
|
|
29
4
|
/** 只读类工具:查询、列表、读取等不会修改数据的操作。 */
|
|
30
5
|
export const readTools = [
|
|
31
6
|
{
|
|
@@ -44,31 +19,31 @@ export const readTools = [
|
|
|
44
19
|
},
|
|
45
20
|
outputSchema: {
|
|
46
21
|
data: z.array(z.object({
|
|
47
|
-
confsource: z.coerce.number().describe('配置来源,含义:1-IDE配置;2-用户级配置'),
|
|
48
|
-
createaccountcode: z.coerce.number().describe('创建人的账号 code'),
|
|
49
|
-
createaccountname: z.string().describe('创建人姓名'),
|
|
50
|
-
createtime: z.string().describe('创建时间'),
|
|
51
|
-
datapattern: z.coerce.number().describe('数据模式,含义:1-原生实体;2-衍生实体;3-视图;4-超级表单实体。原生实体:需要在数据库真正创建表;衍生、视图:不需要在数据库真正创建表;超级表单实体:需要在数据库真正创建表,但是是平台根据用户的配置自动创建的,表名无含义'),
|
|
52
|
-
directorytypecode: z.string().describe('实体所属目录分类的编码'),
|
|
53
|
-
directorytypename: z.string().describe('实体所属目录分类的名称'),
|
|
54
|
-
hasoffline: z.string().describe('实体是否有离线设置,1-有;0-无'),
|
|
55
|
-
marktype: z.coerce.number().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
56
|
-
metamodelcode: z.string().describe('领域模型编码,和 objectcode 共同构成复合主键'),
|
|
57
|
-
objectcatgory: z.coerce.number().describe('对象类别,表示是否为权限设置对象,1-是;2-否'),
|
|
58
|
-
objectcode: z.string().describe('实体的编码,和 metamodelcode 共同构成复合主键'),
|
|
59
|
-
objectdescr: z.
|
|
60
|
-
objectmark: z.string().describe('实体标记,一般和数据库表名同名,字典类型的实体有自己的标记'),
|
|
61
|
-
objectname: z.string().describe('实体的中文名,便于阅读'),
|
|
62
|
-
objecttemplatecode: z.
|
|
63
|
-
objecttypecode: z.string().describe('实体分类,整数,含义:1-基本实体;2-树形实体;3-数据字典;4-关联实体'),
|
|
64
|
-
parentobjectcode: z.
|
|
65
|
-
publishstatus: z.coerce.number().describe('实体的发布状态,1-已发布;2-未发布'),
|
|
66
|
-
status: z.coerce.number().describe('实体的状态,1-启用;2-停用'),
|
|
67
|
-
tablename: z.string().describe('数据库表名'),
|
|
68
|
-
updateaccountcode: z.coerce.number().describe('最近更新人的账号编码'),
|
|
69
|
-
updateaccountname: z.string().describe('最近更新人的姓名'),
|
|
70
|
-
updatetime: z.string().describe('最近更新时间')
|
|
71
|
-
})).describe('这一页的业务数据'),
|
|
22
|
+
confsource: z.coerce.number().optional().nullable().describe('配置来源,含义:1-IDE配置;2-用户级配置'),
|
|
23
|
+
createaccountcode: z.coerce.number().optional().nullable().describe('创建人的账号 code'),
|
|
24
|
+
createaccountname: z.string().optional().nullable().describe('创建人姓名'),
|
|
25
|
+
createtime: z.string().optional().nullable().describe('创建时间'),
|
|
26
|
+
datapattern: z.coerce.number().optional().nullable().describe('数据模式,含义:1-原生实体;2-衍生实体;3-视图;4-超级表单实体。原生实体:需要在数据库真正创建表;衍生、视图:不需要在数据库真正创建表;超级表单实体:需要在数据库真正创建表,但是是平台根据用户的配置自动创建的,表名无含义'),
|
|
27
|
+
directorytypecode: z.string().optional().nullable().describe('实体所属目录分类的编码'),
|
|
28
|
+
directorytypename: z.string().optional().nullable().describe('实体所属目录分类的名称'),
|
|
29
|
+
hasoffline: z.string().optional().nullable().describe('实体是否有离线设置,1-有;0-无'),
|
|
30
|
+
marktype: z.coerce.number().optional().nullable().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
31
|
+
metamodelcode: z.string().optional().nullable().describe('领域模型编码,和 objectcode 共同构成复合主键'),
|
|
32
|
+
objectcatgory: z.coerce.number().optional().nullable().describe('对象类别,表示是否为权限设置对象,1-是;2-否'),
|
|
33
|
+
objectcode: z.string().optional().nullable().describe('实体的编码,和 metamodelcode 共同构成复合主键'),
|
|
34
|
+
objectdescr: z.string().optional().nullable().describe('实体的描述'),
|
|
35
|
+
objectmark: z.string().optional().nullable().describe('实体标记,一般和数据库表名同名,字典类型的实体有自己的标记'),
|
|
36
|
+
objectname: z.string().optional().nullable().describe('实体的中文名,便于阅读'),
|
|
37
|
+
objecttemplatecode: z.string().optional().nullable().describe('实体的模板编码'),
|
|
38
|
+
objecttypecode: z.string().optional().nullable().describe('实体分类,整数,含义:1-基本实体;2-树形实体;3-数据字典;4-关联实体'),
|
|
39
|
+
parentobjectcode: z.string().optional().nullable().describe('父实体的 objectcode'),
|
|
40
|
+
publishstatus: z.coerce.number().optional().nullable().describe('实体的发布状态,1-已发布;2-未发布'),
|
|
41
|
+
status: z.coerce.number().optional().nullable().describe('实体的状态,1-启用;2-停用'),
|
|
42
|
+
tablename: z.string().optional().nullable().describe('数据库表名'),
|
|
43
|
+
updateaccountcode: z.coerce.number().optional().nullable().describe('最近更新人的账号编码'),
|
|
44
|
+
updateaccountname: z.string().optional().nullable().describe('最近更新人的姓名'),
|
|
45
|
+
updatetime: z.string().optional().nullable().describe('最近更新时间')
|
|
46
|
+
}).catchall(z.unknown())).describe('这一页的业务数据'),
|
|
72
47
|
pageCount: z.coerce.number().describe('总页数'),
|
|
73
48
|
pageIndex: z.coerce.number().describe('第几页'),
|
|
74
49
|
pageSize: z.coerce.number().describe('每页记录数'),
|
|
@@ -131,29 +106,10 @@ export const readTools = [
|
|
|
131
106
|
inputSchema: {
|
|
132
107
|
objectcode: z.string().describe('要查详情的实体的编码')
|
|
133
108
|
},
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
directorytypecode: z.string().describe('实体所属目录分类的编码'),
|
|
139
|
-
marktype: z.string().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
140
|
-
message: z.string().optional().describe('保存时编写的提交信息,作用类似 git 提交信息。数据字典/超级表单实体不返回'),
|
|
141
|
-
objectcatgory: z.union([z.string(), z.number()]).describe('对象类别,表示是否为权限设置对象,1-是;2-否。数据字典/超级表单以数字返回'),
|
|
142
|
-
objectcode: z.string().describe('实体的编码,和 metamodelcode 共同构成复合主键'),
|
|
143
|
-
objectdescr: z.string().describe('实体的描述'),
|
|
144
|
-
objectmark: z.string().describe('实体标记,一般和数据库表名同名,字典类型的实体有自己的标记'),
|
|
145
|
-
objectname: z.string().describe('实体的中文名,便于阅读'),
|
|
146
|
-
objecttemplatecode: z.union([z.string(), z.null()]).optional().describe('实体的模板编码。仅数据字典实体返回'),
|
|
147
|
-
objecttypecode: z.union([z.string(), z.number()]).describe('实体分类,整数,含义:1-基本实体;2-树形实体;3-数据字典;4-关联实体。数据字典以数字返回'),
|
|
148
|
-
parentobjectcode: z.string().optional().describe('父实体的 objectcode。超级表单实体不返回'),
|
|
149
|
-
properties: entityPropertySchema.describe('实体的属性数组:每个属性定义实体的一个字段(列名、类型、关联实体、索引方式等)'),
|
|
150
|
-
publishstatus: z.coerce.number().describe('实体的发布状态,1-已发布;2-未发布'),
|
|
151
|
-
script: z.string().optional().describe('保留字段/定义脚本,原生/视图/关联实体返回,一般为空字符串'),
|
|
152
|
-
status: z.union([z.string(), z.number()]).optional().describe('实体的状态,1-启用;2-停用。数据字典/视图/超级表单以数字返回;详情接口对该字段返回不稳定(部分调用不返回),故声明为可选'),
|
|
153
|
-
storagelevel: z.coerce.number().optional().describe('存储等级。视图/数据字典/超级表单实体不返回'),
|
|
154
|
-
seq: z.coerce.number().optional().describe('实体序号。仅视图/超级表单实体返回'),
|
|
155
|
-
tablename: z.string().describe('数据库表名')
|
|
156
|
-
},
|
|
109
|
+
// 使用宽松结构(z.looseObject):除复合主键 objectcode 必填外,
|
|
110
|
+
// 其余字段可选且可空,且顶层 passthrough,保证 EntityResult 索引签名收集的服务端
|
|
111
|
+
// 额外字段也能原样透传(不被 SDK 的 outputSchema 校验剥离)。
|
|
112
|
+
outputSchema: entityResultSchema,
|
|
157
113
|
annotations: {
|
|
158
114
|
readOnlyHint: true, // 此操作不会修改数据
|
|
159
115
|
destructiveHint: false, // 此操作不具有破坏性
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/entity/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/entity/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEjD,gCAAgC;AAChC,MAAM,CAAC,MAAM,SAAS,GAAc;IAClC;QACE,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE;YACN,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,gBAAgB;YAC7B,WAAW,EAAE;gBACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;gBAC3E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACvD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAClD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;gBAC5F,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;gBAC1F,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;gBACrF,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;aACzF;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;oBACrB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;oBACvF,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAClF,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;oBACrE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC7D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oHAAoH,CAAC;oBACnL,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC3E,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC3E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;oBAC1E,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;oBACjF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;oBACxF,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;oBAC3F,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;oBACvF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAC/D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;oBACtF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;oBACpE,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACxE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;oBACnG,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;oBAC9E,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;oBACtF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;oBAC3E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAC7D,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;oBACjF,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;oBACxE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;iBAChE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC5C,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC7C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;aAChD;YACD,WAAW,EAAE;gBACX,YAAY,EAAE,IAAI,EAAM,YAAY;gBACpC,eAAe,EAAE,KAAK,EAAE,YAAY;gBACpC,cAAc,EAAE,IAAI,CAAI,WAAW;aACpC;SACF;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,EACJ,UAAU,GAAG,EAAE,EACf,IAAI,GAAG,CAAC,EACR,IAAI,GAAG,EAAE,EACT,eAAe,GAAG,EAAE,EACpB,aAAa,GAAG,EAAE,EAClB,WAAW,GAAG,EAAE,EAChB,cAAc,GAAG,EAAE,EACpB,GAAG,IAAI,CAAA;YACR,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC;oBAC/B,oBAAoB;oBACpB,UAAU,EAAE,EAAE;oBACd,iBAAiB,EAAE,UAAU;oBAC7B,SAAS,EAAE,EAAE;oBACb,UAAU;oBACV,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;oBACvB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;oBACxB,eAAe;oBACf,aAAa;oBACb,WAAW;oBACX,cAAc;iBACf,CAAC,CAAA;gBACF,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;yBACpC,CAAC;oBACF,2CAA2C;oBAC3C,4CAA4C;oBAC5C,kCAAkC;oBAClC,iBAAiB,EAAE,GAAG,CAAC,SAA+C;iBACvE,CAAA;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,sCAAsC;gBACtC,4EAA4E;gBAC5E,4BAA4B;gBAC5B,MAAM,GAAG,GAAG,CAAsC,CAAA;gBAClD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAA;gBACpC,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;yBAC3B,CAAC;iBACH,CAAA;YACH,CAAC;QACH,CAAC;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,0GAA0G;YACvH,WAAW,EAAE;gBACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;aAC9C;YACD,8CAA8C;YAC9C,uDAAuD;YACvD,0CAA0C;YAC1C,YAAY,EAAE,kBAA4C;YAC1D,WAAW,EAAE;gBACX,YAAY,EAAE,IAAI,EAAM,YAAY;gBACpC,eAAe,EAAE,KAAK,EAAE,YAAY;gBACpC,cAAc,EAAE,IAAI,CAAI,WAAW;aACpC;SACF;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC,CAAA;gBAC3C,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;yBACpC,CAAC;oBACF,2CAA2C;oBAC3C,4CAA4C;oBAC5C,kCAAkC;oBAClC,iBAAiB,EAAE,GAAG,CAAC,SAA+C;iBACvE,CAAA;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,sCAAsC;gBACtC,4EAA4E;gBAC5E,4BAA4B;gBAC5B,MAAM,GAAG,GAAG,CAAsC,CAAA;gBAClD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAA;gBACpC,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;yBAC3B,CAAC;iBACH,CAAA;YACH,CAAC;QACH,CAAC;KACF;CACF,CAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* 实体的“属性”结构(EntityProperty):
|
|
4
|
+
* 实体详情中 properties 数组里每个对象携带的字段级属性。
|
|
5
|
+
* 字段类型严格依据 entityClient.ts 中的 EntityProperty 接口声明构建:
|
|
6
|
+
* - 该结构不含唯一编码字段,故全部字段均声明为可选且可空(匹配 TS 侧 EntityProperty);
|
|
7
|
+
* - 追加 .catchall(z.unknown()),实现对服务端返回未声明字段的原样透传(不剥离、不报错)。
|
|
8
|
+
*/
|
|
9
|
+
export const entityPropertySchema = z.array(z.object({
|
|
10
|
+
columnname: z.string().optional().nullable().describe('属性列的列名,即数据库表的字段的名字'),
|
|
11
|
+
idxtype: z.union([z.string(), z.number()]).optional().nullable().describe('索引方式:1-无;2-主键索引。数据字典/超级表单以数字返回'),
|
|
12
|
+
ismaster: z.string().optional().nullable().describe('保留字段,暂无特殊含义。数据字典/超级表单实体缺省'),
|
|
13
|
+
marktype: z.string().optional().nullable().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
14
|
+
propertycategorycode: z.string().optional().nullable().describe('属性类别编码'),
|
|
15
|
+
propertycode: z.string().optional().nullable().describe('属性编码,唯一标识一个属性'),
|
|
16
|
+
propertydescr: z.string().optional().nullable().describe('属性描述'),
|
|
17
|
+
propertyname: z.string().optional().nullable().describe('属性中文名,便于阅读'),
|
|
18
|
+
propertytypecode: z.string().optional().nullable().describe('属性类型编码,编码和值的对应关系:1-主键(int8);2-名称(200);3-文本(200);4-长文本;5-整数(int4);6-长整数(int8);10-数字(numeric);7-日期时间(ts);30-时间范围;29-年月日(date);18-状态(int4);16-图片;26-附件;17-定位;19-选项集;200000000000-关联对象;100000000000-业务对象;10000000000-字典对象;300000000000-复杂关联对象;1000000000-本对象;8-创建人(int8);9-修改人(int8);11-创建时间(ts);12-修改时间(ts);31-拼音;100-是否默认;13-手机号;15-固定电话;14-邮箱;27-邮编;20-排序(int4)'),
|
|
19
|
+
publishstatus: z.union([z.string(), z.number()]).optional().nullable().describe('属性的发布状态,1-已发布;2-未发布。衍生实体以字符串返回'),
|
|
20
|
+
relationobjectcode: z.string().optional().nullable().describe('关联的实体编码,此属性关联了其他实体,则说明 SQL 查询的时候可以用此字段连其他实体对应的表的主键'),
|
|
21
|
+
relationpropertycode: z.string().optional().nullable().describe('保留字段,一般为空字符串。视图/数据字典/超级表单实体缺省'),
|
|
22
|
+
status: z.union([z.string(), z.number()]).optional().nullable().describe('属性的状态,1-启用;2-停用。数据字典/超级表单以数字返回'),
|
|
23
|
+
seq: z.coerce.number().optional().nullable().describe('属性序号。视图/数据字典/超级表单实体返回'),
|
|
24
|
+
columnnameError: z.boolean().optional().nullable().describe('视图实体属性字段,标记列名是否错误,仅视图返回'),
|
|
25
|
+
candelete: z.boolean().optional().nullable().describe('视图实体属性字段,标记是否可删除,仅视图返回'),
|
|
26
|
+
parentpropertycode: z.string().optional().nullable().describe('数据字典属性字段,父属性编码,仅数据字典返回'),
|
|
27
|
+
defaultvalue: z.string().optional().nullable().describe('数据字典属性字段,默认值,仅数据字典返回')
|
|
28
|
+
}).catchall(z.unknown()));
|
|
29
|
+
/**
|
|
30
|
+
* 实体详情(EntityResult)的字段形状(ZodRawShape),即 get_entity 的返回结构。
|
|
31
|
+
*
|
|
32
|
+
* 字段可空性约定:除复合主键 objectcode 保持必填外,
|
|
33
|
+
* 其余字段均声明为可选且可空(.optional().nullable()),以匹配 entityClient.ts 中
|
|
34
|
+
* EntityResult 的类型定义(除复合主键外均可选 / null / undefined),
|
|
35
|
+
* 避免服务端返回 null 或缺失字段时触发 -32602 Output validation 报错。
|
|
36
|
+
*/
|
|
37
|
+
export const entityResultShape = {
|
|
38
|
+
confsource: z.coerce.number().optional().nullable().describe('配置来源,含义:1-IDE配置;2-用户级配置。数据字典实体不返回'),
|
|
39
|
+
datapattern: z.union([z.string(), z.number()]).optional().nullable().describe('数据模式,含义:1-原生实体;2-衍生实体;3-视图;4-超级表单实体。注意:详情接口(getBizObject)多数实体类型不返回该字段(它是列表接口字段),故声明为可选;超级表单以数字返回'),
|
|
40
|
+
diclayer: z.union([z.string(), z.number()]).optional().nullable().describe('字典层级,原生/关联实体/数据字典以字符串返回,视图/超级表单以数字返回'),
|
|
41
|
+
directorytypecode: z.string().optional().nullable().describe('实体所属目录分类的编码'),
|
|
42
|
+
marktype: z.string().optional().nullable().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
43
|
+
message: z.string().optional().nullable().describe('保存时编写的提交信息,作用类似 git 提交信息。数据字典/超级表单实体不返回'),
|
|
44
|
+
objectcatgory: z.union([z.string(), z.number()]).optional().nullable().describe('对象类别,表示是否为权限设置对象,1-是;2-否。数据字典/超级表单以数字返回'),
|
|
45
|
+
objectcode: z.string().describe('实体的编码,和 metamodelcode 共同构成复合主键'),
|
|
46
|
+
objectdescr: z.string().optional().nullable().describe('实体的描述'),
|
|
47
|
+
objectmark: z.string().optional().nullable().describe('实体标记,一般和数据库表名同名,字典类型的实体有自己的标记'),
|
|
48
|
+
objectname: z.string().optional().nullable().describe('实体的中文名,便于阅读'),
|
|
49
|
+
objecttemplatecode: z.string().optional().nullable().describe('实体的模板编码。仅数据字典实体返回'),
|
|
50
|
+
objecttypecode: z.union([z.string(), z.number()]).optional().nullable().describe('实体分类,整数,含义:1-基本实体;2-树形实体;3-数据字典;4-关联实体。数据字典以数字返回'),
|
|
51
|
+
parentobjectcode: z.string().optional().nullable().describe('父实体的 objectcode。超级表单实体不返回'),
|
|
52
|
+
properties: entityPropertySchema.optional().nullable().describe('实体的属性数组:每个属性定义实体的一个字段(列名、类型、关联实体、索引方式等)'),
|
|
53
|
+
publishstatus: z.coerce.number().optional().nullable().describe('实体的发布状态,1-已发布;2-未发布'),
|
|
54
|
+
script: z.string().optional().nullable().describe('保留字段/定义脚本,原生/视图/关联实体返回,一般为空字符串'),
|
|
55
|
+
status: z.union([z.string(), z.number()]).optional().nullable().describe('实体的状态,1-启用;2-停用。数据字典/视图/超级表单以数字返回;详情接口对该字段返回不稳定(部分调用不返回),故声明为可选'),
|
|
56
|
+
storagelevel: z.coerce.number().optional().nullable().describe('存储等级。视图/数据字典/超级表单实体不返回'),
|
|
57
|
+
seq: z.coerce.number().optional().nullable().describe('实体序号。仅视图/超级表单实体返回'),
|
|
58
|
+
tablename: z.string().optional().nullable().describe('数据库表名')
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* 宽松版实体详情结构(顶层 passthrough),用于 get_entity 的 outputSchema,
|
|
62
|
+
* 以保证 EntityResult 索引签名收集的服务端额外字段也能原样透传(不被剥离)。
|
|
63
|
+
*/
|
|
64
|
+
export const entityResultSchema = z.looseObject(entityResultShape);
|
|
65
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/tools/entity/schemas.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/form/read.js
CHANGED
|
@@ -7,6 +7,7 @@ import { pageFormList, getForm } from '../../clients/formClient.js';
|
|
|
7
7
|
* string|null -> z.union([z.string(), z.null()]);
|
|
8
8
|
* number|null -> z.coerce.number().nullable()(对字符串型数字容错)。
|
|
9
9
|
* 描述文字直接采用 formClient.ts 中 FormPageResult 的注释内容。
|
|
10
|
+
* catchall 实现有其他字段时原样透传
|
|
10
11
|
*/
|
|
11
12
|
const formPageResultShape = z.object({
|
|
12
13
|
createtime: z.union([z.string(), z.null()]).optional().describe('创建时间'),
|
|
@@ -30,7 +31,7 @@ const formPageResultShape = z.object({
|
|
|
30
31
|
updateaccountcode: z.union([z.string(), z.null()]).optional().describe('最近更新人的账号编码'),
|
|
31
32
|
updateaccountname: z.union([z.string(), z.null()]).optional().describe('最近更新人的姓名'),
|
|
32
33
|
versionnum: z.union([z.string(), z.null()]).optional().describe('版本号')
|
|
33
|
-
});
|
|
34
|
+
}).catchall(z.unknown());
|
|
34
35
|
/**
|
|
35
36
|
* 表单/页面详情查询结果(FormResult)的 outputSchema 形状。
|
|
36
37
|
* 描述文字直接采用 formClient.ts 中 FormResult 接口及其各字段的注释内容。
|
|
@@ -154,7 +155,8 @@ message:提交信息文本。`,
|
|
|
154
155
|
inputSchema: {
|
|
155
156
|
code: z.string().describe('表单/页面的唯一编码')
|
|
156
157
|
},
|
|
157
|
-
|
|
158
|
+
// z.looseObject 实现有额外字段时原样透传
|
|
159
|
+
outputSchema: z.looseObject(formResultShape),
|
|
158
160
|
annotations: {
|
|
159
161
|
readOnlyHint: true, // 此操作不会修改数据
|
|
160
162
|
destructiveHint: false, // 此操作不具有破坏性
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/form/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/form/read.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/logic/read.js
CHANGED
|
@@ -23,26 +23,26 @@ export const readTools = [
|
|
|
23
23
|
},
|
|
24
24
|
outputSchema: {
|
|
25
25
|
data: z.array(z.object({
|
|
26
|
-
actiontype: z.coerce.number().describe('操作类型, 整数, 含义:1-列表查询;2-单个查询;3-数据提交;4-批量提交;5-导入;6-导出;7-离线数据获取;8-流程;9-业务调度;10-ipaas接口'),
|
|
27
|
-
createtime: z.string().describe('创建时间'),
|
|
28
|
-
createaccountcode: z.coerce.number().describe('创建人的账号的唯一编码'),
|
|
29
|
-
modelname: z.string().describe('此业务逻辑所属的业务模型名'),
|
|
26
|
+
actiontype: z.coerce.number().optional().nullable().describe('操作类型, 整数, 含义:1-列表查询;2-单个查询;3-数据提交;4-批量提交;5-导入;6-导出;7-离线数据获取;8-流程;9-业务调度;10-ipaas接口'),
|
|
27
|
+
createtime: z.string().optional().nullable().describe('创建时间'),
|
|
28
|
+
createaccountcode: z.coerce.number().optional().nullable().describe('创建人的账号的唯一编码'),
|
|
29
|
+
modelname: z.string().optional().nullable().describe('此业务逻辑所属的业务模型名'),
|
|
30
30
|
modellogiccode: z.string().describe('此业务逻辑的编码,和 metamodelcode 共同构成复合主键'),
|
|
31
|
-
modellogicname: z.string().describe('此业务逻辑的标题'),
|
|
32
|
-
metamodelcode: z.string().describe('领域模型编码,和 modellogiccode 共同构成复合主键'),
|
|
33
|
-
execmode: z.coerce.number().describe('执行方式,1-同步;2-异步'),
|
|
34
|
-
functionname: z.string().describe('此业务逻辑的函数命名(A业务逻辑中调用B业务逻辑时要写函数名)'),
|
|
35
|
-
actioncategory: z.coerce.number().describe('行为类型,整数,含义:1-flycode接口;2-微服务;3-内部函数;4-导入;5-导出;6-flycode导入;7-flycode导出'),
|
|
31
|
+
modellogicname: z.string().optional().nullable().describe('此业务逻辑的标题'),
|
|
32
|
+
metamodelcode: z.string().optional().nullable().describe('领域模型编码,和 modellogiccode 共同构成复合主键'),
|
|
33
|
+
execmode: z.coerce.number().optional().nullable().describe('执行方式,1-同步;2-异步'),
|
|
34
|
+
functionname: z.string().optional().nullable().describe('此业务逻辑的函数命名(A业务逻辑中调用B业务逻辑时要写函数名)'),
|
|
35
|
+
actioncategory: z.coerce.number().optional().nullable().describe('行为类型,整数,含义:1-flycode接口;2-微服务;3-内部函数;4-导入;5-导出;6-flycode导入;7-flycode导出'),
|
|
36
36
|
modelcode: z.string().describe('此业务逻辑所属的业务模型的唯一编码'),
|
|
37
|
-
marktype: z.coerce.number().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
38
|
-
updatetime: z.string().describe('最近更新时间'),
|
|
39
|
-
updateaccountname: z.string().describe('最近更新人姓名'),
|
|
40
|
-
createaccountname: z.string().describe('创建人姓名'),
|
|
41
|
-
seq: z.coerce.number().describe('顺序'),
|
|
42
|
-
status: z.coerce.number().describe('状态,1-启用'),
|
|
43
|
-
confsource: z.coerce.number().describe('配置来源:1-IDE配置;2-用户级配置'),
|
|
44
|
-
updateaccountcode: z.coerce.number().describe('最近更新人账号的唯一编码')
|
|
45
|
-
})).describe('这一页的业务数据'),
|
|
37
|
+
marktype: z.coerce.number().optional().nullable().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
38
|
+
updatetime: z.string().optional().nullable().describe('最近更新时间'),
|
|
39
|
+
updateaccountname: z.string().optional().nullable().describe('最近更新人姓名'),
|
|
40
|
+
createaccountname: z.string().optional().nullable().describe('创建人姓名'),
|
|
41
|
+
seq: z.coerce.number().optional().nullable().describe('顺序'),
|
|
42
|
+
status: z.coerce.number().optional().nullable().describe('状态,1-启用'),
|
|
43
|
+
confsource: z.coerce.number().optional().nullable().describe('配置来源:1-IDE配置;2-用户级配置'),
|
|
44
|
+
updateaccountcode: z.coerce.number().optional().nullable().describe('最近更新人账号的唯一编码')
|
|
45
|
+
}).catchall(z.unknown())).describe('这一页的业务数据'),
|
|
46
46
|
pageCount: z.coerce.number().describe('总页数'),
|
|
47
47
|
pageIndex: z.coerce.number().describe('第几页'),
|
|
48
48
|
pageSize: z.coerce.number().describe('每页记录数'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/logic/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C,gCAAgC;AAChC,MAAM,CAAC,MAAM,SAAS,GAAc;IAClC;QACE,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE;YACN,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,kBAAkB;YAC/B,WAAW,EAAE;gBACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;gBAC3E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;gBACrE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACvD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAClD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAC5D,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;gBACrG,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;gBACnG,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oFAAoF,CAAC;gBAChI,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;gBACvH,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;gBAC7E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;aAC5E;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;oBACrB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oFAAoF,CAAC;
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/logic/read.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,64 +3,71 @@ import { z } from 'zod';
|
|
|
3
3
|
* 业务逻辑的“属性”结构(LogicParameterProperties):
|
|
4
4
|
* input/output 参数数组中每个对象可能携带的字段级属性。
|
|
5
5
|
* 字段类型严格依据 logicClient.ts 中的 LogicParameterProperties 接口声明构建。
|
|
6
|
+
* 该结构不含唯一编码字段,故全部字段均声明为可选且可空(匹配 TS 侧 LogicParameterProperties)。
|
|
6
7
|
*/
|
|
7
8
|
export const logicParameterPropertiesSchema = z.array(z.object({
|
|
8
|
-
marktype: z.string().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
9
|
-
name: z.string().describe('此字段的名称,代码中用此名字访问'),
|
|
10
|
-
objectcode: z.string().describe('此字段所属的实体的编码,如果是自定义参数则此编码为空字符串'),
|
|
11
|
-
propertycode: z.string().describe('此字段的编码,只有当此字段有所属实体时才有值,临时创建的自定义实体的字段则为空字符串'),
|
|
12
|
-
propertyname: z.string().describe('此字段的中文名,阅读友好'),
|
|
13
|
-
propertytypecode: z.string().describe('字段类型,整数字符串,含义:1-主键(int8);2-名称(200);3-文本(200);4-长文本;5-整数(int4);6-长整数(int8);10-数字(numeric);7-日期时间(ts);30-时间范围;29-年月日(date);18-状态(int4);16-图片;26-附件;17-定位;19-选项集;200000000000-关联对象;100000000000-业务对象;10000000000-字典对象;300000000000-复杂关联对象;1000000000-本对象;8-创建人(int8);9-修改人(int8);11-创建时间(ts);12-修改时间(ts);31-拼音;100-是否默认;13-手机号;15-固定电话;14-邮箱;27-邮编;20-排序(int4)')
|
|
14
|
-
}));
|
|
9
|
+
marktype: z.string().optional().nullable().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
10
|
+
name: z.string().optional().nullable().describe('此字段的名称,代码中用此名字访问'),
|
|
11
|
+
objectcode: z.string().optional().nullable().describe('此字段所属的实体的编码,如果是自定义参数则此编码为空字符串'),
|
|
12
|
+
propertycode: z.string().optional().nullable().describe('此字段的编码,只有当此字段有所属实体时才有值,临时创建的自定义实体的字段则为空字符串'),
|
|
13
|
+
propertyname: z.string().optional().nullable().describe('此字段的中文名,阅读友好'),
|
|
14
|
+
propertytypecode: z.string().optional().nullable().describe('字段类型,整数字符串,含义:1-主键(int8);2-名称(200);3-文本(200);4-长文本;5-整数(int4);6-长整数(int8);10-数字(numeric);7-日期时间(ts);30-时间范围;29-年月日(date);18-状态(int4);16-图片;26-附件;17-定位;19-选项集;200000000000-关联对象;100000000000-业务对象;10000000000-字典对象;300000000000-复杂关联对象;1000000000-本对象;8-创建人(int8);9-修改人(int8);11-创建时间(ts);12-修改时间(ts);31-拼音;100-是否默认;13-手机号;15-固定电话;14-邮箱;27-邮编;20-排序(int4)')
|
|
15
|
+
}).catchall(z.unknown()));
|
|
15
16
|
/**
|
|
16
17
|
* 业务逻辑的“输入/输出参数”结构(LogicParameters):
|
|
17
18
|
* input 定义 flycode 中内置对象 IN 可获取到的内容,output 定义赋值给 OUT 的内容。
|
|
19
|
+
* 该结构不含唯一编码字段,故全部字段均声明为可选且可空(匹配 TS 侧 LogicParameters)。
|
|
18
20
|
*/
|
|
19
21
|
export const logicParametersSchema = z.array(z.object({
|
|
20
|
-
datatype: z.string().describe('整数字符串:0-单实体;1-数组。0 表示 IN.name 或 OUT.xxx 是个对象;1 表示是个数组'),
|
|
21
|
-
marktype: z.string().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
22
|
-
name: z.string().describe('此参数对象/数组的名字,代码中用此名字访问'),
|
|
23
|
-
objectcode: z.string().describe('此参数关联的实体的编码,如果是自定义参数则此编码为空字符串'),
|
|
24
|
-
objectname: z.string().describe('此参数的中文名称,阅读友好'),
|
|
25
|
-
properties: logicParameterPropertiesSchema.describe('此参数的属性数组:单实体时是 IN.name 这个对象有的属性;数组时是 IN.name 这个数组中的元素对象的属性'),
|
|
26
|
-
customcode: z.string().optional().describe('自定义输出对象的编码(仅自定义输出参数可能携带,如内部函数 output)')
|
|
27
|
-
}));
|
|
22
|
+
datatype: z.string().optional().nullable().describe('整数字符串:0-单实体;1-数组。0 表示 IN.name 或 OUT.xxx 是个对象;1 表示是个数组'),
|
|
23
|
+
marktype: z.string().optional().nullable().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
24
|
+
name: z.string().optional().nullable().describe('此参数对象/数组的名字,代码中用此名字访问'),
|
|
25
|
+
objectcode: z.string().optional().nullable().describe('此参数关联的实体的编码,如果是自定义参数则此编码为空字符串'),
|
|
26
|
+
objectname: z.string().optional().nullable().describe('此参数的中文名称,阅读友好'),
|
|
27
|
+
properties: logicParameterPropertiesSchema.optional().nullable().describe('此参数的属性数组:单实体时是 IN.name 这个对象有的属性;数组时是 IN.name 这个数组中的元素对象的属性'),
|
|
28
|
+
customcode: z.string().optional().nullable().describe('自定义输出对象的编码(仅自定义输出参数可能携带,如内部函数 output)')
|
|
29
|
+
}).catchall(z.unknown()));
|
|
28
30
|
/**
|
|
29
31
|
* 业务逻辑的操作步骤结构(LogicOperations),flycode 脚本代码即在其中。
|
|
32
|
+
* 仅 modellogiccode(唯一编码)保持必填,其余字段均声明为可选且可空(匹配 TS 侧 LogicOperations)。
|
|
33
|
+
* 本层及内部 dynamic / templateparams 内联对象均追加 .catchall(z.unknown()),
|
|
34
|
+
* 实现对服务端返回未声明字段的原样透传(不剥离、不报错)。
|
|
30
35
|
*/
|
|
31
36
|
export const logicOperationsSchema = z.array(z.object({
|
|
32
37
|
dynamic: z.object({
|
|
33
|
-
fieldblacklist: z.
|
|
34
|
-
fieldmap: z.
|
|
35
|
-
}).optional().describe('动态配置'),
|
|
36
|
-
marktype: z.string().describe('创建标记'),
|
|
38
|
+
fieldblacklist: z.unknown().optional().nullable().describe('字段黑名单'),
|
|
39
|
+
fieldmap: z.unknown().optional().nullable().describe('字段映射')
|
|
40
|
+
}).catchall(z.unknown()).optional().nullable().describe('动态配置'),
|
|
41
|
+
marktype: z.string().optional().nullable().describe('创建标记'),
|
|
37
42
|
modellogiccode: z.string().describe('业务逻辑编码'),
|
|
38
|
-
modellogicstepcode: z.string().describe('业务逻辑步骤编码'),
|
|
39
|
-
modellogicstepname: z.string().describe('业务逻辑步骤名称'),
|
|
40
|
-
seq: z.coerce.number().describe('顺序'),
|
|
41
|
-
status: z.string().describe('状态'),
|
|
43
|
+
modellogicstepcode: z.string().optional().nullable().describe('业务逻辑步骤编码'),
|
|
44
|
+
modellogicstepname: z.string().optional().nullable().describe('业务逻辑步骤名称'),
|
|
45
|
+
seq: z.coerce.number().optional().nullable().describe('顺序'),
|
|
46
|
+
status: z.string().optional().nullable().describe('状态'),
|
|
42
47
|
templateparams: z.object({
|
|
43
|
-
flycode: z.string().describe('flycode 脚本代码字符串'),
|
|
44
|
-
sourcemap: z.string().optional().describe('源映射'),
|
|
45
|
-
tempcompiledflycode: z.string().optional().describe('编译后的 flycode')
|
|
46
|
-
}).describe('模板参数,内含具体的 flycode 代码(导出结构仅含 flycode)'),
|
|
47
|
-
templateref: z.string().describe('模板引用')
|
|
48
|
-
}));
|
|
48
|
+
flycode: z.string().optional().nullable().describe('flycode 脚本代码字符串'),
|
|
49
|
+
sourcemap: z.string().optional().nullable().describe('源映射'),
|
|
50
|
+
tempcompiledflycode: z.string().optional().nullable().describe('编译后的 flycode')
|
|
51
|
+
}).catchall(z.unknown()).optional().nullable().describe('模板参数,内含具体的 flycode 代码(导出结构仅含 flycode)'),
|
|
52
|
+
templateref: z.string().optional().nullable().describe('模板引用')
|
|
53
|
+
}).catchall(z.unknown()));
|
|
49
54
|
/**
|
|
50
55
|
* 导出类业务逻辑的绑定配置(仅 actioncategory=5 导出 时存在)。
|
|
56
|
+
* 仅 modelcode(唯一编码)保持必填,其余字段均声明为可选且可空(匹配 TS 侧 LogicBindJson)。
|
|
57
|
+
* 本层及内部 bindcols 元素均追加 .catchall(z.unknown()),原样透传未声明字段。
|
|
51
58
|
*/
|
|
52
59
|
export const logicBindJsonSchema = z.object({
|
|
53
60
|
bindcols: z.array(z.object({
|
|
54
|
-
field: z.string().describe('字段名(对应业务对象的属性名)'),
|
|
55
|
-
column: z.string().describe('导出后的列标题'),
|
|
56
|
-
width: z.string().describe('列宽'),
|
|
57
|
-
type: z.string().describe('字段类型,如 string'),
|
|
58
|
-
dynamictext: z.
|
|
59
|
-
})).describe('导出的列定义'),
|
|
61
|
+
field: z.string().optional().nullable().describe('字段名(对应业务对象的属性名)'),
|
|
62
|
+
column: z.string().optional().nullable().describe('导出后的列标题'),
|
|
63
|
+
width: z.string().optional().nullable().describe('列宽'),
|
|
64
|
+
type: z.string().optional().nullable().describe('字段类型,如 string'),
|
|
65
|
+
dynamictext: z.unknown().optional().nullable().describe('动态文本配置')
|
|
66
|
+
}).catchall(z.unknown()).optional().nullable().describe('导出的列定义')),
|
|
60
67
|
modelcode: z.string().describe('业务模型编码'),
|
|
61
|
-
logiccode: z.string().describe('业务逻辑编码'),
|
|
62
|
-
logicname: z.string().describe('业务逻辑名称')
|
|
63
|
-
});
|
|
68
|
+
logiccode: z.string().optional().nullable().describe('业务逻辑编码'),
|
|
69
|
+
logicname: z.string().optional().nullable().describe('业务逻辑名称')
|
|
70
|
+
}).catchall(z.unknown());
|
|
64
71
|
/**
|
|
65
72
|
* 完整的业务逻辑对象(LogicResult)的字段形状(ZodRawShape),
|
|
66
73
|
* 即 get_model_logic 的返回结构,也是 save_model_logic 入参所需的结构——
|
|
@@ -74,33 +81,42 @@ export const logicBindJsonSchema = z.object({
|
|
|
74
81
|
* 使用宽松 object 的原因:
|
|
75
82
|
* - 写侧:保存时必须把 get 返回的完整对象(含 schema 未枚举的字段)原样回传服务端,不能丢字段;
|
|
76
83
|
* - 读侧:服务端偶发返回 schema 未覆盖的额外字段时,宽松校验可避免 -32602 Output validation 报错。
|
|
84
|
+
*
|
|
85
|
+
* 字段可空性约定:除唯一编码字段 modelcode / modellogiccode 保持必填外,
|
|
86
|
+
* 其余字段均声明为可选且可空(.optional().nullable()),以匹配 logicClient.ts 中
|
|
87
|
+
* LogicResult 的类型定义(所有非唯一编码字段均支持 可选 / null / undefined),
|
|
88
|
+
* 从而避免服务端返回 null 时触发 -32602 Output validation 报错。
|
|
89
|
+
*
|
|
90
|
+
* 透传约定:本层使用 z.looseObject(顶层 passthrough),
|
|
91
|
+
* 而 operations / bindjson / rest / input / output 等嵌套结构引用独立 zod schema,
|
|
92
|
+
* 这些 schema 内部均追加了 .catchall(z.unknown()),使整条嵌套链路对任意层级的未声明字段都能原样透传。
|
|
77
93
|
*/
|
|
78
94
|
export const logicResultShape = {
|
|
79
|
-
actioncategory: z.string().describe('行为类型,整数,含义:1-flycode接口;2-微服务;3-内部函数;4-导入;5-导出;6-flycode导入;7-flycode导出'),
|
|
80
|
-
actiontype: z.string().describe('操作类型, 整数, 含义:1-列表查询;2-单个查询;3-数据提交;4-批量提交;5-导入;6-导出;7-离线数据获取;8-流程;9-业务调度;10-ipaas接口'),
|
|
81
|
-
description: z.string().optional().describe('对此业务领域的描述说明(微服务结构用 descr 代替)'),
|
|
82
|
-
descr: z.string().optional().describe('描述说明的替用字段,仅微服务(actioncategory=2)返回,等价于 description'),
|
|
83
|
-
execmode: z.string().describe('执行方式,1-同步;2-异步'),
|
|
84
|
-
executionmode: z.string().optional().describe('执行模式,standard-标准模式;strict-严格模式'),
|
|
85
|
-
functionname: z.string().describe('此业务逻辑的函数命名(A业务逻辑中调用B业务逻辑时要写函数名)'),
|
|
86
|
-
idempotenttype: z.string().optional().describe('保留字段,空字符串'),
|
|
87
|
-
input: logicParametersSchema.optional().describe('该字段定义了此业务逻辑的输入:flycode 中的内置对象 IN 中可获取到的内容(微服务结构无此字段)'),
|
|
88
|
-
logicscript: z.string().optional().describe('保留字段,空字符串'),
|
|
89
|
-
marktype: z.string().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
90
|
-
message: z.string().optional().describe('提交信息,每次保存时填写的,类似 git 的提交信息(导出类结构可能缺)'),
|
|
95
|
+
actioncategory: z.string().optional().nullable().describe('行为类型,整数,含义:1-flycode接口;2-微服务;3-内部函数;4-导入;5-导出;6-flycode导入;7-flycode导出'),
|
|
96
|
+
actiontype: z.string().optional().nullable().describe('操作类型, 整数, 含义:1-列表查询;2-单个查询;3-数据提交;4-批量提交;5-导入;6-导出;7-离线数据获取;8-流程;9-业务调度;10-ipaas接口'),
|
|
97
|
+
description: z.string().optional().nullable().describe('对此业务领域的描述说明(微服务结构用 descr 代替)'),
|
|
98
|
+
descr: z.string().optional().nullable().describe('描述说明的替用字段,仅微服务(actioncategory=2)返回,等价于 description'),
|
|
99
|
+
execmode: z.string().optional().nullable().describe('执行方式,1-同步;2-异步'),
|
|
100
|
+
executionmode: z.string().optional().nullable().describe('执行模式,standard-标准模式;strict-严格模式'),
|
|
101
|
+
functionname: z.string().optional().nullable().describe('此业务逻辑的函数命名(A业务逻辑中调用B业务逻辑时要写函数名)'),
|
|
102
|
+
idempotenttype: z.string().optional().nullable().describe('保留字段,空字符串'),
|
|
103
|
+
input: logicParametersSchema.optional().nullable().describe('该字段定义了此业务逻辑的输入:flycode 中的内置对象 IN 中可获取到的内容(微服务结构无此字段)'),
|
|
104
|
+
logicscript: z.string().optional().nullable().describe('保留字段,空字符串'),
|
|
105
|
+
marktype: z.string().optional().nullable().describe('创建标记:0-平台;1-产品;2-租户'),
|
|
106
|
+
message: z.string().optional().nullable().describe('提交信息,每次保存时填写的,类似 git 的提交信息(导出类结构可能缺)'),
|
|
91
107
|
modelcode: z.string().describe('此业务逻辑所属的业务模型的唯一编码'),
|
|
92
108
|
modellogiccode: z.string().describe('此业务逻辑的编码'),
|
|
93
|
-
modellogicname: z.string().describe('此业务逻辑的标题'),
|
|
94
|
-
operations: logicOperationsSchema.optional().describe('此业务逻辑的操作信息(微服务结构无此字段);通常数组中只有单个元素,该元素对象中就有 flycode 代码字符串'),
|
|
95
|
-
output: logicParametersSchema.optional().describe('该字段定义了此业务逻辑的输出:flycode 中将会赋值给内置对象 OUT 的内容(微服务结构无此字段)'),
|
|
96
|
-
rest: z.object({ server: z.string().describe('微服务地址'), url: z.string().describe('微服务路径') }).optional().describe('微服务的 REST 配置,仅 actioncategory=2 微服务 时存在'),
|
|
97
|
-
bindjson: logicBindJsonSchema.optional().describe('导出绑定的 Excel 列配置,仅 actioncategory=5 导出 时存在'),
|
|
98
|
-
status: z.coerce.number().describe('状态,1-启用'),
|
|
99
|
-
tenantdbcode: z.string().optional().describe('保留字段,租户数据库编码'),
|
|
100
|
-
tenantdbname: z.string().optional().describe('保留字段,租户数据库操作权限,枚举值含义:只读-数据库只能查询不能增删改;读写-数据库可增删改查;报表-保留字段'),
|
|
101
|
-
tenantdbtype: z.string().optional().describe('tenantdbname 对应的 key 值'),
|
|
102
|
-
uilogicscript: z.string().optional().describe('离线脚本,仅用于 app 端离线数据提交'),
|
|
103
|
-
usedatarule: z.string().optional().describe('1 代表使用数据权限')
|
|
109
|
+
modellogicname: z.string().optional().nullable().describe('此业务逻辑的标题'),
|
|
110
|
+
operations: logicOperationsSchema.optional().nullable().describe('此业务逻辑的操作信息(微服务结构无此字段);通常数组中只有单个元素,该元素对象中就有 flycode 代码字符串'),
|
|
111
|
+
output: logicParametersSchema.optional().nullable().describe('该字段定义了此业务逻辑的输出:flycode 中将会赋值给内置对象 OUT 的内容(微服务结构无此字段)'),
|
|
112
|
+
rest: z.object({ server: z.string().optional().nullable().describe('微服务地址'), url: z.string().optional().nullable().describe('微服务路径') }).catchall(z.unknown()).optional().nullable().describe('微服务的 REST 配置,仅 actioncategory=2 微服务 时存在'),
|
|
113
|
+
bindjson: logicBindJsonSchema.optional().nullable().describe('导出绑定的 Excel 列配置,仅 actioncategory=5 导出 时存在'),
|
|
114
|
+
status: z.coerce.number().optional().nullable().describe('状态,1-启用'),
|
|
115
|
+
tenantdbcode: z.string().optional().nullable().describe('保留字段,租户数据库编码'),
|
|
116
|
+
tenantdbname: z.string().optional().nullable().describe('保留字段,租户数据库操作权限,枚举值含义:只读-数据库只能查询不能增删改;读写-数据库可增删改查;报表-保留字段'),
|
|
117
|
+
tenantdbtype: z.string().optional().nullable().describe('tenantdbname 对应的 key 值'),
|
|
118
|
+
uilogicscript: z.string().optional().nullable().describe('离线脚本,仅用于 app 端离线数据提交'),
|
|
119
|
+
usedatarule: z.string().optional().nullable().describe('1 代表使用数据权限')
|
|
104
120
|
};
|
|
105
121
|
export const logicResultSchema = z.looseObject(logicResultShape);
|
|
106
122
|
//# sourceMappingURL=schemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/tools/logic/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/tools/logic/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 雪花算法 ID 生成器(无分号风格)
|
|
3
|
+
* 结构: 1 位符号位 + 41 位时间戳(毫秒) + 10 位机器 ID + 12 位序列号
|
|
4
|
+
* 默认纪元: 2020-01-01 00:00:00 UTC
|
|
5
|
+
*/
|
|
6
|
+
class Snowflake {
|
|
7
|
+
// 各部分的位数
|
|
8
|
+
workerIdBits = 5;
|
|
9
|
+
datacenterIdBits = 5;
|
|
10
|
+
sequenceBits = 12;
|
|
11
|
+
// 最大取值
|
|
12
|
+
maxWorkerId = -1 ^ (-1 << this.workerIdBits); // 31
|
|
13
|
+
maxDatacenterId = -1 ^ (-1 << this.datacenterIdBits); // 31
|
|
14
|
+
sequenceMask = -1 ^ (-1 << this.sequenceBits); // 4095
|
|
15
|
+
// 左移位数
|
|
16
|
+
workerIdShift = this.sequenceBits; // 12
|
|
17
|
+
datacenterIdShift = this.sequenceBits + this.workerIdBits; // 17
|
|
18
|
+
timestampShift = this.sequenceBits + this.workerIdBits + this.datacenterIdBits; // 22
|
|
19
|
+
// 自定义纪元(毫秒时间戳)
|
|
20
|
+
epoch;
|
|
21
|
+
// 上次生成时间戳及序列号
|
|
22
|
+
lastTimestamp = -1n;
|
|
23
|
+
sequence = 0n;
|
|
24
|
+
// 机器 ID 和数据中心 ID
|
|
25
|
+
workerId;
|
|
26
|
+
datacenterId;
|
|
27
|
+
/**
|
|
28
|
+
* @param workerId 机器 ID (0 ~ 31)
|
|
29
|
+
* @param datacenterId 数据中心 ID (0 ~ 31)
|
|
30
|
+
* @param epoch 自定义纪元(毫秒),默认 2020-01-01 00:00:00 UTC
|
|
31
|
+
*/
|
|
32
|
+
constructor(workerId, datacenterId, epoch = 1577836800000) {
|
|
33
|
+
if (workerId > this.maxWorkerId || workerId < 0) {
|
|
34
|
+
throw new Error(`workerId 必须在 0 ~ ${this.maxWorkerId} 之间`);
|
|
35
|
+
}
|
|
36
|
+
if (datacenterId > this.maxDatacenterId || datacenterId < 0) {
|
|
37
|
+
throw new Error(`datacenterId 必须在 0 ~ ${this.maxDatacenterId} 之间`);
|
|
38
|
+
}
|
|
39
|
+
this.workerId = BigInt(workerId);
|
|
40
|
+
this.datacenterId = BigInt(datacenterId);
|
|
41
|
+
this.epoch = BigInt(epoch);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 生成下一个唯一 ID (BigInt)
|
|
45
|
+
*/
|
|
46
|
+
nextId() {
|
|
47
|
+
let timestamp = this.currentTimestamp();
|
|
48
|
+
// 时钟回拨处理:等待或抛异常
|
|
49
|
+
if (timestamp < this.lastTimestamp) {
|
|
50
|
+
const offset = this.lastTimestamp - timestamp;
|
|
51
|
+
if (offset <= 5n) {
|
|
52
|
+
while (timestamp < this.lastTimestamp) {
|
|
53
|
+
timestamp = this.currentTimestamp();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
throw new Error(`时钟回拨过大: ${offset}ms,无法生成 ID`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// 同一毫秒内序列号递增
|
|
61
|
+
if (timestamp === this.lastTimestamp) {
|
|
62
|
+
this.sequence = (this.sequence + 1n) & BigInt(this.sequenceMask);
|
|
63
|
+
if (this.sequence === 0n) {
|
|
64
|
+
timestamp = this.waitNextMillis(this.lastTimestamp);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
this.sequence = 0n;
|
|
69
|
+
}
|
|
70
|
+
this.lastTimestamp = timestamp;
|
|
71
|
+
// 拼装 ID
|
|
72
|
+
const id = ((timestamp - this.epoch) << BigInt(this.timestampShift)) |
|
|
73
|
+
(this.datacenterId << BigInt(this.datacenterIdShift)) |
|
|
74
|
+
(this.workerId << BigInt(this.workerIdShift)) |
|
|
75
|
+
this.sequence;
|
|
76
|
+
return id;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 等待直到下一毫秒
|
|
80
|
+
*/
|
|
81
|
+
waitNextMillis(lastTimestamp) {
|
|
82
|
+
let timestamp = this.currentTimestamp();
|
|
83
|
+
while (timestamp <= lastTimestamp) {
|
|
84
|
+
timestamp = this.currentTimestamp();
|
|
85
|
+
}
|
|
86
|
+
return timestamp;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* 当前毫秒时间戳
|
|
90
|
+
*/
|
|
91
|
+
currentTimestamp() {
|
|
92
|
+
return BigInt(Date.now());
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* 解析 ID 各组成部分
|
|
96
|
+
*/
|
|
97
|
+
parse(id) {
|
|
98
|
+
const timestamp = (id >> BigInt(this.timestampShift)) + this.epoch;
|
|
99
|
+
const datacenterId = (id >> BigInt(this.datacenterIdShift)) & BigInt(this.maxDatacenterId);
|
|
100
|
+
const workerId = (id >> BigInt(this.workerIdShift)) & BigInt(this.maxWorkerId);
|
|
101
|
+
const sequence = id & BigInt(this.sequenceMask);
|
|
102
|
+
return {
|
|
103
|
+
timestamp,
|
|
104
|
+
datacenterId,
|
|
105
|
+
workerId,
|
|
106
|
+
sequence,
|
|
107
|
+
generateTime: new Date(Number(timestamp))
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/** workerId */
|
|
112
|
+
export const WORKER_ID = 1;
|
|
113
|
+
/** datacenterId */
|
|
114
|
+
export const DATACENTER_ID = 1;
|
|
115
|
+
/** Snowflake 实例 */
|
|
116
|
+
export const snowflake = new Snowflake(WORKER_ID, DATACENTER_ID);
|
|
117
|
+
/** 生成 ID 方法(箭头函数保持 this 绑定,避免作为独立引用调用时丢失实例) */
|
|
118
|
+
export const nextId = () => snowflake.nextId();
|
|
119
|
+
//# sourceMappingURL=snowflake.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snowflake.js","sourceRoot":"","sources":["../../src/utils/snowflake.ts"],"names":[],"mappings":"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"}
|