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)
|
||||
@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<*> {
|
||||
|
||||
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(
|
||||
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(
|
||||
role = ChatRole.User,
|
||||
@ -91,6 +109,7 @@ class DietController(private val dietRepository: DietRepository) {
|
||||
|
||||
val openai = OpenAIChat(
|
||||
messages = messages,
|
||||
//modelName = "gpt-3.5-turbo",
|
||||
modelName = "gpt-4",
|
||||
temperature = 0.9
|
||||
)
|
||||
@ -112,15 +131,10 @@ class DietController(private val dietRepository: DietRepository) {
|
||||
if ( result == null ) {
|
||||
return ResponseEntity.badRequest().build<String>()
|
||||
}
|
||||
val now = LocalDateTime.now()
|
||||
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
|
||||
val todayString = now.format(formatter)
|
||||
val diet: Diet = Diet(
|
||||
dietUserId = dietUserId,
|
||||
dietText = result!!,
|
||||
startDate = todayString,
|
||||
premium = 1
|
||||
)
|
||||
|
||||
diet.dietText = result!!
|
||||
diet.startDate = todayString
|
||||
diet.premium = 1
|
||||
return ResponseEntity.ok().body(dietRepository.save(diet))
|
||||
}
|
||||
}
|
@ -10,9 +10,9 @@ import org.jetbrains.annotations.NotNull
|
||||
data class Diet (
|
||||
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Expose val dietId: 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 val premium: Int = 0,
|
||||
@Expose @get: NotNull var premium: Int = 0,
|
||||
) {
|
||||
@OneToMany(cascade = [(CascadeType.ALL)], fetch = FetchType.EAGER, mappedBy = "diet")
|
||||
@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.get
|
||||
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.*
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertNotNull
|
||||
|
||||
|
||||
@ExtendWith(SpringExtension::class)
|
||||
@ -164,6 +166,13 @@ class DietTest {
|
||||
dietRepository.delete(newDiet2)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `find the last empty diet successfully`() {
|
||||
val diet: Diet? = dietRepository.findTheLastEmptyDiet(2)
|
||||
assertNotNull(diet)
|
||||
assertEquals(diet.premium, 1)
|
||||
}
|
||||
|
||||
//@Test
|
||||
fun `generate premium diet successfully`() {
|
||||
|
||||
@ -173,7 +182,7 @@ class DietTest {
|
||||
"- Allergiák: olajos magvak\n" +
|
||||
"- Preferált ételek: magyar konyha\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" +
|
||||
"- Ebéd és vacsora megegyezik. \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" +
|
||||
"{ \"DIET\": [\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" +
|
||||
"\"quantities\":[<quantities for each mealName in gramms>],\n" +
|
||||
"\"calories\":[<calorie values for each mealName>],\n" +
|
||||
"}, \"sumCal\":double\n" +
|
||||
//"\"quantities\":[<quantities for each mealName in gramms>],\n" +
|
||||
//"\"calories\":[<calorie values for each mealName>],\n" +
|
||||
"}" +
|
||||
"]}"
|
||||
|
||||
mockMvc.perform(
|
||||
|
Loading…
Reference in New Issue
Block a user