parent
5132a6b9fa
commit
45b6c8db96
|
@ -57,6 +57,12 @@ class AdminChatCharacterController(
|
||||||
val objectMapper = ObjectMapper()
|
val objectMapper = ObjectMapper()
|
||||||
val request = objectMapper.readValue(requestString, ChatCharacterRegisterRequest::class.java)
|
val request = objectMapper.readValue(requestString, ChatCharacterRegisterRequest::class.java)
|
||||||
|
|
||||||
|
// 외부 API 호출 전 DB에 동일한 이름이 있는지 조회
|
||||||
|
val existingCharacter = service.findByName(request.name)
|
||||||
|
if (existingCharacter != null) {
|
||||||
|
throw SodaException("동일한 이름은 등록이 불가능합니다: ${request.name}")
|
||||||
|
}
|
||||||
|
|
||||||
// 1. 외부 API 호출
|
// 1. 외부 API 호출
|
||||||
val characterUUID = callExternalApi(request)
|
val characterUUID = callExternalApi(request)
|
||||||
|
|
||||||
|
@ -188,6 +194,15 @@ class AdminChatCharacterController(
|
||||||
if (hasChangedData) {
|
if (hasChangedData) {
|
||||||
val chatCharacter = service.findById(request.id)
|
val chatCharacter = service.findById(request.id)
|
||||||
?: throw SodaException("해당 ID의 캐릭터를 찾을 수 없습니다: ${request.id}")
|
?: throw SodaException("해당 ID의 캐릭터를 찾을 수 없습니다: ${request.id}")
|
||||||
|
|
||||||
|
// 이름이 수정된 경우 DB에 동일한 이름이 있는지 확인
|
||||||
|
if (request.name != null && request.name != chatCharacter.name) {
|
||||||
|
val existingCharacter = service.findByName(request.name)
|
||||||
|
if (existingCharacter != null) {
|
||||||
|
throw SodaException("동일한 이름은 등록이 불가능합니다: ${request.name}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
callExternalApiForUpdate(chatCharacter.characterUUID, request)
|
callExternalApiForUpdate(chatCharacter.characterUUID, request)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -261,8 +276,11 @@ class AdminChatCharacterController(
|
||||||
// 변경된 데이터만 포함하는 맵 생성
|
// 변경된 데이터만 포함하는 맵 생성
|
||||||
val updateData = mutableMapOf<String, Any>()
|
val updateData = mutableMapOf<String, Any>()
|
||||||
|
|
||||||
|
// isActive = false인 경우 처리
|
||||||
if (request.isActive != null && !request.isActive) {
|
if (request.isActive != null && !request.isActive) {
|
||||||
updateData["name"] = "inactive_${request.name}"
|
val inactiveName = "inactive_${request.name}"
|
||||||
|
val randomSuffix = "_" + java.util.UUID.randomUUID().toString().replace("-", "")
|
||||||
|
updateData["name"] = inactiveName + randomSuffix
|
||||||
} else {
|
} else {
|
||||||
request.name?.let { updateData["name"] = it }
|
request.name?.let { updateData["name"] = it }
|
||||||
request.systemPrompt?.let { updateData["systemPrompt"] = it }
|
request.systemPrompt?.let { updateData["systemPrompt"] = it }
|
||||||
|
@ -284,7 +302,6 @@ class AdminChatCharacterController(
|
||||||
}
|
}
|
||||||
|
|
||||||
val httpEntity = HttpEntity(updateData, headers)
|
val httpEntity = HttpEntity(updateData, headers)
|
||||||
|
|
||||||
val response = restTemplate.exchange(
|
val response = restTemplate.exchange(
|
||||||
"$apiUrl/api/characters/$characterUUID",
|
"$apiUrl/api/characters/$characterUUID",
|
||||||
HttpMethod.PUT,
|
HttpMethod.PUT,
|
||||||
|
|
|
@ -292,7 +292,10 @@ class ChatCharacterService(
|
||||||
// isActive가 false이면 isActive = false, name = "inactive_$name"으로 변경하고 나머지는 반영하지 않는다.
|
// isActive가 false이면 isActive = false, name = "inactive_$name"으로 변경하고 나머지는 반영하지 않는다.
|
||||||
if (request.isActive != null && !request.isActive) {
|
if (request.isActive != null && !request.isActive) {
|
||||||
chatCharacter.isActive = false
|
chatCharacter.isActive = false
|
||||||
chatCharacter.name = "inactive_${chatCharacter.name}"
|
|
||||||
|
val inactiveName = "inactive_${request.name}"
|
||||||
|
val randomSuffix = "_" + java.util.UUID.randomUUID().toString().replace("-", "")
|
||||||
|
chatCharacter.name = inactiveName + randomSuffix
|
||||||
|
|
||||||
return saveChatCharacter(chatCharacter)
|
return saveChatCharacter(chatCharacter)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue