Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/pr-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ jobs:
infra:images
infra:auth-store
infra:auth-logic
infra:matching
reportsId: infra2

feature-unit-tests1:
Expand Down
5 changes: 1 addition & 4 deletions feature/matcher/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,9 @@ dependencies {

implementation(project(":infra:orchestrator-data"))
implementation(project(":infra:enrolment-records:repository"))
implementation(project(":infra:events"))
implementation(project(":infra:matching"))
implementation(project(":infra:config-store"))
implementation(project(":infra:config-sync"))

implementation(project(":face:infra:bio-sdk-resolver"))

implementation(project(":fingerprint:infra:bio-sdk"))
implementation(project(":infra:auth-store"))
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.simprints.infra.config.store.models.FaceConfiguration
import com.simprints.infra.config.store.models.FingerprintConfiguration
import com.simprints.infra.enrolment.records.repository.domain.models.BiometricDataSource
import com.simprints.infra.enrolment.records.repository.domain.models.SubjectQuery
import com.simprints.infra.matching.MatchParams

object MatchContract {
val DESTINATION = R.id.matcherFragment
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ import com.simprints.core.tools.extentions.hasPermission
import com.simprints.core.tools.extentions.permissionFromResult
import com.simprints.infra.logging.LoggingConstants.CrashReportTag.ORCHESTRATION
import com.simprints.infra.logging.Simber
import com.simprints.infra.matching.MatchParams
import com.simprints.infra.uibase.navigation.finishWithResult
import com.simprints.infra.uibase.navigation.navigationParams
import com.simprints.infra.uibase.view.applySystemBarInsets
import com.simprints.infra.uibase.viewbinding.viewBinding
import com.simprints.matcher.MatchParams
import com.simprints.matcher.R
import com.simprints.matcher.databinding.FragmentMatcherBinding
import com.simprints.matcher.screen.MatchViewModel.MatchState
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ import com.simprints.core.tools.time.TimeHelper
import com.simprints.infra.authstore.AuthStore
import com.simprints.infra.config.store.models.DecisionPolicy
import com.simprints.infra.config.sync.ConfigManager
import com.simprints.matcher.FaceMatchResult
import com.simprints.matcher.FingerprintMatchResult
import com.simprints.matcher.MatchParams
import com.simprints.matcher.MatchResultItem
import com.simprints.matcher.usecases.FaceMatcherUseCase
import com.simprints.matcher.usecases.FingerprintMatcherUseCase
import com.simprints.matcher.usecases.MatcherUseCase
import com.simprints.matcher.usecases.SaveMatchEventUseCase
import com.simprints.infra.matching.FaceMatchResult
import com.simprints.infra.matching.FingerprintMatchResult
import com.simprints.infra.matching.MatchParams
import com.simprints.infra.matching.MatchResultItem
import com.simprints.infra.matching.usecase.FaceMatcherUseCase
import com.simprints.infra.matching.usecase.FingerprintMatcherUseCase
import com.simprints.infra.matching.usecase.MatcherUseCase
import com.simprints.infra.matching.usecase.SaveMatchEventUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
Expand Down Expand Up @@ -104,9 +104,11 @@ internal class MatchViewModel @Inject constructor(

private suspend fun getDecisionPolicy(params: MatchParams): DecisionPolicy {
val config = configManager.getProjectConfiguration()
val faceSDK = params.faceSDK
Comment thread
alexandr-simprints marked this conversation as resolved.
val fingerprintSDK = params.fingerprintSDK
val policy = when {
params.faceSDK != null -> config.face?.getSdkConfiguration(params.faceSDK)?.decisionPolicy
params.fingerprintSDK != null -> config.fingerprint?.getSdkConfiguration(params.fingerprintSDK)?.decisionPolicy
faceSDK != null -> config.face?.getSdkConfiguration(faceSDK)?.decisionPolicy
fingerprintSDK != null -> config.fingerprint?.getSdkConfiguration(fingerprintSDK)?.decisionPolicy
else -> null
}
return policy ?: fallbackDecisionPolicy()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ import com.simprints.infra.config.store.models.FaceConfiguration
import com.simprints.infra.config.store.models.FingerprintConfiguration.BioSdk.SECUGEN_SIM_MATCHER
import com.simprints.infra.config.sync.ConfigManager
import com.simprints.infra.enrolment.records.repository.domain.models.BiometricDataSource
import com.simprints.matcher.FaceMatchResult
import com.simprints.matcher.FingerprintMatchResult
import com.simprints.matcher.MatchBatchInfo
import com.simprints.matcher.MatchParams
import com.simprints.matcher.usecases.FaceMatcherUseCase
import com.simprints.matcher.usecases.FingerprintMatcherUseCase
import com.simprints.matcher.usecases.MatcherUseCase
import com.simprints.matcher.usecases.SaveMatchEventUseCase
import com.simprints.infra.matching.FaceMatchResult
import com.simprints.infra.matching.FingerprintMatchResult
import com.simprints.infra.matching.MatchBatchInfo
import com.simprints.infra.matching.MatchParams
import com.simprints.infra.matching.usecase.FaceMatcherUseCase
import com.simprints.infra.matching.usecase.FingerprintMatcherUseCase
import com.simprints.infra.matching.usecase.MatcherUseCase
import com.simprints.infra.matching.usecase.SaveMatchEventUseCase
import com.simprints.testtools.common.coroutines.TestCoroutineRule
import com.simprints.testtools.common.livedata.getOrAwaitValue
import io.mockk.*
Expand Down
1 change: 1 addition & 0 deletions feature/orchestrator/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ dependencies {
implementation(project(":infra:events"))
implementation(project(":infra:event-sync"))
implementation(project(":infra:images"))
implementation(project(":infra:matching"))

implementation(libs.jackson.core)
implementation(libs.androidX.ui.preference)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@ import com.simprints.infra.config.store.models.GeneralConfiguration
import com.simprints.infra.config.sync.ConfigManager
import com.simprints.infra.logging.LoggingConstants.CrashReportTag.ORCHESTRATION
import com.simprints.infra.logging.Simber
import com.simprints.infra.matching.MatchParams
import com.simprints.infra.orchestration.data.ActionRequest
import com.simprints.infra.orchestration.data.responses.AppErrorResponse
import com.simprints.infra.orchestration.data.responses.AppResponse
import com.simprints.matcher.MatchParams
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
import java.io.Serializable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import com.simprints.infra.config.store.models.FaceConfiguration
import com.simprints.infra.config.store.models.FingerprintConfiguration
import com.simprints.infra.enrolment.records.repository.domain.models.BiometricDataSource
import com.simprints.infra.enrolment.records.repository.domain.models.SubjectQuery
import com.simprints.infra.matching.MatchParams
import com.simprints.matcher.MatchContract
import com.simprints.matcher.MatchParams

/**
* Actual matching step payload is based on capture step results, so until the it is done we are storing
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ import com.simprints.fingerprint.connect.FingerprintConnectParams
import com.simprints.fingerprint.connect.FingerprintConnectResult
import com.simprints.infra.enrolment.records.repository.domain.models.BiometricDataSource
import com.simprints.infra.enrolment.records.repository.domain.models.SubjectQuery
import com.simprints.matcher.FaceMatchResult
import com.simprints.matcher.FingerprintMatchResult
import com.simprints.matcher.MatchParams
import com.simprints.infra.matching.FaceMatchResult
import com.simprints.infra.matching.FingerprintMatchResult
import com.simprints.infra.matching.MatchParams
import java.io.Serializable

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "resultType")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import com.simprints.feature.enrollast.FingerTemplateCaptureResult
import com.simprints.feature.enrollast.MatchResult
import com.simprints.fingerprint.capture.FingerprintCaptureResult
import com.simprints.infra.config.store.models.fromModuleApiToDomain
import com.simprints.matcher.FaceMatchResult
import com.simprints.matcher.FingerprintMatchResult
import com.simprints.infra.matching.FaceMatchResult
import com.simprints.infra.matching.FingerprintMatchResult
import java.io.Serializable
import javax.inject.Inject

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import com.simprints.infra.events.session.SessionEventRepository
import com.simprints.infra.orchestration.data.responses.AppIdentifyResponse
import com.simprints.infra.orchestration.data.responses.AppMatchResult
import com.simprints.infra.orchestration.data.responses.AppResponse
import com.simprints.matcher.FaceMatchResult
import com.simprints.matcher.FingerprintMatchResult
import com.simprints.infra.matching.FaceMatchResult
import com.simprints.infra.matching.FingerprintMatchResult
import java.io.Serializable
import javax.inject.Inject

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import com.simprints.infra.orchestration.data.responses.AppErrorResponse
import com.simprints.infra.orchestration.data.responses.AppMatchResult
import com.simprints.infra.orchestration.data.responses.AppResponse
import com.simprints.infra.orchestration.data.responses.AppVerifyResponse
import com.simprints.matcher.FaceMatchResult
import com.simprints.matcher.FingerprintMatchResult
import com.simprints.infra.matching.FaceMatchResult
import com.simprints.infra.matching.FingerprintMatchResult
import java.io.Serializable
import javax.inject.Inject

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.simprints.feature.orchestrator.usecases.response

import com.simprints.infra.config.store.models.ProjectConfiguration
import com.simprints.matcher.FaceMatchResult
import com.simprints.matcher.FingerprintMatchResult
import com.simprints.infra.matching.FaceMatchResult
import com.simprints.infra.matching.FingerprintMatchResult
import java.io.Serializable
import javax.inject.Inject
import kotlin.text.compareTo
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ import com.simprints.infra.config.store.models.GeneralConfiguration
import com.simprints.infra.config.sync.ConfigManager
import com.simprints.infra.enrolment.records.repository.domain.models.BiometricDataSource
import com.simprints.infra.enrolment.records.repository.domain.models.SubjectQuery
import com.simprints.infra.matching.MatchParams
import com.simprints.infra.orchestration.data.responses.AppErrorResponse
import com.simprints.matcher.MatchParams
import com.simprints.testtools.common.coroutines.TestCoroutineRule
import io.mockk.MockKAnnotations
import io.mockk.clearMocks
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ import com.simprints.infra.config.store.models.FaceConfiguration
import com.simprints.infra.config.store.models.Finger
import com.simprints.infra.config.store.models.FingerprintConfiguration
import com.simprints.infra.events.sampledata.SampleDefaults.GUID1
import com.simprints.matcher.FaceMatchResult
import com.simprints.matcher.FingerprintMatchResult
import com.simprints.infra.matching.FaceMatchResult
import com.simprints.infra.matching.FingerprintMatchResult
import org.junit.Before
import org.junit.Test

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import com.simprints.infra.config.store.models.FaceConfiguration
import com.simprints.infra.config.store.models.FingerprintConfiguration
import com.simprints.infra.events.session.SessionEventRepository
import com.simprints.infra.orchestration.data.responses.AppIdentifyResponse
import com.simprints.matcher.FaceMatchResult
import com.simprints.matcher.FingerprintMatchResult
import com.simprints.infra.matching.FaceMatchResult
import com.simprints.infra.matching.FingerprintMatchResult
import io.mockk.MockKAnnotations
import io.mockk.coEvery
import io.mockk.every
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import com.google.common.truth.Truth.*
import com.simprints.infra.config.store.models.DecisionPolicy
import com.simprints.infra.orchestration.data.responses.AppErrorResponse
import com.simprints.infra.orchestration.data.responses.AppVerifyResponse
import com.simprints.matcher.FaceMatchResult
import com.simprints.matcher.FingerprintMatchResult
import com.simprints.infra.matching.FaceMatchResult
import com.simprints.infra.matching.FingerprintMatchResult
import io.mockk.*
import org.junit.Before
import org.junit.Test
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
package com.simprints.feature.orchestrator.usecases.response

import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.*
import com.simprints.infra.config.store.models.DecisionPolicy
import com.simprints.infra.config.store.models.FaceConfiguration
import com.simprints.infra.config.store.models.ProjectConfiguration
import com.simprints.matcher.FaceMatchResult
import com.simprints.matcher.FingerprintMatchResult
import io.mockk.MockKAnnotations
import io.mockk.every
import com.simprints.infra.matching.FaceMatchResult
import com.simprints.infra.matching.FingerprintMatchResult
import io.mockk.*
import io.mockk.impl.annotations.MockK
import io.mockk.mockk
import org.junit.Before
import org.junit.Test

Expand Down
1 change: 1 addition & 0 deletions infra/matching/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
Empty file added infra/matching/README.md
Empty file.
21 changes: 21 additions & 0 deletions infra/matching/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
plugins {
id("simprints.feature")
}

android {
namespace = "com.simprints.infra.mathching"
}

dependencies {

implementation(project(":infra:orchestrator-data"))
implementation(project(":infra:enrolment-records:repository"))
implementation(project(":infra:events"))
implementation(project(":infra:config-store"))
implementation(project(":infra:config-sync"))

implementation(project(":face:infra:bio-sdk-resolver"))

implementation(project(":fingerprint:infra:bio-sdk"))
implementation(project(":infra:auth-store"))
}
4 changes: 4 additions & 0 deletions infra/matching/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest>

</manifest>
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.simprints.matcher
package com.simprints.infra.matching

import com.simprints.core.tools.time.Timestamp

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.simprints.matcher
package com.simprints.infra.matching

import androidx.annotation.Keep
import com.simprints.core.domain.common.FlowType
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.simprints.matcher
package com.simprints.infra.matching

import androidx.annotation.Keep
import com.simprints.core.domain.step.StepResult
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.simprints.matcher.usecases
package com.simprints.infra.matching.usecase

import com.simprints.core.AvailableProcessors
import javax.inject.Inject
import kotlin.math.ceil

internal class CreateRangesUseCase @Inject constructor(
class CreateRangesUseCase @Inject constructor(
@AvailableProcessors private val availableProcessors: Int,
) {
/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.simprints.matcher.usecases
package com.simprints.infra.matching.usecase

import com.simprints.core.DispatcherBG
import com.simprints.core.tools.time.TimeHelper
Expand All @@ -12,10 +12,10 @@ import com.simprints.infra.enrolment.records.repository.EnrolmentRecordRepositor
import com.simprints.infra.enrolment.records.repository.domain.models.IdentityBatch
import com.simprints.infra.logging.LoggingConstants
import com.simprints.infra.logging.Simber
import com.simprints.matcher.FaceMatchResult
import com.simprints.matcher.MatchBatchInfo
import com.simprints.matcher.MatchParams
import com.simprints.matcher.usecases.MatcherUseCase.MatcherState
import com.simprints.infra.matching.FaceMatchResult
import com.simprints.infra.matching.MatchBatchInfo
import com.simprints.infra.matching.MatchParams
import com.simprints.infra.matching.usecase.MatcherUseCase.MatcherState
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.channels.ReceiveChannel
import kotlinx.coroutines.flow.Flow
Expand All @@ -25,7 +25,7 @@ import java.util.concurrent.atomic.AtomicInteger
import javax.inject.Inject
import com.simprints.infra.enrolment.records.repository.domain.models.FaceIdentity as DomainFaceIdentity

internal class FaceMatcherUseCase @Inject constructor(
class FaceMatcherUseCase @Inject constructor(
private val timeHelper: TimeHelper,
private val enrolmentRecordRepository: EnrolmentRecordRepository,
private val resolveFaceBioSdk: ResolveFaceBioSdkUseCase,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.simprints.matcher.usecases
package com.simprints.infra.matching.usecase

import com.simprints.core.DispatcherBG
import com.simprints.core.domain.common.FlowType
Expand All @@ -17,10 +17,10 @@ import com.simprints.infra.enrolment.records.repository.EnrolmentRecordRepositor
import com.simprints.infra.enrolment.records.repository.domain.models.IdentityBatch
import com.simprints.infra.logging.LoggingConstants
import com.simprints.infra.logging.Simber
import com.simprints.matcher.FingerprintMatchResult
import com.simprints.matcher.MatchBatchInfo
import com.simprints.matcher.MatchParams
import com.simprints.matcher.usecases.MatcherUseCase.MatcherState
import com.simprints.infra.matching.FingerprintMatchResult
import com.simprints.infra.matching.MatchBatchInfo
import com.simprints.infra.matching.MatchParams
import com.simprints.infra.matching.usecase.MatcherUseCase.MatcherState
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.channels.ReceiveChannel
import kotlinx.coroutines.flow.Flow
Expand All @@ -30,7 +30,7 @@ import java.util.concurrent.atomic.AtomicInteger
import javax.inject.Inject
import com.simprints.infra.enrolment.records.repository.domain.models.FingerprintIdentity as DomainFingerprintIdentity

internal class FingerprintMatcherUseCase @Inject constructor(
class FingerprintMatcherUseCase @Inject constructor(
private val timeHelper: TimeHelper,
private val enrolmentRecordRepository: EnrolmentRecordRepository,
private val resolveBioSdkWrapper: ResolveBioSdkWrapperUseCase,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.simprints.matcher.usecases
package com.simprints.infra.matching.usecase

import com.simprints.matcher.MatchResultItem
import com.simprints.infra.matching.MatchResultItem
import java.util.concurrent.ConcurrentSkipListSet
import java.util.concurrent.atomic.AtomicReference
import java.util.concurrent.locks.ReentrantLock
import kotlin.concurrent.withLock

internal class MatchResultSet<T : MatchResultItem>(
class MatchResultSet<T : MatchResultItem>(
private val maxSize: Int = MAX_RESULTS,
) {
private val lowestConfidence = AtomicReference(0f)
Expand Down
Loading