e10-data 0.1.31 → 0.1.32

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/CHANGELOG.md CHANGED
@@ -1,5 +1,45 @@
1
1
  # 变更记录
2
2
 
3
+ ## 0.1.32(2026-10-22)—— 新增 `field options`:Select/下拉框字段选项值清单
4
+
5
+ ### 1. 背景
6
+
7
+ 宽表 / EB 表单的 Select 字段在 DSL 查询结果里存的是 **value_key(雪花 ID 编码)**,
8
+ 需要字典翻译才能给中文。旧口径有两条路都走不通:
9
+
10
+ - `field id2name`(testRemoteBrowser)只服务关联浏览按钮字段,对 Select 选项无效;
11
+ - 选项字典物理表(如 `t_vkrevnj43pemg6`)直查实测 500,且各数据集选项字典不固化。
12
+
13
+ 前端同款端点 `GET /api/ebuilder/common/ds/options?fieldName=&objId=&sourceType=&groupId=`
14
+ 实测对两种形态都可用(ETEAMS 宽表 + EB 表单),e10-data 原本未声明,本次收编为子命令。
15
+
16
+ ### 2. 改动
17
+
18
+ - **新增 `field options`**(挂在 `field name2id` 旁,不叫 ds options —— 它是通用下拉框
19
+ 选项方法,不限 DSL/宽表):
20
+
21
+ ```
22
+ field options --group <gid> --obj-id <数据集/表id> --field-name <字段name> [--source-type LOGIC|ETEAMS]
23
+ ```
24
+
25
+ - 端点:`GET /api/ebuilder/common/ds/options?fieldName=&objId=&sourceType=&groupId=`;
26
+ - `--field-name` 用 `ds fields` 返回的 `name`(EB 表单形如 `field_<id>`,ETEAMS 宽表
27
+ 形如 `wtlx` 等拼音缩写);`--obj-id` = 数据集/表 id;
28
+ - `--source-type` **需显式传参**(EB 表单=`LOGIC`、ETEAMS 宽表=`ETEAMS`);代码缺省给
29
+ `LOGIC` 兜底(与 ds 族口径一致),但 ETEAMS 场景漏传会查空,勿依赖默认值;
30
+ - 返回 `{id,name,archive}` 清单(EB 形态选项另带 `extra.valueKey`);`--json` 原样输出;
31
+ - 用途:Select 列存 value_key 时做显示映射,替代已停用的 id2name / 字典表直查。
32
+
33
+ - 改动点:`cmdFieldOptions()` 函数 + field 族 dispatch + `CMD_SUBS.field` 白名单 + 帮助文案。
34
+ - 版本号 0.1.31 → 0.1.32。
35
+
36
+ ### 3. 实测
37
+
38
+ - ETEAMS 宽表:`field options --group -98 --obj-id 1100575534012129280 --field-name wtlx
39
+ --source-type ETEAMS` → 4 项(缺陷 / 转需求 / 技术交流 / 技术交流【废弃】);
40
+ - EB 表单:`field options --group weaver-ebuilder-form-service --obj-id 840720984867880961
41
+ --field-name field_1068528184921841674`(缺省 LOGIC)→ 正常返回。
42
+
3
43
  ## 0.1.31(2026-10-21)—— 凭据获取快路径 + cred-helper stale socket 自愈(性能)
4
44
 
5
45
  ### 1. 背景
package/bin/e10-data.mjs CHANGED
@@ -779,7 +779,7 @@ const CMD_SUBS = {
779
779
  ds: ["groups", "find", "describe", "tables", "fields", "fields-dsl", "list", "chart", "stat", "count"],
780
780
  doc: ["count", "list"],
781
781
  noun: ["list", "scope"],
782
- field: ["id2name", "name2id"],
782
+ field: ["id2name", "name2id", "options"],
783
783
  conf: ["get", "batch", "batch-file", "group", "group-file", "resolve", "resolve-file", "add", "add-file", "update", "delete"],
784
784
  exp: ["status", "manifest", "commits", "file", "pull", "init", "commit", "lock", "release", "rollback"],
785
785
  attend: ["statis"],
@@ -1276,6 +1276,27 @@ async function cmdFieldsForDSL(args, json) {
1276
1276
  for (const f of (d.fields || [])) console.log([f.name, f.text, f.type, f.mainPrimaryKey ? "PK" : ""].filter(Boolean).join("\t"));
1277
1277
  }
1278
1278
  }
1279
+ // field options:Select/下拉框字段的选项值清单(2026-10-22 新增,挂在 field name2id 旁)
1280
+ // 端点:GET /api/ebuilder/common/ds/options?fieldName=&objId=&sourceType=&groupId=
1281
+ // 通用下拉框选项获取方法(不限 DSL/宽表):EB 表单与 ETEAMS 宽表都走它。
1282
+ // fieldName 用 ds fields 返回的 name(EB 表单形如 field_<id>,ETEAMS 宽表形如 wtlx 等
1283
+ // 拼音缩写),objId = 数据集/表 id;sourceType/groupId 与该表取数命令同源
1284
+ // (LOGIC + 业务分组,或 ETEAMS + 数据源分组)。
1285
+ // 用途:Select 字段列存 value_key 时,用本命令取 {id,name,archive} 字典完成显示映射
1286
+ // (替代已停用的 id2name / 选项字典物理表直查)。
1287
+ async function cmdFieldOptions(args, json) {
1288
+ const fieldName = need("field-name", args), objId = need("obj-id", args), groupId = need("group", args);
1289
+ const sourceType = args["source-type"] || "LOGIC";
1290
+ const qs = "fieldName=" + encodeURIComponent(fieldName)
1291
+ + "&objId=" + encodeURIComponent(objId)
1292
+ + "&sourceType=" + encodeURIComponent(sourceType)
1293
+ + "&groupId=" + encodeURIComponent(groupId);
1294
+ const r = await getUrl("/api/ebuilder/common/ds/options?" + qs);
1295
+ if (json) return r;
1296
+ const rows = Array.isArray(r.data) ? r.data : [];
1297
+ if (!rows.length) { console.log("(空:该字段无选项或参数不匹配) code=" + (r.code ?? "") + " msg=" + (r.msg || "")); return; }
1298
+ printHuman("选项清单 " + rows.length + " 项", rows, ["id", "name", "archive"]);
1299
+ }
1279
1300
  async function cmdList(args, json) {
1280
1301
  const gid = need("group", args), tid = need("table", args), fld = readListArg(need("fields", args));
1281
1302
  const fields = fld.split(",").map((f) => ({ fieldId: f, fieldName: f, objId: String(tid), mainField: true }));
@@ -3305,6 +3326,13 @@ noun 词库查询
3305
3326
  field 关联字段翻译
3306
3327
  field id2name --module <m> --type <t> --ids id1,id2 [--form-param '{"fieldId":"..","module":"ebuilderform"}'|--eb-browser-param '{..}'|--property-type x]
3307
3328
  field name2id --module <m> --type <t> --name 名称 [同上附加参数]
3329
+ field options --group <gid> --obj-id <数据集/表id> --field-name <字段name> [--source-type LOGIC|ETEAMS]
3330
+ # Select/下拉框字段的选项值 {id,name,archive}(GET /api/ebuilder/common/ds/options,
3331
+ # 通用下拉框选项方法,不限 DSL/宽表 —— EB 表单与 ETEAMS 宽表均适用)。
3332
+ # field-name 用 ds fields 的 name(EB 表单 field_<id> / ETEAMS 宽表拼音缩写如 wtlx);
3333
+ # ⚠️ --source-type 需**显式传参**(EB 表单=LOGIC、ETEAMS 宽表=ETEAMS);代码缺省给
3334
+ # LOGIC 兜底(与 ds 族口径一致),但 ETEAMS 场景漏传会查空,勿依赖默认值。
3335
+ # Select 列存 value_key 时用它做显示映射(替代已停用的 id2name / 字典表直查)。
3308
3336
  conf 环境参数配置中心(chatBi config map,替代 config-resolve 脚本 URL 直连;confType 默认由 CONN_/DS_/WF_/API_ 前缀推导,可 --type 显式)
3309
3337
  confGroup(配置分组,v0.1.9 新增,可选):confType=api 时后端支持二级分层(如 api/workflow),
3310
3338
  定位维度 = confType+confGroup+confKey;仅 confType=api(或显式传 --group)时才下发 confGroup,其他类型不带该字段
@@ -3421,6 +3449,7 @@ async function main() {
3421
3449
  } else if (family === "field") {
3422
3450
  if (sub === "id2name") result = await cmdFieldId2name(args, json);
3423
3451
  else if (sub === "name2id") result = await cmdFieldName2id(args, json);
3452
+ else if (sub === "options") result = await cmdFieldOptions(args, json);
3424
3453
  else { usage(); process.exit(1); }
3425
3454
  } else if (family === "conf") {
3426
3455
  if (!sub) { usage(); process.exit(1); }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "e10-data",
3
- "version": "0.1.31",
4
- "description": "泛微 E10 数据接口统一 CLI(data-assistant 专家配套):登录(login xiaoe-env,环境变量 XiaoE 全局 token 换 ETEAMSID,免浏览器/免 python)/DSL 查询/数据源/文档/词库/关联字段翻译/环境参数配置中心(conf,支持 confGroup 分组)/专家包版本管理;ds 取数(list/chart/stat/count)的 appId 由调用方显式传入 --app-id(v0.1.14 起 CLI 不再自动反查;EB 建模表单 weaver-ebuilder-form-service 必须带,appId 取自 ebdf_obj.app_id;2026-10-09 起不再做 EB 权限前置校验);认证凭据**唯一来源 = weaver-work-cli**(通过 `auth export-weaver-env` 命令出口取明文凭据,**不设 e10-login 回退**;加解密由该 CLI 自行负责,本 CLI 不实现任何加解密;仅 login xiaoe-env 在无凭据时自行换 token,写 profile 仍交 e10-login set)。v0.1.17 性能改造:免凭据命令(--version/--help/未知命令)提前返回、直连 e10-login JS 入口(去掉 shell:true 的 cmd.exe 开销)、新增凭据进程间 TTL 缓存(不落明文);v0.1.19(2026-09-24)新增 ds 发现层聚合 groups/find/describe(进程内并发,全 58 分组扫表实测 ~5.5s),并修复 ds tables --name 因 listByPage 端点切换导致的关键词过滤静默失效;v0.1.18(2026-09-24)新增 ds fields-dsl(接口 /api/dw/newetl/chatBi/ds/fieldsForDSL),并移除凭据明文镜像同步(不再写 ~/.workbuddy/e10-login-cache.md);v0.1.20(2026-09-24)凭据来源切换为 weaver-work-cli 唯一来源、移除 e10-login 回退,并补齐 userId/tenantKey 传递(修复 attend statis 等命令报「缺少查询人员」的问题)。v0.1.21(2026-09-28)新增 module call —— 模块配置接口调用(配置中心驱动):已确定「哪个模块的哪条具体接口」之后的一条命令取数入口(精取该条 confAttrs → 按 http_method/input_params 组参 → 发请求(自动禁代理 + Cookie/eteamsid/UA 三件套)→ 提取精简结果),与技能自带 script/call_module.py 等价(参数名/退出码/提取口径全对齐),复用本 CLI 凭据缓存与 conf 通道、零临时文件;同时 auth 归一化与凭据缓存补齐 userAgent(供 AgentType UA 使用,缺失时从 cookie 的 agentType= 推导)。v0.1.22(2026-10-10):移除 `eb perm-page` 命令(EB 建模表单取数不再做权限前置校验,appId 直接取 ebdf_obj.app_id);`--fields`/`--group-by`/`--order` 等逗号列表支持 `@文件`(逗号字符串或 JSON 数组,与 --where/--stat/--dsl 一致,规避 shell 拆分导致的静默丢列/0 行)。v0.1.23(2026-10-13)新增 `refusal get` —— 拒答话术 getRefusalSpeechTechnique(入参仅 type,返回对象的 data = 话术字符串;默认 auto 通道 = POST multipart 表单优先、返回不含 data 时自动回退 GET ?type=,可用 --http post|get 锁定单通道)。v0.1.25(2026-10-14)新增 `scene groups|items` —— 场景定位元数据 getSceneGroups(① groups 分组骨架 / ② items --group <groupId> 组内条目),由技能 references/scene-locate/scripts/locate.mjs 整体迁入(属元数据定位接口、不取业务数据):默认输出精简 JSON(groups: groupId/groupName/itemCount/groupDesc;items: id/datasetName/datasetType/sourceId[/moduleName/sourceType/sourceGroupId/appId]/datasetDesc),--json 原样输出接口返回,计数走 stderr;--client agent|all|connector 默认 agent。v0.1.26(2026-10-15)新增 `refusal rules` —— 拒答话术规则 getRefusalSpeechRules(**无入参**,返回对象的 data = 对象数组;调用方式与 refusal get 同口径:默认 auto 通道 = POST 空 multipart 表单优先、返回不含 data 时回退 GET,可用 --http post|get 锁定单通道;人读直接打印 data 数组,--json 原样输出整个响应对象)。v0.1.27(2026-10-15)新增 `noun scope --ids <id1,id2|@ids.json>` —— 词库**按生效范围批量检索**(端点 /api/dw/newetl/chatBi/doc/getChatBiDocByScopeId,POST body = 数据集 id 的 JSON 数组;入参 = 数据集 id 列表 = `scene items --group <分组id>` 里每个条目的 `id`;命中 = allScope=1 全局词库 ∪ scopeEffectId 含任一传入 id;id 按字符串下发,避免 19 位雪花号超 2^53 丢精度)。属**新增通道**,原 `noun list --skill <skillKey>`(getChatDocsBySkillKey)行为**完全不变**。 v0.1.28(2026-10-17):`module call` 支持 `--type <confType>`(自定义 confType / 域级配置分组,默认 `api`,不传时行为与旧版一致)与 `--show-params` 精简模式(默认省略 `request_example`,`--full` / `--with-example` 回显,`--no-example` 显式精简),`--show-params` 输出新增 `conf_type` 字段。v0.1.29(2026-10-19)本地增强:`module call` 新增 `--conf-file <文件|@文件>`——直接读本地 confAttrs 跳过 `conf get`(同一 confKey 一次问数只取一次配置),兼容模板缓存与 `conf get --json` 原样输出,带该参数时 `--group`/`--conf-key` 可从文件回填,stderr 提示「未请求配置中心」;缓存缺失/过期时去掉该参数即回退原路径。 v0.1.30(2026-10-19):query 透传后端 executeQueryDsl 新增的 4 个 @RequestParam(dimension=后端 confKey / confGroup / username / startDate,恒定发送、值允许为空,缺键即失败),并显式声明 Content-Type=application/json;charset=utf-8。",
3
+ "version": "0.1.32",
4
+ "description": "泛微 E10 数据接口统一 CLI(data-assistant 专家配套):登录(login xiaoe-env,环境变量 XiaoE 全局 token 换 ETEAMSID,免浏览器/免 python)/DSL 查询/数据源/文档/词库/关联字段翻译/环境参数配置中心(conf,支持 confGroup 分组)/专家包版本管理;ds 取数(list/chart/stat/count)的 appId 由调用方显式传入 --app-id(v0.1.14 起 CLI 不再自动反查;EB 建模表单 weaver-ebuilder-form-service 必须带,appId 取自 ebdf_obj.app_id;2026-10-09 起不再做 EB 权限前置校验);认证凭据**唯一来源 = weaver-work-cli**(通过 `auth export-weaver-env` 命令出口取明文凭据,**不设 e10-login 回退**;加解密由该 CLI 自行负责,本 CLI 不实现任何加解密;仅 login xiaoe-env 在无凭据时自行换 token,写 profile 仍交 e10-login set)。v0.1.17 性能改造:免凭据命令(--version/--help/未知命令)提前返回、直连 e10-login JS 入口(去掉 shell:true 的 cmd.exe 开销)、新增凭据进程间 TTL 缓存(不落明文);v0.1.19(2026-09-24)新增 ds 发现层聚合 groups/find/describe(进程内并发,全 58 分组扫表实测 ~5.5s),并修复 ds tables --name 因 listByPage 端点切换导致的关键词过滤静默失效;v0.1.18(2026-09-24)新增 ds fields-dsl(接口 /api/dw/newetl/chatBi/ds/fieldsForDSL),并移除凭据明文镜像同步(不再写 ~/.workbuddy/e10-login-cache.md);v0.1.20(2026-09-24)凭据来源切换为 weaver-work-cli 唯一来源、移除 e10-login 回退,并补齐 userId/tenantKey 传递(修复 attend statis 等命令报「缺少查询人员」的问题)。v0.1.21(2026-09-28)新增 module call —— 模块配置接口调用(配置中心驱动):已确定「哪个模块的哪条具体接口」之后的一条命令取数入口(精取该条 confAttrs → 按 http_method/input_params 组参 → 发请求(自动禁代理 + Cookie/eteamsid/UA 三件套)→ 提取精简结果),与技能自带 script/call_module.py 等价(参数名/退出码/提取口径全对齐),复用本 CLI 凭据缓存与 conf 通道、零临时文件;同时 auth 归一化与凭据缓存补齐 userAgent(供 AgentType UA 使用,缺失时从 cookie 的 agentType= 推导)。v0.1.22(2026-10-10):移除 `eb perm-page` 命令(EB 建模表单取数不再做权限前置校验,appId 直接取 ebdf_obj.app_id);`--fields`/`--group-by`/`--order` 等逗号列表支持 `@文件`(逗号字符串或 JSON 数组,与 --where/--stat/--dsl 一致,规避 shell 拆分导致的静默丢列/0 行)。v0.1.23(2026-10-13)新增 `refusal get` —— 拒答话术 getRefusalSpeechTechnique(入参仅 type,返回对象的 data = 话术字符串;默认 auto 通道 = POST multipart 表单优先、返回不含 data 时自动回退 GET ?type=,可用 --http post|get 锁定单通道)。v0.1.25(2026-10-14)新增 `scene groups|items` —— 场景定位元数据 getSceneGroups(① groups 分组骨架 / ② items --group <groupId> 组内条目),由技能 references/scene-locate/scripts/locate.mjs 整体迁入(属元数据定位接口、不取业务数据):默认输出精简 JSON(groups: groupId/groupName/itemCount/groupDesc;items: id/datasetName/datasetType/sourceId[/moduleName/sourceType/sourceGroupId/appId]/datasetDesc),--json 原样输出接口返回,计数走 stderr;--client agent|all|connector 默认 agent。v0.1.26(2026-10-15)新增 `refusal rules` —— 拒答话术规则 getRefusalSpeechRules(**无入参**,返回对象的 data = 对象数组;调用方式与 refusal get 同口径:默认 auto 通道 = POST 空 multipart 表单优先、返回不含 data 时回退 GET,可用 --http post|get 锁定单通道;人读直接打印 data 数组,--json 原样输出整个响应对象)。v0.1.27(2026-10-15)新增 `noun scope --ids <id1,id2|@ids.json>` —— 词库**按生效范围批量检索**(端点 /api/dw/newetl/chatBi/doc/getChatBiDocByScopeId,POST body = 数据集 id 的 JSON 数组;入参 = 数据集 id 列表 = `scene items --group <分组id>` 里每个条目的 `id`;命中 = allScope=1 全局词库 ∪ scopeEffectId 含任一传入 id;id 按字符串下发,避免 19 位雪花号超 2^53 丢精度)。属**新增通道**,原 `noun list --skill <skillKey>`(getChatDocsBySkillKey)行为**完全不变**。 v0.1.28(2026-10-17):`module call` 支持 `--type <confType>`(自定义 confType / 域级配置分组,默认 `api`,不传时行为与旧版一致)与 `--show-params` 精简模式(默认省略 `request_example`,`--full` / `--with-example` 回显,`--no-example` 显式精简),`--show-params` 输出新增 `conf_type` 字段。v0.1.29(2026-10-19)本地增强:`module call` 新增 `--conf-file <文件|@文件>`——直接读本地 confAttrs 跳过 `conf get`(同一 confKey 一次问数只取一次配置),兼容模板缓存与 `conf get --json` 原样输出,带该参数时 `--group`/`--conf-key` 可从文件回填,stderr 提示「未请求配置中心」;缓存缺失/过期时去掉该参数即回退原路径。 v0.1.30(2026-10-19):query 透传后端 executeQueryDsl 新增的 4 个 @RequestParam(dimension=后端 confKey / confGroup / username / startDate,恒定发送、值允许为空,缺键即失败),并显式声明 Content-Type=application/json;charset=utf-8。v0.1.31(2026-10-21)凭据直读快路径(providerAuthFileDirect 直读 weaver-work-cli auth 文件解密,省 2 个子进程约 5.6s→~0.1s)+ cred-helper stale socket 自愈。v0.1.32(2026-10-22)新增 `field options` —— Select/下拉框字段的选项值清单 {id,name,archive}(GET /api/ebuilder/common/ds/options?fieldName=&objId=&sourceType=&groupId=,通用下拉框选项方法,不限 DSL/宽表:EB 表单与 ETEAMS 宽表均适用;--field-name 用 ds fields 的 name,--source-type 需显式传参 LOGIC|ETEAMS、代码缺省 LOGIC 兜底;Select 列存 value_key 时用它做显示映射,替代已停用的 id2name/字典表直查)。",
5
5
  "author": "e10-dw",
6
6
  "license": "MIT",
7
7
  "type": "module",