sequenceDiagram participant User as 用户 participant CLI as TodoCLI participant Manager as TodoManager participant Storage as Storage participant File as JSON文件 User->>CLI: python main.py add "任务标题" -d "描述" -due 2025-01-01 CLI->>CLI: _setup_parser() 解析参数 CLI->>CLI: _handle_add(args) CLI->>Manager: add(title, description, due_date) Manager->>Manager: 生成新TodoItem,设置id=next_id Manager->>Manager: 将item加入items列表 Manager->>Manager: _save() Manager->>Storage: save([item.to_dict() for item in items]) Storage->>File: 写入JSON文件 File-->>Storage: 成功 Storage-->>Manager: None Manager-->>CLI: 返回新TodoItem CLI-->>User: 打印添加成功信息 User->>CLI: python main.py list CLI->>CLI: _handle_list(args) CLI->>Manager: list_all() Manager->>Manager: 返回items列表 Manager-->>CLI: list[TodoItem] CLI->>CLI: 格式化输出表格 CLI-->>User: 显示所有任务 User->>CLI: python main.py done 1 CLI->>CLI: _handle_done(args) CLI->>Manager: mark_done(1) Manager->>Manager: _find_by_id(1) -> item Manager->>Manager: item.completed = True Manager->>Manager: _save() Manager-->>CLI: True CLI-->>User: 打印标记成功 User->>CLI: python main.py delete 1 CLI->>CLI: _handle_delete(args) CLI->>Manager: delete(1) Manager->>Manager: _find_by_id(1) -> item Manager->>Manager: 从items中移除 Manager->>Manager: _save() Manager-->>CLI: True CLI-->>User: 打印删除成功 User->>CLI: python main.py edit 1 --title "新标题" --description "新描述" CLI->>CLI: _handle_edit(args) CLI->>Manager: edit(1, title="新标题", description="新描述") Manager->>Manager: _find_by_id(1) -> item Manager->>Manager: 更新item属性 Manager->>Manager: _save() Manager-->>CLI: True CLI-->>User: 打印编辑成功