跳转到内容

数据模型

PushGo 的三类数据模型对应三种不同的业务语义。选对模型之后,客户端展示、历史记录、状态合并和后续自动化都会更清楚。

你想表达的是应使用原因
“发生了一件事,提醒我一下”Message没有持续状态,发送后独立存在。
“一件事从开始到结束,中间可能多次变化”Event同一个 event_id 可以多次更新,最后关闭。
“一个设备、服务、房间或任务的当前状态”Thing同一个 thing_id 可以长期更新属性。
“某个实体上发生了一次告警”Thing + MessageThing 表示实体,Message 关联 thing_id 表示本次提醒。
“某个实体正在经历一个过程”Thing + EventThing 表示对象,Event 关联 thing_id 表示过程。

Message 是最直接的通知模型。它适合不需要后续合并或关闭的内容。

  • 磁盘空间超过阈值。
  • 备份任务已经完成。
  • 价格监控发现降价。
  • 摄像头检测到一次运动并附带截图。
  • 部署任务的开始、构建、发布、完成全过程。
  • 服务器、传感器、房间等长期对象的最新状态。
  • 需要不断覆盖当前值的监控面板。
分组字段
认证与路由channel_idpasswordop_idthing_id
展示内容titlebodyseverityurlimagestags
时效与安全occurred_atttlciphertext
扩展数据metadata
{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"title": "备份完成",
"body": "NAS 每日备份已经完成。",
"severity": "normal"
}

Event 表示一个过程,而不是一条孤立通知。创建后会得到 event_id,后续更新和关闭都围绕这个 ID 进行。

  • CI/CD 部署:开始、构建、发布、完成或失败。
  • 故障处理:发现异常、排查中、已恢复。
  • 门窗状态:打开后持续提醒,关闭时结束。
  • 长任务:视频转码、数据同步、模型训练。
/event/create -> event_id
|
+-> /event/update 可调用多次
|
+-> /event/close 结束事件
分组字段
认证与路由channel_idpasswordop_idthing_id
生命周期event_idevent_timestarted_atended_at
展示内容titledescriptionstatusmessageseveritytagsimages
扩展数据attrsmetadataciphertext
  • status 用短状态,例如 runningdegradedsuccessfailed
  • message 写本次变化,例如“镜像推送完成”。
  • event_time 表示本次变化发生的时间。
  • started_at 表示整个事件的开始时间,只在创建时需要。
  • ended_at 表示整个事件的结束时间,只在关闭时需要。

Thing 表示一个长期存在的对象。它的价值在于“同一个对象被反复更新”,而不是每次都产生一个新通知对象。

  • 家庭 NAS、服务器、网络服务。
  • 房间、传感器、摄像头、门锁。
  • 长期任务或资产。
  • 需要显示当前状态的面板。
/thing/create -> thing_id
|
+-> /thing/update 可调用多次
|
+-> /thing/archive 不再活跃但保留历史
|
+-> /thing/delete 删除或退役
分组字段
认证与路由channel_idpasswordop_id
身份与展示thing_idtitledescriptiontagsprimary_imageimages
时间created_atobserved_atdeleted_at
位置与外部系统external_idslocation_typelocation_value
状态数据attrsmetadataciphertext
  • title 写人能识别的名字,例如“家庭 NAS”。
  • attrs 写会变化的状态,例如 CPU、温度、在线状态。
  • metadata 写不常参与展示的辅助信息,例如来源系统或版本。
  • external_ids 用来关联外部系统的 ID,例如 Home Assistant entity ID。

PushGo 的三类模型可以组合。

组合用法
Thing + Message“家庭 NAS”这个实体上发生了一次“磁盘快满”提醒。
Thing + Event“生产数据库”这个实体正在经历一次“主从延迟”事件。
Event + MessageEvent 记录完整过程,Message 用于某个关键节点的强提醒。

如果你不确定该选哪个,先从 Message 开始;当你发现同一个脚本在反复发送“开始/更新/结束”或“当前值变化”时,再升级为 Event 或 Thing。