Files
yovision/docs/03-business-rules-and-glossary.md
T

8.5 KiB
Raw Blame History

generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件) wiki_page: Business-Rules-and-Glossary wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Business-Rules-and-Glossary.- wiki_revision: 06b68d16bf907decdaf85a813d417896f7920f4c synchronized_at: 2026-08-13T14:06:00Z

业务规则与术语

核心术语

术语 定义
Sense 独立销售的视频接入、媒体、区域配置和运维产品
Brain 无界面的推理交付单元,输出观测和标准事件
Bell 独立销售的事件预警与处置产品
Device 设备根实体;通过 modality/capabilities 表达视频、雷达、门磁等能力
Site 一个客户部署中的站点边界
Area 多边形区域、警戒线及其隐私/准入策略
Event 已发生的不可变结构化事实及证据引用
Alert Bell 根据一个或多个 Event 和规则创建的处置对象
ack 明确由某人接手 Alert,不等同于消息已送达或已看到
Outbox 与本地状态同事务持久化、可重试投递的消息队列记录
producer identity Bell 为每个外部产品实例分配的机器身份
场景包 规则模板、升级策略、话术和报表口径的版本化配置包

工单状态

  • 待确认:需求或方案等待负责人确认。
  • 待实施:方案已确认,但依赖或排期尚未满足。
  • 进行中:主 agent 正在工单声明的写路径内实施。
  • 阻塞:出现计划外且当前无法解除的问题。
  • 待验收:实现、测试和文档证据完成,等待负责人验收。
  • 已完成:负责人明确验收并完成归档、关闭。

旧仓库任务的 DONE 不继承到新仓库。所有迁移项初始均为“待迁移”,必须用新代码、新测试和新验收重新证明。

稳定业务规则

  1. Sense 与 Bell 完全独立认证;同一自然人在两个产品中是两个账户。
  2. 任一产品可独立部署、升级、备份、恢复和验收,另一产品不作为启动依赖。
  3. Brain 不拥有用户、Alert、通知或业务审计真相。
  4. 产品集成使用机器身份和版本化契约,不共享数据库、用户会话或内部模型。
  5. Bell 以 (producer_id, source_event_id) 保持跨重启幂等。
  6. Event 不可变;误报只追加 outcome/反馈,不改写原始事实。
  7. sent、delivered、seen、ack 是不同事实;无回执不能当成功。
  8. 未 ack 自动升级且进程重启后续跑;并发 ack 只有首个成功者成为处置人。
  9. 联系人、排班和升级策略共享主数据但分对象、分版本;投递创建时固化实际收件人、通道和解析版本。
  10. 静默必须限时并自动恢复,单次不超过 4 小时。
  11. 默认 16 路,按 32/64/128 横向扩展;128 路不等于单机或单 GPU 承诺。
  12. 首期 S2 民办寄宿学校只做匿名规则,不启用人脸。
  13. 家庭卧室、卫生间禁止摄像头,只能使用非成像传感器。
  14. 摄像头凭据、客户数据、真实视频、JWT secret 和生产配置不得进入仓库、工单或 Wiki。
  15. 业务预警与设备/媒体/推理运维告警使用不同通道和责任人。

新项目需要补充什么

以下事实必须由后续工单和负责人确认后补充:

  • GoAdmin/go-admin-ui 的固定上游 commit、许可证记录和裁剪模块;
  • Go、Node、Python、CUDA、PostgreSQL、MediaMTX 的精确版本;
  • Sense/Bell 数据库 schema、Cookie 名称、部署域名和备份命令;
  • Brain 模型、推理 FPS、硬件容量和商用许可;
  • 试点最终留存期、通知供应商和验收阈值;
  • 三个交付单元的正式版本与发布流程。

未确认项不得从旧代码或模板默认值推断为当前事实。

Sense MVP 业务与安全规则

  • Sense 账户:只登录 Sense;不得接受 Bell JWT、Cookie 或用户数据。角色为系统管理员、实施/运维、站点管理员和只读用户,后端权限是最终边界。
  • 安全初始化:系统不提供默认账户、默认密码或默认签名密钥;首次管理员由仓库外一次性令牌创建。所有模式的密码仅要求至少 6 个字符,不限制字符种类并允许包含用户名。负责人已明确接受该生产密码策略的字典猜测与凭据填充风险。
  • Device:设备不可变逻辑 ID 是后续 Profile、媒体和区域的内部引用。非视频适配器未实现时必须显示 adapter_not_ready。
  • 摄像机凭据:ONVIF 与 RTSP 可使用不同账号,也可显式复用;两组均只写不读,使用仓库外 32 字节密钥分别加密。密码不得进入 URL、日志、审计、工单或响应。
  • 受控发现:ONVIF Discovery 默认关闭,只有显式设置获准本机 IP 才能发送发现;不得扫描未授权网段。
  • Profile:主辅码流按分辨率分类并使用 RTSP 凭据分别验证;脱敏 Stream URI、验证状态和时间持久化,重启后保留。至少一个 Profile 验证成功后 Device 进入 active;认证失败、不可达、超时与校时问题使用可定位状态。
  • 自动媒体路径:接入检查中每个验证成功的 Profile 都按 Device/Profile 幂等建立并立即对账媒体路径;首次配置使用 MediaMTX add、已有配置使用 replace,Sense 启动时从数据库恢复所有 desired=running 路径;路径不存在属于配置失败,不属于等待拉流。MediaMTX 不可用不回滚摄像机接入,接入结果记录“需要处理”并引导到视频服务排错。
  • MediaMTX:保持外部进程。Sense 只停止自己启动并持有句柄的进程,最多自动重启三次;摄像机凭据只在 localhost 控制请求中瞬时组装,不持久化、不返回。
  • 播放会话:由当前 Sense 用户创建,最长两分钟;实时监看以设备名称、位置和主/子码流等业务标签供用户选择,内部 ID 只用于系统关联;waiting 表示等待第一个播放器触发按需拉流,不是播放失败,播放器连接后会话轮询刷新为实际状态;播放器导航必须携带有效 Sense 会话 Cookie,且 Fetch Metadata 必须表明是同源 iframe,普通 API 的 X-Product 边界不变;设备分页和媒体路径不以 16 路作为硬上限,页面一次只打开一路流。
  • 区域版本:坐标为 0..1 归一化值,并绑定 Device、Profile、宽高。每次发布或停用形成新版本;范围、点数、自交、退化、方向和期望版本由后端校验。Profile 分辨率变化后旧版本必须标记为需要重新校准。

Bell MVP 业务与安全规则

  • 独立身份:Bell 仅接受自己的 bell_session;管理员管理用户、角色与规则,操作员读取事件/预警并处置,只读用户仅查询。后端权限是最终边界。
  • 安全初始化:系统没有默认用户、密码或签名密钥;首次管理员密码只通过一次性进程环境传入,密码至少 12 位且包含大小写字母和数字。
  • Event 与 Receipt:Event 正文不可更新或删除。相同 (producer_id, source_event_id) 与相同 payload 返回原回执;相同键但不同 payload 返回冲突,跨进程重启仍成立。
  • 合成事件:只在 development/test 注册,使用虚构匿名 fixture,并走与未来生产者适配器相同的 Event/Receipt 服务;production 直接请求返回 404。
  • 规则评估:每个已接收 Event 都记录匹配或未匹配解释。匹配时固化实际规则快照;未匹配 Event 保持可查询,不能标成已通知或已处置。
  • Alert 关联:同一 Event 可产生多个 Alert;同一规则与地点的多个 Event 可聚合到同一未关闭 Alert,Event 与 Alert 双向可追溯。
  • 处置状态:界面“待处理”对应新 Alert,“处理中/已看到”对应首个成功 ack,“已完成”对应记录现场结果后的 close。普通用户不需要理解 Event/Alert 内部模型,技术详情仍保留完整事实链。
  • 并发 ack:PostgreSQL 条件更新只允许首个操作员成为处置人;后来者得到真实处置人,不能覆盖。
  • close:只有处置人或管理员可以完成;必须选择“确认有危险、误报、现场正常、无法确认”之一,可附备注。相同重复请求幂等,其他改变结果的请求被拒绝。
  • 审计事实:成功生命周期事实只追加;失败、重复和拒绝尝试写入安全审计,但不记录令牌、密码或连接密钥。