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 +)