v1.0.1: 新增完整文档体系(README/QUICKSTART/RELEASE)

This commit is contained in:
2026-05-25 13:39:46 +08:00
parent 6b718f7af3
commit 5fbc215e59
4 changed files with 726 additions and 0 deletions

160
Code/docs/RELEASE.md Normal file
View File

@@ -0,0 +1,160 @@
# 版本发布说明
---
## v1.0.0 — 2026-05-25
### 🎉 首次发布
这是 PinMAP → PinList 转换器的第一个正式版本,实现了从 Excel PinMAP 到 PinList 的完整转换流程。
---
### 新增功能
#### PinMAP 解析
- 自动识别方形和长方形封装结构
- 沿四条边(左→下→右→上)逆时针提取引脚
- 角点共享处理(按单元格位置去重)
- 支持 2×2 及以上任意尺寸
#### 数据验证
- **序号连续性检查**:检测 1~N 序列中的间隔
- **序号唯一性检查**:检测重复的引脚序号
- **PinName 完整性检查**:检测缺失的引脚名称(警告级别)
- **结构完整性检查**:验证方形区域最小尺寸和 A1 封装信息
#### PinList 生成
- A 列 PinNameB 列 Pin 序号
- 按 Pin 序号递增排序
- 缺失 PinName 自动设为 "NC"
#### 格式支持
- `.xls` 读取BIFF8 引擎OLE2 复合文档解析)
- `.xlsx` 读取OOXML 引擎ZIP + XML 解析)
- `.xlsx` 写入OOXML 引擎(纯手工构建)
#### 运行模式
- **GUI 模式**tkinter 文件选择对话框Windows 推荐)
- **命令行模式**`python main.py input.xlsx`Linux/Mac 推荐)
- 自动回退:无 GUI 环境自动切换至命令行模式
---
### 技术实现
| 模块 | 代码量 | 说明 |
|------|--------|------|
| `xls_reader.py` | ~400 行 | BIFF8 OLE2 解析引擎,支持 SST/LABELSST/NUMBER/FORMULA/RK/MULRK/LABEL |
| `xlsx_reader.py` | ~80 行 | ZIP + XML 解析,支持共享字符串表 |
| `xlsx_writer.py` | ~120 行 | OOXML 构建,生成标准 .xlsx 文件 |
| `pinmap_parser.py` | ~100 行 | 方形边界检测 + 四边引脚提取 |
| `validator.py` | ~60 行 | 连续性/唯一性/完整性验证 |
| `pinlist_generator.py` | ~40 行 | PinList 生成 + NC 默认值 |
| `file_selector.py` | ~35 行 | tkinter 对话框 + 命令行回退 |
| `main.py` | ~60 行 | 流程编排 + 异常处理 |
| `models.py` | ~40 行 | 数据模型定义 |
| `utils.py` | ~35 行 | 坐标转换工具 |
**总代码量**:约 1000 行(不含注释和空行)
**第三方依赖**0
---
### 测试覆盖
#### 单元测试8 个用例)
| 用例 | 测试内容 | 结果 |
|------|----------|------|
| `test_4x4_parse` | 4×4 方形 PinMAP 解析 | ✅ |
| `test_4x4_validate` | 4×4 方形验证 | ✅ |
| `test_missing_names_warning` | PinName 缺失警告 | ✅ |
| `test_duplicate_numbers` | 序号重复检测 | ✅ |
| `test_gap_in_numbers` | 序号不连续检测 | ✅ |
| `test_empty_cells` | 空单元格处理 | ✅ |
| `test_no_pins` | 无引脚数据检测 | ✅ |
| `test_12pin_square` | 12 引脚方形解析 | ✅ |
#### 集成测试6 个用例)
| 用例 | 输入文件 | 测试内容 | 结果 |
|------|----------|----------|------|
| TC001 | `sample_4x4.xlsx` | 标准 4×4 转换8 Pin | ✅ |
| TC002 | `sample_rect.xlsx` | 长方形转换13 Pin | ✅ |
| TC003 | `error_gap.xlsx` | 序号不连续检测 | ✅ |
| TC004 | `error_dup.xlsx` | 序号重复检测 | ✅ |
| TC005 | `warning_missing.xlsx` | PinName 缺失警告 | ✅ |
| TC006 | `error_empty_a1.xlsx` | A1 为空检测 | ✅ |
**测试通过率**100%14/14
---
### 已知问题
| # | 问题 | 严重性 | 说明 |
|---|------|--------|------|
| K1 | XLS 读取缺乏真实样本验证 | 中 | 当前测试环境无 `.xls` 格式测试文件BIFF8 引擎尚未在真实 `.xls` 文件上验证 |
| K2 | 无字体/格式保留 | 低 | 输出文件不保留原始 Excel 的字体、颜色、边框等格式信息 |
| K3 | 仅支持 sheet1 | 低 | 仅读取 Excel 文件的第一个工作表 |
| K4 | Linux 无头环境无 GUI | 低 | 无显示器环境下 tkinter 不可用,需使用命令行模式 |
---
### 限制
| 限制项 | 说明 |
|--------|------|
| 引脚数量 | 建议 < 1000 引脚(典型封装 < 200 引脚,无压力) |
| 输入格式 | 仅支持 `.xls``.xlsx`,不支持 CSV/其他格式 |
| 输出格式 | 仅输出 `.xlsx`,不支持 `.xls` |
| 工作表 | 仅处理第一个工作表 |
| 公式单元格 | 仅读取公式的计算结果,不保留公式本身 |
---
### 未来计划
#### v1.1.0 — 格式增强(规划中)
- [ ] 支持 `.xls` 格式输出
- [ ] 保留原始 Excel 的字体和格式
- [ ] 支持多工作表选择
#### v1.2.0 — 功能扩展(规划中)
- [ ] 批量转换(拖拽多个文件)
- [ ] CSV 格式输出
- [ ] PinMAP 结构可视化预览
#### v2.0.0 — 架构升级(远期规划)
- [ ] 支持更多封装类型BGA、QFN 等)
- [ ] 插件式解析器架构
- [ ] Web 界面
---
### 升级指南
**首次使用**:直接运行即可,无需升级。
**从测试版升级**:替换 `Code/src/` 目录下所有文件。
---
### 贡献者
- 架构设计Script Architect
- 编码实现Coding Agent × 3
- 测试验证QA Agent
- 文档编写Doc Gen Agent
---
### 获取帮助
- 查看 `QUICKSTART.md` 了解使用方法
- 查看 `architecture-design.md` 了解技术细节
- 查看 `Test/test_report.md` 了解测试详情