Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fjern unødvendig behov brukt under lagring av journalpost-ID #749

Merged
merged 1 commit into from
Nov 6, 2024
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
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package no.nav.helsearbeidsgiver.inntektsmelding.db.river
import kotlinx.serialization.builtins.serializer
import kotlinx.serialization.json.JsonElement
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Inntektsmelding
import no.nav.helsearbeidsgiver.felles.BehovType
import no.nav.helsearbeidsgiver.felles.EventName
import no.nav.helsearbeidsgiver.felles.Key
import no.nav.helsearbeidsgiver.felles.json.krev
Expand All @@ -25,7 +24,6 @@ import java.util.UUID

data class LagreJournalpostIdMelding(
val eventName: EventName,
val behovType: BehovType,
val transaksjonId: UUID,
val inntektsmelding: Inntektsmelding,
val journalpostId: String,
Expand All @@ -40,12 +38,12 @@ class LagreJournalpostIdRiver(
private val sikkerLogger = sikkerLogger()

override fun les(json: Map<Key, JsonElement>): LagreJournalpostIdMelding? =
// TODO legg til Key.BEHOV etter overgangsfase
if (setOf(Key.DATA, Key.FAIL).any(json::containsKey)) {
null
} else {
LagreJournalpostIdMelding(
eventName = Key.EVENT_NAME.les(EventName.serializer(), json),
behovType = Key.BEHOV.krev(BehovType.LAGRE_JOURNALPOST_ID, BehovType.serializer(), json),
eventName = Key.EVENT_NAME.krev(EventName.INNTEKTSMELDING_JOURNALFOERT, EventName.serializer(), json),
transaksjonId = Key.UUID.les(UuidSerializer, json),
inntektsmelding = Key.INNTEKTSMELDING.les(Inntektsmelding.serializer(), json),
journalpostId = Key.JOURNALPOST_ID.les(String.serializer(), json),
Expand Down Expand Up @@ -119,7 +117,6 @@ class LagreJournalpostIdRiver(
mapOf(
Log.klasse(this@LagreJournalpostIdRiver),
Log.event(eventName),
Log.behov(behovType),
Log.transaksjonId(transaksjonId),
when (inntektsmelding.type) {
is Inntektsmelding.Type.Forespurt -> Log.forespoerselId(inntektsmelding.type.id)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import kotlinx.serialization.builtins.serializer
import kotlinx.serialization.json.JsonElement
import kotlinx.serialization.json.JsonNull
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Inntektsmelding
import no.nav.helsearbeidsgiver.felles.BehovType
import no.nav.helsearbeidsgiver.felles.EventName
import no.nav.helsearbeidsgiver.felles.Key
import no.nav.helsearbeidsgiver.felles.json.toJson
Expand Down Expand Up @@ -204,7 +203,7 @@ class LagreJournalpostIdRiverTest :
context("ignorerer melding") {
withData(
mapOf(
"melding med ukjent behov" to Pair(Key.BEHOV, BehovType.LAGRE_IM_SKJEMA.toJson()),
// "melding med ukjent behov" to Pair(Key.BEHOV, BehovType.LAGRE_IM_SKJEMA.toJson()),
Comment on lines -207 to +206
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Behov er tillatt i er overgangsfase. Neste PR vil kommentere denne inn igjen.

"melding med data" to Pair(Key.DATA, "".toJson()),
"melding med fail" to Pair(Key.FAIL, Mock.fail.toJson(Fail.serializer())),
),
Expand Down Expand Up @@ -233,8 +232,7 @@ private object Mock {

fun innkommendeMelding(inntektsmelding: Inntektsmelding = mockInntektsmeldingV1()): LagreJournalpostIdMelding =
LagreJournalpostIdMelding(
eventName = EventName.INNTEKTSMELDING_MOTTATT,
behovType = BehovType.LAGRE_JOURNALPOST_ID,
eventName = EventName.INNTEKTSMELDING_JOURNALFOERT,
transaksjonId = UUID.randomUUID(),
inntektsmelding = inntektsmelding,
journalpostId = randomDigitString(10),
Expand All @@ -244,7 +242,6 @@ private object Mock {
fun LagreJournalpostIdMelding.toMap(): Map<Key, JsonElement> =
mapOf(
Key.EVENT_NAME to eventName.toJson(),
Key.BEHOV to behovType.toJson(),
Key.UUID to transaksjonId.toJson(),
Key.JOURNALPOST_ID to journalpostId.toJson(),
Key.INNTEKTSMELDING to inntektsmelding.toJson(Inntektsmelding.serializer()),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ class FeilLytter(
listOf(
BehovType.LAGRE_FORESPOERSEL,
BehovType.JOURNALFOER,
BehovType.LAGRE_JOURNALPOST_ID,
)
val eventerSomHaandteres =
listOf(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ class FeilLytterTest :
}

test("skal håndtere feil uten forespørselId") {
val utloesendeMelding = utloesendeMelding(BehovType.LAGRE_JOURNALPOST_ID).minus(Key.FORESPOERSEL_ID)
val utloesendeMelding = utloesendeMelding(BehovType.JOURNALFOER).minus(Key.FORESPOERSEL_ID)
handler.behovSkalHaandteres(utloesendeMelding) shouldBe true
}

Expand Down Expand Up @@ -130,7 +130,7 @@ class FeilLytterTest :
repository.findByKjoeretidBeforeAndStatusIn(now.plusMinutes(1), setOf(BakgrunnsjobbStatus.OPPRETTET), true).size shouldBe 1
// nå kjører bakgrunnsjobb, plukker opp feilen og rekjører - det går fint, så feilen kommer ikke på nytt.
// Istedet feiler neste steg - nytt behov fra samme transaksjon
val feilmeldingLagre = lagRapidFeilmelding(BehovType.LAGRE_JOURNALPOST_ID, transaksjonId)
val feilmeldingLagre = lagRapidFeilmelding(BehovType.LAGRE_FORESPOERSEL, transaksjonId)
rapid.sendTestMessage(feilmeldingLagre)
// status på gammel jobb blir ikke oppdatert i denne testen..
repository.findByKjoeretidBeforeAndStatusIn(now.plusMinutes(1), setOf(BakgrunnsjobbStatus.OPPRETTET), true).size shouldBe 2
Expand All @@ -139,7 +139,7 @@ class FeilLytterTest :
val nyTransaksjonId = Key.UUID.les(UuidSerializer, Json.parseToJsonElement(utloesendeMelding).toMap())
transaksjonId shouldNotBeEqual nyTransaksjonId

val nyFeilmeldingLagre = lagRapidFeilmelding(BehovType.LAGRE_JOURNALPOST_ID, nyTransaksjonId)
val nyFeilmeldingLagre = lagRapidFeilmelding(BehovType.LAGRE_FORESPOERSEL, nyTransaksjonId)
rapid.sendTestMessage(nyFeilmeldingLagre) // !! ny tx, ikke samme igjen!

// Bakgrunnsjobben har blitt oppdatert og går til status FEILET..
Expand Down Expand Up @@ -245,7 +245,7 @@ class FeilLytterTest :
})

fun lagRapidFeilmelding(
behovType: BehovType = BehovType.LAGRE_JOURNALPOST_ID,
behovType: BehovType = BehovType.JOURNALFOER,
transaksjonId: UUID = UUID.randomUUID(),
): String {
val eventName = EventName.INNTEKTSMELDING_MOTTATT
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ enum class BehovType {

// Asynkrone endringer
LAGRE_FORESPOERSEL, // TODO slett etter databasen er flyttet
LAGRE_JOURNALPOST_ID, // kan erstattes av event

// Asynkrone endringer, men brukt til å prøve igjen ved feil
JOURNALFOER,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import kotlinx.serialization.builtins.serializer
import no.nav.helsearbeidsgiver.dokarkiv.domene.OpprettOgFerdigstillResponse
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.skjema.SkjemaInntektsmelding
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.til
import no.nav.helsearbeidsgiver.felles.BehovType
import no.nav.helsearbeidsgiver.felles.EventName
import no.nav.helsearbeidsgiver.felles.Key
import no.nav.helsearbeidsgiver.felles.domene.Forespoersel
Expand Down Expand Up @@ -93,7 +92,6 @@ class InnsendingIT : EndToEndTest() {

messages
.filter(EventName.INNTEKTSMELDING_JOURNALFOERT)
.filter(BehovType.LAGRE_JOURNALPOST_ID)
.firstAsMap()
.also {
it shouldContainKey Key.INNTEKTSMELDING
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,6 @@ class LagreSelvbestemtIT : EndToEndTest() {

messages
.filter(EventName.INNTEKTSMELDING_JOURNALFOERT)
.filter(BehovType.LAGRE_JOURNALPOST_ID)
.firstAsMap()
.shouldContainNokTilJournalfoeringOgDistribusjon(transaksjonId, nyInntektsmelding, compareType = false)

Expand Down Expand Up @@ -245,7 +244,6 @@ class LagreSelvbestemtIT : EndToEndTest() {

messages
.filter(EventName.INNTEKTSMELDING_JOURNALFOERT)
.filter(BehovType.LAGRE_JOURNALPOST_ID)
.firstAsMap()
.shouldContainNokTilJournalfoeringOgDistribusjon(transaksjonId, Mock.inntektsmelding, compareType = true)

Expand Down Expand Up @@ -319,7 +317,6 @@ class LagreSelvbestemtIT : EndToEndTest() {

messages
.filter(EventName.INNTEKTSMELDING_JOURNALFOERT)
.filter(BehovType.LAGRE_JOURNALPOST_ID)
.all()
.shouldBeEmpty()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import no.nav.helsearbeidsgiver.utils.collection.mapValuesNotNull
import no.nav.helsearbeidsgiver.utils.json.serializer.LocalDateSerializer
import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer
import no.nav.helsearbeidsgiver.utils.json.toJson
import no.nav.helsearbeidsgiver.utils.log.MdcUtils
import no.nav.helsearbeidsgiver.utils.log.logger
import no.nav.helsearbeidsgiver.utils.log.sikkerLogger
import java.time.LocalDate
Expand Down Expand Up @@ -74,7 +73,7 @@ class JournalfoerImRiver(
}

override fun JournalfoerImMelding.haandter(json: Map<Key, JsonElement>): Map<Key, JsonElement> {
"Mottok melding med event '$eventName'. Sender behov '${BehovType.LAGRE_JOURNALPOST_ID}'.".also {
"Mottok melding med event '$eventName'.".also {
logger.info(it)
sikkerLogger.info("$it Innkommende melding:\n${json.toPretty()}")
}
Expand All @@ -83,20 +82,15 @@ class JournalfoerImRiver(

return mapOf(
Key.EVENT_NAME to EventName.INNTEKTSMELDING_JOURNALFOERT.toJson(),
Key.BEHOV to BehovType.LAGRE_JOURNALPOST_ID.toJson(),
Key.UUID to transaksjonId.toJson(),
Key.JOURNALPOST_ID to journalpostId.toJson(),
Key.INNTEKTSMELDING to inntektsmelding.toJson(Inntektsmelding.serializer()),
Key.BESTEMMENDE_FRAVAERSDAG to bestemmendeFravaersdag?.toJson(),
Key.INNSENDING_ID to json[Key.INNSENDING_ID],
).mapValuesNotNull { it }
.also {
MdcUtils.withLogFields(
Log.behov(BehovType.LAGRE_JOURNALPOST_ID),
) {
logger.info("Publiserer behov '${BehovType.LAGRE_JOURNALPOST_ID}' med journalpost-ID '$journalpostId'.")
sikkerLogger.info("Publiserer behov:\n${it.toPretty()}")
}
logger.info("Publiserte melding med event '${EventName.INNTEKTSMELDING_JOURNALFOERT}' og journalpost-ID '$journalpostId'.")
sikkerLogger.info("Publiserte melding:\n${it.toPretty()}")
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,6 @@ class JournalfoerImRiverTest :
testRapid.firstMessage().toMap() shouldContainExactly
mapOf(
Key.EVENT_NAME to EventName.INNTEKTSMELDING_JOURNALFOERT.toJson(),
Key.BEHOV to BehovType.LAGRE_JOURNALPOST_ID.toJson(),
Key.UUID to innkommendeMelding.transaksjonId.toJson(),
Key.JOURNALPOST_ID to journalpostId.toJson(),
Key.INNTEKTSMELDING to Mock.inntektsmelding.toJson(Inntektsmelding.serializer()),
Expand Down Expand Up @@ -123,7 +122,6 @@ class JournalfoerImRiverTest :
testRapid.firstMessage().toMap() shouldContainExactly
mapOf(
Key.EVENT_NAME to EventName.INNTEKTSMELDING_JOURNALFOERT.toJson(),
Key.BEHOV to BehovType.LAGRE_JOURNALPOST_ID.toJson(),
Key.UUID to innkommendeMelding.transaksjonId.toJson(),
Key.JOURNALPOST_ID to journalpostId.toJson(),
Key.INNTEKTSMELDING to Mock.inntektsmelding.toJson(Inntektsmelding.serializer()),
Expand Down Expand Up @@ -175,7 +173,6 @@ class JournalfoerImRiverTest :
testRapid.firstMessage().toMap() shouldContainExactly
mapOf(
Key.EVENT_NAME to EventName.INNTEKTSMELDING_JOURNALFOERT.toJson(),
Key.BEHOV to BehovType.LAGRE_JOURNALPOST_ID.toJson(),
Key.UUID to innkommendeMelding.transaksjonId.toJson(),
Key.JOURNALPOST_ID to journalpostId.toJson(),
Key.INNTEKTSMELDING to Mock.inntektsmelding.toJson(Inntektsmelding.serializer()),
Expand Down