change: Unified structure and added versioning prefix

This commit is contained in:
Jim Martens 2024-09-18 08:51:38 +02:00
parent 977e7d7008
commit bd095209d5
Signed by: 2martens
GPG Key ID: 47393ABD1F96B7C8
5 changed files with 39 additions and 11 deletions

View File

@ -1,7 +1,13 @@
package de.hbt.routing.controller
import de.hbt.geofox.gti.model.InitResponse
import de.hbt.routing.service.ChatService
import de.hbt.routing.service.helper.ConversationCache
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.media.Content
import io.swagger.v3.oas.annotations.media.Schema
import io.swagger.v3.oas.annotations.responses.ApiResponse
import io.swagger.v3.oas.annotations.tags.Tag
import mu.KotlinLogging
import org.springframework.http.HttpStatus
import org.springframework.http.ResponseEntity
@ -10,24 +16,45 @@ import org.springframework.web.bind.annotation.*
private val logger = KotlinLogging.logger {}
@RestController
@RequestMapping("/chat")
@RequestMapping("/v1/chat")
@Tag(name = "Route Chat", description = "all requests that support sending route requests")
class AppController(private val chatService: ChatService) {
data class ChatRequest(val requestId: String, val prompt: String)
data class ChatResponse(val requestId: String, val answer: String)
data class ConversationResponse(val requestId: String, val dialogues: List<ConversationCache.PromptAndAnswer>)
@Operation(
summary = "Send route request",
responses = [ApiResponse(
responseCode = "200",
description = "Route request successful",
content = [Content(
schema = Schema(implementation = ChatResponse::class)
)]
)]
)
@PostMapping("/send")
fun sendPrompt(@RequestBody request: ChatRequest): ResponseEntity<ChatResponse> {
return try {
val response = chatService.processPrompt(requestId = request.requestId, prompt = request.prompt)
ResponseEntity.ok(ChatResponse(response.requestId, response.response))
} catch (e: Exception) {
logger.error(e) { "Exception occured while processing request" }
logger.error(e) { "Exception occurred while processing request" }
ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(ChatResponse(request.requestId, "Error: ${e.message}"))
}
}
@Operation(
summary = "Retrieve conversation",
responses = [ApiResponse(
responseCode = "200",
description = "Conversation existed and is returned",
content = [Content(
schema = Schema(implementation = ConversationResponse::class)
)]
)]
)
@GetMapping("/conversation/{requestId}")
fun getConversation(@PathVariable requestId: String): ResponseEntity<ConversationResponse> {
return try {

View File

@ -1,6 +1,7 @@
package de.hbt.routing.gti
package de.hbt.routing.controller
import de.hbt.geofox.gti.model.InitResponse
import de.hbt.routing.service.GTIService
import io.swagger.v3.oas.annotations.Hidden
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.media.Content

View File

@ -8,7 +8,7 @@ import java.util.*
class ChatServiceImpl(private val conversationCache: ConversationCache) : ChatService {
override fun processPrompt(requestId: String, prompt: String): ChatService.Response {
val uuid = if (requestId.isBlank()) UUID.randomUUID().toString() else requestId
val uuid = requestId.ifBlank { UUID.randomUUID().toString() }
val mockResponse = "This is a mock response for prompt: $prompt"
val response = ChatService.Response(uuid, mockResponse)

View File

@ -1,4 +1,4 @@
package de.hbt.routing.gti
package de.hbt.routing.service
import de.hbt.geofox.gti.model.*
import org.springframework.stereotype.Service
@ -11,12 +11,12 @@ open class GTIService(private val restClient: RestClient) {
fun getRoute(start: SDName, destination: SDName, dateTime: GTITime): GRResponse {
val request = GRRequest(
start = start,
dest = destination,
time = dateTime,
schedulesBefore = 0,
schedulesAfter = 0,
version = 58
start = start,
dest = destination,
time = dateTime,
schedulesBefore = 0,
schedulesAfter = 0,
version = 58
)
val result = restClient.post()
.uri("$GTI_PREFIX/getRoute")