BUG-005: 模板搜索路径优先查找 Code/src/Template/ 目录 BUG-006: 上边 Name 移至 row 0,完全独立于其他边 - 37/37 测试全部通过 - docs: 更新 bugs.md(BUG-005/BUG-006 状态) - docs: 更新 tasks.md(T028 打包进行中→已完成) - docs: 添加 modification-assessment-v1.5.5.md - CHANGELOG.md: 追加 v1.5.5 版本日志
6.8 KiB
6.8 KiB
Changelog
[v1.5.5] - 2026-06-12
🐛 Bug 修复(深度修复)
BUG-005 【高】模板文件名/路径错误
- 根因:v1.5.4 只改了模板文件名(
BallList-Template.xlsx→PinList-Template.xlsx),但未修正搜索路径 - 修复:模板搜索路径优先查找
Code/src/Template/目录,再回退项目根目录和当前工作目录 - 模板样式现在可正确应用到输出文件
BUG-006 【高】PinList→PinMAP 上边 Name 与左边 Name 同行
- 根因:v1.5.4 将上边 Name 放在 row 2(Excel 第 3 行),与左边 Name/Number 起始行相同,导致 3 条边数据混在同一行
- 修复:将上边 Name 移至 row 0(Excel 第 1 行),上边 Number 保持在 row 1(第 2 行),使上边完全独立于其他边
- 不再需要角点例外逻辑,代码更简洁
- 每条边数据独立分隔,肉眼可读性大幅提升
🔧 修改文件
Code/src/main.py— BUG-005: 模板搜索路径修正(优先 Code/src/Template/)Code/src/pinmap_layout.py— BUG-006: 上边 Name 坐标改为(0, c),移除角点例外Code/src/pinmap_parser.py— BUG-006: 上边 Name 从 row 0 读取,Number 从 row 1 读取Test/fixtures/sample_4x4.xlsx— BUG-006: 更新为 v1.5.5 新布局Code/src/test_pinmap.py— BUG-006: 测试数据适配新布局
✅ 测试
- 全部 37 个测试通过
[v1.5.4] - 2026-06-09
🐛 Bug 修复
BUG-005 【高】模板文件名错误
- 模板文件重命名:
BallList-Template.xlsx→PinList-Template.xlsx,BallMAP-Template.xlsx→PinMAP-Template.xlsx - 同步更新
main.py中的函数名和模板引用路径
BUG-006 【高】布局重设计(Number 外侧 + Name 里侧)
- 重新设计 PinMAP 布局:从网格边界往中心走,第 1 圈 = Number(数字),第 2 圈 = Name(引脚名)
- 上边:Number row 1(最顶行),Name row 2(第二行;角点例外:最左/右上边 Name 在 (1,0)/(1,cols+1))
- 左边:Number col 0(最左列),Name col 1(第二列)
- 下边:Number row rows+3(最底行),Name row rows+2(倒数第二行)
- 右边:Number col cols+1(最右列),Name col cols(右二列)
- Pin1 保持在左上角(A3=1, B3=Pin1)
- 不再需要角点 "//" 合并,每条边不共享任何单元格
- 全部 15 种网格大小验证无冲突
- 18/18 单元测试 + 37/37 集成测试全部通过
🔧 修改文件
Code/src/main.py— BUG-005: 模板函数和引用改名;BUG-006: 传递 cols 参数Code/src/pinmap_layout.py— BUG-006: 重写坐标公式 +get_name_cell()支持 cols 参数 + 角点例外Code/src/pinmap_generator.py— BUG-006: 传递 cols 参数 + 更新注释Code/src/pinmap_parser.py— BUG-006: 重写边界检测、Name 读取(角点例外检测)Code/src/test_pinmap.py— BUG-006: 更新测试数据适配新布局Test/fixtures/PinList-Template.xlsx+PinMAP-Template.xlsx— BUG-005: 模板文件重命名
📝 文档
- 更新
CHANGELOG.md追加 v1.5.4 版本日志 - 更新
README.md追加 v1.5.4 版本说明 - 生成
Releases/v1.5.4/CHANGELOG.md
[v1.5.0] - 2026-06-06
✨ 功能新增
- F009 MAP→List 使用 balllist 模板:
run_map_to_list()改查BallList-Template.xlsx,不再共用旧模板 - F010 List→MAP 使用 ballmap 模板:
run_list_to_map()改查BallMAP-Template.xlsx,模板完全分离 - F011 模板格式提取式应用:从模板的 cellXfs/fonts/borders/fills 提取实际样式定义,替换硬编码边框和对齐;无模板时完全回退到默认样式
- F012 验证+回归测试:新增
test_f012_pinname_position()验证下边 Name 在 max_row-1、上边 Name 在 min_row+1,添加 5×5 往返一致性测试
🗑️ 废弃
_find_template_path()(PinMAP-Template.xlsx) — 不再自动查找,由_find_balllist_template_path()和_find_ballmap_template_path()替代
📝 文档
- 更新
docs/tasks.mdT015 状态为已完成 - 更新
docs/features.mdF009-F012 状态
🔧 修改文件
Code/src/main.py— 新增两个模板查找函数,修改两个方向的模板调用Code/src/xlsx_writer.py— 重写_styles_xml()支持模板样式提取Code/src/template_reader.py— 增强 cellXfs 提取(xfId、applyAlignment、wrapText)Code/src/test_pinmap.py— 新增 F012 回归测试
[v1.3.15] - 2026-06-01
🐛 Bug 修复
- pinmap_layout.py: 周长公式从
2(rows+cols)−4改为(rows+cols)×2— 修复角点共享策略,每条边独立包含其端点 - pinmap_generator.py: 角点单元格写入
"6/7"格式 — 修复 v1.3 下角点引脚丢失问题 - pinmap_parser.py: 读取时包含角点,按
"/"拆分解析多引脚序号 — 修复 roundtrip 丢失引脚问题
[v1.2.0] - 2026-05-26
🐛 Bug 修复
- run.bat:
cd /d "%~dp0src"→cd /d "%~dp0Code\src"— 修复 cd 路径报错 - run.bat:
chcp 65001末尾添加>nul— 修复 title 中文乱码 - run.bat:
mode con lines=20→lines=50— 修复 Log 窗口无法上滑 - Code/src/file_selector.py:
.strip()后增加.strip('"\'')— 修复拖拽文件路径带引号导致不存在
[v1.0.1] - 2026-05-25
📝 文档完善
- 新增
Code/docs/README.md— 项目完整说明文档(8.1KB) - 新增
Code/docs/QUICKSTART.md— 快速入门指南(6.6KB) - 新增
Code/docs/RELEASE.md— 版本发布说明(5.1KB) - 完善项目文档体系,覆盖架构设计、快速上手、版本历史
[v1.0.0] - 2026-05-25
🎉 首次发布
功能
- PinMAP 解析:支持方形/长方形封装,左上角为 1 脚,逆时针排序
- 格式支持:兼容
.xls(BIFF8 引擎)和.xlsx两种 Excel 格式 - 智能验证:自动检测重复引脚、间隙、空单元格等结构问题
- PinList 生成:按顺时针顺序输出引脚序号列表
- GUI 模式:支持 tkinter 文件选择器,零命令行使用
- 命令行模式:
python main.py input.xlsx快速转换
技术
- Python 标准库,零第三方依赖
- 自定义 BIFF8 引擎解析
.xls文件(~19KB) openpyxl读写.xlsx文件- 模块化架构:解析 → 验证 → 生成 → 输出
架构
main.py— 入口与流程编排xls_reader.py— BIFF8.xls解析引擎xlsx_reader.py—.xlsx解析器pinmap_parser.py— PinMAP 结构解析validator.py— 结构验证与错误检测pinlist_generator.py— PinList 生成器xlsx_writer.py—.xlsx输出file_selector.py— tkinter 文件选择器models.py— 数据模型utils.py— 工具函数
测试
- 6 个测试夹具覆盖正常/异常场景
- 测试报告:
Test/test_report.md