Skip to content

Proposal: 待办模块 #18

Description

@Alexander-Noah

Proposal:待办模块(V2)

1 功能描述

Todo 用于记录“有一件事需要完成”,但它不属于 Goal,也不要求天然占用固定时间段。它与 Schedule、Task 是并列业务对象:Schedule 表达时间安排,Task 表达 Goal 下的已排期执行任务,Todo 表达普通完成型事项。

Todo 可以只有标题,也可以设置截止时间、计划执行时间和提醒。截止时间用于表达“最晚何时完成”;计划执行时间用于把 Todo 放入日程 Tab 的时间轴,两者不能被系统混为一谈。无截止、无计划时间都是合法状态。

逾期是根据当前时间、截止时间和正式状态动态推导的展示结果,不是新的正式状态。系统必须保留原截止时间,不得静默延期。用户可通过手动表单或 AI 对话提交 Feedback;确认后,Feedback 与 Todo 状态原子更新,并进入周期复盘和必要的被动重排判断。

2 用户

目标用户

  • 需要管理日常小事、学习交付和工作事项,但不希望每件事都创建 Goal 的用户。
  • 希望快速记录“买打印纸”“提交材料”等事项,不被迫填写无关时间的用户。
  • 希望在日程 Tab 同时看到有计划时间的 Todo 和仍待处理的无时间 Todo 的用户。
  • 希望保留逾期、延期、完成、取消和反馈事实用于复盘的用户。

用户故事

场景小故事 对应能力 价值
我今晚前要提交实验报告。 有截止 Todo 关注交付结果,不伪造成固定会议
我想记下“买打印纸”。 无截止、无计划时间 Todo 低成本记录
我准备明天 18:00—18:30 去买打印纸。 给 Todo 安排计划时间 可进入日程时间轴,但仍是 Todo
实验报告已经逾期。 逾期展示 保留真实计划偏差,不替用户改期
我决定明天再交。 主动延期 明确改变截止并保留延期事实
我没有完成,因为临时有事。 统一 Feedback 状态与原因同时进入后续重排和复盘

3 现有做法及不足

现有做法 可以解决 仍然存在的问题
备忘录、聊天收藏 快速记录 缺少结构化状态、截止、逾期和反馈事实
独立待办工具 提供成熟待办管理 与 TimeFlow 的 Schedule、Goal Task、重排和复盘割裂
把所有 Todo 写进日历 获得时间展示 混淆“需要完成”和“固定时间发生”
自动把逾期项移到今天 保持列表表面整洁 覆盖原计划并替用户作决定
#18 的今日页聚合与简化状态 能展示今日到期项 今日页已被三 Tab 结构替代,且三类对象需要统一 Feedback 与重排事实

核心问题是需要保留 Todo 的低摩擦语义,同时让有计划的 Todo 进入统一时间视图,并让执行事实进入后续智能能力。

4 产品范围

本期范围

  • 支持手动创建、查看、编辑、删除 Todo;AI Tab 可通过候选确认完成相同 CRUD。
  • 标题必填;截止时间、计划起止时间、提醒和备注均可选。
  • 用户可以主动完成、取消或延期 Todo;执行结果通过统一 Feedback 流程保存。
  • 有截止时间且仍未进入终态的 Todo,在截止时间经过后显示逾期并保留原截止时间。
  • 主动延期更新截止时间,并保留延期事实供周期复盘使用。
  • 有计划起止时间的 Todo 在日程 Tab 年/月/日视图中按时间投影。
  • 没有计划时间的 Todo 保存在日程 Tab 的待办区域,可按逾期、今天到期、后续、无截止和终态分类查找。
  • Todo 可以进入统一重排:
    • 未排期 Todo 可被建议安排到空闲时段;
    • 已排期 Todo 可被建议移动计划时间;
    • 截止时间变化必须作为独立动作明确展示并确认,不能随计划时间静默变化。
  • 支持两种 Feedback 入口:AI Tab 自然语言、日程 Tab/详情中的表单。
  • Feedback 确认时原子更新 Todo 状态和反馈事实。
  • 提醒接入统一消息提醒能力;提醒失败不阻断 Todo 保存或状态变化。

明确不做

  • Todo 的 Goal 归属、Subtask、任务依赖、标签/清单/四象限/看板。
  • 团队分派、共享 Todo 和协作状态。
  • 自动顺延逾期 Todo,或把所有无时间 Todo 自动塞入今天。
  • 让重排静默修改截止时间。
  • 将 Todo 转换成 Schedule 或 Goal Task 来实现展示。

后续可拓展

  • 标签、清单、依赖和批量操作。
  • P1 基于经确认画像提供优先级、估时和延期建议。

5 关键决策

决策点 方案 结论 理由
建模 Todo 与 Schedule/Task 合并为通用对象 不选 三者业务语义、时间要求和归属不同
建模 Todo 保持独立权威对象 采纳 支持低成本记录并避免大量空字段
Goal 关系 Todo 必须属于 Goal 不选 普通事项不应增加 Goal 管理成本
Goal 关系 Todo 不属于 Goal 采纳 与 Task 形成清晰边界
截止时间 所有 Todo 必填 不选 “买打印纸”等事项无需强制截止
截止时间 可选 采纳 同时支持轻量记录和时间敏感事项
计划时间 没有独立计划时间 不选 无法表达“打算何时做”且不改变截止
计划时间 可选、与截止分离 采纳 支持日程投影和重排
逾期处理 自动延期到今天 不选 覆盖真实计划
逾期处理 保留原截止、用户主动处理 采纳 事实可追溯
Feedback Todo 只切换状态 不选 无法解释偏差,也无法支撑周期复盘
Feedback 与 Schedule/Task 共用统一事实模型 采纳 三类执行结果口径一致
取消统计 取消视为完成 不选 混淆完成与放弃
取消统计 取消不计入完成 采纳 复盘数据更真实

6 边界与异常

边界规则

  • 无截止和无计划时间均为合法状态。
  • 计划结束时间必须晚于开始时间;只填写一端时不能形成正式计划时间。
  • 逾期只由截止、当前时间和正式状态推导,不落为独立正式状态。
  • 时间经过不会自动完成、取消或延期 Todo。
  • 日程 Tab 只投影 Todo 权威数据,不创建可独立编辑的副本。
  • 同一个 Todo 的自然语言和表单 Feedback 使用同一校验、确认和落库逻辑。
  • 关联提醒、重排通知或报告生成失败不改变 Todo 操作结果。

异常场景与处理方式

场景 系统行为 原则
标题为空 禁止保存并提示填写标题 数据完整性
无截止/无计划时间 允许保存,进入待办区域 低成本记录
创建时截止已过 允许保存并立即显示逾期,要求用户知情 如实呈现
计划时间无效 不保存计划时间;Todo 其他合法内容可继续编辑 时间有效性
时间经过截止 只显示逾期,正式状态不变 时间不等于决定
主动延期 显示原/新截止并确认后更新,保留延期事实 用户控制
Feedback 必要信息不足 阻止确认并提示补充 事实完整性
重排建议修改截止 单独展示截止动作,未选中则保持原截止 不静默改写
提醒失败 Todo 操作成功,提醒单独提示和恢复 附加能力隔离
当前用户不匹配 拒绝访问且不泄露对象信息 数据隔离

7 基本概念与信息结构

概念 含义
Todo 不属于 Goal、强调需要完成的普通事项
截止时间 最晚完成约束,可选
计划时间 用户打算执行 Todo 的起止时间,可选,与截止独立
正式状态 进行中、已完成、已取消,由用户确认
逾期展示态 进行中且截止已过的动态结果
主动延期 用户确认新的截止时间并保留变化事实

日程 Tab 中:有计划时间的 Todo 进入年/月/日时间投影;无计划时间的 Todo 留在待办区域。目标 Tab 不展示 Todo。Todo 详情和日程投影始终读取同一份权威数据。

8 验收标准

用例 操作 通过标准
创建有截止 Todo 创建今晚 22:00 截止事项 保存成功并按规则展示
创建无截止 Todo 只填写“买打印纸” 保存成功,不伪造截止或时间占用
安排计划时间 给 Todo 设置明天 18:00—18:30 在日程 Tab 对应时间展示,仍保持 Todo 类型
Todo 逾期 截止经过仍未结束 保留原截止并显示逾期,不自动延期
主动延期 改到明天并确认 更新截止、保留延期事实,状态仍按用户选择
自然语言 Feedback 用户在 AI Tab 说明未完成原因 生成候选,确认后原子更新状态和 Feedback
表单 Feedback 用户在日程 Tab 填写反馈 与自然语言入口保存同一事实模型
重排计划时间 已排期 Todo 与会议冲突 可移动计划时间,未确认时不改变事实
重排截止 方案建议延期 截止动作单独展示,未确认则原截止不变
主动取消 用户确认取消 状态为已取消,不计入完成率
提醒降级 权限关闭或注册失败 Todo 仍可正常保存和变更
数据一致 从待办区域、时间轴和详情查看同一 Todo 状态、截止、计划时间一致,无副本漂移

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