Orisumi

Observation

Observer 形成的一份陈述,唯一保存事实时间的类型

Observation 是一份陈述,中文叫观测。它说明四件事:哪个 Observer 负责、内容是什么、依据了哪些已保存的数据、事实在什么时间成立。前台状态 Observer 采集到的前台时段、模型的推断、用户的确认、否定和亲身陈述,都是 Observation。

只有 Observation 保存事实时间。前台时段本身只记“哪个应用在前台”,这一段从几点到几点,写在引用它的 Observation 上。

成员

以下成员位于版本的 content 中,版本共有的成员见 Version。

成员类型含义
observerVersionId引用负责的 Observer
contentVersionId引用观测内容
inputSetVersionId引用或 null,必须出现这次处理实际用到的 InputSet。没有用到已保存的数据时为 null,见 EVIDENCE-1
timeZone字符串或 null,必须出现事实所属的 IANA 时区,未知时为 null
startAt时间或 null,必须出现事实的已知开始边界,未知时为 null
endAt时间或 null,必须出现事实的已知结束边界,未知时为 null

示例

VS Code 从 10:00 起在前台,前台状态 Observer 在 10:05 最后一次确认。

{
	"observerVersionId": "019e1bbb-ec00-7000-8000-0000000000a1",
	"contentVersionId": "019e1bbb-ec00-7000-8000-0000000000c1",
	"inputSetVersionId": null,
	"startAt": "2026-10-06T02:00:00Z",
	"endAt": "2026-10-06T02:05:00Z",
	"timeZone": "Asia/Shanghai"
}

endAt 是最近一次确认的时刻,VS Code 此后可能仍在前台。采集直接读取系统状态,没有用到已保存的数据,所以 inputSetVersionId 为 null。

引用

OBSERVATION-1 引用的目标

执行方:后端

每份 Observation 必须引用一个 Observer 和一个观测内容,两者都是业务实体的版本。inputSetVersionId 不为 null 时,必须指向一个 InputSet 的版本。这些目标都要已保存且未被删除,见 ENTITY-6。

OBSERVATION-2 内容的类型

定义

观测内容的类型由内容版本所用的 Schema 版本决定。

OBSERVATION-3 内容可共用

执行方:后端

同一个观测内容可以被多份 Observation 引用。同一个 Observer 或不同的 Observer 都可以多次观测同一个内容。

事实时间

事实时间由 startAt 和 endAt 两个边界表示,任何一个都可以未知:

startAtendAt含义
nullnull开始和结束都未知
tnull开始已知,结束未知
nullt开始未知,结束已知
tt时间点 t
t1t2,t1 < t2时段 [t1, t2)
t1t2,t1 > t2无效

endAt 可以是最近一次确认的时刻,事实是否已经结束按 TIME-4 判断。边界怎样取值,见 Time。

OBSERVATION-4 只有 Observation 有事实时间

执行方:写入方

只有 Observation 保存事实时间,业务实体的事实时间写在引用它的 Observation 上。观测内容可以保留来源的原始时间,见 TIME-5。

OBSERVATION-5 null 即未知

定义

边界为 null 表示这个边界未知。暂停、取消这类业务状态由观测内容表达。

OBSERVATION-6 开始不晚于结束

执行方:后端

两个边界都已知时,startAt 不得晚于 endAt。

OBSERVATION-7 时间点

定义

startAt 等于 endAt 表示一个时间点。

OBSERVATION-8 左闭右开

定义

startAt 早于 endAt 表示时段 [startAt, endAt)。前后相接的两个时段,前一个的 endAt 等于后一个的 startAt。

OBSERVATION-9 时区

执行方:后端

timeZone 必须出现,值是事实所属的 IANA 时区,未知时为 null。读取方用它把 startAt 和 endAt 换算为当地时间。

版本

OBSERVATION-10 只有原 Observer 能更新

执行方:后端

Observation 的后续版本由同一个 Observer 形成:observerVersionId 指向同一个 Observer 实体的某个版本。后续版本可以补全或纠正事实时间、时区、观测内容和输入集。其他 Observer 的确认或否定形成新的 Observation,见 IDENTITY-3。

贡献者

页面历史