4.3 KiB
4.3 KiB
生产者与消费者 mapper 字段表
mapper 必须创建新的契约 DTO,不得直接序列化 Sense GORM 实体,也不得让 Brain 把共享快照当作 brain.internal.input/v1。
| 契约字段 | Sense 生产来源/规则 | Brain 消费目标/规则 |
|---|---|---|
schema_version |
常量 yovision.source-config/v1 |
在任何映射前精确校验;未知主版本拒绝 |
config_id |
新的稳定配置聚合 ID;不是数据库行 ID 语义 | 作为配置流逻辑 ID,不解释为 Brain 内部对象 ID |
revision |
聚合配置变更时严格递增;不可复用 | 与 config_id 共同做幂等、顺序和陈旧检查 |
published_at / effective_at |
发布时写 UTC RFC 3339;生效不得早于发布 | 完整校验后按生效时间原子切换 |
site.id |
对外稳定站点引用;不得映射客户名或数据库主键语义 | 仅作租户隔离后的逻辑关联;v1 不提供用户身份 |
logical_device.id |
area.Definition.DeviceID / media.Route.DeviceID 经稳定外部 ID mapper |
映射到 BrainInputConfig.logical_device_id |
profile.id |
area.Definition.ProfileToken 与 media.Route.ProfileToken 经稳定 Profile ID mapper |
映射到 BrainInputConfig.profile.profile_id |
profile.width/height/encoding |
area.Definition.ProfileWidth/ProfileHeight/ProfileEncoding;必须与当前媒体 Profile 一致 |
映射到规则 RuleSet 的 Profile 绑定;不一致拒绝 |
profile.frame_rate |
Sense 已验证 Profile 的帧率快照 | 映射到 BrainInputConfig.profile.fps |
media.ref |
由 media.Route.ID/Path 生成 media:<opaque-resource>;禁止读取或拼入 admissionProfile.StreamURI 及凭据 |
交给后续 connector 解析;不得当作 RTSP URL 或本地路径 |
media.transport |
当前固定 rtsp,仅描述媒体传输类别 |
选择后续 connector/decode adapter;不含认证信息 |
rule_set.version |
由一组 area.Version 聚合成稳定规则集版本 |
映射到 Brain RuleSet.version |
rule_set.state |
NeedsRecalibration=true → recalibration_required;整体禁用 → disabled;否则 active |
只有 active 可构建并启用规则引擎 |
rule_set.profile_binding |
与本快照 profile.id/width/height 同源复制并交叉校验 |
必须精确等于 profile;之后才接受归一化几何 |
rule_set.areas[].id/version |
area.Version.DefinitionID/Version 经稳定规则 ID mapper |
映射到 AreaRule.rule_id;version 用于可追溯性 |
rule_set.areas[].kind |
Sense polygon 映射为 danger_area |
只映射到 Brain 危险区域规则,不透传 Sense 枚举 |
rule_set.areas[].points |
area.Version.GeometryJSON 中 {x,y};保持 0–1 |
映射到 Brain Point(x,y);至少三点且非退化 |
rule_set.directional_lines[].id/version |
area.Version.DefinitionID/Version 经稳定规则 ID mapper |
映射到 DirectionalLineRule.rule_id |
rule_set.directional_lines[].start/end |
direction_line 几何的两个归一化点 |
映射到 Brain Point;相同点拒绝 |
rule_set.directional_lines[].trigger_direction |
Sense forward/reverse 必须由 mapper 根据已确认的起终点方向转换为 left_to_right/right_to_left |
映射到 DirectionalLineRule.trigger_direction;不得直接猜测枚举 |
integrity |
对移除 integrity 的 JCS 快照计算 SHA-256 |
映射前重算并常量时间比较;失败保留上一有效 revision |
测试责任
- Sense 生产者契约测试:从设备、媒体 Route、Profile 与区域版本 fixture 生成快照;断言字段映射、revision 递增、Profile 变化触发新 revision/待重校准、无秘密媒体引用、Schema/语义/摘要通过。
- Brain 消费者契约测试:加载本目录有效与无效样例;断言版本拒绝、幂等/陈旧处理、Profile 绑定、坐标、规则 ID、状态门禁和摘要;再映射为 Brain 内部配置,证明共享
schema_version不等于brain.internal.input/v1。 - 协调契约测试(本工单):校验所有样例、秘密字段/URL/本地路径拒绝、跨字段语义和摘要。产品 adapter 测试在后续 connector 工单实施。
Sense 与 Brain 各自可增加内部字段,但不得将数据库主键、用户表、JWT、Cookie、摄像头凭据、客户内部路径或内部模型直接扩展进本契约。