kcode-pi 0.1.6 → 0.1.7
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 +18 -2
- package/package.json +1 -1
- package/src/official/kingdee-skills.ts +60 -13
- package/src/rules/checker.ts +143 -0
- package/vendor/kingdee-skills/kingdee-cosmic-reviewer/SKILL.md +2 -2
- package/vendor/kingdee-skills/ok-cosmic/SKILL.md +52 -101
- package/vendor/kingdee-skills/ok-cosmic/agents/openai.yaml +4 -4
- package/vendor/kingdee-skills/ok-cosmic/manifest.json +21 -20
- package/vendor/kingdee-skills/ok-cosmic/ok-cosmic-intro.html +1 -1
- package/vendor/kingdee-skills/ok-cosmic/rules/a-layer-rules.json +1 -1
- package/vendor/kingdee-skills/ok-cosmic/rules/anti-patterns.md +2 -2
- package/vendor/kingdee-skills/ok-cosmic/rules/coding-preferences.md +4 -4
- package/vendor/kingdee-skills/ok-cosmic/rules/constraints.md +3 -3
- package/vendor/kingdee-skills/ok-cosmic/rules/decision-matrix.md +8 -8
- package/vendor/kingdee-skills/ok-cosmic/rules/intent-routing.md +1 -1
- package/vendor/kingdee-skills/ok-cosmic/rules/post-check.md +19 -18
- package/vendor/kingdee-skills/ok-ksql/SKILL.md +9 -9
- package/vendor/kingdee-skills/ok-ksql/manifest.json +2 -1
- package/vendor/kingdee-skills/ok-ksql/references/ksql-datafix.md +2 -2
- package/vendor/kingdee-skills/kingdee-cosmic-reviewer/scripts/pattern-matcher.py +0 -336
- package/vendor/kingdee-skills/kingdee-cosmic-reviewer/scripts/review-score-calculator.py +0 -121
- package/vendor/kingdee-skills/ok-cosmic/CHANGELOG.md +0 -295
- package/vendor/kingdee-skills/ok-cosmic/README.md +0 -460
- package/vendor/kingdee-skills/ok-cosmic/requirements.txt +0 -2
- package/vendor/kingdee-skills/ok-cosmic/scripts/config_loader.py +0 -204
- package/vendor/kingdee-skills/ok-cosmic/scripts/cosmic-api-knowledge.py +0 -910
- package/vendor/kingdee-skills/ok-cosmic/scripts/cosmic-basedata-query.py +0 -359
- package/vendor/kingdee-skills/ok-cosmic/scripts/cosmic-config-check.py +0 -181
- package/vendor/kingdee-skills/ok-cosmic/scripts/cosmic-extpoints-query.py +0 -389
- package/vendor/kingdee-skills/ok-cosmic/scripts/cosmic-form-metadata.py +0 -856
- package/vendor/kingdee-skills/ok-cosmic/scripts/cosmic-post-check.py +0 -262
- package/vendor/kingdee-skills/ok-cosmic/scripts/cosmic-post-lint.py +0 -293
- package/vendor/kingdee-skills/ok-cosmic/scripts/lint/__init__.py +0 -2
- package/vendor/kingdee-skills/ok-cosmic/scripts/lint/base.py +0 -393
- package/vendor/kingdee-skills/ok-cosmic/scripts/lint/resource_check.py +0 -176
- package/vendor/kingdee-skills/ok-cosmic/scripts/lint/scene_check.py +0 -375
- package/vendor/kingdee-skills/ok-cosmic/scripts/lint/style_check.py +0 -434
- package/vendor/kingdee-skills/ok-cosmic/scripts/lint/verify_check.py +0 -36
- package/vendor/kingdee-skills/ok-cosmic/scripts/route_client.py +0 -186
- package/vendor/kingdee-skills/ok-cosmic/scripts/script_utils.py +0 -40
- package/vendor/kingdee-skills/ok-cosmic/scripts/sqlite_cache.py +0 -142
- package/vendor/kingdee-skills/ok-cosmic/setup/cuslib/kd-cd-cosmic-commons.jar +0 -0
- package/vendor/kingdee-skills/ok-cosmic/setup/cuslib/kd-cd-cosmic-features.jar +0 -0
- package/vendor/kingdee-skills/ok-cosmic/setup/setup-mac.sh +0 -18
- package/vendor/kingdee-skills/ok-cosmic/setup/setup-windows.bat +0 -53
- package/vendor/kingdee-skills/ok-cosmic/setup/setup.jar +0 -0
- package/vendor/kingdee-skills/ok-ksql/scripts/ksql_lint.py +0 -363
|
@@ -5,44 +5,44 @@
|
|
|
5
5
|
"author": "Cosmic",
|
|
6
6
|
"tools": [
|
|
7
7
|
{
|
|
8
|
-
"name": "
|
|
9
|
-
"description": "
|
|
10
|
-
"source": "
|
|
8
|
+
"name": "kd_cosmic_api",
|
|
9
|
+
"description": "搜索苍穹类名/API 线索。用法: mode=search query=<keyword...> [config=<json>]",
|
|
10
|
+
"source": "kcode-node:cosmic-api"
|
|
11
11
|
},
|
|
12
12
|
{
|
|
13
|
-
"name": "
|
|
14
|
-
"description": "
|
|
15
|
-
"source": "
|
|
13
|
+
"name": "kd_cosmic_api",
|
|
14
|
+
"description": "搜索苍穹方法名。用法: mode=search-method query=<keyword...> [config=<json>]",
|
|
15
|
+
"source": "kcode-node:cosmic-api"
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
|
-
"name": "
|
|
19
|
-
"description": "
|
|
20
|
-
"source": "
|
|
18
|
+
"name": "kd_cosmic_api",
|
|
19
|
+
"description": "获取类/API 详情线索。用法: mode=detail query=<full.class.Name> [method=<keyword>] [compact=true]",
|
|
20
|
+
"source": "kcode-node:cosmic-api"
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
|
-
"name": "
|
|
24
|
-
"description": "查询表单元数据字段。用法:
|
|
25
|
-
"source": "
|
|
23
|
+
"name": "kd_cosmic_metadata",
|
|
24
|
+
"description": "查询表单元数据字段。用法: form=<formIdOrName> [config=<json>] [fuzzy=<words>] [sql=true] [showDetail=true]",
|
|
25
|
+
"source": "kcode-node:cosmic-metadata"
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
"name": "cosmic_query_basedata",
|
|
29
|
-
"description": "
|
|
30
|
-
"source": "
|
|
29
|
+
"description": "基础资料在线查询已从 npm 包移除。entityId 必须先由 kd_cosmic_metadata 确认;需要实时数据时由项目侧接口或人工查询提供证据。",
|
|
30
|
+
"source": "kcode-node:metadata-gated-manual"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"name": "cosmic_query_extpoints",
|
|
34
|
-
"description": "
|
|
35
|
-
"source": "
|
|
34
|
+
"description": "业务拓展点候选通过 kd_search/kd_cosmic_api 查询随包知识和项目代码;命中接口类名后继续用 kd_cosmic_api detail 或编译验证签名。",
|
|
35
|
+
"source": "kcode-node:cosmic-api"
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
"name": "cosmic_post_check",
|
|
39
|
-
"description": "
|
|
40
|
-
"source": "
|
|
39
|
+
"description": "代码生成后统一检查入口。先运行 kd_check;条件允许时再运行 kd_build 或项目编译命令;ERROR 必须修复后复检。",
|
|
40
|
+
"source": "kcode-node:kd-check"
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
"name": "cosmic_config_check",
|
|
44
|
-
"description": "Step 0
|
|
45
|
-
"source": "
|
|
44
|
+
"description": "Step 0 环境与配置预检。运行 kd_cosmic_config;当前项目没有 ok-cosmic.json 时使用 KCode 随包默认配置并给出 warning。",
|
|
45
|
+
"source": "kcode-node:cosmic-config"
|
|
46
46
|
}
|
|
47
47
|
],
|
|
48
48
|
"assets": [
|
|
@@ -72,6 +72,7 @@
|
|
|
72
72
|
".DS_Store",
|
|
73
73
|
"__pycache__/",
|
|
74
74
|
"*.pyc",
|
|
75
|
+
"*.py",
|
|
75
76
|
"setup/**",
|
|
76
77
|
"README.md"
|
|
77
78
|
]
|
|
@@ -497,7 +497,7 @@
|
|
|
497
497
|
<div class="flow-line" style="margin:24px 0;">
|
|
498
498
|
<div class="flow-box">生成 .java</div>
|
|
499
499
|
<div class="flow-arrow">→</div>
|
|
500
|
-
<div class="flow-box">
|
|
500
|
+
<div class="flow-box">kd_check + kd_build</div>
|
|
501
501
|
<div class="flow-arrow">→</div>
|
|
502
502
|
<div class="flow-box" style="border-color:var(--accent);">Gradle?</div>
|
|
503
503
|
</div>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# 禁忌清单 (Anti-Patterns)
|
|
2
2
|
|
|
3
|
-
>
|
|
4
|
-
> 幻觉方法名/类名黑名单用于事前人工/AI 自检,`
|
|
3
|
+
> 本文件为禁忌清单;其中高价值 SCENE 规则已逐步迁移到 KCode `kd_check`。
|
|
4
|
+
> 幻觉方法名/类名黑名单用于事前人工/AI 自检,`HAL-*` 事后 lint 规则已废弃;精确签名优先通过 `kd_cosmic_api`、项目 SDK 或编译验证。
|
|
5
5
|
> 场景错配条目默认属于 **A 层硬约束**,除非单独标注 `[B层]`。
|
|
6
6
|
> 编码风格(STYLE-\*)和资源管理(RESOURCE-\*)规则见 [coding-preferences.md](coding-preferences.md)。
|
|
7
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 编码偏好、默认写法与治理方向
|
|
2
2
|
|
|
3
|
-
> 本文件为 `
|
|
3
|
+
> 本文件为 `kd_check` 中 STYLE / RESOURCE / VERIFY 类规则的领域来源。
|
|
4
4
|
> 幻觉禁忌和场景错配见 [anti-patterns.md](anti-patterns.md);当前自动 lint 规则前缀为 SCENE-\*。
|
|
5
5
|
|
|
6
6
|
本文件承载 `ok-cosmic` 的 **B 层** 和 **C 层** 规则:
|
|
@@ -61,9 +61,9 @@
|
|
|
61
61
|
|
|
62
62
|
## B2. 元数据与脚本配合细则
|
|
63
63
|
|
|
64
|
-
- **[B2.1]** **元数据查询约束**:调用 `
|
|
64
|
+
- **[B2.1]** **元数据查询约束**:调用 `kd_cosmic_metadata` 时,工具会尽量展示字段;如果概览模式未显示所需字段,请主动在 `fuzzy` 中增加搜索词进行精准匹配。
|
|
65
65
|
- **[B2.2]** 如果脚本未查到字段或表单元数据,必须提醒用户确认其提供的表单名称/标识是否正确,再继续处理。
|
|
66
|
-
- **[B2.3]** **字段元数据强制验证**:只要要生成/修改代码,且已知目标单据/表单,凡涉及字段(无论用户给中文名还是英文标识),都必须通过 `
|
|
66
|
+
- **[B2.3]** **字段元数据强制验证**:只要要生成/修改代码,且已知目标单据/表单,凡涉及字段(无论用户给中文名还是英文标识),都必须通过 `kd_cosmic_metadata` 确认字段存在、字段类型、所属实体和特殊取值规则后再写入代码。
|
|
67
67
|
- **[B2.4]** **批量合并**:需要确认多个字段时,必须合并为一次 `--fuzzy` 调用(如 `--fuzzy qty price amount material org`),严禁逐个字段发起多次查询。
|
|
68
68
|
- **[B2.5]** **自动详情**:当 `--fuzzy` 传入 ≥3 个关键词时,脚本自动升级为详情模式(含枚举/refType),无需手动追加 `--show-detail`。
|
|
69
69
|
- **[B2.6]** **常规字段对齐**:仅确认 1-2 个字段标识时,不带 `--show-detail` 和 `--sql`。
|
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
|
|
92
92
|
## 自动检测规则速查(STYLE / RESOURCE)
|
|
93
93
|
|
|
94
|
-
> 以下规则由 `
|
|
94
|
+
> 以下规则由 `kd_check` 自动扫描,尚未自动覆盖的规则仍需人工审查。
|
|
95
95
|
> A 层规则 ID 定义在 [a-layer-rules.json](a-layer-rules.json)(单一可信源),报 ERROR 必须修复;B 层报 WARNING,新代码优先修复。
|
|
96
96
|
|
|
97
97
|
### STYLE-\*: 编码风格
|
|
@@ -14,15 +14,15 @@
|
|
|
14
14
|
|
|
15
15
|
- **[A1.1] 拒绝幻觉**:严禁凭记忆或猜测生成任何 API 签名、事件方法名或单据字段标识。
|
|
16
16
|
- **[A1.2] 模板强制先行**:AI 在生成任何苍穹插件代码前,必须先读取对应的 `assets/*.java` 模板文件,并严格遵守模板中的方法签名。
|
|
17
|
-
- **[A1.3] 签名强制校验**:在编写任何 `@Override` 方法或调用 BOS SDK 关键方法前,应通过 `
|
|
17
|
+
- **[A1.3] 签名强制校验**:在编写任何 `@Override` 方法或调用 BOS SDK 关键方法前,应通过 `kd_cosmic_api mode=detail`、项目 SDK 或编译结果验证该方法确实存在且签名准确(已在 `rules/cheat-sheet.md` 中列出的 API 可直接使用,无需额外验证)。`API-*` 事后 lint 规则已废弃,若事前校验被跳过,只能依赖编译、工具查询或人工确认补救。
|
|
18
18
|
- **[A1.4] 入口对齐协议**:
|
|
19
19
|
- **UI 控制 (只读/隐藏/弹窗)**:必须通过 `IFormView`(由 `this.getView()` 获取)。
|
|
20
20
|
- **数据操作 (取值/赋值/结构)**:必须通过 `IDataModel`(由 `this.getModel()` 获取)。
|
|
21
21
|
- **[A1.5] 验证优先级**:在使用原生 SDK 前,必须先查本地 `.md`,再通过脚本验证。
|
|
22
22
|
- **[A1.6] 继承溯源**:利用脚本返回的继承树确认方法是否在基类中。
|
|
23
23
|
- **[A1.7] 代码风格基线**:新生成代码必须以对应模板为主,不得脱离模板随意改写方法签名、生命周期方法或基础骨架。
|
|
24
|
-
- **[A1.8] 枚举/下拉选项值禁猜**:凡是需要使用 `ComboField`、下拉列表等字段的**具体选项值**(无论用于条件判断、状态赋值、QFilter 构造、数据反写还是任何其他场景),**严禁凭空编造或凭经验猜测**。必须先通过 `
|
|
25
|
-
- **[A1.9] 字段生成代码强制验证**:只要要生成或修改代码,且已知目标单据/表单(`formId` 或 `billName`),凡涉及字段(无论用户给的是中文名还是英文标识),都必须先通过 `
|
|
24
|
+
- **[A1.8] 枚举/下拉选项值禁猜**:凡是需要使用 `ComboField`、下拉列表等字段的**具体选项值**(无论用于条件判断、状态赋值、QFilter 构造、数据反写还是任何其他场景),**严禁凭空编造或凭经验猜测**。必须先通过 `kd_cosmic_metadata showDetail=true` 查询该字段,读取返回结果中「附加信息 (Ext)」列的真实枚举映射(如 `A:已审核, B:暂存`),确认后才能将对应的值写入代码。
|
|
25
|
+
- **[A1.9] 字段生成代码强制验证**:只要要生成或修改代码,且已知目标单据/表单(`formId` 或 `billName`),凡涉及字段(无论用户给的是中文名还是英文标识),都必须先通过 `kd_cosmic_metadata` 验证字段是否存在、字段类型、所属实体(表头/表体/子表体/容器)和特殊取值规则(如 `BasedataPropField` 的 `refType`、`LargeTextField` 的 `{fieldKey}_tag`、Combo/下拉字段 Ext 映射)。未验证前不得直接把用户给出的字段写入代码。
|
|
26
26
|
|
|
27
27
|
## A2. 平台开发红线
|
|
28
28
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
如果用户原话还是业务描述、还没翻译成“操作插件 / 表单插件 / 基础资料能力”等技术场景,先读 [intent-routing.md](intent-routing.md) 做语义翻译。
|
|
6
6
|
|
|
7
|
-
> **提示**:`入口类` 主要用于缩小 `
|
|
7
|
+
> **提示**:`入口类` 主要用于缩小 `kd_cosmic_api` 的搜索范围,不代表必须直接依赖原生 API;`封装文档` 和 `原生文档` 都应先读 `TL;DR`,确实需要时再展开全文。
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
### 基础资料 {#basedata}
|
|
141
141
|
- **关键词**: 基础资料 / 管控策略 / 分配 / 个性化 / 客户 / 物料 / 供应商
|
|
142
142
|
- **入口类**: `BaseDataServiceHelper` · `kd.bd.master.*`
|
|
143
|
-
- **先读**: 先用 `
|
|
143
|
+
- **先读**: 先用 `kd_cosmic_metadata` 确认 `refType` / `entityId`,实时基础资料值需项目侧证据
|
|
144
144
|
- **兜底**: [sdk-dynamic-model-svc.md](../references/base/sdk/sdk-dynamic-model-svc.md)
|
|
145
145
|
- **片段**: [BaseDataQuerySample](../assets/snippets/query/BaseDataQuerySample.java)
|
|
146
146
|
|
|
@@ -199,10 +199,10 @@
|
|
|
199
199
|
|
|
200
200
|
### 业务拓展点查询 {#business-extpoints}
|
|
201
201
|
- **关键词**: 业务拓展点 / 业务扩展点 / SDK 扩展接口 / 扩展场景 / 扩展插件 / 二开接口 / Java 示例 / route extpoint
|
|
202
|
-
-
|
|
203
|
-
- **先查**:
|
|
204
|
-
- **示例查询**:
|
|
205
|
-
- **后续验证**:
|
|
202
|
+
- **入口工具**: `kd_search` / `kd_cosmic_api`
|
|
203
|
+
- **先查**: 用业务关键词搜索随包知识、项目代码和扩展代码库
|
|
204
|
+
- **示例查询**: 只有当需要生成实现代码或查看 Java/代码示例时,才展开参考实现全文
|
|
205
|
+
- **后续验证**: 若参考实现中已有清晰 Java 示例代码(能识别 `implements` 接口、`@Override` 方法、参数与返回值),可先按示例生成;若示例缺失/不完整/签名仍不确定,再用 `kd_cosmic_api mode=detail query=<full.class.Name>` 或编译确认
|
|
206
206
|
- **约束**: 仅用于定位标准产品预留的业务拓展点候选;不要误判为 OpenAPI 控制器、表单插件或操作插件;示例代码可作为优先参考,但示例不清晰时不得猜方法签名
|
|
207
207
|
|
|
208
208
|
---
|
|
@@ -215,8 +215,8 @@
|
|
|
215
215
|
- "保存前校验 + 审核后下推 + 下推后在 BOTP 回写阶段更新来源" → 操作插件 + 转换插件 + 反写插件
|
|
216
216
|
- "列表批量选中 + 弹窗编辑 + 保存" → 列表插件 + 表单插件 + 操作插件
|
|
217
217
|
2. **纯后端逻辑(无 UI、无操作链)**:优先命中"查询与存取""基础资料""消息通知""并发上下文恢复"等能力卡片;仍不匹配时,再回到 `references/base/sdk/` 原生 SDK 文档。
|
|
218
|
-
3. **用户想找标准产品预留扩展点**:优先命中 [`#business-extpoints`](#business-extpoints),用业务关键词查候选接口,再用 `
|
|
219
|
-
4. **仍无法匹配**:先用 `
|
|
218
|
+
3. **用户想找标准产品预留扩展点**:优先命中 [`#business-extpoints`](#business-extpoints),用业务关键词查候选接口,再用 `kd_cosmic_api mode=detail` 或编译校验签名。
|
|
219
|
+
4. **仍无法匹配**:先用 `kd_cosmic_api mode=search query=<关键词>` 搜索相关类,再向用户确认具体实现方向后动手。
|
|
220
220
|
5. **扩展代码库探索**(需 `ok-cosmic.json` 配置 `extensionRepos`):
|
|
221
221
|
用当前需求关键词在扩展代码库中搜索相关 Java 实现,
|
|
222
222
|
作为实现参考但仍需遵守 ok-cosmic 规范。
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
| 用户常说的话 | 优先翻译为 | 对应矩阵 |
|
|
77
77
|
|---|---|---|
|
|
78
78
|
| 查业务拓展点 / 找业务扩展点 / 有没有标准扩展点 / SDK 扩展接口 / 扩展场景编码 / 业务扩展插件 / 给我拓展点 Java 示例 | 查询标准产品预留的业务拓展点候选 | [`#business-extpoints`](decision-matrix.md#business-extpoints) |
|
|
79
|
-
| 查类 / 查方法 / 看签名 / 这个接口有哪些方法 | SDK API 事实查询 | 先走 `
|
|
79
|
+
| 查类 / 查方法 / 看签名 / 这个接口有哪些方法 | SDK API 事实查询 | 先走 `kd_cosmic_api`;已命中具体实现需求时再回到矩阵 |
|
|
80
80
|
|
|
81
81
|
## 常见误判修正
|
|
82
82
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# 生成后自动校验规则 (Post-Check)
|
|
2
2
|
|
|
3
|
-
`
|
|
3
|
+
KCode 的 `kd_check` + `kd_build` 是代码生成后的**统一检查入口**,自动选择可用检查策略:
|
|
4
4
|
|
|
5
|
-
- **Gradle 项目** →
|
|
6
|
-
- **非 Gradle 项目** →
|
|
5
|
+
- **Gradle 项目** → 优先执行项目编译命令或 `kd_build`,编译成功后继续执行 `kd_check` 场景/风格校验
|
|
6
|
+
- **非 Gradle 项目** → 直接执行 `kd_check` 静态校验(A/B/C 三层规则中已迁移的部分)
|
|
7
7
|
|
|
8
8
|
## 触发条件
|
|
9
9
|
|
|
@@ -11,40 +11,41 @@
|
|
|
11
11
|
|
|
12
12
|
## 默认执行命令
|
|
13
13
|
|
|
14
|
-
```
|
|
15
|
-
|
|
14
|
+
```text
|
|
15
|
+
kd_check path=<生成的文件或目录>
|
|
16
|
+
kd_build
|
|
16
17
|
```
|
|
17
18
|
|
|
18
|
-
|
|
19
|
+
执行策略:
|
|
19
20
|
1. 从目标文件路径**向上查找** `build.gradle` + `settings.gradle` 共存的目录
|
|
20
|
-
2. 找到 → Gradle
|
|
21
|
-
3. 未找到 → 回退到 `
|
|
21
|
+
2. 找到 → 执行项目 Gradle/Maven 编译或 `kd_build`
|
|
22
|
+
3. 未找到 → 回退到 `kd_check` 静态校验
|
|
22
23
|
|
|
23
24
|
## 严格模式(仅 post-lint 回退时生效)
|
|
24
25
|
|
|
25
26
|
当用户明确要求"严格校验""模板升级治理""补事实来源留痕"时,再追加严格模式:
|
|
26
27
|
|
|
27
|
-
```
|
|
28
|
-
|
|
28
|
+
```text
|
|
29
|
+
kd_check path=<生成的文件或目录>
|
|
29
30
|
```
|
|
30
31
|
|
|
31
32
|
说明:
|
|
32
33
|
|
|
33
|
-
-
|
|
34
|
+
- 严格模式下,除 `kd_check` 外还需要人工核对 **C 层** 验证来源注释。
|
|
34
35
|
- Gradle 编译本身不区分严格/宽松——编译器检查的就是全部约束。
|
|
35
36
|
|
|
36
37
|
## 校验流程
|
|
37
38
|
|
|
38
39
|
```mermaid
|
|
39
40
|
graph TB
|
|
40
|
-
A[生成代码] --> B[执行
|
|
41
|
+
A[生成代码] --> B[执行 kd_check]
|
|
41
42
|
B --> C{Gradle 项目?}
|
|
42
|
-
C -->|否| D[
|
|
43
|
+
C -->|否| D[kd_check 静态校验]
|
|
43
44
|
C -->|是| E{JAVA_HOME 兼容?}
|
|
44
|
-
E -->|否| F[
|
|
45
|
+
E -->|否| F[kd_check + JDK 设置提示]
|
|
45
46
|
E -->|是| G[Gradle 编译]
|
|
46
47
|
G -->|失败| H[修复代码 → 重新编译]
|
|
47
|
-
G -->|成功| I[继续
|
|
48
|
+
G -->|成功| I[继续 kd_check 场景/风格校验]
|
|
48
49
|
I --> J[综合结果]
|
|
49
50
|
D --> J
|
|
50
51
|
F --> J
|
|
@@ -53,7 +54,7 @@ graph TB
|
|
|
53
54
|
J -->|全部通过| M[完成]
|
|
54
55
|
```
|
|
55
56
|
|
|
56
|
-
> **注意**:Gradle
|
|
57
|
+
> **注意**:Gradle 编译成功后仍要执行 `kd_check` 的场景/风格校验,编译器不检测这些业务约束。最终以两者综合结果为准。
|
|
57
58
|
|
|
58
59
|
## 问题级别处理策略
|
|
59
60
|
|
|
@@ -74,9 +75,9 @@ graph TB
|
|
|
74
75
|
|
|
75
76
|
补充说明:
|
|
76
77
|
|
|
77
|
-
- SDK 类名、方法签名和 `@Override` 正确性改为**事前**通过 `
|
|
78
|
+
- SDK 类名、方法签名和 `@Override` 正确性改为**事前**通过 `kd_cosmic_api`、模板、cheat-sheet、项目 SDK 或编译验证,不再由事后 lint 的 `API-*` 规则兜底。
|
|
78
79
|
- `SCENE-*` 与 `RESOURCE-*` 中既有明显硬错误,也可能包含偏治理的 warning;解释结果时要结合上下文,不要机械套标签。
|
|
79
|
-
- 需要按 A 层(ERROR)处理的 SCENE/STYLE/RESOURCE 规则 ID,统一定义在 [a-layer-rules.json](a-layer-rules.json)
|
|
80
|
+
- 需要按 A 层(ERROR)处理的 SCENE/STYLE/RESOURCE 规则 ID,统一定义在 [a-layer-rules.json](a-layer-rules.json)(单一可信源);KCode 会将其中高价值规则逐步迁移到 `kd_check`。
|
|
80
81
|
- `VERIFY-*` 默认不作为当前交付阻断项;只有在 `--strict` 或用户明确要求治理时,才应提高关注度。
|
|
81
82
|
|
|
82
83
|
## 修复示例
|
|
@@ -10,11 +10,11 @@ description: "金蝶云苍穹 KSQL/SQL 数据修复与批量数据变更 Skill
|
|
|
10
10
|
## 路径约定
|
|
11
11
|
|
|
12
12
|
- `<SKILL_ROOT>` = 当前 `SKILL.md` 所在目录(即 `skills/ok-ksql/`)
|
|
13
|
-
-
|
|
13
|
+
- `kd_ksql_lint` = 最终 SQL 静态检查工具。
|
|
14
14
|
|
|
15
15
|
## 依赖关系
|
|
16
16
|
|
|
17
|
-
- 本 Skill
|
|
17
|
+
- 本 Skill 不自带、不复制、不生成 Python 元数据脚本。
|
|
18
18
|
- 表名、`dbKey`、字段类型、枚举/状态值、基础资料落库字段确认,统一依赖 `$ok-cosmic` 的元数据查询能力。
|
|
19
19
|
- 如果 `$ok-cosmic` 不可用,且用户也没有提供已确认的元数据结果,必须停止并列出待确认项。
|
|
20
20
|
|
|
@@ -22,22 +22,22 @@ description: "金蝶云苍穹 KSQL/SQL 数据修复与批量数据变更 Skill
|
|
|
22
22
|
|
|
23
23
|
处理任何 KSQL/SQL 数据修复请求时,必须先完整读取 [references/ksql-datafix.md](references/ksql-datafix.md),并按其中“确认卡片”模板输出。
|
|
24
24
|
|
|
25
|
-
##
|
|
25
|
+
## 辅助工具
|
|
26
26
|
|
|
27
|
-
- 最终 SQL 文件生成后,优先运行 `
|
|
27
|
+
- 最终 SQL 文件生成后,优先运行 `kd_ksql_lint path=<SQL文件>` 做静态检查。
|
|
28
28
|
- 若 lint 输出 `ERROR`,必须修复 SQL 后再交付;若输出 `WARN`,必须按偏好修复或在结果中说明保留原因。
|
|
29
|
-
- `
|
|
29
|
+
- `kd_ksql_lint` 会检查高风险项:无 `WHERE` 的 `UPDATE/DELETE`、非备份场景 `SELECT *`、备份语句/备份表命名、时间戳一致性、`EXISTS` 偏好、`NULL` 判断和 PostgreSQL 多表更新风格。
|
|
30
30
|
|
|
31
31
|
## Step 0. 依赖预检
|
|
32
32
|
|
|
33
33
|
1. 先使用 `$ok-cosmic` 完成其 Step 0 配置预检。
|
|
34
34
|
2. 若 `$ok-cosmic` 预检返回 `ERROR`,不得生成最终 KSQL;只说明缺失配置,并把需要用户补齐的信息列入“待确认项”。
|
|
35
|
-
3. 生成最终 KSQL 前,必须通过 `$ok-cosmic` 的元数据能力确认表名和字段名;具体命令以 `$ok-cosmic`
|
|
35
|
+
3. 生成最终 KSQL 前,必须通过 `$ok-cosmic` / `kd_cosmic_metadata` 的元数据能力确认表名和字段名;具体命令以 `$ok-cosmic` 的 KCode 工具路由为准。
|
|
36
36
|
|
|
37
37
|
## 工作流硬约束
|
|
38
38
|
|
|
39
39
|
1. 先拆解自然语言意图,明确目标对象、操作类型、目标字段、条件字段、新值来源和风险边界。
|
|
40
|
-
2. 必须通过 `$ok-cosmic` 元数据能力(`
|
|
40
|
+
2. 必须通过 `$ok-cosmic` 元数据能力(`kd_cosmic_metadata sql=true`)精确确认每个单据的表名和每个数据库字段名;用户给中文或英文都必须查。
|
|
41
41
|
3. 写 SQL 前必须先判断所有参与表的 `dbName` 是否一致;一致才按普通单库 SQL 处理,不一致就是分库/跨库场景。
|
|
42
42
|
4. 分库/跨库场景不得直接生成普通更新 SQL;必须先让用户确认 dblink / postgres_fdw / 导出导入临时表等处理方式。
|
|
43
43
|
5. 所有表名、`dbKey`、`dbName`、枚举值、状态值、基础资料落库字段全部确认后,才允许生成最终 KSQL。
|
|
@@ -51,7 +51,7 @@ description: "金蝶云苍穹 KSQL/SQL 数据修复与批量数据变更 Skill
|
|
|
51
51
|
13. 所有确认卡片均为 `✔️` 后,最终必须在用户桌面生成 SQL 文本文件;任一卡片为 `✖️` 时,不生成文件。
|
|
52
52
|
14. 默认使用 PostgreSQL 语法生成 SQL;除非用户明确指定其他数据库方言,否则不要输出其他方言写法。
|
|
53
53
|
15. SQL 可读性偏好:成员关系/半连接条件默认使用 `IN`(值列表或子查询),避免使用 `EXISTS`;只有 `IN` 会改变语义或无法表达时才保留 `EXISTS`,并说明原因。
|
|
54
|
-
16. 最终 SQL 文件生成后必须尽量运行 `
|
|
54
|
+
16. 最终 SQL 文件生成后必须尽量运行 `kd_ksql_lint`;如因环境限制无法运行,最终回复中说明未运行原因。
|
|
55
55
|
|
|
56
56
|
## 输出要求
|
|
57
57
|
|
|
@@ -78,4 +78,4 @@ description: "金蝶云苍穹 KSQL/SQL 数据修复与批量数据变更 Skill
|
|
|
78
78
|
- 时间:文件名里的分钟必须取当前生成时间,与备份表名时间戳保持一致。
|
|
79
79
|
- 风格:SQL 文件使用 `-- ============================================` 分隔章节;文件开头写业务标题、关键条件和执行前提醒;SQL 关键字大写;文件末尾补充“字段映射(来自元数据)”。
|
|
80
80
|
- 禁止:待确认项非空、任一确认卡片为 `✖️` 时,不得创建桌面文件。
|
|
81
|
-
- 检查:文件生成后运行 `
|
|
81
|
+
- 检查:文件生成后运行 `kd_ksql_lint path=<SQL文件>`,无 `ERROR` 后再交付。
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
## 确认卡片 2:元数据确认
|
|
141
141
|
|
|
142
142
|
- 确认状态:✔️/✖️
|
|
143
|
-
- 已通过 `$ok-cosmic` 元数据能力确认:`
|
|
143
|
+
- 已通过 `$ok-cosmic` 元数据能力确认:`kd_cosmic_metadata sql=true`
|
|
144
144
|
- 实际查询命令/依据:
|
|
145
145
|
- 确认结果:
|
|
146
146
|
|
|
@@ -254,7 +254,7 @@
|
|
|
254
254
|
|
|
255
255
|
## 生成 SQL 示例
|
|
256
256
|
|
|
257
|
-
> 示例仅用于展示输出形态。示例里的表名、字段名、枚举值均假设已通过 `$ok-cosmic` 元数据能力(`
|
|
257
|
+
> 示例仅用于展示输出形态。示例里的表名、字段名、枚举值均假设已通过 `$ok-cosmic` 元数据能力(`kd_cosmic_metadata sql=true`)确认,真实生成时不得照搬。示例假设当前生成时间为 `202604301148`。
|
|
258
258
|
|
|
259
259
|
### SQL 风格约定
|
|
260
260
|
|