前面四页讲"为什么要两棵树",这一页只回答一件事:落到数据结构上,到底要存哪些字段、哪条边存在哪一头、什么东西永远不许手填。当前最大的难题就在这里——如何让两棵树相互映射,又不重复制造两份项目数据。
黄底行 = 承重字段:拿掉它,双树就退化成两个互不相干的列表。interface 决定这个 Artifact 能不能被别人调用(没有接口契约 = 不可复用);produces / produced_by 是两棵树之间唯一的那条边;start / end 只允许出现在 Work 上。
| 字段 | 类型 | 示例 | 说明 |
|---|
| 字段 | 类型 | 示例 | 说明 |
|---|
Artifact ↔ WorkPackage ↔ Evidence ↔ Version 四者的关系。注意 Evidence 同时挂在两侧:Work 的凭据证明"这一步真做过",Artifact 的凭据证明"这个东西真能用"——两种凭据不能互相冒充。
一个节点同时拥有两个 ID:一个说"我是什么",一个说"制造我的是哪项工作"。以后资产管理接进来会非常自然——因为项目完成之后,Work Item 可以关闭,而 Artifact 永久存在(例如 FireAbility v1.4 继续被下一个游戏项目复用)。
与项目无关,跨项目唯一。改 invariant(核心不变量)= 制造新产品,不是打新变体版本。
与项目绑定,项目结束即失效。依赖连线、排期、负责人、五闸全部挂在这一侧。
禁止"基本完成 / 大致完成 / 接近完成"这类无法验收的表达。执行者声称完成只能进「待检查」,只有审核人 ≠ 执行人才能推到「已通过」。
升级判据来自硬事实而非评价:有没有接口契约、有没有独立验证凭据、被几个项目 used_by 过。被别人真用过是最难伪造的一档——所以它排在最后。
当前阶段: | 版本:
白底深字版本,方便打印或投屏;工具条上的绿树按钮可一次展开全部层级,「⛶ 全屏」放大。