# 知识库模块 E2E 测试报告

- 测试日期: 2026-02-03
- 测试范围: 知识库检索（场景 1.1）、AI 问答（场景 2.1）
- 执行方式: AI + Playwright MCP（手工步骤）
- 浏览器/设备: Chromium / Desktop
- 环境: 本地开发（frontend: http://localhost:3000, backend: http://localhost:3001）
- StorageState: testing/reports/knowledge-base-2026-02-03-e2e/storage-state.json

## 一、前置数据与准备

- 创建文章:
  - 标题: RAGFlow E2E 0203
  - 内容: “本文包含关键字 RAGFLOW_E2E_0203 用于检索测试。”
  - 创建方式: UI -> /knowledge-base/editor
  - 成功截图: testing/reports/knowledge-base-2026-02-03-e2e/E2E-00-article-created-success.png
- 同步触发:
  - POST /api/v1/knowledge-base/sync/full (Bearer token)
  - GET /api/v1/knowledge-base/sync/tasks/:taskId
  - 结果: task 状态 FAILED, error=fetch failed（见阻断说明）

## 二、用例明细

### E2E-01 场景 1.1 搜索并查看文档
- 页面: /knowledge-base
- 使用 API:
  - GET /knowledge-base/semantic-search
- 操作步骤:
  1) 访问 /knowledge-base
  2) 输入关键词 RAGFLOW_E2E_0203 并搜索
- 断言点:
  - 到达断言: 页面标题 “Knowledge Base” 可见
  - 成功/稳定断言: 结果列表出现或空状态出现
- 实际结果:
  - 搜索 API 返回 500，前端提示搜索失败（console: fetch failed）
- 结论: 失败（阻断）
- 证据截图: testing/reports/knowledge-base-2026-02-03-e2e/E2E-01-search-failed.png

### E2E-02 场景 2.1 AI 问答返回引用
- 页面: /knowledge-base/ask
- 使用 API:
  - POST /knowledge-base/ask
- 操作步骤:
  1) 访问 /knowledge-base/ask
  2) 输入问题 “RAGFLOW_E2E_0203 在哪篇文章中出现？”
  3) 点击 Ask
- 断言点:
  - 到达断言: 问答输入框可见
  - 成功/稳定断言: 答案区域出现且包含引用
- 实际结果:
  - API 返回 500，提示 “Q&A service is temporarily unavailable”
  - 控制台日志显示 “Authentication error: API key is invalid”
- 结论: 失败（阻断）
- 证据截图: testing/reports/knowledge-base-2026-02-03-e2e/E2E-02-ask-failed.png

## 三、阻断与问题分析

1) RAGFlow API key 未生效
- 现象: /knowledge-base/ask 返回 “Authentication error: API key is invalid”
- 影响: 问答链路不可用
- 处理建议: 使用 RAGFlow 生成有效 API token，并重启后端加载 `RAGFLOW_API_KEY`

2) 同步任务 fetch failed
- 现象: /knowledge-base/sync/full 触发后任务状态 FAILED
- 影响: 检索数据未入库，搜索失败
- 处理建议: 确认后端已加载新的 `RAGFLOW_API_KEY`，并重试全量同步

## 四、覆盖度说明
- 覆盖页面: /knowledge-base, /knowledge-base/ask, /knowledge-base/editor
- 覆盖场景: 2/2（均阻断）
- 未覆盖: 文档上传、权限过滤、异常场景

## 五、契约一致性
- 文档契约与页面行为一致，失败原因来自外部依赖（RAGFlow 认证）

## 六、后续动作
- 重启后端服务以加载最新 `.env` 的 `RAGFLOW_API_KEY`
- 重新执行全量同步与 E2E 用例


## 七、复跑记录（2026-02-03 重新执行）

- 后端已重启后再次触发全量同步
- 任务 ID: cf18f100-d3f3-4ddc-92f2-4e6e67cca139
- 任务结果: FAILED
- 错误: Authentication error: API key is invalid!

结论：RAGFlow API key 仍未生效，需确认后端进程实际加载的环境变量来源。

## 八、第二次复跑记录（2026-02-03）

- 全量同步任务 ID: d54c58aa-4b76-4dd9-91ba-5bf2aa109185
- 任务结果: COMPLETED，但 failedItems=7（processedItems=0）
- 说明: 同步未成功写入任何文档

### E2E-01 搜索复跑
- 结果: 失败
- 前端错误: LookupError('Model(@None) not authorized')
- 截图: testing/reports/knowledge-base-2026-02-03-e2e/E2E-01-search-failed-retry.png

### E2E-02 问答复跑
- 结果: 失败
- 前端错误: The dataset <id> not found / not available
- 截图: testing/reports/knowledge-base-2026-02-03-e2e/E2E-02-ask-failed-retry.png

## 九、本地复跑记录（2026-02-03）

### 环境状态
- 前端可访问: http://localhost:3000 ✅
- 后端不可访问: http://localhost:3001 ❌（浏览器与 fetch 均报 ERR_CONNECTION_REFUSED）

### 复跑步骤
1) 登录系统（itadmin@ff.com）
2) 进入 /knowledge-base/editor 创建文章
   - 标题: RAGFlow 本地 TEI 端到端验证
   - 内容: “这是用于验证 RAGFlow + 本地 TEI（bge-m3）检索与问答的测试文章。包含关键词：RAGFlow、TEI、知识库、向量检索、端到端。”
   - UI 提示 “Article created” ✅
3) 触发 /knowledge-base/sync/full
   - 结果: 调用失败，前端控制台报 ERR_CONNECTION_REFUSED（后端 3001 不可达）

### 结论
本次复跑阻断原因：后端服务在 3001 端口不可达，无法触发同步与检索接口。

## 十、再次复跑记录（2026-02-03）

### 现象
- 前端可访问: http://localhost:3000 ✅
- 后端不可访问: http://localhost:3001 ❌（控制台多处 ERR_CONNECTION_REFUSED）

### 影响
- /api/v1/knowledge-base/sync/full 调用失败（连接被拒绝）
- /api/v1/knowledge-base/semantic-search 调用失败（连接被拒绝）
- 其它 KB 相关接口均失败

### 结论
复跑阻断：后端服务未正常监听 3001，需先恢复后端进程。
