package contract import ( "os" "path/filepath" ) // ReportsDir 是报告渲染产物(.docx)的落盘目录。 // Gateway(下载)与 mcp-go(渲染)跨进程共享同一目录:用环境变量统一, // 缺省取系统临时目录下的 sundynix-reports —— 单机开发零配置即可对齐。 func ReportsDir() string { if d := os.Getenv("SUNDYNIX_REPORTS_DIR"); d != "" { return d } return filepath.Join(os.TempDir(), "sundynix-reports") } // ReportPath 返回某任务渲染出的 Word 文档绝对路径。 func ReportPath(id string) string { return filepath.Join(ReportsDir(), id+".docx") } // ReportSourcePath 返回某报告的源数据(标题 + 章节 JSON)绝对路径。 // 生成阶段只落源数据;导出时再按需渲染 Word/PDF/Markdown("导出时再处理")。 func ReportSourcePath(id string) string { return filepath.Join(ReportsDir(), id+".json") } // 报告源/产物的对象存储键(MinIO)。多进程/多机下用对象存储替代共享本地盘: // mcp-go 渲染后 Put,gateway 按键 Get 流式下载,不再依赖跨进程同一磁盘。 func ReportObjectKey(id string) string { return "reports/" + id + ".docx" } func ReportSourceObjectKey(id string) string { return "reports/" + id + ".json" } // BlobScheme 是导出结果里标识“产物在对象存储、按键取”的前缀; // 无此前缀则回退按本地路径下载(单机/共享卷时的降级路径)。 const BlobScheme = "minio://"