```python import json import re from datetime import datetime, timedelta class Task: def __init__(self, name, description, priority, duration, deadline, repeat=False, dependency=None, task_id=None, category=None): self.id = task_id if task_id else len(User().tasks) + 1 self.name = name self.description = description self.priority = priority self.duration = duration self.deadline = datetime.strptime(deadline, '%Y-%m-%d') self.repeat = repeat self.dependency = dependency self.category = category self.completed = False class User: def __init__(self): self.tasks = [] def add_task(self, task): self.tasks.append(task) class Scheduler: def generate_daily_plan(self, tasks): today = datetime.now().date() today_tasks = [t for t in tasks if t.deadline.date() == today and not t.completed] sorted_tasks = sorted(today_tasks, key=lambda x: {'高':3, '中':2, '低':1}[x.priority], reverse=True) plan = [] current_time = datetime.now().replace(hour=9, minute=0) for task in sorted_tasks: end_time = current_time + timedelta(minutes=task.duration) plan.append(f"{current_time.strftime('%H:%M')} - {end_time.strftime('%H:%M')} {task.name}") current_time = end_time return plan def main(): user = User() scheduler = Scheduler() # 示例任务 tasks = [ Task("完成项目报告", "撰写Q2季度项目报告 @办公室", "高", 120, "2025-06-20"), Task("回复重要邮件", "处理客户咨询邮件 @邮箱", "中", 30, "2025-06-15"), Task("健身锻炼", "每日健身计划 @健身房", "低", 45, "2025-06-15") ] for task in tasks: user.add_task(task) # 显示今日任务 today = datetime.now().date() print("今日任务:") for i, task in enumerate([t for t in user.tasks if t.deadline.date() == today], 1): location = re.search(r'@(\w+)', task.description).group(1) if '@' in task.description else None print(f"{i}. {task.name} [{task.priority}] {task.duration}分钟 {'@'+location if location else ''} (截止: {task.deadline.strftime('%Y-%m-%d')})") # 生成计划 print("\n建议时间安排:") for item in scheduler.generate_daily_plan(user.tasks): print(item) if __name__ == "__main__": main() ``` 额外需要注意的逻辑点: 1. 任务优先级排序时需要考虑不同语言环境下对"高/中/低"的识别问题 2. 时间安排需要处理任务时长超过工作日剩余时间的情况 3. 对于重复任务,需要特殊处理其deadline的计算方式 [2025-06-27 22:04:01 | AI写代码神器 | 708点数解答]