# pytasklist **Repository Path**: ukuleleye/pytasklist ## Basic Information - **Project Name**: pytasklist - **Description**: 基于python开发的任务管理系统,可按照紧急和难易程度的四象限展示任务。作为老年人任务多了就容易遗忘......所以好记性不如烂笔头 - **Primary Language**: Python - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-28 - **Last Updated**: 2025-12-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 任务管理系统 一个基于Streamlit的完整任务管理系统,支持任务类别管理、任务CRUD操作、任务状态跟踪、冲突处理、数据导出和可视化功能。 ## 功能特性 ### 📁 任务类别管理 - 新增任务类别 - 修改任务类别 - 删除任务类别(检查是否被使用) - 查看所有任务类别 ### 📝 任务管理 - 创建新任务(支持设置紧急程度、难易程度、截止时间等) - 修改现有任务 - 删除任务 - 查看所有任务详情 ### ⚡ 任务状态管理 - **开始任务**: 支持冲突检测和强制中断 - **暂停任务**: 自动计算累计时间 - **重新开始**: 继续之前暂停的任务 - **结束任务**: 处理任务完成并记录冲突历史 ### 🔍 任务查询 - 全量查询 - 基于时间范围查询 - 基于任务状态查询 - 基于紧急程度查询 - 基于难易程度查询 ### 📊 数据导出 - 导出过去7天的任务为CSV格式 - 导出当月任务为CSV格式 - 预览导出数据 ### 📈 任务可视化 - 四象限图表展示(紧急程度 vs 难易程度) - 任务状态颜色标识 - 交互式图表支持 ## 数据库设计 ### 任务类别表 (tasktype) - `tasktypeid`: 任务类别ID(主键,自动增长) - `tasktypename`: 任务类别名称(唯一) ### 任务表 (task) - `taskid`: 任务ID(主键,自动增长) - `taskname`: 任务名称 - `taskstarttime`: 任务开始时间 - `taskrestarttime`: 任务重新开始时间 - `taskendtime`: 任务结束时间 - `taskdeadline`: 任务目标结束时间 - `tasktype`: 任务类别ID(外键) - `tasklasttime`: 任务累计持续时间(秒) - `taskstatus`: 任务状态(0:未启动, 1:进行中, 2:已暂停, 3:已结束) - `tasklevel`: 紧急程度(1-5) - `taskdifficulty`: 难易程度(1-5) ### 任务冲突表 (taskcrash) - `crashstarttime`: 冲突开始时间 - `stoptaskid`: 被暂停的任务ID(外键) - `starttaskid`: 新启动的任务ID(外键) - `crashstatus`: 冲突状态(1:启动, 2:结束) - `crashstoptime`: 冲突结束时间 ## 安装和运行 ### 环境要求 - Python 3.8+ - SQLite3 - 注意:windows环境,最好自己在https://www.python.org/downloads/下载,使用Add to Path安装python。否则安装streamlit时,可能需要自己添加环境变量 ### 安装依赖 ```bash pip install -r requirements.txt ``` ### 运行应用 ```bash streamlit run app.py ``` 或者使用提供的运行脚本: ```bash python run.py ``` ### 打包为exe文件(Nuitka) ```bash # 目前打包存在问题 # Onefile模式(生成单一可执行文件) python -m nuitka --onefile --enable-plugin=streamlit --windows-disable-console app.py # 目录模式 python -m nuitka --onefile --enable-plugin=streamlit --windows-disable-console app.py ``` ## 使用说明 ### 1. 任务类别管理 首先在"任务类别管理"中创建任务类别,如:工作、学习、生活等。 ### 2. 任务管理 在"任务管理"中创建新任务,设置: - 任务名称(必填) - 目标结束时间 - 任务类别 - 紧急程度(1-5级) - 难易程度(1-5级) ### 3. 任务状态管理 - **开始任务**: 选择未启动或已暂停的任务开始执行 - **暂停任务**: 暂停正在执行的任务 - **重新开始**: 继续已暂停的任务 - **结束任务**: 完成正在执行或已暂停的任务 ### 4. 任务冲突处理 当尝试开始新任务而已有任务正在执行时,系统会: - 提示当前正在执行的任务 - 询问是否强制中断 - 如果选择强制中断,自动暂停当前任务并记录冲突 ### 5. 数据导出 可以导出过去7天或当月的任务数据为CSV格式,包含任务类别和任务名称。 ### 6. 任务可视化 在"任务可视化"页面查看: - 四象限分布图(紧急程度vs难易程度) - 不同状态任务用不同颜色标识 - 实时统计信息 ## 界面颜色说明 ### 任务状态颜色 - 🟢 **绿色**: 任务正在进行 - 🟡 **黄色**: 任务已暂停 - ⚪ **白色**: 任务未启动 - 🔴 **粉色**: 任务已结束 ### 四象限说明 - 🟦 **第一象限**: 低紧急,低难易 - 🟨 **第二象限**: 低紧急,高难易 - 🟥 **第三象限**: 高紧急,低难易 - 🟩 **第四象限**: 高紧急,高难易 ## 技术栈 - **数据库**: SQLite3 - **界面库**: Streamlit - **数据处理**: Pandas - **可视化**: Plotly - **打包工具**: Nuitka - **编程语言**: Python ## 文件结构 ``` todolist/ ├── app.py # 主应用文件(Streamlit界面) ├── database.py # 数据库管理模块 ├── task_manager.py # 任务和任务类别管理模块 ├── conflict_manager.py # 任务冲突处理模块 ├── export_manager.py # 数据导出模块 ├── run.py # 运行脚本 ├── requirements.txt # 依赖包列表 └── README.md # 项目说明文档 ``` ## 注意事项 1. 任务时间计算基于系统当前时间 2. 任务冲突会自动记录在taskcrash表中 3. 删除任务类别前会检查是否有关联任务 4. 导出的CSV文件使用UTF-8编码,支持中文 5. 四象限图表需要任务同时具有紧急程度和难易程度数据