```python import argparse import json import re from datetime import datetime, timedelta # 用户类 class User: def __init__(self): self.tasks = [] # 任务类 class Task: def __init__(self, name, description, priority, duration, deadline, repeat=False, dependency=None, task_id=None): self.id = task_id if task_id is not None 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 def remaining_time(self): return self.deadline - datetime.now() # 调度器类 class Scheduler: def __init__(self, user): self.user = user def generate_daily_plan(self): today = datetime.now().date() today_tasks = [task for task in self.user.tasks if task.deadline.date() == today] sorted_tasks = sorted(today_tasks, key=lambda x: x.priority, reverse=True) time = datetime.now().replace(hour=9, minute=0, second=0, microsecond=0) plan = [] for task in sorted_tasks: end_time = time + timedelta(minutes=task.duration) plan.append(f"{time.strftime('%H:%M')} - {end_time.strftime('%H:%M')} {task.name}") time = end_time return plan def auto_schedule_dependencies(self): pass # 时间块类 class TimeBlock: def __init__(self, start, end, task): self.start = start self.end = end self.task = task # 命令行交互类 class TaskCLI: def __init__(self): self.user = User() self.scheduler = Scheduler(self.user) def add_task(self): name = input("任务名称:") description = input("描述:") priority = input("优先级:") duration = int(input("预计时长(分钟):")) deadline = input("截止日期(YYYY-MM-DD):") repeat = input("是否重复?(y/n):") == 'y' dependency = input("是否依赖其他任务?(y/n):") == 'y' task = Task(name, description, priority, duration, deadline, repeat, dependency) self.user.tasks.append(task) print(f"任务已添加!ID: {task.id}") def view_today_tasks(self): today = datetime.now().date() today_tasks = [task for task in self.user.tasks if task.deadline.date() == today] print(f"=== 今日任务 ({today}) ===") for i, task in enumerate(today_tasks, start=1): location = re.search(r'@(\w+)', task.description).group(1) if re.search(r'@(\w+)', task.description) else None print(f"{i}. {task.name} [{task.priority}] {task.duration}分钟 {'@'+location if location else ''} (截止: {task.deadline.strftime('%Y-%m-%d')})") plan = self.scheduler.generate_daily_plan() print("=== 时间安排建议 ===") for p in plan: print(p) def task_statistics(self): pass def save_tasks_to_json(self): tasks_data = [] for task in self.user.tasks: task_data = { "id": task.id, "name": task.name, "description": task.description, "priority": task.priority, "duration": task.duration, "deadline": task.deadline.strftime('%Y-%m-%d'), "repeat": task.repeat, "dependency": task.dependency } tasks_data.append(task_data) with open('tasks.json', 'w') as f: json.dump(tasks_data, f) def load_tasks_from_json(self): try: with open('tasks.json', 'r') as f: tasks_data = json.load(f) for task_data in tasks_data: task = Task(task_data["name"], task_data["description"], task_data["priority"], task_data["duration"], task_data["deadline"], task_data["repeat"], task_data["dependency"], task_data["id"]) self.user.tasks.append(task) except FileNotFoundError: pass def run(self): self.load_tasks_from_json() while True: print("=== 智能任务调度系统 ===") print("1. 查看今日任务") print("2. 添加新任务") print("3. 任务统计") print("4. 设置") print("5. 退出登录") choice = input("选择操作:") if choice == '1': self.view_today_tasks() elif choice == '2': self.add_task() elif choice == '3': self.task_statistics() elif choice == '5': self.save_tasks_to_json() break if __name__ == "__main__": cli = TaskCLI() cli.run() ``` 额外需要注意的逻辑点: 1. 在处理任务依赖关系的自动调度时,需要考虑任务之间的先后顺序和可能出现的循环依赖问题。 2. 对于任务的重复周期,需要实现相应的逻辑来更新任务的截止日期。 3. 在进行文件读写操作时,要考虑文件可能不存在或者文件格式错误的情况,做好异常处理。 [2025-06-27 21:59:53 | AI写代码神器 | 1346点数解答]