diff --git a/internal/service/task.go b/internal/service/task.go index 4e42bb7..04c08e7 100644 --- a/internal/service/task.go +++ b/internal/service/task.go @@ -3,10 +3,10 @@ package service import ( "bytes" "context" + "encoding/json" "errors" "fmt" "io" - "mime/multipart" "net/http" "strings" @@ -151,19 +151,29 @@ func (svc *TaskService) ExportTask(ctx context.Context, req *task.ExportTaskRequ return nil, "", errors.New("markdown not found") } - // call http://localhost:8055/export - body := &bytes.Buffer{} - writer := multipart.NewWriter(body) - _ = writer.WriteField("markdown_input", markdown) - _ = writer.WriteField("type", req.Type) - writer.Close() + // 获取文件名(去掉扩展名) + filename := strings.TrimSuffix(recognitionTask.FileName, "."+strings.ToLower(strings.Split(recognitionTask.FileName, ".")[len(strings.Split(recognitionTask.FileName, "."))-1])) + if filename == "" { + filename = "texpixel" + } - httpReq, err := http.NewRequestWithContext(ctx, http.MethodPost, "https://cloud.texpixel.com:10443/doc_converter/v1/export", body) + // 构建 JSON 请求体 + requestBody := map[string]string{ + "markdown": markdown, + "filename": filename, + } + jsonData, err := json.Marshal(requestBody) + if err != nil { + log.Error(ctx, "func", "ExportTask", "msg", "json marshal failed", "error", err) + return nil, "", err + } + + httpReq, err := http.NewRequestWithContext(ctx, http.MethodPost, "https://cloud.texpixel.com:10443/doc_process/v1/convert/file", bytes.NewReader(jsonData)) if err != nil { log.Error(ctx, "func", "ExportTask", "msg", "create http request failed", "error", err) return nil, "", err } - httpReq.Header.Set("Content-Type", writer.FormDataContentType()) + httpReq.Header.Set("Content-Type", "application/json") client := &http.Client{} resp, err := client.Do(httpReq) @@ -184,16 +194,8 @@ func (svc *TaskService) ExportTask(ctx context.Context, req *task.ExportTaskRequ return nil, "", err } - // determine content type based on export type - var contentType string - switch req.Type { - case "pdf": - contentType = "application/pdf" - case "docx": - contentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document" - default: - contentType = "application/octet-stream" - } + // 新接口只返回 DOCX 格式 + contentType := "application/vnd.openxmlformats-officedocument.wordprocessingml.document" return fileData, contentType, nil }