报警记录数据模型(`core/repositories/models/alarms`)

0 阅读3分钟

报警记录数据模型(core/repositories/models/alarms

本文说明 国标/平台报警落库记录 core/repositories/models/alarms 包中的职责、与项目各层的对接方式,以及字段含义与枚举对应关系。

项目地址 github.com/openskeye/g…


1. 在项目中承担的作用

该模型描述 单条报警事件 在业务库中的持久化形态:数据落在表 sk-alarmsalarmMethod / alarmType / eventType 与国标 XML 中的报警分类对应;deviceUniqueId 在实现上多指向 上报方设备 ID(与 VSS AlarmLogic 中通道、From 对齐逻辑一致,详见报警文档 §6)。列表、删除、创建走 DeviceService RPC,由管理端查询与运维清理。

层级作用
数据层core/app/sev/db/internal/svc/init_database.goalarms.Alarms 执行 AutoMigrateServiceContext 注入 AlarmsModel
RPC / db 服务core/app/sev/db/internal/logic/deviceservice/alarm_*.goalarm_list_logicalarm_delete_logicalarm_create_logic 等。
HTTP / backendcore/app/sev/backend/internal/handler/device/alarms(如 /device/alarm/list、删除等)。
信令 / 写库VSS core/app/sev/vss/internal/logic/gbs_sip/alarm.go 解析 SIP MESSAGE 后映射 alarms.AlarmType_* 等常量并 Device.AlarmCreate RPC 落库。
级联转发同文件中结合 CascadeRecords 与通道 CascadeChannelUniqueId 判断是否向上级平台转发(与 7.4 平台级联数据模型 中的 relations 匹配)。

2. 表与字段:数据库列 ↔ Go ↔ JSON

实体 Alarms 映射表 sk-alarmsTableName() 返回值)。

字段含义说明
id主键自增。
deviceUniqueId设备侧关联 IDCHAR(70),与报警流水线中设备/通道解析结果对应;列表可按此筛选。
alarmMethod报警方式uint,与 AlarmMethods(电话 / 设备 / 短信 / GPS / 视频 / 设备故障 / 其他)一致。
alarmPriority报警级别uint,与 AlarmPriorities(一至四级警情)一致。
alarmDescription报警描述文本摘要。
longitude经度字符串存储(注意与 channels 表浮点经纬度不同)。
latitude纬度字符串存储。
alarmType报警类型uint,与 AlarmTypesAlarmType_1AlarmType_19 约定一致(视频丢失、智能分析类、存储故障等,详见 variables.go)。
eventType类型扩展参数uint,与 EventTypes(如进入/离开区域)等扩展语义一致。
snapshot快照URL 或路径。
video关联录像URL 或路径。
createdAt报警时间毫秒时间戳;仅插入时在 Correction 中写入。

3. ItemAlarms 的字段对应

Itemdata.go 中定义:

  • 内嵌 *Alarms:JSON 与 Alarms 一致,无额外 API 专用切片字段。
  • UseDBCachejson:"-"

更新场景下,CheckMap 校验 key 属于 variables.Columns不对各字段做 JSON 再序列化(与带 depIds 类模型不同)。


4. 列名常量(variables.go

常量数据库列
ColumnIDid
ColumnDeviceUniqueIddeviceUniqueId
ColumnAlarmMethodalarmMethod
ColumnAlarmPriorityalarmPriority
ColumnAlarmDescriptionalarmDescription
ColumnLongitudelongitude
ColumnLatitudelatitude
ColumnAlarmTypealarmType
ColumnEventTypeeventType
ColumnSnapshotsnapshot
ColumnVideovideo
ColumnCreatedAtcreatedAt

PrimaryId"id"


5. 行为与联调注意点

  • 枚举alarmType 与国标 AlarmMethod + Info.AlarmType 组合在 VSS 侧映射为单一 AlarmType_* 常量,联调应对照 3.1 文档中的表格与 alarm.go 分支。
  • 无缓存:查询列表为直连 DB(仍受连接池与 DB 层逻辑影响)。
  • 经纬度类型:本条记录为 字符串;地图打点若需浮点,需在业务层解析。

7. 相关代码路径

  • 模型包:core/repositories/models/alarms/
  • DB 迁移与模型注入:core/app/sev/db/internal/svc/init_database.goservice_context.go
  • 报警 RPC:core/app/sev/db/internal/logic/deviceservice/alarm_*.go
  • HTTP:core/app/sev/backend/internal/handler/device/alarms/
  • 国标上报与类型映射:core/app/sev/vss/internal/logic/gbs_sip/alarm.go