v1.2.8.1 premium diet generation modif
This commit is contained in:
parent
e3182c210c
commit
8b0e6fe6c3
1
src/deploy/diet4you/build_api
Executable file
1
src/deploy/diet4you/build_api
Executable file
@ -0,0 +1 @@
|
|||||||
|
docker buildx build --platform linux/amd64 --no-cache -t diet4you_api -f Dockerfile .
|
@ -75,9 +75,27 @@ class DietController(private val dietRepository: DietRepository) {
|
|||||||
@OptIn(BetaOpenAI::class, DelicateCoroutinesApi::class)
|
@OptIn(BetaOpenAI::class, DelicateCoroutinesApi::class)
|
||||||
@PostMapping("/diet/generate_premium/{dietUserId}", produces = [MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8"])
|
@PostMapping("/diet/generate_premium/{dietUserId}", produces = [MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8"])
|
||||||
fun generatePremiumDiet(@PathVariable dietUserId: Long, @RequestBody input: String, @Value("\${openai.key}") openaiKey: String): ResponseEntity<*> {
|
fun generatePremiumDiet(@PathVariable dietUserId: Long, @RequestBody input: String, @Value("\${openai.key}") openaiKey: String): ResponseEntity<*> {
|
||||||
|
|
||||||
|
val now = LocalDateTime.now()
|
||||||
|
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
|
||||||
|
val todayString = now.format(formatter)
|
||||||
|
var diet: Diet? = dietRepository.findTheLastEmptyDiet(dietUserId)
|
||||||
|
if ( diet == null ) {
|
||||||
|
diet = Diet(
|
||||||
|
dietUserId = dietUserId,
|
||||||
|
dietText = "",
|
||||||
|
startDate = todayString,
|
||||||
|
premium = 0
|
||||||
|
)
|
||||||
|
diet = dietRepository.save(diet)
|
||||||
|
}
|
||||||
val systemMsg = ChatMessage(
|
val systemMsg = ChatMessage(
|
||||||
role = ChatRole.System,
|
role = ChatRole.System,
|
||||||
content = "Te egy táplálkozási szakértő vagy"
|
content = "Te egy táplálkozási szakértő vagy. A feladat mindig 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 userMsg = ChatMessage(
|
val userMsg = ChatMessage(
|
||||||
role = ChatRole.User,
|
role = ChatRole.User,
|
||||||
@ -91,6 +109,7 @@ class DietController(private val dietRepository: DietRepository) {
|
|||||||
|
|
||||||
val openai = OpenAIChat(
|
val openai = OpenAIChat(
|
||||||
messages = messages,
|
messages = messages,
|
||||||
|
//modelName = "gpt-3.5-turbo",
|
||||||
modelName = "gpt-4",
|
modelName = "gpt-4",
|
||||||
temperature = 0.9
|
temperature = 0.9
|
||||||
)
|
)
|
||||||
@ -112,15 +131,10 @@ class DietController(private val dietRepository: DietRepository) {
|
|||||||
if ( result == null ) {
|
if ( result == null ) {
|
||||||
return ResponseEntity.badRequest().build<String>()
|
return ResponseEntity.badRequest().build<String>()
|
||||||
}
|
}
|
||||||
val now = LocalDateTime.now()
|
|
||||||
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
|
diet.dietText = result!!
|
||||||
val todayString = now.format(formatter)
|
diet.startDate = todayString
|
||||||
val diet: Diet = Diet(
|
diet.premium = 1
|
||||||
dietUserId = dietUserId,
|
|
||||||
dietText = result!!,
|
|
||||||
startDate = todayString,
|
|
||||||
premium = 1
|
|
||||||
)
|
|
||||||
return ResponseEntity.ok().body(dietRepository.save(diet))
|
return ResponseEntity.ok().body(dietRepository.save(diet))
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -10,9 +10,9 @@ import org.jetbrains.annotations.NotNull
|
|||||||
data class Diet (
|
data class Diet (
|
||||||
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Expose val dietId: Long = 0,
|
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Expose val dietId: Long = 0,
|
||||||
@Expose @get: NotNull val dietUserId: Long = 0,
|
@Expose @get: NotNull val dietUserId: Long = 0,
|
||||||
@Expose @get: NotNull val dietText: String = "",
|
@Expose @get: NotNull var dietText: String = "",
|
||||||
@Expose @get: NotNull var startDate: String = "",
|
@Expose @get: NotNull var startDate: String = "",
|
||||||
@Expose @get: NotNull val premium: Int = 0,
|
@Expose @get: NotNull var premium: Int = 0,
|
||||||
) {
|
) {
|
||||||
@OneToMany(cascade = [(CascadeType.ALL)], fetch = FetchType.EAGER, mappedBy = "diet")
|
@OneToMany(cascade = [(CascadeType.ALL)], fetch = FetchType.EAGER, mappedBy = "diet")
|
||||||
@Fetch(value = FetchMode.SUBSELECT)
|
@Fetch(value = FetchMode.SUBSELECT)
|
||||||
|
@ -19,6 +19,8 @@ import org.springframework.test.web.servlet.MvcResult
|
|||||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders
|
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders
|
||||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
|
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
|
||||||
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.*
|
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.*
|
||||||
|
import kotlin.test.assertEquals
|
||||||
|
import kotlin.test.assertNotNull
|
||||||
|
|
||||||
|
|
||||||
@ExtendWith(SpringExtension::class)
|
@ExtendWith(SpringExtension::class)
|
||||||
@ -164,6 +166,13 @@ class DietTest {
|
|||||||
dietRepository.delete(newDiet2)
|
dietRepository.delete(newDiet2)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `find the last empty diet successfully`() {
|
||||||
|
val diet: Diet? = dietRepository.findTheLastEmptyDiet(2)
|
||||||
|
assertNotNull(diet)
|
||||||
|
assertEquals(diet.premium, 1)
|
||||||
|
}
|
||||||
|
|
||||||
//@Test
|
//@Test
|
||||||
fun `generate premium diet successfully`() {
|
fun `generate premium diet successfully`() {
|
||||||
|
|
||||||
@ -173,7 +182,7 @@ class DietTest {
|
|||||||
"- Allergiák: olajos magvak\n" +
|
"- Allergiák: olajos magvak\n" +
|
||||||
"- Preferált ételek: magyar konyha\n" +
|
"- Preferált ételek: magyar konyha\n" +
|
||||||
"- Ezek az ételek nem szerepelhetnek az étrendben: főzelékek\n" +
|
"- Ezek az ételek nem szerepelhetnek az étrendben: főzelékek\n" +
|
||||||
"- napi kalóriacél: 2100 kCal\n" +
|
//"- napi kalóriacél: 2100 kCal\n" +
|
||||||
"- Étel frekvencia: reggeli, ebéd, uzsonna, vacsora\n" +
|
"- Étel frekvencia: reggeli, ebéd, uzsonna, vacsora\n" +
|
||||||
"- Ebéd és vacsora megegyezik. \n" +
|
"- Ebéd és vacsora megegyezik. \n" +
|
||||||
"- ne legyen ismétlődés az ételeknél\n" +
|
"- ne legyen ismétlődés az ételeknél\n" +
|
||||||
@ -181,11 +190,11 @@ class DietTest {
|
|||||||
"A választ ebben a formátumban add meg:\n" +
|
"A választ ebben a formátumban add meg:\n" +
|
||||||
"{ \"DIET\": [\n" +
|
"{ \"DIET\": [\n" +
|
||||||
"{\"nameDay\": enum<monday, tuesday, wednesday...>\n" +
|
"{\"nameDay\": enum<monday, tuesday, wednesday...>\n" +
|
||||||
"\"mealTime\":enum<breakfast, lunch+dinner, snack>\n" +
|
"\"mealTime\":enum<breakfast, lunch, snack, dinner>\n" +
|
||||||
"\"meals\":[<mealNames in Hungarian>],\n" +
|
"\"meals\":[<mealNames in Hungarian>],\n" +
|
||||||
"\"quantities\":[<quantities for each mealName in gramms>],\n" +
|
//"\"quantities\":[<quantities for each mealName in gramms>],\n" +
|
||||||
"\"calories\":[<calorie values for each mealName>],\n" +
|
//"\"calories\":[<calorie values for each mealName>],\n" +
|
||||||
"}, \"sumCal\":double\n" +
|
"}" +
|
||||||
"]}"
|
"]}"
|
||||||
|
|
||||||
mockMvc.perform(
|
mockMvc.perform(
|
||||||
|
Loading…
Reference in New Issue
Block a user