Issue:日程模块
1. 功能描述
日程模块定义有完整开始和结束时间的固定安排,例如课程、会议、考试、面试。日程表达时间占用,但时间经过不等于用户完成。
日程支持手动创建、AI 候选创建、查看、编辑、完成、取消、删除、提醒联动,并在日程 Tab 的年 / 月 / 日视图中展示。
2. 用户 / 用户故事
目标用户:需要管理会议、课程、预约等明确时间占用的个人用户。
- 用户手动创建“明天 15:00-16:00 项目会”。
- 用户在 AI Tab 输入“明天下午三点开项目会”,确认候选后创建日程。
- 用户修改会议时间后,旧提醒失效,新提醒按新时间注册。
- 用户取消已经作废的会议,保留状态语义。
3. 现有做法及不足
系统日历可以记录固定时间,但与 TimeFlow 的 Goal、Todo、Feedback、重排和 AI 入口割裂。备忘录和聊天收藏虽然低成本,但无法稳定表达时间占用、排序和提醒。
日程需要先被定义成明确的时间占用对象,AI 创建或修改时也必须先生成候选,确认后再写入。
4. 本期范围
- 日程的创建、查看、编辑、完成、取消、删除。
- 日程必须有
start_at 和 end_at,且结束时间晚于开始时间。
- 日程状态包含
ACTIVE、COMPLETED、CANCELLED、PLAN 。
- 当前是否进行中由时间推导,不写正式状态。
- 日程 Tab 支持年 / 月 / 日视图中的时间投影。
- 日程变更与提醒模块联动。
- AI 生成日程候选,确认后写入。
5. 明确不做
- 不做外部日历双向同步。
- 不做参与人、会议室和团队协作。
- 不做复杂重复日程。
- 不保存“固定 / 可移动”分类字段。
- 不允许 AI 未确认移动既有日程。
6. 关键决策
| 决策点 |
备选方案 |
选择 |
理由 |
| 日程定义 |
时间占用 / 通用完成型任务 |
明确时间占用 |
与 Todo 的完成型语义区分 |
| 正式状态 |
四态 / 增加进行中和逾期状态 |
ACTIVE / COMPLETED / CANCELLED/PLAN |
状态少、可解释 |
| 进行中 |
正式状态 / 由时间推导 |
由时间推导 |
避免状态冗余 |
| AI 调整 Schedule |
自动移动 / 只提出候选动作 |
只提出候选动作 |
保持用户控制 |
| 提醒失败 |
回滚日程 / 独立失败 |
不阻断日程保存 |
提醒是附加能力,不改变业务事实 |
7. 边界与异常
- 标题为空:禁止保存。
- 结束时间早于或等于开始时间:禁止保存。
- 补录过去日程:允许保存,不创建过期提醒。
- 删除后点击旧通知:提示目标不存在。
- AI 根据 title 判断可移动性时,只能在候选中说明理由,不能写入分类字段。
8. 基本概念与信息结构
| 概念 |
含义 |
| Schedule |
有完整开始 / 结束时间的时间占用 |
status |
ACTIVE、COMPLETED、CANCELLED 、PLAN |
reminder_reference |
可选提醒引用或配置 |
completed_at |
用户主动标记完成的时间 |
9. Agent 输入输出约束
- 日程待办 Agent 可生成 Schedule 创建、查询、修改、删除候选。
- 查询结果可直接展示。
- 创建、修改、删除必须
isNeedUser = true。
- 用户确认后由主 Agent 调用公共数据模块写入。
- 手动表单创建/修改以明确保存动作作为确认事件;删除仍需展示影响并强确认,所有写入走同一校验接口。
10. 验收标准
- 创建 15:00-16:00 日程后,日程 Tab 正确展示。
- 结束时间早于开始时间时无法保存。
- 计划中的人物状态为
PLAN 。
- 当前时间处于日程时间段内时展示“进行中”,正式状态仍为
ACTIVE。
- 用户完成后状态变为
COMPLETED。
- 用户取消后状态变为
CANCELLED。
- 修改时间后旧提醒失效,新提醒重建。
- AI 创建 / 修改 / 删除日程均需确认后生效。
- 手动保存产生确认记录;删除等高风险写入未确认时不生效。
Issue:日程模块
1. 功能描述
日程模块定义有完整开始和结束时间的固定安排,例如课程、会议、考试、面试。日程表达时间占用,但时间经过不等于用户完成。
日程支持手动创建、AI 候选创建、查看、编辑、完成、取消、删除、提醒联动,并在日程 Tab 的年 / 月 / 日视图中展示。
2. 用户 / 用户故事
目标用户:需要管理会议、课程、预约等明确时间占用的个人用户。
3. 现有做法及不足
系统日历可以记录固定时间,但与 TimeFlow 的 Goal、Todo、Feedback、重排和 AI 入口割裂。备忘录和聊天收藏虽然低成本,但无法稳定表达时间占用、排序和提醒。
日程需要先被定义成明确的时间占用对象,AI 创建或修改时也必须先生成候选,确认后再写入。
4. 本期范围
start_at和end_at,且结束时间晚于开始时间。ACTIVE、COMPLETED、CANCELLED、PLAN。5. 明确不做
6. 关键决策
ACTIVE/COMPLETED/CANCELLED/PLAN7. 边界与异常
8. 基本概念与信息结构
statusACTIVE、COMPLETED、CANCELLED、PLANreminder_referencecompleted_at9. Agent 输入输出约束
isNeedUser = true。10. 验收标准
PLAN。ACTIVE。COMPLETED。CANCELLED。