Archive
This commit is contained in:
1 parent
206997510c
commit
251bd3e65f
14 files changed
+836
No files matched your search
@@ -0,0 +1 @@
|
||||
{"Language":"zh_cn","Programming Language":"Python","Original Requirements":"创建一个Python命令行TODO应用,支持增删改查,数据存JSON文件","Project Name":"todo_cli","Product Goals":["提供简洁高效的命令行交互体验","确保数据持久化与可靠性","支持快速增删改查操作"],"User Stories":["作为用户,我希望能够通过命令行快速添加新的待办事项","作为用户,我希望能够查看所有待办事项及其完成状态","作为用户,我希望能够标记待办事项为已完成","作为用户,我希望能够删除不再需要的待办事项","作为用户,我希望能够修改已有待办事项的内容"],"Competitive Analysis":["Todo.txt CLI: 纯文本文件存储,支持标签和优先级,但无JSON格式","Taskwarrior: 功能强大的命令行任务管理,但学习曲线较陡","t: 轻量级TODO工具,使用JSON存储,但功能单一","GitHub Issues CLI: 与GitHub集成,不适合本地简单使用","Microsoft To Do CLI: 非官方,依赖云服务,离线不可用"],"Competitive Quadrant Chart":"quadrantChart\n title \"命令行TODO工具竞争力分析\"\n x-axis \"功能简单\" --> \"功能丰富\"\n y-axis \"易用性低\" --> \"易用性高\"\n quadrant-1 \"功能丰富且易用\"\n quadrant-2 \"功能简单但易用\"\n quadrant-3 \"功能简单且难用\"\n quadrant-4 \"功能丰富但难用\"\n \"Todo.txt CLI\": [0.3, 0.7]\n \"Taskwarrior\": [0.8, 0.3]\n \"t\": [0.2, 0.6]\n \"GitHub Issues CLI\": [0.7, 0.4]\n \"Microsoft To Do CLI\": [0.5, 0.5]\n \"Our Target Product\": [0.4, 0.8]","Requirement Analysis":"本项目要求开发一个Python命令行TODO应用,核心功能包括增删改查(CRUD),数据以JSON文件形式持久化存储。用户通过命令行参数或交互式菜单操作。需要支持:添加任务(标题、描述、截止日期等可选字段)、列出所有任务(可筛选状态)、标记完成/未完成、删除任务、编辑任务内容。数据存储于本地JSON文件,需处理文件读写异常。命令行界面应清晰易用,提供帮助信息。","Requirement Pool":[["P0","实现添加待办事项功能,支持输入标题,可选描述和截止日期"],["P0","实现查看所有待办事项列表,显示ID、标题、状态、创建时间等"],["P0","实现删除待办事项功能,通过ID或索引删除"],["P0","实现修改待办事项功能,支持更新标题、描述、截止日期、状态"],["P1","实现数据持久化,使用JSON文件存储,支持自动加载和保存"]],"UI Design draft":"命令行界面,无图形UI。用户通过命令参数操作,例如:todo add \"任务标题\" -d \"描述\" -due 2025-01-01;todo list [--all|--done|--pending];todo done <id>;todo delete <id>;todo edit <id> --title \"新标题\"。支持--help查看帮助。输出格式为表格或列表,清晰显示任务信息。","Anything UNCLEAR":"无"}
|
||||
@@ -0,0 +1 @@
|
||||
创建一个Python命令行TODO应用,支持增删改查,数据存JSON文件
|
||||
@@ -0,0 +1 @@
|
||||
{"Implementation approach":"本项目使用Python标准库实现,无需第三方依赖。命令行参数解析采用argparse模块,数据持久化使用json模块,文件存储于用户主目录下的.todo_cli/todos.json。核心逻辑封装在TodoManager类中,提供增删改查方法。CLI接口通过TodoCLI类处理用户输入并调用TodoManager。数据模型TodoItem使用dataclass简化定义。整体设计遵循单一职责原则,确保代码简洁可维护。","File list":["main.py","todo.py","storage.py"],"Data structures and interfaces":"classDiagram\n class TodoItem {\n -int id\n -str title\n -str description\n -str due_date\n -bool completed\n -str created_at\n +__init__(id: int, title: str, description: str = \"\", due_date: str = \"\", completed: bool = False, created_at: str = \"\")\n +to_dict() dict\n +from_dict(data: dict) TodoItem\n }\n class Storage {\n -str file_path\n +__init__(file_path: str)\n +load() list[dict]\n +save(data: list[dict]) None\n }\n class TodoManager {\n -list[TodoItem] items\n -Storage storage\n -int next_id\n +__init__(storage: Storage)\n +add(title: str, description: str = \"\", due_date: str = \"\") TodoItem\n +list_all() list[TodoItem]\n +list_by_status(completed: bool) list[TodoItem]\n +mark_done(item_id: int) bool\n +mark_undone(item_id: int) bool\n +delete(item_id: int) bool\n +edit(item_id: int, title: str = None, description: str = None, due_date: str = None, completed: bool = None) bool\n +_load() None\n +_save() None\n +_find_by_id(item_id: int) TodoItem | None\n }\n class TodoCLI {\n -TodoManager manager\n -argparse.ArgumentParser parser\n +__init__(manager: TodoManager)\n +run(args: list[str] = None) None\n +_setup_parser() None\n +_handle_add(args) None\n +_handle_list(args) None\n +_handle_done(args) None\n +_handle_delete(args) None\n +_handle_edit(args) None\n }\n TodoCLI --> TodoManager\n TodoManager --> Storage\n TodoManager --> TodoItem\n Storage ..> TodoItem : uses to_dict/from_dict\n","Program call flow":"sequenceDiagram\n participant User as 用户\n participant CLI as TodoCLI\n participant Manager as TodoManager\n participant Storage as Storage\n participant File as JSON文件\n User->>CLI: python main.py add \"任务标题\" -d \"描述\" -due 2025-01-01\n CLI->>CLI: _setup_parser() 解析参数\n CLI->>CLI: _handle_add(args)\n CLI->>Manager: add(title, description, due_date)\n Manager->>Manager: 生成新TodoItem,设置id=next_id\n Manager->>Manager: 将item加入items列表\n Manager->>Manager: _save()\n Manager->>Storage: save([item.to_dict() for item in items])\n Storage->>File: 写入JSON文件\n File-->>Storage: 成功\n Storage-->>Manager: None\n Manager-->>CLI: 返回新TodoItem\n CLI-->>User: 打印添加成功信息\n\n User->>CLI: python main.py list\n CLI->>CLI: _handle_list(args)\n CLI->>Manager: list_all()\n Manager->>Manager: 返回items列表\n Manager-->>CLI: list[TodoItem]\n CLI->>CLI: 格式化输出表格\n CLI-->>User: 显示所有任务\n\n User->>CLI: python main.py done 1\n CLI->>CLI: _handle_done(args)\n CLI->>Manager: mark_done(1)\n Manager->>Manager: _find_by_id(1) -> item\n Manager->>Manager: item.completed = True\n Manager->>Manager: _save()\n Manager-->>CLI: True\n CLI-->>User: 打印标记成功\n\n User->>CLI: python main.py delete 1\n CLI->>CLI: _handle_delete(args)\n CLI->>Manager: delete(1)\n Manager->>Manager: _find_by_id(1) -> item\n Manager->>Manager: 从items中移除\n Manager->>Manager: _save()\n Manager-->>CLI: True\n CLI-->>User: 打印删除成功\n\n User->>CLI: python main.py edit 1 --title \"新标题\" --description \"新描述\"\n CLI->>CLI: _handle_edit(args)\n CLI->>Manager: edit(1, title=\"新标题\", description=\"新描述\")\n Manager->>Manager: _find_by_id(1) -> item\n Manager->>Manager: 更新item属性\n Manager->>Manager: _save()\n Manager-->>CLI: True\n CLI-->>User: 打印编辑成功\n","Anything UNCLEAR":"无"}
|
||||
@@ -0,0 +1 @@
|
||||
{"Required packages":[],"Required Other language third-party packages":[],"Logic Analysis":[["storage.py","Contains Storage class with load() and save() methods for JSON file persistence. No dependencies on other project files."],["todo.py","Contains TodoItem dataclass and TodoManager class. TodoManager depends on Storage for data persistence. Imports from storage.py."],["main.py","Contains TodoCLI class and main entry point. TodoCLI depends on TodoManager. Imports from todo.py."]],"Task list":["storage.py","todo.py","main.py"],"Full API spec":"","Shared Knowledge":"Data model: TodoItem with fields id, title, description, due_date, completed, created_at. Storage path: ~/.todo_cli/todos.json. All modules use Python standard library only.","Anything UNCLEAR":"无"}
|
||||
Reference in new issue
Block a user