P2-14 模型管理简化: - 上传新模型:模态框上传 → 存盘 → SHA256 入库 → 可选自动分发 - 设备兼容性矩阵:根据 Edge /v1/capabilities 区分缺失 vs 不适用 - 版本管理:从固定 auto 改为文件修改时间戳 - 更新全部智能过滤:只推送缺失/不一致的设备 P2-15 人脸库优化: - Build 产出自动注册为标准资源,接入 Resource Task 分发系统 - 人脸库页面增加设备同步状态矩阵 + 批量同步按钮 - 人员搜索过滤 - 人脸质量评分反馈(构建诊断信息 + 通过率展示) 新增:通道部署页每台设备显示配置同步状态(对比 config_versions 与 Edge config SHA256) 文档:产品化改进计划、实施跟踪、模型与人脸库改进方案
166 lines
9.1 KiB
Markdown
166 lines
9.1 KiB
Markdown
# 产品化改进实施跟踪
|
||
|
||
## 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` handler:multipart 接收 → 存盘 `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/15(93.3%)** | **剩余:P0-4(登录)** | **推迟:P2-11(分组)**
|