Files
2026Technology-Competition/docs/superpowers/specs/2026-07-24-excel-multi-sheet-design.md
T
范智鹏 effcf30802 feat: 适配器 i18n + Provider 动态注册 + SetupView 重构 + jars 资源
- 适配器 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 依赖及测试用例
2026-07-28 22:57:15 +08:00

66 lines
2.3 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.
# Excel 多 Sheet 导入设计
## 1. 背景
当前 `ExcelConverter.convert()` 仅读取 Excel 文件的第一个 Sheet`workbook.SheetNames[0]`),后续 Sheet 被忽略。用户需要导入包含多个 Sheet 的 Excel 文件,将全部规则合并输出。
## 2. 目标
支持多 Sheet Excel 导入,所有 Sheet 合并为一份 YAML 输出。不改变 `RuleConverter` 接口签名。
## 3. 设计
### 3.1 数据流
```
用户选择 .xlsx/.xls 文件(多 Sheet
ExcelConverter.convert()
├── XLSX.readFile → 获取 workbook
├── 遍历 workbook.SheetNames
│ ├── 每个 sheet → sheet_to_json → buildMarkdownTable
│ └── 添加 "## SheetName" 标题分隔
├── 合并为一张大 Markdown 文本
├── 调用 convertContentWithAI(combined, context)
└── AI 返回 YAML(合并所有规则)→ 写入 yamlPath
```
### 3.2 变更范围
只改一个文件:`src/rules/converters/excel-converter.ts`
| 变更 | 说明 |
|------|------|
| 删除 `const sheetName = workbook.SheetNames[0]` | 不再只取第一个 Sheet |
| 新增 `buildSheetsMarkdown(workbook)` | 遍历所有 Sheet,逐个转 Markdown 表格并拼接 |
| 修改 `convert()` 内部 | 调用 `buildSheetsMarkdown` 替代单 Sheet 逻辑 |
| 保留 `buildMarkdownTable(rows)` | 复用现有单 Sheet 转表格函数 |
| 保留错误处理 | try/catch、空 Sheet 校验 |
### 3.3 合并格式示例
```
## Sheet1 - 命名规范
| id | severity | description | message |
|----|----------|-------------|---------|
| naming-1 | error | 类名使用 PascalCase | 请修改为 PascalCase |
## Sheet2 - 安全规范
| id | severity | description | message |
|----|----------|-------------|---------|
| security-1 | error | 禁止硬编码密码 | 请将密码移入配置文件 |
```
### 3.4 边界处理
- **空 Sheet**:跳过(不报错),继续处理其他 Sheet
- **全部 Sheet 为空**:报错提示"Excel 工作表中没有数据"
- **不同 Sheet 列结构不同**:各自独立转 Markdown 表格,AI 自主理解
- **单 Sheet 文件**:行为不变,兼容现有功能
### 3.5 不涉及变更
- `setupView.ts`ExcelConverter 已注册,无需改动
- `import-service.ts``convertContentWithAI` 已存在,无需改动
- `converter.ts``RuleConverter` 接口不变
- 其他 converter:不受影响