|
|
@@ -534,7 +534,7 @@ public class HealthReportController {
|
|
|
|
|
|
String fileUrl = draft.getFileUrl();
|
|
|
String originalFilename = draft.getOriginalFilename();
|
|
|
- String absolutePath = uploadBaseDir + "/" + fileUrl;
|
|
|
+ String absolutePath = resolveUploadFilePath(fileUrl);
|
|
|
|
|
|
try {
|
|
|
java.io.File localFile = new java.io.File(absolutePath);
|
|
|
@@ -717,7 +717,7 @@ public class HealthReportController {
|
|
|
|
|
|
// 保存文件到磁盘(LangGraph 和本地解析共用)
|
|
|
String fileUrl = saveUploadFile(file, userId);
|
|
|
- String absolutePath = uploadBaseDir + "/" + fileUrl;
|
|
|
+ String absolutePath = resolveUploadFilePath(fileUrl);
|
|
|
|
|
|
// 尝试 LangGraph 远程解析
|
|
|
try {
|
|
|
@@ -1751,6 +1751,26 @@ public class HealthReportController {
|
|
|
log.info(summary);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 解析草稿文件在服务器上的绝对路径。
|
|
|
+ * 兼容两种存储格式:
|
|
|
+ * - 当前格式:saveUploadFile 返回的绝对路径(已含 uploadBaseDir 前缀)
|
|
|
+ * - 历史格式:相对路径(如 uploads/health-reports/...)
|
|
|
+ * 修复:parse/parse-preview 曾对绝对路径再次拼接 uploadBaseDir 导致文件找不到。
|
|
|
+ */
|
|
|
+ private String resolveUploadFilePath(String fileUrl) {
|
|
|
+ if (fileUrl == null || fileUrl.isEmpty()) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ String normalized = fileUrl.replace("\\", "/");
|
|
|
+ if (normalized.startsWith("/") || normalized.matches("^[A-Za-z]:.*")) {
|
|
|
+ // 已是绝对路径,直接使用
|
|
|
+ return normalized;
|
|
|
+ }
|
|
|
+ // 相对路径,拼接上传根目录
|
|
|
+ return uploadBaseDir + "/" + normalized;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 保存上传文件到本地存储
|
|
|
*/
|