Files
yovision/docs/raw/archive/2026-08-04/12-Sense原型-待办清单-Claude原稿.md
T
QiuSW c7d0ce3ed9
Harness governance / validate (push) Has been cancelled
Harness governance / validate (pull_request) Has been cancelled
docs(raw): archive prototype review sources
2026-08-04 14:46:12 +08:00

15 KiB
Raw Blame History

Sense 原型待办清单(合并 09 / 10 / 11)

合并来源:《09-Sense原型评审-IX草稿》《10-Sense原型-功能模块缺口》《11-Sense原型-第二轮缺口》 基准:yovision-T-004/docs/design/sense/index.html(2026-08-04 09:55) 用途:给 codex 的单一执行清单。理由与推导见来源文档,本文只给做什么 + 依据 + 验收。 日期:2026-08-04


0. 使用说明

  • 编号 S-xx 稳定,后续讨论只引用编号。
  • A 组必须一次重生成,不要逐项打补丁——三项都改信息架构,分次改的返工成本已经累积两轮。
  • 写入范围:T-004 的 write_paths 只含 docs/tasks/T-004.md、docs/design/sense/index.html、docs/design/bell/index.html。标记「⚠️ 超出 write_paths」的条目需另开任务,不要在本任务内改。
  • 优先级:P0 = M2 出口必需;P1 = M2 内补齐;P2 = 只留信息架构位,不实现。

1. 已完成(核对用,不执行)

第一轮《09》的全部条目已落地,实测确认:

项 验证方式 结果
IX-014 modality 建模与「设备」改名 modality 出现 29 次;筛选含「视频 / 雷达」,添加对话框可选「视频设备 / 毫米波雷达」 ✅
IX-014 capabilities 驱动页签 页签改为「连接与健康」 ✅
IX-015 三种停用粒度 operationDialog:暂停推理 / 停用接入 / 断开会话,各带影响说明 + 幂等 + 审计声明 ✅
IX-016 隐私准入(新增路径) updatePrivacyAdmission();区域筛选含 privacy ✅
IX-017 警戒线方向 检出 marker / 反转相关实现 ✅
IX-018 草稿自动保存 检出自动保存逻辑 ✅
a11y:tab 模式 aria-controls + aria-selected + roving tabindex ✅
对比度:主按钮 --primary-strong 改为 #0369a1 / #075985 ✅ 5.93:1 / 7.56:1(原 2.77:1)

2. A 组 · 信息架构级(P0,一次重生成)

导航从 5 项扩到 8 项:

运行总览 · 实时监控 · 设备 · 接入任务 · 【站点与区域】 · 【运维】 · 系统状态 · 【审计】
顶栏补:站点切换器 · 当前用户与角色

S-01 运维视图:对账队列 · P0

两轮未动,单点最大缺口。 总览的「待收敛项」目前不可下钻;对账器是 Sense 区别于普通 NVR 的全部理由,UI 上等于不存在。

必须包含 依据
未收敛项列表,逐项显示期望态 vs 实际态的具体差异 架构 §7「PostgreSQL 是期望态真相源」
每项的重试次数、当前退避间隔、下次重试时间 架构 §7「幂等、指数退避、限制并发」
孤儿资源列表 + 10% 安全闸触发告警 架构 §7「孤儿删除必须有 10% 安全闸和人工可观察指标」
单项手动触发收敛(现有「立即对账」是全局的,粒度过粗) —
收敛持续失败的升级路径:多久算异常、通知谁 需求 §3.5 运维告警独立

验收:从总览「待收敛项 N」可点击进入;任选一项能看到差异、退避与下次重试时间;孤儿列表与安全闸状态可见。

S-02 权限与角色 · P0

两轮为 0。「角色」「只读」「权限」在原型中各出现 0 次。权限决定页面上有没有按钮,是信息架构问题,不是加一层。

必须包含 依据
顶栏显示当前用户与角色 需求 §3.5 五角色 RBAC
只读角色下:添加 / 停用 / 删除 / 更新凭据不出现(不是置灰) routes.md 路由守卫
越权深链的统一拒绝态 routes.md「深链打开无权限或已删除资源时给出统一、安全的反馈」
站点管理员只能看到自己站点 需求 §3.5
角色切换器(原型演示用,同状态演示下拉的做法) —

验收:切到「只读」角色后,设备页所有写操作控件消失;越权深链显示统一拒绝态。

S-03 站点与区域(Area)管理 · P0

实体链 Tenant → Site → Area/Device 目前断了两级:Site 是顶栏一行静态字,Area 只是一个下拉选项。

必须包含 依据
站点列表:配额已用/上限、在线率、未收敛数、边缘节点状态 routes.md /sites
顶栏站点切换器,切换后所有列表按站点过滤 架构 §3 SaaS-ready 边界
配额只读展示 + 标注「由 Bell 持有」 架构 §5 第 7 条
Area 增删改,含 capture_policy = video_allowed | non_imaging_only 的编辑 需求 §3.1;架构 §8
改 capture_policy 时的显式处置流程(该 Area 已有成像设备怎么办) IX-016「不静默留存或停用」——规则已写,触发点当前不存在

验收:能新建 Area 并设为 non_imaging_only;把一个已有摄像头的 Area 改成该策略时,出现显式处置流程而非静默通过。

S-04 审计入口 · P1

原型多处承诺「每次请求均审计」,但没有查询入口。

必须包含:设备操作审计列表(时间 / 操作 / 对象 / 执行人 / 结果),可按设备、操作类型、时间筛选;标注真相源在 Bell。 验收:从设备详情「操作记录」可跳到全局审计页并保留该设备筛选。


3. B 组 · 页内新增(不改 IA)

S-05 capabilities 的产生流程 · P0

本轮新引入的 capabilities 决定页签显示,但没有写入它的流程——「测试连接」仍只是一次性 toast,结果不落地。

必须包含
探测结果落地为设备持久属性,详情页「设备能力」区可见(厂商、型号、固件、认证方式、Profile 列表、是否支持校时、是否支持 ONVIF 事件订阅)
重新探测动作 + 与既有 capabilities 的差异提示
能力降级处置:原本支持事件订阅、重探后不支持了,依赖它的设备型触发怎么办
与采购白名单关联(US-007 要求形成白名单,当前白名单与台账无连接)

验收:添加设备后「设备能力」区有内容;重新探测能显示"新增/消失了哪些能力"。

S-06 模态适配器未就绪态 · P0

需求 §3.1:M1~M5 只完整实现 video 适配器,M6 才接非视频;但信息架构不得写死为摄像头。

现在模态下拉已能选 radar/mqtt——选了会怎样没有定义。能一路添加成功就是承诺 M6 能力;直接禁用又违背 IA 要求。

需要第三态:模态已建模、适配器未就绪——可录入、进台账、占位、参与隐私准入校验,但明确标注「适配器 M6 交付,当前不建立连接」,且不计入视频配额。 验收:选 radar 添加后设备进入台账并显示该标注;实际态不显示为「在线」或「离线」,而是「适配器未就绪」。

S-07 待激活闭环 · P0

需求 §3.1 明确的中间态,但设备表无待激活行、筛选无该项、无处置流程。

必须包含:待激活作为一级筛选项与独立计数;激活流程(重新探测 / 校时 / 配额复核);批量激活与逐项结果;长期待激活的过期策略。 验收:筛选出待激活设备并完成一次激活,失败时可看到具体原因。

S-08 凭据更新与认证失败恢复 · P0

详情页「凭据:已安全保存,页面不可见」——处理正确,但只有读没有写。现场改密码是最高频运维事件。

必须包含:单设备「更新凭据」(只写不读,不回显已存值);认证失败作为独立实际态(区别于「离线」,原因和处置都不同);批量更新凭据;更新后自动重试接入且结果可见。 验收:认证失败设备在列表中可识别,能就地更新凭据并看到重试结果。

S-09 降级态:配额不可读 / 区域策略不可读 · P0

状态演示仍是 normal / loading / empty / error 四态。缺的是写故障——与「边缘节点不可达」(读故障)表现完全不同:视频照常播、列表照常看,只有写操作被拒。

必须包含 依据
配额不可读:横幅说明「当前无法新增或启用设备,已有视频不受影响」,添加/激活按钮禁用并说明原因 api.md §2;架构 §7
区域策略不可读:拒绝新的成像设备变更并告警,已有链路不静默停用 IX-016

验收:状态演示下拉新增这两态,切换后写操作被拒而视频与列表正常。

S-10 边缘节点与隧道 · P1

侧栏底部只有一行 sense-edge-01 · 在线。但控制面/数据面分离是整个 NAT 方案的核心,UI 不体现等于白设计。

必须包含:边缘节点列表(版本、在线时长、隧道状态、承载设备数);隧道断开但视频仍在推的明确表达;本地缓存水位 + 断网恢复后的补传进度;节点升级/重启动作。 依据:需求 §3.5「断网时边缘缓存事件,恢复后补传」。 验收:能演示「隧道断开 / 视频正常」这个组合态,并显示补传队列长度。

S-11 主 / 子码流切换 · P1

详情写死「子码流 704×576 · 5 FPS」,无切换动作。码流是容量的直接变量(架构 §6:max_streams 由码率决定),切换还会踢掉当前发布者,需影响范围提示。

S-12 分片详情与设备迁移 · P1

分片健康只读。需要:分片详情(承载设备、实际码率、重连历史)、设备跨分片迁移(会中断该路,需确认)、单分片故障的影响范围展示(架构 §6「单分片故障不能扩散」)。

S-13 批量任务列表与逐项结果 · P1

「当前任务」是单卡片,「查看逐项结果」是死按钮。IX-001 要求逐行错误、重复序列号、待激活、确认写入。

必须包含:任务列表(历史可查、可重试、可导出错误清单);逐项结果页(每行校验结果、失败原因、单行重试);上传前本地预校验结果页;部分成功语义(8 路里 5 成功 3 失败,成功的已生效)。

S-14 Sense 运维告警列表 · P1

总览「今日设备告警 3」与「与业务预警分开」的说明写得对,但点不进去。

必须包含:运维告警列表(离线、时间漂移超阈、收敛失败、分片异常、隧道断开);运维侧的静默与通知配置(与 Bell 的业务静默是两套);明确标注「不会推给家属/值班员」。 依据:需求 §3.4「业务预警与运维告警使用不同通道和值班配置」。

S-15 设备列表分页 · P1

「分页」在原型中出现 0 次。IX-003 明确要求,阶段 M2/M4。含批量选择的跨页语义(「全选」到底选了当前页还是全部)。

S-16 时间显示口径 · P1

系统内同时存在三个时钟:设备时间(可能漂 +3.8s)、服务器时间(期望态真相源)、浏览器本地时间。而「时间漂移」是原型自己列的一级指标,三者不区分会导致运维误判。

约定:统一显示服务器时间 + 时区标注;设备时间只出现在漂移列;相对时间悬停显示完整时间戳。

S-17 租户维度 · P1

首期一客户一套私有实例,但架构 §3 要求「从第一版携带 tenant_id 并保持 SaaS-ready 边界」。不需要租户切换器,但需要当前租户可见、且所有列表按租户过滤这件事在 UI 上成立。


4. C 组 · 措辞与文档

S-18 「暂停推理」措辞 · P0(一句话,但防的是重大实现错误)

现文:「只停止新推理任务」。这暗示的正是《03》§2.1 明令禁止的实现:

sourceOnDemand: yes 的语义是「有 reader 才拉流」,而推理 source 挂上去就是一个 reader。因此「暂停分析」必须通过卸载 source 实现,不能只在推理插件里 return——后者会让 mediamtx 持续拉流、带宽白烧,而监控上看起来一切正常。

改为:「解除推理侧对该路的订阅;无其他观看者时上游自动停止拉流」。 并把「是否仍在拉流」作为可观察结果显示——这正是那条教训要防的。

S-19 media_shard.max_streams 标注 · P2

分片显示 8/32。架构 §6 写「初始建议 32,可按故障域降为 16,最终由压测确定」——数值有据,但 UI 需标注它是可配置项而非固定值,避免被当成硬上限。

S-20 「推理绑定 16/16」的视觉 · P2

正常状态画成 100% 满格紫条,易被误读为告警/满载。换表现。

S-21 ⚠️ 超出 write_paths:api.md 补审计投递接口 · P1

原型承诺「每次请求均审计」,架构 §2 定 Bell 是审计真相源,但 api.md §2 的五行内部接口没有 Sense → Bell 的审计投递。

需补一行并明确失败语义。建议:Bell 不可达时操作照常执行、审计落本地队列重传——与 Brain 投递失败的处理保持一致(架构 §7)。 处理方式:另开任务,不在 T-004 内改。


5. D 组 · 只留信息架构位(P2,不实现)

避免 M3 时整页重做。三项各留一个导航位或详情页签占位即可:

编号 模块 依据
S-22 推理绑定视图(设备 ↔ worker 绑定、注册/心跳/容量、绑定失败态) api.md §2「Worker → 控制面」
S-23 pre-roll 切片运维(请求量、失败率、耗时) 架构 §5 第 3 条
S-24 设备型触发源配置(雷达/门磁/按钮/ONVIF 事件订阅) 《08》§3 边界 2;与 S-06 同源

6. 执行顺序

批次 条目 说明
第 1 批 S-01 · S-02 · S-03 · S-04 一次整页重生成。四项都改信息架构,分次打补丁的返工成本已累积两轮
第 2 批 S-05 · S-06 · S-07 · S-08 · S-09 · S-18 P0 页内新增 + 措辞。S-18 只是改文案,可随手带上
第 3 批 S-10 ~ S-17 P1,M2 出口前补齐
第 4 批 S-19 · S-20 · S-22 · S-23 · S-24 P2,留位与视觉
独立任务 S-21 超出 T-004 write_paths

7. 总验收

第 1、2 批完成后应满足:

  • 导航 8 项;顶栏有站点切换器、当前用户与角色
  • 「待收敛项」可下钻,能看到期望态/实际态差异、退避与孤儿资源
  • 切到只读角色,设备页所有写操作控件消失(非置灰)
  • 能新建 non_imaging_only 的 Area,并触发既有成像设备的显式处置流程
  • 「设备能力」区有内容,重新探测能显示能力差异
  • 选 radar 添加后进入台账,实际态为「适配器未就绪」,不计入视频配额
  • 待激活可筛选、可激活、失败有原因
  • 认证失败可识别、可就地更新凭据、可看到重试结果
  • 状态演示含「配额不可读」「区域策略不可读」,写操作被拒而视频与列表正常
  • 「暂停推理」措辞已改,且能观察到「是否仍在拉流」