← 回到冰箱

Personal Systems · DEMO

工作时间规划器

把一组预设待办排进时间轴,展示历史估时、任务拆分、休息与缓冲如何共同影响日计划。

每个人都以为自己一天能干完 6 件事

把今天排满试试

09:00–18:00午休不可占用 · 预留意外

把任务排进今天。按钮是拖拽的等效键盘路径;排得越满,不代表越可能完成。

整理周报45 min · 负荷
分析样本数据90 min · 负荷
回复协作消息30 min · 负荷
完善工具文档60 min · 负荷
复盘上周投放75 min · 负荷
处理报销20 min · 负荷
12:00–13:00 午休 · 不可占用

把任务拖到这里,或使用“排入下一个空档”

已排 0 项 · 剩余容量 7h 0m · 机动缓冲 45m
打开透明层:查看判断依据与源码

完整处理顺序

01day = load_json('examples/day.json')# 读取任务、容量和缓冲规则
02window = validate_work_window(day.start, day.capacity)# 确认工作窗口与可用分钟数
03capacity = day.capacity - day.buffer# 先预留机动时间,不把一天排满
04history = load_duration_history(day.tasks)# 读取已有任务耗时记录
05tasks = estimate_from_history(day.tasks)# 优先采用历史中位耗时
06tasks = fallback_missing_estimates(tasks, default=30)# 样本不足时使用明确默认值
07tasks = split_long_tasks(tasks, max_minutes=60)# 长任务拆成可完成的专注块
08tasks = attach_energy_cost(tasks)# 标记 high、medium 与 low 负荷
09tasks = sort_by_energy(tasks)# 高认知任务优先进入上午
10timeline = create_empty_timeline(window)# 建立尚未排满的时间轴
11for task in tasks:# 按剩余容量依次放入时间轴
12 if task.minutes > capacity: backlog(task)# 装不下时明确延期,不挤占缓冲
13 else: schedule(task, break_after=15)# 每个专注块后保留恢复时间
14insert_lunch_boundary(timeline)# 午休保持为不可占用边界
15compact_adjacent_breaks(timeline)# 整理连续空档但不吞掉缓冲
16assert reserved_buffer == 45# 确认机动时间仍然存在
17write_json('output/day-plan.json', timeline)# 输出时间块与 backlog
查看 GitHub 源码
按今天的真实状态重新排