Skip to content

Proposal:日程模块 #46

Description

@Alexander-Noah

Proposal:日程模块与日程 Tab(V2)

1 功能描述

日程 Tab 是 TimeFlow 的时间执行视图,用于回答“某年、某月、某日已经安排了什么,哪些时间仍为空闲”。它同时展示 Schedule、有计划时间的 Todo 和所有正式 Task,但三类对象仍保持各自权威语义,不被合并成通用对象。

Schedule 表达“某段明确时间发生的安排”,标题、开始时间和结束时间必填。Schedule 不设置固定/不固定、可移动/不可移动字段,也不在创建或编辑时要求用户分类。只有 AI 生成 Goal 排期或重排方案时,才根据 Schedule 的 title 临时判断是否提出调整动作;该判断只属于本次方案,不写回 Schedule。

时间经过不等于完成。Schedule 的完成、取消及 Feedback 必须由用户主动确认。跨天 Schedule 与某个自然日存在时间交集时,在该日展示同一个业务对象,不复制数据。

2 用户

目标用户

  • 管理课程、会议、值班、预约等固定安排的学生和职场人员。
  • 同时管理普通 Todo 和 Goal Task,需要看清完整时间占用的用户。
  • 需要从年度/月度总览进入具体日执行时间轴的个人用户。

用户故事

场景小故事 对应能力 价值
我明天 15:00—16:00 有项目会议。 普通 Schedule 记录 创建时只保存 title 和时间,不要求选择类型
我计划晚上健身一小时,后来需要重排。 排期时临时判断 AI 根据 title 决定是否提出调整,并把具体动作交给用户确认
我今晚 23:00 至明日 01:00 值班。 跨天展示 两个自然日都能看见同一安排
我想看下个月哪几天最忙。 月视图 快速识别负载分布
我想看今天的会议、Todo 和 Goal Task。 日视图统一时间轴 不用跨页面拼接计划
会议结束了但我没参加。 主动 Feedback 系统不把时间经过误判为完成

3 现有做法及不足

现有做法 可以解决 仍然存在的问题
手机系统日历 固定时间展示成熟 与 TimeFlow 的 Todo、Goal Task、Feedback、重排和复盘割裂
把所有事项都写进日历 获得统一视觉 混淆 Schedule/Todo/Task 语义
#46 的日期列表和今日页 支持单日查看 缺少年/月总览,今日页也已被新三 Tab 结构替代
仅按开始日期展示跨天事项 实现简单 后续日期看不到仍在进行的占用
在 Schedule 上预先保存固定/可移动分类 后续重排读取方便 增加创建负担,分类可能随具体排期场景变化

核心问题是需要一个统一时间投影,同时保留三类对象边界,并让 AI 在实际排期时基于 title 做当次调整判断,而不是给 Schedule 永久分类。

4 产品范围

日程 Tab 视图

  • 年视图:展示月份和日期级事项密度/数量概览,支持进入某月或某日;不在年视图承载完整编辑。
  • 月视图:按自然月展示每日 Schedule、已排期 Todo 和 Task 的摘要、数量和冲突提示;支持进入某日。
  • 日视图:展示完整时间轴、三类已排期对象和未排期 Todo 区域,是主要执行与手动反馈入口。
  • 年/月/日读取同一批权威对象,切换视图不得生成副本或改变状态。

Schedule 功能

  • 支持手动创建、查看、编辑、删除 Schedule;AI Tab 可通过候选确认完成同类 CRUD。
  • 标题、开始时间、结束时间必填;结束时间必须晚于开始时间。
  • 支持跨天和过去 Schedule 补录。
  • 正式状态由用户确认;未开始、进行中、已结束是时间推导的展示态。
  • 创建或编辑 Schedule 时不展示固定/可移动分类,也不保存相关字段。
  • Goal 排期或重排时,AI 根据 Schedule title 临时判断是否提出移动某个 Schedule。
  • 方案必须展示每个 Schedule 的原时间、新时间和调整理由;用户未确认前不得改变原 Schedule,且本次判断不得写回成为长期属性。
  • Schedule 可通过自然语言或表单提交统一 Feedback。
  • 时间或状态变化后通知能力更新/取消关联提醒;提醒失败不阻断 Schedule 操作。

三类对象统一展示

  • 正式 Task 必须有完整时间,因此始终可以投影到对应日期和时段。
  • 有计划时间的 Todo 投影到时间轴;无计划时间 Todo 留在待办区域,不伪造占用。
  • 点击投影进入对应对象详情或操作,不把 Todo/Task 转为 Schedule。
  • 三类对象都可以从日视图进入表单 Feedback;AI Feedback 仍只能从 AI Tab 发起。

明确不做

  • 第三方日历同步、共享日历、团队排班、复杂重复规则。
  • 把 Schedule、Todo、Task 合并成单一通用对象。
  • 独立“今日”一级页面或第四个主 Tab。
  • 在日程 Tab 中开启 AI 会话或自动把页面上下文带入 AI Tab。
  • 因时间经过自动完成任何对象。
  • 在 Schedule 上保存固定/不固定、可移动/不可移动标签或要求用户手动分类。

后续可拓展

  • 重复 Schedule、外部日历、拖拽排期和更复杂日历视图。
  • 更细的负载可视化,但不得改变权威数据边界。

5 关键决策

决策点 方案 结论 理由
信息结构 今日页 + 日期列表 不选 无法承载年/月总览,且不符合三 Tab
信息结构 年/月/日的日程 Tab 采纳 同时覆盖总览、计划和执行
对象建模 三类对象合并 不选 固定安排、普通事项和 Goal Task 语义不同
对象建模 独立权威对象 + 统一投影 采纳 展示统一,业务不混淆
Schedule 调整判断 在对象上长期保存分类 不选 增加字段和创建负担,且不同排期场景可能需要重新判断
Schedule 调整判断 AI 在排期时根据 title 临时判断 采纳 Schedule 保持简单,具体调整仍由方案确认控制
完成判断 时间结束自动完成 不选 时间经过不能证明真实执行
完成判断 用户通过 Feedback 确认 采纳 正式状态只记录确认事实
跨天展示 只按开始日期 不选 后续日期丢失占用
跨天展示 与日期相交即展示 采纳 符合用户认知
Task 排期 允许无时间正式 Task 不选 与 Goal 拆分执行要求冲突
Task 排期 正式 Task 必有时间 采纳 可以直接进入日程执行视图

6 边界与异常

边界规则

  • Schedule 时间范围使用左闭右开语义;与某自然日范围相交即展示。
  • 所有日期、视图和展示态按用户当前时区解释。
  • 时间只影响展示态,正式状态由用户确认。
  • Schedule 不包含可移动性分类;AI 的判断只存在于当次 GoalPlanDraft/ReschedulePlan 中。
  • 年/月/日视图和下游模块只能读取权威对象,不维护可独立修改副本。
  • 三类对象在同一时段重叠时如实展示冲突,不静默移动。

异常场景与处理方式

场景 系统行为 原则
Schedule 标题为空 禁止保存并提示 数据完整性
结束时间早于或等于开始 禁止保存并提示有效范围 时间有效性
过去 Schedule 补录 允许保存,不注册已经过期提醒 支持真实记录
时间经过结束 只改变展示态,不自动完成 时间不等于事实
跨天 Schedule 所有相交日期显示同一对象 不复制数据
AI 提出的 Schedule 调整不合适 用户可删除该动作或要求重新生成;未确认前原 Schedule 不变 用户确认
同一对象被重复投影 去重并记录异常 单一权威对象
某类数据加载失败 明确标记局部不可用,不用其他类型冒充 数据透明
提醒失败 Schedule 保存成功,提醒单独恢复 附加能力隔离
当前用户不匹配 拒绝访问且不泄露对象 数据隔离

7 基本概念与信息结构

概念 含义
日程 Tab Schedule/Todo/Task 的统一时间投影和手动操作入口
Schedule 有明确开始/结束时间的安排
Schedule 调整判断 AI 在排期时根据 title 产生的临时推理,不是 Schedule 属性
展示态 未开始、进行中、已结束,由时间推导
时间投影 在年/月/日视图展示权威对象,不复制数据

信息结构:日程 Tab → 年/月/日切换 → 日期/时间轴 → Schedule、已排期 Todo、Task → 对象详情/表单 Feedback。无计划时间 Todo 在日视图待办区域,Goal 汇总仍在目标 Tab。

8 验收标准

用例 操作 通过标准
三视图一致 在年/月/日切换同一日期 事项数量和对象来源一致
三类展示 某日同时存在 Schedule、Todo、Task 日视图按时间展示三类对象且类型明确
无时间 Todo 创建无计划时间 Todo 出现在待办区域,不占用时间轴
正式 Task Goal 计划确认后查看日程 每个 Task 在完整起止时间显示
无预分类 分别创建“项目会议”和“健身” 两个 Schedule 都只保存 title、时间等正常信息,不出现固定/可移动字段
排期时判断 重排中同时存在“项目会议”和“健身” AI 根据 title 临时判断是否提出移动;具体动作逐条展示且必须确认
判断不写回 完成一次重排后查看 Schedule Schedule 上不存在由本次判断产生的分类或标签
跨天 创建 23:00—次日 01:00 Schedule 两日展示同一业务对象
状态 时间经过但用户未反馈 展示态变化,正式状态不自动完成
Feedback 从日视图提交表单 确认后状态与 Feedback 原子更新
数据一致 编辑来源对象后切换三个视图 所有视图同步,无副本漂移
提醒降级 通知权限关闭 Schedule 仍可正常保存和编辑

Metadata

Metadata

Assignees

No one assigned

    Labels

    FullSpec完整规格提案:影响面较大,需要写清楚动机、范围、不做、备选方案、接口/数据结构、原型、验收标准Proposal-Acceptedproposal

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions