# 自定义规则导入 — 手动验证结果报告 ## 验证信息 | 项 | 值 | |---|---| | 验证日期 | 2026-09-06 | | 验证功能 | 自定义规则导入(AI 通用路径,非模板模式) | | 导入素材 | `data/import-verification/01-galaxy-nonstandard/galaxy-team-coding-conventions.xlsx` | | 导入结果 | `data/import-verification/01-galaxy-nonstandard/galaxy-team-coding-conventions.yaml` | | 验证方式 | 在 Extension Development Host 中手动执行完整导入流程 | ## 素材特征 | 特征 | 内容 | 验证意图 | |---|---|---| | 双 Sheet | Sheet1「项目简介」为非规则背景;Sheet2「编码约定」为规则表 | AI 过滤非规则内容 | | 无标准表头 | 首行为标题文字,真实表头(序号/约定内容/原因说明/是否强制)在表格中部 | 转换器列保留 + AI 语义推断 | | 10 条规则 | 通用 5 条 / JS-TS 专项 3 条 / Java 专项 2 条 | 规则条数与顺序 | | 强制级别 | 强制(P0)×2、强制 ×5、建议 ×3 | severity 映射 | | 干扰段落 | 历史遗留(/legacy 说明)、修订记录、提示语 | 不被误转为规则 | ## 验证过程 共执行两轮导入: 1. **第 1 轮**:AI 转换正常,但去重结果核对发现 2 处重叠漏标(console.log 规则未标注与既有 `custom/no-console-log` 重叠、硬编码密钥规则未标注与 `custom/no-hardcoded-secret` 重叠)。删除落盘文件后重新导入。 2. **第 2 轮**:去重结果无遗漏,预览确认后落盘,即本报告归档的 `galaxy-team-coding-conventions.yaml`。 ## 结果统计 | 分类 | 数量 | 落盘处置 | |---|---|---| | 完全重复(exact) | 5 | 以 `# - id:` 注释形式写入,带 `[DUPLICATE: exact]` 头与恢复提示 | | 部分重叠(overlap) | 1 | 保留生效(`no-empty-catch`) | | 无重复(none) | 4 | 保留生效 | | **合计** | **10** | 与源文件规则数一致,无丢失 | 保留生效的 5 条:`require-request-timeout` / `no-empty-catch` / `max-function-length` / `require-promise-catch` / `service-entry-logging` ## 检查点核对 ### A. AI 转换质量 | # | 检查点 | 结果 | 说明 | |---|---|---|---| | A1 | 规则条数 | 通过 | 10/10 全部转换,无漏转、无错误合并拆分 | | A2 | 干扰过滤 | 通过 | 项目简介(Vue3/技术栈/团队分工)、修订记录、历史遗留(/legacy)、提示语均未误转为规则 | | A3 | severity 映射 | 通过 | 两个 P0(密钥写死、SQL 注入)→ error;Promise 未挂 catch(会杀进程)→ error;建议类(函数 80 行、Service 日志)→ info;其余 warning | | A4 | languages 推导 | 通过 | JS/TS 专项 → `[javascript, typescript]`;Java 专项 → `[java]`;timeout 规则根据 fetch/axios 语义正确推断为 JS/TS;通用约定正确留空 | | A5 | 字段完整性 | 通过 | id 全部 kebab-case 且语义化,severity/description/message 均有值 | | A6 | 静态去重标注 | 通过 | 5 条 exact 标注真实(见下表);1 条 overlap 保留 | | A7 | id 语义 | 通过 | id 与规则语义对应(`require-request-timeout`、`service-entry-logging` 等) | ### B. 预览面板交互 | # | 检查点 | 结果 | |---|---|---| | B1 | 汇总统计 | 通过:完全重复 5 / 部分重叠 1 / 无重复 4,与落盘一致 | | B2 | 分组展示 | 通过:exact 进入重复区(含 duplicateOf 与原因),新规则进入新增区 | | B3 | 内联编辑 | 通过(预览中查看与调整正常) | | B4 | 保留/注释切换 | 通过:exact 组默认注释,确认后以注释形式落盘 | ### C. 落盘与联动 | # | 检查点 | 结果 | |---|---|---| | C1 | 文件写入 | 通过:`.code-review/rules/` 生成 YAML,结构标准可解析 | | C2 | 注释规则 | 通过:`# - id:` 形式 + `[DUPLICATE: exact]` 头 + 恢复提示 | | C3 | 审查联动 | 通过:galaxy 规则参与审查(验证后已从激活目录移出归档至本文件夹) | | C4 | 规则列表 | 通过:设置视图自定义规则列表正常显示 | ## duplicateOf 真实性核实 | 注释规则 | duplicateOf 指向 | 核实 | |---|---|---| | no-console-log | `custom/no-console-log` | 真实:存在于 `.code-review/rules/coding-conventions.yaml` | | no-hardcoded-secrets | `custom/no-hardcoded-secret` | 真实:存在于 `.code-review/rules/security-rules.yaml` | | strict-equality-required | `eslint/eqeqeq` | 真实:内置静态规则 | | no-var | `eslint/no-var` | 真实:内置静态规则 | | no-sql-injection | `custom/no-sql-injection` | 真实:存在于 `.code-review/rules/security-rules.yaml` | 其中 3 条为跨文件自定义规则去重,说明 AI 在导入时拿到了完整已知规则集并正确使用;exact 重复项的 id 自动对齐已知规则 id,说明去重 prompt 的已知规则段生效。 ## 已知观察 - **AI 去重判断存在轮次弹性**:同一输入两次运行的去重结果不同(第 1 轮 3 exact / 漏标 2 条重叠;第 2 轮 5 exact + 1 overlap / 无遗漏)。属 LLM 非确定性,非 prompt 系统性缺陷;重要场景建议导入后人工复核预览面板的重复分组。 - **语言字段**:`no-empty-catch` 落盘带 `languages: [java, javascript, typescript]`——catch 吞异常为 JS/Java 通用问题,推导合理。 ## 结论 **通过**。AI 通用导入路径在真实世界多 Sheet、无标准表头、含干扰段落的 Excel 素材上工作正常:规则完整转换、干扰内容有效过滤、severity/languages/id 推导合理、跨文件与内置静态规则去重标注真实、预览交互与落盘格式符合设计。 ## 关联 - 自动化测试:`tests/excel-converter.test.ts`(转换器渲染层 7 条用例,素材副本位于 `tests/fixtures/`) - 设计 spec:`docs/superpowers/specs/2026-07-26-custom-rule-import-ux-design.md`