Skip to content

Commit

Permalink
Legg til støtte for venter-status for eksterne varsler (#851)
Browse files Browse the repository at this point in the history
  • Loading branch information
madsleegiil authored Nov 13, 2024
1 parent 014caae commit 4d96513
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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() );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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()})
Expand All @@ -67,12 +71,15 @@ fun JsonNode.deserialiserEksternVarselHendelse(): EksternVarsling {
)
}
EksternVarselStatus.feilet -> {
return Feilet(
Feilet(
varseltype,
varselId,
this["feilmelding"].asText()
)
}
EksternVarselStatus.venter -> {
Venter(varseltype, varselId)
}
}
}

Expand All @@ -84,5 +91,6 @@ enum class EksternVarselKanal {
enum class EksternVarselStatus {
bestilt,
sendt,
feilet
feilet,
venter // Vi tror det skjer når meldinger batches?
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ enum class VarselHendelseEventType {
sendt_ekstern,
renotifikasjon_ekstern,
bestilt_ekstern,
feilet_ekstern
feilet_ekstern,
venter_ekstern
}

const val EksternStatusOppdatertEventName = "eksternStatusOppdatert"
Expand All @@ -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 -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ open class VarselHendelseConsumer(
open fun consume(kafkaRecord: ConsumerRecord<String?, String>) {
val melding = kafkaRecord.value().deserialiserVarselHendelse()
when (melding) {
is EksternVarsling -> behandleEksternVarselHendelse(melding)
is EksternVarselOppdatering -> behandleEksternVarselHendelse(melding)
is InternVarselHendelseDTO -> behandleInternVarselHendelse(melding)
is VarselFraAnnenApp -> {}
}
Expand All @@ -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(
Expand All @@ -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)
}

}

0 comments on commit 4d96513

Please sign in to comment.