v1.2.9.3 fix on generated diet JSON handling

This commit is contained in:
bossanyit 2023-06-15 16:31:22 +02:00
parent 4362988c4a
commit 7ea9164f66
2 changed files with 186 additions and 177 deletions

View File

@ -82,7 +82,9 @@ class DietController(private val dietRepository: DietRepository, private val mea
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
val todayString = now.format(formatter) val todayString = now.format(formatter)
var diet: Diet? = dietRepository.findTheLastEmptyDiet(dietUserId) var diet: Diet? = dietRepository.findTheLastEmptyDiet(dietUserId)
if ( diet == null ) { val dietSaved: Diet?
this.openAiKey = openaiKey
if (diet == null) {
diet = Diet( diet = Diet(
dietUserId = dietUserId, dietUserId = dietUserId,
dietText = "", dietText = "",
@ -91,189 +93,195 @@ class DietController(private val dietRepository: DietRepository, private val mea
generating = 1 generating = 1
) )
diet = dietRepository.save(diet) diet = dietRepository.save(diet)
println("new diet: $diet.dietId")
}
var result: String? 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"
val deferred = GlobalScope.async { if (!test) {
OpenAIController().chat( val systemInput =
modelName = "gpt-4", "Te egy táplálkozási szakértő vagy. A feladat egy étrend elkészítése ebben a 3 lépésben:\n" +
temperature = 0.9, "\n" +
userInput = input, "1. Vizsgáld meg az input adatokat, és készítsd el az étrendet\n" +
systemInput = systemInput, "2. Ellenőrizd az ételeket, hogy tényleg létezik-e olyan, és megfelel az input adatok feltételeinek\n" +
openaiKey = openaiKey "3. Ellenőrizd a kimeneti formátumot. Csak a megadott JSON kimeneti formátumban válaszolj, semmilyen más formátum nem elfogadott.\n"
)
}
runBlocking { val deferred = GlobalScope.async {
result = deferred.await().toString() OpenAIController().chat(
result = extractJson(result!!) 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<String>()
}
} 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<String>() diet.dietText = result!!
} diet.startDate = todayString
diet.premium = 1
dietSaved = dietRepository.save(diet)
} else { } else {
result = "{\n" + dietSaved = diet
" \"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" +
"}"
} }
val gson = Gson() val gson = Gson()
diet.dietText = result!!
diet.startDate = todayString
diet.premium = 1
val dietSaved = dietRepository.save(diet)
val dietJson = JSONObject(diet.dietText) val dietJson = JSONObject(diet.dietText)
val mealPlansJson = dietJson.getJSONArray("DIET") val mealPlansJson = dietJson.getJSONArray("DIET")

View File

@ -168,11 +168,12 @@ class DietTest {
dietRepository.delete(newDiet2) dietRepository.delete(newDiet2)
} }
//@Test @Test
fun `find the last empty diet successfully`() { fun `find the last empty diet successfully`() {
val diet: Diet? = dietRepository.findTheLastEmptyDiet(2) val diet: Diet? = dietRepository.findTheLastEmptyDiet(2)
assertNotNull(diet) assertNotNull(diet)
assertEquals(diet.premium, 1) assertEquals(diet.premium, 1)
println("DietID: ${diet.dietId}")
} }
@Test @Test
@ -200,7 +201,7 @@ class DietTest {
"]}" "]}"
mockMvc.perform( mockMvc.perform(
MockMvcRequestBuilders.post("/api/diet/generate_premium/2/true") MockMvcRequestBuilders.post("/api/diet/generate_premium/2/false")
.contentType(MediaType.APPLICATION_JSON) .contentType(MediaType.APPLICATION_JSON)
.header("Authorization", "Bearer $authToken") .header("Authorization", "Bearer $authToken")
.content(input) .content(input)