编写加班时长合理管控程序,统计无效加班,提醒及时下班,守护个人生活边界。
加班时长合理管控程序(Overtime Guard)
—— 统计无效加班 · 提醒及时下班 · 守护生活边界
这是一个典型的
✅「用工程方法对抗系统性过劳」
✅「把‘下班’变成可执行的技术动作」
的创新实验案例。
一、实际应用场景描述(真实可落地)
在很多职场环境中,加班已经从“例外”变成“常态”:
- 明明工作已结束,仍习惯性坐在工位
- 为了“看起来努力”而延长在线时间
- 晚上 9 点后还在回消息
- 周末被默认视为可加班时间
长期结果:
- 精力透支
- 创造力下降
- 工作与生活边界彻底消失
本程序定位为:
✅ 本地运行的加班监控工具
✅ 记录上下班时间
✅ 自动识别“无效加班”
✅ 给出下班提醒与边界建议
二、引入痛点(工程 + 行为双视角)
痛点 技术映射
加班无感知 时间戳建模
无法区分有效/无效加班 规则引擎
缺乏下班仪式感 提醒机制
数据不可见 本地日志
工具过重 CLI + JSON
👉 问题本质不是“工作时间长”,而是缺乏边界反馈系统。
三、核心逻辑讲解(工程视角)
1️⃣ 时间建模
- 上班打卡时间
- 下班打卡时间
- 标准工作时长(如 8 小时)
2️⃣ 加班判定
- 正常加班:有明确任务说明
- 无效加班:超时且无实质产出说明
3️⃣ 提醒策略
- 接近标准时长 → 温和提醒
- 超过阈值 → 强提醒
4️⃣ 数据沉淀
- 每日记录
- 周度汇总
- 用于自我观察而非考核
四、代码实现(模块化 + 清晰注释)
📁 项目结构
overtime-guard/
├── main.py
├── config.py
├── clock.py
├── analyzer.py
├── notifier.py
├── storage.py
├── data/
│ └── records.json
└── README.md
✅ config.py
"""
加班管控规则配置
"""
STANDARD_HOURS = 8
MAX_REASONABLE_HOURS = 10
REASONS_REQUIRED = True # 超时是否需要原因
✅ clock.py
from datetime import datetime
def now_time():
return datetime.now()
def duration(start, end):
delta = end - start
return delta.total_seconds() / 3600
✅ analyzer.py
from config import STANDARD_HOURS, MAX_REASONABLE_HOURS
def analyze_session(start, end, reason=""):
"""
分析一次工作会话
"""
hours = duration(start, end)
if hours <= STANDARD_HOURS:
return "✅ 正常工时"
elif hours <= MAX_REASONABLE_HOURS:
return "⚠️ 合理加班" if reason else "❌ 无效加班(无原因)"
else:
return "🚨 过度加班(高风险)"
✅ notifier.py
def remind(hours):
if hours >= 9:
print("⚠️ 已接近 9 小时,请准备结束工作")
if hours >= 10:
print("🚨 已超过 10 小时,建议立即下线")
✅ storage.py
import json
import os
from datetime import datetime
DATA_FILE = "data/records.json"
def ensure_file():
if not os.path.exists(DATA_FILE):
with open(DATA_FILE, "w", encoding="utf-8") as f:
json.dump([], f)
def save_record(start, end, status, reason):
ensure_file()
record = {
"date": datetime.now().date().isoformat(),
"start": start.isoformat(),
"end": end.isoformat(),
"status": status,
"reason": reason
}
with open(DATA_FILE, "r+", encoding="utf-8") as f:
data = json.load(f)
data.append(record)
f.seek(0)
json.dump(data, f, ensure_ascii=False, indent=2)
✅ main.py
from datetime import datetime
from clock import now_time, duration
from analyzer import analyze_session
from notifier import remind
from storage import save_record
def main():
print("🕒 加班时长合理管控工具\n")
print("请输入上班时间(HH:MM):")
start_str = input()
start = datetime.combine(datetime.today(),
datetime.strptime(start_str, "%H:%M").time())
input("按回车模拟下班打卡...")
end = now_time()
hours = duration(start, end)
reason = ""
if hours > 8:
reason = input("请输入加班原因(如无请留空):")
status = analyze_session(start, end, reason)
remind(hours)
print(f"\n📊 今日状态:{status}")
save_record(start, end, status, reason)
if __name__ == "__main__":
main()
五、README 与使用说明
README.md
# Overtime Guard
## 简介
一个轻量级加班管控工具,
用于统计无效加班、提醒及时下班,
帮助守护个人生活边界。
## 特点
- 本地运行,无数据上传
- 不用于绩效考核
- 适合个人自我管理
## 使用方法
1. 安装 Python 3.9+
2. 运行:
python main.py
3. 输入上下班时间
## 数据存储
所有记录保存在:
data/records.json
六、核心知识点卡片
类别 内容
Python 基础 datetime、函数
时间建模 工作会话抽象
规则引擎 加班判定逻辑
行为设计 提醒与边界
工程思维 配置解耦
社会议题 劳动健康与技术伦理
七、总结(工程师视角)
这个程序不是“反加班神器”,
而是一个让你重新获得时间感知的实验工具。
它的价值不在于阻止加班,而在于:
✅ 让加班变得可见
✅ 让“无效加班”无处藏身
✅ 让下班重新成为一个被尊重的动作
技术不该只服务于效率最大化,也应该服务于人的可持续存在。
利用AI解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!
