fix: 修改生成竞品报告文件名的逻辑
This commit is contained in:
parent
6f5c7f219c
commit
e90d298f98
@ -143,9 +143,8 @@ func CreateCompetitiveReportCore(ctx *gin.Context, req *cast.CreateCompetitiveRe
|
||||
|
||||
zap.L().Info("解析成功", zap.Any("competitorReportData", competitorReportData))
|
||||
|
||||
today := time.Now().Format("20060102")
|
||||
timestamp := time.Now().UnixMicro()
|
||||
pdfFileName := fmt.Sprintf("%s%s老师的竞品报告%d.pdf", today, req.ArtistName, timestamp)
|
||||
// 生成PDF文件名,使用报告标题命名
|
||||
pdfFileName := generateReportFileName(req.Title, req.ArtistName) + ".pdf"
|
||||
pdfFilePath := "./runtime/report_pdf/" + pdfFileName
|
||||
|
||||
_, err = utils.CheckDirPath("./runtime/report_pdf/", true)
|
||||
@ -501,10 +500,8 @@ func ImportCompetitiveReportBatch(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
// 生成PDF并上传
|
||||
// 生成临时PDF文件路径
|
||||
today := time.Now().Format("20060102")
|
||||
timestamp := time.Now().UnixMicro()
|
||||
pdfFileName := fmt.Sprintf("%s%s老师的竞品报告%d.pdf", today, temp.ArtistName, timestamp)
|
||||
// 生成临时PDF文件路径,使用报告标题命名
|
||||
pdfFileName := generateReportFileName(temp.Title, temp.ArtistName) + ".pdf"
|
||||
pdfFilePath := "./runtime/report_pdf/" + pdfFileName
|
||||
|
||||
// 确保目录存在
|
||||
@ -1317,6 +1314,36 @@ func checkAndReuploadImageForReport(imageUrl string) (string, error) {
|
||||
return compressUrl, nil
|
||||
}
|
||||
|
||||
// generateReportFileName 生成竞品报告PDF文件名
|
||||
// 如果有标题则使用标题,否则使用默认格式(日期+老师+时间戳)
|
||||
func generateReportFileName(title, artistName string) string {
|
||||
// 如果有标题,使用标题命名
|
||||
if title != "" {
|
||||
// 替换标题中的特殊字符为合法字符
|
||||
fileName := strings.NewReplacer(
|
||||
"/", "",
|
||||
"\\", "",
|
||||
":", "",
|
||||
"*", "",
|
||||
"?", "",
|
||||
"\"", "",
|
||||
"<", "",
|
||||
">", "",
|
||||
"|", "",
|
||||
" ", "_",
|
||||
).Replace(title)
|
||||
// 限制文件名长度,避免过长
|
||||
if len(fileName) > 100 {
|
||||
fileName = fileName[:100]
|
||||
}
|
||||
return fileName
|
||||
}
|
||||
// 没有标题时使用默认格式
|
||||
today := time.Now().Format("20060102")
|
||||
timestamp := time.Now().UnixMicro()
|
||||
return fmt.Sprintf("%s%s老师的竞品报告%d", today, artistName, timestamp)
|
||||
}
|
||||
|
||||
// truncateCompetitorReportData 截断竞品报告数据中超长的字段
|
||||
// 字段长度要求参考 AI 生成竞品报告的限制
|
||||
func truncateCompetitorReportData(data utils.CompetitorReportData) utils.CompetitorReportData {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user