Skip to content

Commit 8c8a5c2

Browse files
Omdøpt tilstander til henholdsvis BekreftelseTilstand og PaaVegneAvTilstand, skrevet om fra ansvar til bekreftelsePaaVegneAv gjennomgående, oppdatert tester til å reflektere navnendringene. Fikset feilende tester i IngenStarterBekreftelsePaaVegneAvTest
1 parent 79e6bc6 commit 8c8a5c2

23 files changed

+252
-245
lines changed

apps/bekreftelse-tjeneste/README.md

+12-17
Original file line numberDiff line numberDiff line change
@@ -13,53 +13,48 @@ sequenceDiagram
1313
```mermaid
1414
sequenceDiagram
1515
Registeret->>PeriodeTopic: Periode startet
16-
Dagpenger-->>AnsvarsTopic: Dagpenger startet
17-
AnsvarsTopic-->>MeldepliktTjeneste: Dagpenger tar over
18-
MeldepliktTjeneste-->>EndringerTopic:
16+
Dagpenger-->>BekreftelsePaaVegneAvTopic: Dagpenger startet
17+
BekreftelsePaaVegneAvTopic-->>BekreftelseTjeneste: Dagpenger tar over
1918
```
2019

21-
```mermaid
22-
graph LR
23-
periodeTopic((PeriodeTopic)) -- Startet --> Ansvar[Ansvar]
24-
```
2520
```
2621
periode topic:
2722
startet: lagre initiell tilstand
2823
avsluttet: send ok(avsluttet)
2924
:slett tilstand
3025
31-
ansvar topic:
32-
tar ansvar: lagre info om ansvar
33-
:sett tidspunkt for siste melding til record ts for ansvars endring
34-
avslutter ansvar: slett info om ansvar
26+
bekreftelse paaVegneAv topic:
27+
starter paaVegneAv: lagre paaVegneAv info
28+
:sett tidspunkt for siste melding til record ts for paaVegneAv endring
29+
stopper paaVegneAv: slett paaVegneAv info
3530
36-
melding topic:
31+
bekreftelse melding topic:
3732
mottatt: lagre tidspunkt for siste melding
3833
:send OK(mottatt)
3934
dersom ikke ønsker å fortsette:
4035
:send VilAvsluttePerioden
4136
4237
4338
hver x time:
44-
for alle perioder ingen har ansvar for:
39+
for alle perioder ingen har bekreftelse paaVegneAv for:
4540
dersom tid siden siste melding (eller periode start) > Y dager:
4641
send melding om frist nærmer seg
4742
dersom tid siden siste melding (eller periode start) > Z dager:
4843
send melding om frist utløpt
4944
dersom tid siden siste melding (eller periode start) > Z+Grace dager:
5045
send melding om graceperiode utløpt
51-
for alle perioder andre har ansvar for:
46+
for alle perioder andre sender bekreftelse paaVegneAv for:
5247
dersom tid siden siste melding (eller periode start) > Z+G+1dag dager:
5348
send melding om graceperiode utløpt
54-
:slett ansvar, vi overtar
49+
:stopp paaVegneAv, vi overtar
5550
```
5651

5752
Modul: endringer til frontend
5853
```
5954
meldings topic:
6055
- OK(mottatt) -> sett oppgave fullført
6156
- OK(avsluttet) -> slett oppgave kansellert
62-
- OK(ansvar) -> sett oppgave fullført
57+
- OK(paaVegneAv) -> sett oppgave fullført
6358
- frist nærmer seg -> opprett oppgave
6459
- frist utløpt -> opprett oppgave
6560
- graceperiode utløpt -> ingenting
@@ -71,5 +66,5 @@ Modul: endringer til eventlogg
7166
- VilAvsluttePerioden -> send avslutt hendelse til eventlogg
7267
7368
```
74-
* OK (grunn: RapportMottatt, AnsvarFlyttet, PeriodeAvsluttet)
69+
* OK (grunn: BekreftelseMottatt, PaaVegneAv Start, PeriodeAvsluttet)
7570
*

apps/bekreftelse-tjeneste/src/main/kotlin/no/nav/paw/bekreftelsetjeneste/paavegneav/handterBekreftelsePaaVegneAv.kt apps/bekreftelse-tjeneste/src/main/kotlin/no/nav/paw/bekreftelsetjeneste/paavegneav/HaandterBekreftelsePaaVegneAv.kt

+26-26
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,22 @@ value class WallClock(val value: Instant)
1515

1616
fun haandterBekreftelsePaaVegneAvEndret(
1717
wallclock: WallClock,
18-
tilstand: InternTilstand?,
18+
bekreftelseTilstand: BekreftelseTilstand?,
1919
paaVegneAvTilstand: PaaVegneAvTilstand?,
20-
paaVegneAv: PaaVegneAv
20+
paaVegneAvHendelse: PaaVegneAv
2121
): List<Handling> {
22-
return when (val handling = paaVegneAv.handling) {
22+
return when (val handling = paaVegneAvHendelse.handling) {
2323
is Start -> startPaaVegneAv(
2424
wallclock = wallclock,
25-
tilstand = tilstand,
25+
bekreftelseTilstand = bekreftelseTilstand,
2626
paaVegneAvTilstand = paaVegneAvTilstand,
27-
paaVegneAv = paaVegneAv,
27+
paaVegneAvHendelse = paaVegneAvHendelse,
2828
handling = handling
2929
)
3030

3131
is Stopp -> stoppPaaVegneAv(
3232
paaVegneAvTilstand = paaVegneAvTilstand,
33-
paaVegneAv = paaVegneAv
33+
paaVegneAvHendelse = paaVegneAvHendelse
3434
)
3535

3636
else -> emptyList()
@@ -39,40 +39,40 @@ fun haandterBekreftelsePaaVegneAvEndret(
3939

4040
fun stoppPaaVegneAv(
4141
paaVegneAvTilstand: PaaVegneAvTilstand?,
42-
paaVegneAv: PaaVegneAv
42+
paaVegneAvHendelse: PaaVegneAv
4343
): List<Handling> {
44-
val oppdatertPaaVegneAv = paaVegneAvTilstand - Loesning.from(paaVegneAv.bekreftelsesloesning)
44+
val oppdatertPaaVegneAv = paaVegneAvTilstand - Loesning.from(paaVegneAvHendelse.bekreftelsesloesning)
4545
val paaVegneAvHandling = when {
46-
paaVegneAvTilstand != null && oppdatertPaaVegneAv == null -> SlettBekreftelsePaaVegneAv(paaVegneAv.periodeId)
47-
paaVegneAvTilstand != null && oppdatertPaaVegneAv != null -> SkrivBekreftelsePaaVegneAv(paaVegneAv.periodeId, oppdatertPaaVegneAv)
46+
paaVegneAvTilstand != null && oppdatertPaaVegneAv == null -> SlettPaaVegneAvTilstand(paaVegneAvHendelse.periodeId)
47+
paaVegneAvTilstand != null && oppdatertPaaVegneAv != null -> SkrivPaaVegneAvTilstand(paaVegneAvHendelse.periodeId, oppdatertPaaVegneAv)
4848
else -> null
4949
}
5050
return listOfNotNull(paaVegneAvHandling)
5151
}
5252

5353
fun startPaaVegneAv(
5454
wallclock: WallClock,
55-
tilstand: InternTilstand?,
55+
bekreftelseTilstand: BekreftelseTilstand?,
5656
paaVegneAvTilstand: PaaVegneAvTilstand?,
57-
paaVegneAv: PaaVegneAv,
57+
paaVegneAvHendelse: PaaVegneAv,
5858
handling: Start
5959
): List<Handling> {
60-
val oppdatertInternPaaVegneAv =
61-
(paaVegneAvTilstand ?: bekreftelsePaaVegneAvTilstand(paaVegneAv.periodeId)) +
60+
val oppdatertPaaVegneAvTilstand =
61+
(paaVegneAvTilstand ?: opprettPaaVegneAvTilstand(paaVegneAvHendelse.periodeId)) +
6262
InternPaaVegneAv(
63-
loesning = Loesning.from(paaVegneAv.bekreftelsesloesning),
63+
loesning = Loesning.from(paaVegneAvHendelse.bekreftelsesloesning),
6464
intervall = Duration.ofMillis(handling.intervalMS),
6565
gracePeriode = Duration.ofMillis(handling.graceMS)
6666
)
67-
val hendelse = tilstand?.let {
67+
val hendelse = bekreftelseTilstand?.let {
6868
BekreftelsePaaVegneAvStartet(
6969
hendelseId = UUID.randomUUID(),
70-
periodeId = paaVegneAv.periodeId,
71-
arbeidssoekerId = tilstand.periode.arbeidsoekerId,
70+
periodeId = paaVegneAvHendelse.periodeId,
71+
arbeidssoekerId = bekreftelseTilstand.periode.arbeidsoekerId,
7272
hendelseTidspunkt = wallclock.value,
7373
)
7474
}
75-
val oppdaterInternTilstand = tilstand?.let {
75+
val oppdaterBekreftelseTilstand = bekreftelseTilstand?.let {
7676
val oppdaterteBekreftelser = it.bekreftelser
7777
.map { bekreftelse ->
7878
when (bekreftelse.sisteTilstand()) {
@@ -85,19 +85,19 @@ fun startPaaVegneAv(
8585
}
8686
it.copy(bekreftelser = oppdaterteBekreftelser)
8787
}
88-
?.takeIf { oppdatertTilstand -> oppdatertTilstand != tilstand }
89-
?.let { oppdatertTilstand -> SkrivInternTilstand(oppdatertTilstand.periode.periodeId, oppdatertTilstand) }
88+
?.takeIf { oppdatertBekreftelseTilstand -> oppdatertBekreftelseTilstand != bekreftelseTilstand }
89+
?.let { oppdatertBekreftelseTilstand -> SkrivBekreftelseTilstand(oppdatertBekreftelseTilstand.periode.periodeId, oppdatertBekreftelseTilstand) }
9090

9191
return listOfNotNull(
92-
if (paaVegneAvTilstand != oppdatertInternPaaVegneAv) SkrivBekreftelsePaaVegneAv(paaVegneAv.periodeId, oppdatertInternPaaVegneAv) else null,
93-
oppdaterInternTilstand,
92+
if (paaVegneAvTilstand != oppdatertPaaVegneAvTilstand) SkrivPaaVegneAvTilstand(paaVegneAvHendelse.periodeId, oppdatertPaaVegneAvTilstand) else null,
93+
oppdaterBekreftelseTilstand,
9494
hendelse?.let(::SendHendelse)
9595
)
9696
}
9797

9898

9999
sealed interface Handling
100-
data class SlettBekreftelsePaaVegneAv(val id: UUID) : Handling
101-
data class SkrivBekreftelsePaaVegneAv(val id: UUID, val value: PaaVegneAvTilstand) : Handling
102-
data class SkrivInternTilstand(val id: UUID, val value: InternTilstand) : Handling
100+
data class SlettPaaVegneAvTilstand(val id: UUID) : Handling
101+
data class SkrivPaaVegneAvTilstand(val id: UUID, val value: PaaVegneAvTilstand) : Handling
102+
data class SkrivBekreftelseTilstand(val id: UUID, val value: BekreftelseTilstand) : Handling
103103
data class SendHendelse(val hendelse: BekreftelseHendelse) : Handling

apps/bekreftelse-tjeneste/src/main/kotlin/no/nav/paw/bekreftelsetjeneste/paavegneav/PaaVegneAvTilstand.kt

+9-9
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import java.util.*
66

77
data class PaaVegneAvTilstand(
88
val periodeId: UUID,
9-
val internPaaVegneAvList: List<InternPaaVegneAv>
9+
val paaVegneAvList: List<InternPaaVegneAv>
1010
)
1111

1212
data class InternPaaVegneAv(
@@ -34,21 +34,21 @@ enum class Loesning {
3434
}
3535
}
3636

37-
fun bekreftelsePaaVegneAvTilstand(
37+
fun opprettPaaVegneAvTilstand(
3838
periodeId: UUID,
39-
internPaaVegneAv: InternPaaVegneAv? = null
39+
paaVegneAv: InternPaaVegneAv? = null
4040
): PaaVegneAvTilstand = PaaVegneAvTilstand(
4141
periodeId = periodeId,
42-
internPaaVegneAvList = listOfNotNull(internPaaVegneAv)
42+
paaVegneAvList = listOfNotNull(paaVegneAv)
4343
)
4444

45-
operator fun PaaVegneAvTilstand.plus(internPaaVegneAv: InternPaaVegneAv): PaaVegneAvTilstand =
46-
copy(internPaaVegneAvList = internPaaVegneAvList
47-
.filterNot { it.loesning == internPaaVegneAv.loesning} + internPaaVegneAv
45+
operator fun PaaVegneAvTilstand.plus(paaVegneAv: InternPaaVegneAv): PaaVegneAvTilstand =
46+
copy(paaVegneAvList = paaVegneAvList
47+
.filterNot { it.loesning == paaVegneAv.loesning} + paaVegneAv
4848
)
4949

5050
operator fun PaaVegneAvTilstand?.minus(loesning: Loesning): PaaVegneAvTilstand? =
51-
this?.internPaaVegneAvList
51+
this?.paaVegneAvList
5252
?.filterNot { it.loesning == loesning }
5353
?.takeIf(List<InternPaaVegneAv>::isNotEmpty)
54-
?.let { copy(internPaaVegneAvList = it) }
54+
?.let { copy(paaVegneAvList = it) }

apps/bekreftelse-tjeneste/src/main/kotlin/no/nav/paw/bekreftelsetjeneste/tilstand/Bekreftelse.kt

+5-5
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ data class Bekreftelse(
1313
val gjelderTil: Instant
1414
)
1515

16-
inline fun <reified T: BekreftelseTilstand> Bekreftelse.tilstand(): T? = tilstandsLogg.get()
16+
inline fun <reified T: BekreftelseTilstandStatus> Bekreftelse.tilstand(): T? = tilstandsLogg.get()
1717

18-
inline fun <reified T: BekreftelseTilstand> Bekreftelse.has(): Boolean = tilstand<T>() != null
18+
inline fun <reified T: BekreftelseTilstandStatus> Bekreftelse.has(): Boolean = tilstand<T>() != null
1919

20-
fun Bekreftelse.sisteTilstand(): BekreftelseTilstand = tilstandsLogg.siste
20+
fun Bekreftelse.sisteTilstand(): BekreftelseTilstandStatus = tilstandsLogg.siste
2121

22-
operator fun Bekreftelse.plus(bekreftelseTilstand: BekreftelseTilstand): Bekreftelse =
23-
copy(tilstandsLogg = tilstandsLogg + bekreftelseTilstand)
22+
operator fun Bekreftelse.plus(bekreftelseTilstandStatus: BekreftelseTilstandStatus): Bekreftelse =
23+
copy(tilstandsLogg = tilstandsLogg + bekreftelseTilstandStatus)
2424

2525
fun opprettFoersteBekreftelse(
2626
tidligsteStartTidspunktForBekreftelse: Instant,

apps/bekreftelse-tjeneste/src/main/kotlin/no/nav/paw/bekreftelsetjeneste/tilstand/BekreftelseTilstand.kt

+37-23
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,43 @@
11
package no.nav.paw.bekreftelsetjeneste.tilstand
22

3-
import com.fasterxml.jackson.annotation.JsonSubTypes
4-
import com.fasterxml.jackson.annotation.JsonTypeInfo
5-
import java.time.Instant
3+
import no.nav.paw.arbeidssokerregisteret.api.v1.Periode
64

7-
@JsonTypeInfo(
8-
use = JsonTypeInfo.Id.NAME,
9-
include = JsonTypeInfo.As.PROPERTY,
10-
property = "type"
11-
)
12-
@JsonSubTypes(
13-
JsonSubTypes.Type(value = IkkeKlarForUtfylling::class, name = "IkkeKlarForUtfylling"),
14-
JsonSubTypes.Type(value = KlarForUtfylling::class, name = "KlarForUtfylling"),
15-
JsonSubTypes.Type(value = VenterSvar::class, name = "VenterSvar"),
16-
JsonSubTypes.Type(value = GracePeriodeUtloept::class, name = "GracePeriodeUtloept"),
17-
JsonSubTypes.Type(value = Levert::class, name = "Levert")
5+
const val MAKS_ANTALL_HISTRISKE_BEKREFTELSER = 20
6+
7+
@JvmRecord
8+
data class BekreftelseTilstand(
9+
val periode: PeriodeInfo,
10+
val bekreftelser: List<Bekreftelse>
1811
)
19-
sealed interface BekreftelseTilstand {
20-
val timestamp: Instant
12+
13+
fun opprettBekreftelseTilstand(
14+
id: Long,
15+
key: Long,
16+
periode: Periode,
17+
): BekreftelseTilstand =
18+
BekreftelseTilstand(
19+
periode = PeriodeInfo(
20+
periodeId = periode.id,
21+
identitetsnummer = periode.identitetsnummer,
22+
arbeidsoekerId = id,
23+
recordKey = key,
24+
startet = periode.startet.tidspunkt,
25+
avsluttet = periode.avsluttet?.tidspunkt
26+
),
27+
bekreftelser = emptyList()
28+
)
29+
30+
fun BekreftelseTilstand.oppdaterBekreftelse(ny: Bekreftelse): BekreftelseTilstand {
31+
val nyBekreftelser = bekreftelser.map {
32+
if (it.bekreftelseId == ny.bekreftelseId) ny else it
33+
}
34+
return copy(bekreftelser = nyBekreftelser)
35+
}
36+
37+
fun BekreftelseTilstand.leggTilNyEllerOppdaterBekreftelse(ny: Bekreftelse): BekreftelseTilstand {
38+
val nyBekreftelser = bekreftelser
39+
.filter { it.bekreftelseId != ny.bekreftelseId }
40+
.plus(ny)
41+
return copy(bekreftelser = nyBekreftelser)
2142
}
2243

23-
data class GracePeriodeUtloept(override val timestamp: Instant) : BekreftelseTilstand
24-
data class GracePeriodeVarselet(override val timestamp: Instant) : BekreftelseTilstand
25-
data class IkkeKlarForUtfylling(override val timestamp: Instant) : BekreftelseTilstand
26-
data class KlarForUtfylling(override val timestamp: Instant) : BekreftelseTilstand
27-
data class Levert(override val timestamp: Instant) : BekreftelseTilstand
28-
data class VenterSvar(override val timestamp: Instant) : BekreftelseTilstand
29-
data class InternBekreftelsePaaVegneAvStartet(override val timestamp: Instant) : BekreftelseTilstand
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package no.nav.paw.bekreftelsetjeneste.tilstand
2+
3+
import com.fasterxml.jackson.annotation.JsonSubTypes
4+
import com.fasterxml.jackson.annotation.JsonTypeInfo
5+
import java.time.Instant
6+
7+
@JsonTypeInfo(
8+
use = JsonTypeInfo.Id.NAME,
9+
include = JsonTypeInfo.As.PROPERTY,
10+
property = "type"
11+
)
12+
@JsonSubTypes(
13+
JsonSubTypes.Type(value = IkkeKlarForUtfylling::class, name = "IkkeKlarForUtfylling"),
14+
JsonSubTypes.Type(value = KlarForUtfylling::class, name = "KlarForUtfylling"),
15+
JsonSubTypes.Type(value = VenterSvar::class, name = "VenterSvar"),
16+
JsonSubTypes.Type(value = GracePeriodeUtloept::class, name = "GracePeriodeUtloept"),
17+
JsonSubTypes.Type(value = Levert::class, name = "Levert"),
18+
)
19+
sealed interface BekreftelseTilstandStatus {
20+
val timestamp: Instant
21+
}
22+
23+
data class GracePeriodeUtloept(override val timestamp: Instant) : BekreftelseTilstandStatus
24+
data class GracePeriodeVarselet(override val timestamp: Instant) : BekreftelseTilstandStatus
25+
data class IkkeKlarForUtfylling(override val timestamp: Instant) : BekreftelseTilstandStatus
26+
data class KlarForUtfylling(override val timestamp: Instant) : BekreftelseTilstandStatus
27+
data class Levert(override val timestamp: Instant) : BekreftelseTilstandStatus
28+
data class VenterSvar(override val timestamp: Instant) : BekreftelseTilstandStatus
29+
data class InternBekreftelsePaaVegneAvStartet(override val timestamp: Instant) : BekreftelseTilstandStatus

apps/bekreftelse-tjeneste/src/main/kotlin/no/nav/paw/bekreftelsetjeneste/tilstand/BekreftelseTilstandsLogg.kt

+6-6
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ import org.slf4j.LoggerFactory
66

77
@JvmRecord
88
data class BekreftelseTilstandsLogg(
9-
val siste: BekreftelseTilstand,
10-
val tidligere: List<BekreftelseTilstand>
9+
val siste: BekreftelseTilstandStatus,
10+
val tidligere: List<BekreftelseTilstandStatus>
1111
)
1212

1313
private val bekreftelseTilstandsLoggProblemerLogger = LoggerFactory.getLogger(BekreftelseTilstandsLogg::class.java)
14-
operator fun BekreftelseTilstandsLogg.plus(bekreftelseTilstand: BekreftelseTilstand): BekreftelseTilstandsLogg =
15-
(tidligere + siste + bekreftelseTilstand)
14+
operator fun BekreftelseTilstandsLogg.plus(bekreftelseTilstandStatus: BekreftelseTilstandStatus): BekreftelseTilstandsLogg =
15+
(tidligere + siste + bekreftelseTilstandStatus)
1616
.groupBy { it::class }
1717
.values
1818
.map { gruppe ->
@@ -28,7 +28,7 @@ operator fun BekreftelseTilstandsLogg.plus(bekreftelseTilstand: BekreftelseTilst
2828
BekreftelseTilstandsLogg(siste, tidligere)
2929
}
3030

31-
inline fun <reified T : BekreftelseTilstand> BekreftelseTilstandsLogg.get(): T? =
31+
inline fun <reified T : BekreftelseTilstandStatus> BekreftelseTilstandsLogg.get(): T? =
3232
tidligere.filterIsInstance<T>().firstOrNull() ?: siste as? T
3333

34-
fun BekreftelseTilstandsLogg.asList(): NonEmptyList<BekreftelseTilstand> = nonEmptyListOf(siste) + tidligere
34+
fun BekreftelseTilstandsLogg.asList(): NonEmptyList<BekreftelseTilstandStatus> = nonEmptyListOf(siste) + tidligere

0 commit comments

Comments
 (0)