任务:T29-B3-5(P2-8 环境依赖补强) 适用:健康报告「代传」链路(
/api/health/report/proxy-parse→ LangGraph/api/v1/report/parse)及 非代传两阶段链路(/report/upload+/report/parse)在生产/容器化环境部署时的强制检查项。
Java 后端(Spring Boot,cfc-backend)解析健康报告 PDF 时,优先调用 LangGraph 服务
(cfc-langgraph,FastAPI,端口 9000,生产域名 ai.etotem.com.cn)做结构化解析,失败才回退本地 Java 解析。
cfc-backend/src/main/resources/application.yml 的 langgraph.base-url
(默认 http://localhost:9000,仅开发环境可用)。storageService.getFilePath(fileUrl) 得到本地绝对路径,
传给 LangGraph 的 file_path。LangGraph 容器必须能读到该路径。LANGGRAPH_BASE_URL 环境变量必须显式设置,禁止使用默认 localhost# application.yml(生产必须覆盖默认值)
langgraph:
base-url: ${LANGGRAPH_BASE_URL:http://localhost:9000}
| 环境 | 要求 |
|---|---|
| 开发 | 可保持默认 http://localhost:9000(需本机已启动 cfc-langgraph) |
| 生产/容器化 | 必须设置 LANGGRAPH_BASE_URL=https://ai.etotem.com.cn(或内网 LangGraph 地址),否则后端会尝试连容器内 localhost:9000 而失败,报告解析退化为本地 Java 解析(功能可用但解析质量下降) |
检查命令:确认部署清单/启动脚本中已注入
LANGGRAPH_BASE_URL,且值与 LangGraph 服务实际地址一致。
后端 upload.base-dir(默认 /data/cfc-uploads)存放上传文件;getFilePath 返回的绝对路径
会被直接作为 LangGraph 请求体 file_path。若 Java 容器与 LangGraph 容器不共享该目录,
LangGraph 侧 File(file_path) 不存在 → 解析失败 → 回退本地解析(或整链失败)。
| 环境 | 要求 |
|---|---|
| 本地非容器 | 同一主机目录即可,无额外要求 |
| 容器化 | cfc-backend 与 cfc-langgraph 两个容器必须挂载同一个 host 目录(如 /data/cfc-uploads)到各自容器内相同路径;cfc-backend 的 upload.base-dir 与 LangGraph 读取 file_path 的目录必须是同一目录 |
检查命令:
# 确认两个容器挂载同一 uploads 卷 docker inspect cfc-backend # 查看 Mounts → Source/Target docker inspect cfc-langgraph # 查看 Mounts → Source/Target # 两者 target(容器内路径)必须一致,且等于 upload.base-dir 解析后的绝对路径
python.executable 本地兜底依赖(非容器可跳过)本地(非容器)环境使用本地 Java 解析兜底时,pdfParseService 不依赖外部脚本;仅异步采集链路
(report.collect)依赖 python 可执行文件。生产容器化环境无需该检查(LangGraph 承担解析)。
| 变量 | 默认值 | 生产必须 | 说明 |
|---|---|---|---|
LANGGRAPH_BASE_URL |
http://localhost:9000 |
✅ | LangGraph 报告解析服务地址(生产 https://ai.etotem.com.cn) |
upload.base-dir |
/data/cfc-uploads |
✅ | 上传文件根目录,须与 LangGraph 容器共享 |
storage.type |
jdcloud |
— | jdcloud(OSS)或 local(本地磁盘);local 时共享卷要求更严格 |
/api/health/report/proxy-parse,响应 parseMethod="langgraph"
(而非 "local")→ 证明 LangGraph 通路可用。parseFallback=true(parseMethod="local"),说明 LangGraph 未打通,按本清单第 1/2 项排查。