87c75608f1
docs: camera_code改造测试报告
...
添加完整的测试报告文档,包括:
- 测试概述与环境要求
- 数据库迁移验证步骤
- 功能测试用例(摄像头创建、ROI截图、配置推送)
- 数据一致性测试
- 异常测试场景
- 性能测试
- 集成测试场景
- 回归测试
- 测试清单与风险评估
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 11:49:39 +08:00
450afb8112
feat(aiot): 配置推送使用camera_code查询StreamProxy
...
- 修改 buildFlatConfig 方法,使用 camera_code 查询 StreamProxy
- 注入 StreamProxyMapper 依赖
- 优先使用 StreamProxy 的 srcUrl 作为 rtsp_url
- 添加 camera_code 字段,保留 camera_id 字段向后兼容
- 当 StreamProxy 不存在时,降级使用 MediaServer 构建 URL
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 11:09:50 +08:00
6d1e1d0bc3
feat(aiot): snap接口改用cameraCode参数查询StreamProxy
...
- 修改 AiRoiController.getSnap 方法参数从 app/stream 改为 cameraCode
- 注入 IStreamProxyService 服务
- 通过 streamProxyService.getStreamProxyByCameraCode() 查询 StreamProxy
- 从 StreamProxy 对象获取 app 和 stream 字段
- 增加参数校验,未找到对应代理时返回 404
- 更新日志输出包含 cameraCode 信息
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 11:07:13 +08:00
3792a30616
feat(streamProxy): 实现camera_code自动生成和查询逻辑
...
核心变更:
1. 新增 generateCameraCode() 方法:生成格式为 cam_xxxxxxxxxxxx 的唯一编码
2. 修改 add() 方法:
- 自动生成 camera_code 并设置 app = camera_code
- 实现重试机制(最多3次)处理唯一键冲突
- 确保 ZLM URL 路径为纯 ASCII,避免中文编码问题
3. 实现 getStreamProxyByCameraCode() 方法:根据 camera_code 查询代理对象
技术细节:
- 添加 UUID 和 DuplicateKeyException 依赖
- 使用事务确保数据一致性
- 空值检查防止空指针异常
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 11:02:12 +08:00
754677e11d
feat(streamProxy): Service接口新增getStreamProxyByCameraCode方法
...
- 在 IStreamProxyService 接口中新增 getStreamProxyByCameraCode(String cameraCode) 方法
- 支持根据 camera_code 查询拉流代理对象
- 为后续前端改造提供接口支持
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 11:02:01 +08:00
2b61113bab
feat(streamProxy): Provider增加camera_code的SQL处理
...
1. StreamProxyMapper.add: INSERT语句增加camera_code字段
2. StreamProxyMapper.update: 确认不更新camera_code(永不修改原则)
3. StreamProxyProvider.selectAll: 查询条件增加camera_code模糊匹配
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 10:59:22 +08:00
2e89c2a625
feat(streamProxy): Mapper新增selectByCameraCode查询方法
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 10:57:02 +08:00
b542432dc4
feat(streamProxy): StreamProxy增加cameraCode字段
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 10:52:59 +08:00
0c80377264
fix(aiot): 迁移脚本增加camera_code格式验证
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 10:47:59 +08:00
7312912178
feat(aiot): 添加camera_code字段迁移脚本 - 解决摄像头标识问题
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-13 10:46:08 +08:00
1ca13b5cc9
docs(aiot): 添加告警时间字段语义说明和迁移脚本
...
添加 alarm_event 表字段语义说明文档
字段说明:
- event_time: 告警触发时间
- first_frame_time: 离开ROI时间
- last_frame_time: 回岗时间 (NULL = still away)
- duration_ms: 持续时长 (NULL = still away)
包含验证SQL查询和部署说明
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-13 09:56:32 +08:00
346e0fc5fe
feat(aiot): 数据库schema更新 - 添加离岗倒计时参数
...
问题描述:
- 离岗检测算法param_schema缺少leave_countdown_sec参数
- 部分默认值不符合业务需求
修改内容:
1. 初始化-mysql-aiot.sql (Line 76)
- leave_post算法新增参数:
"leave_countdown_sec": {"type":"int","default":300,"min":0}
- 修正默认值:
confirm_leave_sec: 10 → 30秒
cooldown_sec: 300 → 600秒
2. 新增迁移脚本:迁移-添加离岗倒计时参数.sql
- UPDATE wvp_ai_algorithm表的param_schema
- 适用于已部署的生产环境数据库升级
参数说明:
- confirm_on_duty_sec: 上岗确认期(默认10秒)
- confirm_leave_sec: 离岗确认期(默认30秒)
- leave_countdown_sec: 离岗倒计时(默认300秒=5分钟)
- cooldown_sec: 告警冷却期(默认600秒=10分钟)
业务流程:
人离开 → 30s确认离岗 → 300s倒计时 → 触发告警
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-02-12 15:06:59 +08:00
197f484482
fix(aiot): 更新离岗检测 confirm_leave_sec 默认值为30秒
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-11 10:01:25 +08:00
fe844ad123
feat(aiot): 全量配置推送 + ZLM mediaServerId 修正 + 告警参数更新
...
- 新增 push-all 接口,支持一次性推送全部 ROI 和算法配置到 Edge
- 修复 ZLM mediaServerId 不匹配(polaris → zlmediakit-local)
- 告警算法默认参数更新:离岗冷却 300→600s,入侵冷却 120→300s
- 启用 Edge HTTP 直推(ai.service.enabled=true, url=127.0.0.1:9001)
- 新增 queryAll 方法支持全量 ROI 和绑定查询
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-11 09:57:09 +08:00
53d0b2bb1f
feat(aiot): 实现配置直推Edge - Redis Stream聚合配置下发
...
- 新增 writeDeviceAggregatedConfig/buildFlatConfig 聚合配置写入
- pushConfig 增加设备聚合配置推送步骤
- rollback 三方法增加 Stream 通知和 deviceId 回填修复
- AiRoiServiceImpl 新增 resolveDeviceId 自动关联边缘设备
- Mapper 层新增设备查询/回填/清理方法
- 新增 backfill-device-id 数据修复端点
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-10 15:21:19 +08:00
e8c3b32249
fix: 增加Redis配置key过期时间到7天
...
- 原1小时过期导致边缘服务重启后无法获取配置
- 增加到7天确保配置在边缘服务离线期间不会丢失
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 16:56:57 +08:00
87b19683fb
feat: 隐藏控制台、分屏监控、用户管理菜单
...
- 控制台、分屏监控、用户管理设为 hidden
- 默认跳转改为通道列表
- 保留组织结构和摄像头配置
- 后续对接 AIOT 主平台时再启用
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 15:16:59 +08:00
849d74d16a
chore: 移除人群聚集检测算法预置
...
- SQL初始化脚本移除 crowd_detection
- Java预置算法移除 crowd_detection
- 与边缘端保持一致,仅保留2个算法
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 15:16:49 +08:00
826586b921
refactor(web): 移除独立算法配置页面
...
- 注释掉 /algorithmConfig 路由
- 算法调配功能已集成到摄像头配置的 ROI 选区中
- ROI配置页面通过 RoiAlgorithmBind 组件支持完整的算法绑定
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 14:30:25 +08:00
b6dc39a021
chore(docker): 新增EMQX MQTT Broker配置
...
- 添加EMQX docker-compose配置
- 用于本地开发和测试环境
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 13:33:07 +08:00
9160998609
chore(config): 更新MQTT和Redis配置
...
- 配置MQTT告警订阅主题
- 配置Redis连接参数
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 13:32:31 +08:00
81bcc277a0
feat(aiot): AiConfigController新增版本管理API
...
- 新增配置版本列表查询
- 新增配置快照详情查询
- 新增配置回滚接口
- 新增推送前预览接口
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 13:32:23 +08:00
3848a517b9
feat(aiot): MqttService支持告警和心跳订阅
...
- 订阅 edge/alert/# 接收AI告警
- 订阅 edge/alert/heartbeat/# 接收设备心跳
- 告警入库并触发通知
- 心跳更新设备状态
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 13:32:16 +08:00
0a6931e093
feat(aiot): AiConfigService支持Redis配置同步
...
- 新增 pushConfigToRedis 方法
- pushConfig 改为通过 Redis 推送配置
- 支持配置快照生成
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 13:32:07 +08:00
44170f2d9a
feat(aiot): 新增方案B Controller
...
- AiAlertController: AI告警查询和统计API
- AiAlgoTemplateController: 算法模板管理API
- AiEdgeDeviceController: 边缘设备状态查询API
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 13:31:58 +08:00
4c70eec7e8
feat(aiot): 新增方案B Service实现
...
- AiAlertServiceImpl: AI告警服务实现,支持MQTT告警入库
- AiAlgoTemplateServiceImpl: 算法模板CRUD和级联更新
- AiConfigSnapshotServiceImpl: 配置版本快照和回滚
- AiEdgeDeviceServiceImpl: 边缘设备心跳和离线检测
- AiRedisConfigServiceImpl: Redis配置同步,对齐ai_edge格式
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 13:31:49 +08:00
27eaffb9d7
feat(aiot): 新增方案B Service接口
...
- IAiAlertService: AI告警服务接口
- IAiAlgoTemplateService: 算法模板服务接口
- IAiConfigSnapshotService: 配置快照服务接口
- IAiEdgeDeviceService: 边缘设备服务接口
- IAiRedisConfigService: Redis配置同步服务接口
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 13:31:38 +08:00
efdc08c469
feat(aiot): 新增方案B Mapper接口
...
- AiAlertMapper: AI告警数据访问
- AiAlgoTemplateMapper: 算法模板数据访问
- AiConfigSnapshotMapper: 配置快照数据访问
- AiEdgeDeviceMapper: 边缘设备数据访问
- 更新 AiRoiMapper 和 AiRoiAlgoBindMapper
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 13:31:24 +08:00
b0df1485ad
feat(aiot): 新增方案B实体类
...
- AiAlert: AI告警实体
- AiAlgoTemplate: 算法参数模板实体
- AiConfigSnapshot: 配置版本快照实体
- AiEdgeDevice: 边缘设备状态实体
- AiRoiAlgoBind: 新增 templateId 和 paramOverride 字段
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 13:31:13 +08:00
fe308474ff
feat(aiot): 新增方案B数据库升级脚本
...
- 新增 wvp_ai_config_snapshot 配置版本快照表
- 新增 wvp_ai_algo_template 算法参数模板表
- 新增 wvp_ai_alert AI告警表
- 新增 wvp_ai_edge_device 边缘设备状态表
- wvp_ai_roi_algo_bind 新增 template_id 和 param_override 字段
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 13:31:02 +08:00
dfb9d6fd06
feat: pushConfig支持MQTT推送,优先级高于HTTP
...
MQTT启用时通过EMQX推送配置到边缘端,否则回退到原有HTTP REST方式
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 14:44:35 +08:00
752048c320
feat: 新增MQTT配置类和服务
...
- AiMqttConfig: MQTT连接参数配置(broker/认证/topic前缀/QoS等)
- MqttService: MQTT连接管理、消息发布/订阅、自动重连、配置推送封装
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 14:44:28 +08:00
5f18a3e165
feat: 添加Paho MQTT v5客户端依赖
...
为WVP平台引入MQTT协议支持,用于向边缘端推送AI配置
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 14:44:13 +08:00
2b8fa3c1f2
修复算法预置数据中文乱码:启动时自动校正
...
SQL文件导入时编码不匹配导致中文字段为乱码,
添加@PostConstruct在启动时用Java硬编码的正确中文覆盖数据库中的预置算法数据。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 10:16:39 +08:00
88da798cc0
修复ROI截图:改用ZLM内部RTSP地址,解决ffmpeg无法直连摄像头源的问题
...
后端改用app/stream参数构建ZLM内部地址(rtsp://127.0.0.1:{port}/{app}/{stream}),
避免ffmpeg从Docker内直接连接摄像头RTSP源。增加47255字节默认logo检测。
前端同步更新snap URL构建方式。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 09:59:00 +08:00
682b56a2ec
修复开发环境截图URL缺少/dev-api前缀问题
...
img标签src不走axios,需手动加VUE_APP_BASE_API前缀,
否则开发环境下请求不经过devServer代理直接404
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 09:35:35 +08:00
3c8c6fa0c9
将AI截图接口加入安全白名单,修复401未授权问题
...
/api/ai/roi/snap 作为img标签src使用时不带session,
需要像其他snap接口一样加入permitAll白名单
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 09:29:31 +08:00
5b39a3b947
修复ROI截图功能:改用ZLM同步getSnap直接返回图片
...
- 重写snap端点:直接调用ZLM的getSnap同步API,传入RTSP源地址,
流式返回图片字节流,不再依赖异步文件存储
- 前端改为传srcUrl参数给snap接口,不需要先拉流即可截图
- 修复之前async=1导致ZLM返回JSON而非图片的问题
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 09:21:10 +08:00
d7bf969694
新增AIoT边缘智能模块:摄像头ROI配置、算法管理、配置推送
...
- 后端:新增aiot模块(bean/dao/service/controller),支持ROI区域CRUD、
算法注册表管理、ROI-算法绑定、配置推送到FastAPI边缘端、变更日志
- 前端:新增摄像头配置页(列表+ROI子页面)、算法配置页、Canvas绘图组件
(矩形/多边形)、动态算法参数编辑器、ZLM截图作为ROI编辑背景
- 数据库:新建4张表(wvp_ai_roi/algorithm/roi_algo_bind/config_log)
字段与FastAPI端SQLite兼容,含2个预置算法
- 路由裁剪:隐藏无关菜单(地图/部标/推流/录制计划等)
- 修复cameraId含/导致REST路径解析错误(改用query参数)
- 新增ai.service配置项(边缘端地址/超时/开关)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 08:59:20 +08:00
6c471cdfd7
更新.gitignore,忽略IDE工具目录和临时脚本文件
...
添加 .claude/、.trae/ 目录和临时批处理脚本、文档文件到忽略列表
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-03 11:11:12 +08:00
0afb3c42a4
适配Docker部署环境,修复拉流代理播放失败问题
...
1. Docker环境适配:
- Dockerfile基础镜像从JDK11升级为eclipse-temurin:21
- pom.xml编译版本从Java21降为Java17
- docker-compose开放Redis(6379)、MySQL(3306)、ZLM(6080)端口映射
- application.yml激活profile改为dev
- application-dev.yml适配Docker服务连接参数(Redis/MySQL/ZLM)
2. 修复拉流代理播放失败:
- Nginx添加流媒体后缀代理规则(.flv/.m3u8/.ts等),支持自定义app名的流路径
- Nginx添加WebRTC API代理规则
- Nginx添加sub_filter规则,将API返回的流地址端口从80(ZLM容器内部端口)重写为8080(Nginx对外端口)
- docker-compose向Nginx容器传递WebHttp环境变量
3. ZLMediaKit配置补充onvif和rtc相关配置段
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-03 11:10:06 +08:00
lin
40555d917b
redis增肌连接池支持,增加设备国标严格限制设置
2026-01-30 06:14:58 +08:00
lin
f396f5f29e
优化设备状态查询
2026-01-13 17:15:29 +08:00
lin
bca77f79cc
优化注销判定,主动注销不再确定状态
2026-01-13 16:25:36 +08:00
lin
8c54895c47
去除过期文件,修复接口文档分组
2026-01-13 13:06:22 +08:00
lin
f0f469f419
修改kingbase驱动导入方式
2026-01-13 10:52:15 +08:00
lin
298165b424
修改自动打包配置
2026-01-07 16:55:20 +08:00
lin
f487e203c7
修改自动打包的jdk版本
2026-01-07 16:50:44 +08:00
lin
5bf0d0519b
修改自动打包的jdk版本
2026-01-07 16:47:37 +08:00
lin
4a3430862a
修复云台控制时前端zoomSpeed设置错误 #1882
2026-01-07 15:51:26 +08:00