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

9.1 KiB
Raw Permalink Blame History

产品化改进实施跟踪

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

进行中

已完成事项

2026-07-20

  • 新增:通道部署页配置同步状态指示

    • DeviceAssignmentBoardCard 新增 ConfigSynced 字段
    • pageDeviceAssignments:查询 Edge /v1/config/status 的 sha256config_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 版本号
    • SyncStandardModelsFromDirectorySyncStandardResourcesFromDirectoryRegisterResourceVersion 字段从固定 "auto" 改为调用 fileVersion
    • actionModelUpload 的默认版本也改为统一格式
    • 改动文件:model_management.go (+11)、resource_management.go (+3)、ui.go (+1)
  • P2-14.2 设备兼容性矩阵

    • BuildModelStatusBoard 新增 deviceCapabilities 参数,根据设备 /v1/capabilities 判断
    • ModelTypeCapability 函数映射模型类型→能力Keyface_detectionface_detface_recognitionface_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
    • actionFaceGalleryBuildBuild 成功后自动调用注册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分组