safesight-control/docs/实施跟踪.md
tian 96e689fec0 feat: 模型管理与人脸库产品化改进,通道部署配置状态指示
P2-14 模型管理简化:
- 上传新模型:模态框上传 → 存盘 → SHA256 入库 → 可选自动分发
- 设备兼容性矩阵:根据 Edge /v1/capabilities 区分缺失 vs 不适用
- 版本管理:从固定 auto 改为文件修改时间戳
- 更新全部智能过滤:只推送缺失/不一致的设备

P2-15 人脸库优化:
- Build 产出自动注册为标准资源,接入 Resource Task 分发系统
- 人脸库页面增加设备同步状态矩阵 + 批量同步按钮
- 人员搜索过滤
- 人脸质量评分反馈(构建诊断信息 + 通过率展示)

新增:通道部署页每台设备显示配置同步状态(对比 config_versions 与 Edge config SHA256)

文档:产品化改进计划、实施跟踪、模型与人脸库改进方案
2026-07-20 10:27:11 +08:00

166 lines
9.1 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.

# 产品化改进实施跟踪
## P0 — 交付底线
| # | 事项 | 状态 | 开始 | 完成 |
|---|------|------|------|------|
| 1 | 告警中心增强 | ✅ 已完成 | 2026-07-17 | 2026-07-17 |
| 2 | 仪表盘重做(实时告警流+统计卡片) | ✅ 已完成 | 2026-07-17 | 2026-07-17 |
| 3 | 一键配置向导(场景化部署 3 步流程) | ✅ 已完成 | 2026-07-17 | 2026-07-17 |
| 4 | 基础登录鉴权 | ⬜ 待开始 | - | - |
| 5 | 监控页 HLS.js 本地化 | ✅ 已完成 | 2026-07-17 | 2026-07-17 |
## P1 — 体验改善
| # | 事项 | 状态 | 开始 | 完成 |
|---|------|------|------|------|
| 6 | 告警浏览器通知SSE / 标题闪烁) | ✅ 已完成 | 2026-07-17 | 2026-07-17 |
| 7 | 设备列表服务健康指示 | ✅ 已完成 | 2026-07-17 | 2026-07-17 |
| 8 | 操作结果提示优化toast 替代 URL 消息) | ✅ 已完成 | 2026-07-17 | 2026-07-17 |
| 9 | 术语统一 | ✅ 已完成 | 2026-07-17 | 2026-07-17 |
| 16 | 通道部署页配置同步状态指示 | ✅ 已完成 | 2026-07-20 | 2026-07-20 |
## P2 — 长期优化
| # | 事项 | 状态 | 开始 | 完成 |
|---|------|------|------|------|
| 10 | 时序图表(告警趋势) | ✅ 已完成 | 2026-07-17 | 2026-07-17 |
| 11 | 设备分组与标签 | ⏸️ 推迟 | - | - |
| 12 | 配置版本对比 | ✅ 已完成 | 2026-07-17 | 2026-07-17 |
| 13 | 报告导出CSV | ✅ 已完成 | 2026-07-17 | 2026-07-17 |
| 14 | 模型管理简化 | 🔄 进行中 | 2026-07-20 | - |
| 14.1 | └ 上传新模型(文件上传→存盘→入库) | ✅ 已完成 | 2026-07-20 | 2026-07-20 |
| 14.2 | └ 设备兼容性矩阵N/A vs 缺失) | ✅ 已完成 | 2026-07-20 | 2026-07-20 |
| 14.3 | └ 版本管理(时间戳替代 auto | ✅ 已完成 | 2026-07-20 | 2026-07-20 |
| 14.4 | └ "更新全部"智能过滤(只推送给需要更新的设备) | ✅ 已完成 | 2026-07-20 | 2026-07-20 |
| 15 | 人脸库优化(搜索+同步+质量评分) | ✅ 已完成 | 2026-07-20 | 2026-07-20 |
| 15.1 | └ Build 产出自动注册为标准资源 | ✅ 已完成 | 2026-07-20 | 2026-07-20 |
| 15.2 | └ 人脸库页面接入 Resource 同步系统 | ⬜ 待开始 | - | - |
| 15.3 | └ 人员搜索与过滤 | ✅ 已完成 | 2026-07-20 | 2026-07-20 |
| 15.4 | └ 人脸质量评分展示 | ✅ 已完成 | 2026-07-20 | 2026-07-20 |
## 进行中
- **P2-14 模型管理简化** — 详见 [模型与人脸库改进方案](./模型与人脸库改进方案.md)
- **P2-15 人脸库优化** — 详见 [模型与人脸库改进方案](./模型与人脸库改进方案.md)
## 已完成事项
### 2026-07-20
- **新增:通道部署页配置同步状态指示**
- `DeviceAssignmentBoardCard` 新增 `ConfigSynced` 字段
- `pageDeviceAssignments`:查询 Edge `/v1/config/status` 的 sha256`config_versions` 中最新的 config_id 对比
- 每个设备卡片显示:✅ 配置已同步 或 ⚠ 配置待更新
- 改动文件:`config_assets.go` (+1)、`ui.go` (+22)、`device_assignments.html` (+3)、`style.css` (+3)
- **P2-15.4 人脸质量评分展示**
- `actionFaceGalleryBuild` 增强输出解析:提取 per_person_used、failure_reasons、failed_images 等诊断信息
- Build 完成后写入 `build_meta.json`,供页面读取每人的通过数
- 结果消息增强:显示 "生成成功,共 3 人12 张通过2 张失败无人脸×2"
- 人脸库卡片:每人照片数旁显示绿色"N通过" pill如 "3通过"
- 改动文件:`ui.go` (+48)、`face_gallery.html` (+1)
- **P2-15 人脸库优化 全部完成** ✅
- **P2-14.4 "更新全部"智能过滤**
- `ModelStatusRow` 新增 `NeedsSync` 字段,`BuildModelStatusBoard` 在设备有缺失/不一致模型时设为 true
- 模板"更新全部模型"表单改为只提交 `NeedsSync=true` 的设备,避免对已同步设备做无效推送
- 改动文件:`model_management.go` (+2)、`models.html` (+1)
- **P2-14.3 版本管理**
- 新增 `fileVersion` 辅助函数:基于文件修改时间生成 `YYYYMMDD-HHMMSS` 版本号
- `SyncStandardModelsFromDirectory`、`SyncStandardResourcesFromDirectory`、`RegisterResource` 的 `Version` 字段从固定 `"auto"` 改为调用 `fileVersion`
- `actionModelUpload` 的默认版本也改为统一格式
- 改动文件:`model_management.go` (+11)、`resource_management.go` (+3)、`ui.go` (+1)
- **P2-14.2 设备兼容性矩阵**
- `BuildModelStatusBoard` 新增 `deviceCapabilities` 参数,根据设备 `/v1/capabilities` 判断
- `ModelTypeCapability` 函数映射模型类型→能力Key`face_detection`→`face_det`、`face_recognition`→`face_recog`,其余不限制)
- 设备不支持某类模型时状态显示灰色「不适用」pill 而非红色「缺失」
- `pageModels` handler 查询所有在线设备的能力信息,传给 `BuildModelStatusBoard`
- Summary 计算:只有 ok/na 的设备算 Complete合理
- 改动文件:`model_management.go` (+22)、`ui.go` (+32)、`models.html` (+2)、`model_management_test.go` (+2)、`style.css` (+1)
- **P2-14.1 上传新模型**
- 新增 `actionModelUpload` handlermultipart 接收 → 存盘 `models/standard_models/` → SHA256 hash → 写入 `standard_models`
- 表单字段:名称、类型(下拉)、版本(可选,留空自动生成日期版号)、描述、文件
- "自动分发"复选框:勾选后立即创建 `model_sync_all` 任务推送到全部在线设备
- 路由:`POST /ui/models/upload`
- 模板:死按钮改为弹出模态框,仿 face_gallery 风格
- 改动文件:`internal/web/ui.go` (+82)、`models.html` (+38)
- **P2-15.3 人员搜索与过滤**
- 人员列表上方新增搜索框,输入关键词实时过滤(前端 JS无需后端
- 卡片增加 `person-card` class + `data-name` 属性用于匹配
- 改动文件:`face_gallery.html` (+15)
- **P2-15.2 人脸库页面接入 Resource 同步系统**
- `pageFaceGallery`:加载 `resource_type=face_gallery` 的标准资源,构建 `ResourceStatusBoard` 传给模板
- 新增 `actionFaceGallerySync` handler接收 `device_id[]`,创建 `resource_sync_all` 任务,跳转任务详情
- 模板新增"设备同步状态"卡片SHA256 对比矩阵 + "同步到全部设备"按钮 + 单设备"同步"按钮
- 路由:`POST /ui/face-gallery/sync`
- 改动文件:`internal/web/ui.go` (+41)、`face_gallery.html` (+49)
- **P2-15.1 Build 产出自动注册为标准资源**
- `ResourceManagementService` 新增 `RegisterResource` 方法:对单个文件 hash + 写入 `standard_resources`
- `actionFaceGalleryBuild`Build 成功后自动调用注册Resource 分发系统即刻感知新版本
- 改动文件:`internal/service/resource_management.go` (+20)、`internal/web/ui.go` (+8)
### 2026-07-17
- **P2-12 配置版本对比**
- DB 新表 `config_versions`,部署时自动保存配置 JSON 快照
- 设备详情页"配置历史"按钮 → 版本列表 → 选两版并排对比
- 差异行红/绿高亮
- **P0-3 一键配置向导**
- 3 步引导:选设备 → 配检测(从设备读取运行通道,下拉选已有视频源或手动添加) → 一键下发
- 标准模式可见,复用的 AutoConfigService 链路
- **P2-13 报告导出**
- API`/api/alarms/export?from=&to=&device=&rule_type=` 导出 CSV
- Excel 兼容BOM + UTF-8支持筛选条件继承告警页面一键下载
- **P2-10 告警趋势图**
- 仪表盘新增 Canvas 柱状图:近 7 日告警数量
- API`/api/alarms/daily-count?days=7` 返回每日统计
- 纯 Canvas 绘制,无外部图表库依赖
- **P1-9 术语统一**
- "视频通道" → "检测通道"5 个模板 + 菜单 + Handler 标题)
- "场景" → "场景管理"Handler 标题与菜单对齐)
- "人脸库管理" → "人脸库"(与菜单对齐)
- **P1-8 操作结果提示优化**
- JS 读取 URL 中 `?msg=` / `?error=` 参数,显示为右上角浮动 toast
- 绿色成功 / 红色失败4 秒自动滑出消失
- 展示同时清理 URL刷新不重复显示
- **P1-7 设备服务健康指示**
- 模板本已有媒体服务状态(运行中/未运行/待确认)
- 新增:在线但媒体服务异常的行背景变淡橙色警告
- **P1-6 告警浏览器通知**
- 顶栏铃铛图标显示未处理告警数(红点+数字徽章)
- 页面标题闪烁 `(N) SafeSight`
- 每 15 秒轮询 `/api/alarms/unacknowledged-count`
- `render` 统一注入计数,所有页面生效
- **P0-2 仪表盘重做**
- 统计卡片:今日告警/未处理告警/在线设备/检测路数
- SSE 实时告警流EventSource 连接 /api/alarms/stream新告警实时推入
- **P0-1 告警中心增强**
- DB 迁移:`alarm_records` 增加 `status`, `severity`, `acknowledged_at/by`, `resolved_at/by`
- 服务层:`AlarmRecord` 扩展 + SSE 广播 + 确认/关闭/改等级 API
- 页面:严重等级列 + 状态列 + 操作按钮 + 设备/规则类型下拉筛选
- **P0-5 监控页 HLS.js 本地化**
- 改动:`monitor.html:18` — CDN 引用改为本地 `/ui/assets/vendor/hls.min.js`
---
**已完成14/1593.3%** | **剩余P0-4登录** | **推迟P2-11分组**