# AR智能巡检平台 - 数据库安装指南 ## 文件说明 本目录包含以下 SQL 文件: ### 数据库表结构文件 - **ar-inspection-tables.sql** - AR巡检模块数据库表结构(8个业务表) - **ar-inspection-tables-rollback.sql** - 数据库表回滚脚本(删除所有巡检表) ### 菜单权限文件 - **ar-inspection-menu.sql** - 菜单和权限初始化SQL(49条权限配置) - **ar-inspection-menu-rollback.sql** - 菜单权限回滚SQL ## 数据库表清单 | 序号 | 表名 | 说明 | 用途 | |------|------|------|------| | 1 | ar_device | AR设备管理表 | 管理AR眼镜等设备信息 | | 2 | ar_region | 巡检区域管理表 | 管理巡检区域划分 | | 3 | ar_point | 巡检点位管理表 | 管理具体巡检点位 | | 4 | ar_task | 巡检任务模板表 | 定义巡检任务模板 | | 5 | ar_step | 巡检步骤表 | 定义任务的执行步骤(支持树形结构) | | 6 | ar_step_media | 步骤媒体文件表 | 存储步骤相关的图片/视频/音频 | | 7 | ar_execution | 任务执行记录表 | 记录任务的执行情况 | | 8 | ar_step_record | 步骤执行记录表 | 记录每个步骤的执行详情 | ## 表关系图 ``` ar_device (设备) └─> ar_execution (执行记录) ar_region (区域) ├─> ar_point (点位) ├─> ar_task (任务模板) └─> ar_execution (执行记录) ar_point (点位) └─> ar_step (巡检步骤) ar_task (任务模板) ├─> ar_step (巡检步骤) └─> ar_execution (执行记录) ar_step (巡检步骤) ├─> ar_step (父子关系-树形结构) └─> ar_step_record (步骤记录) ar_execution (执行记录) └─> ar_step_record (步骤记录) ar_step_record (步骤记录) └─> ar_step_media (步骤媒体) ``` ## 安装步骤 ### 第一步: 创建数据库表 根据你的环境选择以下任一方式执行: #### 方式1: 命令行导入 ```bash # 进入MySQL mysql -u root -p # 选择数据库(请根据实际情况修改数据库名) use ry-vue; # 导入表结构 source /path/to/ar-inspection/script/sql/ar-inspection-tables.sql; # 验证表是否创建成功 show tables like 'ar_%'; # 查看表结构(以ar_device为例) desc ar_device; # 退出MySQL exit; ``` #### 方式2: 直接执行命令 ```bash # 一条命令完成导入 mysql -u root -p -D ry-vue < /path/to/ar-inspection/script/sql/ar-inspection-tables.sql ``` #### 方式3: 使用 Navicat/DBeaver/DataGrip 等 GUI 工具 1. 打开工具并连接到数据库 2. 选择数据库 `ry-vue` 3. 打开 SQL 文件: `ar-inspection-tables.sql` 4. 点击"运行"或"执行"按钮 5. 验证表是否创建成功 ### 第二步: 导入菜单权限数据 ```bash # 方式1: 命令行 mysql -u root -p -D ry-vue < /path/to/ar-inspection/script/sql/ar-inspection-menu.sql # 方式2: MySQL客户端 mysql -u root -p use ry-vue; source /path/to/ar-inspection/script/sql/ar-inspection-menu.sql; # 验证菜单是否导入成功 SELECT menu_id, menu_name, parent_id, menu_type, perms FROM sys_menu WHERE menu_id >= 2000 AND menu_id < 2200 ORDER BY menu_id; ``` ### 第三步: 分配权限给角色 1. 登录系统管理后台 (http://localhost:8080 或你的实际地址) 2. 进入 **系统管理 > 角色管理** 3. 选择需要授权的角色(如"管理员"),点击"修改" 4. 在菜单权限中勾选 **"AR巡检"** 及其子菜单 5. 点击"确定"保存设置 ### 第四步: 验证安装 ```bash # 验证所有表是否创建成功 mysql -u root -p -D ry-vue -e "SHOW TABLES LIKE 'ar_%';" # 验证菜单权限是否导入成功 mysql -u root -p -D ry-vue -e "SELECT COUNT(*) as menu_count FROM sys_menu WHERE menu_id >= 2000 AND menu_id < 2200;" # 应该返回 49 条记录 # 验证表结构(查看ar_device表为例) mysql -u root -p -D ry-vue -e "DESC ar_device;" ``` ## 回滚操作 如果需要删除所有巡检模块的表和菜单权限,按以下顺序执行: ### 删除菜单权限 ```bash mysql -u root -p -D ry-vue < /path/to/ar-inspection/script/sql/ar-inspection-menu-rollback.sql ``` ### 删除数据库表 ```bash mysql -u root -p -D ry-vue < /path/to/ar-inspection/script/sql/ar-inspection-tables-rollback.sql ``` **警告**: 回滚操作会永久删除所有表及其数据,请在执行前确保已备份重要数据! ## 技术特性 ### 1. 多租户支持 - 所有表包含 `tenant_id` 字段 - 默认租户ID为 `000000` - 支持数据隔离,不同租户数据互不干扰 ### 2. 逻辑删除 - 所有表包含 `del_flag` 字段 - `0` = 存在, `1` = 已删除 - 删除操作不会物理删除数据,仅标记为已删除 ### 3. 审计字段 所有表包含以下审计字段: - `create_dept` - 创建部门 - `create_by` - 创建者 - `create_time` - 创建时间 - `update_by` - 更新者 - `update_time` - 更新时间 ### 4. 主键策略 - 使用雪花ID算法(ASSIGN_ID) - 由应用程序生成,不使用数据库自增 - 64位长整型,分布式友好 ### 5. JSON字段支持 以下表包含JSON格式字段: - `ar_region.region_data` - 区域业务数据 - `ar_point.position_data` - 点位坐标等数据 - `ar_step.ai_data` - AI配置数据 - `ar_step_record.ai_result` - AI识别结果 JSON字段由 MyBatis-Plus 的 `JacksonTypeHandler` 自动处理。 ### 6. 树形结构支持 `ar_step` 表支持树形结构: - `parent_id` - 父步骤ID(0为顶级) - `ancestors` - 祖级列表(如: 0,1,2) - `is_leaf` - 是否叶子节点 ### 7. 索引优化 已根据常见查询场景配置索引: - 主键索引 (PRIMARY KEY) - 唯一索引 (UNIQUE KEY) - 防止重复数据 - 普通索引 (KEY) - 加速查询 ## 数据字典 ### 设备状态 (ar_device.status) - `0` - 启用 - `1` - 停用 ### 区域状态 (ar_region.status) - `0` - 正常 - `1` - 停用 ### 任务状态 (ar_task.status) - `0` - 正常 - `1` - 停用 ### 执行状态 (ar_execution.status) - `pending` - 待执行 - `in_progress` - 执行中 - `completed` - 已完成 - `cancelled` - 已取消 ### 步骤记录状态 (ar_step_record.status) - `pending` - 待执行 - `completed` - 已完成 - `skipped` - 已跳过 ### 媒体类型 (ar_step_media.media_type) - `image` - 图片 - `video` - 视频 - `audio` - 音频 ### Yes/No 标志 - `0` - 否/No - `1` - 是/Yes 适用于以下字段: - `need_voice_read` - 需要语音朗读 - `need_voice_rephrase` - 需要用户复述 - `need_voice_confirm` - 需要确认 - `need_ai` - 需要AI识别 - `is_operation` - 是否操作步骤 - `is_leaf` - 是否叶子节点 - `is_done` - 是否完成 ## 注意事项 ### 1. 数据库版本要求 - **MySQL 8.0+** (推荐 8.0.28 或更高版本) - 字符集: `utf8mb4` - 排序规则: `utf8mb4_unicode_ci` ### 2. 执行顺序 必须按以下顺序执行: 1. 先创建表结构 (`ar-inspection-tables.sql`) 2. 再导入菜单权限 (`ar-inspection-menu.sql`) 回滚时按相反顺序: 1. 先删除菜单权限 (`ar-inspection-menu-rollback.sql`) 2. 再删除表结构 (`ar-inspection-tables-rollback.sql`) ### 3. 数据库名称 默认数据库名为 `ry-vue`,如果你的数据库名称不同,请在执行前修改: ```bash # 使用你的实际数据库名 use your_database_name; ``` ### 4. 权限要求 执行SQL的数据库用户需要以下权限: - CREATE - 创建表 - DROP - 删除表 - INSERT - 插入数据(菜单权限) - ALTER - 修改表结构 ### 5. 备份建议 在生产环境执行前,强烈建议: 1. 完整备份现有数据库 2. 先在测试环境验证 3. 选择低峰期执行 备份命令: ```bash # 备份整个数据库 mysqldump -u root -p ry-vue > backup_$(date +%Y%m%d_%H%M%S).sql # 仅备份巡检模块表 mysqldump -u root -p ry-vue ar_device ar_region ar_point ar_task ar_step ar_step_media ar_execution ar_step_record > ar_inspection_backup_$(date +%Y%m%d_%H%M%S).sql ``` ### 6. 索引维护 大数据量情况下建议定期优化索引: ```sql -- 分析表 ANALYZE TABLE ar_device, ar_region, ar_point, ar_task, ar_step, ar_step_media, ar_execution, ar_step_record; -- 优化表 OPTIMIZE TABLE ar_device, ar_region, ar_point, ar_task, ar_step, ar_step_media, ar_execution, ar_step_record; ``` ## 示例数据 SQL文件中已包含示例数据(默认注释),如需使用可取消注释: ```sql -- 设备示例数据 INSERT INTO ar_device VALUES(1, '000000', 'AR眼镜-001', 'DEV001', 'HoloLens 2', '0', 'AR智能眼镜设备', '0', 103, 1, sysdate(), null, null); -- 区域示例数据 INSERT INTO ar_region VALUES(1, '000000', '主控室', 'REGION001', null, '0', '电厂主控室区域', '0', 103, 1, sysdate(), null, null); -- 点位示例数据 INSERT INTO ar_point VALUES(1, '000000', 1, '主控台', 'POINT001', null, '主控台点位', '0', 103, 1, sysdate(), null, null); -- 任务模板示例数据 INSERT INTO ar_task VALUES(1, '000000', '日常巡检任务', 'TASK001', 1, 'daily', '0', '每日例行巡检任务', '0', 103, 1, sysdate(), null, null); ``` ## 故障排查 ### 问题1: 表已存在错误 ``` ERROR 1050 (42S01): Table 'ar_device' already exists ``` **解决方案**: 1. 先执行回滚脚本删除旧表 2. 或手动删除冲突的表 3. 再重新执行创建脚本 ### 问题2: 权限不足错误 ``` ERROR 1142 (42000): CREATE command denied to user ``` **解决方案**: 使用具有足够权限的用户(如root)执行,或联系数据库管理员授予权限。 ### 问题3: 菜单ID冲突 ``` ERROR 1062 (23000): Duplicate entry '2000' for key 'PRIMARY' ``` **解决方案**: 1. 先执行菜单回滚脚本 2. 或手动删除冲突的菜单 3. 再重新执行菜单导入脚本 ### 问题4: 字符集不匹配 ``` ERROR 1115 (42000): Unknown character set: 'utf8mb4' ``` **解决方案**: 升级MySQL到5.5.3或更高版本,或修改SQL文件中的字符集为utf8。 ## 技术支持 如有问题,请通过以下方式获取帮助: 1. 查看项目文档: `CLAUDE.md` 和 `AR-INSPECTION-SETUP.md` 2. 提交 Issue 到项目仓库 3. 联系开发团队 ## 更新日志 - **2025-01-13**: 初始版本,创建8个业务表和49条权限配置