- 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: 修改需求评估文档
5.0 KiB
5.0 KiB
版本发布说明
v1.0.0 — 2026-05-25
🎉 首次发布
这是 PinMAP → PinList 转换器的第一个正式版本,实现了从 Excel PinMAP 到 PinList 的完整转换流程。
新增功能
PinMAP 解析
- 自动识别方形和长方形封装结构
- 沿四条边(左→下→右→上)逆时针提取引脚
- 角点共享处理(按单元格位置去重)
- 支持 2×2 及以上任意尺寸
数据验证
- 序号连续性检查:检测 1~N 序列中的间隔
- 序号唯一性检查:检测重复的引脚序号
- PinName 完整性检查:检测缺失的引脚名称(警告级别)
- 结构完整性检查:验证方形区域最小尺寸和 A1 封装信息
PinList 生成
- A 列 PinName,B 列 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了解测试详情