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 += "\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