EPlan 是一款为追求系统化日常计划的用户设计的桌面效率工具。它通过 计划 → 项目 → 阶段 → 清单 四层结构,帮助用户将宏大目标拆解为可执行的每日任务,并记录每项任务的实际耗时与完成时刻,形成闭环反馈。
1. 计划层 (Plans)
创建长期或短期计划(如“2026 年自我提升计划”),作为顶层容器,支持名称、描述和创建时间。
2. 项目层 (Projects)
每个计划下可划分多个项目(如“学习 React”、“健身减脂”),支持自定义排序(sort_order),便于重组优先级。
3. 阶段层 (Stages)
每个项目内可设置阶段(如“基础学习”、“实战项目”),阶段支持 time_slots 字段(JSON 或文本格式存储预期时间段),便于规划起止周期。
4. 清单层 (Checklists) —— 核心执行单元
每一项清单包含内容 (content)、计划日期 (date)、备注 (note)、完成状态 (completed)、实际耗时 (elapsed_time,单位分钟) 和完成时刻 。
用户每日根据 date 过滤查看“今日待办”,勾选完成后记录耗时,系统自动填充 completed_at。
支持同阶段内拖拽排序 。
5. 统计与回顾
按计划/项目/阶段查看总完成数、总耗时、计划符合度(计划日期 vs 完成日期)。
提供甘特图视角展示阶段与任务的时间分布。
1. 采用分层解耦架构:前端 React 负责视图与状态(Zustand),通过 Tauri 的 IPC 调用 Rust 后端;后端使用 Tauri + SQLx 异步操作 SQLite,所有数据库逻辑封装为独立命令。设计上以计划为根容器,向下级联项目、阶段、清单,sort_order 支持拖拽排序,time_slots 用于周期规划,completed + elapsed_time 记录执行闭环。技术栈:前端 TypeScript + TailwindCSS + Shadcn UI;后端 Rust + SQLx + chrono;桌面层 Tauri v2。
2. 个人独立开发全栈。实现模块:计划/项目/阶段管理(CRUD 及级联删除);清单打卡与计时(支持手动输入耗时或自动计时,完成后记录 completed_at);今日视图(date = CURRENT_DATE 快速筛选);拖拽排序(前端 react-beautiful-dnd + 批量更新 sort_order)。结果:代码共约 3200 行(TS 1800 行,Rust 1400 行);数据库操作响应 < 15ms;支持 5000+ 清单项流畅滚动;计时误差 < 0.5 秒。
3. time_slots 字段设计为 TEXT 后难以做日期范围查询。解决:保留 time_slots 作为展示 JSON,另加 start_date/end_date 冗余列,通过触发器同步维护,并建立复合索引提升范围过滤性能。