| 
									
										
										
										
											2024-09-23 04:04:36 -05:00
										 |  |  | <template> | 
					
						
							|  |  |  |   <v-container class="pa-0"> | 
					
						
							|  |  |  |     <v-container> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |       <BaseCardSectionTitle :title="$t('admin.debug-openai-services')"> | 
					
						
							| 
									
										
										
										
											2024-09-23 04:04:36 -05:00
										 |  |  |         {{ $t('admin.debug-openai-services-description') }} | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         <br> | 
					
						
							|  |  |  |         <DocLink | 
					
						
							|  |  |  |           class="mt-2" | 
					
						
							|  |  |  |           link="/documentation/getting-started/installation/open-ai" | 
					
						
							|  |  |  |         /> | 
					
						
							| 
									
										
										
										
											2024-09-23 04:04:36 -05:00
										 |  |  |       </BaseCardSectionTitle> | 
					
						
							|  |  |  |     </v-container> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |     <v-form | 
					
						
							|  |  |  |       ref="uploadForm" | 
					
						
							|  |  |  |       @submit.prevent="testOpenAI" | 
					
						
							|  |  |  |     > | 
					
						
							| 
									
										
										
										
											2024-09-23 04:04:36 -05:00
										 |  |  |       <div> | 
					
						
							|  |  |  |         <v-card-text> | 
					
						
							|  |  |  |           <v-container class="pa-0"> | 
					
						
							|  |  |  |             <v-row> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |               <v-col | 
					
						
							|  |  |  |                 cols="auto" | 
					
						
							|  |  |  |                 align-self="center" | 
					
						
							|  |  |  |               > | 
					
						
							| 
									
										
										
										
											2024-09-23 04:04:36 -05:00
										 |  |  |                 <AppButtonUpload | 
					
						
							|  |  |  |                   v-if="!uploadedImage" | 
					
						
							|  |  |  |                   class="ml-auto" | 
					
						
							|  |  |  |                   url="none" | 
					
						
							|  |  |  |                   file-name="image" | 
					
						
							|  |  |  |                   accept="image/*" | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |                   :text="$t('recipe.upload-image')" | 
					
						
							| 
									
										
										
										
											2024-09-23 04:04:36 -05:00
										 |  |  |                   :text-btn="false" | 
					
						
							|  |  |  |                   :post="false" | 
					
						
							|  |  |  |                   @uploaded="uploadImage" | 
					
						
							|  |  |  |                 /> | 
					
						
							|  |  |  |                 <v-btn | 
					
						
							|  |  |  |                   v-if="!!uploadedImage" | 
					
						
							|  |  |  |                   color="error" | 
					
						
							|  |  |  |                   @click="clearImage" | 
					
						
							|  |  |  |                 > | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |                   <v-icon start> | 
					
						
							|  |  |  |                     {{ $globals.icons.close }} | 
					
						
							|  |  |  |                   </v-icon> | 
					
						
							|  |  |  |                   {{ $t("recipe.remove-image") }} | 
					
						
							| 
									
										
										
										
											2024-09-23 04:04:36 -05:00
										 |  |  |                 </v-btn> | 
					
						
							|  |  |  |               </v-col> | 
					
						
							|  |  |  |               <v-spacer /> | 
					
						
							|  |  |  |             </v-row> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |             <v-row | 
					
						
							|  |  |  |               v-if="uploadedImage && uploadedImagePreviewUrl" | 
					
						
							|  |  |  |               style="max-width: 25%;" | 
					
						
							|  |  |  |             > | 
					
						
							| 
									
										
										
										
											2024-09-23 04:04:36 -05:00
										 |  |  |               <v-spacer /> | 
					
						
							|  |  |  |               <v-col cols="12"> | 
					
						
							|  |  |  |                 <v-img :src="uploadedImagePreviewUrl" /> | 
					
						
							|  |  |  |               </v-col> | 
					
						
							|  |  |  |               <v-spacer /> | 
					
						
							|  |  |  |             </v-row> | 
					
						
							|  |  |  |           </v-container> | 
					
						
							|  |  |  |         </v-card-text> | 
					
						
							|  |  |  |         <v-card-actions> | 
					
						
							|  |  |  |           <BaseButton | 
					
						
							|  |  |  |             type="submit" | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |             :text="$t('admin.run-test')" | 
					
						
							| 
									
										
										
										
											2024-09-23 04:04:36 -05:00
										 |  |  |             :icon="$globals.icons.check" | 
					
						
							|  |  |  |             :loading="loading" | 
					
						
							|  |  |  |             class="ml-auto" | 
					
						
							|  |  |  |           /> | 
					
						
							|  |  |  |         </v-card-actions> | 
					
						
							|  |  |  |       </div> | 
					
						
							|  |  |  |     </v-form> | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |     <v-divider | 
					
						
							|  |  |  |       v-if="response" | 
					
						
							|  |  |  |       class="mt-4" | 
					
						
							|  |  |  |     /> | 
					
						
							|  |  |  |     <v-container | 
					
						
							|  |  |  |       v-if="response" | 
					
						
							|  |  |  |       class="ma-0 pa-0" | 
					
						
							|  |  |  |     > | 
					
						
							| 
									
										
										
										
											2024-09-23 04:04:36 -05:00
										 |  |  |       <v-card-title> {{ $t('admin.test-results') }} </v-card-title> | 
					
						
							|  |  |  |       <v-card-text> {{ response }} </v-card-text> | 
					
						
							|  |  |  |     </v-container> | 
					
						
							|  |  |  |   </v-container> | 
					
						
							|  |  |  | </template> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <script lang="ts"> | 
					
						
							|  |  |  | import { useAdminApi } from "~/composables/api"; | 
					
						
							|  |  |  | import { alert } from "~/composables/use-toast"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  | export default defineNuxtComponent({ | 
					
						
							| 
									
										
										
										
											2024-09-23 04:04:36 -05:00
										 |  |  |   setup() { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |     definePageMeta({ | 
					
						
							|  |  |  |       layout: "admin", | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-23 04:04:36 -05:00
										 |  |  |     const api = useAdminApi(); | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |     const i18n = useI18n(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Set page title
 | 
					
						
							|  |  |  |     useSeoMeta({ | 
					
						
							|  |  |  |       title: i18n.t("admin.debug-openai-services"), | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-23 04:04:36 -05:00
										 |  |  |     const loading = ref(false); | 
					
						
							|  |  |  |     const response = ref(""); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const uploadForm = ref<VForm | null>(null); | 
					
						
							|  |  |  |     const uploadedImage = ref<Blob | File>(); | 
					
						
							|  |  |  |     const uploadedImageName = ref<string>(""); | 
					
						
							|  |  |  |     const uploadedImagePreviewUrl = ref<string>(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function uploadImage(fileObject: File) { | 
					
						
							|  |  |  |       uploadedImage.value = fileObject; | 
					
						
							|  |  |  |       uploadedImageName.value = fileObject.name; | 
					
						
							|  |  |  |       uploadedImagePreviewUrl.value = URL.createObjectURL(fileObject); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function clearImage() { | 
					
						
							|  |  |  |       uploadedImage.value = undefined; | 
					
						
							|  |  |  |       uploadedImageName.value = ""; | 
					
						
							|  |  |  |       uploadedImagePreviewUrl.value = undefined; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     async function testOpenAI() { | 
					
						
							|  |  |  |       response.value = ""; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       loading.value = true; | 
					
						
							|  |  |  |       const { data } = await api.debug.debugOpenAI(uploadedImage.value); | 
					
						
							|  |  |  |       loading.value = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       if (!data) { | 
					
						
							|  |  |  |         alert.error("Unable to test OpenAI services"); | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |       } | 
					
						
							|  |  |  |       else { | 
					
						
							| 
									
										
										
										
											2024-09-23 04:04:36 -05:00
										 |  |  |         response.value = data.response || (data.success ? "Test Successful" : "Test Failed"); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return { | 
					
						
							|  |  |  |       loading, | 
					
						
							|  |  |  |       response, | 
					
						
							|  |  |  |       uploadForm, | 
					
						
							|  |  |  |       uploadedImage, | 
					
						
							|  |  |  |       uploadedImagePreviewUrl, | 
					
						
							|  |  |  |       uploadImage, | 
					
						
							|  |  |  |       clearImage, | 
					
						
							|  |  |  |       testOpenAI, | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | </script> |