From b134c28c10b980829a64bf063bf591f31fc8fcde Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 15 Sep 2025 05:18:01 +0900 Subject: [PATCH] =?UTF-8?q?feat(original):=20=EA=B4=80=EB=A6=AC=EC=9E=90?= =?UTF-8?q?=20=EC=BA=90=EB=A6=AD=ED=84=B0=20=EC=83=81=EC=84=B8=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 원작 데이터 추가 --- .../dto/ChatCharacterDetailResponse.kt | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/chat/character/dto/ChatCharacterDetailResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/chat/character/dto/ChatCharacterDetailResponse.kt index fa006db..32338e6 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/chat/character/dto/ChatCharacterDetailResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/chat/character/dto/ChatCharacterDetailResponse.kt @@ -2,6 +2,10 @@ package kr.co.vividnext.sodalive.admin.chat.character.dto import kr.co.vividnext.sodalive.chat.character.ChatCharacter +/** + * 관리자 캐릭터 상세 응답 DTO + * - 원작이 연결되어 있으면 원작 요약 정보(originalWork)를 함께 반환한다. + */ data class ChatCharacterDetailResponse( val id: Long, val characterUUID: String, @@ -24,7 +28,8 @@ data class ChatCharacterDetailResponse( val relationships: List, val personalities: List, val backgrounds: List, - val memories: List + val memories: List, + val originalWork: OriginalWorkBriefResponse? // 추가: 원작 요약 정보 ) { companion object { fun from(chatCharacter: ChatCharacter, imageHost: String = ""): ChatCharacterDetailResponse { @@ -34,6 +39,20 @@ data class ChatCharacterDetailResponse( chatCharacter.imagePath ?: "" } + val ow = chatCharacter.originalWork + val originalWorkBrief = ow?.let { + val owImage = if (it.imagePath != null && imageHost.isNotEmpty()) { + "$imageHost/${it.imagePath}" + } else { + it.imagePath + } + OriginalWorkBriefResponse( + id = it.id!!, + imageUrl = owImage, + title = it.title + ) + } + return ChatCharacterDetailResponse( id = chatCharacter.id!!, characterUUID = chatCharacter.characterUUID, @@ -71,7 +90,8 @@ data class ChatCharacterDetailResponse( }, memories = chatCharacter.memories.map { MemoryResponse(it.title, it.content, it.emotion) - } + }, + originalWork = originalWorkBrief ) } } @@ -101,3 +121,12 @@ data class RelationshipResponse( val relationshipType: String, val currentStatus: String ) + +/** + * 원작 요약 응답 DTO(관리자 캐릭터 상세용) + */ +data class OriginalWorkBriefResponse( + val id: Long, + val imageUrl: String?, + val title: String +)