Files
2026Technology-Competition/data/import-verification/01-galaxy-nonstandard/result-report.md
T

98 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 自定义规则导入 — 手动验证结果报告
## 验证信息
| 项 | 值 |
|---|---|
| 验证日期 | 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 注入)→ errorPromise 未挂 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`