基于 Tkinter 的桌面应用程序,用于记录员工工时、测试任务分配和客户样品管理。
说明: 因涉及内部业务逻辑,本仓库仅包含应用截图,不公开源代码。
记录每日工时,支持按测试 ID、BM 名称和资源组追踪。每条记录标记完成状态(✔/✘),8 小时日工时上限强制校验。
![]() |
![]() |
支持的工作模式:
- WorkTime — 标准工时,8 小时日上限
- Overtime — 需填写起止时间、补偿类型和加班原因
从各协作部门(生产部、物流、质量、采购、项目部等)向技术部派发任务,派单表单支持关联记录和工时累计。
![]() |
![]() |
独立窗口管理任务分配,数据存储于 bosch_data/task_pool/ 下的 Excel 工作簿。支持级联筛选(组 → 测试人员 → 指派人),状态指示:待命(灰色)/ 进行中(蓝色)/ 已完成(绿色)。
通过表单创建新的工时记录,填写区域、设备名称、附件名称、工作内容、日期等字段。不完整记录可通过「强制保存」标记为待补全状态。
按日期浏览和缓存工时记录,支持节假日识别。卡片式日历以颜色区分状态:满 8 小时(绿色)、加班(暖黄)、周末/节假日(蓝灰)。
- 编辑与变更日志 — 修改已有记录,自动生成变更日志(diff 旧/新字段值)
- 外包分配 — 右键记录即可分配给外部人员,自动检测时间冲突
- 列可见性 — 自定义显示列,设置跨会话持久化
- 显示缩放 — 自动检测显示器分辨率并应用缩放(0.8x ~ 1.4x)
bosch_working_attachment/
├── main.py # 应用入口
├── config.py # 文件路径、UI 常量、INI 配置读写
├── ui/
│ ├── main_window.py # 主窗口(Application 类,Mixin 组合)
│ ├── main_window_layout.py # 控件创建与布局
│ ├── main_window_records.py # 记录加载、显示和增删改查
│ ├── main_window_cache.py # 基于日历的记录缓存
│ ├── main_window_time.py # 时间输入与计算逻辑
│ ├── main_window_lookup.py # BM/测试人员查询
│ ├── main_window_models.py # RecordDraft / RecordRow 数据模型
│ ├── edit_dialog.py # 记录编辑对话框
│ ├── calendar_dialog.py # 日历选择对话框
│ ├── outsourcing_assignment_dialog.py # 外包任务分配对话框
│ └── task_pool_window.py # 任务池管理窗口
├── repositories/
│ ├── excel_repository.py # Excel 读写封装(pandas + openpyxl)
│ └── task_pool_repository.py # 任务池增删改查,含筛选和数据规范化
├── bosch_data/ # 数据文件(Excel 工作簿)
│ ├── database/ # 按员工分月的工时记录
│ ├── task_pool/ # 任务分配工作簿
│ ├── eDaTe_test_list_2024.xlsx # 测试 ID 主数据
│ ├── MCR_New.xlsx # BM 名称映射
│ ├── Customer Sample.xlsx # 客户样品工时输出
│ ├── ETC Name List_Internal employee.xlsx # 内部员工名单
│ └── ETC Name List_External worker.xlsx # 外部人员名单
├── tests/ # pytest 测试套件
└── docs/ # 实施计划和设计文档
- Python 3.x(自带 tkinter)
- Conda(推荐)或 pip
# 创建并激活 conda 环境
conda create -n env_bosch python=3.12
conda activate env_bosch
# 安装依赖
pip install screeninfo pandas openpyxl tkcalendarconda activate env_bosch
python main.pypytest tests/ -v # 全部测试
pytest tests/test_task_pool_repository.py # 单个文件
pytest tests/ -k "test_name" # 按名称运行单个测试测试使用 monkeypatch(pytest 内置 fixture),不需要 GUI 或 Excel 文件。
所有数据文件位于 bosch_data/ 目录,每月工时记录文件命名格式:
ALL_INFO_RECORDS_YYYY_MM_{测试人员姓名}.xlsx
用户偏好设置(组/测试人员选择、列可见性、BM 历史记录)在运行时存储于 radio_selection123.conf 文件。
应用自动检测显示器分辨率并应用缩放:
| 显示器宽度 | 缩放级别 | 缩放因子 |
|---|---|---|
| < 1366px | small | 0.8 |
| 1366-1919px | normal | 1.0 |
| 1920-2559px | large | 1.2 |
| >= 2560px | xlarge | 1.4 |
仅限内部使用 - Bosch ETR-CN。






