Commit Graph

265 Commits

Author SHA1 Message Date
29db6be66d feat: device detail page shows real model/resource status with SHA256 comparison; filter unavailable features on console 2026-07-20 16:34:31 +08:00
0a9a1bd005 feat: console only shows device-supported features (filter unavailable) 2026-07-20 16:04:05 +08:00
ab32118f75 fix: remove /ui prefix globally, fix face-photo encoding, fix console video, default sort by time 2026-07-20 15:54:09 +08:00
b7757c7387 fix: normalize percent-encoding case in serveFacePhoto via PathUnescape; remove /ui prefix globally 2026-07-20 15:25:29 +08:00
32fcd43801 fix: actionFaceGalleryAdd now registers person/photo in SQLite DB 2026-07-20 15:01:31 +08:00
2b11844062 fix: 仪表盘页面标题同步为首页 2026-07-20 12:01:17 +08:00
a0c6df78b6 修改菜单名称和顺序 2026-07-20 11:36:58 +08:00
08ec88c45e feat: 视频源管理页增加 CSV 模板下载与批量导入 2026-07-20 10:52:25 +08:00
2369a1e3dc feat: 首次使用无检测通道时,仪表盘自动跳转到部署向导 2026-07-20 10:34:30 +08:00
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
ca5b687ee1 feat: config version history — auto-save on deploy, side-by-side JSON diff 2026-07-17 18:47:19 +08:00
232526de06 feat: CSV alarm export — supports filters, Excel-compatible with BOM 2026-07-17 18:16:10 +08:00
3adc1e1a43 refactor: register alarm API routes at /api/ level instead of /ui/api/ — consistent REST design 2026-07-17 18:09:46 +08:00
139baeef5f fix: add /ui prefix to alarm API calls — chart trending data was 404 2026-07-17 18:06:50 +08:00
a58c99a2f3 feat: alarm trend bar chart on dashboard — past 7 days, pure Canvas 2026-07-17 17:55:36 +08:00
a594e05692 refactor: unify terminology — 视频通道→检测通道, 场景→场景管理, 人脸库管理→人脸库 2026-07-17 17:51:45 +08:00
c71922a05d fix: hide static msg div when toast shows, prevent double display 2026-07-17 17:45:14 +08:00
53577b0ea6 feat: toast notifications replace URL parameter messages — auto-dismiss, no page reload 2026-07-17 17:43:56 +08:00
b2fbae9e4b feat: device row warning highlight when online but media server not running 2026-07-17 17:39:53 +08:00
bc5bd7d3fc fix: alarm badge shows 99+ on initial render for counts above 99 2026-07-17 17:36:16 +08:00
3d7313585c feat: alarm notification — topbar bell badge + title flash with unacknowledged count 2026-07-17 17:32:19 +08:00
13d22ce848 fix: wizard camera picker — select from existing video sources dropdown 2026-07-17 17:23:50 +08:00
bf0fed23f9 fix: wizard reads device channels from agent /v1/preview/channels instead of SQLite 2026-07-17 17:21:28 +08:00
b50ccda82d fix: wizard step 2 — separate assigned/added cameras, show loading state for features 2026-07-17 17:06:59 +08:00
3f3a2a0987 feat: deployment wizard — guided 3-step device setup for standard mode 2026-07-17 16:59:00 +08:00
59a18f3e62 feat: dashboard redesign with real-time alarm stream via SSE 2026-07-17 16:43:13 +08:00
3f6f3ddbb5 feat: alarm center enhancement — workflow, severity, filters, SSE 2026-07-17 16:35:42 +08:00
27584f931a fix: use vendored hls.js instead of CDN in monitor page 2026-07-17 16:21:31 +08:00
aa76607092 feat: add standard/expert mode toggle for sidebar menu
- Add mode toggle switch at sidebar bottom (标准/专家)
- Hide complex system config items in standard mode
- Remove '主模块' nav section header
- Persist mode selection in localStorage
2026-07-17 11:46:37 +08:00
ccde3aeea6 fix: update import path in alarm_collector.go (p0-dashboard merge) 2026-07-17 11:10:16 +08:00
d422ffd48e refactor: rebrand to SafeSight Control (merge p0-dashboard) 2026-07-17 11:08:47 +08:00
2921c180cb 修改平台名称和界面,增加了项目介绍文档和部分代码注释;为申请软著增加的代码文件。 2026-06-10 14:31:55 +08:00
7a2e82db0d fix: default alarm range to past 7 days, '全部' from 2020 2026-05-12 17:25:35 +08:00
ad98dee68f fix: restore '全部' link, keep per_page on same row 2026-05-12 17:16:36 +08:00
bc085533a1 fix: standard pagination with ellipsis (1 … cur±2 … N) 2026-05-12 17:12:45 +08:00
0f4c75fe26 fix: preserve per_page param in pagination links 2026-05-12 17:10:56 +08:00
b4a9772211 fix: pagination shows ±3 pages with prev/next arrows, 20 per page default with selector 2026-05-12 17:09:32 +08:00
8f68fbbb0d chore: remove redundant '告警中心' title from alarms page 2026-05-12 17:05:55 +08:00
e5922ea6c0 feat: add week/month quick links to alarms page, remove subtitle 2026-05-12 17:05:14 +08:00
316a05aec4 fix: add '全部' link and improve empty state message on alarms page 2026-05-12 17:03:27 +08:00
74ca578483 feat: alarm page date filter, pagination, auto-cleanup
- 告警页增加日期范围筛选(默认今天),50 条/页分页
- AlarmCollector.GetFiltered 支持 from/to/limit/offset
- alarm_retention_days 配置项(默认 30 天),超期自动清理
2026-05-12 16:58:56 +08:00
65eb988905 fix: move form inside device panel, use display:contents to preserve tab layout 2026-05-12 16:50:17 +08:00
84b8b1c65a fix: remove transactions causing SQLITE_BUSY, add coding rules
- persistTask: 去掉事务,每个 Exec 原子即可
- saveAsset(profiles): 去掉事务,profile 和 units 分步保存
- CLAUDE.md: 加两条规则——不用事务除非必要;调试只加日志不改代码
2026-05-12 16:43:44 +08:00
700b2246c7 fix: confirmation dialog fires only once (remove duplicate listener), remove debug log 2026-05-12 15:38:32 +08:00
1a15ab80d6 fix: clear URL params after showing status, so refresh doesn't repeat stale messages 2026-05-12 15:26:42 +08:00
49ab6ae688 fix: form element now wraps device panel so checkboxes are submitted
之前 <form> 只包裹按钮,checkbox/hidden input 在表单外,
导致 submit() 提交空数据。
2026-05-12 15:21:29 +08:00
418bf3c80b fix: persist features only after pipeline success, not before
actionConsoleSave: 先跑流水线,成功后再存 DB。
空功能提交不再清空 DB,改为提示用户。
2026-05-12 15:16:49 +08:00
67e8c3617a fix: console status display — task info overridden by msg 2026-05-12 15:10:34 +08:00
ea955eb265 revert: remove config_apply retry (500 is fatal)
500 是 agent 端 media-server reload 超时导致的致命错误,
不应在 managerd 端重试。根因在 agent 的 10s 超时过短。
2026-05-12 14:54:57 +08:00
f2b3941e4a fix: console stays after deploy, auto-refresh, config retry
- 下发后留在控制台,显示状态提示,6秒自动刷新
- 任务页 SSE 自动连接(无需手动点击)
- 总览页有执行中任务时自动刷新
- config_apply 增加 3 次重试(agent 500 时)
2026-05-12 14:51:59 +08:00
15f6f91fb6 feat: task timestamps, dirty state, confirmation dialog
- Task 模型增加 CreatedAt/CompletedAt,DB 读取和快照同步
- 总览页最近任务显示时间,限制5条,增加"更多 →"链接
- 任务中心增加创建时间/完成时间列
- 管控台"保存并下发"按钮:修改功能或视频源后才激活
- 下发前弹出变更摘要确认对话框
- 下发后回到管控台并显示任务ID
2026-05-12 14:26:10 +08:00
7eca9454b0 feat: DB-agent feature sync with conflict detection
- ConsoleFeature 增加 Available/Conflict 字段
- pageConsole 显示 agent 全部能力(含不可用的),不可用项 disabled
- DB 已启用但 agent 不可用时标记为冲突 ⚠
- 不可用功能 hover 显示原因
2026-05-12 13:57:03 +08:00
700d964524 feat: device capabilities from agent /v1/capabilities
Agent 新增 /v1/capabilities 接口,返回设备检测能力列表。
Managerd 控制台查询此接口,仅显示设备真实支持的功能。

- Agent: capabilities.go — 根据插件节点类型映射能力
- Managerd: pageConsole 查询 /v1/capabilities 过滤可选功能
- ConsoleFeature 增加 Description 字段,hover 显示说明
- 旧 agent 无此接口时回退为显示已持久化的功能
2026-05-12 13:52:53 +08:00
286dcaa945 feat: persist device features to DB as source of truth
- device_features 表:持久化设备检测功能选择
- pageConsole 从 DB 读取功能选择(非从模板反推)
- actionConsoleSave 先存 DB 再从 DB 读取运行流水线
- 模板选择改为最精确匹配(单功能只用该功能模板)
- 修复内存指标解析(补充 memory 字段)
2026-05-12 13:40:37 +08:00
25cf456047 feat: console one-click auto-config pipeline
管控台一键自动配置:勾选检测功能 + 分配视频源 → 自动生成配置并下发

新增:
- FeatureRegistry: 功能→模板映射与选择算法
- template_composer: 多模板 DAG 浅合并
- AutoConfigService: 完整流水线
- console.html: 视频源分配交互

修改:
- actionConsoleSave: stub → 完整自动配置编排
- pageConsole: 修复功能勾选回显 + 内存指标解析
- main.go: 注入 AutoConfigService
- .gitignore: /managerd 只匹配根目录二进制
2026-05-12 13:26:49 +08:00
59de94bfae 把设备性能移到管控台 2026-05-12 11:26:36 +08:00
57b9ec3523 增加管控台 2026-05-12 10:13:20 +08:00
62d73f36e2 refactor: 合并第三方服务类型,去重字段
1. token_service 合并到 alarm_service
   - 去掉重复的 username/password/tenant_code
   - alarm_service 保留 get_token_url、put_message_url、tenant_code 三个有效字段
   - token_service_main 槽位绑定类型改为接受 alarm_service

2. 第三方服务页支持按类型动态显示字段(JS控制)
   - 添加自定义(custom)类型,使用 JSON 文本域
   - custom 类型支持槽位解析(resolvedServiceBinding)

3. 后端代码清理
   - 移除 token_service 类型相关逻辑
   - integration_type_label 去掉认证服务
2026-05-09 12:31:09 +08:00
ce18c85eba feat: 标准调试参数 & 克隆不立即保存
1. 新增标准调试参数
   - templates/standard_overlays/ 目录下导入 std_face_debug、
     std_test_sensitive、std_production_quiet 三个标准调试参数
   - 启动时通过 ImportStandardOverlaysFromDir 自动导入 SQLite
   - 支持 std_ 前缀只读保护,不可直接编辑/删除

2. 复制后不立即保存
   - 调试参数克隆:重定向到新建页预填数据,点击保存才入库
   - 识别模板克隆:重定向到模板编辑页预填,点击创建/进入可视化编辑才入库
   - 可视化编辑也支持 clone_source 参数,编辑保存时创建新模板

3. 简化调试参数 JSON 结构
   - 去掉 instance_overrides 层级,改为顶层 override 键
   - 运行时渲染兼容新旧两种格式
   - UI 去掉目标/目标数量字段

4. 清理死代码
   - 移除从零新建空白调试参数/模板的代码路径
2026-05-09 11:39:02 +08:00
c6c38f1e5d fix: keep system nav open for face-gallery, alarms, monitor 2026-05-08 20:22:09 +08:00
7ece6a04fb fix: use --red instead of --danger-soft-text for metric bars 2026-05-08 20:16:22 +08:00
f0465049f2 feat: progress bars with color coding for device metrics 2026-05-08 20:13:12 +08:00
b7268212e3 chore: convert all tabs to spaces 2026-05-08 20:05:40 +08:00
1bcd9ae3a5 fix: add json tags to inner struct fields for metrics parsing 2026-05-08 20:04:15 +08:00
08712814d9 fix: add json tags for memory fields in metrics struct 2026-05-08 19:50:22 +08:00
807561b908 fix: use form POST instead of fetch for face gallery delete 2026-05-08 19:46:50 +08:00
c2588e7785 refactor: server-side device metrics, no JS 2026-05-08 19:45:26 +08:00
0dede50f9e fix: proxy device metrics through backend to avoid CORS 2026-05-08 19:41:42 +08:00
0d55213101 feat: display NPU on dashboard metrics 2026-05-08 19:39:02 +08:00
4aab7135bc fix: correct label for today alarm stat 2026-05-08 19:35:26 +08:00
ecb5a08d2d feat: today alarm count on dashboard 2026-05-08 19:32:14 +08:00
12276a7acb feat: dashboard device metrics card 2026-05-08 19:27:22 +08:00
6560eb565c fix: always show attention devices card 2026-05-08 13:02:07 +08:00
bcd5da575e fix: update dashboard test for new layout 2026-05-08 13:00:51 +08:00
c7da7c2290 feat: dashboard with real-time alarm feed 2026-05-08 12:59:44 +08:00
8a335b6f73 refactor: single loop for import, skip duplicate files and DB records 2026-05-08 12:55:04 +08:00
f8d1083b2d fix: check duplicate photo in AddPhoto 2026-05-08 12:53:06 +08:00
f32fc41be3 fix: fetch-based photo delete with JSON response 2026-05-08 12:47:55 +08:00
f14ce9b255 fix: skip duplicate photos during import 2026-05-08 12:40:37 +08:00
291c3a97de fix: clean JS confirm via delPhoto function 2026-05-08 12:38:46 +08:00
dda5e1ffd7 feat: add confirm before deleting photo in edit modal 2026-05-08 12:35:56 +08:00
cddde87a93 fix: capture person in variable to access PhotoIDs in range 2026-05-08 12:33:39 +08:00
99233e5e7f fix: use .PhotoIDs instead of $.PhotoIDs in range 2026-05-08 12:31:35 +08:00
cb1ce4deaa feat: real photo delete from DB and disk, pass photo IDs to edit modal 2026-05-08 12:29:10 +08:00
0751adb564 fix: clean rewrite, all JS via data-attrs and forEach 2026-05-08 12:23:10 +08:00
f16501544e fix: escape quotes properly in modal confirm 2026-05-08 12:20:59 +08:00
21831af218 fix: use double quotes for confirm in edit modal JS string 2026-05-08 12:19:00 +08:00
a7caf483f9 fix: use data attributes for edit button to avoid onclick quoting issues 2026-05-08 12:16:41 +08:00
d5fee22e7a fix: use HTML entities for quotes in onclick 2026-05-08 12:15:07 +08:00
f849df4540 fix: add confirm before deleting photo in edit modal 2026-05-08 12:12:11 +08:00
e7181bde7d fix: use requestSubmit to trigger form onsubmit confirm 2026-05-08 12:10:53 +08:00
226196d90e fix: clean rewrite with span icons, remove important 2026-05-08 12:08:35 +08:00
93a514b8ac fix: use span instead of button for icon buttons 2026-05-08 12:05:36 +08:00
c16e9d94c4 fix: important on btn-icon sizing to override vendor CSS 2026-05-08 12:04:51 +08:00
9126bbcf4a refactor: standalone btn-icon class, no btn inheritance 2026-05-08 12:02:49 +08:00
468abeeec0 fix: use important for btn-icon to force override 2026-05-08 12:01:33 +08:00
0ca2bd6d41 fix: use forEach for edit photos, cleaner JS no confirm 2026-05-08 11:55:06 +08:00
5c76022f58 fix: bump CSS cache version 2026-05-08 11:49:49 +08:00
9093cb39cc fix: btn-icon min-height to 0 2026-05-08 11:47:58 +08:00
c816a7b99d feat: add .btn-icon CSS class for compact icon buttons 2026-05-08 11:43:33 +08:00