Skip to content

Proposal:Task 基础模块 #66

Description

@LUPENGHAN

Issue:Task 基础模块

1. 功能描述

Task 是 Goal 下唯一一层执行任务。正式 Task 必须属于某个 Goal,并且必须有完整开始时间和结束时间。

Task 同时出现在目标 Tab 的 Goal 详情和日程 Tab 的时间投影中,是“Goal 落到具体时间”的核心对象。

2. 用户 / 用户故事

目标用户:需要把长期 Goal 落到具体执行时间,并在目标和日程视角间查看 Task 的个人用户。

用户的 Goal 被拆分后,系统生成“周一 20:00-20:45 梳理需求结构”等 Task。用户也可以手动在某个 Goal 下补充 Task,但必须填写完整时间。

3. 现有做法及不足

Task 是 Goal 的唯一执行层,如果它本身没有固定的对象边界和时间要求,就会把 Goal、排期草稿和执行事实混成一团。

本模块只负责 Task 作为确定性业务对象的增删改查与展示,AI 只生成候选。

4. 本期范围

  1. Task 创建、查看、编辑、删除。
  2. Task 必须属于 Goal。
  3. 正式 Task 必须有 start_atend_at
  4. Task 在目标 Tab 和日程 Tab 双处展示。
  5. Task 支持状态和 Feedback。
  6. GoalPlanDraft 确认后批量创建 Task。
  7. 手动补充 Task 也必须经过时间校验。

5. 明确不做

  • 不做 Subtask。
  • 不做无时间 Task。
  • 不做跨 Goal Task。
  • 不做 Task 依赖图。
  • 不做普通 Todo 自动升级为 Task。
  • 不由子 Agent 直接创建正式 Task。

6. 关键决策

决策点 备选方案 选择 理由
Task 归属 可独立存在 / 必须属于 Goal 必须属于 Goal 保持目标可追溯
时间要求 可无时间 / 必须完整起止时间 必须完整开始 / 结束 Goal 拆分要直接落到可执行安排
展示位置 仅目标 / 仅日程 / 两处 目标 + 日程 同时满足结构视角和执行视角
创建来源 仅拆分 / 仅手动 / 两者 GoalPlanDraft / 手动候选 AI 生成草稿,确认后落库

7. 边界与异常

  • Task 缺少 Goal:禁止创建。
  • Task 缺少开始或结束时间:禁止创建。
  • 结束时间早于或等于开始时间:禁止创建。
  • 编辑 Task 导致超出 Goal 截止时,需要明确提示并确认。
  • 删除 Task 可能影响 Goal 进度,必须提示影响范围。

8. 基本概念与信息结构

概念 含义
Task Goal 下唯一执行任务
goal_id 所属 Goal
start_at / end_at 必填执行时间
status 待执行、完成、取消等状态
Feedback Task 执行事实

9. Agent 输入输出约束

  • 长任务拆分 Agent 输出 Task 候选,不创建正式 Task。
  • 主 Agent 校验候选 Task 时间完整性。
  • 用户确认 GoalPlanDraft 后,主 Agent 批量创建 Task。
  • AI 修改 / 删除 Task 也必须经确认。
  • 架构基准中的“子任务”在本产品中统一指 Task;手动补充/编辑以保存动作确认,删除和批量创建需强确认。

10. 验收标准

  • Task 没有 Goal 时无法创建。
  • Task 没有完整开始 / 结束时间时无法创建。
  • GoalPlanDraft 未确认前不生成正式 Task。
  • Task 创建后同时出现在目标 Tab 和日程 Tab。
  • Task 编辑后两个 Tab 的展示保持一致。
  • 删除 Task 前展示对 Goal 进度的影响。
  • 手动保存和批量创建产生可审计确认事件,未确认不写入正式 Task。

Metadata

Metadata

Assignees

No one assigned

    Labels

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

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions