7. 后端接口设计
说明:接口统一以 /robot-ops 为前缀,返回结构统一为 { code, msg, data, timestamp }。第 7 章接口字段采用 camelCase;第 8 章数据库字段采用 snake_case。列表接口统一支持 pageNum、pageSize。
7.0 通用文件上传接口
| 接口 | 方法 | 说明 | 请求参数 | 返回字段 | 适用场景 |
| /robot-ops/common/file/upload | POST | 通用文件上传 | 文件(file)、业务类型(bizType) | 文件地址(fileUrl)、文件名称(fileName)、文件大小(fileSize)、文件格式(fileFormat) | 主题Logo、主题背景资源,普通附件等。素材库文件仍优先使用素材上传接口。 |
通用文件上传接口默认不单独建设文件记录表,上传后的 fileUrl 由具体业务表保存;如后续需要统一文件管理,再扩展附件表。
素材库文件上传优先使用素材管理专用上传接口 /robot-ops/content/media/upload。素材上传接口除保存文件外,还需要生成或解析 assetType、fileSize、fileFormat、mimeType、thumbnailUrl、durationSeconds、resolution 等素材字段;通用文件上传接口不承担素材入库和素材元数据解析职责。
7.1 通用接口规范
7.1.1 通用返回结构
{
"code": 200,
"msg": "操作成功",
"data": {},
"timestamp": "2026-04-24 10:00:00"
}
7.1.2 分页返回结构
{
"code": 200,
"msg": "查询成功",
"data": {
"total": 100,
"pageNum": 1,
"pageSize": 10,
"rows": []
},
"timestamp": "2026-04-24 10:00:00"
}
7.1.3 通用状态码
| 状态码 | 说明 | 处理建议 |
| 200 | 成功 | 正常处理 data。 |
| 400 | 请求参数错误 | 前端提示 msg。 |
| 401 | 未登录或登录已过期 | 跳转登录页。 |
| 403 | 无权限 | 提示无权限。 |
| 500 | 服务异常 | 提示系统异常,并记录日志。 |
| 10001 | 机器人侧接口不可用 | 提示机器人服务异常。 |
| 10002 | 机器人执行失败 | 展示 resultMsg。 |
7.2 认证与系统接口
7.2.1 登录
| 项 | 内容 |
| 接口地址 | POST /robot-ops/auth/login |
| 请求参数 | 登录账号(username)、登录密码(password) |
| 返回字段 | 访问令牌(token)、用户ID(userId)、登录账号(username)、用户姓名(nickName)、角色编码(roleCode) |
| 数据库表 | robot_ops_user |
| 业务规则 | 账号停用不可登录;密码连续错误 5 次锁定 10 分钟;登录成功更新 last_login_time。 |
请求示例:
{
"username": "admin",
"password": "******"
}
返回示例:
{
"token": "xxxxxx",
"userId": 1,
"username": "admin",
"nickName": "管理员",
"roleCode": "ADMIN"
}
7.2.2 退出登录
| 项 | 内容 |
| 接口地址 | POST /robot-ops/auth/logout |
| 请求参数 | 无 |
| 返回字段 | 无 |
| 业务规则 | 清理当前登录 token 或 session。 |
7.2.3 修改密码
| 项 | 内容 |
| 接口地址 | POST /robot-ops/auth/change-password |
| 请求参数 | 原密码(oldPassword)、新密码(newPassword)、确认新密码(confirmPassword) |
| 返回字段 | 无 |
| 数据库表 | robot_ops_user |
| 业务规则 | 原密码校验通过后更新;新密码和确认密码必须一致。 |
7.2.4 当前登录用户
| 项 | 内容 |
| 接口地址 | GET /robot-ops/auth/current-user |
| 返回字段 | 用户ID(userId)、登录账号(username)、用户姓名(nickName)、角色编码(roleCode)、权限标识(permissions) |
| 数据库表 | robot_ops_user 或 RuoYi 原生权限表 |
7.2.5 基础设置查询/保存
| 接口 | 方法 | 说明 | 请求/返回字段 | 数据库表 |
| /robot-ops/system/base-config | GET | 获取基础设置 | 后台系统名称(systemName)、后台Logo(systemLogo)、页脚文案(footerText)、备案号(recordNo) | robot_ops_system_config |
| /robot-ops/system/base-config | PUT | 保存基础设置 | 后台系统名称(systemName)、后台Logo(systemLogo)、页脚文案(footerText)、备案号(recordNo) | robot_ops_system_config |
7.3 首页接口
7.3.1 首页总览
| 项 | 内容 |
| 接口地址 | GET /robot-ops/home/overview |
| 请求参数 | 无 |
| 返回字段 | 机器人名称(robotName)、机器人编号(robotCode)、在线状态(onlineStatus)、工作状态(workStatus)、电量百分比(batteryLevel)、充电状态(chargeStatus)、网络状态(networkStatus)、IP地址(ipAddress)、存储占用(storageUsed)、当前版本(currentVersion)、今日访客数(todayVisitorCount)、今日预约数(todayAppointmentCount)、今日对话数(todayDialogueCount)、今日播报数(todayBroadcastCount)、今日告警数(todayAlarmCount)、今日操作数(todayOperateCount) |
| 数据来源 | 机器人实时接口 + 本地访客/对话/告警/操作记录聚合。 |
| 数据库表 | robot_ops_visitor_record、robot_ops_appointment_record、robot_ops_dialogue_log、robot_ops_alarm_log、robot_ops_operate_log;机器人实时状态不落库。 |
7.3.2 首页最近告警/最近记录
| 接口 | 说明 | 请求参数 | 返回字段 | 数据库表 |
| GET /robot-ops/home/alarms | 获取首页最近告警 | 数量(limit,默认5) | 告警ID(id)、告警时间(alarmTime)、告警类型(alarmType)、告警级别(alarmLevel)、描述(description) | robot_ops_alarm_log |
| GET /robot-ops/home/quick-records | 获取首页最近记录 | 数量(limit,默认5) | 记录类型(recordType)、时间(recordTime)、标题(title)、摘要(summary)、跳转目标(targetUrl) | robot_ops_operate_log、robot_ops_upgrade_record、robot_ops_sys_log |
7.4 内容管理接口
7.4.1 欢迎语配置接口
| 接口 | 方法 | 说明 | 请求/返回字段 | 数据库表 |
| /robot-ops/content/welcome-config | GET | 获取欢迎语配置 | 返回:配置标识(configKey,固定 default)、欢迎语文本(welcomeText)、语音播报开关(voiceEnabled)、语音播报冷却时间(cooldownSeconds)、启用欢迎语状态(status)、备注(remark)。前端无需传参,后端以 config_key='default' 查询;如数据库暂无默认配置,可返回空数据,由前端加载默认配置。 | robot_ops_welcome_config |
| /robot-ops/content/welcome-config | PUT | 保存欢迎语配置 | 请求:配置标识(configKey,固定 default,可由前端传入,也可由后端默认处理)、欢迎语文本(welcomeText)、语音播报开关(voiceEnabled)、语音播报冷却时间(cooldownSeconds)、启用欢迎语状态(status)、备注(remark)。后端保存时应以 config_key='default' 作为定位条件,存在则更新,不存在则新增。 | robot_ops_welcome_config |
| /robot-ops/content/welcome-config/test | POST | 测试欢迎语播报 | 请求:配置标识(configKey,固定 default)、欢迎语文本(welcomeText)、启用欢迎语状态(status)、语音播报开关(voiceEnabled)。仅下发测试播报,不新增或修改配置数据。 | 不新增业务表,可写入 robot_ops_operate_log |
欢迎语配置为单配置页,前端当前会在保存和测试播报时携带 configKey='default';后端也应支持不传 configKey 时默认按 default 处理。
保存欢迎语配置时,后端建议按 config_key='default' 执行"有则更新,无则新增"的逻辑,避免初始化数据缺失时保存失败。
恢复默认由前端本地重置表单完成,不单独调用后端恢复默认接口;用户点击“保存配置”后才真正写入数据库。
status 控制欢迎语功能整体是否启用;voiceEnabled 控制欢迎语触发时是否进行语音播报;cooldownSeconds 表示语音播报冷却时间,用于避免短时间内重复语音播报。
7.4.2 问答库接口
| 接口 | 方法 | 说明 | 请求参数 | 返回/处理字段 | 数据库表 |
| /robot-ops/content/faq/page | GET | 问答分页 | 问题分类(categoryType,字典值)、标准问题关键字(question)、启用状态(status)、pageNum、pageSize | 问答ID(id)、问题分类(categoryType,按字典回显)、标准问题(question)、相似问数量(similarCount)、答案摘要(answerSummary)、启用状态(status)、更新时间(updateTime) | robot_ops_faq、robot_ops_faq_similar;分类名称通过 RuoYi 字典 robot_faq_category 回显 |
| /robot-ops/content/faq/{id} | GET | 问答详情 | 问答ID(id) | categoryType、question、similarQuestions 或 robotOpsFaqSimilarList、answer、sortNo、status、remark | robot_ops_faq、robot_ops_faq_similar |
| /robot-ops/content/faq | POST | 新增问答 | categoryType、question、similarQuestions 或 robotOpsFaqSimilarList、answer、status、remark;sortNo 由前端默认传 0 或后端默认写入 0 | 新增后的问答ID(id) | robot_ops_faq、robot_ops_faq_similar |
| /robot-ops/content/faq | PUT | 编辑问答 | id、categoryType、question、similarQuestions 或 robotOpsFaqSimilarList、answer、sortNo、status、remark;前端页面不展示 sortNo,编辑时保持原值 | 无 | robot_ops_faq、robot_ops_faq_similar |
| /robot-ops/content/faq/{id} | DELETE | 删除问答 | 问答ID(id) | 无 | robot_ops_faq、robot_ops_faq_similar |
| /robot-ops/content/faq/export | GET | 导出问答 | 问题分类(categoryType)、标准问题关键字(question)、启用状态(status) | Excel文件;导出字段建议包括问题分类、标准问题、相似问、答案内容、启用状态、更新时间、备注,不导出 sortNo | robot_ops_faq、robot_ops_faq_similar;分类名称按 RuoYi 字典 robot_faq_category 回显 |
问答分类不单独建设业务表和管理页面,统一使用 RuoYi 字典维护,字典类型为 robot_faq_category。当前字典项为:1=问候寒暄,2=产品介绍,3=业务咨询,4=访客引导,5=场所引导,6=安防提示,7=设备使用,8=售后服务,9=常见问题,10=其他。
问答库前端页面使用多行文本维护相似问,一行一个;提交时可同时携带 similarQuestions 和 robotOpsFaqSimilarList,以兼容主子表接口和后续简化接口。后端保存时需写入 robot_ops_faq_similar 表。
问答库一期不提供导入接口。由于问答导入涉及分类字典匹配、标准问题重复校验、相似问拆分、主子表写入和失败明细回显,后续如运营需要批量维护,再单独扩展导入能力。
sortNo / sort_no 为保留字段,前端页面一期不展示、不编辑。新增时默认 0,编辑时保持原值。后续如需推荐、置顶或屏幕端展示排序,再重新设计排序能力。
删除问答时需同步删除 robot_ops_faq_similar 中对应 faq_id 的相似问数据;启用/停用仅影响主问答状态,相似问不单独设置状态。
7.4.3 素材管理接口
| 接口 | 方法 | 说明 | 请求参数 | 返回/处理字段 | 数据库表 |
| /robot-ops/content/media/page | GET | 素材分页 | 素材名称(assetName)、素材类型(assetType)、启用状态(status)、上传时间范围、pageNum、pageSize | id、assetName、assetType、fileFormat、fileSize、durationSeconds、resolution、thumbnailUrl、quotedFlag、status、createTime | robot_ops_media_asset |
| /robot-ops/content/media/{id} | GET | 素材详情 | 素材ID(id) | id、assetName、assetType、fileUrl、thumbnailUrl、fileSize、fileFormat、mimeType、durationSeconds、resolution、quotedFlag、status、remark、createTime、updateTime | robot_ops_media_asset |
| /robot-ops/content/media/upload | POST | 上传素材 | 文件(file)、素材名称(assetName,可选,未填写时默认使用文件名)、启用状态(status,可选,默认启用)、备注(remark,可选) | 素材ID(id)、素材名称(assetName)、素材类型(assetType)、文件地址(fileUrl)、缩略图地址(thumbnailUrl)、文件大小(fileSize)、文件格式(fileFormat)、MIME类型(mimeType)、视频时长(durationSeconds)、分辨率(resolution)、启用状态(status) | robot_ops_media_asset |
| /robot-ops/content/media | PUT | 编辑素材 | 素材ID(id)、素材名称(assetName)、启用状态(status)、备注(remark) | 无 | robot_ops_media_asset |
| /robot-ops/content/media/{id} | DELETE | 删除素材 | 素材ID(id) | 无;如素材已被播放方案引用,应返回不可删除原因和引用数量 | robot_ops_media_asset、robot_ops_play_plan_item |
| /robot-ops/content/media/export | GET | 导出素材 | 同分页查询条件 | Excel文件;建议导出素材名称、素材类型、文件格式、文件大小、视频时长、分辨率、引用状态、启用状态、上传时间、备注 | robot_ops_media_asset |
素材上传接口需要在 RuoYi 生成的基础 CRUD 之外进行二次开发。RuoYi 生成器可生成列表、详情、编辑、删除等基础接口,但不会自动解析上传文件信息、生成视频封面、解析视频时长和分辨率。
上传接口一期至少应返回 fileUrl、fileSize、fileFormat、mimeType、assetType。thumbnailUrl、resolution、durationSeconds 可根据后端解析能力逐步完善;前端需对这些字段为空的情况做兜底展示。
素材类型 assetType 是业务类型,用于页面筛选和播放方案选择;mimeType 是文件 MIME 类型,用于技术校验、预览和文件响应处理;fileFormat 是文件后缀/格式,用于页面展示和导出。
quotedFlag 由后端根据播放方案明细引用关系维护,前端只读展示。删除素材时,后端必须检查 robot_ops_play_plan_item 是否存在引用,不能仅依赖 quotedFlag。
7.4.4 播放方案接口
| 接口 | 方法 | 说明 | 请求/返回字段 | 数据库表 |
| /robot-ops/content/play-plan/page | GET | 播放方案分页 | 方案名称(planName)、是否默认(isDefault)、启用状态(status)、pageNum、pageSize;返回 id、planName、assetCount、loopMode、isDefault、status、updateTime | robot_ops_play_plan、robot_ops_play_plan_item |
| /robot-ops/content/play-plan/{id} | GET | 播放方案详情 | 返回 planName、loopMode、isDefault、status、remark、itemList | robot_ops_play_plan、robot_ops_play_plan_item、robot_ops_media_asset |
| /robot-ops/content/play-plan | POST | 新增播放方案 | planName、loopMode、isDefault、status、remark、itemList | robot_ops_play_plan、robot_ops_play_plan_item |
| /robot-ops/content/play-plan | PUT | 编辑播放方案 | id、planName、loopMode、isDefault、status、remark、itemList | robot_ops_play_plan、robot_ops_play_plan_item |
| /robot-ops/content/play-plan/{id} | DELETE | 删除播放方案 | 方案ID(id) | robot_ops_play_plan、robot_ops_play_plan_item |
| /robot-ops/content/play-plan/{id}/set-default | POST | 设为默认方案 | 方案ID(id) | robot_ops_play_plan |
| /robot-ops/content/play-plan/{id}/copy | POST | 复制播放方案 | 方案ID(id) | robot_ops_play_plan、robot_ops_play_plan_item |
| /robot-ops/content/play-plan/{id}/preview | GET | 预览播放方案 | 方案ID(id) | robot_ops_play_plan、robot_ops_play_plan_item、robot_ops_media_asset |
itemList 字段示例:
[
{
"assetId": 1,
"playOrder": 1,
"staySeconds": 10,
"transitionType": "fade"
}
]
7.4.5 播报内容与播报任务接口
| 接口 | 方法 | 说明 | 主要字段 | 数据库表 |
| /robot-ops/content/broadcast-content/page | GET | 播报内容分页 | contentName、contentType、broadcastText、status、updateTime | robot_ops_broadcast_content |
| /robot-ops/content/broadcast-content/{id} | GET | 播报内容详情 | 内容ID(id);返回 contentName、contentType、broadcastText、status、remark | robot_ops_broadcast_content |
| /robot-ops/content/broadcast-content | POST | 新增播报内容 | contentName、contentType、broadcastText、status、remark | robot_ops_broadcast_content |
| /robot-ops/content/broadcast-content | PUT | 编辑播报内容 | id、contentName、contentType、broadcastText、status、remark | robot_ops_broadcast_content |
| /robot-ops/content/broadcast-content/{id} | DELETE | 删除播报内容 | 内容ID(id) | robot_ops_broadcast_content |
| /robot-ops/content/broadcast-content/{id}/test | POST | 测试播报内容 | 内容ID(id) | robot_ops_broadcast_content、robot_ops_operate_log |
| /robot-ops/content/broadcast-task/page | GET | 播报任务分页 | 请求字段:任务名称(taskName)、播报内容名称(contentName)、循环类型(cycleType)、启用状态(status)、pageNum、pageSize;返回字段:任务ID(id)、任务名称(taskName)、播报内容ID(contentId)、播报内容名称(contentName)、播报内容状态(contentStatus,建议返回)、开始时间(startTime)、结束时间(endTime)、播报频率(frequencyMinutes,单位:分钟)、循环类型(cycleType:1按星期,2按日期)、循环取值(cycleValue)、启用状态(status)、更新时间(updateTime)。 | robot_ops_broadcast_task、robot_ops_broadcast_content |
| /robot-ops/content/broadcast-task/{id} | GET | 播报任务详情 | 任务ID(id);返回 taskName、contentId、contentName、contentStatus、startTime、endTime、frequencyMinutes、cycleType、cycleValue、status、remark | robot_ops_broadcast_task、robot_ops_broadcast_content |
| /robot-ops/content/broadcast-task | POST | 新增播报任务 | taskName、contentId、startTime、endTime、frequencyMinutes、cycleType、cycleValue、status、remark;cycleType=1 时 cycleValue 保存星期值,cycleType=2 时 cycleValue 保存日期值 | robot_ops_broadcast_task |
| /robot-ops/content/broadcast-task | PUT | 编辑播报任务 | id、taskName、contentId、startTime、endTime、frequencyMinutes、cycleType、cycleValue、status、remark;cycleType=1 时 cycleValue 保存星期值,cycleType=2 时 cycleValue 保存日期值 | robot_ops_broadcast_task |
| /robot-ops/content/broadcast-task/{id} | DELETE | 删除播报任务 | 任务ID(id) | robot_ops_broadcast_task |
| /robot-ops/content/broadcast-task/{id}/copy | POST | 复制播报任务 | 任务ID(id) | robot_ops_broadcast_task |
播报任务循环类型使用 RuoYi 字典 broadcast_task_cycle_type,字典值约定为:1=按星期,2=按日期。按星期时,cycleValue 保存 1-7 的星期值,多个值用英文逗号分隔;按日期时,cycleValue 保存 YYYY-MM-DD 日期值,多个日期用英文逗号分隔。
播报任务列表和详情接口建议返回 contentName 和 contentStatus,便于前端展示关联播报内容名称,以及识别关联内容是否已停用。新增/编辑播报任务时,前端仅允许选择启用状态的播报内容;历史任务关联的停用内容需要支持回显。
7.4.6 展示主题接口
| 接口 | 方法 | 说明 | 请求/返回字段 | 数据库表 |
| /robot-ops/content/theme/page | GET | 主题分页 | themeName、status、pageNum、pageSize;返回 logoUrl、backgroundType、backgroundUrl、primaryColor、currentEnabled、updateTime | robot_ops_theme |
| /robot-ops/content/theme/{id} | GET | 主题详情 | id、themeName、logoUrl、backgroundType、backgroundUrl、primaryColor、secondaryColor、welcomeTitle、welcomeSubTitle、status、currentEnabled | robot_ops_theme |
| /robot-ops/content/theme | POST | 新增主题 | themeName、logoUrl、backgroundType、backgroundUrl、primaryColor、secondaryColor、welcomeTitle、welcomeSubTitle、status | robot_ops_theme |
| /robot-ops/content/theme | PUT | 编辑主题 | id、themeName、logoUrl、backgroundType、backgroundUrl、primaryColor、secondaryColor、welcomeTitle、welcomeSubTitle、status | robot_ops_theme |
| /robot-ops/content/theme/{id} | DELETE | 删除主题 | 主题ID(id) | robot_ops_theme |
| /robot-ops/content/theme/{id}/enable | POST | 启用主题 | 主题ID(id) | robot_ops_theme |
主题 Logo、背景资源可通过通用文件上传接口获取 fileUrl 后,再写入 logoUrl、backgroundUrl;也可根据项目实现复用素材上传接口。
启用主题时需要将其他主题 current_enabled 置为 0,当前主题置为 1,保证同一时间只有一个主题生效。
7.5 访客管理接口
| 接口 | 方法 | 说明 | 请求参数 | 返回/处理字段 | 数据库表 |
| /robot-ops/visitor/record/page | GET | 访客记录分页 | visitorName、mobile、idCardNo、visitType、registerType、visitedPerson、visitTimeStart、visitTimeEnd、pageNum、pageSize | id、visitorName、mobile、idCardNo、visitorPhoto、visitType、registerType、visitorSource、visitReason、appointmentNo、visitedPerson、visitTime | robot_ops_visitor_record |
| /robot-ops/visitor/record/{id} | GET | 访客详情 | 记录ID(id) | visitorName、mobile、idCardNo、visitType、registerType、visitorSource、visitReason、visitorPhoto、appointmentNo、visitedPerson、visitTime、remark | robot_ops_visitor_record |
| /robot-ops/visitor/record/export | GET | 导出访客记录 | 同分页查询条件:visitorName、mobile、idCardNo、visitType、registerType、visitedPerson、visitTimeStart、visitTimeEnd | Excel文件;导出字段建议包括访客姓名、手机号、身份证号、到访类型、登记方式、访客来源、来访事由、预约单号、被访对象、来访时间、访客照片状态 | robot_ops_visitor_record |
| /robot-ops/visitor/appointment/page | GET | 预约记录分页 | appointmentNo、visitorName、mobile、status、appointmentTimeStart、appointmentTimeEnd、pageNum、pageSize | appointmentNo、visitorName、mobile、visitedPerson、appointmentTime、status、syncTime | robot_ops_appointment_record |
| /robot-ops/visitor/appointment/{id} | GET | 预约详情 | 预约记录ID(id) | appointmentNo、visitorName、mobile、visitedPerson、appointmentTime、status、syncTime、sourcePlatform、remark | robot_ops_appointment_record |
| /robot-ops/visitor/whitelist/page | GET | 白名单分页 | 姓名(name)、手机号(mobile)、身份证号(idCardNo)、人员类型(whitelistType)、来源类型(sourceType)、启用状态(status)、pageNum、pageSize | 白名单ID(id)、姓名(name)、手机号(mobile)、身份证号(idCardNo)、人员类型(whitelistType)、人脸照片地址(faceImageUrl)、是否有人脸照片(hasFaceImage)、来源类型(sourceType)、有效开始时间(validStartTime)、有效结束时间(validEndTime)、启用状态(status)、更新时间(updateTime) | robot_ops_whitelist |
| /robot-ops/visitor/whitelist/{id} | GET | 白名单详情 | 白名单ID(id) | name、mobile、idCardNo、whitelistType、faceImageUrl、sourceType、validStartTime、validEndTime、status、remark | robot_ops_whitelist |
| /robot-ops/visitor/whitelist | POST | 新增白名单 | name、mobile、idCardNo、whitelistType、faceImageUrl、sourceType、validStartTime、validEndTime、status、remark;运维后台新增时 sourceType 默认传 1,表示本地录入 | 新增ID(id) | robot_ops_whitelist |
| /robot-ops/visitor/whitelist | PUT | 编辑白名单 | id、name、mobile、idCardNo、whitelistType、faceImageUrl、sourceType、validStartTime、validEndTime、status、remark;sourceType 由系统自动维护,前端只读展示,不允许用户手动修改 | 无 | robot_ops_whitelist |
| /robot-ops/visitor/whitelist/{id}/status | PUT | 启用/停用白名单 | 白名单ID(id)、启用状态(status) | 无 | robot_ops_whitelist |
| /robot-ops/visitor/whitelist/{id} | DELETE | 删除白名单 | 白名单ID(id) | 无 | robot_ops_whitelist |
| /robot-ops/visitor/whitelist/import | POST | 导入白名单 | Excel文件(file);导入字段包括姓名、人员类型、手机号、身份证号、人脸照片地址、有效开始时间、有效结束时间、启用状态、备注;运维后台导入的数据 sourceType 默认写入 1,表示本地录入 | 导入总数、成功数、失败数、失败明细;导入时需校验 mobile、idCardNo、faceImageUrl 三者至少填写一种;手机号和身份证号需校验格式 | robot_ops_whitelist |
| /robot-ops/visitor/whitelist/export | GET | 导出白名单 | 同分页查询条件 | Excel文件;导出字段包括姓名、手机号、身份证号、人员类型、人脸照片地址、来源类型、有效开始时间、有效结束时间、启用状态、更新时间、备注 | robot_ops_whitelist |
访客记录不设置 resultStatus 和 sourceType 作为页面字段。访客记录代表已完成登记的到访记录;登记失败、扫码失败、读卡失败、预约匹配失败等异常应进入日志中心或后续扩展的登记异常日志。
访客记录支持两类到访类型:APPOINTMENT=预约到访,WALK_IN=现场登记;登记方式支持 SCREEN=机器人端,H5=手机端。机器人端指访客在机器人屏幕完成登记;手机端指访客扫码后在 H5 页面完成登记。
预约记录由主控平台同步;预约到访访客在现场完成登记后生成访客记录,并通过 appointmentNo 关联预约记录。现场登记访客可不关联预约单号。
白名单中的 whitelistType 字段在页面上显示为"人员类型",用于表示人员身份,如内部人员、访客、VIP、其他。人脸识别不作为人员类型,而是白名单匹配方式之一。
白名单不单独设置识别方式字段。机器人侧可根据当前采集到的身份信息匹配白名单:人脸识别时通过 faceImageUrl 对应的人脸照片进行比对;刷身份证或输入身份证时匹配 idCardNo;输入手机号时匹配 mobile。任一方式匹配到启用且在有效期内的白名单人员,即视为白名单命中。
新增或编辑白名单时,mobile、idCardNo、faceImageUrl 三者至少填写一种;手机号填写时需符合大陆手机号格式,身份证号填写时需符合 18 位身份证基础格式;一期不保存人脸特征ID。
来源类型 sourceType 使用 RuoYi 字典 source_type,当前字典值为:1=本地录入,2=平台同步,3=机器人采集。sourceType 由系统自动赋值,运维后台新增和导入默认写入 1;主控平台同步写入 2;机器人采集写入 3。前端新增/编辑弹窗中只读展示来源类型,不允许人工选择。
有效期状态由前端根据 validStartTime、validEndTime 和当前时间动态展示,不作为一期分页查询参数。
7.6 监控管理接口
| 接口 | 方法 | 说明 | 请求参数 | 返回/处理字段 | 数据库表 |
| /robot-ops/monitor/video/stream-info | GET | 获取视频流信息 | 无 | 视频地址(streamUrl)、播放协议(streamProtocol)、码流类型(streamType)、分辨率(resolution)、过期时间(expireTime) | 实时接口返回,不落库 |
| /robot-ops/monitor/video/status | GET | 获取视频状态 | 无 | 播放状态(videoStatus)、错误码(errorCode)、错误信息(errorMsg)、更新时间(updateTime) | 实时接口返回,不落库 |
| /robot-ops/monitor/voice/shout | POST | 执行远程喊话 | 喊话文本(shoutText)、音量(volume)、播放次数(playTimes)、是否打断(interruptFlag) | 记录ID(id)、执行状态(resultStatus)、结果信息(resultMsg) | robot_ops_shout_record、robot_ops_operate_log |
| /robot-ops/monitor/voice/shout-record/page | GET | 喊话记录分页 | shoutText、resultStatus、createTimeStart、createTimeEnd、pageNum、pageSize | id、shoutText、volume、playTimes、interruptFlag、resultStatus、resultMsg、operateBy、createTime | robot_ops_shout_record |
| /robot-ops/monitor/dialogue/page | GET | 对话日志分页 | sessionId、keyword、hitType、sceneType、askTimeStart、askTimeEnd、pageNum、pageSize | id、sessionId、askTime、question、answerSummary、hitType、sceneType、resultStatus | robot_ops_dialogue_log |
| /robot-ops/monitor/dialogue/{id} | GET | 对话详情 | 日志ID(id) | sessionId、askTime、question、answer、hitType、sceneType、resultStatus、rawRequest、rawResponse | robot_ops_dialogue_log |
| /robot-ops/monitor/dialogue/export | GET | 导出对话日志 | 同分页查询条件 | Excel文件 | robot_ops_dialogue_log |
| /robot-ops/monitor/alarm/page | GET | 安防告警分页 | alarmType、alarmLevel、handleStatus、alarmTimeStart、alarmTimeEnd、pageNum、pageSize | id、alarmTime、alarmType、alarmLevel、sourcePosition、handleStatus、description | robot_ops_alarm_log |
| /robot-ops/monitor/alarm/{id} | GET | 安防告警详情 | 告警ID(id) | alarmTime、alarmType、alarmLevel、sourcePosition、handleStatus、description、snapshotUrl、remark | robot_ops_alarm_log |
| /robot-ops/monitor/alarm/{id}/confirm | PUT | 确认告警 | 告警ID(id)、备注(remark) | 无 | robot_ops_alarm_log |
| /robot-ops/monitor/alarm/{id}/ignore | PUT | 忽略告警 | 告警ID(id)、备注(remark) | 无 | robot_ops_alarm_log |
| /robot-ops/monitor/alarm/export | GET | 导出告警日志 | 同分页查询条件 | Excel文件 | robot_ops_alarm_log |
7.7 运维管理接口
7.7.1 设备状态与设备控制接口
| 接口 | 方法 | 说明 | 请求参数 | 返回/处理字段 | 数据库表 |
| /robot-ops/ops/device-status/detail | GET | 设备状态详情 | 无 | robotName、robotCode、serialNo、ipAddress、macAddress、uptime、onlineStatus、workStatus、batteryLevel、chargeStatus、networkStatus、cpuUsage、memoryUsage、diskUsage、temperature、cameraStatus、micStatus、speakerStatus、screenStatus、mainServiceStatus、serverTime、lastHeartbeatTime | 实时接口返回,不落库 |
| /robot-ops/ops/control/charge-start | POST | 一键充电 | 无或扩展参数 | taskId、resultStatus、resultMsg | robot_ops_control_record、robot_ops_operate_log |
| /robot-ops/ops/control/charge-stop | POST | 停止充电 | 无或扩展参数 | taskId、resultStatus、resultMsg | robot_ops_control_record、robot_ops_operate_log |
| /robot-ops/ops/control/reboot | POST | 重启机器人 | 确认标识(confirmFlag) | taskId、resultStatus、resultMsg | robot_ops_control_record、robot_ops_operate_log |
| /robot-ops/ops/control/shutdown | POST | 关机 | 确认标识(confirmFlag) | taskId、resultStatus、resultMsg | robot_ops_control_record、robot_ops_operate_log |
| /robot-ops/ops/control/restart-service | POST | 重启服务 | 服务名称(serviceName) | taskId、serviceName、resultStatus、resultMsg | robot_ops_control_record、robot_ops_operate_log |
| /robot-ops/ops/control/audio-test | POST | 音频测试 | 测试文本(testText,可选) | resultStatus、resultMsg | robot_ops_control_record、robot_ops_operate_log |
| /robot-ops/ops/control/screen-test | POST | 屏幕测试 | 测试类型(testType,可选) | resultStatus、resultMsg | robot_ops_control_record、robot_ops_operate_log |
| /robot-ops/ops/control/record/page | GET | 设备控制记录分页 | controlType、resultStatus、createTimeStart、createTimeEnd、pageNum、pageSize | id、controlType、controlName、taskId、resultStatus、resultMsg、operateBy、createTime、finishTime | robot_ops_control_record |
| /robot-ops/ops/control/record/{id} | GET | 设备控制记录详情 | 控制记录ID(id) | controlType、controlName、taskId、requestParam、resultStatus、resultMsg、operateBy、createTime、finishTime | robot_ops_control_record |
7.7.2 运行参数接口
| 接口 | 方法 | 说明 | 请求/返回字段 | 数据库表 |
| /robot-ops/ops/param/groups | GET | 参数分组列表 | groupCode、groupName、sortNo、status | robot_ops_param_group |
| /robot-ops/ops/param/page | GET | 参数分页/分组参数 | groupCode、keyword、pageNum、pageSize;返回 paramCode、paramName、paramValue、valueType、unit、editable、requiredFlag、minValue、maxValue、enumOptions、remark | robot_ops_param |
| /robot-ops/ops/param | PUT | 保存参数 | 参数列表(params:paramCode、paramValue) | robot_ops_param、robot_ops_operate_log |
| /robot-ops/ops/param/reset | POST | 重置参数 | groupCode 或 paramCodes | robot_ops_param、robot_ops_operate_log |
参数保存时必须根据 valueType、requiredFlag、minValue、maxValue、enumOptions 做后端校验。
7.7.3 系统诊断与日志接口
| 接口 | 方法 | 说明 | 请求/返回字段 | 数据库表 |
| /robot-ops/ops/diagnosis/overview | GET | 诊断总览 | normalCount、warnCount、failCount、lastCheckTime | robot_ops_diagnosis_item |
| /robot-ops/ops/diagnosis/page | GET | 诊断项分页 | itemName、resultStatus、pageNum、pageSize;返回 itemCode、itemName、resultStatus、detailMsg、lastCheckTime | robot_ops_diagnosis_item |
| /robot-ops/ops/diagnosis/run | POST | 执行诊断 | 诊断项编码(itemCodes,可选) | normalCount、warnCount、failCount、itemList | robot_ops_diagnosis_item、robot_ops_sys_log |
| /robot-ops/ops/diagnosis/export | GET | 导出诊断结果 | resultStatus | Excel文件 | robot_ops_diagnosis_item |
| /robot-ops/ops/log/page | GET | 日志分页 | 日志来源类型(sourceType:SYS/OPERATE,可选)、logType、logLevel、keyword、resultStatus、logTimeStart、logTimeEnd、pageNum、pageSize | id、日志来源类型(sourceType)、logTime、logType、logLevel、moduleName、contentSummary、resultStatus、traceId | robot_ops_sys_log、robot_ops_operate_log |
| /robot-ops/ops/log/{id} | GET | 日志详情 | 日志ID(id)、日志来源类型(sourceType) | logTime、logType、logLevel、moduleName、content、resultStatus、traceId、remark | robot_ops_sys_log、robot_ops_operate_log |
| /robot-ops/ops/log/export | GET | 导出日志 | 同日志分页查询条件 | Excel文件 | robot_ops_sys_log、robot_ops_operate_log |
7.7.4 软件版本与 OTA 升级接口
| 接口 | 方法 | 说明 | 请求/返回字段 | 数据库表 |
| /robot-ops/ops/version/page | GET | 软件版本分页 | moduleCode、moduleName、runStatus、pageNum、pageSize;返回 moduleCode、moduleName、currentVersion、installTime、runStatus | robot_ops_version_info |
| /robot-ops/ops/upgrade/package/upload | POST | 上传升级包 | 文件(file)、模块编码(moduleCode)、目标版本(targetVersion)、安装包名称(packageName) | packageId、packageName、moduleCode、targetVersion、fileUrl、fileSize、uploadBy、uploadTime | robot_ops_upgrade_package |
| /robot-ops/ops/upgrade/package/page | GET | 升级包分页 | packageName、moduleCode、targetVersion、pageNum、pageSize | packageId、packageName、moduleCode、targetVersion、fileSize、uploadBy、uploadTime | robot_ops_upgrade_package |
| /robot-ops/ops/upgrade/package/{id} | DELETE | 删除升级包 | 升级包ID(id) | 无 | robot_ops_upgrade_package |
| /robot-ops/ops/upgrade/execute | POST | 执行升级 | 模块编码(moduleCode)、升级包ID(packageId)、确认标识(confirmFlag) | 升级记录ID(recordId)、升级状态(resultStatus)、升级进度(progressPercent)、结果信息(resultMsg) | robot_ops_upgrade_record、robot_ops_operate_log |
| /robot-ops/ops/upgrade/record/page | GET | 升级记录分页 | moduleCode、resultStatus、startTimeStart、startTimeEnd、pageNum、pageSize | recordId、moduleCode、moduleName、currentVersion、targetVersion、startTime、endTime、resultStatus、resultMsg、progressPercent | robot_ops_upgrade_record |
| /robot-ops/ops/upgrade/record/{id} | GET | 升级详情 | 升级记录ID(id) | moduleCode、moduleName、currentVersion、targetVersion、packageId、executeBy、startTime、endTime、resultStatus、resultMsg、progressPercent | robot_ops_upgrade_record |
7.8 账号管理接口
| 接口 | 方法 | 说明 | 请求/返回字段 | 数据库表 |
| /robot-ops/system/user/page | GET | 账号分页 | username、nickName、status、pageNum、pageSize;返回 userId、username、nickName、roleCode、status、lastLoginTime | robot_ops_user |
| /robot-ops/system/user/{id} | GET | 账号详情 | 用户ID(id) | userId、username、nickName、roleCode、status、remark、lastLoginTime | robot_ops_user |
| /robot-ops/system/user | POST | 新增账号 | username、nickName、password、roleCode、status、remark | 新增用户ID(userId) | robot_ops_user |
| /robot-ops/system/user | PUT | 编辑账号 | userId、nickName、roleCode、status、remark | 无 | robot_ops_user |
| /robot-ops/system/user/{id} | DELETE | 删除账号 | 用户ID(id) | 无 | robot_ops_user |
| /robot-ops/system/user/{id}/reset-password | POST | 重置密码 | 用户ID(id)、新密码(newPassword) | 无 | robot_ops_user |
admin 默认账号不可删除;账号停用后不可登录;所有账号新增、编辑、删除、重置密码操作均需写入操作日志。
8. 数据库表设计
说明:以下表结构按运维端主库设计,命名采用 robot_ops_ 前缀。第 6 章括号内字段为前端/接口字段,采用 camelCase;第 8 章字段为数据库字段,采用 snake_case,例如 robotName 对应 robot_name。机器人基础信息、实时运行状态、资源占用状态、模块状态、视频流状态等由机器人侧实时接口提供,一期不建设 robot_ops_robot_info 和 robot_ops_device_status_snapshot 两张表。
数据库建表语句以 MySQL 8.x 为基线,字段中文说明通过 COMMENT 标注。若项目实际使用 RuoYi 默认字段规范,可在开发时结合 create_by、create_time、update_by、update_time、remark 等公共字段做统一封装。
公共字段约定:除日志流水类表外,内容管理类、访客管理类、运维配置类、系统配置类等业务表统一包含 create_by、create_time、update_by、update_time 四个公共字段,用于记录创建人、创建时间、更新人和更新时间。日志流水类表以业务时间、操作人、处理人等字段为主,不强制补齐全部公共字段。
问答分类使用 RuoYi 系统字典能力维护,不单独建设 robot_ops_faq_category 表。RuoYi 字典类型为 robot_faq_category,当前字典项为:1=问候寒暄,2=产品介绍,3=业务咨询,4=访客引导,5=场所引导,6=安防提示,7=设备使用,8=售后服务,9=常见问题,10=其他。
8.1 基础与权限表
8.1.1 本地账号表 robot_ops_user
CREATE TABLE `robot_ops_user` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`username` VARCHAR(50) NOT NULL COMMENT '登录账号',
`password` VARCHAR(100) NOT NULL COMMENT '登录密码,加密存储',
`nick_name` VARCHAR(50) DEFAULT NULL COMMENT '用户姓名/昵称',
`role_code` VARCHAR(50) DEFAULT NULL COMMENT '角色编码:ADMIN、OPS、VIEWER',
`status` CHAR(1) NOT NULL DEFAULT '1' COMMENT '账号状态:0停用,1启用',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`last_login_time` DATETIME DEFAULT NULL COMMENT '最近登录时间',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_robot_ops_user_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='本地后台账号表';
8.1.2 系统基础配置表 robot_ops_system_config
CREATE TABLE `robot_ops_system_config` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`system_name` VARCHAR(100) DEFAULT NULL COMMENT '后台系统名称',
`system_logo` VARCHAR(255) DEFAULT NULL COMMENT '后台系统Logo地址',
`footer_text` VARCHAR(255) DEFAULT NULL COMMENT '页脚文案',
`record_no` VARCHAR(100) DEFAULT NULL COMMENT '备案号/版权信息',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统基础配置表';
8.2 内容管理表
8.2.1 欢迎语配置表 robot_ops_welcome_config
CREATE TABLE `robot_ops_welcome_config` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`config_key` VARCHAR(50) NOT NULL DEFAULT 'default' COMMENT '配置标识,默认配置固定为default',
`welcome_text` VARCHAR(500) NOT NULL COMMENT '欢迎语文本,前端限制最大200字,数据库预留500字',
`voice_enabled` CHAR(1) NOT NULL DEFAULT '1' COMMENT '是否启用语音播报:0否,1是',
`cooldown_seconds` INT NOT NULL DEFAULT 30 COMMENT '语音播报冷却时间,单位秒',
`status` CHAR(1) NOT NULL DEFAULT '1' COMMENT '启用欢迎语状态:0停用,1启用',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_robot_ops_welcome_config_key` (`config_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='欢迎语配置表';
说明:欢迎语配置一期为单配置页,不作为多条数据列表管理。config_key 用于标识固定配置项,默认配置固定为 default;后端查询和保存时应以 config_key='default' 作为业务定位条件,避免因误插入多条数据导致无法判断当前配置。建议数据库初始化时预置一条 config_key='default' 的默认配置,同时保存接口应支持"有则更新,无则新增"。
说明:welcome_text 数据库预留 500 字长度,前端页面按产品规则限制最大 200 字,便于后续扩展欢迎语内容。
说明:status 控制欢迎语功能整体是否启用;voice_enabled 控制欢迎语触发后是否语音播报;cooldown_seconds 控制语音欢迎语的重复播报间隔。冷却期内再次检测到访客时,可仅做屏幕展示,不重复语音播报。
INSERT INTO `robot_ops_welcome_config`
(`config_key`, `welcome_text`, `voice_enabled`, `cooldown_seconds`, `status`, `remark`, `create_by`, `create_time`, `update_by`, `update_time`)
VALUES
('default', '您好,欢迎光临!我是迎宾巡逻安防机器人,很高兴为您服务。', '1', 30, '1', '系统默认欢迎语配置', 'system', NOW(), 'system', NOW());
8.2.2 问答库表 robot_ops_faq
CREATE TABLE `robot_ops_faq` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`category_type` VARCHAR(50) DEFAULT NULL COMMENT '问题分类字典值,字典类型:robot_faq_category',
`question` VARCHAR(500) NOT NULL COMMENT '标准问题',
`answer` TEXT NOT NULL COMMENT '答案内容',
`sort_no` INT DEFAULT 0 COMMENT '排序号,数字越小越靠前',
`status` CHAR(1) NOT NULL DEFAULT '1' COMMENT '启用状态:0停用,1启用',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_robot_ops_faq_category_type` (`category_type`),
KEY `idx_robot_ops_faq_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='问答库主表';
说明:sort_no 为保留字段,前端页面一期不展示、不编辑。新增问答默认写入 0,编辑问答时保持原值。后续如果需要推荐问答、置顶问答或机器人屏幕端展示排序,再重新设计排序和推荐能力。
8.2.3 相似问表 robot_ops_faq_similar
CREATE TABLE `robot_ops_faq_similar` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`faq_id` BIGINT NOT NULL COMMENT '问答ID,关联robot_ops_faq.id',
`similar_question` VARCHAR(500) NOT NULL COMMENT '相似问文本',
`sort_no` INT DEFAULT 0 COMMENT '排序号,数字越小越靠前',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_robot_ops_faq_similar_faq_id` (`faq_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='问答相似问表';
8.2.4 素材资源表 robot_ops_media_asset
CREATE TABLE `robot_ops_media_asset` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`asset_name` VARCHAR(100) NOT NULL COMMENT '素材名称',
`asset_type` VARCHAR(20) NOT NULL COMMENT '素材类型:image图片,video视频',
`file_url` VARCHAR(500) NOT NULL COMMENT '素材文件地址',
`thumbnail_url` VARCHAR(500) DEFAULT NULL COMMENT '缩略图地址,图片可等于file_url,视频可为封面图',
`file_size` BIGINT DEFAULT NULL COMMENT '文件大小,单位字节',
`file_format` VARCHAR(20) DEFAULT NULL COMMENT '文件格式,如jpg、png、webp、mp4',
`mime_type` VARCHAR(100) DEFAULT NULL COMMENT '文件MIME类型,如image/jpeg、video/mp4',
`duration_seconds` INT DEFAULT NULL COMMENT '视频时长,单位秒;图片为空',
`resolution` VARCHAR(50) DEFAULT NULL COMMENT '分辨率,如1920x1080',
`status` CHAR(1) NOT NULL DEFAULT '1' COMMENT '启用状态:0停用,1启用',
`quoted_flag` CHAR(1) NOT NULL DEFAULT '0' COMMENT '是否被播放方案引用:0否,1是,由系统维护',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间/上传时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_robot_ops_media_asset_type` (`asset_type`),
KEY `idx_robot_ops_media_asset_status` (`status`),
KEY `idx_robot_ops_media_asset_quoted_flag` (`quoted_flag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='素材资源表';
说明:asset_type 为业务素材类型,用于页面筛选、播放方案选择和预览方式判断;mime_type 为文件标准 MIME 类型,用于文件校验、响应和预览处理;file_format 为文件后缀/格式,用于页面展示和导出。
说明:file_url、thumbnail_url、file_size、file_format、mime_type、duration_seconds、resolution 等字段由上传接口自动生成或解析,前端不允许用户手动填写。duration_seconds 仅视频素材需要,图片素材为空。
说明:thumbnail_url 用于列表缩略图和视频封面展示。图片素材如未单独生成缩略图,可使用 file_url;视频素材如一期暂未生成封面图,可为空,前端展示默认视频图标。
说明:quoted_flag 由系统维护,表示素材是否被播放方案引用。删除素材时,应以后端检查 robot_ops_play_plan_item 的实际引用关系为准。
8.2.5 播放方案表 robot_ops_play_plan
CREATE TABLE `robot_ops_play_plan` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`plan_name` VARCHAR(100) NOT NULL COMMENT '播放方案名称',
`loop_mode` VARCHAR(20) DEFAULT 'loop' COMMENT '循环方式:loop循环播放,once播放一次',
`is_default` CHAR(1) NOT NULL DEFAULT '0' COMMENT '是否默认方案:0否,1是',
`status` CHAR(1) NOT NULL DEFAULT '1' COMMENT '启用状态:0停用,1启用',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_robot_ops_play_plan_default` (`is_default`),
KEY `idx_robot_ops_play_plan_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='播放方案主表';
8.2.6 播放方案素材明细表 robot_ops_play_plan_item
CREATE TABLE `robot_ops_play_plan_item` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`plan_id` BIGINT NOT NULL COMMENT '播放方案ID,关联robot_ops_play_plan.id',
`asset_id` BIGINT NOT NULL COMMENT '素材ID,关联robot_ops_media_asset.id',
`play_order` INT DEFAULT 0 COMMENT '播放顺序,数字越小越靠前',
`stay_seconds` INT DEFAULT NULL COMMENT '停留时长,图片必填,视频可为空',
`transition_type` VARCHAR(50) DEFAULT NULL COMMENT '转场方式',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_robot_ops_play_plan_item_plan_id` (`plan_id`),
KEY `idx_robot_ops_play_plan_item_asset_id` (`asset_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='播放方案素材明细表';
8.2.7 播报内容表 robot_ops_broadcast_content
CREATE TABLE `robot_ops_broadcast_content` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`content_name` VARCHAR(100) NOT NULL COMMENT '播报内容名称',
`content_type` VARCHAR(50) DEFAULT NULL COMMENT '内容分类:通知、宣传、提示、安防提醒、自定义',
`broadcast_text` VARCHAR(2000) NOT NULL COMMENT '播报文本',
`status` CHAR(1) NOT NULL DEFAULT '1' COMMENT '启用状态:0停用,1启用',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_robot_ops_broadcast_content_type` (`content_type`),
KEY `idx_robot_ops_broadcast_content_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='播报内容表';
8.2.8 播报任务表 robot_ops_broadcast_task
CREATE TABLE `robot_ops_broadcast_task` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`task_name` VARCHAR(100) NOT NULL COMMENT '播报任务名称',
`content_id` BIGINT NOT NULL COMMENT '播报内容ID,关联robot_ops_broadcast_content.id',
`start_time` VARCHAR(8) DEFAULT NULL COMMENT '开始时间,格式HH:mm:ss',
`end_time` VARCHAR(8) DEFAULT NULL COMMENT '结束时间,格式HH:mm:ss',
`frequency_minutes` INT DEFAULT NULL COMMENT '播报频率,单位分钟',
`cycle_type` VARCHAR(20) DEFAULT NULL COMMENT '循环类型字典值,字典类型:broadcast_task_cycle_type,1按星期,2按日期',
`cycle_value` VARCHAR(255) DEFAULT NULL COMMENT '循环取值:cycle_type=1时保存星期值,如1,2,3,4,5;cycle_type=2时保存日期值,如2026-03-20,2026-03-21',
`status` CHAR(1) NOT NULL DEFAULT '1' COMMENT '启用状态:0停用,1启用',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_robot_ops_broadcast_task_content_id` (`content_id`),
KEY `idx_robot_ops_broadcast_task_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='播报任务表';
播报任务循环类型使用 RuoYi 字典 broadcast_task_cycle_type,字典项建议配置为:1=按星期,2=按日期。按星期时,cycle_value 中 1-7 分别代表星期一到星期日。
8.2.9 展示主题表 robot_ops_theme
CREATE TABLE `robot_ops_theme` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`theme_name` VARCHAR(100) NOT NULL COMMENT '主题名称',
`logo_url` VARCHAR(255) DEFAULT NULL COMMENT 'Logo地址',
`background_type` VARCHAR(20) DEFAULT NULL COMMENT '背景类型:image图片,video视频,color纯色',
`background_url` VARCHAR(255) DEFAULT NULL COMMENT '背景资源地址',
`primary_color` VARCHAR(20) DEFAULT NULL COMMENT '主题主色',
`secondary_color` VARCHAR(20) DEFAULT NULL COMMENT '辅助色',
`welcome_title` VARCHAR(200) DEFAULT NULL COMMENT '欢迎标题',
`welcome_sub_title` VARCHAR(500) DEFAULT NULL COMMENT '欢迎副标题',
`status` CHAR(1) NOT NULL DEFAULT '1' COMMENT '启用状态:0停用,1启用',
`current_enabled` CHAR(1) NOT NULL DEFAULT '0' COMMENT '是否当前启用主题:0否,1是',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_robot_ops_theme_current_enabled` (`current_enabled`),
KEY `idx_robot_ops_theme_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='机器人展示主题表';
8.3 访客管理表
8.3.1 访客记录表 robot_ops_visitor_record
CREATE TABLE `robot_ops_visitor_record` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`visitor_name` VARCHAR(100) NOT NULL COMMENT '访客姓名',
`mobile` VARCHAR(20) DEFAULT NULL COMMENT '手机号',
`id_card_no` VARCHAR(50) DEFAULT NULL COMMENT '身份证号',
`visit_type` VARCHAR(50) NOT NULL COMMENT '到访类型:APPOINTMENT预约到访,WALK_IN现场登记',
`register_type` VARCHAR(50) NOT NULL COMMENT '登记方式:SCREEN机器人端,H5手机端',
`visitor_source` VARCHAR(100) DEFAULT NULL COMMENT '访客来源,如公司、单位、亲友、外卖、快递、供应商等',
`visit_reason` VARCHAR(200) DEFAULT NULL COMMENT '来访事由,如业务接洽、走亲访友、酒店入住、配送、维修、参观等',
`visitor_photo` VARCHAR(255) DEFAULT NULL COMMENT '访客照片地址,由机器人端采集上传',
`appointment_no` VARCHAR(100) DEFAULT NULL COMMENT '关联预约单号,现场登记可为空',
`visited_person` VARCHAR(100) DEFAULT NULL COMMENT '被访对象,可为被访人、房号、部门、接待单位等',
`visit_time` DATETIME NOT NULL COMMENT '来访/登记时间',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_robot_ops_visitor_record_name` (`visitor_name`),
KEY `idx_robot_ops_visitor_record_mobile` (`mobile`),
KEY `idx_robot_ops_visitor_record_id_card_no` (`id_card_no`),
KEY `idx_robot_ops_visitor_record_visit_type` (`visit_type`),
KEY `idx_robot_ops_visitor_record_register_type` (`register_type`),
KEY `idx_robot_ops_visitor_record_appointment_no` (`appointment_no`),
KEY `idx_robot_ops_visitor_record_visit_time` (`visit_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='访客记录表';
说明:访客记录表只保存已完成登记的到访记录,不保存登记失败结果。登记失败、扫码失败、身份证读取失败、预约匹配失败等异常,进入日志中心或后续扩展的登记异常日志。
说明:visit_type 建议使用 RuoYi 字典 visitor_visit_type,字典项为 APPOINTMENT=预约到访,WALK_IN=现场登记。
说明:register_type 建议使用 RuoYi 字典 visitor_register_type,字典项为 SCREEN=机器人端,H5=手机端。机器人端指访客在机器人屏幕完成登记;手机端指访客扫码后在 H5 页面完成登记。
说明:visitor_source 和 visit_reason 为通用文本字段,用于适配公司、酒店、小区、园区、展厅等多种场景,不强制做枚举。
8.3.2 预约记录表 robot_ops_appointment_record
CREATE TABLE `robot_ops_appointment_record` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`appointment_no` VARCHAR(50) NOT NULL COMMENT '预约单号',
`visitor_name` VARCHAR(100) DEFAULT NULL COMMENT '访客姓名',
`mobile` VARCHAR(20) DEFAULT NULL COMMENT '访客手机号',
`visited_person` VARCHAR(100) DEFAULT NULL COMMENT '被访人/被访对象',
`appointment_time` DATETIME DEFAULT NULL COMMENT '预约到访时间',
`status` VARCHAR(20) DEFAULT NULL COMMENT '预约状态:待到访、已到访、已取消、已过期',
`sync_time` DATETIME DEFAULT NULL COMMENT '同步到本地时间',
`source_platform` VARCHAR(50) DEFAULT NULL COMMENT '来源平台',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_robot_ops_appointment_no` (`appointment_no`),
KEY `idx_robot_ops_appointment_time` (`appointment_time`),
KEY `idx_robot_ops_appointment_mobile` (`mobile`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='访客预约记录表';
8.3.3 白名单表 robot_ops_whitelist
CREATE TABLE `robot_ops_whitelist` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` VARCHAR(100) NOT NULL COMMENT '姓名',
`mobile` VARCHAR(20) DEFAULT NULL COMMENT '手机号',
`id_card_no` VARCHAR(50) DEFAULT NULL COMMENT '身份证号',
`whitelist_type` VARCHAR(50) DEFAULT NULL COMMENT '人员类型字典值,如internal内部人员、visitor访客、vip VIP、other其他',
`face_image_url` VARCHAR(255) DEFAULT NULL COMMENT '人脸照片地址,用于机器人侧照片比对',
`source_type` VARCHAR(50) DEFAULT NULL COMMENT '来源类型字典值:1本地录入,2平台同步,3机器人采集',
`valid_start_time` DATETIME DEFAULT NULL COMMENT '有效开始时间,不填表示立即生效',
`valid_end_time` DATETIME DEFAULT NULL COMMENT '有效结束时间,不填表示长期有效',
`status` CHAR(1) NOT NULL DEFAULT '1' COMMENT '启用状态:0停用,1启用',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_robot_ops_whitelist_mobile` (`mobile`),
KEY `idx_robot_ops_whitelist_id_card_no` (`id_card_no`),
KEY `idx_robot_ops_whitelist_type` (`whitelist_type`),
KEY `idx_robot_ops_whitelist_source_type` (`source_type`),
KEY `idx_robot_ops_whitelist_status` (`status`),
KEY `idx_robot_ops_whitelist_valid_time` (`valid_start_time`, `valid_end_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='白名单表';
说明:whitelist_type 当前页面显示为"人员类型",用于描述人员身份,不表示识别方式。建议字典项为 internal=内部人员、visitor=访客、vip=VIP、other=其他。
说明:白名单不设置 recognition_type / auth_type 字段,因为同一人员可同时支持人脸照片、身份证号、手机号多种匹配方式。机器人侧根据实际采集到的信息选择对应字段进行匹配。
说明:一期不建设 face_feature_id 字段。当前人脸白名单采用照片比对方式,仅保存 face_image_url。
说明:source_type 使用 RuoYi 字典 source_type,当前字典项为 1=本地录入、2=平台同步、3=机器人采集。运维后台新增和导入的数据默认写入 1,平台同步和机器人采集数据由对应接口写入。
8.4 监控与日志表
8.4.1 远程喊话记录表 robot_ops_shout_record
CREATE TABLE `robot_ops_shout_record` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`shout_text` VARCHAR(1000) NOT NULL COMMENT '喊话文本',
`volume` INT DEFAULT NULL COMMENT '音量,0-100',
`play_times` INT DEFAULT 1 COMMENT '播放次数',
`interrupt_flag` CHAR(1) DEFAULT '0' COMMENT '是否打断当前播报:0否,1是',
`result_status` VARCHAR(20) DEFAULT NULL COMMENT '执行状态:SUCCESS成功,FAIL失败,RUNNING执行中',
`result_msg` VARCHAR(500) DEFAULT NULL COMMENT '执行结果信息/失败原因',
`operate_by` VARCHAR(64) DEFAULT NULL COMMENT '操作人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间/喊话时间',
PRIMARY KEY (`id`),
KEY `idx_robot_ops_shout_record_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='远程喊话记录表';
8.4.2 对话日志表 robot_ops_dialogue_log
CREATE TABLE `robot_ops_dialogue_log` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`session_id` VARCHAR(100) DEFAULT NULL COMMENT '会话ID',
`ask_time` DATETIME DEFAULT NULL COMMENT '提问时间',
`question` VARCHAR(1000) DEFAULT NULL COMMENT '用户问题',
`answer` TEXT COMMENT '机器人回答',
`hit_type` VARCHAR(50) DEFAULT NULL COMMENT '命中方式:FAQ命中、未命中、其他',
`scene_type` VARCHAR(50) DEFAULT NULL COMMENT '来源场景:欢迎接待、咨询问答、其他',
`result_status` VARCHAR(20) DEFAULT NULL COMMENT '结果状态:SUCCESS成功,FAIL失败,TIMEOUT超时',
`raw_request` TEXT COMMENT '原始请求内容',
`raw_response` TEXT COMMENT '原始响应内容',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_robot_ops_dialogue_log_session_id` (`session_id`),
KEY `idx_robot_ops_dialogue_log_ask_time` (`ask_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人机对话日志表';
8.4.3 安防告警日志表 robot_ops_alarm_log
CREATE TABLE `robot_ops_alarm_log` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`alarm_time` DATETIME DEFAULT NULL COMMENT '告警时间',
`alarm_type` VARCHAR(50) DEFAULT NULL COMMENT '告警类型',
`alarm_level` VARCHAR(20) DEFAULT NULL COMMENT '告警级别:LOW低,MEDIUM中,HIGH高,CRITICAL紧急',
`source_position` VARCHAR(100) DEFAULT NULL COMMENT '来源位置/区域/模块',
`handle_status` VARCHAR(20) DEFAULT 'UNHANDLED' COMMENT '处理状态:UNHANDLED未处理,CONFIRMED已确认,IGNORED已忽略',
`description` VARCHAR(1000) DEFAULT NULL COMMENT '告警描述',
`snapshot_url` VARCHAR(255) DEFAULT NULL COMMENT '抓拍图地址',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_robot_ops_alarm_log_time` (`alarm_time`),
KEY `idx_robot_ops_alarm_log_level` (`alarm_level`),
KEY `idx_robot_ops_alarm_log_status` (`handle_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='安防告警日志表';
8.4.4 系统日志表 robot_ops_sys_log
CREATE TABLE `robot_ops_sys_log` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`log_time` DATETIME DEFAULT NULL COMMENT '日志时间',
`log_type` VARCHAR(50) DEFAULT NULL COMMENT '日志类型:系统日志、设备日志、升级日志、服务日志',
`log_level` VARCHAR(20) DEFAULT NULL COMMENT '日志级别:INFO、WARN、ERROR',
`module_name` VARCHAR(100) DEFAULT NULL COMMENT '模块名称',
`content` TEXT COMMENT '日志内容',
`result_status` VARCHAR(20) DEFAULT NULL COMMENT '结果状态',
`trace_id` VARCHAR(100) DEFAULT NULL COMMENT '链路追踪ID',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_robot_ops_sys_log_time` (`log_time`),
KEY `idx_robot_ops_sys_log_type` (`log_type`),
KEY `idx_robot_ops_sys_log_level` (`log_level`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统日志表';
8.4.5 操作日志表 robot_ops_operate_log
CREATE TABLE `robot_ops_operate_log` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`operate_time` DATETIME DEFAULT NULL COMMENT '操作时间',
`operate_user` VARCHAR(64) DEFAULT NULL COMMENT '操作人',
`module_name` VARCHAR(100) DEFAULT NULL COMMENT '操作模块',
`operate_type` VARCHAR(50) DEFAULT NULL COMMENT '操作类型:新增、编辑、删除、控制、升级等',
`operate_content` VARCHAR(1000) DEFAULT NULL COMMENT '操作内容',
`result_status` VARCHAR(20) DEFAULT NULL COMMENT '操作结果:SUCCESS成功,FAIL失败',
`result_msg` VARCHAR(500) DEFAULT NULL COMMENT '结果信息/失败原因',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_robot_ops_operate_log_time` (`operate_time`),
KEY `idx_robot_ops_operate_log_user` (`operate_user`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='后台操作日志表';
8.5 运维与升级表
8.5.1 参数分组表 robot_ops_param_group
CREATE TABLE `robot_ops_param_group` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`group_code` VARCHAR(50) NOT NULL COMMENT '参数分组编码',
`group_name` VARCHAR(100) NOT NULL COMMENT '参数分组名称',
`sort_no` INT DEFAULT 0 COMMENT '排序号,数字越小越靠前',
`status` CHAR(1) NOT NULL DEFAULT '1' COMMENT '启用状态:0停用,1启用',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_robot_ops_param_group_code` (`group_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运行参数分组表';
8.5.2 设备控制记录表 robot_ops_control_record
CREATE TABLE `robot_ops_control_record` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`control_type` VARCHAR(50) NOT NULL COMMENT '控制类型:充电、停止充电、重启、关机、重启服务、音频测试、屏幕测试等',
`control_name` VARCHAR(100) DEFAULT NULL COMMENT '控制名称',
`task_id` VARCHAR(100) DEFAULT NULL COMMENT '机器人侧返回的任务ID',
`request_param` TEXT COMMENT '请求参数JSON',
`result_status` VARCHAR(20) DEFAULT NULL COMMENT '执行状态:SUCCESS成功,FAIL失败,RUNNING执行中,PENDING等待中',
`result_msg` VARCHAR(500) DEFAULT NULL COMMENT '执行结果信息/失败原因',
`operate_by` VARCHAR(64) DEFAULT NULL COMMENT '操作人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间/下发时间',
`finish_time` DATETIME DEFAULT NULL COMMENT '完成时间',
PRIMARY KEY (`id`),
KEY `idx_robot_ops_control_record_task_id` (`task_id`),
KEY `idx_robot_ops_control_record_type` (`control_type`),
KEY `idx_robot_ops_control_record_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备控制记录表';
8.5.3 运行参数表 robot_ops_param
CREATE TABLE `robot_ops_param` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`group_code` VARCHAR(50) NOT NULL COMMENT '参数分组编码,关联robot_ops_param_group.group_code',
`param_code` VARCHAR(100) NOT NULL COMMENT '参数编码',
`param_name` VARCHAR(100) NOT NULL COMMENT '参数名称',
`param_value` VARCHAR(2000) DEFAULT NULL COMMENT '参数值',
`value_type` VARCHAR(20) DEFAULT NULL COMMENT '值类型:string、int、float、boolean、enum、json',
`unit` VARCHAR(20) DEFAULT NULL COMMENT '单位',
`editable` CHAR(1) NOT NULL DEFAULT '1' COMMENT '是否可编辑:0否,1是',
`required_flag` CHAR(1) NOT NULL DEFAULT '0' COMMENT '是否必填:0否,1是',
`min_value` VARCHAR(50) DEFAULT NULL COMMENT '最小值',
`max_value` VARCHAR(50) DEFAULT NULL COMMENT '最大值',
`enum_options` VARCHAR(2000) DEFAULT NULL COMMENT '枚举项JSON',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '参数说明/备注',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_robot_ops_param_code` (`group_code`,`param_code`),
KEY `idx_robot_ops_param_group_code` (`group_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运行参数配置表';
8.5.4 系统诊断项表 robot_ops_diagnosis_item
CREATE TABLE `robot_ops_diagnosis_item` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`item_code` VARCHAR(50) NOT NULL COMMENT '诊断项编码',
`item_name` VARCHAR(100) NOT NULL COMMENT '诊断项名称',
`result_status` VARCHAR(20) DEFAULT NULL COMMENT '检查结果:NORMAL正常,WARN告警,FAIL失败',
`detail_msg` VARCHAR(1000) DEFAULT NULL COMMENT '详情描述',
`last_check_time` DATETIME DEFAULT NULL COMMENT '最后检查时间',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_robot_ops_diagnosis_item_code` (`item_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统诊断项表';
说明:一期仅保留各诊断项的最新诊断结果;如后续需要追踪每次诊断历史,可在二期扩展诊断记录表和诊断明细表。
8.5.5 软件版本信息表 robot_ops_version_info
CREATE TABLE `robot_ops_version_info` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`module_code` VARCHAR(50) NOT NULL COMMENT '模块编码',
`module_name` VARCHAR(100) NOT NULL COMMENT '模块名称',
`current_version` VARCHAR(50) DEFAULT NULL COMMENT '当前版本号',
`install_time` DATETIME DEFAULT NULL COMMENT '安装时间',
`run_status` VARCHAR(20) DEFAULT NULL COMMENT '运行状态:RUNNING运行中,STOPPED已停止,ERROR异常',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_robot_ops_version_module_code` (`module_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='软件版本信息表';
8.5.6 升级包表 robot_ops_upgrade_package
CREATE TABLE `robot_ops_upgrade_package` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`package_name` VARCHAR(100) NOT NULL COMMENT '安装包名称',
`module_code` VARCHAR(50) NOT NULL COMMENT '升级模块编码',
`target_version` VARCHAR(50) NOT NULL COMMENT '目标版本号',
`file_url` VARCHAR(255) NOT NULL COMMENT '升级包文件地址',
`file_size` BIGINT DEFAULT NULL COMMENT '文件大小,单位字节',
`upload_by` VARCHAR(64) DEFAULT NULL COMMENT '上传人',
`upload_time` DATETIME DEFAULT NULL COMMENT '上传完成时间',
`create_by` VARCHAR(64) DEFAULT NULL COMMENT '创建人',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(64) DEFAULT NULL COMMENT '更新人',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_robot_ops_upgrade_package_module` (`module_code`),
KEY `idx_robot_ops_upgrade_package_version` (`target_version`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='OTA升级包表';
8.5.7 升级记录表 robot_ops_upgrade_record
CREATE TABLE `robot_ops_upgrade_record` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`module_code` VARCHAR(50) NOT NULL COMMENT '模块编码',
`module_name` VARCHAR(100) DEFAULT NULL COMMENT '模块名称',
`current_version` VARCHAR(50) DEFAULT NULL COMMENT '原版本号',
`target_version` VARCHAR(50) DEFAULT NULL COMMENT '目标版本号',
`package_id` BIGINT DEFAULT NULL COMMENT '升级包ID,关联robot_ops_upgrade_package.id',
`execute_by` VARCHAR(64) DEFAULT NULL COMMENT '执行人',
`start_time` DATETIME DEFAULT NULL COMMENT '升级开始时间',
`end_time` DATETIME DEFAULT NULL COMMENT '升级结束时间',
`result_status` VARCHAR(20) DEFAULT NULL COMMENT '升级状态:SUCCESS成功,FAIL失败,RUNNING升级中,PENDING等待中',
`result_msg` VARCHAR(1000) DEFAULT NULL COMMENT '升级结果信息/失败原因',
`progress_percent` INT DEFAULT 0 COMMENT '升级进度百分比,0-100',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_robot_ops_upgrade_record_module` (`module_code`),
KEY `idx_robot_ops_upgrade_record_status` (`result_status`),
KEY `idx_robot_ops_upgrade_record_start_time` (`start_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='OTA升级记录表';
一期不建设机器人基础信息表和设备状态快照表。首页总览、设备状态页、视频预览页的数据以机器人侧实时接口为准;如二期需要状态历史趋势、离线查看最近状态、故障追溯统计,再扩展设备状态快照表。