发布、版本与回滚
三层版本模型
| 层 | 含义 | 可变性 |
|---|---|---|
| Candidate Revision | 正在编辑的草稿,AI 建议先进入这里 | 可变,带 ETag 防并发覆盖 |
| Release | 发布后的语义模型快照 | 不可变 |
| 线上版本 | 当前对外提供查询的 Release | 可切换到任意已发布版 |
线上问题始终运行在已发布版本上,而不是随时变化的草稿上。
发布时冻结了什么
发布不是简单存一份快照,编译器会计算并冻结:
- 事实根:每个查询作用域的聚合起点
- 作用域成员:该作用域内可用的指标与维度
- 安全 Join 路径:从事实根出发到每个成员的唯一确定路径
- 语义索引:业务说法到语义对象的向量索引,绑定到该 Release
为什么要冻结
如果 Join 路径在提问时临时推断,同一个问题在不同时刻可能走不同路径、得到不同数字。冻结之后,一个 Release 内的口径是确定的。
发布前检查清单
- 关系基数已人工确认
- 指标公式、默认聚合、可加性、时间轴已逐项审核
- 结构校验通过
- 真实数据质量报告无高危项(主标识不唯一、基数不符、异常扇出)
- 结构化 Playground 试问通过
- 自然语言 Playground 用真实业务说法试问通过
回滚
发布历史按序号展示,可以切换到任意一个已发布版本。
回滚是整体切换,不是逐项撤销——因为作用域、路径和语义索引都绑定在 Release 上,只回滚其中一部分会破坏一致性。
已知边界
- 同一实体存在两条等长最短 Join 路径时,该实体不会自动进入作用域(无法确定性选择)。
- 既无主标识也无业务度量的事件/桥接表不会成为事实根。
- 从已发布版本派生草稿时,会丢掉语义上下文的评审记录(已知问题)。