Why: IdentificationResponseDto models a flat {userId,name,confidence,isMatch} shape, but the Identity /biometric/search endpoint actually returns an opaque processor map ({matches:[{user_id, similarity}], ...}). All fields default so deserialization never throws, but the real payload is dropped — fine today because identify/search is not on the login path, but it must be remapped before any search UI consumes real results.
Done when: the DTO maps the processor's matches[] array and the search UI renders real 1:N results.
source: shared/src/commonMain/kotlin/com/fivucsas/shared/data/remote/dto/IdentificationResponseDto.kt:9
Migrated from shared/src/commonMain/kotlin/com/fivucsas/shared/data/remote/dto/IdentificationResponseDto.kt:9.
Why: IdentificationResponseDto models a flat {userId,name,confidence,isMatch} shape, but the Identity /biometric/search endpoint actually returns an opaque processor map ({matches:[{user_id, similarity}], ...}). All fields default so deserialization never throws, but the real payload is dropped — fine today because identify/search is not on the login path, but it must be remapped before any search UI consumes real results.
Done when: the DTO maps the processor's matches[] array and the search UI renders real 1:N results.
source: shared/src/commonMain/kotlin/com/fivucsas/shared/data/remote/dto/IdentificationResponseDto.kt:9
Migrated from
shared/src/commonMain/kotlin/com/fivucsas/shared/data/remote/dto/IdentificationResponseDto.kt:9.