kcode-pi 0.1.5 → 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 +35 -2
- package/dist/cli/kcode.d.ts +1 -0
- package/dist/cli/kcode.js +27 -4
- package/package.json +1 -1
- package/src/cli/kcode.ts +29 -4
- 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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "ok-cosmic"
|
|
3
|
-
description: "金蝶云苍穹开发主 Skill,优先复用 kd-cd-cosmic-commons 封装。适用于插件开发、单据/列表/表单逻辑、操作服务、BOTP 转换、后台视图打开、附件处理、DynamicObject 与元数据处理、弹性域解析及 OpenAPI 集成。默认优先使用仓库封装;在涉及原生插件事件、SDK API
|
|
3
|
+
description: "金蝶云苍穹开发主 Skill,优先复用 kd-cd-cosmic-commons 封装。适用于插件开发、单据/列表/表单逻辑、操作服务、BOTP 转换、后台视图打开、附件处理、DynamicObject 与元数据处理、弹性域解析及 OpenAPI 集成。默认优先使用仓库封装;在涉及原生插件事件、SDK API、方法签名或封装未覆盖场景时,使用 KCode Node 适配器查询。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 苍穹开发
|
|
@@ -13,18 +13,18 @@ description: "金蝶云苍穹开发主 Skill,优先复用 kd-cd-cosmic-commons
|
|
|
13
13
|
|
|
14
14
|
## Step 0. 配置预检(先于一切)
|
|
15
15
|
|
|
16
|
-
1. Step 0
|
|
17
|
-
`
|
|
16
|
+
1. Step 0 的第一个动作必须直接执行 KCode 工具:
|
|
17
|
+
`kd_cosmic_config`
|
|
18
18
|
2. 默认在当前项目工作目录直接执行;不要先询问或搜索 `ok-cosmic.json` 的位置。
|
|
19
19
|
3. 只有用户明确提供了其他配置路径,或当前工作目录不是目标项目根目录时,才改用:
|
|
20
|
-
`
|
|
20
|
+
`kd_cosmic_config config=<显式路径>`
|
|
21
21
|
4. 若脚本返回非 0 或输出含 `ERROR`:停止生成代码,明确提示用户补齐缺失项。
|
|
22
|
-
5. 若仅有 `WARNING
|
|
22
|
+
5. 若仅有 `WARNING`:先告知用户哪些在线能力不可用,再决定是否继续当前任务。后续工具调用受以下限制:
|
|
23
23
|
|
|
24
24
|
| WARNING 类型 | 限制 |
|
|
25
25
|
|---|---|
|
|
26
|
-
| "API 不可达" 或 "在线服务不可用" |
|
|
27
|
-
| "知识库不存在" | `
|
|
26
|
+
| "API 不可达" 或 "在线服务不可用" | `kd_cosmic_metadata` 只能使用 KCode 本地缓存;需要实时基础资料数据时停止并要求项目侧证据 |
|
|
27
|
+
| "知识库不存在" | `kd_cosmic_api` 随包知识不可用,改为仅依赖 `cheat-sheet.md`、项目 SDK 和编译结果 |
|
|
28
28
|
|
|
29
29
|
## 自然语言意图路由(首读)
|
|
30
30
|
|
|
@@ -100,15 +100,15 @@ description: "金蝶云苍穹开发主 Skill,优先复用 kd-cd-cosmic-commons
|
|
|
100
100
|
- 🔍 **Agent A — 事件参考**:读对应 `references/*.md` 的 TL;DR 摘要 + `assets/*.java` 模板,提取事件签名与骨架。只读当前任务需要的事件方法段,不要一次性通读整个模板。如果卡在事件先后顺序,先读 [references/adv/event-lifecycle.md](references/adv/event-lifecycle.md)。
|
|
101
101
|
- 🔍 **Agent B — 项目探索**:在用户项目中搜索相似插件实现(同类型插件、相似业务场景),分析已有代码风格、import 习惯、封装用法,确保生成代码与项目风格一致。
|
|
102
102
|
3. **‖ 并行验证**字段与 API 签名(互不依赖的查询应同时发起):
|
|
103
|
-
-
|
|
104
|
-
- 3a. 若目标 API 已在 `rules/cheat-sheet.md` 中列出 →
|
|
105
|
-
- 3b. 字段 / `entityId` / 枚举值验证 → 查 `
|
|
106
|
-
- 3c. SDK 类名/方法签名不在 cheat-sheet 中 → 查 `
|
|
103
|
+
- 调用工具前,先查下方“KCode 工具路由”表格确认参数;表格未覆盖时读取工具 schema。
|
|
104
|
+
- 3a. 若目标 API 已在 `rules/cheat-sheet.md` 中列出 → 直接使用,**无需额外工具验证**。
|
|
105
|
+
- 3b. 字段 / `entityId` / 枚举值验证 → 查 `kd_cosmic_metadata`。**只要要生成代码且已知目标单据/表单,凡涉及字段(无论用户给中文名还是英文标识),都必须验证字段是否存在、字段类型、所属实体和特殊取值规则;多个字段合并到同一次调用**。
|
|
106
|
+
- 3c. SDK 类名/方法签名不在 cheat-sheet 中 → 查 `kd_cosmic_api`,并优先结合项目 SDK/编译结果做红绿验证。**与 3b 互不依赖,应同时发起**。
|
|
107
107
|
- 3d. 需要查询多个不同类的 detail → **多个 `detail` 调用也可并行**。
|
|
108
|
-
- ⚠️
|
|
108
|
+
- ⚠️ 基础资料实时数据查询必须等 `entityId` 从 3b 确认后才能进行;npm 包不再内置 Python 基础资料脚本,需要项目侧接口、SQL 或人工证据。
|
|
109
109
|
4. 只有"插件类型 + 事件方法 + 字段/签名"都确认后,才开始生成代码。
|
|
110
110
|
5. 编写代码时遵守最小干预:插件只做当前事件该做的事;能用封装就不退回原生。
|
|
111
|
-
6. **代码生成后,必须执行 `
|
|
111
|
+
6. **代码生成后,必须执行 `kd_check`,条件允许时再执行 `kd_build` 或项目编译命令**,详见"代码生成后自动校验"章节。
|
|
112
112
|
|
|
113
113
|
## 写代码前的最小确认卡
|
|
114
114
|
|
|
@@ -119,105 +119,56 @@ description: "金蝶云苍穹开发主 Skill,优先复用 kd-cd-cosmic-commons
|
|
|
119
119
|
| 1 | 插件类型 | 决策矩阵 |
|
|
120
120
|
| 2 | 目标事件方法 | 模板 / references |
|
|
121
121
|
| 3 | 使用模板 | `assets/*.java` |
|
|
122
|
-
| 4 | 已验证字段 / refType / entityId | 生成代码且已知目标单据/表单时,字段中文名/英文标识都必须经 `
|
|
123
|
-
| 5 | 已确认枚举/下拉选项值(有使用时) | `
|
|
124
|
-
| 6 | 已验证类/方法签名 | cheat-sheet / `
|
|
122
|
+
| 4 | 已验证字段 / refType / entityId | 生成代码且已知目标单据/表单时,字段中文名/英文标识都必须经 `kd_cosmic_metadata` 确认;`entityId` 来自用户明确给出或元数据证据确认 |
|
|
123
|
+
| 5 | 已确认枚举/下拉选项值(有使用时) | `kd_cosmic_metadata showDetail=true` |
|
|
124
|
+
| 6 | 已验证类/方法签名 | cheat-sheet / `kd_cosmic_api` / 项目 SDK / 编译结果 / 业务拓展点清晰 Java 示例 |
|
|
125
125
|
|
|
126
|
-
##
|
|
126
|
+
## KCode 工具路由
|
|
127
127
|
|
|
128
|
-
###
|
|
128
|
+
### 工具调用协议
|
|
129
129
|
|
|
130
|
-
|
|
130
|
+
本 npm 包不发布 Python/JAR/bat/sh 运行资产;官方脚本能力已迁移为 KCode Node 适配器。所有查询和校验优先使用下表工具,不要尝试执行 `scripts/*.py`。
|
|
131
131
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
|
135
|
-
|
|
136
|
-
|
|
|
137
|
-
|
|
|
138
|
-
|
|
|
139
|
-
| 查询业务拓展点 / SDK 扩展接口候选 | `scripts/cosmic-extpoints-query.py` | `get` | `python3 <SKILL_ROOT>/scripts/cosmic-extpoints-query.py --config ok-cosmic.json get --keyword ...` | 默认摘要模式;仅在需要生成代码或查看 Java 示例时加 `--full`;若 `--full` 已返回清晰 Java 示例,可先按示例,不强制立即 `detail` |
|
|
140
|
-
| 生成或修改苍穹 Java 代码后的统一校验 | `scripts/cosmic-post-check.py` | 直接执行 | `python3 <SKILL_ROOT>/scripts/cosmic-post-check.py <file_or_directory> --fix-hint` | 必须形成"生成 -> 校验 -> 修复 -> 复检"闭环 |
|
|
132
|
+
| 场景 | 优先工具 | 常用参数 | 备注 |
|
|
133
|
+
|---|---|---|---|
|
|
134
|
+
| SDK 类名、方法名、继承链、`@Override` 签名确认 | `kd_cosmic_api` | `mode=search/search-method/detail`、`query`、`method`、`compact` | 随包知识给线索;精确签名优先结合项目 SDK/编译红绿验证 |
|
|
135
|
+
| 字段标识、枚举映射、`refType`、按中文名确认真实英文标识 | `kd_cosmic_metadata` | `form`、`fuzzy`、`typeFilter`、`sql`、`op`、`showDetail` | 字段不确定先查它;多个表单用逗号合并 |
|
|
136
|
+
| 已确认 `entityId` 后查询基础资料编码/名称/完整数据 | 项目侧接口/SQL/人工证据 | 先由 `kd_cosmic_metadata` 确认 `entityId` | KCode 不内置实时基础资料 Python 查询脚本 |
|
|
137
|
+
| 查询业务拓展点 / SDK 扩展接口候选 | `kd_search` + `kd_cosmic_api` | 业务关键词、接口类名、方法名 | 命中接口类名后用 `kd_cosmic_api detail` 或编译确认签名 |
|
|
138
|
+
| 生成或修改苍穹 Java 代码后的统一校验 | `kd_check` + `kd_build` | 修改文件路径、项目构建命令 | 必须形成"生成 -> 校验 -> 修复 -> 复检"闭环 |
|
|
141
139
|
|
|
142
140
|
### 常用用法示例
|
|
143
141
|
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
# 批量查类详情(逗号分隔,并发请求)
|
|
158
|
-
python3 <SKILL_ROOT>/scripts/cosmic-api-knowledge.py --config ok-cosmic.json detail kd.bos.servicehelper.QueryServiceHelper,kd.bos.servicehelper.SaveServiceHelper --method save --compact
|
|
159
|
-
|
|
160
|
-
# 查元数据字段
|
|
161
|
-
python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get sal_order
|
|
162
|
-
|
|
163
|
-
# 查元数据字段(带数据库相关信息)
|
|
164
|
-
python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get sal_order,ap_finapbill --sql
|
|
165
|
-
|
|
166
|
-
# 批量查询多个单据(逗号分隔)
|
|
167
|
-
python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get sal_order,ap_finapbill --fuzzy supplier
|
|
168
|
-
|
|
169
|
-
# 混合查询:formId + 中文单据名(自动识别)
|
|
170
|
-
python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get "ap_finapbill,物料,bd_supplier" --fuzzy number
|
|
171
|
-
|
|
172
|
-
# 模糊筛选字段
|
|
173
|
-
python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get sal_order --fuzzy qty price amount
|
|
174
|
-
|
|
175
|
-
# 按多种字段类型筛选(正则 OR)
|
|
176
|
-
python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get sal_order --type "combo|check"
|
|
177
|
-
|
|
178
|
-
# 类型 + 关键词交集筛选(Decimal 类型且含 amount)
|
|
179
|
-
python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get sal_order --type decimal --fuzzy amount
|
|
180
|
-
|
|
181
|
-
# 按单据中文名查元数据
|
|
182
|
-
python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get 物料
|
|
183
|
-
|
|
184
|
-
# 查看单据所有操作
|
|
185
|
-
python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get sal_order --op
|
|
186
|
-
|
|
187
|
-
# 按关键词筛选操作
|
|
188
|
-
python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get sal_order --op 审核 提交
|
|
189
|
-
|
|
190
|
-
# 查基础资料
|
|
191
|
-
python3 <SKILL_ROOT>/scripts/cosmic-basedata-query.py --config ok-cosmic.json get --entity-id bd_material --number-or-name 01.0001
|
|
192
|
-
|
|
193
|
-
# 查业务拓展点
|
|
194
|
-
python3 <SKILL_ROOT>/scripts/cosmic-extpoints-query.py --config ok-cosmic.json get --keyword 应付
|
|
195
|
-
|
|
196
|
-
# 代码校验
|
|
197
|
-
python3 <SKILL_ROOT>/scripts/cosmic-post-check.py ./src/main/java/MyPlugin.java --fix-hint
|
|
142
|
+
```text
|
|
143
|
+
kd_cosmic_config
|
|
144
|
+
kd_cosmic_api mode=search query=QueryServiceHelper
|
|
145
|
+
kd_cosmic_api mode=search-method query=loadSingle
|
|
146
|
+
kd_cosmic_api mode=detail query=kd.bos.servicehelper.QueryServiceHelper method=loadSingle compact=true
|
|
147
|
+
kd_cosmic_metadata form=sal_order
|
|
148
|
+
kd_cosmic_metadata form=sal_order,ap_finapbill sql=true
|
|
149
|
+
kd_cosmic_metadata form=sal_order fuzzy="qty price amount"
|
|
150
|
+
kd_cosmic_metadata form=sal_order typeFilter="combo|check" showDetail=true
|
|
151
|
+
kd_cosmic_metadata form=sal_order op=true fuzzy="审核 提交"
|
|
152
|
+
kd_check path=./src/main/java/MyPlugin.java
|
|
153
|
+
kd_build
|
|
198
154
|
```
|
|
199
155
|
|
|
200
|
-
###
|
|
201
|
-
|
|
202
|
-
- 完成 Step 0
|
|
203
|
-
-
|
|
204
|
-
-
|
|
205
|
-
- `
|
|
206
|
-
-
|
|
207
|
-
-
|
|
208
|
-
- 需要确认多个字段时,优先一次性合并到同一次元数据查询里;不要逐个字段重复调用脚本。
|
|
209
|
-
- **并行调用**:`cosmic-form-metadata.py`(字段/枚举验证)与 `cosmic-api-knowledge.py`(类/方法签名验证)查询不同数据源、互不依赖,应在同一轮并行发起。同理,多个 `detail` 查询、多个文件读取也应并行。唯一例外:`cosmic-basedata-query.py` 依赖 `entityId` 确认结果,必须串行等待。
|
|
210
|
-
- **元数据批量查询**:`cosmic-form-metadata.py` 的 `formIdOrName` 位置参数支持逗号分隔多个查询目标(如 `get sal_order,ap_finapbill,物料`),含中文的自动走 billName、英文标识走 formId,脚本内部通过 `ThreadPoolExecutor` 并发请求(最多 4 线程),结果按原始顺序拼接输出。跨单据场景(如下推、对比源单与目标单字段)优先使用批量查询,减少脚本调用次数。
|
|
156
|
+
### 跨工具硬约束
|
|
157
|
+
|
|
158
|
+
- 完成 Step 0 后,后续工具可显式传 `config=<ok-cosmic.json>`;当前项目没有 `ok-cosmic.json` 时,KCode 使用随包默认知识库并输出 warning。不要把苍穹工程 `cosmic.json` 当成 `ok-cosmic.json`。
|
|
159
|
+
- `entityId` 只允许来自"用户明确给出的准确英文标识"或"`kd_cosmic_metadata` 确认出的真实标识";来源不明时,先查元数据,不得直接查询基础资料或写入代码。
|
|
160
|
+
- **字段生成代码强制验证**:只要要生成/修改代码,且已知目标单据/表单(`formId` 或 `billName`),凡涉及字段(无论用户给的是中文名还是英文标识),都必须先用 `kd_cosmic_metadata` 验证字段是否存在、字段类型、所属实体和特殊取值规则。目标单据/表单不明确时,先确认目标,不要直接把用户给的字段写进代码。
|
|
161
|
+
- **枚举/下拉选项值禁猜 [A1.8]**:使用 ComboField / 下拉字段的具体选项值前,必须先查 `kd_cosmic_metadata showDetail=true` 的附加信息确认真实映射,详见 [constraints.md](rules/constraints.md) A1.8。
|
|
162
|
+
- 需要确认多个字段时,优先一次性合并到同一次元数据查询里;不要逐个字段重复调用工具。
|
|
163
|
+
- **并行调用**:`kd_cosmic_metadata`(字段/枚举验证)与 `kd_cosmic_api`(类/方法签名验证)查询不同数据源、互不依赖,应在同一轮并行发起。
|
|
211
164
|
- 查询超时或远端失败时,只能基于当前会话里已确认的字段、`refType`、`entityId`、接口返回继续;若本次查询结果是继续前提,则停止。
|
|
212
|
-
- 若 Traceback 明确指向 Skill 脚本实现问题,立即停止并报告命令与错误摘要;不要绕过验证继续生成依赖该事实的代码。
|
|
213
|
-
- 只有在用户已修正配置/环境,或本次明确修改了查询条件后,才允许重试同类脚本;不要原样重复执行。
|
|
214
165
|
|
|
215
166
|
### 项目级配置文件 (`ok-cosmic.json`)
|
|
216
167
|
|
|
217
|
-
|
|
168
|
+
KCode 适配器可读取 `ok-cosmic.json` 获取知识库路径及在线路由 API 地址。若项目没有该文件,会使用随包默认知识库并输出 warning;苍穹工程自带的 `cosmic.json` 不是 KCode 官方能力配置。
|
|
218
169
|
|
|
219
|
-
- **显式指定**:
|
|
220
|
-
- **在线查询配置**:
|
|
170
|
+
- **显式指定**: 调用工具时可指定 `config=<路径>`。未指定时优先读取当前项目根目录下的 `ok-cosmic.json`;不存在则使用随包默认配置。
|
|
171
|
+
- **在线查询配置**: 元数据在线查询走 `route.apiUrl`(`runtime/route`,URL 中可包含 `openApiSign`)/ `route.timeoutSeconds`;KCode 内部通过 `data.type=meta` 路由。
|
|
221
172
|
- **统一路由请求体**: 元数据 `data.type=meta` + `reqData.entityId/formId/billName/full`;基础资料 `data.type=basedata` + `reqData.entityId/numberOrName/full`;业务拓展点 `data.type=extpoint` + `reqData.keyword`。
|
|
222
173
|
|
|
223
174
|
## 扩展代码库探索(Extension Repos Fallback)
|
|
@@ -236,16 +187,16 @@ python3 <SKILL_ROOT>/scripts/cosmic-post-check.py ./src/main/java/MyPlugin.java
|
|
|
236
187
|
- 扩展代码库仅作为**实现参考**,不等同于 ok-cosmic 推荐写法。
|
|
237
188
|
- 生成代码时仍须遵守 A 层硬约束(`rules/constraints.md`、`rules/anti-patterns.md`)与 B 层编码偏好(`rules/coding-preferences.md`)。
|
|
238
189
|
- 若扩展代码与 ok-cosmic 规范冲突,**以 ok-cosmic 规范为准**;只借鉴参考项目的业务组装方式与字段暴露结构。
|
|
239
|
-
- 若扩展代码库中未搜到相关实现,回落到 fallback 第 3 步(`
|
|
190
|
+
- 若扩展代码库中未搜到相关实现,回落到 fallback 第 3 步(`kd_cosmic_api mode=search`)后再向用户确认。
|
|
240
191
|
|
|
241
192
|
## 代码生成后自动校验(Post-Check)
|
|
242
193
|
|
|
243
194
|
修改任何苍穹 `.java` 文件后,必须执行:
|
|
244
195
|
|
|
245
|
-
`
|
|
196
|
+
`kd_check path=<生成的文件或目录>`
|
|
246
197
|
|
|
247
198
|
- `ERROR` → 必须修复并复检;`WARNING` → 优先修复;`INFO` → 治理参考,不阻断。
|
|
248
|
-
-
|
|
199
|
+
- 条件允许时继续执行 `kd_build` 或项目 Gradle/Maven 编译命令;编译与静态校验以综合结果为准。
|
|
249
200
|
- 最多连续 3 轮"修复 → 复检";3 轮后仍有 `ERROR`,向用户报告。
|
|
250
201
|
- 规则 ID 映射、修复示例、历史项目解释口径见 [rules/post-check.md](rules/post-check.md)。
|
|
251
202
|
|
|
@@ -3,14 +3,14 @@ interface:
|
|
|
3
3
|
short_description: "封装优先的苍穹开发主 skill"
|
|
4
4
|
default_prompt: |
|
|
5
5
|
使用 $ok-cosmic 来实现或审查苍穹插件代码。严格遵循以下流程:
|
|
6
|
-
0. 首先执行
|
|
6
|
+
0. 首先执行 kd_cosmic_config 完成配置预检;ERROR 必须停止,WARNING 需告知用户受限能力
|
|
7
7
|
1. 先查 SKILL.md 决策矩阵确定插件类型和对应模板
|
|
8
8
|
2. 读 references/*.md 确认事件边界和适用场景
|
|
9
9
|
3. 读 assets/*.java 模板沿用已有骨架,小场景查 snippets 映射表
|
|
10
|
-
4.
|
|
11
|
-
5. 字段不确定先查
|
|
10
|
+
4. 首次调用任何 KCode 工具前,先读取工具 schema,定好参数后再执行
|
|
11
|
+
5. 字段不确定先查 kd_cosmic_metadata;entityId 来源不明先查 kd_cosmic_metadata(查 refType 或按中文名确认英文标识),严禁凭经验猜 entityId;枚举/下拉选项值必须查 showDetail=true 的 Ext 列确认(A1.8 硬约束),严禁凭空编造;SDK 签名不确定先查 kd_cosmic_api
|
|
12
12
|
6. 只有"插件类型 + 事件方法 + 字段/基础资料/签名 + 枚举值来源"都确认后,才开始生成代码
|
|
13
|
-
7. 代码生成后,执行
|
|
13
|
+
7. 代码生成后,执行 kd_check,条件允许时执行 kd_build 或项目编译;有 ERROR 须修复后重验
|
|
14
14
|
核心原则:封装优先(kd-cd-cosmic-commons),原生兜底;严禁凭记忆猜测 API 签名。
|
|
15
15
|
|
|
16
16
|
policy:
|
|
@@ -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
|
## 修复示例
|