Skip to content

概述 ​

团队采用五层结构组织工作:Goal、Project、Roadmap、Task、SubTask。Goal 定义方向,Project 承载实现,Task 描述具体开发工作,SubTask 是最小交付单元,Roadmap 则以时间周期横切 Task 层,划定阶段性交付范围。

Goal(目标) ​

Goal 是团队级别的长期工作方向,通常跨越多个项目、持续数月甚至更久。它的核心作用是对齐共识——让所有人理解团队在朝什么方向努力。Goal 不指定具体实现方式,而是描述期望达成的状态。团队中任何人都可以分析哪些工作有助于推进某个 Goal,多个 Project 共同服务于同一个 Goal。

  • 工具映射:存在于 wiki 页面中,参见团队目标。

Project(项目) ​

Project 是代码开发和项目管理的基本单元,通常与一个代码仓库对应。每个 Project 有独立的定位说明和技术文档。多个 Project 可以服务于同一个 Goal,而 Task 在 Project 下创建和管理。Project 是日常开发工作的组织边界,也是权限管理和持续集成的配置单元,团队成员在 Project 范围内协作完成开发与交付。

Roadmap 与 Project 统一体现在同一个 GitHub Project 中,便于集中管理项目规划与任务跟踪。Roadmap 通过 GitHub Project 原生的 Iteration 字段呈现,按时间周期划定阶段性交付范围。

Roadmap(路线图) ​

Roadmap 是按时间周期进行的规划,通常以月或双月为单位。在每个周期开始时,将处于草案状态的 Task 纳入 Roadmap,并约定完成日期。Roadmap 横切 Task 层,定义当前周期内需要完成哪些 Task,是连接长期目标与短期执行的桥梁。周期结束时团队回顾完成情况,未完成的 Task 会顺延至下一周期重新评估优先级。

每个 Project 在当前 Iteration 内维护一个 tracker issue,集中追踪本周期内待完成的全部任务,便于成员快速查看 Project 的迭代进度与风险。

  • 工具映射:与 Project 共用同一个 GitHub Project,使用 GitHub Project 原生的 Iteration 字段划分周期,Task 的起止时间通过 Project 原生的 Start date 与 Target date 字段记录。
  • 角色与责任:由团队内 Senior 的人轮值制定,由其他团队成员 Review。

Task(任务) ​

Task 是具体的开发任务。判断粒度是否合适的标准:如果一个 Task 对应的是模块级别的工作量,就需要进一步拆分。粒度过粗的 Task 应拆解为多个 SubTask,确保每个子任务都可以独立推进和验证。每个 Task 都应有清晰的完成标准,使负责人和审查者对交付物达成一致的预期。

  • 工具映射:对应代码仓库内的 Github Issue。

Task 状态机 ​

Task 在生命周期中流转于一组明确的状态,由 GitHub Project 的 Status 单选字段承载(取值与 Project 中已配置的选项一一对应)。状态之间的迁移由用户操作或系统行为触发。

Status 字段取值:

  • Triage:初始状态。Task 创建后所处的状态,等待被纳入 Roadmap。
  • Ready to Claim:Task 已被纳入 Roadmap Iteration,等待团队成员认领。
  • Design Pending(仅 Size = M/L/XL):Task 已被某成员认领,需先撰写并合并 Design Doc。Size = XS/S 跳过此状态。
  • Ready to Develop(仅 Size = M/L/XL):Design Doc PR 合并后到达,等待认领人推进开发与 SubTask 拆解。
  • In Progress:Task 进入实质开发。Size = XS/S 在认领后直接进入;Size = M/L/XL 在 Ready to Develop 之后,由认领人通过设置任务起始时间(Project 原生的 Start date 字段)进入,期间认领人按 Design Doc 拆出 SubTask 并推进各 SubTask。Priority = P0 的 Bug 创建时直接进入此状态;其他 Bug 创建时自动纳入当前 Iteration 并进入 Ready to Claim。
  • Blocked:开发被外部依赖阻塞,暂停推进。阻塞解除后回到 In Progress。
  • Done:完成。Size = XS/S 在自身 PR 合并后到达;Size = M/L/XL 在所有 SubTask Issue 关闭后由系统自动汇总到达。

上述字段值均为 GitHub Project 中已配置的 Status 选项;Size、Priority、Iteration 均为 Project 内置字段;Task 起止时间由 Project 原生的 Start date 与 Target date 字段记录;Type(Bug/Task/SubTask)使用 GitHub Issue 原生 Type 字段,无需额外标签。

触发方:

  • 用户触发:创建 Task、纳入 Iteration、认领、设置任务起始时间(Start date)、标记/解除阻塞、提交并合并 PR。
  • 系统触发:纳入 Iteration 后置为待认领、Design Doc PR 合并后进入 Ready to Develop、SubTask 全部关闭后将父 Size = M/L/XL Task 标为 Done。

合法迁移:

SubTask(子任务) ​

SubTask 是最小的可独立交付工作单元。一个合格的 SubTask 应当包含测试、部署等完整环节,构成独立可审查的功能单元。SubTask 是执行和审查的基本粒度,团队成员领取并完成 SubTask 来推进 Task 的整体进展。合理的 SubTask 拆分能让代码审查更加高效,也降低了集成时出现冲突的风险。

  • 工具映射:对应代码仓库内的 Github Issue。
  • 角色与责任:Task 拆解为 SubTask 的过程由每个开发同学自行负责拆解。

层级关系总览 ​

工作流程 ​

以下描述从 Task 创建到任务完成的端到端流程。Task 必须先存在于 backlog 中,才能在 Roadmap 制定时被筛选纳入;Size = M/L/XL 的设计评审与拆解发生在认领之后,由认领人负责。每个阶段说明用户与系统如何配合推进。

Bugfix 通道 ​

Type = Bug 的 Issue 走独立通道,跳过 Roadmap 与设计评审,创建时自动纳入当前仓库的当前 Iteration。根据 Priority 字段分为紧急和常规两种路由:

条件路由说明
Type = Bug + Priority = P0紧急通道创建后跳过 Triage,Status 自动置为 In Progress
Type = Bug + Priority = P1/P2常规 Bug创建后跳过 Triage,Status 自动置为 Ready to Claim,等待认领

紧急 bug 的关键差异在于自动化行为:

  • 自动跳过 Ready to Claim,直接流转到 In Progress
  • 自动 @mention CODEOWNERS 中对应模块的负责人

Bug 不设 Size 字段,使用 Bug 专用 Issue 模板(复现步骤、期望/实际行为、影响范围、环境信息)。

Phase 1: Task 创建 ​

Task 通过用户与系统的交互式对话创建。用户提供意图,系统逐步收集结构化信息并完成落库。

  1. 用户发起创建请求;系统加载项目配置与历史默认值。
  2. 系统逐项询问以下信息,用户依次回答:Type(Task/SubTask/Bug)、父 Issue、标题、描述(目标与验收标准)、Priority(P0/P1/P2)。
  3. 系统根据描述复杂度自动建议 Size(XS/S/M/L/XL)并展示推理依据;用户确认或修改。
  4. 系统给出完整 Issue 预览;用户明确批准后系统才执行创建。
  5. 系统创建 Issue(设置原生 Type 字段)、加入 Project,设置 Level/Status/Size/Priority/Progress 字段,关联父 Issue,并按 Size 设置初始 Status:所有新建 Task → Status = Triage(待 Roadmap 纳入或直接认领)。
  6. Bug 模式:当 Type = Bug 时,系统自动填充 Bug 报告模板、不设置 Size 字段,要求设置 Priority(P0/P1/P2),并自动将 Issue 纳入当前仓库的当前 Iteration。Status 跳过 Triage:Priority = P0 直接置为 In Progress 并 @mention CODEOWNERS 中对应模块负责人;Priority = P1/P2 置为 Ready to Claim。

Phase 2: Roadmap 制定 ​

用户行为:

  • Senior 轮值负责,为本周期的 Iteration 设定起止日期,从 backlog 已有 Task 中筛选纳入当前 Iteration 并确定优先级;通过 Project 原生的 Start date / Target date 字段为关键 Task 约定起止时间
  • 在每个 Project 下创建/更新一个 tracker issue,集中列出本 Iteration 内该 Project 待完成的全部任务
  • 其他团队成员 Review Roadmap 并发起讨论

系统行为:

  • 提供项目健康报告,展示 Iteration 进度、逾期/停滞检测、阻塞链分析,辅助纳入决策与风险判断
  • Size = M/L/XL 的 Task 被加入 Iteration 后,自动流转 Status 到 Design Pending
  • 自动维护各 Project 的 tracker issue:将本 Iteration 内归属该 Project 的 Task 同步到 tracker issue 的清单中

Phase 3: 认领与开发 ​

用户行为:

  • 团队成员从 Roadmap 中认领 Task 或 SubTask
  • Size = XS/S 直接进入开发;Size = M/L/XL 由认领人进入设计评审(Phase 4)与任务拆解(Phase 5),完成后回到本阶段,由认领人通过设置任务起始时间(Start date)将 Status 从 Ready to Develop 流转到 In Progress,进入子任务开发
  • 开发者编码、编写测试
  • 开发过程中如遇阻塞,将 Status 置为 Blocked
  • 开发完毕,发起 PR

系统行为:

  • 认领任务时自动分配 assignee。Size = XS/S Status 流转到 In Progress;Size = M/L/XL 须处于 Ready to Develop 才允许进入开发,由认领人设置 Start date 后系统将 Status 流转到 In Progress
  • 提供个人工作看板:当前任务、待 Review PR、阻塞项、DDL 预警与优先级建议
  • Bug 优先级处理:Priority = P0 的 Bug 始终置顶显示,Type = Bug 的 Issue 独立分组展示,Priority = P0 Bug 创建后 24 小时未关闭即预警
  • 支持 Status = Blocked 流转,阻塞解除后恢复到 In Progress
  • 提交 PR 时执行合规检查(必填字段完整性、测试证据),创建 Draft PR;PR 描述中自动添加 Closes #issue 以在合并时关闭关联 Issue

Phase 4: 设计评审(Size = M/L/XL) ​

设计评审通过用户与系统的迭代式对话完成,最终交付一份可评审的 Design Doc PR。

  1. 用户对认领的 M/L/XL Task 发起设计评审;系统校验 Issue 必须为 Size ∈ {M, L, XL} 且 Status = Design Pending,并提取目标与验收标准作为撰写起点。
  2. 系统按四个维度逐一向用户发问(每次只问一个问题),并主动搜索代码库获取背景信息,用户依次作答:
    • Context & Scope:技术环境、系统边界、客观背景事实
    • Design Goals:目标、非目标(明确不做的事)、可量化的成功指标
    • The Design:架构、组件、接口、数据流、技术选型理由、关键 trade-offs、测试策略、部署依赖
    • Alternatives Considered:其他可行方案及其被否决的原因
  3. 系统基于收集到的信息生成完整设计文档,逐段展示;用户审批每一段,可要求修改直到满意。
  4. 用户最终确认后,系统在 wiki 仓库创建分支、以 Draft 状态提交 Design Doc PR,并在原 Issue 中评论关联 PR 链接。
  5. 开发者自审 Draft PR,确认无误后将 PR 状态改为 Open;系统监听到状态变更后,基于 CODEOWNERS 与工作量均衡自动分配 Reviewer。
  6. Reviewer 按团队约定在每天上午进行 Review;两位 Reviewer 均提交 Review 后,作者组织线上会议进行对齐讨论,并根据反馈迭代设计文档。
  7. 满足合并条件后由作者合并 PR;PR 合并后系统自动将 Issue 的 Status 从 Design Pending 流转到 Ready to Develop。

Phase 5: 任务拆解(Size = M/L/XL) ​

用户行为:

  • 认领人基于 Design Doc 拆解 M/L/XL Task 为多个 SubTask
  • 拆分后组织同步与任务讨论,确认拆解方案

系统行为:

  • 基于 Task Issue 与 Design Doc 辅助分析拆解方案,由用户确认后批量创建子 Issue(Type = SubTask)并关联父 Issue

Phase 6: 代码审查 ​

用户行为:

  • 开发者自行 Review Draft PR
  • 自审完成后将 PR 状态改为 Open
  • Reviewer 审查 PR 代码
  • 作者根据反馈修改
  • 满足以下全部条件后,由作者执行合并:
    1. 至少 2 个 Reviewer Approve
    2. CI 检查全部通过
    3. 项目门控检查通过

系统行为:

  • PR 状态从 Draft 变为 Open 时,自动基于 CODEOWNERS 与工作量均衡指派 Reviewer
  • PR 合并后,GitHub 根据 Closes #issue 自动关闭关联 Issue;系统监听 Issue 关闭事件,将其 Status 流转到 Done。Size = M/L/XL 的 Task 在所有 SubTask Issue 关闭后由系统自动汇总流转到 Done

Phase 7: 完成与回顾 ​

用户行为:

  • 周期结束时团队回顾完成情况

系统行为:

  • 所有 SubTask Issue 关闭后,自动将父 Task Issue 的 Status 流转到 Done
  • 生成周期回顾报告,展示完成率、风险项、Bug 统计(数量、修复时间、趋势)