Files
yovision/docs/09-product-requirements.md

193 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- gitea-wiki-mirror:start -->
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
wiki_page: Product-Requirements
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Product-Requirements.-
wiki_revision: e912a1ca1410e01680a0f11f6199ccb42cd8fe8f
synchronized_at: 2026-08-27T09:06:08Z
<!-- gitea-wiki-mirror:end -->
# 产品需求
## 本页用途
本页同时承担 YoVision 产品需求正文与需求总览索引,保留已经确认的 Sense、Brain、Bell 和跨项目要求,不因 DevHarness 升级重命名或拆分事实源。
## 事实来源边界
- 长期产品目标、边界和稳定需求记录在本页。
- 单次任务的范围、变化、实现和验收记录在对应 Gitea 工单。
- 原型用于确认页面、流程与交互,不替代正式需求和验收标准。
## 当前需求索引
- 产品边界:PR-BND-001~PR-BND-003。
- Sense:SEN-001 起,按 P0、P1/P2 管理。
- Brain:BRN-001 起,按 P0、P1/P2 管理。
- Bell:BEL-001 起,按 P0、P1/P2 管理。
- 跨项目与非功能要求:见本页第 6 节及对应协调工单。
## 登记规则
新增或变化的长期需求必须有来源、状态、所属产品、优先级和验收边界;会改变已确认结果时先更新工单并重新取得用户确认。
## 原型与设计资产
### 原型门禁
新页面、独立用户功能、重大交互或导航变化必须先形成可审阅原型;小范围 UI 使用标注截图、低保真图或明确复用规范;非 UI 任务使用架构、API、数据、状态或流程设计。
### 线上原型与按需 HTML 快照
默认使用可访问且版本明确的线上原型审核。只有用户明确要求或项目规则要求时,才导出 `prototypes/<工单号>/<版本>/index.html`;已确认快照不得原位覆盖。
### 原型确认记录
实现工单记录设计链接或路径、版本/revision、访问检查、确认人、确认时间和覆盖范围。结构、流程、状态、权限或异常处理发生实质变化时必须重新确认。
## 状态规则
需求使用拟议、已确认、实施中、已交付、已废弃等状态;工单状态仍按待确认、待实施、进行中、阻塞、待验收、已完成管理,两者不得混用。
## 更新时机
产品边界、长期业务规则、需求优先级或验收边界变化时更新本页;单次实现细节、测试日志和提交哈希只写工单。
## 最小验收清单
- 需求有稳定编号、所属产品、优先级、来源和验收边界。
- 跨项目需求只有一个契约或协调事实源。
- 需要原型的变更已有可访问、可识别版本并完成确认。
- 不包含密码、令牌、生产数据或完整聊天记录。
## 1. 产品范围与优先级
YoVision 首个可交付目标是在民办寄宿学校以默认 16 路高风险点位形成完整闭环:
```text
设备接入 → 稳定供流 → 推理/规则 → 事件与证据
→ Bell 预警 → ack/升级/close → 误报反馈
```
需求优先级:
- P0:独立纵切、首个端到端闭环、安全与可恢复边界。
- P1:形成可交付产品所需的配置、运维和扩展能力。
- P2:后续场景、规模或体验增强。
## 2. 产品独立性要求
### PR-BND-001 Sense 与 Bell 独立销售
- 两者各自拥有登录、用户、角色、菜单、审计、数据库、版本、安装包和备份恢复。
- 同一自然人在两个产品中也视为两个独立账户。
- 不共享用户 ID、密码、JWT、Cookie、Casbin 策略或数据库角色。
- 任一产品不以另一产品为启动依赖。
### PR-BND-002 Brain 独立交付
- Brain 可独立构建、测试、版本化和发布,默认随 Sense 产品部署。
- Brain 无交互式账户,不持有 Alert、ack、通知或全局审计真相。
- Brain 与 Sense/Bell 仅通过版本化契约交互。
### PR-BND-003 可选产品集成
- 产品间使用独立机器身份,不复用管理员密码或浏览器 token。
- 不允许跨数据库查询、共享文件目录或复制内部表结构临时打通。
- Bell 不读取摄像头密码;事件只携带逻辑设备引用和必要证据引用。
## 3. Sense 需求
### P0
- **SEN-001 独立登录与权限**:Sense 自有用户、角色、菜单、会话和审计;至少覆盖管理员、实施/运维、站点管理员和只读边界。首期采用账号密码直接登录,所有运行模式均不使用验证码;密码保持 6–72 字节且不强制字符复杂度,登录成功与失败必须记录不含秘密的身份审计。默认登录有效期为固定 30 天,后端 JWT 与浏览器持久 Cookie 必须一致;版本更新后已有 Token 不自动延长,不提供滑动续期或服务端单 Token 撤销。
- **SEN-002 设备台账**:以 Device 为根实体,通过 `modality` 和 `capabilities` 表达 video/radar/contact/button/wearable/other;首期只完整实现 video,未实现适配器显示 `adapter_not_ready`。
- **SEN-003 ONVIF/RTSP 接入**:支持发现或手工添加、Profiles、StreamUri、主/子码流、校时、认证失败、重新探测和凭据更新。
- **SEN-004 批量开通**:默认 16 路可导入、预校验、待激活、逐项成功/失败、仅重试失败项;部分成功不做整体回滚。
- **SEN-005 MediaMTX 管理**:媒体代理保持独立进程;Sense 管理期望配置、生命周期、reader、上游拉流和对账收敛。
- **SEN-006 实时监看**:支持设备列表、单路实时画面、主/子 Profile、加载/空/失败/重连状态;128 路站点使用分页或虚拟列表,不一次加载全部视频。
- **SEN-007 区域配置**:支持多边形区域、方向警戒线、设备关联和版本化配置;能力/Profile 变化时显式提示几何重新校准。
- **SEN-008 独立本地事件查看**:未安装 Bell 时仍可查看本地事件候选和证据状态。
- **SEN-009 运维中心**:展示设备/媒体/推理期望态与实际态、未收敛差异、退避、下次重试、认证失败、时间漂移、孤儿安全闸和审计。
- **SEN-010 安全凭据**:摄像头密码只写不读、不回显、不进日志;更新后自动重试并显示脱敏结果。
### P1/P2
- **SEN-011 容量与配额**:默认 16 路;32/64/128 可配置和分片扩展;新增/启用时校验配额,配额不可读时拒绝相关写入但保持已有流与读取。
- **SEN-012 边缘节点**:展示节点版本、在线时长、承载数、控制隧道、视频数据面和补传队列;断网缓存,恢复补传。
- **SEN-013 Media/Brain 分片**:容量来自压测而非硬编码;分片故障影响范围可观察,跨分片迁移需独立高风险工单。
- **SEN-014 Bell connector**:使用持久 Outbox 投递标准事件/审计;Bell 不可用不阻断 Sense,恢复后幂等补投。
- **SEN-015 设备运维告警**:离线、认证、漂移、收敛、分片和隧道异常不进入 Bell 业务预警队列。
## 4. Brain 需求
### P0
- **BRN-001 输入适配**:从版本化源契约读取 RTSP/媒体引用、设备逻辑标识和区域配置,不读取 Sense 数据库。
- **BRN-002 解码与推理**:建立可替换的解码、检测、姿态、跟踪、ReID 和规则判定流水线;模型输出与业务规则分层。
- **BRN-003 匿名安全规则**:首期支持越线、危险区域、聚集等匿名规则;不启用人脸。
- **BRN-004 区域语义**:支持多边形、警戒线方向、时段、持续时间和冷却语义;坐标与 Profile/分辨率绑定且版本化。
- **BRN-005 标准事件**:输出冻结 JSON Schema,包含 producer/source event ID、租户/站点/设备逻辑引用、规则/模型版本、时间、观测、区域和证据引用。
- **BRN-006 幂等与重试**:同一输入事实重试不得制造语义不同的重复事件;投递失败可恢复并可观测。
- **BRN-007 隐私**:事件不得包含摄像头密码、内部文件路径、客户隐私明文或未经授权的人脸特征。
### P1/P2
- **BRN-008 证据**:生成抓拍和含 pre-roll 的片段引用;证据失败可形成明确的降级事件,不伪装完整成功。
- **BRN-009 容量**:按模型、分辨率、FPS、batch 和硬件建立每 16 路逻辑分片基线;不承诺单 GPU 128 路。
- **BRN-010 效果评估**:按规则版本分别报告召回率、每路每天误报数和样本量,不使用跨场景统一“准确率”。
- **BRN-011 人脸后置**:默认关闭;仅在单独授权、影响评估、底库合法性、撤回/删除和加密审计完成后进入独立试点。
## 5. Bell 需求
### P0
- **BEL-001 独立登录与 RBAC**:Bell 自有用户、角色、会话、密码策略和审计,不接受 Sense 用户 token。
- **BEL-002 外部事件 API**:接收 Sense、Brain、其他 NVR、传感器或第三方标准事件;每实例独立 producer identity。
- **BEL-003 幂等入站**:以 `(producer_id, source_event_id)` 保证永久稳定收据和跨重启幂等。
- **BEL-004 Event 不可变**:校验后持久化结构化事件和证据引用;误报或处置不改写原始事件。
- **BEL-005 规则与 Alert**:规则命中创建 Alert;Event 与 Alert 多对多、双向可导航,抑制的 Event 不伪装成已投递。
- **BEL-006 Alert 生命周期**:至少支持 open/ack/close;并发 ack 仅首个服务端成功者成为处置人,后到者看到真实结果。
- **BEL-007 自动升级**:未 ack 按版本化升级链继续;重启后恢复未完成链路,恢复成功/失败可观察。
- **BEL-008 投递事实**:sent/delivered/seen 与 ack 分离;不支持回执、未知、可重试失败和最终失败均明确展示。
- **BEL-009 双路径通知**:试点至少本地 Web/声光加短信或语音;生产前两条独立路径,其中一条可绕过互联网,并支持供应商健康和故障切换。
- **BEL-010 联系人/排班/升级**:人员与已验证通道、值班组、站点时区、周轮换、生效日期、临时替班、空档/重叠检查、版本发布和审计分对象建模。
- **BEL-011 投递快照**:创建投递时固化实际收件人、通道、排班和升级策略版本;后续修改不改写历史。
- **BEL-012 交接与静默**:交接覆盖未 ack、处置中和升级中 Alert,升级不中断;静默最多 4 小时并自动恢复。
### P1/P2
- **BEL-013 事件与审计中心**:筛选、分页、批量处置、总数、时间线和安全深链;不一次加载全部记录。
- **BEL-014 规则版本**:试运行展示命中样本和影响;回滚创建新版本,不改写历史版本。
- **BEL-015 去重聚合**:支持设备冷却、站点聚合、已处置抑制和静默,并在 Alert 中解释聚合原因。
- **BEL-016 保留策略**:事件片段、抓拍、元数据、审计和训练样本分别配置并记录到期删除;技术默认 30 天,最终期限由客户/法务确认。
- **BEL-017 对外集成**:版本化 OpenAPI/Webhook,签名密钥只写不读,重试和失败告警可见;客户平台不接管 Bell 状态机。
- **BEL-018 场景包**:版本化导入/导出、站点应用差异和升级路径;新场景尽量纯配置交付。
## 6. 跨项目非功能要求
- **NFR-001 可用性**:断线重连、先落库后投递、Outbox、对账收敛和重启恢复是基础能力。
- **NFR-002 安全**:最小权限、全链路审计、秘密仓库外管理、无 query token、无默认密码/JWT secret/演示入口。
- **NFR-003 隔离**:Sense/Bell 数据库角色只能访问本产品数据;部署在同机也使用不同域名或明确隔离 Cookie Path/策略。
- **NFR-004 可观察**:设备在线、流状态、推理延迟、事件量、未收敛项、投递 SLA 和恢复失败可监控。
- **NFR-005 容量**:媒体、解码、推理、证据和 UI 分别压测;16 不硬编码,128 不等于单机承诺。
- **NFR-006 可维护**:每个交付单元有独立 README、构建/测试/发布命令、版本和子目录规则。
- **NFR-007 契约兼容**:破坏性变更发新版本;生产者和所有消费者必须有契约测试。
- **NFR-008 隐私合规**:最少收集、最少展示、目的完成后删除;未成年人、家庭、人脸试点分别经过法务/客户门禁。
## 7. 首期非目标
- 不直接复制旧仓库整棵目录、go.mod、迁移或任务状态。
- M1-M3 不实现 GB/T 28181、信创适配、原生 App、异构传感器完整适配或人脸。
- 不实现高空抛物专用算法。
- 不承诺未经现场数据验证的召回率、误报率或 128 路单机能力。
- 不在框架初始化工单中同时完成 GoAdmin 升级、TypeScript、Vite 和全部业务重写。
## 8. 最小产品验收
- Sense 在 Bell 未安装/未启动时可独立登录,完成摄像头接入、实时查看和区域配置。
- Brain 可用合成输入产生符合契约的匿名区域事件,并在 Bell 不可用时明确重试/降级。
- Bell 在 Sense/Brain 未启动时可用合成或第三方事件完成 Alert → ack → close。
- Sense 账号不能登录 Bell,Bell 账号不能登录 Sense。
- 三个项目独立构建、测试和版本化;Sense/Bell 独立迁移、备份、恢复和打包。
- 集成断开不阻断各自核心能力,恢复后按 Outbox 和幂等收据继续。