Skip to content

Commit

Permalink
La til hendelsetidspunkt i interne hendelser
Browse files Browse the repository at this point in the history
  • Loading branch information
nilsmsa committed Sep 25, 2024
1 parent 77481ad commit 9d4a028
Show file tree
Hide file tree
Showing 20 changed files with 117 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,17 @@ class TestDataGenerator {
arbeidsoekerId: Long = Random().nextLong(),
bekreftelseId: UUID = UUID.randomUUID(),
gjelderFra: Instant = Instant.now(),
gjelderTil: Instant = Instant.now()
) = BekreftelseTilgjengelig(hendelseId, periodeId, arbeidsoekerId, bekreftelseId, gjelderFra, gjelderTil)
gjelderTil: Instant = Instant.now(),
hendelseTidspunkt: Instant = Instant.now()
) = BekreftelseTilgjengelig(
hendelseId = hendelseId,
periodeId = periodeId,
arbeidssoekerId = arbeidsoekerId,
hendelseTidspunkt = hendelseTidspunkt,
bekreftelseId = bekreftelseId,
gjelderFra = gjelderFra,
gjelderTil = gjelderTil
)

fun nyBekreftelseRequest(
identitetsnummer: String? = null,
Expand Down
45 changes: 45 additions & 0 deletions apps/bekreftelse-min-side-oppgaver/nais/nais-dev.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
apiVersion: nais.io/v1alpha1
kind: Application
metadata:
name: paw-arbeidssoekerregisteret-bekreftelse-min-side-varsler
namespace: paw
labels:
team: paw
spec:
azure:
application:
enabled: true
image: {{ image }}
port: 8080
replicas:
min: 1
max: 1
env:
- name: KAFKA_KEYS_SCOPE
value: api://dev-gcp.paw.paw-kafka-key-generator/.default
liveness:
path: /internal/isAlive
initialDelay: 10
readiness:
path: /internal/isReady
initialDelay: 10
prometheus:
enabled: true
path: /internal/metrics
observability:
autoInstrumentation:
enabled: true
runtime: java
kafka:
pool: {{ kafka }}
streams: true
resources:
limits:
memory: 512Mi
requests:
memory: 256Mi
cpu: 25m
accessPolicy:
outbound:
rules:
- application: paw-kafka-key-generator
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import org.apache.kafka.streams.kstream.Produced
import org.apache.kafka.streams.processor.PunctuationType
import org.apache.kafka.streams.processor.api.Record
import org.slf4j.LoggerFactory
import java.time.Instant
import java.util.*

context(ApplicationConfiguration, ApplicationContext)
Expand Down Expand Up @@ -63,14 +64,16 @@ fun behandleGyldigSvar(arbeidssoekerId: Long, record: Record<Long, no.nav.paw.be
BaOmAaAvsluttePeriode(
hendelseId = UUID.randomUUID(),
periodeId = record.value().periodeId,
arbeidssoekerId = arbeidssoekerId
arbeidssoekerId = arbeidssoekerId,
hendelseTidspunkt = Instant.now()
)
} else null
val meldingMottatt = BekreftelseMeldingMottatt(
hendelseId = UUID.randomUUID(),
periodeId = record.value().periodeId,
arbeidssoekerId = arbeidssoekerId,
bekreftelseId = bekreftelse.bekreftelseId
bekreftelseId = bekreftelse.bekreftelseId,
hendelseTidspunkt = Instant.now()
)
return listOfNotNull(meldingMottatt, baOmAaAvslutte) to oppdatertBekreftelse
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,8 @@ private fun InternTilstand.handleUpdateBekreftelser(
arbeidssoekerId = periode.arbeidsoekerId,
bekreftelseId = bekreftelse.bekreftelseId,
gjelderFra = bekreftelse.gjelderFra,
gjelderTil = bekreftelse.gjelderTil
gjelderTil = bekreftelse.gjelderTil,
hendelseTidspunkt = Instant.now()
)
updatedBekreftelse to hendelse
}
Expand All @@ -95,7 +96,9 @@ private fun InternTilstand.handleUpdateBekreftelser(
hendelseId = UUID.randomUUID(),
periodeId = periode.periodeId,
arbeidssoekerId = periode.arbeidsoekerId,
bekreftelseId = bekreftelse.bekreftelseId
bekreftelseId = bekreftelse.bekreftelseId,
hendelseTidspunkt = Instant.now(),
leveringsfrist = bekreftelse.gjelderTil
)
updatedBekreftelse to hendelse
}
Expand All @@ -107,7 +110,8 @@ private fun InternTilstand.handleUpdateBekreftelser(
periodeId = periode.periodeId,
arbeidssoekerId = periode.arbeidsoekerId,
bekreftelseId = bekreftelse.bekreftelseId,
gjenstaandeTid = gjenstaendeGracePeriode(timestamp, bekreftelse.gjelderTil)
gjenstaandeTid = gjenstaendeGracePeriode(timestamp, bekreftelse.gjelderTil),
hendelseTidspunkt = Instant.now()
)
updatedBekreftelse to hendelse
}
Expand All @@ -118,7 +122,8 @@ private fun InternTilstand.handleUpdateBekreftelser(
hendelseId = UUID.randomUUID(),
periodeId = periode.periodeId,
arbeidssoekerId = periode.arbeidsoekerId,
bekreftelseId = bekreftelse.bekreftelseId
bekreftelseId = bekreftelse.bekreftelseId,
hendelseTidspunkt = Instant.now()
)
updatedBekreftelse to hendelse
}
Expand All @@ -140,7 +145,8 @@ private fun InternTilstand.createNewBekreftelseTilgjengelig(newBekreftelse: Bekr
arbeidssoekerId = periode.arbeidsoekerId,
bekreftelseId = newBekreftelse.bekreftelseId,
gjelderFra = newBekreftelse.gjelderFra,
gjelderTil = newBekreftelse.gjelderTil
gjelderTil = newBekreftelse.gjelderTil,
hendelseTidspunkt = Instant.now()
)

private operator fun <K, V> KeyValue<K, V>.component1(): K = key
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import org.apache.kafka.common.serialization.Serdes
import org.apache.kafka.streams.StreamsBuilder
import org.apache.kafka.streams.kstream.Produced
import org.apache.kafka.streams.state.KeyValueStore
import java.time.Instant
import java.util.*


Expand Down Expand Up @@ -40,9 +41,10 @@ fun StreamsBuilder.processPeriodeTopic() {
forward(
record.withValue(
PeriodeAvsluttet(
UUID.randomUUID(),
action.periode.id,
action.arbeidsoekerId
hendelseId = UUID.randomUUID(),
periodeId = action.periode.id,
arbeidssoekerId = action.arbeidsoekerId,
hendelseTidspunkt = Instant.now()
) as BekreftelseHendelse
)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ fun StreamsBuilder.appTopology(
): Topology {
val arenaFormidlingsgruppeSerde = ArenaFormidlingsgruppeSerde()
stream<Long, Periode>(periodeTopic)

.lagreEllerSlettPeriode(
stateStoreName = stateStoreName,
prometheusMeterRegistry = prometheusRegistry,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package no.nav.paw.bekreftelse.internehendelser

import java.time.Instant
import java.util.*

const val beOmAaAvsluttePeriodeHendelsesType = "bekreftelse.be_om_aa_avslutte_periode"
Expand All @@ -8,6 +9,7 @@ class BaOmAaAvsluttePeriode(
override val hendelseId: UUID,
override val periodeId: UUID,
override val arbeidssoekerId: Long,
override val hendelseTidspunkt: Instant,
) : BekreftelseHendelse {
override val hendelseType: String = beOmAaAvsluttePeriodeHendelsesType
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package no.nav.paw.bekreftelse.internehendelser

import java.time.Instant
import java.util.*

sealed interface BekreftelseHendelse {
val hendelseTidspunkt: Instant
val hendelseType: String
val hendelseId: UUID
val periodeId: UUID
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ object BekreftelseHendelseDeserializer: Deserializer<BekreftelseHendelse> {
bekreftelseTilgjengeligHendelseType -> objectMapper.readValue<BekreftelseTilgjengelig>(node.traverse())
meldingMottattHendelseType -> objectMapper.readValue<BekreftelseMeldingMottatt>(node.traverse())
periodeAvsluttetHendelsesType -> objectMapper.readValue<PeriodeAvsluttet>(node.traverse())
registerGracePeriodeGjenstaandeTid -> objectMapper.readValue<RegisterGracePeriodeGjendstaaendeTid>(node.traverse())
registerGracePeriodeGjenstaaendeTid -> objectMapper.readValue<RegisterGracePeriodeGjendstaaendeTid>(node.traverse())
else -> throw IllegalArgumentException("Ukjent hendelseType: $hendelseType")
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package no.nav.paw.bekreftelse.internehendelser

import java.time.Instant
import java.util.*

const val meldingMottattHendelseType = "bekreftelse.melding_mottatt"
Expand All @@ -8,6 +9,7 @@ data class BekreftelseMeldingMottatt(
override val hendelseId: UUID,
override val periodeId: UUID,
override val arbeidssoekerId: Long,
override val hendelseTidspunkt: Instant,
val bekreftelseId: UUID
) : BekreftelseHendelse {
override val hendelseType: String = meldingMottattHendelseType
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ data class BekreftelseTilgjengelig (
override val hendelseId: UUID,
override val periodeId: UUID,
override val arbeidssoekerId: Long,
override val hendelseTidspunkt: Instant,
val bekreftelseId: UUID,
val gjelderFra: Instant,
val gjelderTil: Instant
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package no.nav.paw.bekreftelse.internehendelser

import java.time.Instant
import java.util.*

const val eksternGracePeriodeUtloeptHendelseType = "bekreftelse.ekstern_grace_periode_utloept"
Expand All @@ -8,6 +9,7 @@ data class EksternGracePeriodeUtloept(
override val hendelseId: UUID,
override val periodeId: UUID,
override val arbeidssoekerId: Long,
override val hendelseTidspunkt: Instant,
val ansvarligNamespace: String,
val ansvarligId: String
) : BekreftelseHendelse {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package no.nav.paw.bekreftelse.internehendelser

import java.time.Instant
import java.util.*

const val leveringsfristUtloeptHendelseType = "bekreftelse.leveringsfrist_utloept"
Expand All @@ -8,7 +9,9 @@ data class LeveringsfristUtloept(
override val hendelseId: UUID,
override val periodeId: UUID,
override val arbeidssoekerId: Long,
val bekreftelseId: UUID
override val hendelseTidspunkt: Instant,
val bekreftelseId: UUID,
val leveringsfrist: Instant
) : BekreftelseHendelse {
override val hendelseType: String = leveringsfristUtloeptHendelseType
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package no.nav.paw.bekreftelse.internehendelser

import java.time.Instant
import java.util.*


Expand All @@ -8,7 +9,8 @@ const val periodeAvsluttetHendelsesType = "bekreftelse.periode_avsluttet"
data class PeriodeAvsluttet(
override val hendelseId: UUID,
override val periodeId: UUID,
override val arbeidssoekerId: Long
) : BekreftelseHendelse {
override val arbeidssoekerId: Long,
override val hendelseTidspunkt: Instant
) : BekreftelseHendelse {
override val hendelseType: String = periodeAvsluttetHendelsesType
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
package no.nav.paw.bekreftelse.internehendelser

import java.time.Duration
import java.time.Instant
import java.util.*

const val registerGracePeriodeGjenstaandeTid = "bekreftelse.register_grace_periode_gjenstaande_tid"
const val registerGracePeriodeGjenstaaendeTid = "bekreftelse.register_grace_periode_gjenstaaende_tid"

data class RegisterGracePeriodeGjendstaaendeTid(
override val hendelseId: UUID,
override val periodeId: UUID,
override val arbeidssoekerId: Long,
override val hendelseTidspunkt: Instant,
val bekreftelseId: UUID,
val gjenstaandeTid: Duration
) : BekreftelseHendelse {
override val hendelseType: String = registerGracePeriodeGjenstaandeTid
override val hendelseType: String = registerGracePeriodeGjenstaaendeTid
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package no.nav.paw.bekreftelse.internehendelser

import java.time.Instant
import java.util.*

const val registerGracePeriodeUtloeptHendelseType = "bekreftelse.register_grace_periode_utloept"
Expand All @@ -8,6 +9,7 @@ data class RegisterGracePeriodeUtloept(
override val hendelseId: UUID,
override val periodeId: UUID,
override val arbeidssoekerId: Long,
override val hendelseTidspunkt: Instant,
val bekreftelseId: UUID
) : BekreftelseHendelse {
override val hendelseType: String = registerGracePeriodeUtloeptHendelseType
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package no.nav.paw.bekreftelse.internehendelser

import io.kotest.core.spec.style.FreeSpec
import io.kotest.matchers.shouldBe
import java.time.Instant
import java.util.*

class SerdeTest : FreeSpec({
Expand All @@ -11,7 +12,9 @@ class SerdeTest : FreeSpec({
hendelseId = UUID.randomUUID(),
periodeId = UUID.randomUUID(),
bekreftelseId = UUID.randomUUID(),
arbeidssoekerId = 1234567890L
arbeidssoekerId = 1234567890L,
hendelseTidspunkt = Instant.now(),
leveringsfrist = Instant.now()
)
val resultat = BekreftelseHendelseSerializer.serialize("", hendelse)
.let { serialized ->
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
package no.nav.paw.arbeidssoekerregisteret.testdata.bekreftelse

import no.nav.paw.bekreftelse.internehendelser.BekreftelseMeldingMottatt
import java.time.Instant
import java.util.*

fun bekreftelseMottatt(
bekreftelseId: UUID = UUID.randomUUID(),
periodeId: UUID = UUID.randomUUID(),
hendelseId: UUID = UUID.randomUUID(),
arbeidssoekerId: Long = 1L,
hendelseTidspunkt: Instant = Instant.now()
) = BekreftelseMeldingMottatt(
bekreftelseId = bekreftelseId,
periodeId = periodeId,
hendelseId = hendelseId,
arbeidssoekerId = arbeidssoekerId
arbeidssoekerId = arbeidssoekerId,
hendelseTidspunkt = hendelseTidspunkt
)
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,14 @@ fun bekreftelseTilgjengelig(
hendelseId: UUID = UUID.randomUUID(),
arbeidssoekerId: Long = 1L,
gjelderFra: Instant = Instant.now(),
gjelderTil: Instant = gjelderFra + Duration.ofDays(14)
gjelderTil: Instant = gjelderFra + Duration.ofDays(14),
hendelseTidspunkt: Instant = Instant.now()
) = BekreftelseTilgjengelig(
bekreftelseId = bekreftelseId,
periodeId = periodeId,
hendelseId = hendelseId,
arbeidssoekerId = arbeidssoekerId,
gjelderFra = gjelderFra,
gjelderTil = gjelderTil,
hendelseTidspunkt = hendelseTidspunkt
)
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
package no.nav.paw.arbeidssoekerregisteret.testdata.bekreftelse

import no.nav.paw.bekreftelse.internehendelser.PeriodeAvsluttet
import java.time.Instant
import java.util.*

fun periodeAvsluttet(
hendelseId: UUID = UUID.randomUUID(),
periodeId: UUID = UUID.randomUUID(),
arbeidssøkerId: Long = 1L
arbeidssøkerId: Long = 1L,
hendelseTidspunkt: Instant = Instant.now()
) = PeriodeAvsluttet(
hendelseId = hendelseId,
periodeId = periodeId,
arbeidssoekerId = arbeidssøkerId,
hendelseTidspunkt = hendelseTidspunkt
)

0 comments on commit 9d4a028

Please sign in to comment.