Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Bosch ETR-CN 工时记录系统 4.0

基于 Tkinter 的桌面应用程序,用于记录员工工时、测试任务分配和客户样品管理。

说明: 因涉及内部业务逻辑,本仓库仅包含应用截图,不公开源代码。


功能概览

工时记录(主界面)

记录每日工时,支持按测试 ID、BM 名称和资源组追踪。每条记录标记完成状态(✔/✘),8 小时日工时上限强制校验。

主界面 主界面2

支持的工作模式:

  • WorkTime — 标准工时,8 小时日上限
  • Overtime — 需填写起止时间、补偿类型和加班原因

任务派单

从各协作部门(生产部、物流、质量、采购、项目部等)向技术部派发任务,派单表单支持关联记录和工时累计。

派单界面1 派单界面2

任务池管理

独立窗口管理任务分配,数据存储于 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 tkcalendar

运行

conda activate env_bosch
python main.py

运行测试

pytest 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。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors