|
|
565e4bb3d6
|
feat(control): 看板页视频源原因简化显示
看板窗口小,原因改为类型级摘要(去掉 URL/细节):
'视频源异常:RTSP 打开失败' (由 last_error 提取错误类型前缀)
hlsError 兜底也显示具体原因(有数据时),不再模糊提示
'请检查视频源'。监控页保留完整原因。
|
2026-08-02 13:10:59 +08:00 |
|
|
|
7fe93b58d0
|
feat(control): 监控页视频源提示改用输出层面措辞
监控页看的是 HLS 输出,原显示'离线+RTSP打开失败'会误导
为'在看RTSP源'。改为:
标题: 无视频输出(输出层面事实)
原因: 视频源异常:RTSP打开失败(...)(标注根因,不丢细节)
看板页保持'离线'(设备运维视角,用户认可)。
|
2026-08-02 13:04:08 +08:00 |
|
|
|
b19c0392f7
|
style(control): 视频源状态覆盖层颜色统一用 scheme 变量
- 字体 20px→14px(不刻意放大,与整体 UI 协调)
- 颜色改用 --green/--red/--amber/--muted(随 scheme 主题切换)
- 详情页视频源错误提示改用 --danger-soft/--danger-soft-text
(此前用了未定义的 --danger 和硬编码 rgba)
|
2026-08-02 12:54:58 +08:00 |
|
|
|
2bb8ed1cdb
|
feat(control): 运行看板/视频监控页视频源状态覆盖层
- 新增 /api/monitor/video-status 接口(复用 FetchVideoSourceStatus)
- console.html: 设备视图+视频视图视频窗口正中显示状态覆盖层
离线(红字+原因)/连接中/在线(隐藏)/状态未知
- monitor.html: 视频监控页同样处理,HLS 播放失败显示'无视频输出'
- HLS fatal 错误兜底提示(即使状态接口不可用)
|
2026-08-02 12:49:22 +08:00 |
|
|
|
c75228c88d
|
fix(control): 视频源轮询不依赖 Online 标志 + 移除调试
根因: offline_after_ms(10s) < discovery 轮询间隔(30s),
设备被 pruning 误标离线导致 graph 轮询空转。
修复: 轮询遍历所有设备尝试拉取(agent 请求失败自然跳过),
同时修正 81 配置 offline_after_ms=90s。
UpdateDevice 复用对象保留动态字段(上轮)。
|
2026-08-02 12:40:36 +08:00 |
|
|
|
452d49b8bc
|
debug: gp 日志2
|
2026-08-02 12:37:53 +08:00 |
|
|
|
497343aac6
|
debug: 列表页 VS 调试
|
2026-08-02 12:36:30 +08:00 |
|
|
|
5773b6acd2
|
fix(control): UpdateDevice 复用已有设备对象,保留视频源统计
discovery 每轮用新 Device 替换 map 指针,graph 轮询(30s)更新的
VideoSourceDown 被 discovery(33s) 的指针替换覆盖,列表警告恒不显示。
改为 UpdateDevice 在设备已存在时合并字段到已有对象,
保留 VideoSource*/Graphs/alias,仅更新发现数据。
|
2026-08-02 12:35:08 +08:00 |
|
|
|
12414b4c33
|
debug: 轮询 tick 日志
|
2026-08-02 12:30:06 +08:00 |
|
|
|
b267e7e9e8
|
debug: registry graph 轮询日志(临时)
|
2026-08-02 12:28:40 +08:00 |
|
|
|
a906113221
|
fix(control): 视频源统计更新到 registry 当前设备对象
discovery 每轮会替换设备指针,graph 轮询更新旧指针导致
UI 拿到新指针(统计恒 0)。改为按 device_id 更新 registry
中当前对象。
|
2026-08-02 12:26:05 +08:00 |
|
|
|
db7284d2e5
|
feat(control): 设备列表视频源离线警告
- models.Device 增加视频源统计字段(内存/UI用)
- registry graph 轮询(30s)顺带解析 input_rtsp 在线/离线数
- 设备列表状态列: 视频源 N/M 离线 红色警告 pill(悬停显示明细)
|
2026-08-02 12:21:38 +08:00 |
|
|
|
c92ad41bd1
|
feat(control): 视频源状态检测与展示
- 新增 service.FetchVideoSourceStatus: 调 agent /v1/graphs 解析
input_rtsp 节点 (custom_metrics: streaming/last_error/fail_count)
- 设备详情页运行与服务区块展示每个视频源:
在线/离线 + 失败原因(如 RTSP 打开失败: 404) + 帧率 + 历史失败次数
- 视频源离线时红色提示,与媒体服务状态区分
|
2026-08-02 12:20:13 +08:00 |
|
|
|
dca065e6cc
|
feat(media): /api/graphs 列表返回完整节点快照(含 custom_metrics)
之前列表接口手写简化输出(仅 name/running/fps),无节点信息;
改为 GraphSnapshotJson 完整输出,一次请求即可获取全部节点状态
(供管理端视频源在线/离线检测)
|
2026-08-02 12:18:41 +08:00 |
|
|
|
d80a62aabf
|
feat(media): input_rtsp 视频源状态检测与上报
- 节点维护 streaming/fail_count/last_error/last_error_at/ok_at 状态
- 拉流失败分类上报具体原因:
RTSP 打开失败(带 av_strerror 文本)/无视频流/编码不支持/解码器失败/读取中断
- 实现 GetCustomMetrics,经 /api/graphs 节点快照暴露
(custom_metrics: type/url/streaming/online/fail_count/last_error/时间戳)
|
2026-08-02 12:17:17 +08:00 |
|
|
|
aae5bc36de
|
fix(agent): systemctl 模式 Status 补充失败原因(LastError)
enable=false 时走 NewSystemCtlController,其 Status() 在服务未运行时
只返回 Running:false 无原因。现通过 systemctl show 获取
ActiveState/SubState/Result/ExecMainStatus/NRestarts,
给出可读提示: '启动失败(退出码 X, 已重启 N 次)' 或 '未运行(systemctl: x/y)'
|
2026-08-02 12:10:44 +08:00 |
|
|
|
6a995db6e2
|
fix(ui): 服务状态提示优化 - 区分故障原因,透传媒体错误
- agent: procctl.Status 增加 LastError(未检测到进程/进程已退出原因),
config/status 透传 media.last_error
- control: ConfigStatusMediaServer 增加 LastError 字段
- control: loadConfigStatus 错误分类(agent 未响应 vs HTTP 错误,含 IP:端口)
- UI 文案: '待确认/未确认' -> '状态未知',媒体服务行显示具体错误
用户可区分: 服务故障(带原因) vs 配置未取到 vs 视频源问题
|
2026-08-02 12:06:52 +08:00 |
|
|
|
80c1e63c95
|
docs: 新增根级 AGENTS.md 仓库总规范
pi 从 cwd 向上加载 AGENTS.md 并拼接: 根目录工作时不会加载子目录规范,
补根级总览(仓库结构/两端关系/工作流),指向 edge/control 各自细则
|
2026-08-02 11:45:49 +08:00 |
|
|
|
cefc155614
|
chore: 统一 CHANGELOG 到根目录,更新 control/AGENTS.md 过时内容
- 根目录新增 CHANGELOG.md(Keep a Changelog 风格):
v1.0.0 里程碑(单仓库合并/断电保护/产品镜像/版本机制)+ 早期历史迁移
- 删除 edge/CHANGELOG.md(内容并入根)
- VERSION 保持 edge/ + control/ 两端独立(构建机制依赖,发布节奏不同)
- control/AGENTS.md: managerd→safesightd、旧路径→新单仓库路径、文档引用更新
|
2026-08-02 11:43:21 +08:00 |
|
|
|
29d9ef5d0d
|
refactor: 项目结构梳理 - 设备端/管理端对称布局
仓库结构:
edge/ 设备端(原根目录设备端代码整体移入)
control/ 管理端(清理后)
docs/ 文档(PRD 移入 design/)
README.md 根导航(新增)
清理:
- control/.brainstorm 临时草稿删除
- control 根级重复文档(API表/PRD_04)并入 docs/design/
- control/plan.md -> docs/implementation/control-plan.md
- control/safesightd-linux-arm64 二进制取消版本控制(.gitignore)
- edge/transform 模型转换产物归入 models/,onnx/pt 大源文件取消跟踪(.gitignore)
- Readme.md(PRD) -> docs/design/PRD_Product_v1.2.md(避开 README 大小写冲突)
更新:
- 根 README.md 导航、docs/README.md 文档索引
- deployment.md/检查表路径加 edge/ 前缀
- .gitignore 重写(edge/control 分区规则)
|
2026-08-02 11:39:54 +08:00 |
|
|
|
02be9ddd47
|
docs: 删除过时命令草稿 命令.md
- 该文档为旧项目(Rk3588Sys/rk3588-agent/managerd)时代命令备忘,
引用的项目名/路径/二进制名全部过时,比已删的 guide.md 更旧
- 唯一仍有效的模型转换命令(pt2rknn_yolov8.py)已迁移至 guides/models.md
|
2026-08-02 11:34:46 +08:00 |
|
|
|
06eab42403
|
docs: 清理过时文档,简化目录结构
删除(过时/重复/未采用):
- archive/ 源码片段 dump(2)
- workshop_ai/ 合成数据标注临时工作(6, 2026-04 阶段已过)
- design/theme-preview-*.html UI主题预览(3)
- design/PRD_02 React前端PRD(实际UI用Go模板, 未采用)
- requirements/guide.md 过时命令笔记(与guides/命令.md重复)
合并: architecture/ 2个文档并入 design/
目录由 10 个子目录简化为 7 个:
deployment requirements design implementation bugfix testing guides
|
2026-08-02 11:32:22 +08:00 |
|
|
|
910febe703
|
docs: 部署文档归入 docs/deployment/ 子目录
- deployment/control-deployment/检查表/离线部署 4 个部署文档统一移入
- 更新 README 导航、部署手册互引、检查表、deploy.sh 提示中的路径
|
2026-08-02 11:30:03 +08:00 |
|
|
|
007a996c37
|
docs: 规范化文档目录结构
- 根 docs/ 保留产品入口文档(README/部署手册/检查表/离线部署)
- 按内容归类到子目录:
requirements/(需求) design/(设计/接口/方案/UI) architecture/(架构)
implementation/(实施/计划/跟踪) bugfix/(缺陷记录) testing/(测试)
guides/(操作指南:配置/模型/命令/依赖/调试) archive/(源码片段归档)
- 删除 superpowers 目录(edge 与 control 两处, 含历史设计草稿)
- 更新 docs/README.md 导航与新结构一致
|
2026-08-02 11:28:51 +08:00 |
|
|
|
dc62cf066c
|
fix: 恢复被覆盖的 Readme.md(PRD),导航文档移至 docs/README.md
- Windows 大小写不敏感导致新 README.md 覆盖了原有 Readme.md(PRD 1305行)
- 从 git 历史恢复 PRD,导航内容另存为 docs/README.md
|
2026-08-02 11:15:33 +08:00 |
|
|
|
8d8ba65eef
|
docs: 单仓库整理 - 文档统一到根 docs/ + README
- 检查表/离线部署文档/管理端部署指南移入根 docs/
- control/docs/deployment.md 更名为 control-deployment.md(避免与设备端部署手册混淆)
- 新增 README.md:仓库结构、版本机制、快速开始、合并历史说明
- control-deployment.md 适配新仓库路径(cd control)
|
2026-08-02 11:14:52 +08:00 |
|
|
|
98e375dc36
|
chore: 合并 safesight-control 仓库为 control/ 子目录
项目合并为单仓库:设备端(根) + 管理端(control/)。
两端 git 历史完整保留(git subtree 合并)。
git-subtree-dir: control
git-subtree-mainline: 923ab10d5c
git-subtree-split: 70738edb31
|
2026-08-02 11:13:26 +08:00 |
|
|
|
70738edb31
|
feat(control): 双层版本模型 - 语义化主版本显示
- 新增 VERSION 文件(1.0.0)作为 control 主版本号来源
- UI 版本展示分层: 列表页/详情页/footer 显示 V1.0.0, 构建号悬停可见
- init() 兜底: 未注入时 0.0.0
|
2026-08-01 17:16:13 +08:00 |
|
|
|
923ab10d5c
|
feat(edge): 双层版本模型 - 语义化主版本 + 构建号
- 新增 VERSION 文件(1.0.0)作为主版本号来源,发版改文件即可,不依赖 git tag
- agent: Version=主版本(VERSION 文件), BuildID=构建号(时间戳), GitSHA 保留
- media: 版本输出 v1.0.0 (build YYYYMMDD.HHMMSS, git xxxxxxx)
- init() 兜底: 主版本 0.0.0 / 构建号自动生成,产品上无占位值
|
2026-08-01 17:16:09 +08:00 |
|
|
|
2a6e2ea707
|
fix(control): 消除 dev 占位版本号,init() 兜底为构建时间
即使构建时忘记注入 ldflags,footer 也不会显示占位版本
|
2026-08-01 17:01:03 +08:00 |
|
|
|
140018ac4d
|
fix(edge): 消除 0.0.0-dev 占位版本号,init() 兜底为构建时间
- agent Version/BuildID/GitSHA 默认值改为空+init() 自动填充构建时间
即使构建时忘记注入 ldflags,产品上也不会出现占位版本号
- version.h 默认值改为 unknown
|
2026-08-01 17:01:00 +08:00 |
|
|
|
a4e179f30d
|
fix(control): 版本号改为构建日期时间,不依赖 git tag
- control Version = YYYYMMDD.HHMMSS(构建时间)
- 大量小版本迭代场景:无需打 tag,UI footer 版本号直接可读新旧
|
2026-08-01 16:59:07 +08:00 |
|
|
|
75098ce81e
|
fix(edge): 版本号改为构建日期时间,不依赖 git tag
- agent Version/BuildID = YYYYMMDD.HHMMSS(构建时间),GitSHA 保留短 sha
- media(C++) 版本同样注入构建时间(CMake 支持 -DRK_PROJECT_VERSION 覆盖)
- 适应大量小版本迭代:不再依赖 git tag,UI 版本号直接可读新旧
|
2026-08-01 16:59:03 +08:00 |
|
|
|
c6da0a6c6d
|
feat(control): 版本机制打通,UI 展示 agent/引擎/control 真实版本
- ui.go: 版本号由硬编码常量改为可注入变量( -X ...web.Version )
- 新增 service.FetchDeviceVersions: 调用 edge /v1/versions 采集
agent 版本/build_id/git_sha + media 引擎版本 + 设备模型数
- 设备详情页: 新增引擎版本/构建信息/模型数量展示
- 设备列表页: 新增版本列(含 build/git 悬停提示)
- 构建脚本(3处): 注入 control 版本号(git describe)
- 新增模板语法测试(43个模板防回归)
|
2026-08-01 16:54:10 +08:00 |
|
|
|
201ad65164
|
fix(edge): 构建时注入版本信息,修复设备版本恒为 0.0.0-dev
- build.sh / package-offline.sh: agent 编译注入 main.Version/BuildID/BuildType/GitSHA
(版本号取 git describe, build_id 取构建时间)
- build.sh: media(C++) 编译注入 RK_GIT_SHA
- 修复后 control 设备详情/列表可显示真实版本,不再是占位的 0.0.0-dev
|
2026-08-01 16:54:07 +08:00 |
|
|
|
a1064961cc
|
docs: 客户现场部署检查表移入 control 仓库
- 新增 docs/客户现场部署检查表.md
- 更新为产品镜像批量生产流程(16G 母卡 -> Etcher 批量烧录 -> init-device.sh 初始化)
- 新增断电保护(overlayroot)维护备忘章节
|
2026-08-01 16:46:44 +08:00 |
|
|
|
227dc04004
|
feat(edge): 断电保护(overlayroot+/data)与产品镜像批量生产流程
- 新增 setup-overlayroot.sh: 一键断电保护
- overlayroot(tmpfs) 保护根分区, 断电不再损坏文件系统
- 自动建 /data 独立分区 + fstab bind 挂载运行数据
- 迁移存量数据, journald 内存日志限容
- disable/enable 一键切换维护模式(适配香橙派 U-Boot/extlinux, 无 GRUB)
- 新增 prepare-image.sh: 母卡出厂化清理
- 清 machine-id/SSH 密钥/device_id/hostname/日志
- 防误: 检测 overlayroot 启用状态, 保证镜像为可写出厂状态
- 新增 init-device.sh: 每台初始化
- 主机名/静态IP(netplan)/身份验证
- /data 自动 growpart 扩容到整卡剩余空间(64G 产品卡)
- 统一启用断电保护
- deploy.sh/ops.sh/package-offline.sh: 集成新脚本
- ops.sh 新增 overlay-status/disable/enable/verify
- docs/deployment.md: 重写为主流程文档
- 产品镜像批量生产(16G 母卡->小镜像->Etcher 批量烧录->每台初始化)
- 移除废弃的克隆卡流程
|
2026-08-01 16:45:47 +08:00 |
|
|
|
e931e4d95b
|
feat: mock alarm server logs full JSON body
|
2026-07-31 15:18:46 +08:00 |
|
|
|
0c52d01c0b
|
fix: channelNo defaults to video source name, cleanup orphan units, disable date prefix in template
|
2026-07-31 15:18:27 +08:00 |
|
|
|
decc980665
|
docs: add third-party alarm API spec from customer
|
2026-07-30 12:43:40 +08:00 |
|
|
|
eaee750443
|
docs: add rule - deploy must check systemctl is-active after stop, no fixed sleep
|
2026-07-30 11:31:04 +08:00 |
|
|
|
35c413367f
|
docs: add update steps and empty config fix to debug guide
|
2026-07-29 23:12:35 +08:00 |
|
|
|
9ed574050f
|
fix: save last_good.json on successful reload, no rollback on failure
|
2026-07-29 23:03:11 +08:00 |
|
|
|
f721bb8d9f
|
fix: remove config rollback from normal deploy path - false restores caused by slow graph rebuild
|
2026-07-29 23:00:51 +08:00 |
|
|
|
33a7367ecd
|
fix: add InjectIntegrationsIntoConfig to device detail deploy path; docs: add edge config check command
|
2026-07-29 22:35:36 +08:00 |
|
|
|
69ae1803ad
|
docs: clarify journalctl -f equals tail -f, edge-server hot-reloads config
|
2026-07-29 21:58:16 +08:00 |
|
|
|
267ec2c237
|
docs: add multi-line bash continuation rule to AGENTS.md
|
2026-07-29 21:53:16 +08:00 |
|
|
|
805814fcdf
|
docs: simplify debug guide, clean multi-line commands
|
2026-07-29 21:52:10 +08:00 |
|
|
|
25734f5775
|
docs: 客户现场第三方接口调试指南
|
2026-07-29 21:44:21 +08:00 |
|
|
|
24386d9cf0
|
chore: delete 29 legacy skipped tests, fix storage test build error
|
2026-07-27 21:11:20 +08:00 |
|