From 4d96513a71972da95576b3d129ccf1901b326b49 Mon Sep 17 00:00:00 2001 From: Mads Lee Giil <74543378+madsleegiil@users.noreply.github.com> Date: Wed, 13 Nov 2024 10:04:14 +0100 Subject: [PATCH] =?UTF-8?q?Legg=20til=20st=C3=B8tte=20for=20venter-status?= =?UTF-8?q?=20for=20eksterne=20varsler=20(#851)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kvittering/VarselHendelseMetrikk.java | 4 +-- .../EksternVarselHendelseDTO.kt | 24 ++++++++++----- .../varselStatusHendelse/VarselHendelse.kt | 5 ++-- .../VarselHendelseConsumer.kt | 29 +++++++------------ 4 files changed, 32 insertions(+), 30 deletions(-) diff --git a/src/main/java/no/nav/veilarbaktivitet/brukernotifikasjon/kvittering/VarselHendelseMetrikk.java b/src/main/java/no/nav/veilarbaktivitet/brukernotifikasjon/kvittering/VarselHendelseMetrikk.java index b1bbf605f..1b1515d54 100644 --- a/src/main/java/no/nav/veilarbaktivitet/brukernotifikasjon/kvittering/VarselHendelseMetrikk.java +++ b/src/main/java/no/nav/veilarbaktivitet/brukernotifikasjon/kvittering/VarselHendelseMetrikk.java @@ -4,7 +4,7 @@ import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.Timer; import kotlin.enums.EnumEntries; -import no.nav.veilarbaktivitet.brukernotifikasjon.varselStatusHendelse.EksternVarsling; +import no.nav.veilarbaktivitet.brukernotifikasjon.varselStatusHendelse.EksternVarselOppdatering; import no.nav.veilarbaktivitet.brukernotifikasjon.varselStatusHendelse.Feilet; import no.nav.veilarbaktivitet.brukernotifikasjon.varselStatusHendelse.InternVarselHendelseDTO; import no.nav.veilarbaktivitet.brukernotifikasjon.varselStatusHendelse.VarselHendelseEventType; @@ -62,7 +62,7 @@ public void incrementInternVarselMetrikk(InternVarselHendelseDTO event) { .increment(); } - public void incrementVarselKvitteringMottatt(EksternVarsling event) { + public void incrementVarselKvitteringMottatt(EksternVarselOppdatering event) { var counterBuilder = Counter.builder(VARSEL_HENDELSE); if(event.getHendelseType() == VarselHendelseEventType.feilet_ekstern) { counterBuilder.tag(FEILMELDING, ((Feilet) event).getFeilmelding() ); diff --git a/src/main/kotlin/no/nav/veilarbaktivitet/brukernotifikasjon/varselStatusHendelse/EksternVarselHendelseDTO.kt b/src/main/kotlin/no/nav/veilarbaktivitet/brukernotifikasjon/varselStatusHendelse/EksternVarselHendelseDTO.kt index a5d1b19ae..55e65c774 100644 --- a/src/main/kotlin/no/nav/veilarbaktivitet/brukernotifikasjon/varselStatusHendelse/EksternVarselHendelseDTO.kt +++ b/src/main/kotlin/no/nav/veilarbaktivitet/brukernotifikasjon/varselStatusHendelse/EksternVarselHendelseDTO.kt @@ -21,7 +21,7 @@ data class EksternVarselHendelseDTO( val kanal: EksternVarselKanal? = null ) object VarselFraAnnenApp: VarselHendelse() -sealed class EksternVarsling( +sealed class EksternVarselOppdatering( val varselId: MinSideVarselId, val hendelseType: VarselHendelseEventType, val varseltype: Varseltype @@ -30,23 +30,27 @@ sealed class EksternVarsling( class Renotifikasjon( varseltype: Varseltype, varselId: MinSideVarselId, -): EksternVarsling(varselId, VarselHendelseEventType.renotifikasjon_ekstern, varseltype) +): EksternVarselOppdatering(varselId, VarselHendelseEventType.renotifikasjon_ekstern, varseltype) class Sendt( varseltype: Varseltype, varselId: MinSideVarselId, val kanal: EksternVarselKanal -): EksternVarsling(varselId, VarselHendelseEventType.sendt_ekstern, varseltype) +): EksternVarselOppdatering(varselId, VarselHendelseEventType.sendt_ekstern, varseltype) class Bestilt( varseltype: Varseltype, varselId: MinSideVarselId, -): EksternVarsling(varselId, VarselHendelseEventType.bestilt_ekstern, varseltype) +): EksternVarselOppdatering(varselId, VarselHendelseEventType.bestilt_ekstern, varseltype) class Feilet( varseltype: Varseltype, varselId: MinSideVarselId, val feilmelding: String -): EksternVarsling(varselId, VarselHendelseEventType.feilet_ekstern, varseltype) +): EksternVarselOppdatering(varselId, VarselHendelseEventType.feilet_ekstern, varseltype) +class Venter( + varseltype: Varseltype, + varselId: MinSideVarselId, +): EksternVarselOppdatering(varselId, VarselHendelseEventType.venter_ekstern, varseltype) -fun JsonNode.deserialiserEksternVarselHendelse(): EksternVarsling { +fun JsonNode.deserialiserEksternVarselHendelse(): EksternVarselOppdatering { val eksternStatus = EksternVarselStatus.valueOf(this["status"].asText()) val varselId = MinSideVarselId(UUID.fromString(this["varselId"].asText())) val varseltype = Varseltype.valueOf(this["varseltype"].asText().replaceFirstChar { it.titlecase()}) @@ -67,12 +71,15 @@ fun JsonNode.deserialiserEksternVarselHendelse(): EksternVarsling { ) } EksternVarselStatus.feilet -> { - return Feilet( + Feilet( varseltype, varselId, this["feilmelding"].asText() ) } + EksternVarselStatus.venter -> { + Venter(varseltype, varselId) + } } } @@ -84,5 +91,6 @@ enum class EksternVarselKanal { enum class EksternVarselStatus { bestilt, sendt, - feilet + feilet, + venter // Vi tror det skjer når meldinger batches? } diff --git a/src/main/kotlin/no/nav/veilarbaktivitet/brukernotifikasjon/varselStatusHendelse/VarselHendelse.kt b/src/main/kotlin/no/nav/veilarbaktivitet/brukernotifikasjon/varselStatusHendelse/VarselHendelse.kt index 1b1006891..041a7db22 100644 --- a/src/main/kotlin/no/nav/veilarbaktivitet/brukernotifikasjon/varselStatusHendelse/VarselHendelse.kt +++ b/src/main/kotlin/no/nav/veilarbaktivitet/brukernotifikasjon/varselStatusHendelse/VarselHendelse.kt @@ -13,7 +13,8 @@ enum class VarselHendelseEventType { sendt_ekstern, renotifikasjon_ekstern, bestilt_ekstern, - feilet_ekstern + feilet_ekstern, + venter_ekstern } const val EksternStatusOppdatertEventName = "eksternStatusOppdatert" @@ -22,8 +23,8 @@ fun String.deserialiserVarselHendelse(): VarselHendelse { val jsonTree = JsonUtils.getMapper().readTree(this) val eventName = jsonTree["@event_name"].asText() val appNavn = jsonTree["appnavn"].asText() - val varseltype = Varseltype.valueOf(jsonTree["varseltype"].asText().replaceFirstChar { it.titlecase()}) if (appNavn != "veilarbaktivitet") return VarselFraAnnenApp + val varseltype = Varseltype.valueOf(jsonTree["varseltype"].asText().replaceFirstChar { it.titlecase()}) return when (eventName == EksternStatusOppdatertEventName) { true -> jsonTree.deserialiserEksternVarselHendelse() else -> { diff --git a/src/main/kotlin/no/nav/veilarbaktivitet/brukernotifikasjon/varselStatusHendelse/VarselHendelseConsumer.kt b/src/main/kotlin/no/nav/veilarbaktivitet/brukernotifikasjon/varselStatusHendelse/VarselHendelseConsumer.kt index 0d6333a58..b3dd7cc36 100644 --- a/src/main/kotlin/no/nav/veilarbaktivitet/brukernotifikasjon/varselStatusHendelse/VarselHendelseConsumer.kt +++ b/src/main/kotlin/no/nav/veilarbaktivitet/brukernotifikasjon/varselStatusHendelse/VarselHendelseConsumer.kt @@ -29,7 +29,7 @@ open class VarselHendelseConsumer( open fun consume(kafkaRecord: ConsumerRecord) { val melding = kafkaRecord.value().deserialiserVarselHendelse() when (melding) { - is EksternVarsling -> behandleEksternVarselHendelse(melding) + is EksternVarselOppdatering -> behandleEksternVarselHendelse(melding) is InternVarselHendelseDTO -> behandleInternVarselHendelse(melding) is VarselFraAnnenApp -> {} } @@ -50,8 +50,8 @@ open class VarselHendelseConsumer( } } - open fun behandleEksternVarselHendelse(hendelse: EksternVarsling) { - val varselId = hendelse.varselId + open fun behandleEksternVarselHendelse(varsel: EksternVarselOppdatering) { + val varselId = varsel.varselId if (!varselDAO.finnesBrukernotifikasjon(varselId)) { log.warn( @@ -61,34 +61,27 @@ open class VarselHendelseConsumer( throw IllegalArgumentException("Ugyldig varselId.") } -// kvitteringDAO.lagreKvitering(varselId, Kvittering( -// status = hendelse.status.name, -// melding = hendelse.feilmelding, -// ), hendelse) + log.info("Minside varsel (ekstern) av type {} er {} varselId {}", varsel.varseltype, varsel.hendelseType, varselId); - when (hendelse) { + when (varsel) { is Sendt -> { kvitteringDAO.setEksternVarselStatusOK(varselId) - log.info("Minside varsel (ekstern) varsel sendt for varselId={} kanal={}", varselId, hendelse.kanal) - } - is Bestilt -> { - log.info("Minside varsel (ekstern) bestilt for varselId={}", varselId) - } - is Renotifikasjon -> { - log.info("Minside varsel (ekstern) renotifikasjon for varselId={}", varselId) } + is Bestilt -> {} + is Renotifikasjon -> {} is Feilet -> { log.warn( "Minside varsel (ekstern) feilet for varselId={} med melding {}", varselId, - hendelse.feilmelding + varsel.feilmelding ) kvitteringDAO.setFeilet(varselId) } - else -> {} + + is Venter -> {} } - varselHendelseMetrikk.incrementVarselKvitteringMottatt(hendelse) + varselHendelseMetrikk.incrementVarselKvitteringMottatt(varsel) } } \ No newline at end of file