一、业务和功能介绍:
立项背景:日常任务管理工具要么太简单(只能打勾),要么太复杂(Notion/Jira级别的学习成本)。计划官解决的是"用说话的方式管理任务"——用户输入一句自然语言,AI自动拆解成结构化任务,同时用三种视角帮用户看清计划的全貌
二、核心功能模块:
1. AI自然语言解析:接入DeepSeek API,用户输入"下周前完成Q3报告,记得找张经理要数据"这类日常表达,AI自动提取任务名、截止时间、备注,结构化存入本地。支持批量操作指令,比如"把采购相关的任务全部标记完成"
2. 三视图切换:事务表(层级树,10级中文标号:壹、一、1、A、a……)、时刻表(按DDL日期分组的时间线视图,逾期标红)、条件图(节点连线依赖图,AND/OR逻辑,实线虚线区分)。三种视图共享同一份数据,任意切换
3. 多表管理:类似Excel的Sheet概念,可以建多个表分别管理不同场景(工作、学习、生活),每个表独立存储,支持新建、切换、重命名、关闭
4. 文件导入:支持Docx和TXT导入,自动检测编码(UTF8/GBK/ANSI),识别已有标号体系直接解析,非结构化文本走AI解析
5. 10级中文标号系统:从"壹、"到"(a)",完整支持50以内的中文大写数字和26进制字母进位,自动编号、重整序号
6. 日期推进:假期/出差后一键推进所有未完成任务的日期,弹窗询问"延续/修改/合并",记录处理方式
7. 每日事务:标记为每日事务的任务隔天自动重置为进行中状态
8. 前置依赖:任务间可设置AND/OR前置条件,条件图用实线/虚线+汇聚点可视化展示
三、业务流程:启动程序 -> 设置API Key(首次) -> 在输入框打字描述任务 -> AI解析并自动分配标号、加入事务表 -> 在时刻表查看时间安排 -> 在条件图检查依赖关系 -> 完成后勾选复选框 -> 数据自动保存到本地JSON
一、项目实现:
整体架构:Python 3.13 + PyQt6 桌面GUI,采用MVC分层——core层(task_model数据模型、numbering标号引擎、api_client DeepSeek调用、data_manager本地JSON持久化、import_parser导入解析器)和ui层(main_window主窗口、task_view事务表、timeline_view时刻表、dependency_view条件图、dialogs对话框、setup_dialog设置页)。数据存储在exe同目录的tasks.json和config.json中,每次操作后即时写入硬盘。打包用PyInstaller onedir模式,安装包用"EXE存根+ZIP载荷拼接"方案——将打包后的程序目录压缩为ZIP拼接到一个tkinter安装器存根末尾,运行时从自身二进制末尾定位ZIP头(PK\x03\x04)解压到用户指定目录
二、我负责了整个项目从概念到交付,包括数据模型设计、10级标号算法实现、三视图UI开发、DeepSeek API的System Prompt调优(核心难点在于让AI严格遵从标号体系和不擅自补充信息)、JSON结构化输出的容错处理、多编码文件导入(用chardet做自动检测)、日期推进逻辑(v8.0修复了逾期判断以推进日期而非系统时间为准)、以及安装包的自解压方案
三、遇到的主要难点:第一个是API返回的JSON格式不稳定,加了多层try-except和字段缺失补默认值的防御逻辑,同时通过temperature=0.3和明确的结构化输出格式降低不稳定性。第二个是时刻表右栏的层级显示问题——有DDL的父任务下无DDL的子任务在v8.0之前会变成孤儿节点挂在顶层,修复方案是在递归构建树时,遇到有DDL的父任务跳过自身但把子任务挂在祖父节点下。第三个是条件图的布局算法,目前按parent_id层级排列而非按prerequisites拓扑排序,这是已知的待改进项,当前通过节点颜色和连线样式(实线AND/虚线OR)让依赖关系可读。第四个是10级标号的正则解析,特别是中文大写数字"拾壹"到"伍拾"的匹配,用了生成式正则确保准确性。第五个是日期推进后的连锁反应——逾期判断、时刻表高亮、条件图边框颜色都需要传递effective_date,在v8.0中贯穿了五个文件才完全修好