# 测试用例 — 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个问题涉及的功能模块*