Bug: Dataset overview status counts always show 0 (v0.25.6, frontend-backend data structure mismatch)

这个报错通常出现在 RAGFlow v0.25.6 数据集概览页,表现为“Total Files”正常但各状态计数全为 0;优先排查前后端 ingestions/summary 数据结构是否不一致,即前端读取的是顶层字段、而 API 返回的是 data.status 下的嵌套字段。

快速结论:这个报错通常出现在 RAGFlow v0.25.6 数据集概览页,表现为“Total Files”正常但各状态计数全为 0;优先排查前后端 ingestions/summary 数据结构是否不一致,即前端读取的是顶层字段、而 API 返回的是 data.status 下的嵌套字段。

适用环境:RAGFlow v0.25.6(Docker 镜像 infiniflow/ragflow:v0.25.6);Docker Compose 部署在 NAS(Linux x86_64);浏览器 Chrome / Safari 均复现。

最快修复方案:暂无确认的一步修复方案。Issue 的关闭评论说明该问题已在当前版本修复,并建议升级到最新版本后再验证;Issue 正文给出的容器内改文件补丁属于临时绕行方法,不是官方确认的最终修复。

注意事项:容器内补丁会在容器重建或镜像升级后丢失,且需要自行确认代码匹配;不要在生产环境长期依赖。升级前应先备份知识库数据与自定义改动。

问题场景

在 RAGFlow v0.25.6 中,用户部署 Docker 版并创建知识库、上传文档、等待部分文档解析完成后,打开数据集概览页面。此时“Total Files”能正确显示(例如 2576),但 Downloading、Processing、Success、Failed 等状态计数全部显示为 0,即使数据库中有有效数据且 API 实际返回的计数是正确的。

报错原文

Bug: Dataset overview status counts always show 0 (v0.25.6, frontend-backend data structure mismatch)

Total Files: 2576
Downloading: 0      Success: 0
Processing:  0      Success: 0  Failed: 0

对应后端 API /api/v1/datasets/{id}/ingestions/summary 的返回结构:

{
  "data": {
    "doc_num": 2576,
    "status": {
      "cancel_count": 0,
      "done_count": 937,
      "fail_count": 18,
      "running_count": 767,
      "unstart_count": 854
    }
  }
}

原因分析

已确认的直接原因是前后端数据结构不匹配。后端 ingestions/summary 接口把状态计数放在 data.status 下,并使用 cancel_count、fail_count、done_count、running_count、unstart_count 等字段名;而前端 IOverviewTotal 接口和 useFetchOverviewTotal 钩子却从顶层读取 downloaded、processing、finished、failed、cancelled。这些顶层字段实际不存在,取到的值都是 undefined,最终在 StatCard 上渲染为 0。

涉及文件包括后端 api/apps/services/dataset_api_service.py 的 get_ingestion_summary(),以及前端 web/src/pages/dataset/dataset-overview/ 下的 interface.ts、hook.ts 和 index.tsx。

环境排查

  • 确认 RAGFlow 版本是否为 v0.25.6;如果使用的是该镜像,先按本 Issue 处理。
  • 确认部署方式:Docker / Docker Compose,以及宿主平台是否为 Linux x86_64。
  • 确认浏览器环境;Issue 中 Chrome / Safari 均能复现,说明不是浏览器缓存或兼容性问题。
  • 确认 /api/v1/datasets/{id}/ingestions/summary 的原始返回,检查是否存在 data.status.done_count 等嵌套字段。
  • 检查前端概览页读取的字段名是否为 downloaded、processing、finished、failed、cancelled,以及这些字段是否位于顶层。
  • Issue 未提供 Python、CUDA、PyTorch、显卡型号或依赖版本信息,这些项目无需作为本次排错的前提。

解决步骤

  1. 优先升级 RAGFlow 到最新版本。Issue 关闭评论明确表示该问题已在当前版本修复,概览页现在从正确的响应结构中读取 ingestion 状态字段。
  2. 升级后重新打开数据集概览页,确认状态计数是否恢复;如果仍为 0,再按后续步骤排查。
  3. 如果暂时不能升级,可临时验证“数据结构不匹配”这一判断:查看 ingestions/summary API 原始响应,确认计数位于 data.status 下,而前端读的是顶层字段。
  4. 可优先尝试的临时方案(来自 Issue 正文,非官方最终修复):在容器内修改后端 /ragflow/api/apps/services/dataset_api_service.py,在 get_ingestion_summary() 的返回字典中增加前端期望的扁平字段,例如把 status 中的计数映射为 cancelled、failed、finished、processing、downloaded。
  5. 或者在能够修改前端源码的环境中,改为从 res.data?.status 读取 cancel_count、fail_count、done_count、running_count、unstart_count,并回退为 0。
  6. 完成修改后重启对应服务,再验证页面计数。

验证方法

打开数据集概览页,确认“Total Files”以外的 Downloading、Processing、Success、Failed 等状态计数不再全部为 0,而是与后端 ingestions/summary 返回的 done_count、running_count、fail_count、unstart_count 等数值一致。也可以先直接访问 API 对比页面显示值,排除渲染层问题。

参考来源

infiniflow/ragflow #15304

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 29185

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注