- 后端:新增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>
78 lines
4.8 KiB
SQL
78 lines
4.8 KiB
SQL
-- ============================================================
|
||
-- AIoT 智能视频管理平台 - MySQL 初始化脚本
|
||
-- 字段名与 FastAPI 端保持一致(snake_case)
|
||
-- ============================================================
|
||
|
||
-- 1. ROI 区域配置(对应 FastAPI 端 roi_configs)
|
||
CREATE TABLE IF NOT EXISTS wvp_ai_roi (
|
||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||
roi_id VARCHAR(50) NOT NULL COMMENT 'UUID,与FastAPI端同步用',
|
||
camera_id VARCHAR(50) NOT NULL COMMENT '通道国标编号',
|
||
channel_db_id INT NULL COMMENT 'WVP通道表ID',
|
||
device_id VARCHAR(50) NULL COMMENT '设备国标编号',
|
||
name VARCHAR(100) NULL COMMENT 'ROI名称',
|
||
roi_type VARCHAR(20) NOT NULL DEFAULT 'rectangle' COMMENT '形状:rectangle/polygon',
|
||
coordinates TEXT NOT NULL COMMENT 'JSON归一化坐标',
|
||
color VARCHAR(20) NULL DEFAULT '#FF0000' COMMENT '显示颜色',
|
||
priority INT NOT NULL DEFAULT 0 COMMENT '优先级',
|
||
enabled TINYINT(1) NOT NULL DEFAULT 1 COMMENT '启用状态',
|
||
extra_params TEXT NULL COMMENT '扩展参数JSON',
|
||
description VARCHAR(500) NULL COMMENT '描述',
|
||
create_time VARCHAR(50) NULL COMMENT '创建时间',
|
||
update_time VARCHAR(50) NULL COMMENT '更新时间',
|
||
UNIQUE KEY uk_roi_id (roi_id),
|
||
INDEX idx_camera_id (camera_id),
|
||
INDEX idx_device_id (device_id)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ROI区域配置';
|
||
|
||
-- 2. 算法注册表(对应 FastAPI 端 algorithm_registry)
|
||
CREATE TABLE IF NOT EXISTS wvp_ai_algorithm (
|
||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||
algo_code VARCHAR(100) NOT NULL COMMENT '算法编码',
|
||
algo_name VARCHAR(200) NULL COMMENT '算法名称',
|
||
target_class VARCHAR(50) NULL COMMENT '目标类别',
|
||
param_schema TEXT NULL COMMENT '参数模板JSON',
|
||
description VARCHAR(500) NULL COMMENT '描述',
|
||
is_active TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否可用',
|
||
sync_time VARCHAR(50) NULL COMMENT '最后同步时间',
|
||
create_time VARCHAR(50) NULL COMMENT '创建时间',
|
||
update_time VARCHAR(50) NULL COMMENT '更新时间',
|
||
UNIQUE KEY uk_algo_code (algo_code)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='算法注册表';
|
||
|
||
-- 3. ROI 算法绑定(对应 FastAPI 端 roi_algo_bind)
|
||
CREATE TABLE IF NOT EXISTS wvp_ai_roi_algo_bind (
|
||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||
bind_id VARCHAR(50) NOT NULL COMMENT 'UUID,同步用',
|
||
roi_id VARCHAR(50) NOT NULL COMMENT 'ROI的UUID',
|
||
algo_code VARCHAR(100) NOT NULL COMMENT '算法编码',
|
||
params TEXT NULL COMMENT '自定义参数JSON',
|
||
priority INT NOT NULL DEFAULT 0 COMMENT '优先级',
|
||
enabled TINYINT(1) NOT NULL DEFAULT 1 COMMENT '启用状态',
|
||
create_time VARCHAR(50) NULL COMMENT '创建时间',
|
||
update_time VARCHAR(50) NULL COMMENT '更新时间',
|
||
UNIQUE KEY uk_bind_id (bind_id),
|
||
INDEX idx_roi_id (roi_id),
|
||
INDEX idx_algo_code (algo_code)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ROI算法绑定';
|
||
|
||
-- 4. 配置变更日志(对应 FastAPI 端 config_update_log)
|
||
CREATE TABLE IF NOT EXISTS wvp_ai_config_log (
|
||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||
config_type VARCHAR(30) NOT NULL COMMENT '类型:ROI/ALGORITHM/BIND',
|
||
config_id VARCHAR(50) NOT NULL COMMENT '目标ID',
|
||
old_value TEXT NULL COMMENT '变更前JSON',
|
||
new_value TEXT NULL COMMENT '变更后JSON',
|
||
updated_by VARCHAR(100) NULL COMMENT '操作人',
|
||
updated_at VARCHAR(50) NULL COMMENT '操作时间',
|
||
INDEX idx_config_type (config_type),
|
||
INDEX idx_config_id (config_id)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配置变更日志';
|
||
|
||
-- ============================================================
|
||
-- 初始数据:预置算法(2个,不含人群聚集检测)
|
||
-- ============================================================
|
||
INSERT INTO wvp_ai_algorithm (algo_code, algo_name, target_class, param_schema, description, is_active, create_time, update_time) VALUES
|
||
('leave_post', '离岗检测', 'person', '{"confirm_on_duty_sec":{"type":"int","default":10,"min":1},"confirm_leave_sec":{"type":"int","default":10,"min":1},"cooldown_sec":{"type":"int","default":300,"min":0},"working_hours":{"type":"list","default":[]}}', '检测人员是否在岗,支持工作时间段配置', 1, NOW(), NOW()),
|
||
('intrusion', '周界入侵检测', 'person', '{"cooldown_seconds":{"type":"int","default":120,"min":0},"confirm_seconds":{"type":"int","default":5,"min":1}}', '检测人员进入指定区域', 1, NOW(), NOW());
|