refactor(prompt): 重构提示词构建服务和回调处理

This commit is contained in:
2026-06-05 11:00:05 +08:00
parent b2cad4cac2
commit de70d33115
5 changed files with 166 additions and 157 deletions

View File

@@ -22,26 +22,25 @@ const (
bytesPerMB = 1024 * 1024
)
// ExtractFileTexts 从 ConsultItem 列表中提取文件内容
func ExtractFileTexts(ctx context.Context, consult []dto.ConsultItem) map[string]string {
// ExtractFileTexts 从 ConsultItem 列表中提取文件内容,返回拼接文本
func ExtractFileTexts(ctx context.Context, consult []dto.ConsultItem) string {
urls := make([]string, 0, len(consult))
for _, item := range consult {
if item.Url != "" {
urls = append(urls, item.Url)
}
}
return FetchFileTexts(ctx, urls)
return FetchFileTextsAsString(ctx, urls)
}
// FetchFileTexts 从 URL 列表获取文件内容,支持 zip 内文件
func FetchFileTexts(ctx context.Context, urls []string) map[string]string {
result := make(map[string]string)
// FetchFileTextsAsString 从 URL 列表获取文件内容,拼接为字符串
func FetchFileTextsAsString(ctx context.Context, urls []string) string {
if len(urls) == 0 {
return result
return ""
}
client := createHTTPClient(ctx, "userFiles.httpTimeoutSec", 8)
var builder strings.Builder
for _, rawURL := range urls {
url := util.SanitizeURL(rawURL)
@@ -50,23 +49,19 @@ func FetchFileTexts(ctx context.Context, urls []string) map[string]string {
}
if util.IsZipExtension(url) {
mergeMap(result, fetchZipFileTexts(ctx, client, url))
for _, text := range fetchZipFileTexts(ctx, client, url) {
builder.WriteString(text)
builder.WriteString("\n")
}
continue
}
if text := fetchAndCleanFileContent(ctx, client, url); text != "" {
result[url] = text
builder.WriteString(fmt.Sprintf("【文件:%s】\n%s\n", url, text))
}
}
return result
}
// mergeMap 合并 map
func mergeMap(dst, src map[string]string) {
for k, v := range src {
dst[k] = v
}
return builder.String()
}
// fetchAndCleanFileContent 获取并清理文件内容