# 产品化改进实施跟踪 ## 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(分组)**