diff --git a/app/service/productDescriptionService/productDescriptionService.go b/app/service/productDescriptionService/productDescriptionService.go
index 998004a..61c614b 100644
--- a/app/service/productDescriptionService/productDescriptionService.go
+++ b/app/service/productDescriptionService/productDescriptionService.go
@@ -113,6 +113,7 @@ func (s *ProductDescriptionService) TranslateProductDescription(userID uint, pro
if err != nil {
return nil, fmt.Errorf("database error: %w", err)
}
+ ProductDescription.LangID = productToLangID
// we translate all changeable fields, and we keep the exact same HTML structure in relevant fields.
lang, err := langsService.LangSrv.GetLanguageById(productToLangID)
@@ -120,42 +121,34 @@ func (s *ProductDescriptionService) TranslateProductDescription(userID uint, pro
return nil, err
}
- request := "Translate to " + lang.ISOCode + " without changing the html structure."
- request += "\n\n"
- request += ProductDescription.Description
- request += "\n\n"
- request += "Remember: translate to " + lang.ISOCode + " without changing the html structure."
- request += "\n\n"
- request += ProductDescription.DescriptionShort
- request += "\n\n"
- request += "Remember: translate to " + lang.ISOCode + " without changing the html structure."
- request += "\n\n"
- request += ProductDescription.MetaDescription
- request += "\n\n"
- request += "Remember: translate to " + lang.ISOCode + " without changing the html structure."
- request += "\n\n"
- request += ProductDescription.MetaTitle
- request += "\n\n"
- request += "Remember: translate to " + lang.ISOCode + " without changing the html structure."
- request += "\n\n"
- request += ProductDescription.Name
- request += "\n\n"
- request += "Remember: translate to " + lang.ISOCode + " without changing the html structure."
- request += "\n\n"
- request += ProductDescription.AvailableNow
- request += "\n\n"
- request += "Remember: translate to " + lang.ISOCode + " without changing the html structure."
- request += "\n\n"
- request += ProductDescription.AvailableLater
- request += "\n\n"
- request += "Remember: translate to " + lang.ISOCode + " without changing the html structure."
- request += "\n\n"
- request += ProductDescription.Usage
- request += ""
+ fields := []*string{&ProductDescription.Description,
+ &ProductDescription.DescriptionShort,
+ &ProductDescription.MetaDescription,
+ &ProductDescription.MetaTitle,
+ &ProductDescription.Name,
+ &ProductDescription.AvailableNow,
+ &ProductDescription.AvailableLater,
+ &ProductDescription.Usage,
+ }
+ keys := []string{"translation_of_product_description",
+ "translation_of_product_short_description",
+ "translation_of_product_meta_description",
+ "translation_of_product_meta_title",
+ "translation_of_product_name",
+ "translation_of_product_available_now",
+ "translation_of_product_available_later",
+ "translation_of_product_usage",
+ }
+ request := "Translate to " + lang.ISOCode + " without changing the html structure.\n"
+ for i := 0; i < len(keys); i++ {
+ request += "\n<" + keys[i] + ">"
+ request += *fields[i]
+ request += "" + keys[i] + ">\n"
+ }
request = cleanForPrompt(request)
- openai_response, err := s.client.Responses.New(context.Background(), responses.ResponseNewParams{
+ openai_response, _ := s.client.Responses.New(context.Background(), responses.ResponseNewParams{
Input: responses.ResponseNewParamsInputUnion{OfString: openai.String(request)},
Model: openai.ChatModelGPT4_1Mini,
// Model: openai.ChatModelGPT4_1Nano,
@@ -163,59 +156,14 @@ func (s *ProductDescriptionService) TranslateProductDescription(userID uint, pro
if openai_response.Status != "completed" {
return nil, responseErrors.ErrOpenAIResponseFail
}
- output := openai_response.OutputText()
- // for testing purposes
- // fi, err := os.ReadFile("/home/daniel/coding/work/b2b/app/service/productDescriptionService/test_out.txt") // just pass the file name
- // output := string(fi)
-
- success, resolution := resolveResponse(ProductDescription.Description, output, "translation_of_product_description")
- if !success {
- return nil, responseErrors.ErrOpenAIBadOutput
+ for i := 0; i < len(keys); i++ {
+ success, resolution := resolveResponse(*fields[i], openai_response.OutputText(), keys[i])
+ if !success {
+ return nil, responseErrors.ErrOpenAIBadOutput
+ }
+ *fields[i] = resolution
}
- ProductDescription.Description = resolution
-
- success, resolution = resolveResponse(ProductDescription.DescriptionShort, output, "translation_of_product_short_description")
- if !success {
- return nil, responseErrors.ErrOpenAIBadOutput
- }
- ProductDescription.DescriptionShort = resolution
-
- success, resolution = resolveResponse(ProductDescription.MetaDescription, output, "translation_of_product_meta_description")
- if !success {
- return nil, responseErrors.ErrOpenAIBadOutput
- }
- ProductDescription.MetaDescription = resolution
-
- success, resolution = resolveResponse(ProductDescription.MetaTitle, output, "translation_of_product_meta_title")
- if !success {
- return nil, responseErrors.ErrOpenAIBadOutput
- }
- ProductDescription.MetaTitle = resolution
-
- success, resolution = resolveResponse(ProductDescription.Name, output, "translation_of_product_name")
- if !success {
- return nil, responseErrors.ErrOpenAIBadOutput
- }
- ProductDescription.Name = resolution
-
- success, resolution = resolveResponse(ProductDescription.AvailableNow, output, "translation_of_display_text_available_now")
- if !success {
- return nil, responseErrors.ErrOpenAIBadOutput
- }
- ProductDescription.AvailableNow = resolution
-
- success, resolution = resolveResponse(ProductDescription.AvailableLater, output, "translation_of_display_text_available_later")
- if !success {
- return nil, responseErrors.ErrOpenAIBadOutput
- }
- ProductDescription.AvailableLater = resolution
-
- success, resolution = resolveResponse(ProductDescription.Usage, output, "translation_of_product_usage")
- if !success {
- return nil, responseErrors.ErrOpenAIBadOutput
- }
- ProductDescription.Usage = resolution
return &ProductDescription, nil
}
diff --git a/tmp/build-errors.log b/tmp/build-errors.log
index c2e77b2..f3df308 100644
--- a/tmp/build-errors.log
+++ b/tmp/build-errors.log
@@ -1 +1 @@
-exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1
\ No newline at end of file
+exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1
\ No newline at end of file
diff --git a/tmp/main b/tmp/main
index 0be4fdc..b145b96 100755
Binary files a/tmp/main and b/tmp/main differ