- 适配器 i18n 接入(eslint/pmd/sql-lint/stylelint) - Provider 动态注册机制(registry.ts + providers.json + factory 重构) - SetupView 全面重构(setupView.ts 新增 600+ 行) - i18n 消息扩展(messages.ts +210 行) - 规则导入流程优化(import-service / prompt-builder) - 新增 PMD jars 依赖及测试用例
47 lines
1.6 KiB
Markdown
47 lines
1.6 KiB
Markdown
# Excel AI 转换器设计
|
||
|
||
## 1. 背景
|
||
|
||
当前 ExcelConverter 通过固定列名(id、severity、description、message)解析 Excel 并程序化生成 YAML。非技术人员无法随意使用自己习惯的表头命名,体验受限。
|
||
|
||
## 2. 目标
|
||
|
||
去掉对固定列名的依赖,将 Excel 内容以 Markdown 表格形式喂给 AI,让 AI 理解任意表头结构并生成 YAML 规则。与 `.md`/`.txt` 的 AI 转换模式保持一致。
|
||
|
||
## 3. 设计
|
||
|
||
### 3.1 数据流
|
||
|
||
```
|
||
用户选择 .xlsx/.xls 文件
|
||
↓
|
||
ExcelConverter.convert()
|
||
├── XLSX.readFile → sheet_to_json
|
||
├── 行数据序列化为 Markdown 表格字符串
|
||
├── 调用 convertContentWithAI(content, context) // 复用 import-service.ts
|
||
└── AI 返回 YAML → 写入 yamlPath
|
||
```
|
||
|
||
### 3.2 变更范围
|
||
|
||
只改一个文件:`src/rules/converters/excel-converter.ts`
|
||
|
||
- 删除:列名白名单校验(REQUIRED_FIELDS)、severity 合法值校验(VALID_SEVERITIES)、程序化 YAML 拼接逻辑
|
||
- 新增:`buildMarkdownTable(rows)` 将 JSON 行转 Markdown 表格
|
||
- 复用:`convertContentWithAI()` 做 AI 转换并写文件
|
||
- 保留:`XLSX.readFile` 的 try/catch 错误处理
|
||
|
||
### 3.3 Markdown 表格格式示例
|
||
|
||
```
|
||
| id | severity | description | message | languages |
|
||
|----|----------|-------------|---------|-----------|
|
||
| rule-1 | warning | 禁止直接使用 console.log | 请使用 logger 代替 | javascript, typescript |
|
||
```
|
||
|
||
### 3.4 不涉及变更
|
||
|
||
- `setupView.ts`:ExcelConverter 已注册、过滤器已含 xlsx/xls,无需改动
|
||
- `import-service.ts`:`convertContentWithAI` 已存在,无需改动
|
||
- 其他 converter:不受影响
|