跳转至

积木路线图 · 初版想法沉淀

结论:这个想法成立。核心是补上「版本」这一层对象。

状态:草稿 v1 日期:2026-10-13 范围:本文件只写想法。本文件不写实现。 后续:研究结论和修订建议见 02-研究综述.md。本文件保持研究前的原样。


0. 结论

这个想法成立。核心是补上「版本」这一层对象。

它和现有工具的区别只有一条:层级结构从画布上长出来,不需要人另外维护。


1. 问题

开发过程中,想法持续产生。

表单解决单条需求的问题。表单保证每条提交的格式一致。表单让需求和验收标准对齐。这一层已经成熟。

表单之上缺一层。这一层是「大版本」。没有工具表示「赛季 1 包含哪些大功能」。

于是策划或运营手工收集条目。然后写一个文档,或者拉一张表格。文档和条目之间没有连接。

手工整理有三个代价。

  1. 版本视图和条目脱节。条目改了,文档不跟着变。
  2. 版本视图只有一个人维护。这个人离开后,视图失效。
  3. 文档和表格看不出比重。看不出哪个模块占用最多工作量。

2. 概念与术语

本想法用一个比喻:积木和房子。以下是正式术语。

术语 英文 定义
积木 Block 最小工作单元。积木是一张卡,同时是一张表单。
积木组 Group 若干积木的容器。积木组本身也是积木。
汇总卡 Summary Card 积木组顶部的卡。汇总卡描述组内的内容。
版本 Version 最顶层的容器。游戏团队称版本为「赛季」。
白板 Board 自由摆放积木的画布。
树图 Treemap 用矩形面积表示权重的嵌套视图。
权重 Weight 一个数值。权重决定积木在树图中的面积。
上卷 Rollup 子级的数据汇总到父级。

术语规则:

  • 一个概念只用一个词。「积木」不再叫「卡片」「节点」「块」。
  • 一个词只表示一个概念。「组合」只表示动作,不表示对象。对象叫「积木组」。

3. 对象模型

结构是树。布局是视图。两者分开保存。

{
  "id": "blk_7f3a",
  "type": "block",        // block | group | version
  "title": "赛季通行证奖励重构",
  "parentId": "grp_02",   // 树结构:每个积木只有一个父级
  "children": [],         // 积木组和版本才有子级

  "form": {               // 表单:积木的结构化字段
    "schemaId": "feature_request_v3",
    "fields": { "目标": "...", "验收标准": "...", "负责人": "..." }
  },

  "weight": 8,            // 权重:面积来源
  "status": "进行中",
  "tags": ["赛季1", "奖励"],

  "layout": {             // 布局:只属于某一块白板
    "boardId": "board_main",
    "x": 320, "y": 180, "w": 240, "h": 160
  }
}

三条设计约束。

  1. 树是数据,坐标是视图。 同一棵树可以有多个布局。换布局不改变结构。
  2. 积木组是一种积木。 类型相同,行为相同。因此嵌套没有层数上限。
  3. 表单挂在积木上。 点开积木就点开表单。表单不是另一个页面。

4. 两种视图

同一个数据,两种看法。两种视图可以互相切换,也可以并排。

视图 回答的问题 主要操作
白板 「这些事怎么摆放?」 拖动、分组、连线的自由摆放
树图 「这一版里谁最重?」 点击下钻、缩放、比较面积

白板视图

  • 积木是自由摆放的矩形。
  • 把积木拖到另一个积木上,两者自动成组。
  • 积木组显示为一个带标题栏的大矩形。
  • 白板表达人的意图。位置有意义。

树图视图

  • 积木组是容器矩形。子积木是容器内的矩形。
  • 矩形面积等于权重。面积一眼看出比重。
  • 点击一个积木组,此组放大到全屏,子级展开。
  • 顶部显示面包屑。面包屑显示当前位置。
  • 位置自动计算。位置没有意义,只有面积有意义。

两种视图的张力

白板保留人的摆放意图。树图自动计算面积。两者可能冲突。

处理方式:白板保存手动坐标。树图只读权重。白板加一个「按权重整理」按钮。按下后手动坐标按权重重排。


5. 关键交互

  1. 拖动积木。积木移动到新位置。
  2. 把积木拖到另一个积木上。系统弹出确认。确认后两者成组。
  3. 点击积木组。视图下钻一层。子级填满屏幕。
  4. 点击面包屑。视图回到指定层。
  5. 点击积木。侧栏打开表单。
  6. 拖动积木组边框。权重随面积变化。
  7. 点击「折叠」。积木组收起为一个矩形。矩形显示汇总卡的标题。
  8. 按 Esc。视图回到上一层。

警告: 删除积木组会连带删除组内所有积木。系统在删除前要求输入组名确认。


6. 汇总卡规则

汇总卡是父级卡片。汇总卡回答「这一组是什么」。

汇总卡的内容分两类。

自动事实(系统生成,人不能改)

  • 子级数量
  • 状态分布(未开始 / 进行中 / 已完成)
  • 权重合计
  • 完成百分比
  • 风险项数量

人工叙述(人写,系统不覆盖)

  • 一句话目标
  • 这一组为什么存在
  • 验收标准

这个划分解决一个冲突:纯自动的汇总卡读起来像报表。纯人工的汇总卡会过期。自动事实保证不过期,人工叙述保证可读。


7. 走查场景

场景:赛季 1 上线前两周

  1. 策划打开树图视图。顶层显示「赛季 1」。
  2. 赛季 1 下有四个积木组:战斗、社交、商业化、技术债。
  3. 商业化组的矩形最大。策划立刻知道商业化占用最多工作量。
  4. 策划点开商业化组。组内是 12 个积木。
  5. 其中 3 个积木是「未开始」。策划把这 3 个积木拖到「赛季 2」。
  6. 商业化组的汇总卡自动更新。权重合计从 48 降到 31。
  7. 策划在汇总卡里补一句话:本季只做首充礼包,不做订阅。
  8. 策划切到白板视图。四个组的位置是上周排好的。位置没有变。

场景:新想法进入

  1. 任何人在表单里提交一个想法。
  2. 想法先落在「待分类」区。待分类区是一个特殊积木组。
  3. 每周评审时,负责人把想法拖进对应的积木组。
  4. 拖入即归属。不需要另外更新文档。

8. 未决问题

这些问题没有答案。它们决定产品形态。

编号 问题 影响
Q1 一个积木能否同时属于两个积木组? 树要求单父级。树图要求单父级。真实需求常跨版本。跨版本需要图结构。
Q2 面积表示什么?工作量、条目数、还是优先级? 三者不能同时表示。必须选一个。建议选工作量。
Q3 权重由人填还是由子级累加? 叶子节点由人填。非叶子节点由子级累加。这条规则要写死。
Q4 层级上限是几层? 树图超过 4 层后标签放不下。建议可见 3 层,逻辑不限层。
Q5 这是新工具还是现有工具的视图? 如果是视图,就要接 Jira、Linear、GitHub Issues。如果是新工具,就要自己做表单和权限。
Q6 1000 个积木在同一屏时如何显示? 面积小于阈值时只显示颜色。文字改为悬停显示。
Q7 谁有权改结构? 如果所有人可改,结构会乱。如果只有负责人可改,负责人成为瓶颈。
Q8 白板的手动坐标和树图的自动面积冲突时,以谁为准? 建议:白板优先显示,树图优先统计。

9. 命名候选

名称要能被记住,也要能搜索到。

候选 说明 风险
BlockMap 积木 + 树图 太通用,重名多
Brick 砖 已有同名产品
NestPlan 嵌套 + 计划 偏企业风
积木图 中文直译 中文圈易记
Trellis 花架 隐喻好,但不好念

命名规则:不要用「Block」单独做名字。「Block」已经被大量产品占用。


10. 最小可用版本

第一版只做四件事。

  1. 三种对象:积木、积木组、版本。
  2. 一种视图:树图。带点击下钻。
  3. 一张表单:积木的结构化字段。
  4. 汇总卡:自动事实 + 一句话叙述。

第一版不做白板。白板是第二版。

理由:树图验证核心假设。核心假设是「层级结构可视化能替代手工文档」。白板验证的是次要假设。


11. 下一步

  1. 用 20 个真实条目做一次手工树图。检查层级是否够用。
  2. 访谈 3 个正在手工维护版本文档的人。记录他们现在的文档长什么样。
  3. 回答第 8 节的 Q1 和 Q2。这两个问题决定数据模型。
  4. 见 02-研究综述.md。研究综述列出已有的同类产品。