# 时间管理大师
**Repository Path**: wx114/TimerManagerProject
## Basic Information
- **Project Name**: 时间管理大师
- **Description**: No description available
- **Primary Language**: Python
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-05-20
- **Last Updated**: 2026-07-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: tkinter, GUI, Python
## README
# 时间管理大师 (Time Master)
一款基于 CustomTkinter 的桌面时间管理应用,结合刻意练习理念与 AI 教练,帮助用户通过倒计时任务追踪练习进度、提升技能等级。
## 界面预览
## 功能特性
- **倒计时任务** — 创建自定义时长的练习任务,支持暂停、恢复、删除
- **周期循环** — 任务完成后可自动重新开始下一轮计时
- **工作-休息交替** — 支持番茄工作法式的工作阶段与休息阶段自动切换
- **技能追踪** — 创建技能并关联任务,自动累计练习时长(含专注度加权)
- **里程碑系统** — 为技能设定阶段性里程碑,独立追踪子目标进度
- **等级系统** — 9 级进阶体系(入门者 → 超越者),实时显示等级和进度
- **反思机制** — 任务完成后弹出反思对话框(专注度、难度、成就),影响有效练习时长
- **AI 教练** — 调用大模型生成刻意练习建议,并提供技能专属的教练对话面板
- **成就系统** — 满足条件自动解锁成就,并弹出桌面通知
- **统计面板** — 可视化展示练习时长、技能进度、成就解锁情况
- **连续天数** — 记录每日练习的连续打卡天数
- **主题切换** — 内置主题切换,设置实时持久化
- **系统托盘** — 最小化到托盘运行,右键查看任务状态
- **完成通知** — 任务倒计时结束时弹出桌面通知并播放提示音
- **数据持久化** — 所有数据保存到本地 SQLite 数据库,并兼容从旧版 JSON 数据迁移
## 项目结构
```
TimerManagerProject/
├── main.py # 应用主控制器,协调 UI/定时器/存储/托盘
├── tray.py # 系统托盘图标和菜单
├── core/
│ ├── task.py # 任务模型(倒计时、暂停、周期、工作-休息交替)
│ ├── skill.py # 技能模型(等级、里程碑、连续天数)
│ ├── timer.py # 定时器管理器(每秒驱动)
│ ├── sqlite_storage.py # SQLite 数据持久化(主存储)
│ ├── storage.py # JSON 存储层(用于旧数据迁移兼容)
│ ├── stats.py # 统计计算
│ ├── achievement.py # 成就解锁检测
│ ├── advisor.py # AI 练习建议生成
│ └── coach.py # AI 刻意练习教练
├── ui/
│ ├── main_window.py # 主窗口(工具栏、任务列表、操作栏)
│ ├── skill_panel.py # 左侧技能面板(卡片列表)
│ ├── coach_panel.py # AI 教练面板
│ ├── stats_panel.py # 统计面板
│ ├── task_dialog.py # 任务创建/编辑对话框
│ ├── skill_dialog.py # 技能创建/编辑对话框
│ ├── reflection_dialog.py # 任务完成反思对话框
│ ├── settings_dialog.py # 设置对话框(主题、AI 配置)
│ ├── notification.py # 任务完成通知窗口(淡入动画)
│ ├── achievement_notification.py # 成就解锁通知
│ ├── dialog_utils.py # 对话框通用工具函数
│ └── theme.py # 全局主题(颜色、字体、样式)
└── data/
├── app.db # SQLite 数据库(主存储)
├── settings.json # 设置数据
├── sessions.json # 会话数据
├── achievements.json # 成就数据
└── skills.json # 技能数据(迁移兼容)
```
## 环境要求
- Python >= 3.13
- Windows(系统托盘功能依赖 Windows API)
- (可选)OpenAI 或兼容 API 的 Key 与 Endpoint,用于启用 AI 教练功能
## 安装与运行
```bash
# 克隆项目
git clone
cd TimerManagerProject
# 安装依赖
pip install customtkinter openai pillow pystray
# 运行应用
python main.py
```
或使用 uv 管理依赖:
```bash
uv sync
uv run main.py
```
如需启用 AI 教练/建议功能,在应用「设置」中填写大模型的 API Key 与 Endpoint。
## 使用说明
1. **添加技能** — 点击左侧面板底部的"添加技能"按钮,设置名称、图标和目标小时数
2. **创建任务** — 点击右上角"新建练习",填写任务名称、倒计时时间和练习目标,可选关联技能与里程碑
3. **管理任务** — 选中任务后可暂停/恢复、编辑或删除
4. **工作-休息交替** — 设置休息时长,工作阶段结束后自动切换到休息,休息结束按周期决定重新开始或完成
5. **任务反思** — 工作阶段结束时弹出反思对话框,记录专注度/难度/成就,AI 将据此生成下次练习建议
6. **AI 教练** — 在技能面板进入教练对话,获取基于该技能历史数据的刻意练习指导
7. **查看统计** — 打开统计面板查看练习时长、等级进度与已解锁成就
8. **编辑技能** — 单击技能卡片或右键选择"编辑"修改技能信息或管理里程碑
9. **系统托盘** — 关闭窗口后应用在托盘继续运行,右键可查看任务状态或退出
## 技术栈
| 组件 | 技术 |
|------|------|
| GUI 框架 | CustomTkinter |
| AI 集成 | OpenAI SDK(兼容 OpenAI 协议的接口) |
| 图标生成 | Pillow (PIL) |
| 系统托盘 | pystray |
| 数据存储 | SQLite |
| 定时器 | tkinter.after (1000ms) |
## 许可证
[Apache License 2.0](LICENSE)