飞书多维表同步工具2026-07-09v4.0.14
列宽缩减810px+ERP路径左对齐+日志来源补全
bug修复+优化v4.0.14
需求描述
- 当前看不到右侧边缘了,整体宽度排版请再略微缩减几个像素,参考左侧列字段距离容器左侧的宽度
- ERP保存路径列路径信息显示有问题(前面用…了),需改为向左对齐,右侧无法显示的区域改为…显示
- 执行日志板块来源选择列表只有"ERP导出",实际日志明细包含"ERP导出"、"领星ERP"两种来源,需优化
根因分析
- 右侧看不到边缘:v4.0.13列宽总和815px,实测Treeview可用宽度817px,仅留2px边距。但Treeview左侧padx=5,右侧也应留约5px+边框,2px不足以体现右侧边缘
- 路径前缀显示…:v4.0.13的截断逻辑是
"..." + save_path[-38:](保留尾部38字符),导致路径前缀被…替代。用户实际更需要看到路径头部(前缀更有意义),应改为save_path[:35] + "…"(保留头部35字符,尾部显示…) - 日志来源下拉框缺失:硬编码
["全部", "数据同步", "ERP导出", "任务编排", "凭据管理"],但领星ERP下载器(erp/lingxing/downloader.py)实际输出source="领星ERP"的日志,导致该来源日志无法被筛选
改动文件清单
| 文件 | 改动内容 |
|---|---|
tabs/sync_tasks_tab.py | folder列宽235→230(缩减5px),列宽总和815→810px |
tabs/credentials_tab.py | account 185→180、table_token 215→210、status 75→80(微调),列宽总和815→810px |
tabs/erp_report_tab.py | save_path列宽320→315(缩减5px);路径截断逻辑改为 save_path[:35] + "…"(保留头部、尾部…) |
tabs/log_center_tab.py | message列宽520→515(缩减5px);来源下拉框增加"领星ERP"和"系统"选项 |
utils/ui_layout.py | LAYOUT_SCHEMA_VERSION 4→5,触发旧列宽清除 |
gui_sync.py | 版本号 4.0.13→4.0.14 |
各Tab列宽分配明细(总和均为810px)
| Tab | 固定文字列 | 用户输入列 | 用户输入占比 |
|---|---|---|---|
| sync_tasks | select=40, sync_mode=75, mode=75, status=80 (270px) | name=160, credential=150, folder=230 (540px) | 67% |
| credentials | platform=75, type=110, status=80 (265px) | name=155, account=180, table_token=210 (545px) | 67% |
| erp_tasks | select=40, report_type=100, export_method=65, cycle=65, status=75 (345px) | name=150, save_path=315 (465px) | 57% |
| log_center | level=55, source=85 (140px) | time=155, message=515 (670px) | 83% |
技术要点
- 右侧边缘留白参考左侧:Treeview用
pack(side=tk.LEFT, fill=tk.BOTH, expand=True, padx=5),左侧padx=5px。为让右侧也留约5px可见边缘,列宽总和应比可用宽度少约7px(5px留白+2px边框)。817-7=810px - 路径截断保留头部:文件路径的前缀(如
D:/TRAE/...)比尾部更有意义,用户更关心路径开头定位。改为save_path if len(save_path) <= 38 else save_path[:35] + "…",35字符头部+1个…符号=36字符显示宽度,配合悬停tooltip看完整路径 - 日志来源下拉框补全:实际日志来源有"数据同步"、"ERP导出"、"领星ERP"、"任务编排"、"凭据管理"、"系统"6种(领星ERP来自
erp/lingxing/downloader.py的source="领星ERP"),下拉框需全部列出才能正确筛选
验证结果
自动化测试验证(4项全部通过):
| 测试项 | 预期结果 | 实际结果 | 状态 |
|---|---|---|---|
| 语法检查 | 6个文件通过py_compile | 全部通过 | 通过 |
| 各Tab列宽总和=810px | 4个Tab总和810±3px | sync/cred/erp/log均为810px | 通过 |
| ERP路径截断保留头部 | 长路径→save_path[:35]+"…" | 54字符路径→保留头部35字符+尾部… | 通过 |
| 日志来源含领星ERP | 下拉框包含"领星ERP" | 已包含,完整列表7项 | 通过 |
| schema=5+版本4.0.14 | 均已升级 | 已升级 | 通过 |
踩坑与解决
- v4.0.13路径截断方向错误:当时认为路径末尾的文件名/文件夹名更有意义,用了
"..." + save_path[-38:]保留尾部。实际用户反馈路径前缀被…替代后无法定位根目录,前缀才是定位关键。v4.0.14改为保留头部。教训:截断方向应根据信息定位价值决定,文件路径的前缀(根目录定位)通常比尾部(文件名)更重要 - 日志来源下拉框硬编码遗漏:v4.0.9建立日志中心时硬编码了5个来源,但未同步ERP模块新增的"领星ERP"来源。教训:来源/类型等枚举值应从实际代码中收集,而非手动维护硬编码列表
下一阶段规划
- 考虑日志来源下拉框改为动态获取(从已有日志中提取唯一source值),避免新增模块来源时再次遗漏