diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 459c613..87da2a0 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -31,7 +31,7 @@ jobs: - name: docker-build-push uses: nais/docker-build-push@v0 - if: github.ref == 'refs/heads/main' + if: github.ref == 'refs/heads/feature/støtte_fnr' id: docker-build-push with: team: teamdagpenger @@ -43,7 +43,7 @@ jobs: project_id: ${{ vars.NAIS_MANAGEMENT_PROJECT_ID }} - name: Archive NAIS yaml - if: github.ref == 'refs/heads/main' + if: github.ref == 'refs/heads/feature/støtte_fnr' uses: actions/upload-artifact@v4 with: name: nais-yaml @@ -55,7 +55,7 @@ jobs: deploy-dev: name: Deploy to dev needs: [build] - if: github.ref == 'refs/heads/main' + if: github.ref == 'refs/heads/feature/støtte_fnr' runs-on: ubuntu-latest environment: dev-fss steps: @@ -74,24 +74,24 @@ jobs: VARS: .nais/dev-vars.yaml PRINT_PAYLOAD: true - deploy-prod: - name: Deploy to Production - needs: [build, deploy-dev] - if: github.ref == 'refs/heads/main' - runs-on: ubuntu-latest - environment: prod-fss - steps: - - name: Fetch NAIS yaml - uses: actions/download-artifact@v4 - with: - name: nais-yaml - path: .nais - - - uses: nais/deploy/actions/deploy@v2 - env: - APIKEY: ${{ secrets.NAIS_DEPLOY_APIKEY }} - CLUSTER: prod-fss - RESOURCE: .nais/nais.yaml - VAR: image=${{ needs.build.outputs.image }} - VARS: .nais/prod-vars.yaml - PRINT_PAYLOAD: true +# deploy-prod: +# name: Deploy to Production +# needs: [build, deploy-dev] +# if: github.ref == 'refs/heads/main' +# runs-on: ubuntu-latest +# environment: prod-fss +# steps: +# - name: Fetch NAIS yaml +# uses: actions/download-artifact@v4 +# with: +# name: nais-yaml +# path: .nais +# +# - uses: nais/deploy/actions/deploy@v2 +# env: +# APIKEY: ${{ secrets.NAIS_DEPLOY_APIKEY }} +# CLUSTER: prod-fss +# RESOURCE: .nais/nais.yaml +# VAR: image=${{ needs.build.outputs.image }} +# VARS: .nais/prod-vars.yaml +# PRINT_PAYLOAD: true diff --git a/README.md b/README.md index a726098..ec1bd84 100644 --- a/README.md +++ b/README.md @@ -5,5 +5,6 @@ Henter spesifisert inntekt fra inntekt-api og klassifiserer den. Gradle brukes som byggverktøy og er bundlet inn. + `./gradlew build` diff --git "a/src/main/kotlin/no/nav/dagpenger/inntekt/klassifiserer/InntektBehovl\303\270ser.kt" "b/src/main/kotlin/no/nav/dagpenger/inntekt/klassifiserer/InntektBehovl\303\270ser.kt" index b8b7b0d..cc507db 100644 --- "a/src/main/kotlin/no/nav/dagpenger/inntekt/klassifiserer/InntektBehovl\303\270ser.kt" +++ "b/src/main/kotlin/no/nav/dagpenger/inntekt/klassifiserer/InntektBehovl\303\270ser.kt" @@ -5,6 +5,7 @@ import mu.KotlinLogging import mu.withLoggingContext import no.nav.dagpenger.inntekt.klassifiserer.PacketParser.aktørId import no.nav.dagpenger.inntekt.klassifiserer.PacketParser.beregningsdato +import no.nav.dagpenger.inntekt.klassifiserer.PacketParser.fødselsnummer import no.nav.dagpenger.inntekt.klassifiserer.PacketParser.hentRegelkontekst import no.nav.dagpenger.inntekt.klassifiserer.PacketParser.inntektsId import no.nav.helse.rapids_rivers.JsonMessage @@ -23,6 +24,7 @@ internal class InntektBehovløser(rapidsConnection: RapidsConnection, private va const val BEHOV_ID = "behovId" const val INNTEKT = "inntektV1" const val AKTØRID = "aktørId" + const val FØDSELSNUMMER = "fødselsnummer" const val MANUELT_GRUNNLAG = "manueltGrunnlag" const val FORRIGE_GRUNNLAG = "forrigeGrunnlag" const val BEREGNINGSDATO = "beregningsDato" @@ -39,6 +41,7 @@ internal class InntektBehovløser(rapidsConnection: RapidsConnection, private va AKTØRID, KONTEKST_ID, KONTEKST_TYPE, + FØDSELSNUMMER, ) } validate { it.rejectKey(INNTEKT, MANUELT_GRUNNLAG, FORRIGE_GRUNNLAG) } @@ -74,7 +77,13 @@ internal class InntektBehovløser(rapidsConnection: RapidsConnection, private va } else -> { - val aktørId: String = packet.aktørId() ?: throw IllegalArgumentException("Mangler aktørId") + val aktørId: String? = packet.aktørId() + val fødselsnummer: String? = packet.fødselsnummer() + + if (aktørId == null && fødselsnummer == null) { + throw IllegalArgumentException("Mangler aktørId eller fødselsnummer") + } + requireNotNull(regelkontekst) { "Må ha en kontekst for å hente inntekt" } val beregningsdato: LocalDate = @@ -85,7 +94,7 @@ internal class InntektBehovløser(rapidsConnection: RapidsConnection, private va aktørId, regelkontekst, beregningsdato, - null, + fødselsnummer, callId, ) } diff --git a/src/main/kotlin/no/nav/dagpenger/inntekt/klassifiserer/InntektHttpClient.kt b/src/main/kotlin/no/nav/dagpenger/inntekt/klassifiserer/InntektHttpClient.kt index 6dd9d15..f2dab20 100644 --- a/src/main/kotlin/no/nav/dagpenger/inntekt/klassifiserer/InntektHttpClient.kt +++ b/src/main/kotlin/no/nav/dagpenger/inntekt/klassifiserer/InntektHttpClient.kt @@ -28,7 +28,7 @@ internal class InntektHttpClient( private val tokenProvider: () -> String, ) { suspend fun getKlassifisertInntekt( - aktørId: String, + aktørId: String?, regelkontekst: RegelKontekst, beregningsDato: LocalDate, fødselsnummer: String?, @@ -69,7 +69,7 @@ internal class InntektHttpClient( } private suspend inline fun getInntekt( - aktørId: String, + aktørId: String?, regelkontekst: RegelKontekst, beregningsDato: LocalDate, fødselsnummer: String?, @@ -119,7 +119,7 @@ internal class InntektHttpClient( } private data class InntektRequest( - val aktørId: String, + val aktørId: String?, val fødselsnummer: String? = null, val regelkontekst: RegelKontekst, val beregningsDato: LocalDate, diff --git a/src/main/kotlin/no/nav/dagpenger/inntekt/klassifiserer/PacketParser.kt b/src/main/kotlin/no/nav/dagpenger/inntekt/klassifiserer/PacketParser.kt index 0387be8..72c430d 100644 --- a/src/main/kotlin/no/nav/dagpenger/inntekt/klassifiserer/PacketParser.kt +++ b/src/main/kotlin/no/nav/dagpenger/inntekt/klassifiserer/PacketParser.kt @@ -3,6 +3,7 @@ package no.nav.dagpenger.inntekt.klassifiserer import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.AKTØRID import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.BEHOV_ID import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.BEREGNINGSDATO +import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.FØDSELSNUMMER import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.INNTEKT_ID import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.KONTEKST_ID import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.KONTEKST_TYPE @@ -29,6 +30,12 @@ object PacketParser { false -> null } + fun JsonMessage.fødselsnummer() = + when (this.harVerdi(FØDSELSNUMMER)) { + true -> this[FØDSELSNUMMER].asText() + false -> null + } + fun JsonMessage.behovId() = when (this.harVerdi(BEHOV_ID)) { true -> this[BEHOV_ID].asText() diff --git "a/src/test/kotlin/no/nav/dagpenger/inntekt/klassifiserer/InntektBehovl\303\270serTest.kt" "b/src/test/kotlin/no/nav/dagpenger/inntekt/klassifiserer/InntektBehovl\303\270serTest.kt" index 6214c63..3a3e095 100644 --- "a/src/test/kotlin/no/nav/dagpenger/inntekt/klassifiserer/InntektBehovl\303\270serTest.kt" +++ "b/src/test/kotlin/no/nav/dagpenger/inntekt/klassifiserer/InntektBehovl\303\270serTest.kt" @@ -35,7 +35,8 @@ class InntektBehovløserTest { mockk().also { coEvery { it.getKlassifisertInntekt( - inntektId = "inntektId", callId = any(), + inntektId = "inntektId", + callId = any(), ) } returns inntekt } @@ -117,14 +118,13 @@ class InntektBehovløserTest { "$KONTEKST_ID" : "kontekstId", "$BEHOV_ID":"kaktus" } - """.trimIndent(), ) } } @Test - fun `Kaster exception dersom aktørId ikke er satt for behov uten inntektId`() { + fun `Kaster exception dersom aktørId eller fødselsnummer ikke er satt for behov uten inntektId`() { InntektBehovløser(testRapid, mockk()) shouldThrow { diff --git a/src/test/kotlin/no/nav/dagpenger/inntekt/klassifiserer/PacketParserTest.kt b/src/test/kotlin/no/nav/dagpenger/inntekt/klassifiserer/PacketParserTest.kt index 9677ae9..5ff0777 100644 --- a/src/test/kotlin/no/nav/dagpenger/inntekt/klassifiserer/PacketParserTest.kt +++ b/src/test/kotlin/no/nav/dagpenger/inntekt/klassifiserer/PacketParserTest.kt @@ -4,12 +4,14 @@ import io.kotest.matchers.shouldBe import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.AKTØRID import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.BEHOV_ID import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.BEREGNINGSDATO +import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.FØDSELSNUMMER import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.INNTEKT_ID import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.KONTEKST_ID import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.KONTEKST_TYPE import no.nav.dagpenger.inntekt.klassifiserer.PacketParser.aktørId import no.nav.dagpenger.inntekt.klassifiserer.PacketParser.behovId import no.nav.dagpenger.inntekt.klassifiserer.PacketParser.beregningsdato +import no.nav.dagpenger.inntekt.klassifiserer.PacketParser.fødselsnummer import no.nav.dagpenger.inntekt.klassifiserer.PacketParser.hentRegelkontekst import no.nav.dagpenger.inntekt.klassifiserer.PacketParser.inntektsId import no.nav.helse.rapids_rivers.JsonMessage @@ -65,6 +67,17 @@ class PacketParserTest { behovløser.packet.aktørId() shouldBe null } + @Test + fun `Skal mappe fødselnummer`() { + val behovløser = OnPacketTestListener(testRapid) + + testRapid.sendTestMessage(testMessageMedRequiredFelter(mapOf(FØDSELSNUMMER to "fnr"))) + behovløser.packet.fødselsnummer() shouldBe "fnr" + + testRapid.sendTestMessage(testMessageMedRequiredFelter()) + behovløser.packet.fødselsnummer() shouldBe null + } + @Test fun `Skal mappe RegelKontekst`() { val behovløser = OnPacketTestListener(testRapid) diff --git a/src/test/kotlin/no/nav/dagpenger/inntekt/klassifiserer/RapidFilterTest.kt b/src/test/kotlin/no/nav/dagpenger/inntekt/klassifiserer/RapidFilterTest.kt index 877c5ac..83752cf 100644 --- a/src/test/kotlin/no/nav/dagpenger/inntekt/klassifiserer/RapidFilterTest.kt +++ b/src/test/kotlin/no/nav/dagpenger/inntekt/klassifiserer/RapidFilterTest.kt @@ -7,6 +7,7 @@ import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.AKTØ import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.BEHOV_ID import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.BEREGNINGSDATO import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.FORRIGE_GRUNNLAG +import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.FØDSELSNUMMER import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.INNTEKT import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.INNTEKT_ID import no.nav.dagpenger.inntekt.klassifiserer.InntektBehovløser.Companion.KONTEKST_ID @@ -64,6 +65,7 @@ class RapidFilterTest { testListener.jsonMessage[BEREGNINGSDATO] testListener.jsonMessage[INNTEKT_ID] testListener.jsonMessage[AKTØRID] + testListener.jsonMessage[FØDSELSNUMMER] testListener.jsonMessage[KONTEKST_ID] testListener.jsonMessage[KONTEKST_TYPE] }