输入工作任务+截止日期,自动拆分每日任务,临近截止日期提醒,避免逾期。

27 阅读3分钟
  1. 实际应用场景与痛点

场景

假设你是一名开发者/项目经理,手头有多个项目任务,每个任务都有明确的截止日期。你需要:

  • 合理分配每天的工作量
  • 避免最后几天集中赶工
  • 在临近截止日期时收到提醒

痛点

  • 手动拆分任务容易不合理
  • 容易忘记截止日期
  • 没有自动化提醒机制
  • 任务进度不透明
  1. 核心逻辑

  2. 输入任务名称、总工作量(小时)、截止日期

  3. 计算剩余天数

  4. 按工作日(可配置)平均分配任务

  5. 生成每日任务清单

  6. 每天检查是否有任务到期,并推送提醒

  7. 支持命令行或简单 GUI 操作

  8. 代码模块化设计

task_manager/ │ ├── main.py # 主程序入口 ├── task.py # 任务类定义 ├── scheduler.py # 任务拆分与调度 ├── notifier.py # 提醒推送模块 ├── config.py # 配置文件 └── README.md # 使用说明

  1. 代码实现(含详细注释)

"config.py"

配置参数

WORK_HOURS_PER_DAY = 6 # 每天工作时间 SKIP_WEEKENDS = True # 是否跳过周末 REMINDER_DAYS = 2 # 提前多少天开始提醒

"task.py"

from datetime import date

class Task: def init(self, name, total_hours, deadline): self.name = name self.total_hours = total_hours self.deadline = deadline # datetime.date self.daily_tasks = [] # 存储每日任务

def is_near_deadline(self, today, days=2):
    return (self.deadline - today).days <= days and (self.deadline - today).days >= 0

"scheduler.py"

from datetime import timedelta, date import config from task import Task

def generate_daily_tasks(task): """ 根据任务总工时和截止日期生成每日任务 """ today = date.today() days_left = (task.deadline - today).days if days_left <= 0: raise ValueError("截止日期已过或当天截止")

# 计算可用工作日
work_days = 0
current_day = today
while current_day <= task.deadline:
    if config.SKIP_WEEKENDS and current_day.weekday() >= 5:
        current_day += timedelta(days=1)
        continue
    work_days += 1
    current_day += timedelta(days=1)

if work_days == 0:
    work_days = 1

hours_per_day = task.total_hours / work_days
task.daily_tasks = [round(hours_per_day, 2)] * work_days

"notifier.py"

import os

def push_reminder(task): """ 简单的终端提醒 可扩展为邮件、微信、桌面通知等 """ message = f"⏰ 提醒:任务 '{task.name}' 将在 {task.deadline} 截止,请尽快完成!" print(message) # Windows 下弹窗 if os.name == 'nt': try: import winsound winsound.MessageBeep() except: pass

"main.py"

import sys from datetime import datetime, date from task import Task from scheduler import generate_daily_tasks from notifier import push_reminder import config

def main(): print("=== 任务管理小助手 ===") name = input("任务名称: ") total_hours = float(input("总工时(小时): ")) deadline_str = input("截止日期 (YYYY-MM-DD): ") deadline = datetime.strptime(deadline_str, "%Y-%m-%d").date()

task = Task(name, total_hours, deadline)

try:
    generate_daily_tasks(task)
except ValueError as e:
    print(f"错误: {e}")
    return

print(f"\n任务 '{name}' 已拆分为以下每日任务:")
for i, hours in enumerate(task.daily_tasks, start=1):
    print(f"第{i}天: {hours} 小时")

# 检查是否需要提醒
today = date.today()
if task.is_near_deadline(today, config.REMINDER_DAYS):
    push_reminder(task)

if name == "main": main()

  1. README.md

任务管理小助手

一个轻量级的 Python 工具,帮助你将任务按时间拆分,并在临近截止日期时提醒你。

功能

  • 输入任务名称、总工时、截止日期
  • 自动按工作日拆分每日任务
  • 临近截止日期时终端提醒

安装

确保 Python 3.7+ 环境

bash

git clone

cd task_manager

使用

bash

python main.py

按提示输入任务信息即可。

配置

修改 config.py 调整每日工时、是否跳过周末、提醒天数等。

  1. 使用说明

  2. 运行 "main.py"

  3. 输入任务名称、总工时、截止日期

  4. 程序会输出每日任务安排

  5. 如果任务临近截止日期,会弹出提醒

  6. 核心知识点卡片

知识点 说明

"datetime" 模块 处理日期和时间计算 面向对象编程 用 "Task" 类封装任务属性与方法 模块化设计 将功能拆分到不同文件,便于维护 配置化 通过 "config.py" 管理参数 提醒机制 可扩展为邮件、微信、桌面通知 异常处理 防止截止日期无效导致崩溃

  1. 总结

这个工具虽然简单,但涵盖了任务管理、时间规划、自动化提醒的核心需求,适合个人或小团队使用。

未来可以扩展:

  • 图形界面(Tkinter/PyQt)
  • 多任务管理
  • 与日历/任务管理软件同步
  • 邮件/微信推送提醒

如果你需要,还可以加上多任务管理版本和GUI界面,让它更实用。

利用AI高效解决实际问题,如果你觉得这个工具好用,欢迎关注我!