Преглед на файлове

完善前端首页内容

yawuga преди 1 седмица
родител
ревизия
91c63c07ee
променени са 2 файла, в които са добавени 1134 реда и са изтрити 1272 реда
  1. 998 1165
      src/views/index.vue
  2. 136 107
      迎宾巡逻安防机器人运维端Web管理系统详细设计开发文档_V2.1.html

+ 998 - 1165
src/views/index.vue

@@ -1,1203 +1,1036 @@
 <template>
-  <div class="app-container home">
-    <el-row :gutter="20">
-      <el-col :sm="24" :lg="12" style="padding-left: 20px">
-        <h2>若依后台管理框架</h2>
-        <p>
-          一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。
-        </p>
-        <p>
-          <b>当前版本:</b> <span>v{{ version }}</span>
-        </p>
-        <p>
-          <el-tag type="danger">&yen;免费开源</el-tag>
-        </p>
-        <p>
-          <el-button
-            type="primary"
-            icon="Cloudy"
-            plain
-            @click="goTarget('https://gitee.com/y_project/RuoYi-Vue')"
-            >访问码云</el-button
-          >
-          <el-button
-            icon="HomeFilled"
-            plain
-            @click="goTarget('http://ruoyi.vip')"
-            >访问主页</el-button
-          >
-        </p>
-      </el-col>
-
-      <el-col :sm="24" :lg="12" style="padding-left: 50px">
-        <el-row>
-          <el-col :span="12">
-            <h2>技术选型</h2>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="6">
-            <h4>后端技术</h4>
-            <ul>
-              <li>SpringBoot</li>
-              <li>Spring Security</li>
-              <li>JWT</li>
-              <li>MyBatis</li>
-              <li>Druid</li>
-              <li>Fastjson</li>
-              <li>...</li>
-            </ul>
-          </el-col>
-          <el-col :span="6">
-            <h4>前端技术</h4>
-            <ul>
-              <li>Vue</li>
-              <li>Vuex</li>
-              <li>Element-ui</li>
-              <li>Axios</li>
-              <li>Sass</li>
-              <li>Quill</li>
-              <li>...</li>
-            </ul>
-          </el-col>
-        </el-row>
-      </el-col>
-    </el-row>
-    <el-divider />
-    <el-row :gutter="20">
-      <el-col :xs="24" :sm="24" :md="12" :lg="8">
-        <el-card class="update-log">
-          <template v-slot:header>
-            <div class="clearfix">
-              <span>联系信息</span>
+  <div class="app-container robot-home">
+    <!-- 顶部状态区 -->
+    <div class="status-hero">
+      <div class="status-main">
+        <div class="robot-icon">
+          <svg viewBox="0 0 24 24" width="36" height="36" fill="currentColor">
+            <path d="M12 2a2 2 0 0 1 2 2c0 .74-.4 1.39-1 1.73V7h1a7 7 0 0 1 7 7h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-1v1a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-1H2a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h1a7 7 0 0 1 7-7h1V5.73c-.6-.34-1-.99-1-1.73a2 2 0 0 1 2-2M7.5 13A2.5 2.5 0 0 0 5 15.5 2.5 2.5 0 0 0 7.5 18a2.5 2.5 0 0 0 2.5-2.5A2.5 2.5 0 0 0 7.5 13m9 0a2.5 2.5 0 0 0-2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5-2.5 2.5 2.5 0 0 0-2.5-2.5z"/>
+          </svg>
+        </div>
+        <div class="status-info">
+          <div class="status-name">{{ robotStatus.robotName }}</div>
+          <div class="status-code">{{ robotStatus.robotCode }}</div>
+          <div class="status-tags">
+            <el-tag :type="robotStatus.onlineStatus === 'online' ? 'success' : 'info'" size="small">
+              {{ robotStatus.onlineStatus === 'online' ? '在线' : '离线' }}
+            </el-tag>
+            <el-tag :type="workStatusType" size="small">
+              {{ workStatusText }}
+            </el-tag>
+          </div>
+        </div>
+      </div>
+      <div class="status-indicators">
+        <div class="indicator-item">
+          <span class="indicator-label">电量</span>
+          <span class="indicator-value">{{ robotStatus.batteryLevel }}%</span>
+          <el-progress :percentage="robotStatus.batteryLevel" :color="batteryColor" :show-text="false" style="width: 64px" />
+        </div>
+        <div class="indicator-item">
+          <span class="indicator-label">充电</span>
+          <el-tag :type="chargeTagType" size="small">{{ chargeStatusText }}</el-tag>
+        </div>
+        <div class="indicator-item">
+          <span class="indicator-label">网络</span>
+          <el-tag :type="robotStatus.networkStatus === 'normal' ? 'success' : 'danger'" size="small">
+            {{ robotStatus.networkStatus === 'normal' ? '正常' : '异常' }}
+          </el-tag>
+        </div>
+        <div class="indicator-item">
+          <span class="indicator-label">IP</span>
+          <span class="indicator-value mono">{{ robotStatus.ipAddress }}</span>
+        </div>
+        <div class="indicator-item">
+          <span class="indicator-label">版本</span>
+          <span class="indicator-value">{{ robotStatus.currentVersion }}</span>
+        </div>
+      </div>
+      <div class="status-time">
+        <span class="time-label">最后更新</span>
+        <span class="time-value mono">{{ nowTime }}</span>
+      </div>
+    </div>
+
+    <!-- 主工作区:左侧视频 + 右侧喊话+控制 -->
+    <div class="main-grid">
+      <!-- 左侧:视频预览 -->
+      <el-card class="dashboard-card video-card" shadow="hover">
+        <template #header>
+          <div class="card-header">
+            <span class="card-title">视频预览</span>
+            <el-tag :type="videoConnected ? 'success' : 'info'" size="small">
+              {{ videoConnected ? '播放中' : '未连接' }}
+            </el-tag>
+          </div>
+        </template>
+        <div class="video-placeholder">
+          <div class="video-center">
+            <svg viewBox="0 0 24 24" width="52" height="52" fill="currentColor" class="video-icon">
+              <path d="M17 10.5V7a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-3.5l4 4v-11l-4 4z"/>
+            </svg>
+            <div class="video-hint-primary">等待接入视频流</div>
+            <div class="video-hint-secondary">机器人摄像头实时画面将在此显示</div>
+          </div>
+        </div>
+        <div class="video-meta">
+          <span>码流:主码流</span>
+          <span>分辨率:1280 × 720</span>
+          <span>更新时间:{{ nowTime }}</span>
+        </div>
+        <div class="video-actions">
+          <el-button type="primary" plain @click="refreshVideo">
+            <el-icon><RefreshRight /></el-icon>刷新
+          </el-button>
+          <el-button type="primary" plain @click="reconnectVideo">
+            <el-icon><Connection /></el-icon>重新连接
+          </el-button>
+          <el-button type="primary" plain @click="handleFullscreenVideo">
+            <el-icon><FullScreen /></el-icon>全屏
+          </el-button>
+        </div>
+      </el-card>
+
+      <!-- 右侧:喊话 + 控制 -->
+      <div class="right-panel">
+        <!-- 远程喊话 -->
+        <el-card class="dashboard-card shout-card" shadow="hover">
+          <template #header>
+            <div class="card-header">
+              <span class="card-title">远程喊话</span>
             </div>
           </template>
-          <div class="body">
-            <p>
-              <i class="el-icon-s-promotion"></i> 官网:<el-link
-                href="http://www.ruoyi.vip"
-                target="_blank"
-                >http://www.ruoyi.vip</el-link
-              >
-            </p>
-            <p>
-              <i class="el-icon-user-solid"></i> QQ群:<s> 满937441 </s> <s> 满887144332 </s>
-              <s> 满180251782 </s> <s> 满104180207 </s> <s> 满186866453 </s> <s> 满201396349 </s>
-              <s> 满101456076 </s> <s> 满101539465 </s> <s> 满264312783 </s> <s> 满167385320 </s> 
-              <s> 满104748341 </s> <s> 满160110482 </s> <s> 满170801498 </s> <s> 满108482800 </s> 
-              <s> 满101046199 </s> <s> 满136919097 </s> <s> 满143961921 </s> <s> 满174951577 </s> 
-              <s> 满161281055 </s> <s> 满138988063 </s> <s> 满151450850 </s> <s> 满224622315 </s>
-              <s> 满287842588 </s> <s> 满187944233 </s> <s> 满228578329 </s> <s> 满191164766 </s>
-              <s> 满174569686 </s> <a href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=M9y5NjAl44lAL_Vh2crmEehZU_PMU6KS&authKey=ZSDz8hEREWSaPuxQV3gEwqGIaGjfRNnkB4rJjf0IvXhrSUGSGwQFmBA%2Boe8HFxyl&noverify=0&group_code=127358632" target="_blank">127358632</a>
-            </p>
-            <p>
-              <i class="el-icon-chat-dot-round"></i> 微信:<a
-                href="javascript:;"
-                >/ *若依</a
-              >
-            </p>
-            <p>
-              <i class="el-icon-money"></i> 支付宝:<a
-                href="javascript:;"
-                class="支付宝信息"
-                >/ *若依</a
-              >
-            </p>
+          <div class="mic-panel">
+            <!-- 麦克风大按钮 -->
+            <div
+              class="mic-button"
+              :class="{ 'is-speaking': shoutState.speaking }"
+              @click="toggleShout"
+            >
+              <el-icon class="mic-icon" :size="44">
+                <Microphone />
+              </el-icon>
+            </div>
+            <!-- 状态文字 -->
+            <div class="mic-status" :class="statusClass">{{ shoutState.statusText }}</div>
+            <!-- 说明文字 -->
+            <div class="mic-desc">点击麦克风按钮开始远程喊话,再次点击结束喊话</div>
+            <!-- 音量控制 -->
+            <div class="volume-row">
+              <el-icon :size="16" style="color: #909399"><Microphone /></el-icon>
+              <span style="font-size: 12px; color: #909399; width: 36px">音量</span>
+              <el-slider
+                v-model="shoutState.volume"
+                :min="0"
+                :max="100"
+                style="flex: 1"
+              />
+              <span style="font-size: 12px; color: #606266; width: 28px; text-align: right">{{ shoutState.volume }}</span>
+            </div>
+            <!-- 底部操作 -->
+            <div class="shout-actions">
+              <el-button :disabled="shoutState.connected" @click="connectShout">连接设备</el-button>
+              <el-button
+                :disabled="!shoutState.connected"
+                type="danger"
+                @click="stopShout"
+              >结束喊话</el-button>
+            </div>
           </div>
         </el-card>
-      </el-col>
-      <el-col :xs="24" :sm="24" :md="12" :lg="8">
-        <el-card class="update-log">
-          <template v-slot:header>
-            <div class="clearfix">
-              <span>更新日志</span>
+
+        <!-- 设备控制 -->
+        <el-card class="dashboard-card control-card" shadow="hover">
+          <template #header>
+            <div class="card-header">
+              <span class="card-title">设备控制</span>
             </div>
           </template>
-          <el-collapse accordion>
-            <el-collapse-item title="v3.9.2 - 2026-03-26">
-              <ol>
-                <li>新增锁定屏幕功能</li>
-                <li>首页新增通知公告消息提醒</li>
-                <li>添加持久化标签页开关功能</li>
-                <li>菜单搜索支持文本高亮&数量提示</li>
-                <li>添加菜单路由地址和名称的校验规则</li>
-                <li>字典类型列表新增抽屉效果详细信息</li>
-                <li>升级axios到最新版本0.30.3</li>
-                <li>使用SpringDoc代替Swagger</li>
-                <li>升级spring-boot到最新版本4.0.3</li>
-                <li>升级yauaa到最新版本8.1.0</li>
-                <li>升级oshi到最新版本6.10.0</li>
-                <li>升级druid到最新版本1.2.28</li>
-                <li>升级fastjson到最新版2.0.61</li>
-                <li>升级pagehelper到最新版2.1.1</li>
-                <li>优化操作日志详细页面</li>
-                <li>更新在线IP地址查询url</li>
-                <li>部门管理支持批量保存排序</li>
-                <li>菜单管理支持批量保存排序</li>
-                <li>菜单管理列表新增类型显示</li>
-                <li>代码生成模板支持TypeScript版本</li>
-                <li>优化菜单主题风格显示</li>
-                <li>优化topbar顶部菜单样式</li>
-                <li>优化点击任务名称查看详细</li>
-                <li>优化字典类型属性提醒说明</li>
-                <li>优化防重提交间隔时间可自定义</li>
-                <li>优化页签功能&支持全屏按钮操作</li>
-                <li>优化RightToolbar搜索栏切换动画</li>
-                <li>修复Excel自定义格式样式污染问题</li>
-                <li>优化isAdmin方法统一到SecurityUtils</li>
-                <li>优化定时任务详情页展示&补充执行时间字段</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.9.1 - 2025-12-18">
-              <ol>
-                <li>支持防盗链功能</li>
-                <li>菜单导航设置支持纯顶部</li>
-                <li>使用yauaa代替bitwalker</li>
-                <li>用户头像更换后移除旧头像文件</li>
-                <li>支持Excel导出对象的多个子列表</li>
-                <li>升级oshi到最新版本6.9.1</li>
-                <li>升级druid到最新版本1.2.27</li>
-                <li>升级fastjson到最新版2.0.60</li>
-                <li>升级spring-security到5.7.14</li>
-                <li>升级tomcat到最新版本9.0.112</li>
-                <li>升级commons.io到最新版本2.21.0</li>
-                <li>用户导入添加验证提示</li>
-                <li>显示列信息支持对象格式</li>
-                <li>忽略用户密码字段的JSON序列化</li>
-                <li>网页标题设置新增SET_TITLE方法</li>
-                <li>自动识别json对象白名单配置范围缩小</li>
-                <li>登录/注册页面底部版权信息修改为读取配置</li>
-                <li>修复用户归属部门无法修改为空问题</li>
-                <li>修复固定头部时出现的导航栏偏移问题</li>
-                <li>修复v3时间控件between选择后清空报错问题</li>
-                <li>修复comboReadDict属性下多个sheet出现的报错</li>
-                <li>修复表单构建移除所有控件后切换路由回来空白问题</li>
-                <li>优化布局设置显示</li>
-                <li>优化字典组件值宽松匹配</li>
-                <li>优化获取字典类型值的方法</li>
-                <li>优化生成代码下载的zip文件名</li>
-                <li>优化日志记录参数拼装提升效率</li>
-                <li>优化导入文件检查标题行不能为空</li>
-                <li>优化表单构建关闭页签销毁复制插件</li>
-                <li>优化Excel统计行数值的单元格样式显示</li>
-                <li>优化数据权限控制逻辑,放开permission限制</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.9.0 - 2025-05-28">
-              <ol>
-                <li>优化菜单搜索查询页</li>
-                <li>导航栏显示昵称&设置</li>
-                <li>菜单管理新增路由名称</li>
-                <li>添加底部版权信息&开关</li>
-                <li>分配角色禁用不允许勾选</li>
-                <li>Excel导入导出支持多图片</li>
-                <li>添加页签图标显示开关功能</li>
-                <li>上传组件新增拖动排序属性</li>
-                <li>显隐列组件支持全选/全不选</li>
-                <li>初始密码支持自定义修改策略</li>
-                <li>账号密码支持自定义更新周期</li>
-                <li>代码生成列表支持按时间排序</li>
-                <li>支持富文本复制粘贴图片上传至url</li>
-                <li>支持文件&图片组件自定义地址&参数</li>
-                <li>升级tomcat到最新版本9.0.105</li>
-                <li>升级oshi到最新版本6.8.1</li>
-                <li>升级fastjson到最新版2.0.57</li>
-                <li>升级commons.io到最新版本2.19.0</li>
-                <li>package.json移除runjs依赖</li>
-                <li>package.json移除eslint依赖</li>
-                <li>package.json移除vue-meta依赖</li>
-                <li>修复代码生成主子表校验必填失效问题</li>
-                <li>优化前端树结构性能问题</li>
-                <li>优化前端处理路由函数代码</li>
-                <li>优化文件上传组件新增类型</li>
-                <li>优化顶部菜单搜索栏为多层级显示</li>
-                <li>优化文件&图片上传组件新增disabled属性</li>
-                <li>优化空指针异常时无法获取错误信息问题</li>
-                <li>优化定时任务字符包含多个括号导致数据错误</li>
-                <li>优化登录&注册页表头使用VUE_APP_TITLE配置值</li>
-                <li>优化导出Excel日期格式双击离开后与设定的格式不一致问题</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.9 - 2024-12-30">
-              <ol>
-                <li>用户管理支持分栏拖动</li>
-                <li>修改主题样式本地读取</li>
-                <li>用户头像http(s)链接支持</li>
-                <li>用户管理过滤掉已禁用部门</li>
-                <li>支持自定义显示Excel属性列</li>
-                <li>操作日志记录DELETE请求参数</li>
-                <li>白名单支持对通配符路径匹配</li>
-                <li>校检文件名是否包含特殊字符</li>
-                <li>代码生成创建表屏蔽违规的字符</li>
-                <li>菜单面包屑导航支持多层级显示</li>
-                <li>Excel注解支持wrapText是否允许内容换行</li>
-                <li>代码生成新增配置是否允许文件覆盖到本地</li>
-                <li>修复角色禁用权限不失效问题</li>
-                <li>修复代码生成上级菜单显示问题</li>
-                <li>修复导出子列表对象只能在最后的问题</li>
-                <li>修复TopNav无法正确获取active的问题</li>
-                <li>修复默认关闭Tags-Views内链页面打不开</li>
-                <li>升级oshi到最新版本6.6.5</li>
-                <li>升级tomcat到最新版本9.0.96</li>
-                <li>升级fastjson到最新版2.0.53</li>
-                <li>升级logback到最新版本1.2.13</li>
-                <li>升级spring-framework到最新版本5.3.39</li>
-                <li>升级quill到最新版本2.0.2</li>
-                <li>升级axios到最新版本0.28.1</li>
-                <li>优化身份证脱敏正则</li>
-                <li>优化权限更新后同步缓存</li>
-                <li>优化查询时间范围日期格式</li>
-                <li>优化参数键值更换为多行文本</li>
-                <li>优化导入带标题文件关闭清理</li>
-                <li>优化上传图片带域名不增加前缀</li>
-                <li>优化特殊字符密码修改失败问题</li>
-                <li>优化无用户编号不校验数据权限</li>
-                <li>优化TopNav内链菜单点击没有高亮</li>
-                <li>优化菜单管理切换Mini布局错乱问题</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.8 - 2024-06-30">
-              <ol>
-                <li>菜单管理新增路由名称</li>
-                <li>新增数据脱敏过滤注解</li>
-                <li>用户密码新增非法字符验证</li>
-                <li>限制用户操作数据权限范围</li>
-                <li>代码生成新增创建表结构功能</li>
-                <li>定时任务白名单配置范围缩小</li>
-                <li>优化代码生成主子表关联查询方式</li>
-                <li>Excel注解新增属性comboReadDict</li>
-                <li>Excel注解ColumnType类型新增文本</li>
-                <li>新增国际化资源文件配置</li>
-                <li>升级oshi到最新版本6.6.1</li>
-                <li>升级druid到最新版本1.2.23</li>
-                <li>升级core-js到最新版本3.37.1</li>
-                <li>更新HttpUtils中的User-Agent</li>
-                <li>更新compressionPlugin到6.1.2以兼容node18+</li>
-                <li>升级spring-security到安全版本,防止漏洞风险</li>
-                <li>升级spring-framework到安全版本,防止漏洞风险</li>
-                <li>优化自定义XSS注解匹配方式</li>
-                <li>优化缓存监控键名列表排序显示</li>
-                <li>优化定时任务日志默认按时间排序</li>
-                <li>优化默认文件大小超过2G无效的问题</li>
-                <li>优化查表特殊字符使用反斜杠进行转义</li>
-                <li>优化定时任务cron表达式小时配置显示错误问题</li>
-                <li>优化多个自定数据权限使用in查询,避免多次拼接</li>
-                <li>优化导入Excel时设置dictType属性重复查缓存问题</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.7 - 2023-12-08">
-              <ol>
-                <li>操作日志记录部门名称</li>
-                <li>全局数据存储用户编号</li>
-                <li>新增编程式判断资源访问权限</li>
-                <li>操作日志列表新增IP地址查询</li>
-                <li>定时任务新增页去除状态选项</li>
-                <li>代码生成支持选择前端模板类型</li>
-                <li>显隐列组件支持复选框弹出类型</li>
-                <li>通用排序属性orderBy参数限制长度</li>
-                <li>Excel自定义数据处理器增加单元格/工作簿对象</li>
-                <li>升级oshi到最新版本6.4.8</li>
-                <li>升级druid到最新版本1.2.20</li>
-                <li>升级fastjson到最新版2.0.43</li>
-                <li>升级pagehelper到最新版1.4.7</li>
-                <li>升级commons.io到最新版本2.13.0</li>
-                <li>升级element-ui到最新版本2.15.14</li>
-                <li>修复五级路由缓存无效问题</li>
-                <li>修复外链带端口出现的异常</li>
-                <li>修复树模板父级编码变量错误</li>
-                <li>修复字典表详情页面搜索问题</li>
-                <li>修复内链iframe没有传递参数问题</li>
-                <li>修复自定义字典样式不生效的问题</li>
-                <li>修复字典缓存删除方法参数错误问题</li>
-                <li>修复Excel导入数据临时文件无法删除问题</li>
-                <li>修复未登录带参数访问成功后参数丢失问题</li>
-                <li>修复HeaderSearch组件跳转query参数丢失问题</li>
-                <li>修复代码生成导入后必填项与数据库不匹配问题</li>
-                <li>修复Excels导入时无法获取到dictType字典值问题</li>
-                <li>优化下载zip方法新增遮罩层</li>
-                <li>优化头像上传参数新增文件名称</li>
-                <li>优化字典标签支持自定义分隔符</li>
-                <li>优化菜单管理类型为按钮状态可选</li>
-                <li>优化前端防重复提交数据大小限制</li>
-                <li>优化TopNav菜单没有图标svg不显示</li>
-                <li>优化数字金额大写转换精度丢失问题</li>
-                <li>优化富文本Editor组件检验图片格式</li>
-                <li>优化页签在Firefox浏览器被遮挡的问题</li>
-                <li>优化个人中心/基本资料修改时数据显示问题</li>
-                <li>优化缓存监控图表支持跟随屏幕大小自适应调整</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.6 - 2023-06-30">
-              <ol>
-                <li>支持登录IP黑名单限制</li>
-                <li>新增监控页面图标显示</li>
-                <li>操作日志新增消耗时间属性</li>
-                <li>屏蔽定时任务bean违规的字符</li>
-                <li>日志管理使用索引提升查询性能</li>
-                <li>日志注解支持排除指定的请求参数</li>
-                <li>支持自定义隐藏属性列过滤子对象</li>
-                <li>升级oshi到最新版本6.4.3</li>
-                <li>升级druid到最新版本1.2.16</li>
-                <li>升级fastjson到最新版2.0.34</li>
-                <li>升级spring-boot到最新版本2.5.15</li>
-                <li>升级element-ui到最新版本2.15.13</li>
-                <li>移除apache/commons-fileupload依赖</li>
-                <li>修复页面切换时布局错乱的问题</li>
-                <li>修复匿名注解Anonymous空指针问题</li>
-                <li>修复路由跳转被阻止时内部产生报错信息问题</li>
-                <li>修复isMatchedIp的参数判断产生空指针的问题</li>
-                <li>修复用户多角色数据权限可能出现权限抬升的情况</li>
-                <li>修复开启TopNav后一级菜单路由参数设置无效问题</li>
-                <li>修复DictTag组件value没有匹配的值时则展示value</li>
-                <li>优化文件下载出现的异常</li>
-                <li>优化选择图标组件高亮回显</li>
-                <li>优化弹窗后导航栏偏移的问题</li>
-                <li>优化修改密码日志存储明文问题</li>
-                <li>优化页签栏关闭其他出现的异常问题</li>
-                <li>优化页签关闭左侧选项排除首页选项</li>
-                <li>优化关闭当前tab页跳转最右侧tab页</li>
-                <li>优化缓存列表清除操作提示不变的问题</li>
-                <li>优化字符未使用下划线不进行驼峰式处理</li>
-                <li>优化用户导入更新时需获取用户编号问题</li>
-                <li>优化侧边栏的平台标题与VUE_APP_TITLE保持同步</li>
-                <li>优化导出Excel时设置dictType属性重复查缓存问题</li>
-                <li>连接池Druid支持新的配置connectTimeout和socketTimeout</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.5 - 2023-01-01">
-              <ol>
-                <li>定时任务违规的字符</li>
-                <li>重置时取消部门选中</li>
-                <li>新增返回警告消息提示</li>
-                <li>忽略不必要的属性数据返回</li>
-                <li>修改参数键名时移除前缓存配置</li>
-                <li>导入更新用户数据前校验数据权限</li>
-                <li>兼容Excel下拉框内容过多无法显示的问题</li>
-                <li>升级echarts到最新版本5.4.0</li>
-                <li>升级core-js到最新版本3.25.3</li>
-                <li>升级oshi到最新版本6.4.0</li>
-                <li>升级kaptcha到最新版2.3.3</li>
-                <li>升级druid到最新版本1.2.15</li>
-                <li>升级fastjson到最新版2.0.20</li>
-                <li>升级pagehelper到最新版1.4.6</li>
-                <li>优化弹窗内容过多展示不全问题</li>
-                <li>优化swagger-ui静态资源使用缓存</li>
-                <li>开启TopNav没有子菜单隐藏侧边栏</li>
-                <li>删除fuse无效选项maxPatternLength</li>
-                <li>优化导出对象的子列表为空会出现[]问题</li>
-                <li>优化编辑头像时透明部分会变成黑色问题</li>
-                <li>优化小屏幕上修改头像界面布局错位的问题</li>
-                <li>修复代码生成勾选属性无效问题</li>
-                <li>修复文件上传组件格式验证问题</li>
-                <li>修复回显数据字典数组异常问题</li>
-                <li>修复sheet超出最大行数异常问题</li>
-                <li>修复Log注解GET请求记录不到参数问题</li>
-                <li>修复调度日志点击多次数据不变化的问题</li>
-                <li>修复主题颜色在Drawer组件不会加载问题</li>
-                <li>修复文件名包含特殊字符的文件无法下载问题</li>
-                <li>修复table中更多按钮切换主题色未生效修复问题</li>
-                <li>修复某些特性的环境生成代码变乱码TXT文件问题</li>
-                <li>修复代码生成图片/文件/单选时选择必填无法校验问题</li>
-                <li>修复某些特性的情况用户编辑对话框中角色和部门无法修改问题</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.4 - 2022-09-26">
-              <ol>
-                <li>数据逻辑删除不进行唯一验证</li>
-                <li>Excel注解支持导出对象的子列表方法</li>
-                <li>Excel注解支持自定义隐藏属性列</li>
-                <li>Excel注解支持backgroundColor属性设置背景色</li>
-                <li>支持配置密码最大错误次数/锁定时间</li>
-                <li>登录日志新增解锁账户功能</li>
-                <li>通用下载方法新增config配置选项</li>
-                <li>支持多权限字符匹配角色数据权限</li>
-                <li>页面内嵌iframe切换tab不刷新数据</li>
-                <li>操作日志记录支持排除敏感属性字段</li>
-                <li>修复多文件上传报错出现的异常问题</li>
-                <li>修复图片预览组件src属性为null值控制台报错问题</li>
-                <li>升级oshi到最新版本6.2.2</li>
-                <li>升级fastjson到最新版2.0.14</li>
-                <li>升级pagehelper到最新版1.4.3</li>
-                <li>升级core-js到最新版本3.25.2</li>
-                <li>升级element-ui到最新版本2.15.10</li>
-                <li>优化任务过期不执行调度</li>
-                <li>优化字典数据使用store存取</li>
-                <li>优化修改资料头像被覆盖的问题</li>
-                <li>优化修改用户登录账号重复验证</li>
-                <li>优化代码生成同步后值NULL问题</li>
-                <li>优化定时任务支持执行父类方法</li>
-                <li>优化用户个人信息接口防止修改部门</li>
-                <li>优化布局设置使用el-drawer抽屉显示</li>
-                <li>优化没有权限的用户编辑部门缺少数据</li>
-                <li>优化日志注解记录限制请求地址的长度</li>
-                <li>优化excel/scale属性导出单元格数值类型</li>
-                <li>优化日志操作中重置按钮时重复查询的问题</li>
-                <li>优化多个相同角色数据导致权限SQL重复问题</li>
-                <li>优化表格上右侧工具条(搜索按钮显隐&右侧样式凸出)</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.3 - 2022-06-27">
-              <ol>
-                <li>新增缓存列表菜单功能</li>
-                <li>代码生成树表新增(展开/折叠)</li>
-                <li>Excel注解支持color字体颜色</li>
-                <li>新增Anonymous匿名访问不鉴权注解</li>
-                <li>用户头像上传限制只能为图片格式</li>
-                <li>接口使用泛型使其看到响应属性字段</li>
-                <li>检查定时任务bean所在包名是否为白名单配置</li>
-                <li>添加页签openPage支持传递参数</li>
-                <li>用户缓存信息添加部门ancestors祖级列表</li>
-                <li>升级element-ui到最新版本2.15.8</li>
-                <li>升级oshi到最新版本6.1.6</li>
-                <li>升级druid到最新版本1.2.11</li>
-                <li>升级fastjson到最新版2.0.8</li>
-                <li>升级spring-boot到最新版本2.5.14</li>
-                <li>降级jsencrypt版本兼容IE浏览器</li>
-                <li>删除多余的salt字段</li>
-                <li>新增获取不带后缀文件名称方法</li>
-                <li>新增获取配置文件中的属性值方法</li>
-                <li>新增内容编码/解码方便插件集成使用</li>
-                <li>字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)</li>
-                <li>优化设置分页参数默认值</li>
-                <li>优化对空字符串参数处理的过滤</li>
-                <li>优化显示顺序orderNum类型为整型</li>
-                <li>优化表单构建按钮不显示正则校验</li>
-                <li>优化字典数据回显样式下拉框显示值</li>
-                <li>优化R响应成功状态码与全局保持一致</li>
-                <li>优化druid开启wall过滤器出现的异常问题</li>
-                <li>优化用户管理左侧树型组件增加选中高亮保持</li>
-                <li>优化新增用户与角色信息&用户与岗位信息逻辑</li>
-                <li>优化默认不启用压缩文件缓存防止node_modules过大</li>
-                <li>修复字典数据显示不全问题</li>
-                <li>修复操作日志查询类型条件为0时会查到所有数据</li>
-                <li>修复Excel注解prompt/combo同时使用不生效问题</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.2 - 2022-04-01">
-              <ol>
-                <li>前端支持设置是否需要防止数据重复提交</li>
-                <li>开启TopNav没有子菜单情况隐藏侧边栏</li>
-                <li>侧边栏菜单名称过长悬停显示标题</li>
-                <li>用户访问控制时校验数据权限,防止越权</li>
-                <li>导出Excel时屏蔽公式,防止CSV注入风险</li>
-                <li>组件ImagePreview支持多图预览显示</li>
-                <li>组件ImageUpload支持多图同时选择上传</li>
-                <li>组件FileUpload支持多文件同时选择上传</li>
-                <li>服务监控新增运行参数信息显示</li>
-                <li>定时任务目标字符串过滤特殊字符</li>
-                <li>定时任务目标字符串验证包名白名单</li>
-                <li>代码生成列表图片支持预览</li>
-                <li>代码生成编辑修改打开新页签</li>
-                <li>代码生成新增Java类型Boolean</li>
-                <li>代码生成子表支持日期/字典配置</li>
-                <li>代码生成同步保留必填/类型选项</li>
-                <li>升级oshi到最新版本6.1.2</li>
-                <li>升级fastjson到最新版1.2.80</li>
-                <li>升级pagehelper到最新版1.4.1</li>
-                <li>升级spring-boot到最新版本2.5.11</li>
-                <li>升级spring-boot-mybatis到最新版2.2.2</li>
-                <li>添加遗漏的分页参数合理化属性</li>
-                <li>修改npm即将过期的注册源地址</li>
-                <li>修复分页组件请求两次问题</li>
-                <li>修复通用文件下载接口跨域问题</li>
-                <li>修复Xss注解字段值为空时的异常问题</li>
-                <li>修复选项卡点击右键刷新丢失参数问题</li>
-                <li>修复表单清除元素位置未垂直居中问题</li>
-                <li>修复服务监控中运行参数显示条件错误</li>
-                <li>修复导入Excel时字典字段类型为Long转义为空问题</li>
-                <li>修复登录超时刷新页面跳转登录页面还提示重新登录问题</li>
-                <li>优化加载字典缓存数据</li>
-                <li>优化IP地址获取到多个的问题</li>
-                <li>优化任务队列满时任务拒绝策略</li>
-                <li>优化文件上传兼容Weblogic环境</li>
-                <li>优化定时任务默认保存到内存中执行</li>
-                <li>优化部门修改缩放后出现的错位问题</li>
-                <li>优化Excel格式化不同类型的日期对象</li>
-                <li>优化菜单表关键字导致的插件报错问题</li>
-                <li>优化Oracle用户头像列为空时不显示问题</li>
-                <li>优化页面若未匹配到字典标签则返回原字典值</li>
-                <li>优化修复登录失效后多次请求提示多次弹窗问题</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.1 - 2022-01-01">
-              <ol>
-                <li>新增Vue3前端代码生成模板</li>
-                <li>新增图片预览组件</li>
-                <li>新增压缩插件实现打包Gzip</li>
-                <li>自定义xss校验注解实现</li>
-                <li>自定义文字复制剪贴指令</li>
-                <li>代码生成预览支持复制内容</li>
-                <li>路由支持单独配置菜单或角色权限</li>
-                <li>用户管理部门查询选择节点后分页参数初始</li>
-                <li>修复用户分配角色属性错误</li>
-                <li>修复打包后字体图标偶现的乱码问题</li>
-                <li>修复菜单管理重置表单出现的错误</li>
-                <li>修复版本差异导致的懒加载报错问题</li>
-                <li>修复Cron组件中周回显问题</li>
-                <li>修复定时任务多参数逗号分隔的问题</li>
-                <li>修复根据ID查询列表可能出现的主键溢出问题</li>
-                <li>修复tomcat配置参数已过期问题</li>
-                <li>升级clipboard到最新版本2.0.8</li>
-                <li>升级oshi到最新版本v5.8.6</li>
-                <li>升级fastjson到最新版1.2.79</li>
-                <li>升级spring-boot到最新版本2.5.8</li>
-                <li>升级log4j2到2.17.1,防止漏洞风险</li>
-                <li>优化下载解析blob异常提示</li>
-                <li>优化代码生成字典组重复问题</li>
-                <li>优化查询用户的角色组&岗位组代码</li>
-                <li>优化定时任务cron表达式小时设置24</li>
-                <li>优化用户导入提示溢出则显示滚动条</li>
-                <li>优化防重复提交标识组合为(key+url+header)</li>
-                <li>优化分页方法设置成通用方便灵活调用</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.8.0 - 2021-12-01">
-              <ol>
-                <li>新增配套并同步的Vue3前端版本</li>
-                <li>新增通用方法简化模态/缓存/下载/权限/页签使用</li>
-                <li>优化导出数据/使用通用下载方法</li>
-                <li>Excel注解支持自定义数据处理器</li>
-                <li>Excel注解支持导入导出标题信息</li>
-                <li>Excel导入支持@Excels注解</li>
-                <li>新增组件data-dict,简化数据字典使用</li>
-                <li>新增Jaxb依赖,防止jdk8以上出现的兼容错误</li>
-                <li>生产环境使用路由懒加载提升页面响应速度</li>
-                <li>修复五级以上菜单出现的404问题</li>
-                <li>防重提交注解支持配置间隔时间/提示消息</li>
-                <li>日志注解新增是否保存响应参数</li>
-                <li>任务屏蔽违规字符&参数忽略双引号中的逗号</li>
-                <li>升级SpringBoot到最新版本2.5.6</li>
-                <li>升级pagehelper到最新版1.4.0</li>
-                <li>升级spring-boot-mybatis到最新版2.2.0</li>
-                <li>升级oshi到最新版本v5.8.2</li>
-                <li>升级druid到最新版1.2.8</li>
-                <li>升级velocity到最新版本2.3</li>
-                <li>升级fastjson到最新版1.2.78</li>
-                <li>升级axios到最新版本0.24.0</li>
-                <li>升级dart-sass到版本1.32.13</li>
-                <li>升级core-js到最新版本3.19.1</li>
-                <li>升级jsencrypt到最新版本3.2.1</li>
-                <li>升级js-cookie到最新版本3.0.1</li>
-                <li>升级file-saver到最新版本2.0.5</li>
-                <li>升级sass-loader到最新版本10.1.1</li>
-                <li>升级element-ui到最新版本2.15.6</li>
-                <li>新增sendGet无参请求方法</li>
-                <li>禁用el-tag组件的渐变动画</li>
-                <li>代码生成点击预览重置激活tab</li>
-                <li>AjaxResult重写put方法,以方便链式调用</li>
-                <li>优化登录/验证码请求headers不设置token</li>
-                <li>优化用户个人信息接口防止修改用户名</li>
-                <li>优化Cron表达式生成器关闭时销毁避免缓存</li>
-                <li>优化注册成功提示消息类型success</li>
-                <li>优化aop语法,使用spring自动注入注解</li>
-                <li>优化记录登录信息,移除不必要的修改</li>
-                <li>优化mybatis全局默认的执行器</li>
-                <li>优化Excel导入图片可能出现的异常</li>
-                <li>修复代码生成模板主子表删除缺少事务</li>
-                <li>修复日志记录可能出现的转换异常</li>
-                <li>修复代码生成复选框字典遗漏问题</li>
-                <li>修复关闭xss功能导致可重复读RepeatableFilter失效</li>
-                <li>修复字符串无法被反转义问题</li>
-                <li>修复后端主子表代码模板方法名生成错误问题</li>
-                <li>修复xss过滤后格式出现的异常</li>
-                <li>修复swagger没有指定dataTypeClass导致启动出现warn日志</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.7.0 - 2021-09-13">
-              <ol>
-                <li>参数管理支持配置验证码开关</li>
-                <li>新增是否开启用户注册功能</li>
-                <li>定时任务支持在线生成cron表达式</li>
-                <li>菜单管理支持配置路由参数</li>
-                <li>支持自定义注解实现接口限流</li>
-                <li>Excel注解支持Image图片导入</li>
-                <li>自定义弹层溢出滚动样式</li>
-                <li>自定义可拖动弹窗宽度指令</li>
-                <li>自定义可拖动弹窗高度指令</li>
-                <li>修复任意账户越权问题</li>
-                <li>修改时检查用户数据权限范围</li>
-                <li>修复保存配置主题颜色失效问题</li>
-                <li>新增暗色菜单风格主题</li>
-                <li>菜单&部门新增展开/折叠功能</li>
-                <li>页签新增关闭左侧&添加图标</li>
-                <li>顶部菜单排除隐藏的默认路由</li>
-                <li>顶部菜单同步系统主题样式</li>
-                <li>跳转路由高亮相对应的菜单栏</li>
-                <li>代码生成主子表多选行数据</li>
-                <li>日期范围支持添加多组</li>
-                <li>升级element-ui到最新版本2.15.5</li>
-                <li>升级oshi到最新版本v5.8.0</li>
-                <li>升级commons.io到最新版本v2.11.0</li>
-                <li>定时任务屏蔽ldap远程调用</li>
-                <li>定时任务屏蔽http(s)远程调用</li>
-                <li>补充定时任务表字段注释</li>
-                <li>定时任务对检查异常进行事务回滚</li>
-                <li>启用父部门状态排除顶级节点</li>
-                <li>富文本新增上传文件大小限制</li>
-                <li>默认首页使用keep-alive缓存</li>
-                <li>修改代码生成字典回显样式</li>
-                <li>自定义分页合理化传入参数</li>
-                <li>修复字典组件值为整形不显示问题</li>
-                <li>修复定时任务日志执行状态显示</li>
-                <li>角色&菜单新增字段属性提示信息</li>
-                <li>修复角色分配用户页面参数类型错误提醒</li>
-                <li>优化布局设置动画特效</li>
-                <li>优化异常处理信息</li>
-                <li>优化错误token导致的解析异常</li>
-                <li>密码框新增显示切换密码图标</li>
-                <li>定时任务新增更多操作</li>
-                <li>更多操作按钮添加权限控制</li>
-                <li>导入用户样式优化</li>
-                <li>提取通用方法到基类控制器</li>
-                <li>优化使用权限工具获取用户信息</li>
-                <li>优化用户不能删除自己</li>
-                <li>优化XSS跨站脚本过滤</li>
-                <li>优化代码生成模板</li>
-                <li>验证码默认20s超时</li>
-                <li>BLOB下载时清除URL对象引用</li>
-                <li>代码生成导入表按创建时间排序</li>
-                <li>修复代码生成页面数据编辑保存之后总是跳转第一页的问题</li>
-                <li>修复带safari浏览器无法格式化utc日期格式yyyy-MM-dd'T'HH:mm:ss.SSS问题</li>
-                <li>多图上传组件移除多余的api地址&验证失败导致图片删除问题&无法删除相应图片修复</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.6.0 - 2021-07-12">
-              <ol>
-                <li>角色管理新增分配用户功能</li>
-                <li>用户管理新增分配角色功能</li>
-                <li>日志列表支持排序操作</li>
-                <li>优化参数&字典缓存操作</li>
-                <li>系统布局配置支持动态标题开关</li>
-                <li>菜单路由配置支持内链访问</li>
-                <li>默认访问后端首页新增提示语</li>
-                <li>富文本默认上传返回url类型</li>
-                <li>新增自定义弹窗拖拽指令</li>
-                <li>全局注册常用通用组件</li>
-                <li>全局挂载字典标签组件</li>
-                <li>ImageUpload组件支持多图片上传</li>
-                <li>FileUpload组件支持多文件上传</li>
-                <li>文件上传组件添加数量限制属性</li>
-                <li>富文本编辑组件添加类型属性</li>
-                <li>富文本组件工具栏配置视频</li>
-                <li>封装通用iframe组件</li>
-                <li>限制超级管理员不允许操作</li>
-                <li>用户信息长度校验限制</li>
-                <li>分页组件新增pagerCount属性</li>
-                <li>添加bat脚本执行应用</li>
-                <li>升级oshi到最新版本v5.7.4</li>
-                <li>升级element-ui到最新版本2.15.2</li>
-                <li>升级pagehelper到最新版1.3.1</li>
-                <li>升级commons.io到最新版本v2.10.0</li>
-                <li>升级commons.fileupload到最新版本v1.4</li>
-                <li>升级swagger到最新版本v3.0.0</li>
-                <li>修复关闭confirm提示框控制台报错问题</li>
-                <li>修复存在的SQL注入漏洞问题</li>
-                <li>定时任务屏蔽rmi远程调用</li>
-                <li>修复用户搜索分页变量错误</li>
-                <li>修复导出角色数据范围翻译缺少仅本人</li>
-                <li>修复表单构建选择下拉选择控制台报错问题</li>
-                <li>优化图片工具类读取文件</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.5.0 - 2021-05-25">
-              <ol>
-                <li>新增菜单导航显示风格TopNav(false为左侧导航菜单,true为顶部导航菜单)</li>
-                <li>布局设置支持保存&重置配置</li>
-                <li>修复树表数据显示不全&加载慢问题</li>
-                <li>新增IE浏览器版本过低提示页面</li>
-                <li>用户登录后记录最后登录IP&时间</li>
-                <li>页面导出按钮点击之后添加遮罩</li>
-                <li>富文本编辑器支持自定义上传地址</li>
-                <li>富文本编辑组件新增readOnly属性</li>
-                <li>页签TagsView新增关闭右侧功能</li>
-                <li>显隐列组件加载初始默认隐藏列</li>
-                <li>关闭头像上传窗口还原默认图片</li>
-                <li>个人信息添加手机&邮箱重复验证</li>
-                <li>代码生成模板导出按钮点击后添加遮罩</li>
-                <li>代码生成模板树表操作列添加新增按钮</li>
-                <li>代码生成模板修复主子表字段重名问题</li>
-                <li>升级fastjson到最新版1.2.76</li>
-                <li>升级druid到最新版本v1.2.6</li>
-                <li>升级mybatis到最新版3.5.6 阻止远程代码执行漏洞</li>
-                <li>升级oshi到最新版本v5.6.0</li>
-                <li>velocity剔除commons-collections版本,防止3.2.1版本的反序列化漏洞</li>
-                <li>数据监控页默认账户密码防止越权访问</li>
-                <li>修复firefox下表单构建拖拽会新打卡一个选项卡</li>
-                <li>修正后端导入表权限标识</li>
-                <li>修正前端操作日志&登录日志权限标识</li>
-                <li>设置Redis配置HashKey序列化</li>
-                <li>删除操作日志记录信息</li>
-                <li>上传媒体类型添加视频格式</li>
-                <li>修复请求形参未传值记录日志异常问题</li>
-                <li>优化xss校验json请求条件</li>
-                <li>树级结构更新子节点使用replaceFirst</li>
-                <li>优化ExcelUtil空值处理</li>
-                <li>日志记录过滤BindingResult对象,防止异常</li>
-                <li>修改主题后mini类型按钮无效问题</li>
-                <li>优化通用下载完成后删除节点</li>
-                <li>通用Controller添加响应返回消息</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.4.0 - 2021-02-22">
-              <ol>
-                <li>代码生成模板支持主子表</li>
-                <li>表格右侧工具栏组件支持显隐列</li>
-                <li>图片组件添加预览&移除功能</li>
-                <li>Excel注解支持Image图片导出</li>
-                <li>操作按钮组调整为朴素按钮样式</li>
-                <li>代码生成支持文件上传组件</li>
-                <li>代码生成日期控件区分范围</li>
-                <li>代码生成数据库文本类型生成表单文本域</li>
-                <li>用户手机邮箱&菜单组件修改允许空字符串</li>
-                <li>升级SpringBoot到最新版本2.2.13 提升启动速度</li>
-                <li>升级druid到最新版本v1.2.4</li>
-                <li>升级fastjson到最新版1.2.75</li>
-                <li>升级element-ui到最新版本2.15.0</li>
-                <li>修复IE11浏览器报错问题</li>
-                <li>优化多级菜单之间切换无法缓存的问题</li>
-                <li>修复四级菜单无法显示问题</li>
-                <li>修正侧边栏静态路由丢失问题</li>
-                <li>修复角色管理-编辑角色-功能权限显示异常</li>
-                <li>配置文件新增redis数据库索引属性</li>
-                <li>权限工具类增加admin判断</li>
-                <li>角色非自定义权限范围清空选择值</li>
-                <li>修复导入数据为负浮点数时丢失精度问题</li>
-                <li>移除path-to-regexp正则匹配插件</li>
-                <li>修复生成树表代码异常</li>
-                <li>修改ip字段长度防止ipv6地址长度不够</li>
-                <li>防止get请求参数值为false或0等特殊值会导致无法正确的传参</li>
-                <li>登录后push添加catch防止出现检查错误</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.3.0 - 2020-12-14">
-              <ol>
-                <li>新增缓存监控功能</li>
-                <li>支持主题风格配置</li>
-                <li>修复多级菜单之间切换无法缓存的问题</li>
-                <li>多级菜单自动配置组件</li>
-                <li>代码生成预览支持高亮显示</li>
-                <li>支持Get请求映射Params参数</li>
-                <li>删除用户和角色解绑关联</li>
-                <li>去除用户手机邮箱部门必填验证</li>
-                <li>Excel支持注解align对齐方式</li>
-                <li>Excel支持导入Boolean型数据</li>
-                <li>优化头像样式,鼠标移入悬停遮罩</li>
-                <li>代码生成预览提供滚动机制</li>
-                <li>代码生成删除多余的数字float类型</li>
-                <li>修正转换字符串的目标字符集属性</li>
-                <li>回显数据字典防止空值报错</li>
-                <li>日志记录增加过滤多文件场景</li>
-                <li>修改缓存Set方法可能导致嵌套的问题</li>
-                <li>移除前端一些多余的依赖</li>
-                <li>防止安全扫描YUI出现的风险提示</li>
-                <li>修改node-sass为dart-sass</li>
-                <li>升级SpringBoot到最新版本2.1.18</li>
-                <li>升级poi到最新版本4.1.2</li>
-                <li>升级oshi到最新版本v5.3.6</li>
-                <li>升级bitwalker到最新版本1.21</li>
-                <li>升级axios到最新版本0.21.0</li>
-                <li>升级element-ui到最新版本2.14.1</li>
-                <li>升级vue到最新版本2.6.12</li>
-                <li>升级vuex到最新版本3.6.0</li>
-                <li>升级vue-cli到版本4.5.9</li>
-                <li>升级vue-router到最新版本3.4.9</li>
-                <li>升级vue-cli到最新版本4.4.6</li>
-                <li>升级vue-cropper到最新版本0.5.5</li>
-                <li>升级clipboard到最新版本2.0.6</li>
-                <li>升级core-js到最新版本3.8.1</li>
-                <li>升级echarts到最新版本4.9.0</li>
-                <li>升级file-saver到最新版本2.0.4</li>
-                <li>升级fuse.js到最新版本6.4.3</li>
-                <li>升级js-beautify到最新版本1.13.0</li>
-                <li>升级js-cookie到最新版本2.2.1</li>
-                <li>升级path-to-regexp到最新版本6.2.0</li>
-                <li>升级quill到最新版本1.3.7</li>
-                <li>升级screenfull到最新版本5.0.2</li>
-                <li>升级sortablejs到最新版本1.10.2</li>
-                <li>升级vuedraggable到最新版本2.24.3</li>
-                <li>升级chalk到最新版本4.1.0</li>
-                <li>升级eslint到最新版本7.15.0</li>
-                <li>升级eslint-plugin-vue到最新版本7.2.0</li>
-                <li>升级lint-staged到最新版本10.5.3</li>
-                <li>升级runjs到最新版本4.4.2</li>
-                <li>升级sass-loader到最新版本10.1.0</li>
-                <li>升级script-ext-html-webpack-plugin到最新版本2.1.5</li>
-                <li>升级svg-sprite-loader到最新版本5.1.1</li>
-                <li>升级vue-template-compiler到最新版本2.6.12</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.2.1 - 2020-11-18">
-              <ol>
-                <li>阻止任意文件下载漏洞</li>
-                <li>代码生成支持上传控件</li>
-                <li>新增图片上传组件</li>
-                <li>调整默认首页</li>
-                <li>升级druid到最新版本v1.2.2</li>
-                <li>mapperLocations配置支持分隔符</li>
-                <li>权限信息调整</li>
-                <li>调整sql默认时间</li>
-                <li>解决代码生成没有bit类型的问题</li>
-                <li>升级pagehelper到最新版1.3.0</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.2.0 - 2020-10-10">
-              <ol>
-                <li>升级springboot版本到2.1.17 提升安全性</li>
-                <li>升级oshi到最新版本v5.2.5</li>
-                <li>升级druid到最新版本v1.2.1</li>
-                <li>升级jjwt到版本0.9.1</li>
-                <li>升级fastjson到最新版1.2.74</li>
-                <li>修改sass为node-sass,避免el-icon图标乱码</li>
-                <li>代码生成支持同步数据库</li>
-                <li>代码生成支持富文本控件</li>
-                <li>代码生成页面时不忽略remark属性</li>
-                <li>代码生成添加select必填选项</li>
-                <li>Excel导出类型NUMERIC支持精度浮点类型</li>
-                <li>Excel导出targetAttr优化获取值,防止get方法不规范</li>
-                <li>Excel注解支持自动统计数据总和</li>
-                <li>Excel注解支持设置BigDecimal精度&舍入规则</li>
-                <li>菜单&数据权限新增(展开/折叠 全选/全不选 父子联动)</li>
-                <li>允许用户分配到部门父节点</li>
-                <li>菜单新增是否缓存keep-alive</li>
-                <li>表格操作列间距调整</li>
-                <li>限制系统内置参数不允许删除</li>
-                <li>富文本组件优化,支持自定义高度&图片冲突问题</li>
-                <li>富文本工具栏样式对齐</li>
-                <li>导入excel整形值校验优化</li>
-                <li>修复页签关闭所有时固定标签路由不刷新问题</li>
-                <li>表单构建布局型组件新增按钮</li>
-                <li>左侧菜单文字过长显示省略号</li>
-                <li>修正根节点为子部门时,树状结构显示问题</li>
-                <li>修正调用目标字符串最大长度</li>
-                <li>修正菜单提示信息错误</li>
-                <li>修正定时任务执行一次权限标识</li>
-                <li>修正数据库字符串类型nvarchar</li>
-                <li>优化递归子节点</li>
-                <li>优化数据权限判断</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-
-            <el-collapse-item title="v3.1.0 - 2020-08-13">
-              <ol>
-                <li>表格工具栏右侧添加刷新&显隐查询组件</li>
-                <li>后端支持CORS跨域请求</li>
-                <li>代码生成支持选择上级菜单</li>
-                <li>代码生成支持自定义路径</li>
-                <li>代码生成支持复选框</li>
-                <li>Excel导出导入支持dictType字典类型</li>
-                <li>Excel支持分割字符串组内容</li>
-                <li>验证码类型支持(数组计算、字符验证)</li>
-                <li>升级vue-cli版本到4.4.4</li>
-                <li>修改 node-sass 为 dart-sass</li>
-                <li>表单类型为Integer/Long设置整形默认值</li>
-                <li>代码生成器默认mapper路径与默认mapperScan路径不一致</li>
-                <li>优化防重复提交拦截器</li>
-                <li>优化上级菜单不能选择自己</li>
-                <li>修复角色的权限分配后,未实时生效问题</li>
-                <li>修复在线用户日志记录类型</li>
-                <li>修复富文本空格和缩进保存后不生效问题</li>
-                <li>修复在线用户判断逻辑</li>
-                <li>唯一限制条件只返回单条数据</li>
-                <li>添加获取当前的环境配置方法</li>
-                <li>超时登录后页面跳转到首页</li>
-                <li>全局异常状态汉化拦截处理</li>
-                <li>HTML过滤器改为将html转义</li>
-                <li>检查字符支持小数点&降级改成异常提醒</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-
-            <el-collapse-item title="v3.0.0 - 2020-07-20">
-              <ol>
-                <li>单应用调整为多模块项目</li>
-                <li>升级element-ui版本到2.13.2</li>
-                <li>删除babel,提高编译速度。</li>
-                <li>新增菜单默认主类目</li>
-                <li>编码文件名修改为uuid方式</li>
-                <li>定时任务cron表达式验证</li>
-                <li>角色权限修改时已有权限未自动勾选异常修复</li>
-                <li>防止切换权限用户后登录出现404</li>
-                <li>Excel支持sort导出排序</li>
-                <li>创建用户不允许选择超级管理员角色</li>
-                <li>修复代码生成导入表结构出现异常页面不提醒问题</li>
-                <li>修复代码生成点击多次表修改数据不变化的问题</li>
-                <li>修复头像上传成功二次打开无法改变裁剪框大小和位置问题</li>
-                <li>修复布局为small者mini用户表单显示错位问题</li>
-                <li>修复热部署导致的强换异常问题</li>
-                <li>修改用户管理复选框宽度,防止部分浏览器出现省略号</li>
-                <li>IpUtils工具,清除Xss特殊字符,防止Xff注入攻击</li>
-                <li>生成domain 如果是浮点型 统一用BigDecimal</li>
-                <li>定时任务调整label-width,防止部署出现错位</li>
-                <li>调整表头固定列默认样式</li>
-                <li>代码生成模板调整,字段为String并且必填则加空串条件</li>
-                <li>代码生成字典Integer/Long使用parseInt</li>
-                <li>
-                  修复dict_sort不可update为0的问题&查询返回增加dict_sort升序排序
-                </li>
-                <li>修正岗位导出权限注解</li>
-                <li>禁止加密密文返回前端</li>
-                <li>修复代码生成页面中的查询条件创建时间未生效的问题</li>
-                <li>修复首页搜索菜单外链无法点击跳转问题</li>
-                <li>修复菜单管理选择图标,backspace删除时不过滤数据</li>
-                <li>用户管理部门分支节点不可检查&显示计数</li>
-                <li>数据范围过滤属性调整</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-
-            <el-collapse-item title="v2.3.0 - 2020-06-01">
-              <ol>
-                <li>升级fastjson到最新版1.2.70 修复高危安全漏洞</li>
-                <li>dev启动默认打开浏览器</li>
-                <li>vue-cli使用默认source-map</li>
-                <li>slidebar eslint报错优化</li>
-                <li>当tags-view滚动关闭右键菜单</li>
-                <li>字典管理添加缓存读取</li>
-                <li>参数管理支持缓存操作</li>
-                <li>支持一级菜单(和主页同级)在main区域显示</li>
-                <li>限制外链地址必须以http(s)开头</li>
-                <li>tagview & sidebar 主题颜色与element ui(全局)同步</li>
-                <li>修改数据源类型优先级,先根据方法,再根据类</li>
-                <li>支持是否需要设置token属性,自定义返回码消息。</li>
-                <li>swagger请求前缀加入配置。</li>
-                <li>登录地点设置内容过长则隐藏显示</li>
-                <li>修复定时任务执行一次按钮后不提示消息问题</li>
-                <li>修改上级部门(选择项排除本身和下级)</li>
-                <li>通用http发送方法增加参数 contentType 编码类型</li>
-                <li>更换IP地址查询接口</li>
-                <li>修复页签变量undefined</li>
-                <li>添加校验部门包含未停用的子部门</li>
-                <li>修改定时任务详情下次执行时间日期显示错误</li>
-                <li>角色管理查询设置默认排序字段</li>
-                <li>swagger添加enable参数控制是否启用</li>
-                <li>只对json类型请求构建可重复读取inputStream的request</li>
-                <li>修改代码生成字典字段int类型没有自动选中问题</li>
-                <li>vuex用户名取值修正</li>
-                <li>表格树模板去掉多余的)</li>
-                <li>代码生成序号修正</li>
-                <li>全屏情况下不调整上外边距</li>
-                <li>代码生成Date字段添加默认格式</li>
-                <li>用户管理角色选择权限控制</li>
-                <li>修复路由懒加载报错问题</li>
-                <li>模板sql.vm添加菜单状态</li>
-                <li>设置用户名称不能修改</li>
-                <li>dialog添加append-to-body属性,防止ie遮罩</li>
-                <li>菜单区分状态和显示隐藏功能</li>
-                <li>升级fastjson到最新版1.2.68 修复安全加固</li>
-                <li>修复代码生成如果选择字典类型缺失逗号问题</li>
-                <li>登录请求params更换为data,防止暴露url</li>
-                <li>日志返回时间格式处理</li>
-                <li>添加handle控制允许拖动的元素</li>
-                <li>布局设置点击扩大范围</li>
-                <li>代码生成列属性排序查询</li>
-                <li>代码生成列支持拖动排序</li>
-                <li>修复时间格式不支持ios问题</li>
-                <li>表单构建添加父级class,防止冲突</li>
-                <li>定时任务并发属性修正</li>
-                <li>角色禁用&菜单隐藏不查询权限</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-
-            <el-collapse-item title="v2.2.0 - 2020-03-18">
-              <ol>
-                <li>系统监控新增定时任务功能</li>
-                <li>添加一个打包Web工程bat</li>
-                <li>修复页签鼠标滚轮按下的时候,可以关闭不可关闭的tag</li>
-                <li>修复点击退出登录有时会无提示问题</li>
-                <li>修复防重复提交注解无效问题</li>
-                <li>修复通知公告批量删除异常问题</li>
-                <li>添加菜单时路由地址必填限制</li>
-                <li>代码生成字段描述可编辑</li>
-                <li>修复用户修改个人信息导致缓存不过期问题</li>
-                <li>个人信息创建时间获取正确属性值</li>
-                <li>操作日志详细显示正确类型</li>
-                <li>导入表单击行数据时选中对应的复选框</li>
-                <li>批量替换表前缀逻辑调整</li>
-                <li>固定重定向路径表达式</li>
-                <li>升级element-ui版本到2.13.0</li>
-                <li>操作日志排序调整</li>
-                <li>修复charts切换侧边栏或者缩放窗口显示bug</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-
-            <el-collapse-item title="v2.1.0 - 2020-02-24">
-              <ol>
-                <li>新增表单构建</li>
-                <li>代码生成支持树表结构</li>
-                <li>新增用户导入</li>
-                <li>修复动态加载路由页面刷新问题</li>
-                <li>修复地址开关无效问题</li>
-                <li>汉化错误提示页面</li>
-                <li>代码生成已知问题修改</li>
-                <li>修复多数据源下配置关闭出现异常处理</li>
-                <li>添加HTML过滤器,用于去除XSS漏洞隐患</li>
-                <li>修复上传头像控制台出现异常</li>
-                <li>修改用户管理分页不正确的问题</li>
-                <li>修复验证码记录提示错误</li>
-                <li>修复request.js缺少Message引用</li>
-                <li>修复表格时间为空出现的异常</li>
-                <li>添加Jackson日期反序列化时区配置</li>
-                <li>调整根据用户权限加载菜单数据树形结构</li>
-                <li>调整成功登录不恢复按钮,防止多次点击</li>
-                <li>修改用户个人资料同步缓存信息</li>
-                <li>修复页面同时出现el-upload和Editor不显示处理</li>
-                <li>修复在角色管理页修改菜单权限偶尔未选中问题</li>
-                <li>配置文件新增redis密码属性</li>
-                <li>设置mybatis全局的配置文件</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-
-            <el-collapse-item title="v2.0.0 - 2019-12-02">
-              <ol>
-                <li>新增代码生成</li>
-                <li>新增@RepeatSubmit注解,防止重复提交</li>
-                <li>新增菜单主目录添加/删除操作</li>
-                <li>日志记录过滤特殊对象,防止转换异常</li>
-                <li>修改代码生成路由脚本错误</li>
-                <li>用户上传头像实时同步缓存,无需重新登录</li>
-                <li>调整切换页签后不重新加载数据</li>
-                <li>添加jsencrypt实现参数的前端加密</li>
-                <li>系统退出删除用户缓存记录</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v1.1.0 - 2019-11-11">
-              <ol>
-                <li>新增在线用户管理</li>
-                <li>新增按钮组功能实现(批量删除、导出、清空)</li>
-                <li>新增查询条件重置按钮</li>
-                <li>新增Swagger全局Token配置</li>
-                <li>新增后端参数校验</li>
-                <li>修复字典管理页面的日期查询异常</li>
-                <li>修改时间函数命名防止冲突</li>
-                <li>去除菜单上级校验,默认为顶级</li>
-                <li>修复用户密码无法修改问题</li>
-                <li>修复菜单类型为按钮时不显示权限标识</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v1.0.0 - 2019-10-08">
-              <ol>
-                <li>若依前后端分离系统正式发布</li>
-              </ol>
-            </el-collapse-item>
-          </el-collapse>
+          <div class="control-grid">
+            <button class="control-action is-charge" @click="handleDeviceControl('charge')">
+              <span class="control-action-title">一键充电</span>
+              <span class="control-action-desc">进入充电流程</span>
+            </button>
+            <button class="control-action is-stop" @click="handleDeviceControl('stopCharge')">
+              <span class="control-action-title">停止充电</span>
+              <span class="control-action-desc">停止当前充电</span>
+            </button>
+            <button class="control-action is-reboot" @click="confirmDanger('reboot')">
+              <span class="control-action-title">重启机器人</span>
+              <span class="control-action-desc">整机重启</span>
+            </button>
+            <button class="control-action is-shutdown" @click="confirmDanger('shutdown')">
+              <span class="control-action-title">关机</span>
+              <span class="control-action-desc">安全关机</span>
+            </button>
+          </div>
         </el-card>
-      </el-col>
-      <el-col :xs="24" :sm="24" :md="12" :lg="8">
-        <el-card class="update-log">
-          <template v-slot:header>
-            <div class="clearfix">
-              <span>捐赠支持</span>
+      </div>
+    </div>
+
+    <!-- 统计卡片区 -->
+    <div class="stat-grid">
+      <el-card
+        v-for="stat in stats"
+        :key="stat.key"
+        class="dashboard-card stat-card"
+        shadow="hover"
+      >
+        <div class="stat-body">
+          <div class="stat-icon" :style="{ color: stat.color }">
+            <el-icon><component :is="stat.icon" /></el-icon>
+          </div>
+          <div class="stat-data">
+            <div class="stat-value">{{ stat.value }}</div>
+            <div class="stat-label">{{ stat.label }}</div>
+            <div class="stat-desc">{{ stat.desc }}</div>
+          </div>
+        </div>
+      </el-card>
+    </div>
+
+    <!-- 底部记录区 -->
+    <div class="record-grid">
+      <!-- 最近告警 -->
+      <el-card class="dashboard-card record-card" shadow="hover">
+        <template #header>
+          <div class="card-header">
+            <span class="card-title">最近告警</span>
+            <el-button type="primary" link size="small" @click="goTo('/alarm')">查看更多</el-button>
+          </div>
+        </template>
+        <el-table :data="recentAlarms" size="small" :max-height="220">
+          <el-table-column prop="alarmTime" label="时间" width="80" />
+          <el-table-column prop="alarmLevel" label="级别" width="70">
+            <template #default="{ row }">
+              <el-tag :type="alarmLevelType(row.alarmLevel)" size="small">{{ row.alarmLevel }}</el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column prop="alarmType" label="类型" width="90" />
+          <el-table-column prop="description" label="描述" min-width="120" show-overflow-tooltip />
+          <el-table-column prop="handleStatus" label="状态" width="70">
+            <template #default="{ row }">
+              <el-tag :type="row.handleStatus === '已处理' ? 'success' : 'warning'" size="small">
+                {{ row.handleStatus }}
+              </el-tag>
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-card>
+
+      <!-- 最近记录 -->
+      <el-card class="dashboard-card record-card" shadow="hover">
+        <template #header>
+          <div class="card-header">
+            <span class="card-title">最近记录</span>
+          </div>
+        </template>
+        <div class="recent-list">
+          <div
+            v-for="item in recentRecords"
+            :key="item.key"
+            class="recent-item"
+            @click="goToRecord(item)"
+          >
+            <div class="recent-left">
+              <el-icon class="recent-icon" :style="{ color: item.color }">
+                <component :is="item.icon" />
+              </el-icon>
+              <div class="recent-info">
+                <div class="recent-type">{{ item.type }}</div>
+                <div class="recent-summary">{{ item.summary }}</div>
+              </div>
             </div>
-          </template>
-          <div class="body">
-            <img
-              src="@/assets/images/pay.png"
-              alt="donate"
-              style="width:100%"
-            />
-            <span style="display: inline-block; height: 30px; line-height: 30px"
-              >你可以请作者喝杯咖啡表示鼓励</span
-            >
+            <div class="recent-time">{{ item.time }}</div>
           </div>
-        </el-card>
-      </el-col>
-    </el-row>
+        </div>
+      </el-card>
+    </div>
   </div>
 </template>
 
-<script setup name="Index">
-const version = ref('3.9.2')
+<script setup>
+import { reactive, ref, computed, onMounted, onBeforeUnmount, markRaw } from 'vue'
+import { ElMessageBox, ElMessage } from 'element-plus'
+import {
+  RefreshRight,
+  Connection,
+  FullScreen,
+  User,
+  Calendar,
+  ChatDotRound,
+  Bell,
+  Operation,
+  WarningFilled,
+  Document,
+  Microphone,
+} from '@element-plus/icons-vue'
 
-function goTarget(url) {
-  window.open(url, '__blank')
+// ============ 时间更新 ============
+const nowTime = ref('')
+function updateNowTime() {
+  const now = new Date()
+  const h = String(now.getHours()).padStart(2, '0')
+  const m = String(now.getMinutes()).padStart(2, '0')
+  const s = String(now.getSeconds()).padStart(2, '0')
+  const M = String(now.getMonth() + 1).padStart(2, '0')
+  const d = String(now.getDate()).padStart(2, '0')
+  nowTime.value = `${M}月${d}日 ${h}:${m}:${s}`
 }
+let timer = null
+onMounted(() => {
+  updateNowTime()
+  timer = setInterval(updateNowTime, 1000)
+})
+onBeforeUnmount(() => {
+  if (timer) clearInterval(timer)
+})
+
+// ============ 机器人状态 ============
+const robotStatus = reactive({
+  robotName: '迎宾巡逻机器人',
+  robotCode: 'RB-LOCAL-001',
+  onlineStatus: 'online',
+  workStatus: 'standby',
+  batteryLevel: 85,
+  chargeStatus: 'notCharging',
+  networkStatus: 'normal',
+  ipAddress: '192.168.0.30',
+  currentVersion: 'v1.0.0',
+})
+
+const batteryColor = computed(() => {
+  if (robotStatus.batteryLevel <= 20) return '#f56c6c'
+  if (robotStatus.batteryLevel <= 50) return '#e6a23c'
+  return '#67c23a'
+})
+
+const workStatusType = computed(() => {
+  const map = { standby: 'success', running: 'primary', error: 'danger', charging: 'warning' }
+  return map[robotStatus.workStatus] || 'info'
+})
+
+const workStatusText = computed(() => {
+  const map = { standby: '待机中', running: '工作中', error: '异常', charging: '充电中' }
+  return map[robotStatus.workStatus] || robotStatus.workStatus
+})
+
+const chargeTagType = computed(() => {
+  const map = { notCharging: 'info', charging: 'warning', charged: 'success' }
+  return map[robotStatus.chargeStatus] || 'info'
+})
+
+const chargeStatusText = computed(() => {
+  const map = { notCharging: '未充电', charging: '充电中', charged: '已充满' }
+  return map[robotStatus.chargeStatus] || robotStatus.chargeStatus
+})
+
+// ============ 视频预览 ============
+const videoConnected = ref(false)
+
+function refreshVideo() {
+  ElMessage.warning('视频流接口暂未接入')
+}
+
+function reconnectVideo() {
+  ElMessage.warning('视频流接口暂未接入')
+}
+
+function handleFullscreenVideo() {
+  ElMessage.warning('视频流接口暂未接入')
+}
+
+// ============ 远程喊话 ============
+const shoutState = reactive({
+  connected: false,
+  speaking: false,
+  statusText: '未连接',
+  volume: 70,
+  lastStartTime: '',
+  lastEndTime: '',
+})
+
+const statusClass = computed(() => {
+  if (shoutState.speaking) return 'status-speaking'
+  if (shoutState.connected) return 'status-ready'
+  return 'status-idle'
+})
+
+function connectShout() {
+  shoutState.connected = true
+  shoutState.statusText = '准备就绪'
+  ElMessage.warning('远程喊话接口暂未接入,当前仅模拟连接状态')
+}
+
+function toggleShout() {
+  if (!shoutState.connected) {
+    ElMessage.warning('请先连接远程喊话通道')
+    return
+  }
+  if (!shoutState.speaking) {
+    shoutState.speaking = true
+    shoutState.statusText = '正在喊话'
+    shoutState.lastStartTime = nowTime.value
+    ElMessage.warning('麦克风采集接口暂未接入,当前仅模拟喊话状态')
+  } else {
+    stopShout()
+  }
+}
+
+function stopShout() {
+  if (!shoutState.speaking) {
+    shoutState.statusText = shoutState.connected ? '准备就绪' : '未连接'
+    return
+  }
+  shoutState.speaking = false
+  shoutState.statusText = '已结束'
+  shoutState.lastEndTime = nowTime.value
+  ElMessage.info('已结束远程喊话')
+}
+
+// ============ 设备控制 ============
+function handleDeviceControl(action) {
+  const names = {
+    charge: '一键充电',
+    stopCharge: '停止充电',
+    reboot: '重启机器人',
+    shutdown: '关机',
+  }
+  ElMessage.warning(`设备控制接口暂未接入:${names[action] || action}`)
+}
+
+function confirmDanger(action) {
+  const msgs = {
+    reboot: '此操作将重启机器人,请确认是否继续?',
+    shutdown: '此操作将关闭机器人,请确认是否继续?',
+  }
+  const titles = {
+    reboot: '确认执行“重启机器人”吗?',
+    shutdown: '确认执行“关机”吗?',
+  }
+  ElMessageBox.confirm(msgs[action], titles[action], {
+    confirmButtonText: '确认',
+    cancelButtonText: '取消',
+    type: 'warning',
+  })
+    .then(() => {
+      handleDeviceControl(action)
+    })
+    .catch(() => {})
+}
+
+// ============ 统计数据 ============
+const stats = reactive([
+  { key: 'visitor', label: '今日访客', value: 12, desc: '累计登记人数', color: '#409eff', icon: markRaw(User) },
+  { key: 'appointment', label: '今日预约', value: 5, desc: '待到访预约', color: '#e6a23c', icon: markRaw(Calendar) },
+  { key: 'dialogue', label: '今日对话', value: 38, desc: '人机交互次数', color: '#67c23a', icon: markRaw(ChatDotRound) },
+  { key: 'broadcast', label: '今日播报', value: 16, desc: '播报任务执行', color: '#909399', icon: markRaw(Microphone) },
+  { key: 'alarm', label: '今日告警', value: 2, desc: '安防告警记录', color: '#f56c6c', icon: markRaw(Bell) },
+  { key: 'operate', label: '今日操作', value: 9, desc: '运维操作次数', color: '#843cf7', icon: markRaw(Operation) },
+])
+
+// ============ 最近告警(相对时间) ============
+const recentAlarms = reactive([
+  { alarmTime: '09:23', alarmLevel: '警告', alarmType: '电量低', description: '电池电量低于20%,请及时充电', handleStatus: '待处理' },
+  { alarmTime: '08:45', alarmLevel: '提醒', alarmType: '网络波动', description: '检测到网络短暂断开后恢复', handleStatus: '已处理' },
+  { alarmTime: '昨天', alarmLevel: '警告', alarmType: '人员闯入', description: '检测到非授权人员进入警戒区域', handleStatus: '已处理' },
+])
+
+// ============ 最近记录 ============
+const recentRecords = reactive([
+  { key: 'v1', type: '访客登记', summary: '张先生 预约到访 已登记', time: '09:30', icon: markRaw(User), color: '#409eff', path: '/visitor' },
+  { key: 'd1', type: '人机对话', summary: '你好,请问洗手间怎么走?', time: '09:28', icon: markRaw(ChatDotRound), color: '#67c23a', path: '/dialogue' },
+  { key: 'o1', type: '运维操作', summary: '参数配置保存成功', time: '09:15', icon: markRaw(Operation), color: '#843cf7', path: '/param' },
+  { key: 'b1', type: '播报任务', summary: '定时播报已完成 执行成功', time: '09:00', icon: markRaw(Microphone), color: '#909399', path: '/broadcast' },
+  { key: 'a1', type: '安防告警', summary: '电量低于20% 警告级别', time: '08:45', icon: markRaw(WarningFilled), color: '#f56c6c', path: '/alarm' },
+  { key: 'f1', type: '升级失败', summary: '视觉模块升级失败 v1.2.3', time: '昨天', icon: markRaw(Document), color: '#e6a23c', path: '/ota' },
+])
+
+function alarmLevelType(level) {
+  const map = { '警告': 'warning', '提醒': 'info', '严重': 'danger' }
+  return map[level] || 'info'
+}
+
+function goTo(path) {
+  ElMessage.info(`跳转到${path}页面(待实现)`)
+}
+
+function goToRecord(item) {
+  ElMessage.info(`跳转到 ${item.summary}(待实现)`)
+}
+
+// ============ 预留接口方法 ============
+function loadDashboardData() {
+  // TODO: 加载首页各项数据
+}
+
+loadDashboardData()
 </script>
 
 <style scoped lang="scss">
-.home {
-  blockquote {
-    padding: 10px 20px;
-    margin: 0 0 20px;
-    font-size: 17.5px;
-    border-left: 5px solid #eee;
+.robot-home {
+  padding: 16px;
+  background: #f5f7fb;
+  min-height: calc(100vh - 84px);
+}
+
+/* ========== 通用卡片 ========== */
+.dashboard-card {
+  border-radius: 10px;
+  border: 1px solid #ebeef5;
+  box-shadow: 0 2px 10px rgba(15, 23, 42, 0.04);
+  background: #fff;
+}
+
+.card-header {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+
+.card-title {
+  font-size: 15px;
+  font-weight: 600;
+  color: #303133;
+}
+
+/* ========== 顶部状态区 ========== */
+.status-hero {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  gap: 24px;
+  background: linear-gradient(135deg, #ffffff 0%, #f7fbff 100%);
+  border-radius: 12px;
+  border: 1px solid #e8eef7;
+  padding: 18px 28px;
+  margin-bottom: 16px;
+  box-shadow: 0 2px 12px rgba(15, 23, 42, 0.06);
+}
+
+.status-main {
+  display: flex;
+  align-items: center;
+  gap: 16px;
+}
+
+.robot-icon {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 52px;
+  height: 52px;
+  background: #ecf5ff;
+  border-radius: 14px;
+  color: #409eff;
+  flex-shrink: 0;
+}
+
+.status-info {
+  display: flex;
+  flex-direction: column;
+  gap: 4px;
+}
+
+.status-name {
+  font-size: 18px;
+  font-weight: 700;
+  color: #1a1a2e;
+  line-height: 1.3;
+}
+
+.status-code {
+  font-size: 12px;
+  color: #909399;
+  font-family: 'Courier New', monospace;
+  margin-bottom: 2px;
+}
+
+.status-tags {
+  display: flex;
+  gap: 6px;
+}
+
+.status-indicators {
+  display: flex;
+  align-items: center;
+  gap: 20px;
+}
+
+.indicator-item {
+  display: flex;
+  align-items: center;
+  gap: 6px;
+}
+
+.indicator-label {
+  font-size: 12px;
+  color: #909399;
+  white-space: nowrap;
+}
+
+.indicator-value {
+  font-size: 13px;
+  color: #303133;
+  font-weight: 500;
+}
+
+.indicator-value.mono {
+  font-family: 'Courier New', monospace;
+  font-size: 12px;
+}
+
+.status-time {
+  display: flex;
+  flex-direction: column;
+  align-items: flex-end;
+  gap: 2px;
+  padding-left: 20px;
+  border-left: 1px solid #ebeef5;
+}
+
+.time-label {
+  font-size: 11px;
+  color: #c0c4cc;
+}
+
+.time-value {
+  font-size: 12px;
+  color: #606266;
+}
+
+.time-value.mono {
+  font-family: 'Courier New', monospace;
+}
+
+/* ========== 主工作区 ========== */
+.main-grid {
+  display: grid;
+  grid-template-columns: minmax(0, 1.55fr) minmax(390px, 0.9fr);
+  gap: 16px;
+  align-items: stretch;
+  margin-bottom: 16px;
+}
+
+/* ========== 视频预览 ========== */
+.video-card {
+  :deep(.el-card__body) {
+    padding: 16px 18px 18px;
+  }
+}
+
+.video-placeholder {
+  background: #1a1a2e;
+  border-radius: 8px;
+  aspect-ratio: 16 / 9;
+  min-height: 300px;
+  max-height: 420px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  margin-bottom: 12px;
+}
+
+.video-center {
+  text-align: center;
+  color: #4a5568;
+}
+
+.video-icon {
+  opacity: 0.35;
+  margin-bottom: 10px;
+}
+
+.video-hint-primary {
+  font-size: 15px;
+  color: #718096;
+  font-weight: 500;
+  margin-bottom: 4px;
+}
+
+.video-hint-secondary {
+  font-size: 12px;
+  color: #4a5568;
+}
+
+.video-meta {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 10px 20px;
+  font-size: 12px;
+  color: #909399;
+  margin-bottom: 12px;
+}
+
+.video-actions {
+  display: flex;
+  gap: 10px;
+
+  .el-button {
+    flex: 1;
+    height: 34px;
+    margin-left: 0;
   }
-  hr {
-    margin-top: 20px;
-    margin-bottom: 20px;
-    border: 0;
-    border-top: 1px solid #eee;
+}
+
+/* ========== 右侧面板 ========== */
+.right-panel {
+  display: flex;
+  flex-direction: column;
+  gap: 16px;
+  height: 100%;
+}
+
+/* ========== 远程喊话 ========== */
+.shout-card,
+.control-card {
+  display: flex;
+  flex-direction: column;
+  :deep(.el-card__body) {
+    flex: 1;
+  }
+}
+
+.shout-card {
+  flex: 1.1;
+  min-height: 0;
+}
+
+.control-card {
+  flex: 0.9;
+  min-height: 0;
+  :deep(.el-card__body) {
+    padding: 18px;
   }
-  .col-item {
-    margin-bottom: 20px;
+}
+
+.mic-panel {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  min-height: 250px;
+  height: 100%;
+  padding: 12px 0 18px;
+}
+
+.mic-button {
+  width: 96px;
+  height: 96px;
+  border-radius: 50%;
+  background: #f0f2f5;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  margin-bottom: 12px;
+  cursor: pointer;
+  transition: all 0.2s;
+  color: #606266;
+  border: 2px solid transparent;
+
+  &:hover {
+    background: #e6e8eb;
+    color: #409eff;
+    border-color: #409eff;
   }
 
-  ul {
-    padding: 0;
-    margin: 0;
+  &.is-speaking {
+    background: #409eff;
+    color: #fff;
+    box-shadow: 0 0 0 8px rgba(64, 158, 255, 0.15);
+    animation: mic-pulse 1.5s ease-in-out infinite;
+
+    .mic-icon {
+      color: #fff;
+    }
   }
+}
+
+@keyframes mic-pulse {
+  0%, 100% { box-shadow: 0 0 0 8px rgba(64, 158, 255, 0.15); }
+  50% { box-shadow: 0 0 0 14px rgba(64, 158, 255, 0.08); }
+}
+
+.mic-icon {
+  color: #606266;
+  transition: color 0.2s;
+}
+
+.mic-status {
+  font-size: 16px;
+  font-weight: 600;
+  color: #303133;
+  margin-bottom: 6px;
+  transition: color 0.2s;
+
+  &.status-speaking { color: #409eff; }
+  &.status-ready { color: #67c23a; }
+  &.status-idle { color: #909399; }
+}
+
+.mic-desc {
+  font-size: 12px;
+  color: #909399;
+  text-align: center;
+  margin-bottom: 4px;
+}
+
+.volume-row {
+  display: flex;
+  align-items: center;
+  gap: 8px;
+  margin-top: 12px;
+  width: 100%;
+  padding: 0 8px;
+}
+
+.shout-actions {
+  display: flex;
+  justify-content: center;
+  gap: 10px;
+  margin-top: 16px;
+  width: 100%;
+}
+
+/* ========== 设备控制 ========== */
+.control-grid {
+  display: grid;
+  grid-template-columns: repeat(2, minmax(0, 1fr));
+  gap: 12px;
+  height: 100%;
+  align-content: center;
+}
+
+.control-action {
+  border: 1px solid transparent;
+  border-radius: 10px;
+  min-height: 72px;
+  padding: 12px 10px;
+  cursor: pointer;
+  text-align: left;
+  transition: all 0.18s ease;
+  background: #f7f9fc;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  gap: 4px;
+
+  &:hover {
+    transform: translateY(-1px);
+    box-shadow: 0 6px 16px rgba(15, 23, 42, 0.08);
+  }
+}
+
+.control-action-title {
+  font-size: 15px;
+  font-weight: 700;
+  line-height: 1.2;
+}
+
+.control-action-desc {
+  font-size: 12px;
+  line-height: 1.2;
+  opacity: 0.72;
+}
+
+.control-action.is-charge {
+  background: #ecf5ff;
+  border-color: #b3d8ff;
+  color: #1f7aec;
+}
+
+.control-action.is-stop {
+  background: #fdf6ec;
+  border-color: #f5dab1;
+  color: #b7791f;
+}
 
-  font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
+.control-action.is-reboot {
+  background: #fff5f5;
+  border-color: #fbc4c4;
+  color: #d64545;
+}
+
+.control-action.is-shutdown {
+  background: #fef0f0;
+  border-color: #f89898;
+  color: #c92a2a;
+}
+
+/* ========== 统计卡片 ========== */
+.stat-grid {
+  display: grid;
+  grid-template-columns: repeat(6, minmax(0, 1fr));
+  gap: 14px;
+  margin-bottom: 16px;
+}
+
+.stat-card {
+  cursor: pointer;
+  transition: transform 0.2s, box-shadow 0.2s;
+
+  &:hover {
+    transform: translateY(-2px);
+    box-shadow: 0 4px 16px rgba(15, 23, 42, 0.1);
+  }
+}
+
+.stat-body {
+  display: flex;
+  align-items: center;
+  gap: 12px;
+}
+
+.stat-icon {
+  font-size: 30px;
+  line-height: 1;
+  flex-shrink: 0;
+}
+
+.stat-data {
+  flex: 1;
+  min-width: 0;
+}
+
+.stat-value {
+  font-size: 26px;
+  font-weight: 700;
+  color: #303133;
+  line-height: 1.2;
+}
+
+.stat-label {
+  font-size: 13px;
+  color: #606266;
+  margin-top: 2px;
+}
+
+.stat-desc {
+  font-size: 11px;
+  color: #c0c4cc;
+  margin-top: 2px;
+}
+
+/* ========== 底部记录区 ========== */
+.record-grid {
+  display: grid;
+  grid-template-columns: 1fr 1fr;
+  gap: 16px;
+}
+
+.record-card {
+  :deep(.el-table) {
+    border-radius: 6px;
+    overflow: hidden;
+  }
+}
+
+.recent-list {
+  display: flex;
+  flex-direction: column;
+}
+
+.recent-item {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding: 10px 4px;
+  border-bottom: 1px solid #f0f2f5;
+  cursor: pointer;
+  border-radius: 6px;
+  transition: background 0.2s;
+
+  &:last-child {
+    border-bottom: none;
+  }
+
+  &:hover {
+    background: #f9fafb;
+    padding-left: 8px;
+    padding-right: 8px;
+  }
+}
+
+.recent-left {
+  display: flex;
+  align-items: center;
+  gap: 10px;
+  min-width: 0;
+}
+
+.recent-icon {
+  font-size: 20px;
+  flex-shrink: 0;
+}
+
+.recent-info {
+  min-width: 0;
+}
+
+.recent-type {
   font-size: 13px;
-  color: #676a6c;
-  overflow-x: hidden;
+  font-weight: 500;
+  color: #303133;
+}
+
+.recent-summary {
+  font-size: 12px;
+  color: #909399;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  max-width: 220px;
+}
 
-  ul {
-    list-style-type: none;
+.recent-time {
+  font-size: 12px;
+  color: #c0c4cc;
+  flex-shrink: 0;
+  margin-left: 8px;
+}
+
+/* ========== 响应式 ========== */
+@media (max-width: 1400px) {
+  .stat-grid {
+    grid-template-columns: repeat(3, 1fr);
   }
+}
 
-  h4 {
-    margin-top: 0px;
+@media (max-width: 1200px) {
+  .main-grid,
+  .record-grid {
+    grid-template-columns: 1fr;
+  }
+  .right-panel {
+    height: auto;
   }
+  .shout-card,
+  .control-card {
+    flex: none;
+  }
+}
 
-  h2 {
-    margin-top: 10px;
-    font-size: 26px;
-    font-weight: 100;
+@media (max-width: 900px) {
+  .stat-grid {
+    grid-template-columns: repeat(2, 1fr);
   }
 
-  p {
-    margin-top: 10px;
+  .status-hero {
+    flex-direction: column;
+    align-items: flex-start;
+    gap: 12px;
+  }
 
-    b {
-      font-weight: 700;
-    }
+  .status-indicators {
+    flex-wrap: wrap;
+    gap: 12px;
   }
 
-  .update-log {
-    ol {
-      display: block;
-      list-style-type: decimal;
-      margin-block-start: 1em;
-      margin-block-end: 1em;
-      margin-inline-start: 0;
-      margin-inline-end: 0;
-      padding-inline-start: 40px;
-    }
+  .status-time {
+    border-left: none;
+    padding-left: 0;
+    align-items: flex-start;
   }
 }
-</style>
 
+</style>

+ 136 - 107
迎宾巡逻安防机器人运维端Web管理系统详细设计开发文档_V2.1.html

@@ -38,7 +38,7 @@
   </div>
 
   <div class="section" id="s2"><h2>2. 用户角色与使用目标</h2>
-    <table><thead><tr><th>角色</th><th>主要职责</th><th>核心使用模块</th></tr></thead><tbody><tr><td>管理员</td><td>系统初始化、账号维护、全量配置、升级控制</td><td>全部模块</td></tr><tr><td>运维人员</td><td>日常维护、配置调整、排障处理、日志查看</td><td>首页、内容管理、监控管理、运维管理</td></tr><tr><td>交付实施人员</td><td>现场交付、基础内容录入、播放方案配置、主题设置</td><td>首页、内容管理、系统设置</td></tr><tr><td>售后支持人员</td><td>远程辅助定位问题、指导升级、查看状态</td><td>首页、监控管理、运维管理</td></tr><tr><td>查看人员</td><td>仅查看运行状态和记录,不执行配置和控制操作</td><td>首页、访客记录、对话日志、告警日志</td></tr></tbody></table>
+    <table><thead><tr><th>角色</th><th>主要职责</th><th>核心使用模块</th></tr></thead><tbody><tr><td>管理员</td><td>系统初始化、账号维护、全量配置、升级控制</td><td>全部模块</td></tr><tr><td>运维人员</td><td>日常维护、配置调整、排障处理、日志查看</td><td>首页、内容管理、运维管理</td></tr><tr><td>交付实施人员</td><td>现场交付、基础内容录入、播放方案配置、主题设置</td><td>首页、内容管理、系统设置</td></tr><tr><td>售后支持人员</td><td>远程辅助定位问题、指导升级、查看状态</td><td>首页、运维管理</td></tr><tr><td>查看人员</td><td>仅查看运行状态和记录,不执行配置和控制操作</td><td>首页、访客记录、对话日志、告警日志</td></tr></tbody></table>
     <h3>2.1 典型使用目标</h3>
     <div class="scenario-grid">
       <div class="scenario-card">
@@ -66,22 +66,22 @@
   </div>
 
   <div class="section" id="s3"><h2>3. 系统边界与设计原则</h2>
-    <h3>3.1 本系统负责内容</h3><div><span class="tag">本地登录</span><span class="tag">机器人状态查看</span><span class="tag">设备简单控制</span><span class="tag">欢迎语配置</span><span class="tag">问答库管理</span><span class="tag">素材管理</span><span class="tag">播放方案管理</span><span class="tag">播报内容管理</span><span class="tag">播报任务管理</span><span class="tag">展示主题配置</span><span class="tag">访客记录查看导出</span><span class="tag">预约记录查看</span><span class="tag">白名单管理</span><span class="tag">视频预览</span><span class="tag">远程喊话</span><span class="tag">对话日志</span><span class="tag">安防告警日志</span><span class="tag">参数配置</span><span class="tag">日志中心</span><span class="tag">系统诊断</span><span class="tag">版本管理与 OTA</span></div>
+    <h3>3.1 本系统负责内容</h3><div><span class="tag">本地登录</span><span class="tag">机器人状态查看</span><span class="tag">设备简单控制</span><span class="tag">欢迎语配置</span><span class="tag">问答库管理</span><span class="tag">素材管理</span><span class="tag">播放方案管理</span><span class="tag">播报内容管理</span><span class="tag">播报任务管理</span><span class="tag">展示主题配置</span><span class="tag">访客记录查看导出</span><span class="tag">预约记录查看</span><span class="tag">白名单管理</span><span class="tag">视频预览</span><span class="tag">远程喊话</span><span class="tag">对话日志</span><span class="tag">安防告警日志</span><span class="tag">参数配置</span><span class="tag">运行日志</span><span class="tag">版本管理与 OTA</span></div>
     <h3>3.2 本系统不负责内容</h3><ul><li>多机器人管理和云端总控。</li><li>建图、路径编辑、巡逻任务编排等导航管理页面。</li><li>安防算法逻辑本身,例如跌倒检测、越界检测的算法实现。</li><li>访客预约发起、被访人确认、通行权限下发等上层业务流程。</li></ul><div class="warn">地图与路径功能虽然属于机器人能力的重要组成部分,但本期由其他团队负责,不纳入本 HTML 文档页面和表设计范围。</div>
     <h3>3.3 设计原则</h3><ul><li>页面先按清晰可开发的业务模块定型,不采用“待定”“后续再说”的写法作为主体内容。</li><li>对动态参数、动态日志等场景,采用“页面结构固定 + 数据内容动态”的设计方式。</li><li>列表页统一遵循:查询区 + 操作区 + 表格区 + 分页区 + 详情弹窗 / 编辑弹窗。</li><li>高风险动作统一弹窗二次确认,并写入操作日志。</li></ul>
   </div>
 
   <div class="section" id="s4"><h2>4. 总体功能架构</h2><div class="grid-3">
-    <div class="card"><strong>首页</strong><ul><li>运行总览</li><li>统计信息</li><li>异常告警</li><li>快捷操作</li></ul></div><div class="card"><strong>内容管理</strong><ul><li>欢迎语配置</li><li>问答库管理</li><li>素材管理</li><li>播放方案管理</li><li>播报内容管理</li><li>播报任务管理</li><li>展示主题配置</li></ul></div><div class="card"><strong>访客管理</strong><ul><li>访客记录</li><li>预约记录</li><li>白名单管理</li></ul></div><div class="card"><strong>监控管理</strong><ul><li>视频预览</li><li>远程喊话</li><li>对话日志</li><li>安防告警日志</li></ul></div><div class="card"><strong>运维管理</strong><ul><li>设备状态</li><li>设备控制</li><li>运行参数配置</li><li>系统诊断</li><li>日志中心</li><li>软件版本 / OTA 升级</li></ul></div><div class="card"><strong>系统设置</strong><ul><li>账号管理</li><li>修改密码</li><li>基础设置</li></ul></div>
+    <div class="card"><strong>首页</strong><ul><li>运行总览</li><li>设备状态</li><li>视频预览</li><li>远程喊话</li><li>设备控制</li><li>统计信息</li><li>异常告警</li><li>最近记录</li></ul></div><div class="card"><strong>内容管理</strong><ul><li>欢迎语配置</li><li>问答库管理</li><li>素材管理</li><li>播放方案管理</li><li>播报内容管理</li><li>播报任务管理</li><li>展示主题配置</li></ul></div><div class="card"><strong>访客管理</strong><ul><li>访客记录</li><li>预约记录</li><li>白名单管理</li></ul></div><div class="card"><strong>运维管理</strong><ul><li>运行参数配置</li><li>运行日志</li><li>对话日志</li><li>安防告警日志</li><li>软件版本 / OTA 升级</li></ul></div><div class="card"><strong>系统设置</strong><ul><li>账号管理</li><li>修改密码</li><li>基础设置</li></ul></div>
   </div></div>
 
   <div class="section" id="s5"><h2>5. 菜单结构设计</h2>
     <table><thead><tr><th>一级菜单</th><th>二级菜单</th><th>页面职责</th><th>一期优先级</th></tr></thead><tbody>
-      <tr><td>首页</td><td>首页总览</td><td>展示机器人实时状态、摘要统计、异常告警与快捷操作入口。</td><td>P0</td></tr>
+      <tr><td>首页</td><td>首页总览</td><td>展示机器人实时状态、视频预览、远程喊话、设备快捷控制、摘要统计、异常告警与最近记录。</td><td>P0</td></tr>
       <tr><td rowspan="7">内容管理</td><td>欢迎语配置</td><td>维护机器人默认欢迎语和触发控制参数。</td><td>P0</td></tr><tr><td>问答库管理</td><td>维护 FAQ 问答数据,支持字典分类、相似问、导出;一期暂不支持导入。问答分类使用 RuoYi 字典,不单独建设问答分类管理菜单。</td><td>P0</td></tr><tr><td>素材管理</td><td>维护图片、视频素材。</td><td>P0</td></tr><tr><td>播放方案管理</td><td>维护素材播放编排关系、时长、顺序和当前播放方案。</td><td>P0</td></tr><tr><td>播报内容管理</td><td>维护可被播报任务引用的播报文本模板。</td><td>P0</td></tr><tr><td>播报任务管理</td><td>维护播报时间策略、频率、启停状态。</td><td>P0</td></tr><tr><td>展示主题配置</td><td>维护机器人屏幕待机页的展示内容,包括 Logo、品牌文案、背景图、欢迎文案、按钮文案和按钮颜色。</td><td>P1</td></tr>
       <tr><td rowspan="3">访客管理</td><td>访客记录</td><td>查看访客登记记录,支持查询、详情、导出。</td><td>P1</td></tr><tr><td>预约记录</td><td>查看主控平台同步的预约记录。</td><td>P1</td></tr><tr><td>白名单管理</td><td>维护人员白名单数据,支持通过人脸照片、身份证号、手机号进行白名单匹配。</td><td>P1</td></tr>
-      <tr><td rowspan="4">监控管理</td><td>视频预览</td><td>查看机器人摄像头实时画面。</td><td>P1</td></tr><tr><td>远程喊话</td><td>下发喊话内容、查看执行结果。</td><td>P1</td></tr><tr><td>对话日志</td><td>查看人机交互日志。</td><td>P1</td></tr><tr><td>安防告警日志</td><td>查看机器人侧安防告警记录。</td><td>P1</td></tr>
-      <tr><td rowspan="6">运维管理</td><td>设备状态</td><td>查看详细设备状态、资源占用、模块状态。</td><td>P0</td></tr><tr><td>设备控制</td><td>提供一键充电、停止充电、重启、关机、服务重启等操作。</td><td>P0</td></tr><tr><td>运行参数配置</td><td>动态读取参数分组与字段,支持编辑与保存。</td><td>P0</td></tr><tr><td>系统诊断</td><td>查看诊断检查结果、自检结果与关键资源状态。</td><td>P1</td></tr><tr><td>日志中心</td><td>统一查看系统、设备、升级、操作等日志。</td><td>P0</td></tr><tr><td>软件版本 / OTA 升级</td><td>查看版本、上传安装包、执行升级、查看升级记录。</td><td>P0</td></tr>
+      
+      <tr><td rowspan="5">运维管理</td><td>运行参数配置</td><td>动态读取参数分组与字段,支持编辑与保存。</td><td>P0</td></tr><tr><td>运行日志</td><td>查看机器人设备侧上报的运行日志、服务日志、异常报错日志和关键模块日志。</td><td>P0</td></tr><tr><td>对话日志</td><td>查看人机交互日志。</td><td>P1</td></tr><tr><td>安防告警日志</td><td>查看机器人侧安防告警记录。</td><td>P1</td></tr><tr><td>软件版本 / OTA 升级</td><td>查看版本、上传安装包、执行升级、查看升级记录。</td><td>P0</td></tr>
       <tr><td rowspan="3">系统设置</td><td>账号管理</td><td>维护后台账号、角色、状态。</td><td>P1</td></tr><tr><td>修改密码</td><td>当前登录账号修改密码。</td><td>P0</td></tr><tr><td>基础设置</td><td>维护系统名称、Logo、页脚信息等后台基础配置。</td><td>P2</td></tr>
     </tbody></table>
 
@@ -98,26 +98,22 @@
         </tr>
       </thead>
       <tbody>
-        <tr><td>首页</td><td>首页总览</td><td>定制开发</td><td>否</td><td>首页涉及机器人实时状态、统计卡片、告警摘要、快捷操作入口,属于聚合看板页面,不能直接按单表 CRUD 生成。</td></tr>
+        <tr><td>首页</td><td>首页总览</td><td>定制开发</td><td>否</td><td>首页涉及机器人实时状态、设备状态、视频预览、远程喊话、设备快捷控制、统计卡片、告警摘要和最近记录,属于聚合工作台页面,不能直接按单表 CRUD 生成。</td></tr>
         <tr><td rowspan="7">内容管理</td><td>欢迎语配置</td><td>定制开发</td><td>不建议生成前端列表页</td><td>欢迎语配置为单配置页,不是多条数据 CRUD 页面。数据库通过 config_key=default 定位默认配置;前端建议自定义表单页,直接加载和保存默认配置,不提供列表、新增、删除。</td></tr>
         <tr><td>问答库管理</td><td>RuoYi 主子表生成后定制</td><td>部分适合</td><td>可基于 robot_ops_faq、robot_ops_faq_similar 生成基础 CRUD;问题分类使用 RuoYi 字典 robot_faq_category,不单独生成问答分类管理页面;前端需将主子表明细表格调整为“相似问多行输入,一行一个”的交互方式;sortNo 作为保留字段,不在页面展示和编辑;启用/停用、导出、分类字典回显需按业务微调。一期暂不支持问答库导入,后续如运营需要批量维护再扩展。</td></tr>
         <tr><td>素材管理</td><td>RuoYi 生成后定制</td><td>部分适合</td><td>可基于 robot_ops_media_asset 生成基础列表、查询、详情、编辑、删除、导出接口和页面;当前前端已基于 RuoYi 接口和 /common/uploadMediaFile 上传接口完成定制。前端只允许用户维护素材名称、启用状态和备注,文件信息由上传接口返回或系统维护;缩略图展示、图片/视频预览、引用状态展示、删除引用保护提示均需定制。</td></tr>
         <tr><td>播放方案管理</td><td>RuoYi 主子表生成后定制</td><td>部分适合</td><td>播放方案由主表 robot_ops_play_plan 和子表 robot_ops_play_plan_item 组成,适合先使用 RuoYi 主子表生成基础列表、表单、Controller、Service、Mapper,再进行定制。前端需将原始子表表格调整为“选择素材 + 素材编排”交互,支持素材选择、顺序调整、图片停留时长、视频默认播完切换、播放状态切换、预览方案。播放状态 status=1 表示当前播放方案,status=0 表示备用方案;同一时间只允许一个播放方案处于当前播放状态,该规则需由后端事务控制。素材 quotedFlag 维护需由后端补充业务逻辑。</td></tr>
         <tr><td>播报内容管理</td><td>RuoYi 生成后微调</td><td>适合</td><td>典型单表 CRUD,可基于 robot_ops_broadcast_content 生成,再补充测试播报按钮。</td></tr>
         <tr><td>播报任务管理</td><td>RuoYi 生成后定制</td><td>部分适合</td><td>基础 CRUD 可生成;时间段、频率、循环规则、复制任务等需要定制表单校验和交互。</td></tr>
-        <tr><td>展示主题配置</td><td>RuoYi 生成后改造成单配置页</td><td>部分适合</td><td>本模块一期按“待机页展示配置”设计,为单配置页,不做列表、新增、删除、多主题切换和启用状态。后端可先基于 robot_ops_screen_theme_config 使用 RuoYi 生成基础 CRUD,再改造成按 config_key=default 查询和保存的接口;前端建议参考欢迎语配置页面定制为单配置表单页。页面字段包括 Logo 图片、品牌标题、品牌副标题、背景图、欢迎主标题、欢迎副标题、按钮文案、按钮颜色和备注。一期不做预览页面,后续如有需要再扩展待机页预览。</td></tr>
+        <tr><td>展示主题配置</td><td>RuoYi 生成后改造成单配置页</td><td>部分适合</td><td>本模块一期按“待机页展示配置”设计,为单配置页,不做列表、新增、普通删除、多主题切换和启用状态;仅保留“清空配置”能力,用于删除当前 config_key=default 的运维端覆盖配置。后端可先基于 robot_ops_screen_theme_config 使用 RuoYi 生成基础 CRUD,再改造成按 config_key=default 查询和保存的接口;前端建议参考欢迎语配置页面定制为单配置表单页。页面字段包括 Logo 图片、品牌标题、品牌副标题、背景图、欢迎主标题、欢迎副标题、按钮文案、按钮颜色和备注。一期不做预览页面,后续如有需要再扩展待机页预览。</td></tr>
         <tr><td rowspan="3">访客管理</td><td>访客记录</td><td>RuoYi 生成后定制</td><td>部分适合</td><td>可基于 robot_ops_visitor_record 生成只读列表和详情页面;需去掉新增、编辑、删除,补充到访类型、登记方式、访客来源、来访事由、照片预览、时间范围查询、详情弹窗和导出字段优化。列表中访客照片前置到身份证号后,便于快速识别访客身份。</td></tr>
         <tr><td>预约记录</td><td>RuoYi 生成后微调</td><td>适合</td><td>典型查询列表和详情页面,可基于 robot_ops_appointment_record 生成,数据来源为主控平台同步。</td></tr>
         <tr><td>白名单管理</td><td>RuoYi 生成后定制</td><td>部分适合</td><td>可基于 robot_ops_whitelist 生成基础 CRUD;需补充身份证号、人脸照片上传/预览、有效期、人员类型、启用/停用、导入导出,以及手机号/身份证号/人脸照片至少填写一种的表单校验。</td></tr>
-        <tr><td rowspan="4">监控管理</td><td>视频预览</td><td>定制开发</td><td>否</td><td>实时视频播放、重连、全屏、状态提示依赖视频流接口和播放器组件,需要定制开发。</td></tr>
-        <tr><td>远程喊话</td><td>半定制开发</td><td>部分适合</td><td>喊话记录列表可基于 robot_ops_shout_record 生成;喊话输入、预置短语、立即喊话操作需要定制。</td></tr>
+        
+        <tr><td rowspan="5">运维管理</td><td>运行参数配置</td><td>定制开发</td><td>否</td><td>虽然有 robot_ops_param 表,但页面需要根据参数分组和值类型动态渲染表单控件,不能直接按固定 CRUD 页面生成。</td></tr>
+        <tr><td>运行日志</td><td>RuoYi 生成后微调</td><td>适合</td><td>运行日志页面用于查看机器人设备侧上报的运行日志、服务日志、异常报错日志和关键模块日志。页面以查询、列表、详情、导出为主,不做主动诊断、立即自检和诊断项配置,可基于 robot_ops_sys_log 生成后微调。</td></tr>
         <tr><td>对话日志</td><td>RuoYi 生成后微调</td><td>适合</td><td>典型日志查询和详情页面,可基于 robot_ops_dialogue_log 生成,详情页需展示原始请求和原始响应。</td></tr>
         <tr><td>安防告警日志</td><td>RuoYi 生成后微调</td><td>适合</td><td>典型日志查询页面,可基于 robot_ops_alarm_log 生成,再补充确认告警、忽略告警、抓拍图预览。</td></tr>
-        <tr><td rowspan="6">运维管理</td><td>设备状态</td><td>定制开发</td><td>否</td><td>数据来自机器人侧实时接口,不落库;页面为状态面板和模块状态展示,不能按数据库表生成。</td></tr>
-        <tr><td>设备控制</td><td>半定制开发</td><td>部分适合</td><td>控制记录列表可基于 robot_ops_control_record 生成;一键充电、重启、关机、服务重启等控制按钮和二次确认需要定制。</td></tr>
-        <tr><td>运行参数配置</td><td>定制开发</td><td>否</td><td>虽然有 robot_ops_param 表,但页面需要根据参数分组和值类型动态渲染表单控件,不能直接按固定 CRUD 页面生成。</td></tr>
-        <tr><td>系统诊断</td><td>半定制开发</td><td>部分适合</td><td>诊断项列表可基于 robot_ops_diagnosis_item 生成;立即诊断、诊断总览和诊断结果聚合需要定制。</td></tr>
-        <tr><td>日志中心</td><td>RuoYi 生成后定制</td><td>部分适合</td><td>单表日志可生成,但日志中心需要整合 robot_ops_sys_log 和 robot_ops_operate_log,并通过 sourceType 区分来源,需要定制查询逻辑。</td></tr>
         <tr><td>软件版本 / OTA 升级</td><td>定制开发</td><td>否</td><td>升级包列表和升级记录可参考生成代码,但上传安装包、执行升级、进度刷新、结果展示属于流程型页面,需要定制开发。</td></tr>
         <tr><td rowspan="3">系统设置</td><td>账号管理</td><td>优先复用 RuoYi</td><td>视权限方案而定</td><td>如果使用 RuoYi 原生权限体系,优先复用系统用户、角色、菜单管理;如果采用本文简化账号表,可基于 robot_ops_user 生成后微调。</td></tr>
         <tr><td>修改密码</td><td>复用/定制均可</td><td>否</td><td>修改密码通常复用 RuoYi 用户中心能力,不建议按表生成单独 CRUD 页面。</td></tr>
@@ -130,10 +126,33 @@
   <div class="section" id="s6"><h2>6. 页面详细设计</h2>
     <h3>6.1 登录页</h3><table><thead><tr><th>项</th><th>详细设计</th></tr></thead><tbody><tr><td>页面目标</td><td>本地后台登录入口,控制未授权用户访问。</td></tr><tr><td>展示字段</td><td>账号、密码、登录按钮、错误提示文案、系统标题、系统 Logo。</td></tr><tr><td>操作按钮</td><td>登录。</td></tr><tr><td>校验规则</td><td>账号不能为空;密码不能为空;连续输错密码 5 次锁定 10 分钟。</td></tr><tr><td>登录成功动作</td><td>写入 token / session,跳转首页。</td></tr><tr><td>登录失败动作</td><td>显示失败原因;账号或密码错误时不暴露具体哪个字段错误。</td></tr></tbody></table>
 
-    <h3>6.2 首页 / 工作台</h3><p>首页按<strong>顶部状态区 + 统计区 + 告警区 + 快捷操作区 + 最近记录区</strong>进行设计。</p><div class="note">首页中的机器人基础信息、实时运行状态、资源占用状态、模块状态等数据由机器人侧接口实时返回,运维端一期不建设机器人基础信息表和设备状态快照表。</div>
-    <h4>6.2.1 顶部状态区字段</h4><table><thead><tr><th>字段</th><th>说明</th><th>展示形式</th></tr></thead><tbody><tr><td>机器人名称(robotName)</td><td>机器人名称</td><td>文本</td></tr><tr><td>机器人编号(robotCode)</td><td>机器人编号</td><td>文本</td></tr><tr><td>在线状态(onlineStatus)</td><td>在线状态:在线/离线</td><td>状态标签</td></tr><tr><td>工作状态(workStatus)</td><td>工作状态:空闲/接待中/播报中/充电中/异常</td><td>状态标签</td></tr><tr><td>电量百分比(batteryLevel)</td><td>电量百分比</td><td>进度条 + 文本</td></tr><tr><td>充电状态(chargeStatus)</td><td>充电状态:未充电/充电中/充满</td><td>状态标签</td></tr><tr><td>网络状态(networkStatus)</td><td>网络状态:正常/异常</td><td>状态标签</td></tr><tr><td>设备本地 IP(ipAddress)</td><td>设备本地 IP</td><td>文本</td></tr><tr><td>存储占用情况(storageUsed)</td><td>存储占用情况</td><td>文本,例如 18.3GB / 64GB</td></tr><tr><td>系统主版本号(currentVersion)</td><td>系统主版本号</td><td>文本</td></tr></tbody></table>
-    <h4>6.2.2 统计区字段</h4><table><thead><tr><th>字段</th><th>说明</th><th>点击跳转</th></tr></thead><tbody><tr><td>今日访客登记数量(todayVisitorCount)</td><td>今日访客登记数量</td><td>访客记录</td></tr><tr><td>今日预约记录数量(todayAppointmentCount)</td><td>今日预约记录数量</td><td>预约记录</td></tr><tr><td>今日对话次数(todayDialogueCount)</td><td>今日对话次数</td><td>对话日志</td></tr><tr><td>今日播报次数(todayBroadcastCount)</td><td>今日播报次数</td><td>播报任务</td></tr><tr><td>今日安防告警数量(todayAlarmCount)</td><td>今日安防告警数量</td><td>安防告警日志</td></tr><tr><td>今日运维操作次数(todayOperateCount)</td><td>今日运维操作次数</td><td>日志中心</td></tr></tbody></table>
-    <h4>6.2.3 告警与快捷操作</h4><table><thead><tr><th>区块</th><th>内容</th></tr></thead><tbody><tr><td>最近系统异常</td><td>最近 5 条系统异常摘要,点击跳日志中心。</td></tr><tr><td>最近安防告警</td><td>最近 5 条安防告警摘要,点击跳安防告警日志。</td></tr><tr><td>最近升级失败</td><td>最近 5 条升级失败摘要,点击跳 OTA 升级页。</td></tr><tr><td>快捷按钮</td><td>查看摄像头、远程喊话、一键充电、停止充电、重启机器人、进入 OTA。</td></tr></tbody></table>
+    <h3>6.2 首页 / 工作台</h3><p>首页按<strong>顶部状态区 + 视频预览区 + 远程喊话区 + 设备控制区 + 统计区 + 告警区 + 最近记录区</strong>进行设计。</p><div class="note">首页中的机器人基础信息、实时运行状态、资源占用状态、模块状态等数据由机器人侧接口实时返回,运维端一期不建设机器人基础信息表和设备状态快照表。</div>
+    <div class="note">本期将原计划作为独立菜单的“视频预览、远程喊话、设备状态、设备控制”合并到首页工作台中。首页承担机器人实时查看和高频控制入口;监控管理一级菜单已取消,对话日志和安防告警日志合并到运维管理菜单;运维管理保留参数配置、运行日志和 OTA 等维护类页面。</div>
+    <h4>6.2.1 顶部状态与设备状态区字段</h4><table><thead><tr><th>字段</th><th>说明</th><th>展示形式</th></tr></thead><tbody><tr><td>机器人名称(robotName)</td><td>机器人名称</td><td>文本</td></tr><tr><td>机器人编号(robotCode)</td><td>机器人编号</td><td>文本</td></tr><tr><td>在线状态(onlineStatus)</td><td>在线状态:在线/离线</td><td>状态标签</td></tr><tr><td>工作状态(workStatus)</td><td>工作状态:空闲/接待中/播报中/充电中/异常</td><td>状态标签</td></tr><tr><td>电量百分比(batteryLevel)</td><td>电量百分比</td><td>进度条 + 文本</td></tr><tr><td>充电状态(chargeStatus)</td><td>充电状态:未充电/充电中/充满</td><td>状态标签</td></tr><tr><td>网络状态(networkStatus)</td><td>网络状态:正常/异常</td><td>状态标签</td></tr><tr><td>设备本地 IP(ipAddress)</td><td>设备本地 IP</td><td>文本</td></tr><tr><td>存储占用情况(storageUsed)</td><td>存储占用情况</td><td>文本,例如 18.3GB / 64GB</td></tr><tr><td>系统主版本号(currentVersion)</td><td>系统主版本号</td><td>文本</td></tr></tbody></table>
+    <h4>6.2.2 视频预览区</h4><table><thead><tr><th>区域</th><th>详细设计</th></tr></thead><tbody>
+<tr><td>播放器区域</td><td>展示机器人摄像头实时画面,支持播放、刷新、全屏。视频流地址、播放状态等由机器人侧实时接口返回,运维端一期不单独建设视频配置表。</td></tr>
+<tr><td>状态区域</td><td>展示视频状态:未连接、连接中、播放中、失败。播放失败时提示刷新、检查摄像头服务、检查网络。</td></tr>
+<tr><td>辅助信息</td><td>显示码流类型、分辨率、最近更新时间等信息。</td></tr>
+<tr><td>操作按钮</td><td>刷新、全屏、重新连接。</td></tr>
+</tbody></table>
+    <h4>6.2.3 远程喊话区</h4><table><thead><tr><th>区域</th><th>详细设计</th></tr></thead><tbody>
+<tr><td>页面目标</td><td>提供运维人员通过电脑麦克风对机器人进行实时远程喊话的入口。远程喊话不是文字转语音播报,不与播报内容、播报任务模块重复。</td></tr>
+<tr><td>麦克风按钮</td><td>页面中心展示大号麦克风按钮。点击后开始远程喊话,再次点击结束喊话。当前前端一期可先模拟状态,后续对接浏览器麦克风采集和机器人端音频播放能力。</td></tr>
+<tr><td>连接状态</td><td>展示远程喊话通道状态,包括未连接、准备就绪、正在喊话、已结束、连接失败等。</td></tr>
+<tr><td>音量控制</td><td>提供扬声器音量设置,取值范围 0-100,默认 70。后续对接机器人端音量控制接口。</td></tr>
+<tr><td>操作按钮</td><td>连接设备、结束喊话。连接设备用于建立远程喊话通道;结束喊话用于停止当前喊话。</td></tr>
+<tr><td>业务边界</td><td>远程喊话用于实时语音对讲/喊话;播报内容和播报任务用于文本播报、定时播报和固定内容播报。两者功能边界不同,不建议在远程喊话中提供文本输入、预置短语和播放次数。</td></tr>
+</tbody></table>
+    <h4>6.2.4 设备控制区</h4><table><thead><tr><th>控制项</th><th>说明</th><th>返回字段</th></tr></thead><tbody>
+<tr><td>一键充电</td><td>触发机器人进入充电流程</td><td>任务ID(taskId)、执行状态(resultStatus)、结果信息(resultMsg)</td></tr>
+<tr><td>停止充电</td><td>停止当前充电动作</td><td>任务ID(taskId)、执行状态(resultStatus)、结果信息(resultMsg)</td></tr>
+<tr><td>重启机器人</td><td>执行整机重启</td><td>任务ID(taskId)、执行状态(resultStatus)、结果信息(resultMsg)</td></tr>
+<tr><td>关机</td><td>执行安全关机</td><td>任务ID(taskId)、执行状态(resultStatus)、结果信息(resultMsg)</td></tr>
+<tr><td>控制记录</td><td>所有控制动作统一写入设备控制记录表和操作日志,便于追踪 taskId、执行结果和失败原因。</td><td>控制记录ID(controlRecordId)、任务ID(taskId)、执行状态(resultStatus)、结果信息(resultMsg)</td></tr>
+</tbody></table>
+
+    <h4>6.2.5 统计区字段</h4><table><thead><tr><th>字段</th><th>说明</th><th>点击跳转</th></tr></thead><tbody><tr><td>今日访客登记数量(todayVisitorCount)</td><td>今日访客登记数量</td><td>访客记录</td></tr><tr><td>今日预约记录数量(todayAppointmentCount)</td><td>今日预约记录数量</td><td>预约记录</td></tr><tr><td>今日对话次数(todayDialogueCount)</td><td>今日对话次数</td><td>对话日志</td></tr><tr><td>今日播报次数(todayBroadcastCount)</td><td>今日播报次数</td><td>播报任务</td></tr><tr><td>今日安防告警数量(todayAlarmCount)</td><td>今日安防告警数量</td><td>安防告警日志</td></tr><tr><td>今日运维操作次数(todayOperateCount)</td><td>今日运维操作次数</td><td>运行日志</td></tr></tbody></table>
+    <h4>6.2.6 告警与最近记录</h4><table><thead><tr><th>区块</th><th>内容</th></tr></thead><tbody><tr><td>最近系统异常</td><td>最近 5 条系统异常摘要,点击跳运行日志。</td></tr><tr><td>最近安防告警</td><td>最近 5 条安防告警摘要,点击跳安防告警日志。</td></tr><tr><td>最近升级失败</td><td>最近 5 条升级失败摘要,点击跳 OTA 升级页。</td></tr><tr><td>最近记录与跳转入口</td><td>展示最近访客、最近对话、最近安防告警、最近升级失败等记录,点击跳转对应日志或管理页面。视频预览、远程喊话和设备控制已作为首页独立功能区展示。</td></tr></tbody></table>
 
     <h3>6.3 内容管理</h3>
     <h4>6.3.1 欢迎语配置页面</h4><table><thead><tr><th>字段/功能</th><th>类型</th><th>详细设计</th></tr></thead><tbody><tr><td>页面目标</td><td>-</td><td>维护机器人默认欢迎语配置。该页面为单配置页,不提供列表、新增、删除;页面打开后直接加载 config_key=default 的默认配置,保存时更新该配置。</td></tr><tr><td>欢迎语文本(welcomeText)</td><td>textarea</td><td>欢迎语文本,最大 200 字。</td></tr><tr><td>语音播报(voiceEnabled)</td><td>switch</td><td>控制欢迎语触发时是否进行语音播报。启用后,机器人检测到访客时可语音播报欢迎语;关闭后,欢迎语可仅用于屏幕展示。</td></tr><tr><td>语音播报冷却时间(cooldownSeconds)</td><td>number</td><td>控制语音欢迎语的重复播报间隔,单位秒,默认 30。机器人语音播报欢迎语后,在冷却时间内再次检测到访客时,不重复语音播报,可仅进行屏幕展示。</td></tr><tr><td>启用欢迎语(status)</td><td>switch</td><td>控制欢迎语功能整体是否启用。停用后,机器人检测到访客时不触发欢迎语。</td></tr><tr><td>备注(remark)</td><td>input</td><td>备注说明。</td></tr><tr><td>保存</td><td>button</td><td>保存当前配置(更新 config_key=default 的配置)。</td></tr><tr><td>恢复默认</td><td>button</td><td>前端本地恢复系统默认欢迎语配置,不直接写入数据库;用户需再次点击“保存配置”后才更新 config_key=default 的配置。</td></tr><tr><td>测试播报</td><td>button</td><td>下发测试播报指令,用于验证当前欢迎语文本和语音播报配置。测试播报不新增或修改配置数据。</td></tr></tbody></table>
@@ -191,22 +210,22 @@
     <h4>6.3.6 播报任务管理页面</h4><table><thead><tr><th>模块</th><th>详细设计</th></tr></thead><tbody><tr><td>查询条件</td><td>任务名称、循环类型、启用状态。</td></tr><tr><td>列表字段</td><td>任务名称、关联内容名称、开始时间、结束时间、播报频率(分钟)、循环类型、循环取值、启用状态、操作。</td></tr><tr><td>编辑字段</td><td>任务名称(taskName)、关联播报内容(contentId,页面显示内容名称)、开始时间(startTime)、结束时间(endTime)、播报频率分钟数(frequencyMinutes,单位:分钟)、循环类型(cycleType)、循环取值(cycleValue)、启用状态(status)、备注(remark)。</td></tr><tr><td>cycleType</td><td>使用 RuoYi 字典 <code class="inline">broadcast_task_cycle_type</code>,字典值:1=按星期,2=按日期。</td></tr><tr><td>cycleValue</td><td>当 cycleType=1(按星期)时,保存星期值,1=星期一、2=星期二、3=星期三、4=星期四、5=星期五、6=星期六、7=星期日,多个值用英文逗号分隔,例如 1,2,3,4,5。当 cycleType=2(按日期)时,保存指定日期,多个日期用英文逗号分隔,例如 2026-03-20,2026-03-21。</td></tr><tr><td>操作按钮</td><td>新增、编辑、复制、删除、启用/停用。</td></tr><tr><td>校验规则</td><td>结束时间必须大于开始时间;frequencyMinutes 必须大于 0,单位为分钟;当循环类型为按星期时,至少选择一个星期;当循环类型为按日期时,至少选择一个指定日期。</td></tr><tr><td>交互规则</td><td>关联播报内容列表显示内容名称;新增/编辑时仅允许选择启用状态的播报内容;历史任务关联的播报内容如已停用,编辑时仍需可回显,并显示“已停用”提示,但不可重新选择停用内容。</td></tr></tbody></table>
     <h4>6.3.7 展示主题配置页面</h4>
 <table><thead><tr><th>模块</th><th>详细设计</th></tr></thead><tbody>
-<tr><td>页面目标</td><td>维护机器人屏幕端待机欢迎页的展示内容。该页面为单配置页,不提供列表、新增、删除、多主题切换和启用状态;页面打开后直接加载 config_key=default 的默认配置。</td></tr>
+<tr><td>页面目标</td><td>维护机器人屏幕端待机欢迎页的展示内容。该页面为单配置页,不提供列表、新增、普通删除、多主题切换和启用状态;仅提供“清空配置”能力,用于删除当前 config_key=default 的运维端覆盖配置。页面打开后直接加载 config_key=default 的配置。</td></tr>
 <tr><td>页面形态</td><td>类似欢迎语配置页面,采用单表单配置页。页面由配置表单和操作按钮组成,一期暂不做实时预览页面。</td></tr>
 <tr><td>基础说明</td><td>本模块只配置待机页中可运营维护的展示内容,包括 Logo、品牌文案、背景图、欢迎文案、按钮文案和按钮颜色。状态、电量、网络、时间日期等动态信息由屏幕端实时展示,不在后台配置。</td></tr>
-<tr><td>Logo 图片(logoUrl)</td><td>用于配置待机页左上角 Logo 图片。支持上传 png、jpg、jpeg、webp 图片,建议限制 2MB 以内。Logo 颜色由图片自身决定,后台不提供颜色配置。</td></tr>
-<tr><td>品牌标题(robotName)</td><td>用于配置左上角品牌标题,例如“迎宾巡逻机器人”。必填,建议最多 50 字。</td></tr>
+<tr><td>Logo 图片(logoUrl)</td><td>用于配置待机页左上角 Logo 图片。支持上传 png、jpg、jpeg 图片,建议限制 200KB 以内。Logo 颜色由图片自身决定,后台不提供颜色配置;未配置时屏幕端使用本地默认 Logo。</td></tr>
+<tr><td>品牌标题(robotName)</td><td>用于配置左上角品牌标题,例如“迎宾巡逻机器人”。选填,建议最多 50 字;未配置时屏幕端使用本地默认标题。</td></tr>
 <tr><td>品牌副标题(brandSubtitle)</td><td>用于配置左上角品牌副标题,例如“智能接待 · 路线引导 · 信息服务”。选填,建议最多 100 字。</td></tr>
-<tr><td>背景图(backgroundImage)</td><td>用于配置待机页整屏背景图。支持上传 jpg、png、webp 图片,建议使用适配屏幕比例的横图,大小建议 5MB 以内。背景适配方式由屏幕端固定处理,后台不提供选择项。</td></tr>
-<tr><td>欢迎主标题(welcomeTitle)</td><td>用于配置待机页中间主标题,例如“您好,欢迎光临”。必填,建议最多 50 字。该字段用于屏幕展示,不等同于欢迎语配置中的语音播报文本。</td></tr>
+<tr><td>背景图(backgroundImage)</td><td>用于配置待机页整屏背景图。支持上传 jpg、png、jpeg 图片,建议使用适配屏幕比例的横图,大小建议 2MB 以内。背景适配方式由屏幕端固定处理,后台不提供选择项;未配置时屏幕端使用本地默认背景图。</td></tr>
+<tr><td>欢迎主标题(welcomeTitle)</td><td>用于配置待机页中间主标题,例如“您好,欢迎光临”。选填,建议最多 50 字;未配置时屏幕端使用本地默认欢迎主标题。该字段用于屏幕展示,不等同于欢迎语配置中的语音播报文本。</td></tr>
 <tr><td>欢迎副标题(welcomeSubtitle)</td><td>用于配置待机页中间说明文案,例如“我可以为您提供访客登记、路线引导、通知公告查询与现场帮助服务”。选填,建议最多 150 字。</td></tr>
-<tr><td>按钮文案(touchText)</td><td>用于配置底部主按钮文案,例如“触摸屏幕进入服务”。必填,建议最多 50 字。</td></tr>
+<tr><td>按钮文案(touchText)</td><td>用于配置底部主按钮文案,例如“触摸屏幕进入服务”。选填,建议最多 50 字;未配置时屏幕端使用本地默认按钮文案。</td></tr>
 <tr><td>按钮颜色(buttonColor)</td><td>用于配置底部主按钮颜色,默认 #2f8ee5。按钮阴影颜色不单独配置,由屏幕端根据按钮颜色自动生成。</td></tr>
 <tr><td>备注(remark)</td><td>后台备注说明,选填,最多 500 字。</td></tr>
-<tr><td>操作按钮</td><td>保存配置、恢复默认、刷新。恢复默认由前端本地恢复默认值,用户点击保存配置后才写入数据库。</td></tr>
+<tr><td>操作按钮</td><td>保存配置、清空配置、刷新。清空配置用于删除当前 config_key='default' 的运维端主题配置记录;删除后屏幕端将使用本地默认主题。</td></tr>
 <tr><td>上传规则</td><td>Logo 图片和背景图可复用现有上传能力,例如 /common/uploadMediaFile 或通用上传接口。前端只取返回的 fileUrl / url 写入 logoUrl 或 backgroundImage。</td></tr>
-<tr><td>业务规则</td><td>配置标识固定为 default。展示主题配置属于可选覆盖配置,后端数据库可以不预置默认配置。页面加载时如后端返回空数据或未查询到 config_key='default' 配置,运维端后台可展示空表单,并提示"当前未配置待机页主题,屏幕端将使用本地默认主题"。用户填写并点击"保存配置"后,后端按 config_key='default' 执行有则更新、无则新增。屏幕端必须内置本地默认主题,用于后端无配置、接口异常、网络异常或字段缺失时兜底展示。</td></tr>
-<tr><td>一期不做</td><td>一期不做多主题列表、主题启用状态、主题复制、主题删除、实时预览、背景适配方式、柔光层开关、状态栏开关、时间日期开关、Logo 颜色、状态点颜色、标题颜色、字体大小、按钮阴影颜色和复杂布局配置。</td></tr>
+<tr><td>业务规则</td><td>配置标识固定为 default。展示主题配置属于可选覆盖配置,后端数据库可以不预置默认配置。页面加载时如后端返回空数据或未查询到 config_key='default' 配置,运维端后台可展示空表单,并提示“当前未配置待机页主题,屏幕端将使用本地默认主题”。用户填写并点击“保存配置”后,后端按 config_key='default' 执行有则更新、无则新增。屏幕端必须内置本地默认主题,用于后端无配置、接口异常、网络异常或字段缺失时兜底展示。</td></tr>
+<tr><td>一期不做</td><td>一期不做多主题列表、主题启用状态、主题复制、普通主题删除、实时预览、背景适配方式、柔光层开关、状态栏开关、时间日期开关、Logo 颜色、状态点颜色、标题颜色、字体大小、按钮阴影颜色和复杂布局配置。</td></tr>
 </tbody></table>
 
     <h3>6.4 访客管理</h3>
@@ -223,7 +242,7 @@
 <tr><td>访客照片</td><td>由机器人端摄像头或登记流程采集上传,运维端只做展示和预览,不支持手动上传修改。列表中访客照片放在身份证号之后,便于运维人员优先查看访客身份信息;详情中可展示较大尺寸照片预览。</td></tr>
 <tr><td>预约关联</td><td>预约到访记录通过 appointmentNo 关联预约记录;现场登记记录 appointmentNo 可为空。</td></tr>
 <tr><td>操作按钮</td><td>查看详情、导出。</td></tr>
-<tr><td>业务规则</td><td>访客记录代表已经完成登记的到访记录,不设置登记结果字段。登记失败、身份证读取失败、扫码失败、预约匹配失败等过程异常,不进入访客记录,应进入日志中心或后续扩展的登记异常日志。</td></tr>
+<tr><td>业务规则</td><td>访客记录代表已经完成登记的到访记录,不设置登记结果字段。登记失败、身份证读取失败、扫码失败、预约匹配失败等过程异常,不进入访客记录,应进入运行日志或后续扩展的登记异常日志。</td></tr>
 <tr><td>与白名单关系</td><td>访客记录与白名单识别记录分开管理。命中白名单不作为访客登记结果;白名单命中属于识别或通行逻辑,可后续在识别日志、通行记录或对话/安防日志中体现。</td></tr>
 <tr><td>与预约记录关系</td><td>预约记录由主控平台同步,表示计划来访;访客到现场后通过机器人屏幕或扫码 H5 完成登记确认,并生成访客记录。</td></tr>
 <tr><td>导出字段</td><td>导出列表主要字段;访客照片建议导出“有照片/无照片”或照片链接,不直接导出图片文件。</td></tr>
@@ -244,31 +263,41 @@
 <tr><td>有效期规则</td><td>有效开始时间为空表示立即生效;有效结束时间为空表示长期有效。列表中根据当前时间动态展示有效期状态:有效、未生效、已过期、长期有效。一期不提供有效期状态筛选条件。</td></tr>
 </tbody></table>
 
-    <h3>6.5 监控管理</h3>
-    <h4>6.5.1 视频预览页面</h4><table><thead><tr><th>区域</th><th>详细设计</th></tr></thead><tbody><tr><td>播放器区域</td><td>展示实时视频画面,支持播放、暂停、刷新、全屏。</td></tr><tr><td>状态区域</td><td>展示视频状态:未连接/连接中/播放中/失败。</td></tr><tr><td>辅助信息</td><td>显示码流类型、分辨率、最近更新时间。</td></tr><tr><td>操作按钮</td><td>刷新、全屏、重新连接。</td></tr><tr><td>异常提示</td><td>播放失败时展示错误码和建议操作:刷新、检查摄像头服务、检查网络。视频流地址、播放状态等由机器人侧实时接口返回,运维端一期不单独建设视频配置表。</td></tr></tbody></table>
-    <h4>6.5.2 远程喊话页面</h4><table><thead><tr><th>区域</th><th>详细设计</th></tr></thead><tbody><tr><td>输入区域</td><td>喊话文本输入框,最大 500 字。</td></tr><tr><td>参数区域</td><td>音量(0-100)、播放次数(1-5)、是否立即打断当前播报。</td></tr><tr><td>预置短语</td><td>展示常用喊话语句,点击自动填充。</td></tr><tr><td>结果区域</td><td>显示最近 10 次喊话记录与执行结果。</td></tr><tr><td>操作按钮</td><td>立即喊话、清空内容。</td></tr></tbody></table>
-    <h4>6.5.3 对话日志页面</h4><table><thead><tr><th>模块</th><th>详细设计</th></tr></thead><tbody><tr><td>查询条件</td><td>时间范围、会话 ID、用户问题关键字、命中状态、来源场景。</td></tr><tr><td>列表字段</td><td>时间、会话 ID、用户问题、机器人回答摘要、命中方式、来源场景、状态、操作。</td></tr><tr><td>详情字段</td><td>会话 ID(sessionId)、提问时间(askTime)、用户问题(question)、机器人回答(answer)、命中方式(hitType)、来源场景(sceneType)、结果状态(resultStatus)、原始请求(rawRequest)、原始响应(rawResponse)。</td></tr><tr><td>操作按钮</td><td>查看详情、导出。</td></tr></tbody></table>
-    <h4>6.5.4 安防告警日志页面</h4><table><thead><tr><th>模块</th><th>详细设计</th></tr></thead><tbody><tr><td>查询条件</td><td>告警类型、告警级别、处理状态、告警时间范围。</td></tr><tr><td>列表字段</td><td>告警时间、告警类型、告警级别、位置/来源、处理状态、描述摘要、操作。</td></tr><tr><td>详情字段</td><td>告警时间(alarmTime)、告警类型(alarmType)、告警级别(alarmLevel)、来源位置(sourcePosition)、处理状态(handleStatus)、描述(description)、抓拍图地址(snapshotUrl)、备注(remark)。</td></tr><tr><td>操作按钮</td><td>查看详情、确认告警、忽略告警、导出。</td></tr></tbody></table>
+    <h3>6.5 运维管理</h3>
 
-    <h3>6.6 运维管理</h3>
-    <h4>6.6.1 设备状态页面</h4><table><thead><tr><th>区域</th><th>字段</th></tr></thead><tbody><tr><td>基础信息</td><td>机器人名称(robotName)、机器人编号(robotCode)、序列号(serialNo)、IP 地址(ipAddress)、MAC 地址(macAddress)、运行时长(uptime)。</td></tr><tr><td>运行信息</td><td>在线状态(onlineStatus)、工作状态(workStatus)、电量百分比(batteryLevel)、充电状态(chargeStatus)、网络状态(networkStatus)。</td></tr><tr><td>系统资源</td><td>CPU 使用率(cpuUsage)、内存使用率(memoryUsage)、磁盘使用率(diskUsage)、温度(temperature)。</td></tr><tr><td>模块状态</td><td>摄像头状态(cameraStatus)、麦克风状态(micStatus)、扬声器状态(speakerStatus)、屏幕状态(screenStatus)、主服务状态(mainServiceStatus)。</td></tr><tr><td>时间信息</td><td>系统时间(serverTime)、最近心跳时间(lastHeartbeatTime)。</td></tr></tbody></table><p>以上设备状态字段均由机器人侧实时接口返回,运维端一期不做本地数据库持久化。</p>
-    <h4>6.6.2 设备控制页面</h4><table><thead><tr><th>控制项</th><th>说明</th><th>返回字段</th></tr></thead><tbody><tr><td>一键充电</td><td>触发机器人进入充电流程</td><td>任务ID(taskId)、执行状态(resultStatus)、结果信息(resultMsg)</td></tr>
-<tr><td>停止充电</td><td>停止当前充电动作</td><td>任务ID(taskId)、执行状态(resultStatus)、结果信息(resultMsg)</td></tr>
-<tr><td>重启机器人</td><td>执行整机重启</td><td>任务ID(taskId)、执行状态(resultStatus)、结果信息(resultMsg)</td></tr>
-<tr><td>关机</td><td>执行安全关机</td><td>任务ID(taskId)、执行状态(resultStatus)、结果信息(resultMsg)</td></tr>
-<tr><td>重启应用服务</td><td>重启指定服务</td><td>任务ID(taskId)、服务名称(serviceName)、执行状态(resultStatus)</td></tr>
-<tr><td>音频测试</td><td>播放测试音频或测试播报</td><td>执行状态(resultStatus)</td></tr>
-<tr><td>屏幕测试</td><td>切换测试画面</td><td>执行状态(resultStatus)</td></tr>
-<tr><td>控制记录</td><td>所有控制动作统一写入设备控制记录表和操作日志,便于追踪 taskId、执行结果和失败原因。</td><td>控制记录ID(controlRecordId)、任务ID(taskId)、执行状态(resultStatus)、结果信息(resultMsg)</td></tr></tbody></table>
-    <h4>6.6.3 运行参数配置页面</h4><p>页面采用<strong>模块 Tab + 模块参数表</strong>形式。</p><table><thead><tr><th>字段</th><th>说明</th></tr></thead><tbody><tr><td>参数分组编码(groupCode)</td><td>参数分组编码,例如 audio、screen、system、device、service。</td></tr><tr><td>参数分组名称(groupName)</td><td>参数分组名称。</td></tr><tr><td>参数编码(paramCode)</td><td>参数编码。</td></tr><tr><td>参数名称(paramName)</td><td>参数名称。</td></tr><tr><td>参数值(paramValue)</td><td>参数值。</td></tr><tr><td>值类型(valueType)</td><td>string、int、float、boolean、enum。</td></tr><tr><td>单位(unit)</td><td>单位。</td></tr><tr><td>是否可编辑(editable)</td><td>是否可编辑。</td></tr><tr><td>是否必填(requiredFlag)</td><td>是否必填。</td></tr><tr><td>数值边界(minValue / maxValue)</td><td>数值边界。</td></tr><tr><td>枚举项(enumOptions)</td><td>枚举项 JSON。</td></tr><tr><td>参数说明(remark)</td><td>参数说明。</td></tr></tbody></table><p>操作按钮:刷新、保存、重置默认值。保存时需按 valueType 校验值类型和取值范围。</p>
-    <h4>6.6.4 系统诊断页面</h4><table><thead><tr><th>模块</th><th>设计说明</th></tr></thead><tbody><tr><td>诊断总览</td><td>显示诊断结果汇总:正常项数量、告警项数量、失败项数量。</td></tr><tr><td>诊断列表</td><td>项目名称、检查结果、详情描述、最后检查时间。</td></tr><tr><td>检查项</td><td>网络检查、摄像头检查、麦克风检查、扬声器检查、磁盘空间检查、服务状态检查。</td></tr><tr><td>操作按钮</td><td>立即诊断、刷新结果、导出诊断结果。</td></tr></tbody></table>
-    <h4>6.6.5 日志中心页面</h4><table><thead><tr><th>模块</th><th>详细设计</th></tr></thead><tbody><tr><td>查询条件</td><td>日志类型、关键字、时间范围、结果状态。</td></tr><tr><td>日志类型</td><td>系统日志、设备日志、操作日志、升级日志、服务日志。</td></tr><tr><td>列表字段</td><td>日志时间、日志类型、日志级别、模块名称、摘要、结果状态、操作。</td></tr><tr><td>详情字段</td><td>日志时间(logTime)、日志类型(logType)、日志级别(logLevel)、模块名称(moduleName)、日志内容(content)、结果状态(resultStatus)、追踪 ID(traceId)、备注(remark)。</td></tr><tr><td>操作按钮</td><td>查看详情、导出。</td></tr></tbody></table>
-    <h4>6.6.6 软件版本 / OTA 升级页面</h4><table><thead><tr><th>区块</th><th>详细设计</th></tr></thead><tbody><tr><td>软件版本列表</td><td>展示模块编码(moduleCode)、模块名称(moduleName)、当前版本(currentVersion)、安装时间(installTime)、运行状态(runStatus)。</td></tr><tr><td>安装包管理</td><td>展示安装包名称(packageName)、模块编码(moduleCode)、目标版本(targetVersion)、文件大小(fileSize)、上传时间(uploadTime)、上传人(uploadBy)。</td></tr><tr><td>升级操作</td><td>选择模块 + 安装包,执行升级,展示升级状态(resultStatus)、升级进度(progressPercent)与结果信息(resultMsg)。</td></tr><tr><td>升级记录</td><td>展示开始时间(startTime)、结束时间(endTime)、模块编码(moduleCode)、模块名称(moduleName)、原版本(currentVersion)、目标版本(targetVersion)、执行结果(resultStatus)、失败原因/结果信息(resultMsg)、升级进度(progressPercent)。</td></tr><tr><td>操作按钮</td><td>上传安装包、删除安装包、执行升级、刷新进度、查看升级详情。</td></tr></tbody></table>
-
-    <h3>6.7 系统设置</h3>
-    <h4>6.7.1 账号管理页面</h4><table><thead><tr><th>模块</th><th>详细设计</th></tr></thead><tbody><tr><td>查询条件</td><td>账号、姓名、状态。</td></tr><tr><td>列表字段</td><td>账号、姓名、角色、状态、最后登录时间、操作。</td></tr><tr><td>编辑字段</td><td>登录账号(username)、用户姓名(nickName)、登录密码(password)、角色编码(roleCode)、启用状态(status)、备注(remark)。</td></tr><tr><td>操作按钮</td><td>新增、编辑、重置密码、启用/停用、删除。</td></tr><tr><td>业务规则</td><td>admin 默认账号不可删除;可重置密码。</td></tr></tbody></table>
-    <h4>6.7.2 修改密码页面</h4><table><thead><tr><th>字段</th><th>说明</th></tr></thead><tbody><tr><td>原密码(oldPassword)</td><td>原密码。</td></tr><tr><td>新密码(newPassword)</td><td>新密码,建议 8-32 位。</td></tr><tr><td>确认新密码(confirmPassword)</td><td>确认新密码,必须与 newPassword 一致。</td></tr></tbody></table>
-    <h4>6.7.3 基础设置页面</h4><table><thead><tr><th>字段</th><th>说明</th></tr></thead><tbody><tr><td>后台系统名称(systemName)</td><td>后台系统名称。</td></tr><tr><td>后台 Logo(systemLogo)</td><td>后台 Logo。</td></tr><tr><td>页脚文案(footerText)</td><td>页脚文案。</td></tr><tr><td>备案号/版权信息(recordNo)</td><td>备案号/版权信息,可选。</td></tr></tbody></table>
+    <h4>6.5.1 运行参数配置页面</h4><p>页面采用<strong>模块 Tab + 模块参数表</strong>形式。</p><table><thead><tr><th>字段</th><th>说明</th></tr></thead><tbody><tr><td>参数分组编码(groupCode)</td><td>参数分组编码,例如 audio、screen、system、device、service。</td></tr><tr><td>参数分组名称(groupName)</td><td>参数分组名称。</td></tr><tr><td>参数编码(paramCode)</td><td>参数编码。</td></tr><tr><td>参数名称(paramName)</td><td>参数名称。</td></tr><tr><td>参数值(paramValue)</td><td>参数值。</td></tr><tr><td>值类型(valueType)</td><td>string、int、float、boolean、enum。</td></tr><tr><td>单位(unit)</td><td>单位。</td></tr><tr><td>是否可编辑(editable)</td><td>是否可编辑。</td></tr><tr><td>是否必填(requiredFlag)</td><td>是否必填。</td></tr><tr><td>数值边界(minValue / maxValue)</td><td>数值边界。</td></tr><tr><td>枚举项(enumOptions)</td><td>枚举项 JSON。</td></tr><tr><td>参数说明(remark)</td><td>参数说明。</td></tr></tbody></table><p>操作按钮:刷新、保存、重置默认值。保存时需按 valueType 校验值类型和取值范围。</p>
+
+    <h4>6.5.2 运行日志页面</h4>
+<table><thead><tr><th>模块</th><th>详细设计</th></tr></thead><tbody>
+<tr><td>页面目标</td><td>查看机器人设备侧和本地服务侧上报的运行日志、服务日志、异常报错日志、接口调用日志和关键模块日志,用于运维排查。</td></tr>
+<tr><td>查询条件</td><td>日志级别、日志类型、模块名称、关键字、结果状态、时间范围。</td></tr>
+<tr><td>日志类型</td><td>设备运行日志、服务日志、接口调用日志、模块日志、异常报错日志、其他日志。</td></tr>
+<tr><td>列表字段</td><td>日志时间、日志级别、日志类型、模块名称、日志摘要、结果状态、追踪 ID、接收时间、操作。</td></tr>
+<tr><td>详情字段</td><td>日志时间(logTime)、接收时间(receiveTime)、日志级别(logLevel)、日志类型(logType)、模块名称(moduleName)、日志摘要(contentSummary)、日志内容(content)、结果状态(resultStatus)、追踪 ID(traceId)、机器人编号(robotCode)、备注(remark)。</td></tr>
+<tr><td>操作按钮</td><td>查看详情、导出。</td></tr>
+<tr><td>边界说明</td><td>运行日志只展示机器人设备侧和本地服务侧上报的运行日志,不做主动诊断,不提供立即自检,不维护诊断项配置。后台用户操作日志、对话日志、安防告警日志、访客记录和 OTA 升级记录不并入运行日志。</td></tr>
+</tbody></table>
+<div class="note">运行日志定位为通用运维排查页面,主要用于查看机器人设备侧和本地服务侧上报的运行日志、服务日志、接口调用日志、异常报错日志和关键模块日志。</div>
+
+    <h4>6.5.3 对话日志页面</h4><table><thead><tr><th>模块</th><th>详细设计</th></tr></thead><tbody>
+<tr><td>查询条件</td><td>时间范围、会话 ID、用户问题关键字、命中状态、来源场景。</td></tr>
+<tr><td>列表字段</td><td>时间、会话 ID、用户问题、机器人回答摘要、命中方式、来源场景、状态、操作。</td></tr>
+<tr><td>详情字段</td><td>会话 ID(sessionId)、提问时间(askTime)、用户问题(question)、机器人回答(answer)、命中方式(hitType)、来源场景(sceneType)、结果状态(resultStatus)、原始请求(rawRequest)、原始响应(rawResponse)。</td></tr>
+<tr><td>操作按钮</td><td>查看详情、导出。</td></tr>
+</tbody></table>
+
+    <h4>6.5.4 安防告警日志页面</h4><table><thead><tr><th>模块</th><th>详细设计</th></tr></thead><tbody>
+<tr><td>查询条件</td><td>告警类型、告警级别、处理状态、告警时间范围。</td></tr>
+<tr><td>列表字段</td><td>告警时间、告警类型、告警级别、位置/来源、处理状态、描述摘要、操作。</td></tr>
+<tr><td>详情字段</td><td>告警时间(alarmTime)、告警类型(alarmType)、告警级别(alarmLevel)、来源位置(sourcePosition)、处理状态(handleStatus)、描述(description)、抓拍图地址(snapshotUrl)、备注(remark)。</td></tr>
+<tr><td>操作按钮</td><td>查看详情、确认告警、忽略告警、导出。</td></tr>
+</tbody></table>
+
+    <h4>6.5.5 软件版本 / OTA 升级页面</h4><table><thead><tr><th>区块</th><th>详细设计</th></tr></thead><tbody><tr><td>软件版本列表</td><td>展示模块编码(moduleCode)、模块名称(moduleName)、当前版本(currentVersion)、安装时间(installTime)、运行状态(runStatus)。</td></tr><tr><td>安装包管理</td><td>展示安装包名称(packageName)、模块编码(moduleCode)、目标版本(targetVersion)、文件大小(fileSize)、上传时间(uploadTime)、上传人(uploadBy)。</td></tr><tr><td>升级操作</td><td>选择模块 + 安装包,执行升级,展示升级状态(resultStatus)、升级进度(progressPercent)与结果信息(resultMsg)。</td></tr><tr><td>升级记录</td><td>展示开始时间(startTime)、结束时间(endTime)、模块编码(moduleCode)、模块名称(moduleName)、原版本(currentVersion)、目标版本(targetVersion)、执行结果(resultStatus)、失败原因/结果信息(resultMsg)、升级进度(progressPercent)。</td></tr><tr><td>操作按钮</td><td>上传安装包、删除安装包、执行升级、刷新进度、查看升级详情。</td></tr></tbody></table>
+    <h3>6.6 系统设置</h3>
+    <h4>6.6.1 账号管理页面</h4><table><thead><tr><th>模块</th><th>详细设计</th></tr></thead><tbody><tr><td>查询条件</td><td>账号、姓名、状态。</td></tr><tr><td>列表字段</td><td>账号、姓名、角色、状态、最后登录时间、操作。</td></tr><tr><td>编辑字段</td><td>登录账号(username)、用户姓名(nickName)、登录密码(password)、角色编码(roleCode)、启用状态(status)、备注(remark)。</td></tr><tr><td>操作按钮</td><td>新增、编辑、重置密码、启用/停用、删除。</td></tr><tr><td>业务规则</td><td>admin 默认账号不可删除;可重置密码。</td></tr></tbody></table>
+    <h4>6.6.2 修改密码页面</h4><table><thead><tr><th>字段</th><th>说明</th></tr></thead><tbody><tr><td>原密码(oldPassword)</td><td>原密码。</td></tr><tr><td>新密码(newPassword)</td><td>新密码,建议 8-32 位。</td></tr><tr><td>确认新密码(confirmPassword)</td><td>确认新密码,必须与 newPassword 一致。</td></tr></tbody></table>
+    <h4>6.6.3 基础设置页面</h4><table><thead><tr><th>字段</th><th>说明</th></tr></thead><tbody><tr><td>后台系统名称(systemName)</td><td>后台系统名称。</td></tr><tr><td>后台 Logo(systemLogo)</td><td>后台 Logo。</td></tr><tr><td>页脚文案(footerText)</td><td>页脚文案。</td></tr><tr><td>备案号/版权信息(recordNo)</td><td>备案号/版权信息,可选。</td></tr></tbody></table>
   </div>
 
   <div class="section" id="s7"><h2>7. 后端接口设计</h2>
@@ -381,9 +410,9 @@
     <h4>7.3.2 首页最近告警/最近记录</h4>
     <table><thead><tr><th>接口</th><th>说明</th><th>请求参数</th><th>返回字段</th><th>数据库表</th></tr></thead><tbody>
       <tr><td>GET /robot-ops/home/alarms</td><td>获取首页最近告警</td><td>数量(limit,默认5)</td><td>告警ID(id)、告警时间(alarmTime)、告警类型(alarmType)、告警级别(alarmLevel)、描述(description)</td><td>robot_ops_alarm_log</td></tr>
-      <tr><td>GET /robot-ops/home/quick-records</td><td>获取首页最近记录</td><td>数量(limit,默认5)</td><td>记录类型(recordType)、时间(recordTime)、标题(title)、摘要(summary)、跳转目标(targetUrl)</td><td>robot_ops_operate_log、robot_ops_upgrade_record、robot_ops_sys_log</td></tr>
+      <tr><td>GET /robot-ops/home/quick-records</td><td>获取首页最近记录</td><td>数量(limit,默认5)</td><td>记录类型(recordType)、时间(recordTime)、标题(title)、摘要(summary)、跳转目标(targetUrl)</td><td>robot_ops_sys_log、robot_ops_upgrade_record</td></tr>
     </tbody></table>
-
+    <div class="note">视频预览、远程喊话、设备状态和设备控制已合并到首页工作台展示,但接口仍可复用原监控管理和运维管理规划接口。前端首页可调用视频流信息、视频状态、远程喊话、设备状态、设备控制等接口完成实时展示和快捷操作。</div>
     <h3>7.4 内容管理接口</h3>
     <h4>7.4.1 欢迎语配置接口</h4>
     <table><thead><tr><th>接口</th><th>方法</th><th>说明</th><th>请求/返回字段</th><th>数据库表</th></tr></thead><tbody>
@@ -393,8 +422,7 @@
     </tbody></table>
     <div class="note">欢迎语配置为单配置页,前端当前会在保存和测试播报时携带 configKey='default';后端也应支持不传 configKey 时默认按 default 处理。</div>
     <div class="note">保存欢迎语配置时,后端建议按 config_key='default' 执行“有则更新,无则新增”的逻辑,避免初始化数据缺失时保存失败。</div>
-    <div class="note">恢复默认由前端本地重置表单完成,不单独调用后端恢复默认接口;用户点击“保存配置”后才真正写入数据库。</div>
-    <div class="note">status 控制欢迎语功能整体是否启用;voiceEnabled 控制欢迎语触发时是否进行语音播报;cooldownSeconds 表示语音播报冷却时间,用于避免短时间内重复语音播报。</div>
+
 
     <h4>7.4.2 问答库接口</h4>
     <table><thead><tr><th>接口</th><th>方法</th><th>说明</th><th>请求参数</th><th>返回/处理字段</th><th>数据库表</th></tr></thead><tbody>
@@ -514,13 +542,15 @@
 <table><thead><tr><th>接口</th><th>方法</th><th>说明</th><th>请求/返回字段</th><th>数据库表</th></tr></thead><tbody>
 <tr><td>/robot-ops/content/screen-theme-config</td><td>GET</td><td>获取待机页主题配置</td><td>返回:configKey(固定 default)、logoUrl、robotName、brandSubtitle、backgroundImage、welcomeTitle、welcomeSubtitle、touchText、buttonColor、remark。后端以 config_key='default' 查询;如数据库暂无 config_key='default' 配置,可返回 null、空对象或空 data;运维端后台可展示空表单并提示当前未配置,屏幕端继续使用本地默认主题。</td><td>robot_ops_screen_theme_config</td></tr>
 <tr><td>/robot-ops/content/screen-theme-config</td><td>PUT</td><td>保存待机页主题配置</td><td>请求:configKey(固定 default,可由前端传入,也可由后端默认处理)、logoUrl、robotName、brandSubtitle、backgroundImage、welcomeTitle、welcomeSubtitle、touchText、buttonColor、remark。后端保存时应以 config_key='default' 作为定位条件,存在则更新,不存在则新增;因此数据库不强制要求预置默认数据。</td><td>robot_ops_screen_theme_config</td></tr>
+<tr><td>/robot-ops/content/screen-theme-config/{id}</td><td>DELETE</td><td>清空待机页主题配置</td><td>配置ID(id)。删除当前 config_key='default' 的运维端主题配置记录;删除后运维端页面显示未配置状态,屏幕端使用本地默认主题。</td><td>robot_ops_screen_theme_config</td></tr>
 </tbody></table>
-<div class="note">展示主题配置为单配置页,前端当前会在保存时携带 configKey='default';后端也应支持不传 configKey 时默认按 default 处理。</div>
+<div class="note">规划接口路径与实际生成路径可能不同,联调以当前 API 文件 <code class="inline">/base/opsScreenThemeConfig</code> 为准。</div>
+<div class="note">展示主题配置为单配置页,前端保存时携带 configKey='default';后端也应支持不传 configKey 时默认按 default 处理。</div>
 <div class="note">Logo 图片和背景图可复用现有上传能力,例如 <code class="inline">/common/uploadMediaFile</code> 或通用上传接口。前端只取返回的 fileUrl / url 写入 logoUrl 或 backgroundImage。</div>
-<div class="note">恢复默认由前端本地重置表单完成,不单独调用后端恢复默认接口;用户点击“保存配置”后才真正写入数据库。</div>
+<div class="note">清空配置由前端调用删除接口删除当前 config_key='default' 的配置记录;删除后运维端页面显示未配置状态,屏幕端继续使用本地默认主题。</div>
 <div class="note">按钮颜色 buttonColor 只控制底部主按钮颜色;按钮阴影颜色由屏幕端根据 buttonColor 自动生成。Logo 颜色、状态点颜色、时间日期颜色、标题颜色一期不开放配置。</div>
 <div class="note">屏幕端必须内置一套本地默认待机页配置。当后端配置接口不可用、数据库未配置、返回空数据或字段缺失时,屏幕端使用本地默认配置兜底展示;后端返回配置采用覆盖合并策略,只覆盖已返回字段。</div>
-<div class="note">运维端后台不强制内置默认表单值。当 GET 接口未查询到 config_key='default' 配置时,页面可展示空表单,并提示"当前未配置待机页主题,屏幕端将使用本地默认主题"。用户填写并点击"保存配置"后,后端再新增 default 配置记录。</div>
+<div class="note">运维端后台不强制内置默认表单值。当 GET 接口未查询到 config_key='default' 配置时,页面可展示空表单,并提示“当前未配置待机页主题,屏幕端将使用本地默认主题”。用户填写并点击“保存配置”后,后端再新增 default 配置记录。</div>
 
     <h3>7.5 访客管理接口</h3>
     <table><thead><tr><th>接口</th><th>方法</th><th>说明</th><th>请求参数</th><th>返回/处理字段</th><th>数据库表</th></tr></thead><tbody>
@@ -538,7 +568,7 @@
       <tr><td>/robot-ops/visitor/whitelist/import</td><td>POST</td><td>导入白名单</td><td>Excel文件(file);导入字段包括姓名、人员类型、手机号、身份证号、人脸照片地址、有效开始时间、有效结束时间、启用状态、备注;运维后台导入的数据 sourceType 默认写入 1,表示本地录入</td><td>导入总数、成功数、失败数、失败明细;导入时需校验 mobile、idCardNo、faceImageUrl 三者至少填写一种;手机号和身份证号需校验格式</td><td>robot_ops_whitelist</td></tr>
       <tr><td>/robot-ops/visitor/whitelist/export</td><td>GET</td><td>导出白名单</td><td>同分页查询条件</td><td>Excel文件;导出字段包括姓名、手机号、身份证号、人员类型、人脸照片地址、来源类型、有效开始时间、有效结束时间、启用状态、更新时间、备注</td><td>robot_ops_whitelist</td></tr>
     </tbody></table>
-    <div class="note">访客记录不设置 resultStatus 和 sourceType 作为页面字段。访客记录代表已完成登记的到访记录;登记失败、扫码失败、读卡失败、预约匹配失败等异常应进入日志中心或后续扩展的登记异常日志。</div>
+    <div class="note">访客记录不设置 resultStatus 和 sourceType 作为页面字段。访客记录代表已完成登记的到访记录;登记失败、扫码失败、读卡失败、预约匹配失败等异常应进入运行日志或后续扩展的登记异常日志。</div>
     <div class="note">访客记录支持两类到访类型:APPOINTMENT=预约到访,WALK_IN=现场登记;登记方式支持 SCREEN=机器人端,H5=手机端。机器人端指访客在机器人屏幕完成登记;手机端指访客扫码后在 H5 页面完成登记。</div>
     <div class="note">预约记录由主控平台同步;预约到访访客在现场完成登记后生成访客记录,并通过 appointmentNo 关联预约记录。现场登记访客可不关联预约单号。</div>
     <div class="note">白名单中的 whitelistType 字段在页面上显示为“人员类型”,用于表示人员身份,如内部人员、访客、VIP、其他。人脸识别不作为人员类型,而是白名单匹配方式之一。</div>
@@ -547,12 +577,17 @@
     <div class="note">来源类型 sourceType 使用 RuoYi 字典 source_type,当前字典值为:1=本地录入,2=平台同步,3=机器人采集。sourceType 由系统自动赋值,运维后台新增和导入默认写入 1;主控平台同步写入 2;机器人采集写入 3。前端新增/编辑弹窗中只读展示来源类型,不允许人工选择。</div>
     <div class="note">有效期状态由前端根据 validStartTime、validEndTime 和当前时间动态展示,不作为一期分页查询参数。</div>
 
-    <h3>7.6 监控管理接口</h3>
+    <h3>7.6 运维日志与监控接口</h3>
     <table><thead><tr><th>接口</th><th>方法</th><th>说明</th><th>请求参数</th><th>返回/处理字段</th><th>数据库表</th></tr></thead><tbody>
       <tr><td>/robot-ops/monitor/video/stream-info</td><td>GET</td><td>获取视频流信息</td><td>无</td><td>视频地址(streamUrl)、播放协议(streamProtocol)、码流类型(streamType)、分辨率(resolution)、过期时间(expireTime)</td><td>实时接口返回,不落库</td></tr>
       <tr><td>/robot-ops/monitor/video/status</td><td>GET</td><td>获取视频状态</td><td>无</td><td>播放状态(videoStatus)、错误码(errorCode)、错误信息(errorMsg)、更新时间(updateTime)</td><td>实时接口返回,不落库</td></tr>
-      <tr><td>/robot-ops/monitor/voice/shout</td><td>POST</td><td>执行远程喊话</td><td>喊话文本(shoutText)、音量(volume)、播放次数(playTimes)、是否打断(interruptFlag)</td><td>记录ID(id)、执行状态(resultStatus)、结果信息(resultMsg)</td><td>robot_ops_shout_record、robot_ops_operate_log</td></tr>
-      <tr><td>/robot-ops/monitor/voice/shout-record/page</td><td>GET</td><td>喊话记录分页</td><td>shoutText、resultStatus、createTimeStart、createTimeEnd、pageNum、pageSize</td><td>id、shoutText、volume、playTimes、interruptFlag、resultStatus、resultMsg、operateBy、createTime</td><td>robot_ops_shout_record</td></tr>
+      <tr><td>/robot-ops/monitor/voice/connect</td><td>POST</td><td>建立远程喊话通道</td><td>音量(volume)</td><td>会话ID(sessionId)、连接状态(connectStatus)、结果信息(resultMsg)</td><td>robot_ops_shout_record、robot_ops_operate_log</td></tr>
+      <tr><td>/robot-ops/monitor/voice/start</td><td>POST</td><td>开始远程喊话</td><td>会话ID(sessionId)、音量(volume)</td><td>执行状态(resultStatus)、结果信息(resultMsg)</td><td>robot_ops_shout_record、robot_ops_operate_log</td></tr>
+      <tr><td>/robot-ops/monitor/voice/stop</td><td>POST</td><td>结束远程喊话</td><td>会话ID(sessionId)</td><td>执行状态(resultStatus)、结果信息(resultMsg)、开始时间(startTime)、结束时间(endTime)</td><td>robot_ops_shout_record、robot_ops_operate_log</td></tr>
+      <tr><td>/robot-ops/monitor/voice/shout-record/page</td><td>GET</td><td>喊话记录分页</td><td>sessionId、resultStatus、startTimeStart、startTimeEnd、pageNum、pageSize</td><td>id、sessionId、volume、connectStatus、resultStatus、resultMsg、operateBy、startTime、endTime、durationSeconds</td><td>robot_ops_shout_record</td></tr>
+    </tbody></table>
+    <div class="note">远程喊话为麦克风实时语音喊话,不是文本转语音播报。浏览器端后续需要对接麦克风采集能力,机器人端需要提供音频通道建立、音频推送、播放和结束能力。文本播报、定时播报和固定内容播报仍由播报内容与播报任务模块负责。</div>
+    <table><thead><tr><th>接口</th><th>方法</th><th>说明</th><th>请求参数</th><th>返回/处理字段</th><th>数据库表</th></tr></thead><tbody>
       <tr><td>/robot-ops/monitor/dialogue/page</td><td>GET</td><td>对话日志分页</td><td>sessionId、keyword、hitType、sceneType、askTimeStart、askTimeEnd、pageNum、pageSize</td><td>id、sessionId、askTime、question、answerSummary、hitType、sceneType、resultStatus</td><td>robot_ops_dialogue_log</td></tr>
       <tr><td>/robot-ops/monitor/dialogue/{id}</td><td>GET</td><td>对话详情</td><td>日志ID(id)</td><td>sessionId、askTime、question、answer、hitType、sceneType、resultStatus、rawRequest、rawResponse</td><td>robot_ops_dialogue_log</td></tr>
       <tr><td>/robot-ops/monitor/dialogue/export</td><td>GET</td><td>导出对话日志</td><td>同分页查询条件</td><td>Excel文件</td><td>robot_ops_dialogue_log</td></tr>
@@ -562,8 +597,15 @@
       <tr><td>/robot-ops/monitor/alarm/{id}/ignore</td><td>PUT</td><td>忽略告警</td><td>告警ID(id)、备注(remark)</td><td>无</td><td>robot_ops_alarm_log</td></tr>
       <tr><td>/robot-ops/monitor/alarm/export</td><td>GET</td><td>导出告警日志</td><td>同分页查询条件</td><td>Excel文件</td><td>robot_ops_alarm_log</td></tr>
     </tbody></table>
+ 
+
+   <div class="note">视频预览和远程喊话接口当前由首页工作台调用,不再单独作为左侧菜单页面;对话日志和安防告警日志已合并到运维管理菜单,作为独立日志页面保留。</div>
+
 
     <h3>7.7 运维管理接口</h3>
+
+    <div class="note">设备状态和设备控制接口当前由首页工作台调用,不再单独作为左侧菜单页面;运行参数配置、运行日志、对话日志、安防告警日志和 OTA 升级属于运维管理菜单。</div>
+
     <h4>7.7.1 设备状态与设备控制接口</h4>
     <table><thead><tr><th>接口</th><th>方法</th><th>说明</th><th>请求参数</th><th>返回/处理字段</th><th>数据库表</th></tr></thead><tbody>
       <tr><td>/robot-ops/ops/device-status/detail</td><td>GET</td><td>设备状态详情</td><td>无</td><td>robotName、robotCode、serialNo、ipAddress、macAddress、uptime、onlineStatus、workStatus、batteryLevel、chargeStatus、networkStatus、cpuUsage、memoryUsage、diskUsage、temperature、cameraStatus、micStatus、speakerStatus、screenStatus、mainServiceStatus、serverTime、lastHeartbeatTime</td><td>实时接口返回,不落库</td></tr>
@@ -571,9 +613,6 @@
       <tr><td>/robot-ops/ops/control/charge-stop</td><td>POST</td><td>停止充电</td><td>无或扩展参数</td><td>taskId、resultStatus、resultMsg</td><td>robot_ops_control_record、robot_ops_operate_log</td></tr>
       <tr><td>/robot-ops/ops/control/reboot</td><td>POST</td><td>重启机器人</td><td>确认标识(confirmFlag)</td><td>taskId、resultStatus、resultMsg</td><td>robot_ops_control_record、robot_ops_operate_log</td></tr>
       <tr><td>/robot-ops/ops/control/shutdown</td><td>POST</td><td>关机</td><td>确认标识(confirmFlag)</td><td>taskId、resultStatus、resultMsg</td><td>robot_ops_control_record、robot_ops_operate_log</td></tr>
-      <tr><td>/robot-ops/ops/control/restart-service</td><td>POST</td><td>重启服务</td><td>服务名称(serviceName)</td><td>taskId、serviceName、resultStatus、resultMsg</td><td>robot_ops_control_record、robot_ops_operate_log</td></tr>
-      <tr><td>/robot-ops/ops/control/audio-test</td><td>POST</td><td>音频测试</td><td>测试文本(testText,可选)</td><td>resultStatus、resultMsg</td><td>robot_ops_control_record、robot_ops_operate_log</td></tr>
-      <tr><td>/robot-ops/ops/control/screen-test</td><td>POST</td><td>屏幕测试</td><td>测试类型(testType,可选)</td><td>resultStatus、resultMsg</td><td>robot_ops_control_record、robot_ops_operate_log</td></tr>
       <tr><td>/robot-ops/ops/control/record/page</td><td>GET</td><td>设备控制记录分页</td><td>controlType、resultStatus、createTimeStart、createTimeEnd、pageNum、pageSize</td><td>id、controlType、controlName、taskId、resultStatus、resultMsg、operateBy、createTime、finishTime</td><td>robot_ops_control_record</td></tr>
       <tr><td>/robot-ops/ops/control/record/{id}</td><td>GET</td><td>设备控制记录详情</td><td>控制记录ID(id)</td><td>controlType、controlName、taskId、requestParam、resultStatus、resultMsg、operateBy、createTime、finishTime</td><td>robot_ops_control_record</td></tr>
     </tbody></table>
@@ -587,16 +626,13 @@
     </tbody></table>
     <div class="warn">参数保存时必须根据 valueType、requiredFlag、minValue、maxValue、enumOptions 做后端校验。</div>
 
-    <h4>7.7.3 系统诊断与日志接口</h4>
-    <table><thead><tr><th>接口</th><th>方法</th><th>说明</th><th>请求/返回字段</th><th>数据库表</th></tr></thead><tbody>
-      <tr><td>/robot-ops/ops/diagnosis/overview</td><td>GET</td><td>诊断总览</td><td>normalCount、warnCount、failCount、lastCheckTime</td><td>robot_ops_diagnosis_item</td></tr>
-      <tr><td>/robot-ops/ops/diagnosis/page</td><td>GET</td><td>诊断项分页</td><td>itemName、resultStatus、pageNum、pageSize;返回 itemCode、itemName、resultStatus、detailMsg、lastCheckTime</td><td>robot_ops_diagnosis_item</td></tr>
-      <tr><td>/robot-ops/ops/diagnosis/run</td><td>POST</td><td>执行诊断</td><td>诊断项编码(itemCodes,可选)</td><td>normalCount、warnCount、failCount、itemList</td><td>robot_ops_diagnosis_item、robot_ops_sys_log</td></tr>
-      <tr><td>/robot-ops/ops/diagnosis/export</td><td>GET</td><td>导出诊断结果</td><td>resultStatus</td><td>Excel文件</td><td>robot_ops_diagnosis_item</td></tr>
-      <tr><td>/robot-ops/ops/log/page</td><td>GET</td><td>日志分页</td><td>日志来源类型(sourceType:SYS/OPERATE,可选)、logType、logLevel、keyword、resultStatus、logTimeStart、logTimeEnd、pageNum、pageSize</td><td>id、日志来源类型(sourceType)、logTime、logType、logLevel、moduleName、contentSummary、resultStatus、traceId</td><td>robot_ops_sys_log、robot_ops_operate_log</td></tr>
-      <tr><td>/robot-ops/ops/log/{id}</td><td>GET</td><td>日志详情</td><td>日志ID(id)、日志来源类型(sourceType)</td><td>logTime、logType、logLevel、moduleName、content、resultStatus、traceId、remark</td><td>robot_ops_sys_log、robot_ops_operate_log</td></tr>
-      <tr><td>/robot-ops/ops/log/export</td><td>GET</td><td>导出日志</td><td>同日志分页查询条件</td><td>Excel文件</td><td>robot_ops_sys_log、robot_ops_operate_log</td></tr>
+    <h4>7.7.3 运行日志接口</h4>
+<table><thead><tr><th>接口</th><th>方法</th><th>说明</th><th>请求参数</th><th>返回字段</th><th>数据库表</th></tr></thead><tbody>
+      <tr><td>/robot-ops/ops/sys-log/page</td><td>GET</td><td>运行日志分页</td><td>logLevel、logType、moduleName、keyword、resultStatus、logTimeStart、logTimeEnd、pageNum、pageSize</td><td>id、logTime、receiveTime、logLevel、logType、moduleName、contentSummary、resultStatus、traceId、robotCode</td><td>robot_ops_sys_log</td></tr>
+      <tr><td>/robot-ops/ops/sys-log/{id}</td><td>GET</td><td>运行日志详情</td><td>日志ID(id)</td><td>id、logTime、receiveTime、logLevel、logType、moduleName、contentSummary、content、resultStatus、traceId、robotCode、remark</td><td>robot_ops_sys_log</td></tr>
+      <tr><td>/robot-ops/ops/sys-log/export</td><td>GET</td><td>导出运行日志</td><td>同运行日志分页查询条件</td><td>Excel文件</td><td>robot_ops_sys_log</td></tr>
     </tbody></table>
+    <div class="note">运行日志接口仅用于查询机器人设备侧和本地服务侧上报的运行日志、服务日志、接口调用日志、异常报错日志和关键模块日志;不提供主动诊断和立即自检能力。</div>
 
     <h4>7.7.4 软件版本与 OTA 升级接口</h4>
     <table><thead><tr><th>接口</th><th>方法</th><th>说明</th><th>请求/返回字段</th><th>数据库表</th></tr></thead><tbody>
@@ -885,7 +921,7 @@ VALUES
   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='访客记录表';</div>
-    <div class="note">说明:访客记录表只保存已完成登记的到访记录,不保存登记失败结果。登记失败、扫码失败、身份证读取失败、预约匹配失败等异常,进入日志中心或后续扩展的登记异常日志。</div>
+    <div class="note">说明:访客记录表只保存已完成登记的到访记录,不保存登记失败结果。登记失败、扫码失败、身份证读取失败、预约匹配失败等异常,进入运行日志或后续扩展的登记异常日志。</div>
     <div class="note">说明:visit_type 建议使用 RuoYi 字典 visitor_visit_type,字典项为 APPOINTMENT=预约到访,WALK_IN=现场登记。</div>
     <div class="note">说明:register_type 建议使用 RuoYi 字典 visitor_register_type,字典项为 SCREEN=机器人端,H5=手机端。机器人端指访客在机器人屏幕完成登记;手机端指访客扫码后在 H5 页面完成登记。</div>
     <div class="note">说明:visitor_source 和 visit_reason 为通用文本字段,用于适配公司、酒店、小区、园区、展厅等多种场景,不强制做枚举。</div>
@@ -995,22 +1031,31 @@ VALUES
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='安防告警日志表';</div>
 
     <h4>8.4.4 系统日志表 robot_ops_sys_log</h4>
-    <div class="code">CREATE TABLE `robot_ops_sys_log` (
+<div class="code">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 '模块名称',
+  `robot_code` VARCHAR(64) DEFAULT NULL COMMENT '机器人编号',
+  `log_time` DATETIME DEFAULT NULL COMMENT '日志时间,设备侧或服务侧日志发生时间',
+  `receive_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '日志接收时间',
+  `log_type` VARCHAR(50) DEFAULT NULL COMMENT '日志类型:DEVICE设备运行、SERVICE服务、API接口调用、MODULE模块、ERROR异常、OTHER其他',
+  `log_level` VARCHAR(20) DEFAULT NULL COMMENT '日志级别:DEBUG、INFO、WARN、ERROR、FATAL',
+  `module_name` VARCHAR(100) DEFAULT NULL COMMENT '模块名称,如 screen、audio、camera、network、ota',
+  `content_summary` VARCHAR(500) DEFAULT NULL COMMENT '日志摘要',
   `content` TEXT COMMENT '日志内容',
-  `result_status` VARCHAR(20) DEFAULT NULL COMMENT '结果状态',
+  `result_status` VARCHAR(20) DEFAULT NULL COMMENT '结果状态:SUCCESS、FAIL、WARN、UNKNOWN',
   `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_receive_time` (`receive_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='系统日志表';</div>
+  KEY `idx_robot_ops_sys_log_level` (`log_level`),
+  KEY `idx_robot_ops_sys_log_module` (`module_name`),
+  KEY `idx_robot_ops_sys_log_trace` (`trace_id`),
+  KEY `idx_robot_ops_sys_log_robot` (`robot_code`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统运行日志表';</div>
+<div class="note">说明:robot_ops_sys_log 用于保存机器人设备侧和本地服务侧上报的运行日志、异常日志、接口调用日志、服务日志和关键模块日志,不用于保存后台用户操作日志。后台用户操作、配置变更、删除、重启等审计类日志应写入 robot_ops_operate_log。</div>
+<div class="note">字典建议:logLevel 使用 robot_log_level,字典项 DEBUG、INFO、WARN、ERROR、FATAL;logType 使用 robot_log_type,字典项 DEVICE、SERVICE、API、MODULE、ERROR、OTHER;resultStatus 使用 common_result_status,字典项 SUCCESS、FAIL、WARN、UNKNOWN。</div>
 
     <h4>8.4.5 操作日志表 robot_ops_operate_log</h4>
     <div class="code">CREATE TABLE `robot_ops_operate_log` (
@@ -1048,7 +1093,7 @@ VALUES
     <h4>8.5.2 设备控制记录表 robot_ops_control_record</h4>
     <div class="code">CREATE TABLE `robot_ops_control_record` (
   `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
-  `control_type` VARCHAR(50) NOT NULL COMMENT '控制类型:充电、停止充电、重启、关机、重启服务、音频测试、屏幕测试等',
+  `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',
@@ -1085,23 +1130,7 @@ VALUES
   KEY `idx_robot_ops_param_group_code` (`group_code`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运行参数配置表';</div>
 
-    <h4>8.5.4 系统诊断项表 robot_ops_diagnosis_item</h4>
-    <div class="code">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='系统诊断项表';</div>
-    <div class="note">说明:一期仅保留各诊断项的最新诊断结果;如后续需要追踪每次诊断历史,可在二期扩展诊断记录表和诊断明细表。</div>
-
+    <div class="note">说明:系统诊断项表 robot_ops_diagnosis_item 和诊断相关能力(立即诊断、诊断项配置)一期不建设,属于后续规划。运行日志通过设备侧上报的日志数据进行查询,不做主动诊断触发。如后续需要主动诊断能力,再扩展诊断项表和诊断触发接口。</div>
     <h4>8.5.5 软件版本信息表 robot_ops_version_info</h4>
     <div class="code">CREATE TABLE `robot_ops_version_info` (
   `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
@@ -1165,16 +1194,16 @@ VALUES
   <div class="section" id="s9"><h2>9. 状态、日志与控制规则</h2>
     <h3>9.1 状态枚举建议</h3><table><thead><tr><th>字段</th><th>建议值</th></tr></thead><tbody><tr><td>onlineStatus</td><td>ONLINE / OFFLINE</td></tr><tr><td>workStatus</td><td>IDLE / RECEIVING / BROADCASTING / CHARGING / ERROR</td></tr><tr><td>chargeStatus</td><td>NOT_CHARGING / CHARGING / FULL</td></tr><tr><td>resultStatus</td><td>SUCCESS / FAIL / RUNNING / PENDING</td></tr><tr><td>alarmLevel</td><td>LOW / MEDIUM / HIGH / CRITICAL</td></tr><tr><td>status</td><td>0 停用 / 1 启用</td></tr></tbody></table>
     <h3>9.2 控制规则</h3><ul><li>重启、关机、充电、停止充电、升级等操作必须记录操作日志。</li><li>重启、关机、升级操作必须弹窗二次确认。</li><li>当机器人处于升级中时,除查看类操作外,禁止执行关机、重启、参数保存等高风险动作。</li><li>当设备离线时,控制按钮置灰并显示“设备离线,无法执行”。</li></ul>
-    <h3>9.3 日志规则</h3><ul><li>所有关键业务操作必须写入操作日志。</li><li>机器人端回传的异常和诊断结果,统一映射到日志中心或诊断中心展示。</li><li>日志保留时长一期默认 180 天,可由系统参数配置。</li></ul>
+    <h3>9.3 日志规则</h3><ul><li>所有关键业务操作必须写入操作日志。</li><li>机器人端回传的异常和运行日志,统一映射到运行日志页面展示。</li><li>日志保留时长一期默认 180 天,可由系统参数配置。</li></ul>
   </div>
 
-  <div class="section" id="s10"><h2>10. 权限与账号设计</h2><table><thead><tr><th>角色</th><th>默认权限</th></tr></thead><tbody><tr><td>ADMIN</td><td>全量权限,包括账号管理、参数配置、设备控制、OTA 升级。</td></tr><tr><td>OPS</td><td>首页、内容管理、访客管理、监控管理、运维管理(除账号管理)。</td></tr><tr><td>VIEWER</td><td>仅查看权限,不可执行新增、编辑、删除、升级、控制等动作。</td></tr></tbody></table><p>RuoYi 菜单权限与按钮权限均需保留,避免后期返工。即使一期只有 admin,也要按标准权限框架开发。</p></div>
+  <div class="section" id="s10"><h2>10. 权限与账号设计</h2><table><thead><tr><th>角色</th><th>默认权限</th></tr></thead><tbody><tr><td>ADMIN</td><td>全量权限,包括账号管理、参数配置、设备控制、OTA 升级。</td></tr><tr><td>OPS</td><td>首页、内容管理、访客管理、运维管理(除账号管理)。</td></tr><tr><td>VIEWER</td><td>仅查看权限,不可执行新增、编辑、删除、升级、控制等动作。</td></tr></tbody></table><p>RuoYi 菜单权限与按钮权限均需保留,避免后期返工。即使一期只有 admin,也要按标准权限框架开发。</p></div>
 
-  <div class="section" id="s11"><h2>11. 开发优先级与实施顺序</h2><table><thead><tr><th>阶段</th><th>模块</th><th>说明</th></tr></thead><tbody><tr><td>阶段一</td><td>登录、首页、设备状态、设备控制、参数配置、日志中心、版本/OTA</td><td>先打通基础运维闭环。</td></tr><tr><td>阶段二</td><td>欢迎语、问答库、素材管理、播放方案、播报内容、播报任务、主题配置(单配置页)</td><td>打通内容配置闭环。</td></tr><tr><td>阶段三</td><td>访客记录、预约记录、白名单、视频预览、远程喊话、对话日志、安防告警日志</td><td>补齐业务查询和监控能力。</td></tr><tr><td>阶段四</td><td>优化、导入导出、性能提升、操作审计完善</td><td>稳定化阶段。</td></tr></tbody></table></div>
+  <div class="section" id="s11"><h2>11. 开发优先级与实施顺序</h2><table><thead><tr><th>阶段</th><th>模块</th><th>说明</th></tr></thead><tbody><tr><td>阶段一</td><td>登录、首页(含视频预览/远程喊话/设备控制)、运行日志、参数配置、版本/OTA</td><td>先打通基础运维闭环。视频预览、远程喊话、设备状态、设备控制合并到首页工作台;运行日志为纯读取页面;系统诊断一期不做。</td></tr><tr><td>阶段二</td><td>欢迎语、问答库、素材管理、播放方案、播报内容、播报任务、主题配置(单配置页)</td><td>打通内容配置闭环。</td></tr><tr><td>阶段三</td><td>访客记录、预约记录、白名单、对话日志、安防告警日志</td><td>补齐业务查询和日志能力。对话日志、安防告警日志作为运维管理下独立日志页面保留。</td></tr><tr><td>阶段四</td><td>优化、导入导出、性能提升、操作审计完善</td><td>稳定化阶段。</td></tr></tbody></table></div>
 
   <div class="section" id="s12"><h2>12. 对其他团队的配合要求</h2><div class="danger">以下内容不再作为“待定事项”,而是作为其他团队必须按本文配合实现的内容。</div><ul><li><strong>机器人侧:</strong>需提供首页状态接口、设备状态接口、控制接口、视频流信息接口、喊话接口、参数接口、日志接口、版本与升级接口。</li><li><strong>主控平台侧:</strong>需提供预约记录同步接口、可选白名单同步接口。</li><li><strong>展示端:</strong>需支持欢迎语、播放方案、播报任务、展示主题配置的读取与应用。</li><li><strong>算法 / 安防侧:</strong>需向运维端提供安防告警记录标准数据结构。</li></ul><div class="ok">结论:本文件已经作为一期开发基线文档定版。后续若有调整,应基于本文迭代版本,而不是推翻本文重新回到需求澄清阶段。</div></div>
 
-  <div class="section" id="s13"><h2>13. 测试验收要点</h2><table><thead><tr><th>模块</th><th>验收要点</th></tr></thead><tbody><tr><td>登录</td><td>正确账号可登录,错误账号提示,退出后不可访问后台页面。</td></tr><tr><td>首页</td><td>状态、统计、告警、快捷入口可正常展示和跳转。</td></tr><tr><td>内容管理</td><td>欢迎语、问答库、素材、方案、播报任务、主题均可增删改查。</td></tr><tr><td>访客管理</td><td>访客记录、预约记录、白名单可查询,导出结果正确。</td></tr><tr><td>监控管理</td><td>视频可预览,喊话可执行,对话日志与告警日志可查询。</td></tr><tr><td>运维管理</td><td>设备状态可展示,控制操作有确认弹窗和结果反馈,参数保存有效,OTA 流程完整。</td></tr><tr><td>日志与权限</td><td>关键操作写入操作日志,不同角色权限生效。</td></tr></tbody></table></div>
+  <div class="section" id="s13"><h2>13. 测试验收要点</h2><table><thead><tr><th>模块</th><th>验收要点</th></tr></thead><tbody><tr><td>登录</td><td>正确账号可登录,错误账号提示,退出后不可访问后台页面。</td></tr><tr><td>首页</td><td>状态、统计、告警、快捷入口可正常展示和跳转。</td></tr><tr><td>内容管理</td><td>欢迎语、问答库、素材、方案、播报任务、主题均可增删改查。</td></tr><tr><td>访客管理</td><td>访客记录、预约记录、白名单可查询,导出结果正确。</td></tr><tr><td>运维管理</td><td>设备状态、控制、运行日志、对话日志、告警日志可查看,OTA 升级流程完整。</td></tr><tr><td>运维管理</td><td>设备状态可展示,控制操作有确认弹窗和结果反馈,参数保存有效,OTA 流程完整。</td></tr><tr><td>日志与权限</td><td>关键操作写入操作日志,不同角色权限生效。</td></tr></tbody></table></div>
 
   <div class="footer">文档版本:V2.1(完整详细设计开发版)</div>
 </div>