Skip to content

moonbai/OverTime

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

加班管理系统 (OverTime)

Python License

一个基于 Python Tkinter 的加班管理系统,支持桌面应用和 Web 服务两种交互方式。

主要特性:

  • 📝 加班/请假记录管理
  • 🗓️ 智能节假日检测
  • 💰 加班工资自动计算
  • 🔔 多平台 Webhook 推送(飞书/钉钉/企微/Slack)
  • 🌐 Web 网页端填报
  • 📊 数据导入导出

📦 项目结构

OverTime/
├── core/                       # 核心模块
│   ├── __init__.py            # 包初始化(导出公共接口)
│   ├── config.py               # 配置管理器
│   ├── constants.py            # 常量定义
│   ├── data_manager.py         # 数据管理器
│   ├── models.py               # 数据模型
│   └── utils.py                # 工具函数
├── modules/                    # 业务模块
│   ├── __init__.py            # 包初始化
│   ├── holiday.py              # 节假日检查器
│   ├── holiday.json            # 节假日本地数据
│   ├── overtime.py            # 加班统计模块
│   ├── salary.py               # 工资计算模块
│   ├── leave.py                # 请假管理模块
│   ├── webhook.py              # Webhook 推送模块
│   └── web_service/            # Web 服务子模块
│       ├── __init__.py         # 包初始化
│       ├── server.py           # 服务启动器
│       ├── handlers.py         # 请求处理器
│       └── templates.py        # HTML 模板
├── ui/                         # UI 模块
│   ├── __init__.py            # 包初始化
│   ├── main_window.py          # 主窗口界面
│   └── settings_dialog.py      # 设置对话框
├── tests/                      # 单元测试
│   ├── __init__.py
│   ├── test_models.py          # 数据模型测试
│   └── test_utils.py           # 工具函数测试
├── scripts/                    # 辅助脚本
│   ├── install_deps.py         # 依赖安装
│   ├── check_env.py            # 环境检测
│   └── backup_data.py          # 数据备份
├── docs/                       # 文档
│   ├── README.md               # 项目说明
│   └── code_wiki.md            # 完整代码文档
├── data/                       # 数据目录
│   ├── overtime_records.csv    # 加班记录
│   └── backup/                 # 备份目录
├── main.py                     # 程序入口
├── system.py                   # 系统集成器
├── config.json                 # 配置文件(自动生成)
├── requirements.txt            # 依赖清单
├── pyproject.toml              # 项目配置(Python 打包)
└── .gitignore                  # Git 忽略文件

🚀 快速开始

环境要求

  • Python 3.8+
  • Windows / Linux / macOS

安装依赖

# 克隆项目
git clone https://github.com/moonbai/OverTime.git
cd OverTime

# 安装核心依赖
pip install -r requirements.txt

# 或使用 pyproject.toml (推荐)
pip install -e .

运行程序

python main.py

可选依赖

依赖 安装命令 功能
chinesecalendar pip install chinesecalendar 节假日自动判断
openpyxl pip install openpyxl Excel 导出

🎯 核心功能

1. 桌面应用

  • 数据录入:用户、日期、加班时长、请假类型
  • 汇总统计:月度工时统计、分类汇总
  • 数据筛选:按用户、日期、类型筛选记录
  • 导入导出:CSV/Excel 数据交换

2. Web 服务

启动服务后可通过浏览器访问:

http://localhost:8080          # 本机访问
http://<IP地址>:8080            # 局域网访问

支持的功能:

  • 📝 网页端填报加班/请假
  • 🔍 API 接口数据查询
  • 📊 日期类型自动检测

3. Webhook 推送

支持多平台消息推送,消息字段拆分显示:

平台 消息格式 显示效果
飞书/Lark Interactive 卡片 字段两列显示 + 按钮
钉钉 Markdown 分行列表
企业微信 Text 每行一个字段
Slack Block Kit 字段分列显示

📊 架构设计

模块关系

┌─────────────────────────────────────────────────────┐
│                    main.py                          │
│                   (程序入口)                         │
└─────────────────────┬───────────────────────────────┘
                      │
                      ▼
┌─────────────────────────────────────────────────────┐
│                   system.py                          │
│               (系统集成器)                            │
│  - 模块初始化                                        │
│  - 生命周期管理                                      │
└─────────────────────┬───────────────────────────────┘
                      │
        ┌─────────────┼─────────────┐
        ▼             ▼             ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│   UI 模块     │ │  业务模块     │ │  核心模块     │
│  main_window  │ │  overtime     │ │  config       │
│  settings     │ │  salary       │ │  data_manager │
│               │ │  leave        │ │  models       │
│               │ │  webhook      │ │  utils        │
│               │ │  holiday      │ │  constants    │
└───────────────┘ └───────────────┘ └───────────────┘

数据模型

模型 说明
OvertimeRecord 加班记录数据模型
MonthlySummary 月度汇总数据模型
SalaryConfig 工资配置数据模型
HolidayInfo 节假日信息数据模型
SubmitData 提交数据模型

🧪 测试

# 运行单元测试
python -m pytest tests/ -v

# 运行特定测试
python -m pytest tests/test_models.py -v

⚙️ 配置说明

config.json

{
  "last_user": "",
  "default_hours": "8",
  "page_size": 10,
  "web_port": 8080,
  "leave_types": ["事假", "病假", "年假", "婚假", "产假"],
  "deduct_rest_day_hours": true,
  "overtime_pay": {
    "enabled": false,
    "hourly_wage": 50.0,
    "weekday_rate": 1.0,
    "weekend_rate": 1.5,
    "holiday_rate": 2.0,
    "deduct_types": ["事假"]
  },
  "webhook": {
    "enabled": false,
    "url": "",
    "platform": "feishu",
    "timeout": 10,
    "retry": 3,
    "sync_mode": "sync"
  }
}

🔌 API 接口

接口 方法 说明
/ GET 网页填报界面
/api/data GET 获取所有记录
/api/check_date?date=YYYY-MM-DD GET 检测日期类型
/submit POST 表单提交(网页)
/api/submit POST 数据提交(API)
/status GET 服务状态检查

🛠️ 开发指南

添加新模块

  1. 在对应目录创建模块文件
  2. __init__.py 中导出
  3. system.py 中初始化

运行代码检查

# 安装工具
pip install black ruff

# 格式化代码
black .

# 代码检查
ruff check .

📝 更新日志

v2.0 (2026-05)

  • ✨ 新增数据模型 (core/models.py)
  • ✨ 新增常量定义 (core/constants.py)
  • ✨ 优化 Webhook 消息格式(字段拆分)
  • ✨ 添加单元测试
  • ✨ 新增 pyproject.toml 项目配置
  • ✨ 添加 .gitignore
  • 🔧 优化代码结构和类型注解

v1.x

  • 基础加班记录管理
  • 节假日判断
  • Web 服务支持
  • Webhook 推送

🤝 贡献

欢迎提交 Issue 和 Pull Request!


📄 许可证

MIT License


💖 致谢

About

加班管理系统是一款基于 Python Tkinter 开发的Windows应用程序,用于记录、统计个人的加班数据。该程序具备智能日期检测、工资自动计算、Web服务、WebHook消息推送等现代化功能。

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages