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

12 KiB

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: 2bcd90c508180eb9a2f9fe37b62115d7d9207e18 synchronized_at: 2026-08-15T01:13:04Z

业务规则与术语

核心术语

术语 定义
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 的精确版本;
  • Bell 数据库 schema、Sense/Bell 部署域名和备份命令;Sense 浏览器 Cookie 与后端会话名称已由工单 #64 固定;
  • Brain 模型、推理 FPS、硬件容量和商用许可;
  • 试点最终留存期、通知供应商和验收阈值;
  • 三个交付单元的正式版本与发布流程。

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

Sense 身份与权限规则

  • Sense 仅使用自己的用户库、JWT 密钥和会话;浏览器 Cookie 为 Sense-Admin-Token,后端可接受的独立会话 Cookie 为 sense_session,不得与 Bell 共享。
  • 当前身份管理固定四个角色:admin(系统管理员)、implementation_operator(实施/运维)、site_admin(站点管理员)、viewer(只读用户)。业务设备权限由后续设备工单在这些角色上扩展,不复制新的身份事实源。
  • 仓库和迁移不创建默认账户或默认密码。首位管理员只能通过仓库外的 SENSE_BOOTSTRAP_TOKEN 一次性创建;令牌至少 32 个字符,初始化完成后必须从进程环境移除,已有任一用户时接口拒绝再次初始化。
  • Sense 密码至少 6 个字符、最多 72 字节,不要求大小写、数字或符号组合,允许全小写;交付时仍应使用难猜且不复用的密码。
  • 登录成功/失败、登出、密码变更和鉴权拒绝必须留下身份审计;密码、令牌、Cookie、验证码、数据库连接和摄像头凭据不得进入审计正文。
  • site_admin 可在账户维护流程中读取角色、部门、岗位和字典等必要支撑数据,但不能修改角色、菜单或系统配置;implementation_operator 与 viewer 不具备账户管理权限。未注册的配置和接口管理路由对所有角色返回 404。

Sense 视频服务规则

  • MediaMTX 始终是独立二进制;Sense 管理配置、进程生命周期、路径期望态和状态对账,不把媒体内核放入 GoAdmin handler 或 GORM model。
  • Control API 只能绑定回环地址。Sense 可启动配置的 MediaMTX,也可连接已由外部启动的实例;外部实例标记为非本实例所有,孤儿安全闸禁止 Sense 停止它。
  • 已验证 Profile 幂等形成媒体路径;数据库不保存带凭据 Stream URI。摄像头凭据只在 loopback Control API 请求边界临时使用,不进入基础配置、日志或 Sense API。
  • 路径状态区分 pending、waiting、ready、process_unavailable、apply_failed、status_unavailable、path_missing、stopped,并保存失败次数和有上限的下次重试时间。
  • 冷启动恢复 desired=running 路径;用户明确停止的路径保持 stopped,不因启动扫描自动重新启用。稳定路径只刷新状态,不重复下发配置或无意义增加版本。
  • MediaMTX 失败不得删除或降级设备台账与最后一次已验证 Profile。

Sense 实时监看规则

  • 设备/Profile 列表必须分页和搜索;16/128 路不能导致页面同时创建全部播放器。用户选择一路并打开 Dialog 后才建立 reader,关闭或切换时销毁当前播放器。
  • 页面和 JSON API 不返回 RTSP URI、摄像头凭据或 MediaMTX 内部路径。播放器只使用同源短期能力地址;能力令牌必须高熵、绑定用户、每用户单会话,并在停止认证轮询后最多 2 分钟失效。
  • 播放状态必须区分 loading、waiting、ready、authentication_failed、stream_not_found、service_unavailable、timeout、expired、offline 和 stopped,并同时显示文字与可行动处理建议,不能只用颜色表达。
  • waiting 表示媒体路径存在且播放器正在建立 reader,不等于摄像头接入失败;20 秒仍未就绪才显示连接超时并允许显式重连。
  • 默认从浏览器访问 Sense 的主机名推导 MediaMTX WebRTC 端口 8889;经过反向代理、HTTPS 或端口映射时,部署方必须显式配置安全的 SENSE_MEDIAMTX_WEBRTC_PUBLIC_BASE,不得回退到只对服务器自身有效的地址。

Sense 旧 MVP 规则状态

2026-08-14 前的 Sense 账户、设备、发现、Profile、MediaMTX、播放会话和区域版本实现规则仅适用于 explore 快照,不是新 main / dev 的运行事实。迁移工单应从这些记录提取已确认业务与安全约束,但认证、RBAC、管理端外壳和通用 CRUD 必须基于冻结 GoAdmin 源码重新实现并重新验收。

Bell 旧 MVP 规则状态

2026-08-14 前的 Bell 独立身份、Event/Receipt、规则、Alert、ack/close 和审计实现仅保存在 explore。不可变、幂等、并发处置和产品独立边界仍是待迁移业务要求,但新实现必须从冻结 GoAdmin/go-admin-ui 源码派生并重新验收。

旧实现迁移边界

旧 Sense 中已验证的中文设备字段、请求白名单、凭据隔离和媒体链路行为可作为迁移验收用例;不得把旧自研基础框架直接复制到新 dev。

Sense 设备台账与凭据规则

  • Device 是 Sense 内的设备根实体,类型包括视频、雷达、门磁、按钮、穿戴和其他;16 路仍只是默认交付配额,分页和台账容量不得硬编码为 16。
  • 当前仅视频设备具备可用接入适配器;其余类型必须显示“适配器未就绪”,不允许通过虚假成功状态掩盖能力缺口。
  • 设备台账支持列表、新建、编辑和停用;停用保留审计与后续关联,不提供物理删除。编辑、停用和凭据更新均使用版本号检测并发冲突。
  • 摄像头 ONVIF 与 RTSP 凭据按设备和用途分离,以 AES-256-GCM 密文保存;加密密钥只从外部环境 SENSE_CREDENTIAL_KEY 注入,不写入数据库、仓库、工单、Wiki 或日志。
  • 凭据只写不可读:HTTP 和页面仅显示“已配置/未配置”,不得回填用户名、密码或密文;更新凭据后只记录状态并请求后续接入流程重试。
  • admin、implementation_operator、site_admin 可维护设备与凭据,viewer 仅可查看设备台账。

Sense 视频接入规则

  • “获准网卡”和“获准目标网段”都是部署人员显式配置的授权边界;私网地址不自动代表已授权。未配置发现网卡时不发送 WS-Discovery,手工地址也必须通过目标 CIDR 检查。
  • ONVIF 设备地址、Media XAddr 和 RTSP Stream URI 禁止 URL 用户信息、敏感认证查询参数、HTTP 重定向和超出授权网段的目标。摄像机返回不可用主机名时,只能归一化为已验证设备主机并重新执行授权检查。
  • ONVIF 支持 Basic、MD5 Digest 和 SHA-256 Digest 的 auth;不支持的算法或 qop 必须拒绝,不静默降级。
  • Profile 保存 token、名称、分辨率、编码、用途、无凭据 Stream URI 和逐 Profile 验证状态;主码流默认取分辨率最高项,子码流取最低项。
  • 认证失败、超时、时间异常、目标未授权和重定向拒绝必须给出不同状态。失败重探不得删除最后一次已验证 Profile;凭据更新后可重新探测。

Sense 区域与方向警戒线规则

  • 区域配置必须绑定已验证的 Device、Profile Token、分辨率和编码;客户端只提交媒体路由引用,最终绑定规格由后端重新查询确认。
  • 多边形使用 3–64 个画面内坐标点,必须有非零面积,边线不得自交或重叠;方向警戒线恰好两个不同点,并明确“起点到终点”或“终点到起点”。
  • 坐标以 0–1 归一化值保存,同时固化当时分辨率和编码。Profile 删除、Token 替换、分辨率或编码变化必须设置 needs_recalibration,不得静默缩放或重投影旧几何。
  • 新建为 v1;编辑、启停和重新校准都追加不可变版本。请求使用 expectedVersion 乐观并发,过期版本返回 409,旧版本保留用于审计。
  • admin、implementation_operator、site_admin 可创建和保存新版本;viewer 只读。页面状态必须同时使用文字和 Tag,不能只靠颜色表达。
  • 鼠标可点击/拖动顶点;键盘必须能添加、移动和删除顶点。错误在绘制区域附近以可被辅助技术感知的文字给出,并提供撤销、清空和未保存关闭确认。
  • 区域配置是 Sense 内部事实;#69 不发布 Brain 契约。后续 Sense→Brain 配置协议必须由独立协调工单从当前版本投影生成,不能共享数据库模型。