From 7ea9164f661f7acbb569182c4cf9fe71bbf12823 Mon Sep 17 00:00:00 2001 From: bossanyit Date: Thu, 15 Jun 2023 16:31:22 +0200 Subject: [PATCH] v1.2.9.3 fix on generated diet JSON handling --- .../api/controller/diet/DietController.kt | 358 +++++++++--------- .../com/aitrainer/api/test/diet/DietTest.kt | 5 +- 2 files changed, 186 insertions(+), 177 deletions(-) diff --git a/src/main/kotlin/com/aitrainer/api/controller/diet/DietController.kt b/src/main/kotlin/com/aitrainer/api/controller/diet/DietController.kt index 79c26ff..5ebfdf1 100644 --- a/src/main/kotlin/com/aitrainer/api/controller/diet/DietController.kt +++ b/src/main/kotlin/com/aitrainer/api/controller/diet/DietController.kt @@ -82,7 +82,9 @@ class DietController(private val dietRepository: DietRepository, private val mea val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") val todayString = now.format(formatter) var diet: Diet? = dietRepository.findTheLastEmptyDiet(dietUserId) - if ( diet == null ) { + val dietSaved: Diet? + this.openAiKey = openaiKey + if (diet == null) { diet = Diet( dietUserId = dietUserId, dietText = "", @@ -91,189 +93,195 @@ class DietController(private val dietRepository: DietRepository, private val mea generating = 1 ) diet = dietRepository.save(diet) - println("new diet: $diet.dietId") - } - var result: String? - this.openAiKey = openaiKey - if ( !test) { - val systemInput = "Te egy táplálkozási szakértő vagy. A feladat egy étrend elkészítése ebben a 3 lépésben:\n" + - "\n" + - "1. Vizsgáld meg az input adatokat, és készítsd el az étrendet\n" + - "2. Ellenőrizd az ételeket, hogy tényleg létezik-e olyan, és megfelel az input adatok feltételeinek\n" + - "3. Ellenőrizd a kimeneti formátumot. Csak a megadott kimeneti formátumban válaszolj" + var result: String? - val deferred = GlobalScope.async { - OpenAIController().chat( - modelName = "gpt-4", - temperature = 0.9, - userInput = input, - systemInput = systemInput, - openaiKey = openaiKey - ) - } - runBlocking { - result = deferred.await().toString() - result = extractJson(result!!) + if (!test) { + val systemInput = + "Te egy táplálkozási szakértő vagy. A feladat egy étrend elkészítése ebben a 3 lépésben:\n" + + "\n" + + "1. Vizsgáld meg az input adatokat, és készítsd el az étrendet\n" + + "2. Ellenőrizd az ételeket, hogy tényleg létezik-e olyan, és megfelel az input adatok feltételeinek\n" + + "3. Ellenőrizd a kimeneti formátumot. Csak a megadott JSON kimeneti formátumban válaszolj, semmilyen más formátum nem elfogadott.\n" + + + val deferred = GlobalScope.async { + OpenAIController().chat( + modelName = "gpt-4", + temperature = 0.9, + userInput = input, + systemInput = systemInput, + openaiKey = openaiKey + ) + } + runBlocking { + result = deferred.await().toString() + result = extractJson(result!!) + println("extracted json: $result") + } + + if (result == null || result!!.isEmpty()) { + return ResponseEntity.badRequest().build() + } + } else { + result = "{\n" + + " \"DIET\": [\n" + + " {\n" + + " \"nameDay\": \"monday\",\n" + + " \"mealTime\": \"breakfast\",\n" + + " \"meals\": [\"zabkása\", \"mandulatej\", \"málna\", \"méz\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"monday\",\n" + + " \"mealTime\": \"lunch\",\n" + + " \"meals\": [\"grillezett csirkemell\", \"quinoa\", \"spenót\", \"cherry paradicsom\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"monday\",\n" + + " \"mealTime\": \"snack\",\n" + + " \"meals\": [\"sárgarépa\", \"hummusz\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"monday\",\n" + + " \"mealTime\": \"dinner\",\n" + + " \"meals\": [\"csicseriborsó-saláta\", \"paprika\", \"paradicsom\", \"uborka\", \"olívaolaj\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"tuesday\",\n" + + " \"mealTime\": \"breakfast\",\n" + + " \"meals\": [\"rántotta\", \"sonka\", \"paradicsom\", \"gluténmentes kenyér\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"tuesday\",\n" + + " \"mealTime\": \"lunch\",\n" + + " \"meals\": [\"grillezett lazac\", \"barnarizs\", \"zöldbab\", \"citrom\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"tuesday\",\n" + + " \"mealTime\": \"snack\",\n" + + " \"meals\": [\"natúr joghurt (laktózmentes)\", \"méz\", \"dió\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"tuesday\",\n" + + " \"mealTime\": \"dinner\",\n" + + " \"meals\": [\"paradicsomos quinoa\", \"spárga\", \"tonhal (konzerv)\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"wednesday\",\n" + + " \"mealTime\": \"breakfast\",\n" + + " \"meals\": [\"zabkása\", \"mandulatej\", \"eper\", \"magok (napraforgó, tökmag)\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"wednesday\",\n" + + " \"mealTime\": \"lunch\",\n" + + " \"meals\": [\"töltött paprika\", \"rizs\", \"sovány darált pulykahús\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"wednesday\",\n" + + " \"mealTime\": \"snack\",\n" + + " \"meals\": [\"cékla\", \"avokádó\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"wednesday\",\n" + + " \"mealTime\": \"dinner\",\n" + + " \"meals\": [\"kókusztejes csirke\", \"spenót\", \"barnarizs\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"thursday\",\n" + + " \"mealTime\": \"breakfast\",\n" + + " \"meals\": [\"natúr joghurt (laktózmentes)\", \"mogyoróvaj\", \"banán\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"thursday\",\n" + + " \"mealTime\": \"lunch\",\n" + + " \"meals\": [\"görög saláta\", \"olívaolaj\", \"feta sajt (laktózmentes)\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"thursday\",\n" + + " \"mealTime\": \"snack\",\n" + + " \"meals\": [\"mandula\", \"szárított füge\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"thursday\",\n" + + " \"mealTime\": \"dinner\",\n" + + " \"meals\": [\"grillezett hal\", \"brokkoli\", \"kukoricalisztből készült polenta\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"friday\",\n" + + " \"mealTime\": \"breakfast\",\n" + + " \"meals\": [\"gluténmentes müzli\", \"mandulatej\", \"áfonya\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"friday\",\n" + + " \"mealTime\": \"lunch\",\n" + + " \"meals\": [\"lecsó\", \"kolbász (gluténmentes)\", \"gluténmentes kenyér\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"friday\",\n" + + " \"mealTime\": \"snack\",\n" + + " \"meals\": [\"yoghurt (lactose free)\", \"honey\", \"walnut\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"friday\",\n" + + " \"mealTime\": \"dinner\",\n" + + " \"meals\": [\"grillezett padlizsán\", \"couscous(gluten free)\", \"csicseriborsó\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"saturday\",\n" + + " \"mealTime\": \"breakfast\",\n" + + " \"meals\": [\"omlette\", \"sonka\", \"spenót\", \"gluténmentes kenyér\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"saturday\",\n" + + " \"mealTime\": \"lunch\",\n" + + " \"meals\": [\"húsgombóc\", \"paradicsomos mártás\", \"cukkinispirál\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"saturday\",\n" + + " \"mealTime\": \"snack\",\n" + + " \"meals\": [\"narancs\", \"keksz (gluténmentes)\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"saturday\",\n" + + " \"mealTime\": \"dinner\",\n" + + " \"meals\": [\"saláta\", \"paradicsom\", \"uborka\", \"pulykamell\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"sunday\",\n" + + " \"mealTime\": \"breakfast\",\n" + + " \"meals\": [\"zabkása\", \"mandulatej\", \"mazsola\", \"mogyoró\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"sunday\",\n" + + " \"mealTime\": \"lunch\",\n" + + " \"meals\": [\"grillezett csirkemell\", \"háromszínű quinoa\", \"répa\", \"zöldborsó\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"sunday\",\n" + + " \"mealTime\": \"snack\",\n" + + " \"meals\": [\"natúr joghurt (laktózmentes)\", \"zabpehely\", \"banán\"]\n" + + " },\n" + + " {\n" + + " \"nameDay\": \"sunday\",\n" + + " \"mealTime\": \"dinner\",\n" + + " \"meals\": [\"töltött gomba\", \"couscous(gluten free)\", \"paradicsomsalsa\"]\n" + + " }\n" + + " ]\n" + + "}" } - if (result == null || result!!.isEmpty()) { - return ResponseEntity.badRequest().build() - } + + diet.dietText = result!! + diet.startDate = todayString + diet.premium = 1 + + dietSaved = dietRepository.save(diet) } else { - result = "{\n" + - " \"DIET\": [\n" + - " {\n" + - " \"nameDay\": \"monday\",\n" + - " \"mealTime\": \"breakfast\",\n" + - " \"meals\": [\"zabkása\", \"mandulatej\", \"málna\", \"méz\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"monday\",\n" + - " \"mealTime\": \"lunch\",\n" + - " \"meals\": [\"grillezett csirkemell\", \"quinoa\", \"spenót\", \"cherry paradicsom\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"monday\",\n" + - " \"mealTime\": \"snack\",\n" + - " \"meals\": [\"sárgarépa\", \"hummusz\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"monday\",\n" + - " \"mealTime\": \"dinner\",\n" + - " \"meals\": [\"csicseriborsó-saláta\", \"paprika\", \"paradicsom\", \"uborka\", \"olívaolaj\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"tuesday\",\n" + - " \"mealTime\": \"breakfast\",\n" + - " \"meals\": [\"rántotta\", \"sonka\", \"paradicsom\", \"gluténmentes kenyér\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"tuesday\",\n" + - " \"mealTime\": \"lunch\",\n" + - " \"meals\": [\"grillezett lazac\", \"barnarizs\", \"zöldbab\", \"citrom\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"tuesday\",\n" + - " \"mealTime\": \"snack\",\n" + - " \"meals\": [\"natúr joghurt (laktózmentes)\", \"méz\", \"dió\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"tuesday\",\n" + - " \"mealTime\": \"dinner\",\n" + - " \"meals\": [\"paradicsomos quinoa\", \"spárga\", \"tonhal (konzerv)\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"wednesday\",\n" + - " \"mealTime\": \"breakfast\",\n" + - " \"meals\": [\"zabkása\", \"mandulatej\", \"eper\", \"magok (napraforgó, tökmag)\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"wednesday\",\n" + - " \"mealTime\": \"lunch\",\n" + - " \"meals\": [\"töltött paprika\", \"rizs\", \"sovány darált pulykahús\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"wednesday\",\n" + - " \"mealTime\": \"snack\",\n" + - " \"meals\": [\"cékla\", \"avokádó\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"wednesday\",\n" + - " \"mealTime\": \"dinner\",\n" + - " \"meals\": [\"kókusztejes csirke\", \"spenót\", \"barnarizs\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"thursday\",\n" + - " \"mealTime\": \"breakfast\",\n" + - " \"meals\": [\"natúr joghurt (laktózmentes)\", \"mogyoróvaj\", \"banán\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"thursday\",\n" + - " \"mealTime\": \"lunch\",\n" + - " \"meals\": [\"görög saláta\", \"olívaolaj\", \"feta sajt (laktózmentes)\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"thursday\",\n" + - " \"mealTime\": \"snack\",\n" + - " \"meals\": [\"mandula\", \"szárított füge\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"thursday\",\n" + - " \"mealTime\": \"dinner\",\n" + - " \"meals\": [\"grillezett hal\", \"brokkoli\", \"kukoricalisztből készült polenta\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"friday\",\n" + - " \"mealTime\": \"breakfast\",\n" + - " \"meals\": [\"gluténmentes müzli\", \"mandulatej\", \"áfonya\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"friday\",\n" + - " \"mealTime\": \"lunch\",\n" + - " \"meals\": [\"lecsó\", \"kolbász (gluténmentes)\", \"gluténmentes kenyér\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"friday\",\n" + - " \"mealTime\": \"snack\",\n" + - " \"meals\": [\"yoghurt (lactose free)\", \"honey\", \"walnut\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"friday\",\n" + - " \"mealTime\": \"dinner\",\n" + - " \"meals\": [\"grillezett padlizsán\", \"couscous(gluten free)\", \"csicseriborsó\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"saturday\",\n" + - " \"mealTime\": \"breakfast\",\n" + - " \"meals\": [\"omlette\", \"sonka\", \"spenót\", \"gluténmentes kenyér\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"saturday\",\n" + - " \"mealTime\": \"lunch\",\n" + - " \"meals\": [\"húsgombóc\", \"paradicsomos mártás\", \"cukkinispirál\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"saturday\",\n" + - " \"mealTime\": \"snack\",\n" + - " \"meals\": [\"narancs\", \"keksz (gluténmentes)\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"saturday\",\n" + - " \"mealTime\": \"dinner\",\n" + - " \"meals\": [\"saláta\", \"paradicsom\", \"uborka\", \"pulykamell\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"sunday\",\n" + - " \"mealTime\": \"breakfast\",\n" + - " \"meals\": [\"zabkása\", \"mandulatej\", \"mazsola\", \"mogyoró\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"sunday\",\n" + - " \"mealTime\": \"lunch\",\n" + - " \"meals\": [\"grillezett csirkemell\", \"háromszínű quinoa\", \"répa\", \"zöldborsó\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"sunday\",\n" + - " \"mealTime\": \"snack\",\n" + - " \"meals\": [\"natúr joghurt (laktózmentes)\", \"zabpehely\", \"banán\"]\n" + - " },\n" + - " {\n" + - " \"nameDay\": \"sunday\",\n" + - " \"mealTime\": \"dinner\",\n" + - " \"meals\": [\"töltött gomba\", \"couscous(gluten free)\", \"paradicsomsalsa\"]\n" + - " }\n" + - " ]\n" + - "}" + dietSaved = diet } - val gson = Gson() - diet.dietText = result!! - diet.startDate = todayString - diet.premium = 1 - val dietSaved = dietRepository.save(diet) val dietJson = JSONObject(diet.dietText) val mealPlansJson = dietJson.getJSONArray("DIET") diff --git a/src/test/kotlin/com/aitrainer/api/test/diet/DietTest.kt b/src/test/kotlin/com/aitrainer/api/test/diet/DietTest.kt index b320077..043fe4d 100644 --- a/src/test/kotlin/com/aitrainer/api/test/diet/DietTest.kt +++ b/src/test/kotlin/com/aitrainer/api/test/diet/DietTest.kt @@ -168,11 +168,12 @@ class DietTest { dietRepository.delete(newDiet2) } - //@Test + @Test fun `find the last empty diet successfully`() { val diet: Diet? = dietRepository.findTheLastEmptyDiet(2) assertNotNull(diet) assertEquals(diet.premium, 1) + println("DietID: ${diet.dietId}") } @Test @@ -200,7 +201,7 @@ class DietTest { "]}" mockMvc.perform( - MockMvcRequestBuilders.post("/api/diet/generate_premium/2/true") + MockMvcRequestBuilders.post("/api/diet/generate_premium/2/false") .contentType(MediaType.APPLICATION_JSON) .header("Authorization", "Bearer $authToken") .content(input)