Files
Agent 836ad20515 v1.1.0: 增加交互提示、路径输入、窗口属性配置
- main.py: 增加show_banner()启动说明、各阶段[INFO]日志、结果摘要、任意键退出
- file_selector.py: 重写为路径输入→验证→空输入弹窗回退→不存在循环重试
- run.bat: 新建启动脚本(chcp 65001, mode con cols=80 lines=20, color 0B, title固定署名, pause)
- Code/docs/modification-assessment.md: 修改需求评估文档
2026-05-25 17:29:19 +08:00

161 lines
5.0 KiB
Markdown
Raw Permalink 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.
# 版本发布说明
---
## 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` 了解测试详情