# 智能体平台新增功能测试文档 > 测试日期:2026-05-19 > > 环境:Docker 本地环境(http://127.0.0.1:80) --- ## 前置条件 1. 已执行 `docker-compose up -d` 启动所有服务 2. 已登录管理员账号,获取 Token 3. 知道自己的 `workspace_id` 和 `application_id` --- ## 一、工具使用统计(任务 8) ### 测试入口 工具列表页 → 鼠标悬停工具卡片 → 点击统计图标(🔍) ### 测试步骤 | 步骤 | 操作 | 预期结果 | |:----:|------|----------| | 1 | 进入 `/tool` 页面,鼠标悬停任意工具卡片 | 出现统计图标按钮 | | 2 | 点击统计图标 | 弹出统计抽屉,显示标题 "{工具名} - Statistics" | | 3 | 查看统计数据 | 显示:总调用次数、成功率、成功/失败次数、平均/最小/最大耗时 | | 4 | 切换时间范围(7天/30天/90天) | 数据随之刷新 | | 5 | 关闭抽屉 | 抽屉正常关闭 | ### 验证要点 - [ ] 统计图标在非批量模式下才显示 - [ ] 未调用过的工具显示全 0 数据 - [ ] 时间范围切换后数据正确刷新 - [ ] 抽屉关闭后再打开数据正常 --- ## 二、知识库用量统计(任务 9) ### 测试入口 知识库设置页 → 信息区顶部统计卡片 ### 测试步骤 | 步骤 | 操作 | 预期结果 | |:----:|------|----------| | 1 | 进入任意知识库 → 点击"设置" tab | 页面顶部显示三个统计卡片 | | 2 | 查看"文档数"卡片 | 显示该知识库的文档总数 | | 3 | 查看"段落数"卡片 | 显示该知识库的段落总数 | | 4 | 查看"命中数"卡片 | 显示该知识库的总命中次数 | | 5 | 上传新文档后刷新页面 | 文档数、段落数相应增加 | ### 验证要点 - [ ] 统计卡片在 Info 标题下方、BaseForm 上方 - [ ] 空知识库显示全 0 - [ ] 加载中有 loading 动画 - [ ] 不同知识库数据独立 --- ## 三、应用 API 限流(任务 10) ### 测试入口 应用概览页 → 点击 "API Rate Limit" 按钮 ### 测试步骤 | 步骤 | 操作 | 预期结果 | |:----:|------|----------| | 1 | 进入应用概览页 → 点击 "API Rate Limit" | 弹出限流配置对话框 | | 2 | 查看默认配置 | 默认关闭状态,开关为 off | | 3 | 开启限流开关 | 展开配置项:类型、最大请求数、突发大小、窗口时间 | | 4 | 选择限流类型 QPM | 下拉框正确切换 | | 5 | 设置最大请求数为 60 | 输入框数值更新 | | 6 | 设置突发大小为 10 | 输入框数值更新 | | 7 | 设置窗口时间为 60 秒 | 输入框数值更新 | | 8 | 点击"保存" | 对话框关闭,设置成功提示 | | 9 | 重新打开对话框 | 之前保存的配置正确回显 | | 10 | 点击"Reset Counters" | 弹出确认框,确认后提示重置成功 | ### 验证要点 - [ ] 关闭状态下配置项隐藏 - [ ] 开启状态下所有配置项可编辑 - [ ] 限流类型支持 QPS/QPM/QPH/QPD 四种 - [ ] 保存后重新打开数据一致 - [ ] Reset Counters 有二次确认 ### API 验证(可选) ```bash # 获取限流配置 curl -H "Authorization: Bearer YOUR_TOKEN" \ http://127.0.0.1:8080/admin/api/workspace/default/application/{APP_ID}/rate_limit # 更新限流配置 curl -X PUT -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"is_enabled":true,"rate_type":"QPM","max_requests":60,"burst_size":10,"window_seconds":60}' \ http://127.0.0.1:8080/admin/api/workspace/default/application/{APP_ID}/rate_limit/update # 重置计数 curl -X POST -H "Authorization: Bearer YOUR_TOKEN" \ http://127.0.0.1:8080/admin/api/workspace/default/application/{APP_ID}/rate_limit/reset ``` --- ## 四、插件管理(任务 4/5/6) ### 4.1 插件注册与列表 | 步骤 | 操作 | 预期结果 | |:----:|------|----------| | 1 | 进入 `/plugin` 页面 | 显示插件列表(空列表或已有插件) | | 2 | 点击"创建"按钮 | 弹出创建插件对话框 | | 3 | 填写名称、编码、类型、描述 | 表单字段正确 | | 4 | 提交创建 | 对话框关闭,列表刷新,新插件出现 | ### 4.2 插件生命周期 | 步骤 | 操作 | 预期结果 | |:----:|------|----------| | 1 | 鼠标悬停插件卡片 | 出现启用/禁用开关和更多操作菜单 | | 2 | 切换启用/禁用开关 | 状态切换成功,卡片状态标签更新 | | 3 | 点击更多菜单 → 卸载 | 弹出确认弹窗 | | 4 | 确认卸载 | 插件状态变为未安装 | | 5 | 再次安装 | 插件状态恢复 | ### 4.3 插件测试 | 步骤 | 操作 | 预期结果 | |:----:|------|----------| | 1 | 进入插件详情 → 打开测试抽屉 | 显示 JSON 输入框和超时配置 | | 2 | 输入测试数据,点击"执行测试" | 测试执行,显示结果 | | 3 | 查看测试结果 | 显示状态(成功/失败)、耗时、错误码 | | 4 | 切换到"测试历史" tab | 显示历史测试记录列表 | ### 4.4 版本管理 | 步骤 | 操作 | 预期结果 | |:----:|------|----------| | 1 | 进入插件详情 → 打开版本历史 | 显示版本时间线 | | 2 | 查看版本列表 | 显示版本号、状态、创建时间 | | 3 | 点击回滚按钮 | 弹出确认,确认后版本回滚 | --- ## 五、模型批量操作(任务 7) ### 测试入口 模型列表页 → 勾选多个模型 ### 测试步骤 | 步骤 | 操作 | 预期结果 | |:----:|------|----------| | 1 | 进入模型列表页 | 显示模型列表 | | 2 | 勾选 2-3 个模型 | 出现批量操作栏 | | 3 | 点击"批量禁用" | 选中的模型状态变为禁用 | | 4 | 勾选模型 → 点击"批量删除" | 弹出确认弹窗 | | 5 | 确认删除 | 选中的模型被删除,列表刷新 | ### 验证要点 - [ ] 未勾选时批量操作按钮禁用 - [ ] 勾选数量正确显示 - [ ] 批量操作有确认提示 - [ ] 操作后列表正确刷新 --- ## 六、SSO 统一认证(任务 8.5) ### 测试入口 登录页 → SSO 登录按钮(需配置真实 SSO 服务端) ### 测试步骤 | 步骤 | 操作 | 预期结果 | |:----:|------|----------| | 1 | 访问登录页 | 页面正常渲染 | | 2 | 点击 SSO 登录(如已配置) | 跳转到 SSO 授权页 | | 3 | SSO 授权完成 | 回调到平台,自动登录 | ### API 验证 ```bash # 获取 SSO 授权 URL curl -s http://127.0.0.1:8080/admin/api/sso/authorize | python -m json.tool ``` --- ## 七、用户组批量授权(任务 11) ### 测试入口 系统管理 → 用户组管理(`/system/chat/group`) ### 测试步骤 | 步骤 | 操作 | 预期结果 | |:----:|------|----------| | 1 | 进入用户组管理页 | 显示用户组列表 | | 2 | 创建新用户组 | 输入名称,提交成功 | | 3 | 进入用户组详情 | 显示成员列表和授权列表 | | 4 | 批量添加成员 | 选择用户,添加成功 | | 5 | 批量移除成员 | 选择成员,移除成功 | | 6 | 批量授权资源 | 选择资源类型和 ID,授权成功 | | 7 | 批量撤销授权 | 选择授权记录,撤销成功 | ### API 验证 ```bash # 获取用户组列表 curl -H "Authorization: Bearer YOUR_TOKEN" \ http://127.0.0.1:8080/admin/api/workspace/default/user_group # 创建用户组 curl -X POST -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"测试用户组"}' \ http://127.0.0.1:8080/admin/api/workspace/default/user_group/create ``` --- ## 八、智能体记忆(任务 2) ### 测试入口 智能体设置 → 记忆配置 ### 测试步骤 | 步骤 | 操作 | 预期结果 | |:----:|------|----------| | 1 | 创建或编辑智能体 | 进入设置页面 | | 2 | 开启记忆功能 | 记忆配置区域展开 | | 3 | 添加记忆条目 | 输入内容、选择类型,保存成功 | | 4 | 对话测试 | 多轮对话后,智能体能引用历史记忆 | | 5 | 禁用某条记忆 | 记忆状态切换,对话中不再引用 | --- ## 九、专业知识库(任务 1) ### 测试入口 知识库列表 → 创建专业知识库 ### 测试步骤 | 步骤 | 操作 | 预期结果 | |:----:|------|----------| | 1 | 点击创建知识库 | 选择知识库类型 | | 2 | 选择"专业知识库" | 显示样本中心配置表单 | | 3 | 填写样本中心连接信息 | 输入 base_url、app_id、app_secret | | 4 | 获取知识库列表 | 从样本中心拉取知识库列表 | | 5 | 选择知识库导入 | 提交导入任务 | | 6 | 查看导入进度 | 显示任务状态和进度 | | 7 | 导入完成后检索 | 知识库可正常检索 | --- ## 十、智能体发布权限(任务 3) ### 测试入口 应用概览页 → 访问限制按钮 ### 测试步骤 | 步骤 | 操作 | 预期结果 | |:----:|------|----------| | 1 | 进入应用概览页 → 点击"访问限制" | 弹出权限配置对话框 | | 2 | 开启白名单 | 输入 IP 列表,保存 | | 3 | 使用白名单内 IP 访问 | 正常响应 | | 4 | 使用白名单外 IP 访问 | 被拒绝 | | 5 | 配置嵌入参数 | 复制嵌入代码 | | 6 | 在网页中嵌入测试 | 智能体正常加载 | --- ## 问题记录 | 序号 | 模块 | 问题描述 | 严重程度 | 状态 | |:----:|------|----------|:--------:|:----:| | 1 | | | | | | 2 | | | | | | 3 | | | | | --- ## 测试环境信息 | 项目 | 值 | |------|-----| | 平台版本 | ZhAgentOS 2.0 | | 浏览器 | Chrome 最新版 | | 操作系统 | Windows 11 | | Docker 版本 | | | 数据库 | PostgreSQL 16 + pgvector |