diff --git a/core/data/api/src/main/java/com/metasearch/android/core/data/api/repository/PersonRepository.kt b/core/data/api/src/main/java/com/metasearch/android/core/data/api/repository/PersonRepository.kt index 8c53c23..e40fe9f 100644 --- a/core/data/api/src/main/java/com/metasearch/android/core/data/api/repository/PersonRepository.kt +++ b/core/data/api/src/main/java/com/metasearch/android/core/data/api/repository/PersonRepository.kt @@ -13,6 +13,11 @@ interface PersonRepository { */ fun getPersonById(personId: Long): Flow + /** + * 시스템 식별자로 인물 이름 조회 + */ + suspend fun getInputNameBySystemName(systemName: String): String? + /** * @return 분석 완료 후 저장된 인물 수 */ diff --git a/core/data/impl/src/main/java/com/metasearch/android/core/data/impl/repository/PersonRepositoryImpl.kt b/core/data/impl/src/main/java/com/metasearch/android/core/data/impl/repository/PersonRepositoryImpl.kt index fd7ba87..285f227 100644 --- a/core/data/impl/src/main/java/com/metasearch/android/core/data/impl/repository/PersonRepositoryImpl.kt +++ b/core/data/impl/src/main/java/com/metasearch/android/core/data/impl/repository/PersonRepositoryImpl.kt @@ -105,6 +105,10 @@ class PersonRepositoryImpl @Inject constructor( .map { it?.toModel(emptyMap()) } .flowOn(Dispatchers.IO) + override suspend fun getInputNameBySystemName(systemName: String): String? = withContext(ioDispatcher) { + personDao.getInputNameByImageName(systemName) + } + override suspend fun getPersonCount(): Int = personDao.getPersonCount() override suspend fun getPersonIdByImageName(imageName: String): Long? = diff --git a/core/data/impl/src/main/java/com/metasearch/android/core/data/impl/repository/SearchRepositoryImpl.kt b/core/data/impl/src/main/java/com/metasearch/android/core/data/impl/repository/SearchRepositoryImpl.kt index 39e89be..5154891 100644 --- a/core/data/impl/src/main/java/com/metasearch/android/core/data/impl/repository/SearchRepositoryImpl.kt +++ b/core/data/impl/src/main/java/com/metasearch/android/core/data/impl/repository/SearchRepositoryImpl.kt @@ -4,6 +4,7 @@ import com.metasearch.android.core.common.constants.PromptConstants import com.metasearch.android.core.common.utils.runSuspendCatching import com.metasearch.android.core.data.api.repository.DatabaseNameRepository import com.metasearch.android.core.data.api.repository.GalleryRepository +import com.metasearch.android.core.data.api.repository.PersonRepository import com.metasearch.android.core.data.api.repository.SearchRepository import com.metasearch.android.core.data.impl.mapper.toModel import com.metasearch.android.core.data.impl.util.CypherQueryGenerator @@ -36,6 +37,7 @@ internal class SearchRepositoryImpl @Inject constructor( private val webService: WebService, private val openAIService: OpenAIService, private val galleryRepository: GalleryRepository, + private val personRepository: PersonRepository, private val databaseNameRepository: DatabaseNameRepository, ) : SearchRepository { @@ -66,10 +68,18 @@ internal class SearchRepositoryImpl @Inject constructor( request = FocusingSearchRequest(requestCircles), ) + val mappedProperties = detectionResponse.detectedObjects.map { systemName -> + val inputName = personRepository.getInputNameBySystemName(systemName) + + if (!inputName.isNullOrBlank()) inputName else systemName + }.filter { it.isNotBlank() }.distinct() + + if (mappedProperties.isEmpty()) return@coroutineScope SearchResult(groups = emptyList()) + val finalResult = webService.sendDetectedObjects( request = DetectedObjectsRequest( dbName = dbName, - properties = detectionResponse.detectedObjects, + properties = mappedProperties, ), )