@guandata/guanetl 0.1.38 → 0.1.40
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 +12 -0
- package/README.md +11 -0
- package/bin/run.js +14 -1
- package/package.json +6 -6
- package/skills/guanetl/SKILL.md +5 -3
- package/skills/guanetl/references/ETL_AI_DEVELOP.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## @guandata/guanetl 0.1.40 - 2026-10-12
|
|
4
|
+
|
|
5
|
+
- 无法读取服务端当前 ETL 版本时停止保存,避免用过期本地基线覆盖。
|
|
6
|
+
- 初始化工作目录时清除旧导出结果;共享配置写入增加并发保护。
|
|
7
|
+
- 平台包发布校验兼容 npm 12。
|
|
8
|
+
|
|
9
|
+
## @guandata/guanetl 0.1.39 - 2026-10-12
|
|
10
|
+
|
|
11
|
+
- ETL 保存接口即使返回 HTTP 200,只要结果为 `success=false` 就明确报错,并列出输入数据集校验失败项。
|
|
12
|
+
- 更新任务级 profile 使用指引,明确环境切换方式。
|
|
13
|
+
- 优化 `npm link` 开发场景提示:缺少本地构建时,提示执行 `npm run build`。
|
|
14
|
+
|
|
3
15
|
## @guandata/guanetl 0.1.38 - 2026-09-24
|
|
4
16
|
|
|
5
17
|
- 修复 ETL 输入数据集类型误判:导出及校验时使用数据集详情中的实际类型,避免错误覆盖输入节点类型。
|
package/README.md
CHANGED
|
@@ -53,6 +53,17 @@ guanetl install-skill
|
|
|
53
53
|
|
|
54
54
|
## 版本更新
|
|
55
55
|
|
|
56
|
+
### @guandata/guanetl 0.1.40
|
|
57
|
+
|
|
58
|
+
- 无法读取服务端当前 ETL 版本时停止保存,避免用过期本地基线覆盖。
|
|
59
|
+
- 初始化工作目录时清除旧导出结果;共享配置写入增加并发保护。
|
|
60
|
+
- 平台包发布校验兼容 npm 12。
|
|
61
|
+
|
|
62
|
+
### @guandata/guanetl 0.1.39
|
|
63
|
+
|
|
64
|
+
- ETL 保存接口返回 `success=false` 时明确报错并列出输入数据集校验结果,避免误报保存成功。
|
|
65
|
+
- 从源码目录运行但尚未构建时,启动器会提示先执行 `npm run build`。
|
|
66
|
+
|
|
56
67
|
### @guandata/guanetl 0.1.38
|
|
57
68
|
|
|
58
69
|
- 修复 ETL 输入数据集类型误判:导出及校验时使用数据集详情中的实际类型,避免错误覆盖输入节点类型。
|
package/bin/run.js
CHANGED
|
@@ -60,11 +60,24 @@ function resolvePlatformBinaries(options = {}) {
|
|
|
60
60
|
// Local development fallback. The generated directory is excluded from
|
|
61
61
|
// the published main package, so installed users always use the optional
|
|
62
62
|
// platform dependency above.
|
|
63
|
-
const
|
|
63
|
+
const pkgRoot = path.join(__dirname, "..");
|
|
64
|
+
const localBinDir = path.join(pkgRoot, "platforms", target.suffix, "bin");
|
|
64
65
|
const binaryPaths = {};
|
|
65
66
|
for (const binary of target.binaries) {
|
|
66
67
|
const binaryPath = path.join(localBinDir, binary);
|
|
67
68
|
if (!exists(binaryPath)) {
|
|
69
|
+
// scripts/ is not published, so this is a source checkout (npm link).
|
|
70
|
+
// npm link never installs the optional platform package; reinstalling
|
|
71
|
+
// from the registry would not help, the local build is missing.
|
|
72
|
+
if (exists(path.join(pkgRoot, "scripts", "build.js"))) {
|
|
73
|
+
throw new Error(
|
|
74
|
+
`Missing local build for ${key}: ${binaryPath}\n` +
|
|
75
|
+
`This ${PACKAGE_PREFIX} is a source checkout (npm link), which runs the ` +
|
|
76
|
+
`binaries built into platforms/ instead of the optional platform package.\n` +
|
|
77
|
+
`Build them first:\n` +
|
|
78
|
+
` cd "${pkgRoot}" && npm run build`
|
|
79
|
+
);
|
|
80
|
+
}
|
|
68
81
|
throw new Error(
|
|
69
82
|
`Missing optional platform package ${target.packageName} for ${key}.\n` +
|
|
70
83
|
`Reinstall without disabling optional dependencies:\n` +
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@guandata/guanetl",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.40",
|
|
4
4
|
"description": "观远 ETL 本地开发工具 - 拉取、编辑、导出、预览、保存 ETL",
|
|
5
5
|
"bin": {
|
|
6
6
|
"guanetl": "bin/run.js"
|
|
@@ -41,11 +41,11 @@
|
|
|
41
41
|
"node": ">=14"
|
|
42
42
|
},
|
|
43
43
|
"optionalDependencies": {
|
|
44
|
-
"@guandata/guanetl-darwin-arm64": "0.1.
|
|
45
|
-
"@guandata/guanetl-darwin-x64": "0.1.
|
|
46
|
-
"@guandata/guanetl-linux-x64": "0.1.
|
|
47
|
-
"@guandata/guanetl-linux-arm64": "0.1.
|
|
48
|
-
"@guandata/guanetl-win32-x64": "0.1.
|
|
44
|
+
"@guandata/guanetl-darwin-arm64": "0.1.40",
|
|
45
|
+
"@guandata/guanetl-darwin-x64": "0.1.40",
|
|
46
|
+
"@guandata/guanetl-linux-x64": "0.1.40",
|
|
47
|
+
"@guandata/guanetl-linux-arm64": "0.1.40",
|
|
48
|
+
"@guandata/guanetl-win32-x64": "0.1.40"
|
|
49
49
|
},
|
|
50
50
|
"publishConfig": {
|
|
51
51
|
"registry": "https://registry.npmjs.org/",
|
package/skills/guanetl/SKILL.md
CHANGED
|
@@ -31,7 +31,7 @@ compatibility: "Requires Node.js 14+. Install via npm link --foreground-scripts
|
|
|
31
31
|
|
|
32
32
|
### 0. 先确认前置条件
|
|
33
33
|
|
|
34
|
-
- 确认底层 CLI 认证正常:普通 guancli profile
|
|
34
|
+
- 确认底层 CLI 认证正常:普通 guancli profile 用 `GUANCLI_PROFILE=<profile> guancli auth status` 验证,后续命令继续使用同一 `GUANCLI_PROFILE`,仅用户明确要求切换机器级默认环境时才用 `auth use`;上游托管 OIDC Token 时在当前进程同时设置 `GUANCLI_OIDC_BASE_URL`/`GUANCLI_OIDC_ACCESS_TOKEN`,无需本地 profile;guancli-lite 设置 `GUANCLI_BASE_URL`/`GUANCLI_TOKEN`。
|
|
35
35
|
- 如果用户指定的资源(目录、数据集、ETL)搜索不到,先用 `guancli auth list` 列出所有可用环境,提示用户确认是否需要切换环境。
|
|
36
36
|
|
|
37
37
|
### Artifact contract(本地可测契约)
|
|
@@ -225,9 +225,11 @@ guanetl move <etl_id1> <etl_id2> --dir-id <etl_dir_id>
|
|
|
225
225
|
|
|
226
226
|
`save --dry-run` 只执行到合并和保存影响检查,不执行第 4 步。
|
|
227
227
|
|
|
228
|
-
新建 ETL
|
|
228
|
+
新建 ETL 首次保存时,只有服务端明确返回 ETL 不存在、且本地 base 与工作区 ETL ID 一致并尚无 actions,`save` 才使用 `create` 生成的 `_base_etl.json`,输出 `信息 [save.first_save_fallback]`。其他 edit 读取失败会终止保存(包括 dry-run);恢复网络或权限后重试,不能使用旧 base 覆盖服务端。
|
|
229
229
|
|
|
230
|
-
|
|
230
|
+
`edit` / `create` 重新初始化工作目录时会清除旧 `_exported.json`,包括重新编辑同一 ETL;必须重新 `export` 后再保存,避免把旧代码的导出写到新工作区。
|
|
231
|
+
|
|
232
|
+
用户不需要手写服务端保存 payload。`export` 通过只表示本地产物可生成,保存仍由服务端校验。`direct-save` 返回 `success:false` 时,`save` 会非零退出并显示服务端原因与输入节点校验详情,不报告保存成功、不刷新本地 base;先处理失败原因,再重试保存,不要继续运行未保存的修改。
|
|
231
233
|
|
|
232
234
|
### run --wait、run --run-upstream 与任务状态
|
|
233
235
|
|
|
@@ -352,7 +352,7 @@ func DefineETL() []Node {
|
|
|
352
352
|
|
|
353
353
|
`save` 会先拉取服务端当前 ETL,再把本地 `_exported.json` 合并进去。修改已保存 ETL 时,输出节点必须复用服务端已有输出数据集绑定,否则 direct-save 可能把它当成“创建新输出数据集”,触发“输出数据集目录中存在同名文件”。
|
|
354
354
|
|
|
355
|
-
新建 ETL
|
|
355
|
+
新建 ETL 首次保存时,只有服务端明确返回 ETL 不存在、且当前本地 base 与工作区 ETL ID 一致并尚无 actions,CLI 才回退本地 base 并输出 `save.first_save_fallback`。其他 edit 故障会终止保存及 dry-run;先恢复读取能力再重试,不能用旧 base 继续写入。
|
|
356
356
|
|
|
357
357
|
当本地输出节点 id 被重新生成,但 `outputDsName + parentDirId` 与一个服务端已绑定输出唯一匹配时,`save` 会在请求副本中自动恢复原节点 id 和 dsId,并在影响报告中输出 `save.output_binding_reconciled`。源 `_exported.json` 不会被改写。跨目录、双方重名歧义、删除旧输出或无法唯一匹配时不会自动协调。
|
|
358
358
|
|