Files
qihuaiflow/tests/12-fix-verification-test-case-report.md
T
qyyfw 78ff261b5a 初始提交: Qihu-AIFlow v2.0.1 完整项目
- 前端 React+TypeScript (源码+构建产物)
- 后端 Python FastAPI
- 数据库迁移 001-015
- Docker部署配置
- 微信ClawBot API频道绑定
- 项目文档 README.md
2026-07-02 14:40:46 +08:00

23 KiB
Raw Blame History

测试用例 — 12项问题修复验证

1. 需求依据

  • 来源:项目负责人下发的12项问题修复清单
  • 重点验证方向:Agent/技能选择、频道二维码(非localhost)、知识库AI图谱、AI进化记录、资产文件分类+预览、邮件配置保存+测试

2. 代码功能模块概览

问题对应代码位置

# 问题 前端文件 后端文件
1 Token驾驶舱时间不一致 TokenDashboardPage.tsx:376-392 token_usage.py:167
2 登录密码错误反馈 LoginPage.tsx:59-103 auth.py:38-49
3 平台驾驶舱+累计Token Dashboard.tsx:79,101-127 dashboard.py:38-42
4 广告图片上传/AI绘图 Ads.tsx:141-188,353-417 ads.py:182-311
5 模型类型映射+默认LLM Models.tsx:156-195,313-353 models.py:234-294,560-587
6 邮件配置保存+测试弹窗 SiteSettings.tsx:128-185,358-428 settings.py:104-374
7 Agent/技能无法选择 ChatPage.tsx:262-263,544-622 chat.py:38-45,260-285
8 应用市场安装/卸载/搜索 MarketPage.tsx:245-437,1249-1424 market.py:44-125,300-393
9 知识库AI图谱LLM提取 KnowledgePage.tsx:163-367,738-772 knowledge.py:205-616
10 资产文档显示+在线预览 AssetsPage.tsx:59-263,377-413 knowledge.py:1067-1085
11 AI进化对话未记录 ChatPage.tsx:603-613 chat.py:441-458, evolution_service.py:54-233
12 频道二维码生产地址 ChannelPage.tsx:391-476 channels.py:447-658, config.py:37-49

3. 需求与代码差异说明

3.1 代码中已实现但可能存在缺陷的功能

  • 问题7(Agent/技能选择):选择逻辑存在,但仅为单选模式,且Agent后端无实际执行逻辑
  • 问题11(AI进化记录):轨迹记录存在双向重复提交风险(前后端各自提交)
  • 问题10(资产预览):知识库文档category="doc"不在VALID_ASSET_CATEGORIES中

3.2 PRD中未覆盖但代码已实现

无。本次为问题修复验证,所有问题均有对应代码实现。


4. 测试用例


4.1 问题1:Token驾驶舱消耗明细时间与系统时间不一致

TC-1-01 [P0] 验证Token消耗明细时间格式与系统时区一致

  • 前置条件:用户已登录,存在Token消耗记录
  • 涉及API:GET /app/api/token/logs
  • 步骤:
    1. 进入Token驾驶舱页面(#/token)
    2. 查看消耗明细列表中的时间列
    3. 记录JS执行 new Date().getHours() 获取当前浏览器时间
    4. 对比列表中最近一条消耗记录的时间小时数
  • 预期结果:
    • 消耗明细时间的小时数与系统当前时间的小时数一致(允许秒级差异)
    • 时间格式为 YYYY-MM-DD HH:mm

TC-1-02 [P1] 验证Token概览页面今日消耗统计的时间边界

  • 前置条件:用户已登录
  • 涉及API:GET /app/api/token/overview
  • 步骤:
    1. 进入Token驾驶舱页面
    2. 查看"今日消耗"数值
    3. 通过API直接查询今日消耗并对比页面显示值
  • 预期结果:页面显示的今日消耗与API返回一致

TC-1-03 [P1] 验证API返回时间格式一致性

  • 前置条件:用户已登录,有Token记录
  • 涉及API:GET /app/api/token/logs
  • 步骤:
    1. 调用API获取token logs
    2. 检查返回的created_at字段格式
  • 预期结果:
    • created_at格式为ISO 8601标准格式
    • 同一页面的多个记录时间格式一致

4.2 问题2:登录界面修改密码后用旧密码登录反馈

TC-2-01 [P0] 验证旧密码登录返回"密码错误"而非通用错误

  • 前置条件:用户已修改密码
  • 涉及API:POST /app/api/auth/login
  • 步骤:
    1. 在登录页面输入正确的用户名
    2. 输入已失效的旧密码
    3. 点击登录
  • 预期结果:
    • 页面显示明确的"密码错误"提示
    • 不显示"用户名不存在"或通用的"登录失败"

TC-2-02 [P0] 验证用户名不存在时显示正确提示

  • 前置条件:无
  • 涉及API:POST /app/api/auth/login
  • 步骤:
    1. 输入不存在的用户名
    2. 输入任意密码
    3. 点击登录
  • 预期结果:
    • 页面显示"用户名不存在"提示
    • 不与"密码错误"混淆

TC-2-03 [P1] 验证修改密码后新密码立即生效

  • 前置条件:用户已登录(如admin/admin123)
  • 涉及API:PUT /app/api/profile/password, POST /app/api/auth/login
  • 步骤:
    1. 修改密码为新密码
    2. 退出登录
    3. 用旧密码尝试登录
    4. 用新密码登录
  • 预期结果:
    • 旧密码登录失败,返回"密码错误"
    • 新密码登录成功

TC-2-04 [P1] 验证前端错误提示区域可见且文案清晰

  • 前置条件:无
  • 涉及API:POST /app/api/auth/login
  • 步骤:
    1. 输入错误凭据登录
    2. 检查页面错误提示位置和文案
  • 预期结果:
    • 错误提示在表单区域附近可见
    • 文案明确区分"用户名不存在"与"密码错误"

4.3 问题3:平台驾驶舱+累计Token消耗统计

TC-3-01 [P0] 验证页面标题为"平台驾驶舱"

  • 前置条件:管理员已登录
  • 涉及API:无
  • 步骤:
    1. 进入管理后台首页(#/admin)
    2. 查看页面标题
  • 预期结果:页面标题显示为"平台驾驶舱"

TC-3-02 [P0] 验证累计Token消耗统计卡片存在

  • 前置条件:管理员已登录
  • 涉及API:GET /app/api/admin/dashboard/stats
  • 步骤:
    1. 进入平台驾驶舱
    2. 查看统计卡片区域
    3. 确认包含以下统计项
  • 预期结果:
    • 包含"累计总消耗"统计卡片
    • 数值来源于数据库实时统计
    • Token数值格式正确(大数以"万"为单位显示)

TC-3-03 [P1] 验证统计数据随使用更新

  • 前置条件:管理员已登录,记录当前累计Token值
  • 涉及API:GET /app/api/admin/dashboard/stats
  • 步骤:
    1. 记录当前累计Token消耗值
    2. 在AI聊天中发送一条消息(产生Token消耗)
    3. 刷新平台驾驶舱
    4. 对比累计Token消耗值
  • 预期结果:
    • 累计Token消耗值增加(或不变,取决于TokenUsageLog是否已写入)
    • 如果是今日产生的消耗,今日Token也有相应变化

TC-3-04 [P1] 验证统计卡片包含所有必要维度

  • 前置条件:管理员已登录
  • 涉及API:GET /app/api/admin/dashboard/stats
  • 步骤:
    1. 进入平台驾驶舱
    2. 统计所有可见的统计卡片
  • 预期结果:至少包含以下统计维度:
    • 用户总数
    • 活跃模型数
    • 今日订单数
    • 今日Token消耗
    • 累计总消耗
    • 日均消耗(近30天)

4.4 问题4:广告位管理图片上传/替换+AI绘图

TC-4-01 [P0] 验证广告编辑中有图片上传按钮

  • 前置条件:管理员已登录
  • 涉及API:无
  • 步骤:
    1. 进入管理后台 → 广告管理页面(#/admin/ads)
    2. 点击编辑某个广告
    3. 查找"背景图片"区域
  • 预期结果:
    • 存在"上传图片"按钮
    • 按钮可点击,触发文件选择

TC-4-02 [P0] 验证AI绘图按钮及功能

  • 前置条件:管理员已登录
  • 涉及API:POST /app/api/admin/ads/generate-image?prompt=...
  • 步骤:
    1. 编辑广告,找到"AI绘图"按钮
    2. 输入描述词(如"科技感蓝色广告图")
    3. 点击AI绘图
    4. 等待生成结果
  • 预期结果:
    • 按钮可见且可点击
    • 生成过程中显示加载状态
    • 生成完成后显示预览图

TC-4-03 [P1] 验证图片上传功能完整流程

  • 前置条件:管理员已登录,准备测试图片文件
  • 涉及API:POST /app/api/admin/ads/upload-image
  • 步骤:
    1. 编辑广告
    2. 点击"上传图片"
    3. 选择一张图片
    4. 确认图片预览出现
    5. 保存广告
  • 预期结果:
    • 选择文件后显示图片预览
    • 保存后广告使用新上传的图片

TC-4-04 [P1] 验证"清除图片"按钮

  • 前置条件:管理员已登录,广告已有背景图片
  • 涉及API:无
  • 步骤:
    1. 编辑已有图片的广告
    2. 点击"清除图片"按钮
  • 预期结果:
    • 图片预览消失
    • 保存后广告不再显示该图片

4.5 问题5:大模型库管理模型类型映射+全局默认LLM

TC-5-01 [P0] 验证非文本模型显示正确类型标签

  • 前置条件:管理员已登录,存在多模态模型(如GPT-4o包含vision)
  • 涉及API:GET /app/api/admin/models/
  • 步骤:
    1. 进入管理后台 → 大模型库(#/admin/models)
    2. 查看模型列表
    3. 找到多模态模型(如支持vision、audio的模型)
  • 预期结果:
    • 多模态模型显示对应的能力标签(如"视觉"、"语音")
    • 纯文本模型仅显示"文本"标签
    • 每个标签有对应的颜色标识

TC-5-02 [P0] 验证全局默认LLM设置入口

  • 前置条件:管理员已登录
  • 涉及API:PUT /app/api/admin/models/{id}/set-default
  • 步骤:
    1. 进入大模型库页面
    2. 找到"设置默认LLM"按钮或入口
    3. 点击进入选择弹窗
  • 预期结果:
    • 存在"设置默认LLM"功能入口
    • 弹窗列出所有已启用的模型
    • 可选择并确认设置默认模型

TC-5-03 [P1] 验证默认LLM设置后正确标记

  • 前置条件:管理员已登录
  • 涉及API:PUT /app/api/admin/models/{id}/set-default
  • 步骤:
    1. 设置某个模型为默认LLM
    2. 查看模型列表
    3. 在AI聊天页面检查默认选中的模型
  • 预期结果:
    • 模型列表中该模型显示"默认"标记
    • AI聊天页面默认选中该模型

TC-5-04 [P1] 验证供应商模型列表获取功能

  • 前置条件:管理员已登录,存在模型供应商
  • 涉及API:POST /app/api/admin/models/providers/{id}/fetch-models
  • 步骤:
    1. 进入大模型库
    2. 选择某个供应商
    3. 点击"获取模型列表"
  • 预期结果:
    • 能够从供应商获取可用模型列表
    • 每个模型显示名称和类型标签

4.6 问题6:邮件配置保存+测试弹窗

TC-6-01 [P0] 验证邮件配置保存功能

  • 前置条件:管理员已登录
  • 涉及API:PUT /app/api/admin/settings/email
  • 步骤:
    1. 进入网站基础设置(#/admin/settings)
    2. 填写SMTP服务器、端口、用户名、密码、发件地址
    3. 点击"保存设置"
  • 预期结果:
    • 显示保存成功提示
    • 刷新页面后配置仍然存在(回显正确)

TC-6-02 [P0] 验证测试邮件弹窗输入收件箱

  • 前置条件:管理员已登录
  • 涉及API:POST /app/api/admin/settings/email/test
  • 步骤:
    1. 在邮件配置区点击"发送测试邮件"
    2. 观察弹出的测试邮件弹窗
  • 预期结果:
    • 弹窗包含"收件邮箱"输入框(必填)
    • 弹窗包含"邮件主题"输入框
    • 弹窗包含"邮件内容"文本区

TC-6-03 [P0] 验证AI生成测试内容功能

  • 前置条件:管理员已登录,已打开测试邮件弹窗
  • 涉及API:POST /app/api/admin/settings/email/generate-content
  • 步骤:
    1. 在测试邮件弹窗中点击"AI生成测试内容"
    2. 等待生成结果
  • 预期结果:
    • 邮件主题自动填充AI生成的内容
    • 邮件正文自动填充AI生成的内容
    • 内容为中文,适合测试用途

TC-6-04 [P1] 验证未配置时发送测试邮件的错误提示

  • 前置条件:管理员已登录,SMTP配置为空
  • 涉及API:POST /app/api/admin/settings/email/test
  • 步骤:
    1. 清空邮件配置并保存
    2. 打开测试邮件弹窗
    3. 输入收件地址点击发送
  • 预期结果:
    • 显示"邮件配置未设置,请先保存邮件配置"错误提示

TC-6-05 [P1] 验证SMTP认证失败的错误提示

  • 前置条件:管理员已登录
  • 涉及API:POST /app/api/admin/settings/email/test
  • 步骤:
    1. 填写错误的SMTP密码
    2. 保存配置
    3. 发送测试邮件
  • 预期结果:显示"SMTP认证失败,请检查用户名和密码"

4.7 问题7:AI聊天Agent/技能无法选择

TC-7-01 [P0] 验证点击Agent下拉中的项目可选中

  • 前置条件:用户已登录,市场中有已发布Agent
  • 涉及API:无(前端交互)
  • 步骤:
    1. 进入AI聊天页面(#/chat)
    2. 点击输入框上方的"Agent"下拉按钮
    3. 点击某个Agent
    4. 观察Agent下拉按钮状态变化
  • 预期结果:
    • 选中的Agent在列表中高亮/标记
    • Agent按钮显示已选中状态(如高亮或显示选中数量)

TC-7-02 [P0] 验证点击技能下拉中的项目可选中

  • 前置条件:用户已登录,市场中有已发布技能
  • 涉及API:无(前端交互)
  • 步骤:
    1. 在AI聊天页面点击"技能"下拉按钮
    2. 点击某个技能
    3. 观察状态变化
  • 预期结果:
    • 选中的技能在列表中高亮/标记
    • 技能按钮显示已选中状态

TC-7-03 [P0] 验证发送消息时Agent/技能参数传递

  • 前置条件:用户已登录,已选中Agent和技能
  • 涉及API:POST /app/api/chat/conversations/{id}/messages
  • 步骤:
    1. 选中一个Agent和一个技能
    2. 输入消息并发送
    3. 检查发送API请求体中的agent_ids和skill_ids参数
  • 预期结果:
    • 请求体包含选中的agent_ids(数组)
    • 请求体包含选中的skill_ids(数组)

TC-7-04 [P1] 验证取消选中Agent/技能

  • 前置条件:用户已登录,已选中Agent
  • 涉及API:无
  • 步骤:
    1. 点击已选中的Agent(再次点击)
    2. 观察状态变化
  • 预期结果:Agent取消选中,按钮恢复默认状态

TC-7-05 [P1] 验证Agent/技能无数据时的占位提示

  • 前置条件:市场中无Agent或技能类型应用
  • 涉及API:GET /app/api/market/apps?type=agent, GET /app/api/market/apps?type=skill
  • 步骤:
    1. 在聊天页面点击Agent下拉
  • 预期结果:显示"暂无可用 Agent"

4.8 问题8:应用市场安装/卸载状态bug+搜索

TC-8-01 [P0] 验证应用安装功能

  • 前置条件:用户已登录,应用市场中存在未安装应用
  • 涉及API:POST /app/api/market/apps/{id}/install
  • 步骤:
    1. 进入应用市场(#/market)
    2. 点击某个未安装的应用
    3. 点击"安装"按钮
  • 预期结果:
    • 安装成功后,按钮变为"已安装"或"卸载"
    • 应用列表中该应用状态更新

TC-8-02 [P0] 验证重复安装检测

  • 前置条件:用户已安装某个应用
  • 涉及API:POST /app/api/market/apps/{id}/install
  • 步骤:
    1. 找到已安装的应用
    2. 尝试再次点击"安装"按钮
  • 预期结果:
    • 前端阻止重复安装请求
    • 或后端返回"应用已安装"错误提示

TC-8-03 [P0] 验证应用卸载功能

  • 前置条件:用户已安装某个应用
  • 涉及API:DELETE /app/api/market/apps/{id}/uninstall
  • 步骤:
    1. 找到已安装的应用
    2. 点击"卸载"按钮
    3. 确认卸载
  • 预期结果:
    • 卸载成功后,按钮变为"安装"
    • 应用列表中该应用状态更新

TC-8-04 [P0] 验证搜索功能

  • 前置条件:用户已登录,市场中有多个应用
  • 涉及API:GET /app/api/market/apps?keyword=xxx
  • 步骤:
    1. 在应用市场搜索框中输入关键词
    2. 观察搜索结果
  • 预期结果:
    • 搜索结果仅显示匹配的应用
    • 清除搜索后恢复全部应用

TC-8-05 [P1] 验证安装/卸载后状态持久化

  • 前置条件:用户已安装某应用
  • 涉及API:无
  • 步骤:
    1. 安装一个应用
    2. 刷新页面
    3. 检查该应用状态
  • 预期结果:
    • 刷新后应用仍显示"已安装"状态

4.9 问题9:知识库构建知识图谱LLM驱动

TC-9-01 [P0] 验证知识图谱构建功能可触发

  • 前置条件:用户已登录,创建了知识库并上传了文档
  • 涉及API:POST /app/api/knowledge/bases/{id}/build-graph
  • 步骤:
    1. 进入知识库页面(#/knowledge)
    2. 选择知识库,上传一个文本内容丰富的文档
    3. 点击"构建知识图谱"按钮
  • 预期结果:
    • 构建过程开始(可能显示进度/加载状态)
    • 构建完成后显示成功提示

TC-9-02 [P0] 验证知识图谱包含实体和关系

  • 前置条件:知识图谱已构建完成
  • 涉及API:GET /app/api/knowledge/bases/{id}/graph
  • 步骤:
    1. 构建完成后查看知识图谱
    2. 检查图谱节点和边
  • 预期结果:
    • 图谱包含多个节点(实体/概念/属性)
    • 图谱包含节点间的关系/边
    • 节点类型包含entity/concept/attribute等分类

TC-9-03 [P1] 验证LLM提取的实体丰富性

  • 前置条件:知识库中有含命名实体的文档
  • 涉及API:GET /app/api/knowledge/bases/{id}/graph
  • 步骤:
    1. 上传包含人物、组织、地点的文档
    2. 构建知识图谱
    3. 查看提取的节点
  • 预期结果:
    • 节点包含文档中的人物、组织、地点等实体
    • 每个节点有描述信息
    • 关系有具体的关系类型(而非全为"关联")

TC-9-04 [P1] 验证图谱可视化渲染

  • 前置条件:知识图谱已构建
  • 涉及API:无(前端渲染)
  • 步骤:
    1. 在知识库页面查看知识图谱可视化
  • 预期结果:
    • 图谱以可视化方式展示(非纯文本/表格)
    • 节点颜色按类型区分
    • 支持交互(如拖拽/缩放/点击)

4.10 问题10:资产知识库文档显示+在线预览

TC-10-01 [P0] 验证知识库文档在资产"文件"分类下可见

  • 前置条件:用户已登录,已在知识库中上传文档
  • 涉及API:GET /app/api/knowledge/bases + GET /app/api/knowledge/bases/{id}/documents
  • 步骤:
    1. 进入资产页面(#/assets)
    2. 切换到"文件"分类Tab
    3. 查看文档列表
  • 预期结果:
    • 列表中包含知识库上传的文档
    • 文档显示正确的文件名和类型标签

TC-10-02 [P0] 验证文档子类型筛选功能

  • 前置条件:资产中有不同类型文件
  • 涉及API:无(前端筛选)
  • 步骤:
    1. 在文件分类下点击"知识库"子筛选
    2. 观察列表变化
  • 预期结果:仅显示来自知识库的文档,其他来源文件被过滤

TC-10-03 [P0] 验证文档在线预览功能

  • 前置条件:资产中有文本类型文档
  • 涉及API:无
  • 步骤:
    1. 在资产列表中点击某文档
    2. 检查是否出现预览弹窗
    3. 查看预览内容
  • 预期结果:
    • 弹窗显示文档内容预览
    • 文本文件可直接查看内容
    • 预览弹窗有关闭按钮

TC-10-04 [P1] 验证不同文件类型的预览表现

  • 前置条件:资产中有PDF、Word等类型文档
  • 涉及API:无
  • 步骤:
    1. 分别点击PDF、Word、TXT等类型文档
    2. 观察预览弹窗表现
  • 预期结果:
    • 每种类型都有合适的预览方式(文本内容或提示)
    • 不支持在线预览的类型给出明确提示

TC-10-05 [P1] 验证知识库文档去重显示

  • 前置条件:同一文件在多个知识库中
  • 涉及API:无
  • 步骤:
    1. 查看资产列表
    2. 检查是否有重复文档
  • 预期结果:同一文档不重复显示

4.11 问题11:AI进化对话未记录

TC-11-01 [P0] 验证对话产生后生成进化轨迹记录

  • 前置条件:用户已登录,已通过 #/evolution 页面进入过AI进化
  • 涉及API:POST /app/api/chat/conversations/{id}/messages
  • 步骤:
    1. 进入AI聊天页面
    2. 发送一条消息并等待AI回复
    3. 进入AI进化页面(#/evolution)
    4. 查看进化事件/轨迹列表
  • 预期结果:
    • 有新产生的对话轨迹记录
    • 记录包含对话ID和时间信息

TC-11-02 [P0] 验证AI进化页面时间线事件显示

  • 前置条件:用户已登录,已有进化轨迹
  • 涉及API:GET /app/api/evolution/events
  • 步骤���
    1. 进入AI进化页面
    2. 查看时间线/事件列表
  • 预期结果:
    • 显示对话相关的进化事件
    • 事件类型包括"对话"或"discovered"
    • 每条事件有时间戳

TC-11-03 [P1] 验证Pipeline处理轨迹

  • 前置条件:用户已登录,已触发进化管道
  • 涉及API:POST /app/api/evolution/pipeline/trigger
  • 步骤:
    1. 在AI进化页面触发管道
    2. 检查轨迹状态是否从"discovered"进入下一阶段
  • 预期结果:
    • 管道启动后有状态变化
    • 管道结束后技能树更新

TC-11-04 [P1] 验证进化仪表盘统计更新

  • 前置条件:用户已登录,管道已处理
  • 涉及API:GET /app/api/evolution/dashboard
  • 步骤:
    1. 查看进化仪表盘
    2. 检查技能数量、轨迹数量等统计
  • 预期结果:
    • 统计数据与实际使用情况一致
    • 技能数量在管道处理后可能增加

4.12 问题12:频道微信二维码显示生产地址

TC-12-01 [P0] 验证二维码URL使用生产地址非localhost

  • 前置条件:用户已登录,打开了微信频道
  • 涉及API:POST /app/api/channels/authorize/scan?platform=wechat
  • 步骤:
    1. 进入频道管理页面(#/channels)
    2. 选择微信平台
    3. 点击生成二维码
    4. 检查API返回的qr_url或bind_url值
  • 预期结果:
    • URL以生产地址开头(如https://bot.qihuyun.com)
    • URL不包含localhost、127.0.0.1
    • URL格式为 {生产地址}/#/channels/bind?token=...&platform=wechat

TC-12-02 [P0] 验证二维码页面正常渲染

  • 前置条件:用户已生成二维码
  • 涉及API:无(前端渲染)
  • 步骤:
    1. 生成二维码后观察页面
  • 预期结果:
    • 二维码图片清晰可见
    • 页面下方显示操作提示文字
    • 不显示localhost相关字样

TC-12-03 [P1] 验证无凭证时二维码的提示信息

  • 前置条件:未配置微信AppID/AppSecret
  • 涉及API:POST /app/api/channels/authorize/scan?platform=wechat
  • 步骤:
    1. 不填写凭证生成二维码
    2. 检查提示信息
  • 预期结果:
    • 返回的is_mock为true但qr_url仍为生产地址
    • 提示信息说明这是模拟版本

TC-12-04 [P1] 验证扫描状态轮询正常

  • 前置条件:已生成二维码
  • 涉及API:POST /app/api/channels/authorize/scan/status?platform=wechat
  • 步骤:
    1. 生成二维码后观察状态轮询
  • 预期结果:
    • 定时查询扫描状态
    • 状态正常更新(waiting/scanned/authorized/expired)

5. 测试用例统计

问题 P0 P1 合计
1. Token时间一致性 1 2 3
2. 登录密码错误反馈 2 2 4
3. 平台驾驶舱+累计Token 2 2 4
4. 广告图片上传/AI绘图 2 2 4
5. 模型类型+默认LLM 2 2 4
6. 邮件配置+测试弹窗 3 2 5
7. Agent/技能选择 3 2 5
8. 应用市场安装/卸载/搜索 4 1 5
9. 知识库AI图谱 2 2 4
10. 资产文档+预览 3 2 5
11. AI进化对话记录 2 2 4
12. 频道二维码生产地址 2 2 4
合计 28 23 51

报告生成时间:2026-06-01 生成方式:基于前后端代码深度分析,覆盖全部12个问题涉及的功能模块