From 429e45a32b04945f3ae070b1a06cec3da06a9dad Mon Sep 17 00:00:00 2001 From: Mats Bolstad Date: Mon, 18 Nov 2024 17:02:47 +0100 Subject: [PATCH 01/15] =?UTF-8?q?Felt=20for=20mottatt=20dato=20p=C3=A5=20t?= =?UTF-8?q?ilbakekreving=20(#2734)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Legger til feltet mottattDato på tilbakekrevingsoppgaver, trenger det for å sortere * Historikkvask k9tilbake i dev --- src/main/kotlin/no/nav/k9/los/K9Los.kt | 2 +- .../k9/tilbaketillos/TilbakeEventTilDtoMapper.kt | 6 +++++- .../adapterdefinisjoner/k9-oppgavetyper-k9tilbake.json | 5 +++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/no/nav/k9/los/K9Los.kt b/src/main/kotlin/no/nav/k9/los/K9Los.kt index 309c24052..3b914df5f 100644 --- a/src/main/kotlin/no/nav/k9/los/K9Los.kt +++ b/src/main/kotlin/no/nav/k9/los/K9Los.kt @@ -113,7 +113,7 @@ fun Application.k9Los() { val k9TilbakeTilLosAdapterTjeneste = koin.get() k9TilbakeTilLosAdapterTjeneste.setup() - if (LocalDateTime.now().isBefore(LocalDateTime.of(2024, 11, 6, 10, 0))) { + if (LocalDateTime.now().isBefore(LocalDateTime.of(2024, 11, 18, 18, 0))) { if (1 == 0) { //HAXX for å ikke kjøre jobb, men indikere at koden er i bruk og dermed ikke slettes //koin.get().kjørReservasjonskonvertering() //TODO slette //koin.get().kjørFeiloppgaverVask() //TODO slette diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/tilbaketillos/TilbakeEventTilDtoMapper.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/tilbaketillos/TilbakeEventTilDtoMapper.kt index 060030acc..8ab997000 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/tilbaketillos/TilbakeEventTilDtoMapper.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/tilbaketillos/TilbakeEventTilDtoMapper.kt @@ -121,10 +121,14 @@ class TilbakeEventTilDtoMapper { ), OppgaveFeltverdiDto( nøkkel = "registrertDato", - //TODO feltet heter *dato, avrunde til dato? verdi = forrigeOppgave?.hentVerdi("registrertDato") ?: event.opprettetBehandling.truncatedTo(ChronoUnit.SECONDS).toString() ), + OppgaveFeltverdiDto( + nøkkel = "mottattDato", + verdi = forrigeOppgave?.hentVerdi("mottattDato") + ?: event.opprettetBehandling.truncatedTo(ChronoUnit.SECONDS).toString() + ), OppgaveFeltverdiDto( nøkkel = "feilutbetaltBeløp", verdi = event.feilutbetaltBeløp?.toString() ?: forrigeOppgave?.hentVerdi("feilutbetaltBeløp") diff --git a/src/main/resources/adapterdefinisjoner/k9-oppgavetyper-k9tilbake.json b/src/main/resources/adapterdefinisjoner/k9-oppgavetyper-k9tilbake.json index 7c4853689..d7ac0d20c 100644 --- a/src/main/resources/adapterdefinisjoner/k9-oppgavetyper-k9tilbake.json +++ b/src/main/resources/adapterdefinisjoner/k9-oppgavetyper-k9tilbake.json @@ -36,6 +36,11 @@ "visPåOppgave": true, "påkrevd": false }, + { + "id": "mottattDato", + "visPåOppgave": true, + "påkrevd": false + }, { "id": "registrertDato", "visPåOppgave": true, From d6b39b63ceed05286b079b9eff36f689650dabb2 Mon Sep 17 00:00:00 2001 From: Mats Bolstad Date: Mon, 18 Nov 2024 18:03:38 +0100 Subject: [PATCH 02/15] Historikkvask k9tilbake i prod --- src/main/kotlin/no/nav/k9/los/K9Los.kt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/no/nav/k9/los/K9Los.kt b/src/main/kotlin/no/nav/k9/los/K9Los.kt index 3b914df5f..3f0059b73 100644 --- a/src/main/kotlin/no/nav/k9/los/K9Los.kt +++ b/src/main/kotlin/no/nav/k9/los/K9Los.kt @@ -113,7 +113,7 @@ fun Application.k9Los() { val k9TilbakeTilLosAdapterTjeneste = koin.get() k9TilbakeTilLosAdapterTjeneste.setup() - if (LocalDateTime.now().isBefore(LocalDateTime.of(2024, 11, 18, 18, 0))) { + if (LocalDateTime.now().isBefore(LocalDateTime.of(2024, 11, 18, 18, 30))) { if (1 == 0) { //HAXX for å ikke kjøre jobb, men indikere at koden er i bruk og dermed ikke slettes //koin.get().kjørReservasjonskonvertering() //TODO slette //koin.get().kjørFeiloppgaverVask() //TODO slette @@ -122,9 +122,7 @@ fun Application.k9Los() { koin.get().kjørHistorikkvask() koin.get().kjørHistorikkvask() } - if (configuration.koinProfile == KoinProfile.PREPROD) { - koin.get().kjørHistorikkvask() - } + koin.get().kjørHistorikkvask() } install(Authentication) { From 8846d5b77c30cf1a96aca04b69d240edb3a0e6f7 Mon Sep 17 00:00:00 2001 From: Mats Bolstad Date: Mon, 18 Nov 2024 18:51:55 +0100 Subject: [PATCH 03/15] =?UTF-8?q?Kj=C3=B8rer=20igjen:=20Historikkvask=20k9?= =?UTF-8?q?tilbake=20i=20prod?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/no/nav/k9/los/K9Los.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/no/nav/k9/los/K9Los.kt b/src/main/kotlin/no/nav/k9/los/K9Los.kt index 3f0059b73..e5f67159c 100644 --- a/src/main/kotlin/no/nav/k9/los/K9Los.kt +++ b/src/main/kotlin/no/nav/k9/los/K9Los.kt @@ -113,7 +113,7 @@ fun Application.k9Los() { val k9TilbakeTilLosAdapterTjeneste = koin.get() k9TilbakeTilLosAdapterTjeneste.setup() - if (LocalDateTime.now().isBefore(LocalDateTime.of(2024, 11, 18, 18, 30))) { + if (LocalDateTime.now().isBefore(LocalDateTime.of(2024, 11, 18, 20, 30))) { if (1 == 0) { //HAXX for å ikke kjøre jobb, men indikere at koden er i bruk og dermed ikke slettes //koin.get().kjørReservasjonskonvertering() //TODO slette //koin.get().kjørFeiloppgaverVask() //TODO slette From c7cfcba46e086df6158bb24e6dfbcff79f5353ec Mon Sep 17 00:00:00 2001 From: Mats Bolstad Date: Tue, 19 Nov 2024 11:26:10 +0100 Subject: [PATCH 04/15] =?UTF-8?q?Tilpasser=20historikkvask=20til=20=C3=A5?= =?UTF-8?q?=20t=C3=A5le=20at=20jobben=20ikke=20har=20kj=C3=B8rt=20f=C3=B8r?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tore Langedal Endestad --- .../tilbaketillos/K9TilbakeTilLosHistorikkvaskTjeneste.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/tilbaketillos/K9TilbakeTilLosHistorikkvaskTjeneste.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/tilbaketillos/K9TilbakeTilLosHistorikkvaskTjeneste.kt index b6ec76783..c02129546 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/tilbaketillos/K9TilbakeTilLosHistorikkvaskTjeneste.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/tilbaketillos/K9TilbakeTilLosHistorikkvaskTjeneste.kt @@ -141,16 +141,16 @@ class K9TilbakeTilLosHistorikkvaskTjeneste( val behandlingProsessEventer = DetaljerMetrikker.time("k9tilbakeHistorikkvask", "hentEventer") { behandlingProsessEventTilbakeRepository.hentMedLås(tx, uuid).eventer } val høyesteInternVersjon = DetaljerMetrikker.time("k9tilbakeHistorikkvask", "hentHøyesteInternVersjon") { - oppgaveV3Tjeneste.hentHøyesteInternVersjon(uuid.toString(), "k9tilbake", "K9", tx)!! + oppgaveV3Tjeneste.hentHøyesteInternVersjon(uuid.toString(), "k9tilbake", "K9", tx) } var eventNrForBehandling = 0L var oppgaveV3 : OppgaveV3? = null for (event in behandlingProsessEventer) { - if (eventNrForBehandling > høyesteInternVersjon) { + if (høyesteInternVersjon != null && eventNrForBehandling > høyesteInternVersjon) { log.info("Avbryter historikkvask for ${event.eksternId} ved eventTid ${event.eventTid}. Forventer at håndteres av vanlig adaptertjeneste.") break //Historikkvasken har funnet eventer som ennå ikke er lastet inn med normalflyt. Dirty eventer skal håndteres av vanlig adaptertjeneste } - var oppgaveDto = TilbakeEventTilDtoMapper.lagOppgaveDto(event, forrigeOppgave) + val oppgaveDto = TilbakeEventTilDtoMapper.lagOppgaveDto(event, forrigeOppgave) oppgaveV3 = DetaljerMetrikker.time("k9tilbakeHistorikkvask", "utledEksisterendeOppgaveversjon") { oppgaveV3Tjeneste.utledEksisterendeOppgaveversjon(oppgaveDto, eventNrForBehandling, tx) } DetaljerMetrikker.time("k9tilbakeHistorikkvask", "oppdaterEksisterendeOppgaveversjon") { oppgaveV3Tjeneste.oppdaterEksisterendeOppgaveversjon(oppgaveV3, eventNrForBehandling, tx) } From 1bd104cb2326cf45f3d09d854600133ca41eb892 Mon Sep 17 00:00:00 2001 From: Mats Bolstad Date: Tue, 19 Nov 2024 14:05:49 +0100 Subject: [PATCH 05/15] =?UTF-8?q?Vise=20hvilke=20v3-k=C3=B8er=20saksbehand?= =?UTF-8?q?ler=20er=20i=20(for=20avdelingsleder)=20(#2741)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Endepunkt for å hente hvilke nye køer saksbehandler er med i * Tilgang for skjermet, for avdelingsleder kode6 --- .../los/eventhandler/RefreshK9v3Tjeneste.kt | 3 +- .../los/nyoppgavestyring/ko/OppgaveKoApis.kt | 20 +++++++ .../nyoppgavestyring/ko/OppgaveKoTjeneste.kt | 27 ++++++++- .../ko/db/OppgaveKoRepository.kt | 57 ++++++++++++------- .../ko/dto/OppgaveKoIdOgTittel.kt | 6 ++ .../avdelingsleder/AvdelingslederTjeneste.kt | 3 +- .../saksliste/SaksbehandlerDto.kt | 1 + 7 files changed, 94 insertions(+), 23 deletions(-) create mode 100644 src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/dto/OppgaveKoIdOgTittel.kt diff --git a/src/main/kotlin/no/nav/k9/los/eventhandler/RefreshK9v3Tjeneste.kt b/src/main/kotlin/no/nav/k9/los/eventhandler/RefreshK9v3Tjeneste.kt index 22a6631a6..e31bbfd6e 100644 --- a/src/main/kotlin/no/nav/k9/los/eventhandler/RefreshK9v3Tjeneste.kt +++ b/src/main/kotlin/no/nav/k9/los/eventhandler/RefreshK9v3Tjeneste.kt @@ -88,7 +88,8 @@ class RefreshK9v3Tjeneste( @WithSpan fun behandlingerTilOppfriskning(tx: TransactionalSession, antallPrKø: Int) : Set { return DetaljerMetrikker.time("RefreshK9V3", "refreshForKøer", "alle") { - val alleKøer = oppgaveKoRepository.hentListe(false) + oppgaveKoRepository.hentListe(true) + val alleKøer = oppgaveKoRepository.hentListe(medSkjermet = false, medSaksbehandlere = false) + + oppgaveKoRepository.hentListe(medSkjermet = true, medSaksbehandlere = false) val behandlinger = behandlingerTilOppfriskning(tx, alleKøer, antallPrKø) log.info("Hentet ${behandlinger.size} oppgaver fra ${alleKøer.size} køer") behandlinger diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoApis.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoApis.kt index 05a97bbee..b3d47a50b 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoApis.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoApis.kt @@ -105,6 +105,26 @@ fun Route.OppgaveKoApis() { } } + get("/andre-saksbehandleres-koer") { + requestContextService.withRequestContext(call) { + if (pepClient.erOppgaveStyrer()) { + call.respond( + oppgaveKoTjeneste.hentKøerForSaksbehandler( + call.parameters["id"]?.toLong()!!, + pepClient.harTilgangTilKode6() + ).map { + OppgaveKoIdOgTittel( + id = it.id, + tittel = it.tittel + ) + } + ) + } else { + call.respond(HttpStatusCode.Forbidden) + } + } + } + get("/{id}/oppgaver") { requestContextService.withRequestContext(call) { if (pepClient.harTilgangTilReserveringAvOppgaver()) { diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoTjeneste.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoTjeneste.kt index 735d94b62..7c2741986 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoTjeneste.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoTjeneste.kt @@ -20,7 +20,10 @@ import no.nav.k9.los.nyoppgavestyring.mottak.oppgave.AktivOppgaveRepository import no.nav.k9.los.nyoppgavestyring.query.Avgrensning import no.nav.k9.los.nyoppgavestyring.query.OppgaveQueryService import no.nav.k9.los.nyoppgavestyring.query.QueryRequest -import no.nav.k9.los.nyoppgavestyring.reservasjon.* +import no.nav.k9.los.nyoppgavestyring.reservasjon.AlleredeReservertException +import no.nav.k9.los.nyoppgavestyring.reservasjon.ManglerTilgangException +import no.nav.k9.los.nyoppgavestyring.reservasjon.ReservasjonV3 +import no.nav.k9.los.nyoppgavestyring.reservasjon.ReservasjonV3Tjeneste import no.nav.k9.los.nyoppgavestyring.visningoguttrekk.GenerellOppgaveV3Dto import no.nav.k9.los.nyoppgavestyring.visningoguttrekk.Oppgave import no.nav.k9.los.nyoppgavestyring.visningoguttrekk.OppgaveRepository @@ -87,7 +90,27 @@ class OppgaveKoTjeneste( saksbehandlerEpost: String ): List { return transactionalManager.transaction { tx -> - oppgaveKoRepository.hentKoerMedOppgittSaksbehandler(tx, saksbehandlerEpost) + oppgaveKoRepository.hentKoerMedOppgittSaksbehandler( + tx = tx, + saksbehandlerEpost = saksbehandlerEpost, + medSaksbehandlere = false, + skjermet = false + ) + } + } + + @WithSpan + fun hentKøerForSaksbehandler( + saksbehandlerId: Long, + skjermet: Boolean + ): List { + return transactionalManager.transaction { tx -> + oppgaveKoRepository.hentKoerMedOppgittSaksbehandler( + tx = tx, + saksbehandlerId = saksbehandlerId, + medSaksbehandlere = false, + skjermet = skjermet + ) } } diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/db/OppgaveKoRepository.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/db/OppgaveKoRepository.kt index 1e7ebfcef..9485567fc 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/db/OppgaveKoRepository.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/db/OppgaveKoRepository.kt @@ -31,21 +31,20 @@ class OppgaveKoRepository( objectMapper.writeValueAsString(kode6OppgaveQuery) } - fun hentListe(medSkjermet: Boolean = false): List { + fun hentListe(medSkjermet: Boolean = false, medSaksbehandlere: Boolean = true): List { return using(sessionOf(datasource)) { - it.transaction { tx -> hentListe(tx, medSkjermet) } + it.transaction { tx -> hentListe(tx, medSaksbehandlere, medSkjermet) } } } - fun hentListe(tx: TransactionalSession, skjermet: Boolean = false): List { + fun hentListe(tx: TransactionalSession, medSaksbehandlere: Boolean, skjermet: Boolean = false): List { return tx.run( queryOf( """SELECT id, versjon, tittel, beskrivelse, query, fritt_valg_av_oppgave, endret_tidspunkt, skjermet FROM OPPGAVEKO_V3 WHERE skjermet = :medSkjermet""", mapOf("medSkjermet" to skjermet) - ).map { row -> row.tilOppgaveKo(objectMapper, tx) }.asList + ).map { row -> row.tilOppgaveKo(objectMapper, medSaksbehandlere, tx) }.asList ) - } fun hent(oppgaveKoId: Long): OppgaveKo { @@ -64,11 +63,11 @@ class OppgaveKoRepository( "id" to oppgaveKoId, "skjermet" to skjermet ) - ).map { it.tilOppgaveKo(objectMapper, tx) to it.boolean("skjermet") }.asSingle + ).map { it.tilOppgaveKo(objectMapper, true, tx) to it.boolean("skjermet") }.asSingle ) ?: throw IllegalStateException("Feil ved henting av oppgavekø: $oppgaveKoId") } - fun Row.tilOppgaveKo(objectMapper: ObjectMapper, tx: TransactionalSession): OppgaveKo { + private fun Row.tilOppgaveKo(objectMapper: ObjectMapper, medSaksbehandlere: Boolean = true, tx: TransactionalSession): OppgaveKo { return OppgaveKo( id = long("id"), versjon = long("versjon"), @@ -76,7 +75,7 @@ class OppgaveKoRepository( beskrivelse = string("beskrivelse"), oppgaveQuery = objectMapper.readValue(string("query"), OppgaveQuery::class.java), frittValgAvOppgave = boolean("fritt_valg_av_oppgave"), - saksbehandlere = hentKoSaksbehandlere(tx, long("id")), + saksbehandlere = if (medSaksbehandlere) hentKoSaksbehandlere(tx, long("id")) else emptyList(), endretTidspunkt = localDateTimeOrNull("endret_tidspunkt"), skjermet = boolean("skjermet") ) @@ -154,7 +153,8 @@ class OppgaveKoRepository( fun hentKoerMedOppgittSaksbehandler( tx: TransactionalSession, saksbehandlerEpost: String, - skjermet: Boolean = false + skjermet: Boolean = false, + medSaksbehandlere: Boolean = true ): List { return tx.run( queryOf( @@ -173,17 +173,36 @@ class OppgaveKoRepository( "skjermet" to skjermet ) ).map { row -> - OppgaveKo( - id = row.long("id"), - versjon = row.long("versjon"), - tittel = row.string("tittel"), - beskrivelse = row.string("beskrivelse"), - oppgaveQuery = objectMapper.readValue(row.string("query"), OppgaveQuery::class.java), - frittValgAvOppgave = row.boolean("fritt_valg_av_oppgave"), - saksbehandlere = hentKoSaksbehandlere(tx, row.long("id")), - endretTidspunkt = row.localDateTimeOrNull("endret_tidspunkt"), - skjermet = row.boolean("skjermet") + row.tilOppgaveKo(objectMapper, medSaksbehandlere, tx) + }.asList + ) + } + + fun hentKoerMedOppgittSaksbehandler( + tx: TransactionalSession, + saksbehandlerId: Long, + skjermet: Boolean, + medSaksbehandlere: Boolean + ): List { + return tx.run( + queryOf( + """ + select id, versjon, tittel, beskrivelse, query, fritt_valg_av_oppgave, endret_tidspunkt, skjermet + from OPPGAVEKO_V3 ko + where skjermet = :skjermet AND + exists ( + select 1 + from oppgaveko_saksbehandler os + inner join saksbehandler s on s.epost = os.saksbehandler_epost + where os.oppgaveko_v3_id = ko.id + and s.id = :saksbehandler_id + )""", + mapOf( + "saksbehandler_id" to saksbehandlerId, + "skjermet" to skjermet ) + ).map { row -> + row.tilOppgaveKo(objectMapper, medSaksbehandlere, tx) }.asList ) } diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/dto/OppgaveKoIdOgTittel.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/dto/OppgaveKoIdOgTittel.kt new file mode 100644 index 000000000..d9a373f51 --- /dev/null +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/dto/OppgaveKoIdOgTittel.kt @@ -0,0 +1,6 @@ +package no.nav.k9.los.nyoppgavestyring.ko.dto + +data class OppgaveKoIdOgTittel( + val id: Long, + val tittel: String, +) diff --git a/src/main/kotlin/no/nav/k9/los/tjenester/avdelingsleder/AvdelingslederTjeneste.kt b/src/main/kotlin/no/nav/k9/los/tjenester/avdelingsleder/AvdelingslederTjeneste.kt index 3d7c70dd3..63b9dc0b7 100644 --- a/src/main/kotlin/no/nav/k9/los/tjenester/avdelingsleder/AvdelingslederTjeneste.kt +++ b/src/main/kotlin/no/nav/k9/los/tjenester/avdelingsleder/AvdelingslederTjeneste.kt @@ -112,7 +112,7 @@ class AvdelingslederTjeneste( transactionalManager.transaction { tx -> // V3-modellen: Sletter køer saksbehandler er med i - oppgaveKøV3Repository.hentKoerMedOppgittSaksbehandler(tx, epost, skjermet).forEach { kø -> + oppgaveKøV3Repository.hentKoerMedOppgittSaksbehandler(tx, epost, skjermet, true).forEach { kø -> oppgaveKøV3Repository.endre(tx, kø.copy(saksbehandlere = kø.saksbehandlere - epost)) } @@ -139,6 +139,7 @@ class AvdelingslederTjeneste( val saksbehandlersKoer = hentSaksbehandlersOppgavekoer() return saksbehandlersKoer.entries.map { SaksbehandlerDto( + id = it.key.id, brukerIdent = it.key.brukerIdent, navn = it.key.navn, epost = it.key.epost, diff --git a/src/main/kotlin/no/nav/k9/los/tjenester/saksbehandler/saksliste/SaksbehandlerDto.kt b/src/main/kotlin/no/nav/k9/los/tjenester/saksbehandler/saksliste/SaksbehandlerDto.kt index 7dd848658..3a9161529 100644 --- a/src/main/kotlin/no/nav/k9/los/tjenester/saksbehandler/saksliste/SaksbehandlerDto.kt +++ b/src/main/kotlin/no/nav/k9/los/tjenester/saksbehandler/saksliste/SaksbehandlerDto.kt @@ -1,6 +1,7 @@ package no.nav.k9.los.tjenester.saksbehandler.saksliste data class SaksbehandlerDto( + val id: Long?, val brukerIdent: String?, val navn: String?, val epost: String, From 0e024058344719bd72ad02926518efb7b36516b6 Mon Sep 17 00:00:00 2001 From: Mats Bolstad Date: Tue, 19 Nov 2024 20:38:25 +0100 Subject: [PATCH 06/15] =?UTF-8?q?Kj=C3=B8rer=20historikkvask=20k9tilbake?= =?UTF-8?q?=20(kun=201=20tr=C3=A5d=20for=20=C3=A5=20f=C3=A5=20litt=20mer?= =?UTF-8?q?=20oversiktlig=20logg)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/no/nav/k9/los/K9Los.kt | 2 +- .../k9/tilbaketillos/K9TilbakeTilLosHistorikkvaskTjeneste.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/no/nav/k9/los/K9Los.kt b/src/main/kotlin/no/nav/k9/los/K9Los.kt index e5f67159c..6cba969bc 100644 --- a/src/main/kotlin/no/nav/k9/los/K9Los.kt +++ b/src/main/kotlin/no/nav/k9/los/K9Los.kt @@ -113,7 +113,7 @@ fun Application.k9Los() { val k9TilbakeTilLosAdapterTjeneste = koin.get() k9TilbakeTilLosAdapterTjeneste.setup() - if (LocalDateTime.now().isBefore(LocalDateTime.of(2024, 11, 18, 20, 30))) { + if (LocalDateTime.now().isBefore(LocalDateTime.of(2024, 11, 19, 22, 30))) { if (1 == 0) { //HAXX for å ikke kjøre jobb, men indikere at koden er i bruk og dermed ikke slettes //koin.get().kjørReservasjonskonvertering() //TODO slette //koin.get().kjørFeiloppgaverVask() //TODO slette diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/tilbaketillos/K9TilbakeTilLosHistorikkvaskTjeneste.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/tilbaketillos/K9TilbakeTilLosHistorikkvaskTjeneste.kt index c02129546..87b06d142 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/tilbaketillos/K9TilbakeTilLosHistorikkvaskTjeneste.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/tilbaketillos/K9TilbakeTilLosHistorikkvaskTjeneste.kt @@ -38,9 +38,9 @@ class K9TilbakeTilLosHistorikkvaskTjeneste( name = TRÅDNAVN ) { - Thread.sleep(2.toDuration(DurationUnit.MINUTES).inWholeMilliseconds) + Thread.sleep(1.toDuration(DurationUnit.MINUTES).inWholeMilliseconds) - val dispatcher = newFixedThreadPoolContext(5, "Historikkvask k9tilbake") + val dispatcher = newFixedThreadPoolContext(1, "Historikkvask k9tilbake") log.info("Starter avspilling av historiske BehandlingProsessEventer") From 40685b96ce0cd272072cfd5dd024be0757b76f49 Mon Sep 17 00:00:00 2001 From: Mats Bolstad Date: Wed, 20 Nov 2024 13:14:12 +0100 Subject: [PATCH 07/15] =?UTF-8?q?Fikser=20readme=20(for=20=C3=A5=20redeplo?= =?UTF-8?q?ye=20egentlig)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 194cc925c..572590a38 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Oppgavestyrere definerer kriterier som ligger til grunn for køer som fordeler o # Bygge og kjøre lokalt -1. Start k9-verdikjede. Er avhengig av vtp, postgresql og nav-auth-mock. +1. Start k9-verdikjede. Er avhengig av vtp, postgresql og azure-mock. From b2db5a0a53e7c47ec61a5edd20a99a7de835f6c5 Mon Sep 17 00:00:00 2001 From: Mats Bolstad Date: Wed, 20 Nov 2024 13:20:00 +0100 Subject: [PATCH 08/15] Tvinger redeploy --- force_merge_fil.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 force_merge_fil.txt diff --git a/force_merge_fil.txt b/force_merge_fil.txt deleted file mode 100644 index bc8ac10bf..000000000 --- a/force_merge_fil.txt +++ /dev/null @@ -1 +0,0 @@ -fil for å fremtvinge diff, for å se om git sier seg enig i at master og featurebranch er forskjellige From 373a3997a4a6a3db30055986949ea7e60a4a60c4 Mon Sep 17 00:00:00 2001 From: Mats Bolstad Date: Thu, 21 Nov 2024 22:09:25 +0100 Subject: [PATCH 09/15] =?UTF-8?q?Kj=C3=B8rer=20historikkvask=20punsj?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/no/nav/k9/los/K9Los.kt | 4 ++-- .../k9/punsjtillos/K9PunsjTilLosHistorikkvaskTjeneste.kt | 8 +------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/no/nav/k9/los/K9Los.kt b/src/main/kotlin/no/nav/k9/los/K9Los.kt index 6cba969bc..fcf6d76c5 100644 --- a/src/main/kotlin/no/nav/k9/los/K9Los.kt +++ b/src/main/kotlin/no/nav/k9/los/K9Los.kt @@ -113,7 +113,7 @@ fun Application.k9Los() { val k9TilbakeTilLosAdapterTjeneste = koin.get() k9TilbakeTilLosAdapterTjeneste.setup() - if (LocalDateTime.now().isBefore(LocalDateTime.of(2024, 11, 19, 22, 30))) { + if (LocalDateTime.now().isBefore(LocalDateTime.of(2024, 11, 21, 23, 0))) { if (1 == 0) { //HAXX for å ikke kjøre jobb, men indikere at koden er i bruk og dermed ikke slettes //koin.get().kjørReservasjonskonvertering() //TODO slette //koin.get().kjørFeiloppgaverVask() //TODO slette @@ -122,7 +122,7 @@ fun Application.k9Los() { koin.get().kjørHistorikkvask() koin.get().kjørHistorikkvask() } - koin.get().kjørHistorikkvask() + koin.get().kjørHistorikkvask() } install(Authentication) { diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/K9PunsjTilLosHistorikkvaskTjeneste.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/K9PunsjTilLosHistorikkvaskTjeneste.kt index 7ef8ae588..44a544fff 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/K9PunsjTilLosHistorikkvaskTjeneste.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/K9PunsjTilLosHistorikkvaskTjeneste.kt @@ -33,12 +33,6 @@ class K9PunsjTilLosHistorikkvaskTjeneste( isDaemon = true, name = TRÅDNAVN ) { - - if (LocalDateTime.now().isBefore(LocalDateTime.of(2024,7,17,16,30))) { - eventRepository.nullstillHistorikkvask() - log.info("Nullstilt historikkvaskmarkering k9-punsj") - } - log.info("Starter avspilling av historiske BehandlingProsessEventer") val tidKjøringStartet = System.currentTimeMillis() @@ -57,7 +51,7 @@ class K9PunsjTilLosHistorikkvaskTjeneste( if (skalPauses()) { HistorikkvaskMetrikker.observe(TRÅDNAVN, t0) log.info("Vaskejobb satt på pause") - Thread.sleep(Duration.ofMinutes(5)) + Thread.sleep(Duration.ofMinutes(1)) t0 = System.nanoTime() continue } From af261c06a9a25c83cb59b4aa579cc9285b8385a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vebj=C3=B8rn=20Nordby?= Date: Fri, 22 Nov 2024 07:33:55 +0100 Subject: [PATCH 10/15] Q2 migrering (#2723) * k9-los-oidc-auth-proxy er arkivert * q2-migrering --- nais/dev-fss.yml | 6 ++---- nais/prod-fss.yml | 2 -- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/nais/dev-fss.yml b/nais/dev-fss.yml index 9defa987c..796f29bf1 100644 --- a/nais/dev-fss.yml +++ b/nais/dev-fss.yml @@ -60,8 +60,6 @@ spec: accessPolicy: inbound: rules: - - application: k9-los-oidc-auth-proxy - namespace: k9saksbehandling - application: k9-los-web namespace: k9saksbehandling cluster: dev-gcp @@ -71,14 +69,14 @@ spec: - https://k9-los-api.dev-fss-pub.nais.io env: - name: OPPGAVE_BASE_URI - value: https://oppgave.nais.preprod.local + value: https://oppgave.dev.intern.nav.no - name: DB_URL value: jdbc:postgresql://b27dbvl028.preprod.local:5432/k9-los - name: DB_VAULT_MOUNTPATH value: postgresql/preprod-fss/ - name: PDL_URL - value: https://pdl-api.nais.preprod.local/graphql + value: https://pdl-api.intern.dev.nav.no/graphql # Nav applikasjoner - name: APP_K9SAK_URL diff --git a/nais/prod-fss.yml b/nais/prod-fss.yml index 5b874e644..e6089b84f 100644 --- a/nais/prod-fss.yml +++ b/nais/prod-fss.yml @@ -61,8 +61,6 @@ spec: accessPolicy: inbound: rules: - - application: k9-los-oidc-auth-proxy - namespace: k9saksbehandling - application: k9-los-web namespace: k9saksbehandling cluster: prod-gcp From e3199071ecf19855abb2c7dc950a63bc3c420665 Mon Sep 17 00:00:00 2001 From: Mats Bolstad Date: Fri, 22 Nov 2024 16:14:49 +0100 Subject: [PATCH 11/15] Setter inn UKJENT hvis behandlingstype i punsjevent er null, slik at feltet ikke feiler med nullpointer --- src/main/kotlin/no/nav/k9/los/K9Los.kt | 2 +- .../no/nav/k9/los/domene/modell/Kodeverk.kt | 2 +- .../k9/punsjtillos/EventTilDtoMapper.kt | 10 ++++----- .../K9PunsjEventHandlerTest.kt | 22 ++++++++++--------- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/main/kotlin/no/nav/k9/los/K9Los.kt b/src/main/kotlin/no/nav/k9/los/K9Los.kt index fcf6d76c5..bd16de16f 100644 --- a/src/main/kotlin/no/nav/k9/los/K9Los.kt +++ b/src/main/kotlin/no/nav/k9/los/K9Los.kt @@ -113,7 +113,7 @@ fun Application.k9Los() { val k9TilbakeTilLosAdapterTjeneste = koin.get() k9TilbakeTilLosAdapterTjeneste.setup() - if (LocalDateTime.now().isBefore(LocalDateTime.of(2024, 11, 21, 23, 0))) { + if (LocalDateTime.now().isBefore(LocalDateTime.of(2024, 11, 22, 18, 0))) { if (1 == 0) { //HAXX for å ikke kjøre jobb, men indikere at koden er i bruk og dermed ikke slettes //koin.get().kjørReservasjonskonvertering() //TODO slette //koin.get().kjørFeiloppgaverVask() //TODO slette diff --git a/src/main/kotlin/no/nav/k9/los/domene/modell/Kodeverk.kt b/src/main/kotlin/no/nav/k9/los/domene/modell/Kodeverk.kt index 21c409dda..75e49dd7e 100644 --- a/src/main/kotlin/no/nav/k9/los/domene/modell/Kodeverk.kt +++ b/src/main/kotlin/no/nav/k9/los/domene/modell/Kodeverk.kt @@ -193,7 +193,7 @@ enum class BehandlingType(override val kode: String, override val navn: String, @JvmStatic fun fraKode(o: Any): BehandlingType { val kode = TempAvledeKode.getVerdi(o) - return values().find { it.kode == kode } ?: throw IllegalStateException("Kjenner ikke igjen koden=$kode") + return entries.find { it.kode == kode } ?: throw IllegalStateException("Kjenner ikke igjen koden=$kode") } } } diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/EventTilDtoMapper.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/EventTilDtoMapper.kt index 012c002f5..d4682a5d2 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/EventTilDtoMapper.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/punsjtillos/EventTilDtoMapper.kt @@ -61,12 +61,10 @@ class EventTilDtoMapper { verdi = it, ) }, - event.type?.let { - OppgaveFeltverdiDto( - nøkkel = "behandlingTypekode", - verdi = BehandlingType.fraKode(it).kode, - ) - }, + OppgaveFeltverdiDto( + nøkkel = "behandlingTypekode", + verdi = (event.type?.let { BehandlingType.fraKode(it) } ?: BehandlingType.UKJENT).kode, + ), OppgaveFeltverdiDto( nøkkel = "ytelsestype", verdi = event.ytelse, diff --git a/src/test/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9PunsjEventHandlerTest.kt b/src/test/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9PunsjEventHandlerTest.kt index 20286b1e2..608bee583 100644 --- a/src/test/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9PunsjEventHandlerTest.kt +++ b/src/test/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9PunsjEventHandlerTest.kt @@ -76,19 +76,21 @@ class K9PunsjEventHandlerTest : AbstractK9LosIntegrationTest() { } val felter = oppgaveV3.felter.sortedBy { it.eksternId } - assertThat(felter).hasSize(6) + assertThat(felter).hasSize(7) assertThat(felter[0].eksternId).isEqualTo("aktorId") assertThat(felter[0].verdi).isEqualTo(aktørId) - assertThat(felter[1].eksternId).isEqualTo("journalfort") - assertThat(felter[1].verdi).isEqualTo("true") - assertThat(felter[2].eksternId).isEqualTo("journalfortTidspunkt") - assertThat(felter[2].verdi).isEqualTo(eventTid) - assertThat(felter[3].eksternId).isEqualTo("journalpostId") - assertThat(felter[3].verdi).isEqualTo(journalpostId) - assertThat(felter[4].eksternId).isEqualTo("mottattDato") - assertThat(felter[4].verdi).isEqualTo(eventTid) - assertThat(felter[5].eksternId).isEqualTo("registrertDato") + assertThat(felter[1].eksternId).isEqualTo("behandlingTypekode") + assertThat(felter[1].verdi).isEqualTo("UKJENT") + assertThat(felter[2].eksternId).isEqualTo("journalfort") + assertThat(felter[2].verdi).isEqualTo("true") + assertThat(felter[3].eksternId).isEqualTo("journalfortTidspunkt") + assertThat(felter[3].verdi).isEqualTo(eventTid) + assertThat(felter[4].eksternId).isEqualTo("journalpostId") + assertThat(felter[4].verdi).isEqualTo(journalpostId) + assertThat(felter[5].eksternId).isEqualTo("mottattDato") assertThat(felter[5].verdi).isEqualTo(eventTid) + assertThat(felter[6].eksternId).isEqualTo("registrertDato") + assertThat(felter[6].verdi).isEqualTo(eventTid) } @Test From 35c80796489927ef5a808b936ae6a77181bd5694 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 09:36:35 +0100 Subject: [PATCH 12/15] Bump the github group with 5 updates (#1881) Bumps the github group with 5 updates: | Package | From | To | | --- | --- | --- | | [actions/setup-java](https://github.com/actions/setup-java) | `3` | `4` | | [gradle/gradle-build-action](https://github.com/gradle/gradle-build-action) | `2` | `3` | | [actions/github-script](https://github.com/actions/github-script) | `6` | `7` | | [nais/deploy](https://github.com/nais/deploy) | `1` | `2` | | [peter-evans/slash-command-dispatch](https://github.com/peter-evans/slash-command-dispatch) | `3.0.1` | `4.0.0` | Updates `actions/setup-java` from 3 to 4 - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v3...v4) Updates `gradle/gradle-build-action` from 2 to 3 - [Release notes](https://github.com/gradle/gradle-build-action/releases) - [Commits](https://github.com/gradle/gradle-build-action/compare/v2...v3) Updates `actions/github-script` from 6 to 7 - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/v6...v7) Updates `nais/deploy` from 1 to 2 - [Release notes](https://github.com/nais/deploy/releases) - [Commits](https://github.com/nais/deploy/compare/v1...v2) Updates `peter-evans/slash-command-dispatch` from 3.0.1 to 4.0.0 - [Release notes](https://github.com/peter-evans/slash-command-dispatch/releases) - [Commits](https://github.com/peter-evans/slash-command-dispatch/compare/v3.0.1...v4.0.0) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-major dependency-group: github - dependency-name: gradle/gradle-build-action dependency-type: direct:production update-type: version-update:semver-major dependency-group: github - dependency-name: actions/github-script dependency-type: direct:production update-type: version-update:semver-major dependency-group: github - dependency-name: nais/deploy dependency-type: direct:production update-type: version-update:semver-major dependency-group: github - dependency-name: peter-evans/slash-command-dispatch dependency-type: direct:production update-type: version-update:semver-major dependency-group: github ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-master.yaml | 10 +++++----- .github/workflows/build-pull-request.yaml | 2 +- .github/workflows/deploy-alerts.yml | 4 ++-- .github/workflows/deploy-preprod.yml | 4 ++-- .github/workflows/dispatch.yml | 2 +- .github/workflows/kafka.yml | 20 ++++++++++---------- .github/workflows/promote.yml | 10 +++++----- 7 files changed, 26 insertions(+), 26 deletions(-) diff --git a/.github/workflows/build-master.yaml b/.github/workflows/build-master.yaml index 3936e0069..b3aa6cd37 100644 --- a/.github/workflows/build-master.yaml +++ b/.github/workflows/build-master.yaml @@ -25,14 +25,14 @@ jobs: issues: write steps: - uses: actions/checkout@v4 - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 with: java-version: 21 distribution: temurin cache: gradle - name: Setup Gradle to generate and submit dependency graphs - uses: gradle/gradle-build-action@v2 + uses: gradle/gradle-build-action@v3 with: dependency-graph: generate-and-submit @@ -64,7 +64,7 @@ jobs: run: echo "IMAGE=${BASE_IMAGE}:${TAG}" >> $GITHUB_ENV - name: Lukk gamle issues - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | @@ -87,7 +87,7 @@ jobs: - name: Opprett deployment issue id: createdeployissue if: success() - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: github-token: ${{secrets.GITHUB_TOKEN}} script: | @@ -102,7 +102,7 @@ jobs: }); - name: Deploy til preprod - uses: nais/deploy/actions/deploy@v1 + uses: nais/deploy/actions/deploy@v2 env: APIKEY: ${{ secrets.DEPLOY_KEY }} CLUSTER: dev-fss diff --git a/.github/workflows/build-pull-request.yaml b/.github/workflows/build-pull-request.yaml index 2a8002252..60866f59d 100644 --- a/.github/workflows/build-pull-request.yaml +++ b/.github/workflows/build-pull-request.yaml @@ -20,7 +20,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 with: java-version: 21 distribution: temurin diff --git a/.github/workflows/deploy-alerts.yml b/.github/workflows/deploy-alerts.yml index d3998fe51..0126ab68b 100644 --- a/.github/workflows/deploy-alerts.yml +++ b/.github/workflows/deploy-alerts.yml @@ -16,13 +16,13 @@ jobs: cluster: [dev-fss, prod-fss] steps: - uses: actions/checkout@v4 - - uses: nais/deploy/actions/deploy@v1 + - uses: nais/deploy/actions/deploy@v2 env: APIKEY: ${{ secrets.DEPLOY_KEY }} CLUSTER: ${{ matrix.cluster }} RESOURCE: nais/alerts/alert-manager.yml VAR: cluster=${{ matrix.cluster }},slack_channel=${{ matrix.cluster == 'prod-fss' && '#k9-los-alerts' || '#k9-los-alerts-dev' }} - - uses: nais/deploy/actions/deploy@v1 + - uses: nais/deploy/actions/deploy@v2 env: APIKEY: ${{ secrets.DEPLOY_KEY }} CLUSTER: ${{ matrix.cluster }} diff --git a/.github/workflows/deploy-preprod.yml b/.github/workflows/deploy-preprod.yml index f16f6f89b..00b93bf20 100644 --- a/.github/workflows/deploy-preprod.yml +++ b/.github/workflows/deploy-preprod.yml @@ -14,7 +14,7 @@ jobs: contents: read steps: - uses: actions/checkout@v4 - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 with: java-version: 21 distribution: temurin @@ -43,7 +43,7 @@ jobs: run: echo "IMAGE=${BASE_IMAGE}:${TAG}" >> $GITHUB_ENV - name: Deploy til preprod - uses: nais/deploy/actions/deploy@v1 + uses: nais/deploy/actions/deploy@v2 env: APIKEY: ${{ secrets.DEPLOY_KEY }} CLUSTER: dev-fss diff --git a/.github/workflows/dispatch.yml b/.github/workflows/dispatch.yml index 12f638166..764946e23 100644 --- a/.github/workflows/dispatch.yml +++ b/.github/workflows/dispatch.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Slash command dispatch - uses: peter-evans/slash-command-dispatch@v3.0.1 + uses: peter-evans/slash-command-dispatch@v4.0.0 with: token: ${{ secrets.LOS_TOKEN }} commands: promote diff --git a/.github/workflows/kafka.yml b/.github/workflows/kafka.yml index b186c4c64..25ea31de9 100644 --- a/.github/workflows/kafka.yml +++ b/.github/workflows/kafka.yml @@ -13,31 +13,31 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: nais/deploy/actions/deploy@v1 + - uses: nais/deploy/actions/deploy@v2 env: APIKEY: ${{ secrets.DEPLOY_KEY }} CLUSTER: dev-gcp VAR: kafka-pool=nav-dev RESOURCE: nais/kafka/produksjonsstyring-k9sak.yml - - uses: nais/deploy/actions/deploy@v1 + - uses: nais/deploy/actions/deploy@v2 env: APIKEY: ${{ secrets.DEPLOY_KEY }} CLUSTER: dev-gcp VAR: kafka-pool=nav-dev RESOURCE: nais/kafka/produksjonsstyring-k9punsj.yml - - uses: nais/deploy/actions/deploy@v1 + - uses: nais/deploy/actions/deploy@v2 env: APIKEY: ${{ secrets.DEPLOY_KEY }} CLUSTER: dev-gcp VAR: kafka-pool=nav-dev RESOURCE: nais/kafka/aapen-k9statistikk-behandling-v2.yml - - uses: nais/deploy/actions/deploy@v1 + - uses: nais/deploy/actions/deploy@v2 env: APIKEY: ${{ secrets.DEPLOY_KEY }} CLUSTER: dev-gcp VAR: kafka-pool=nav-dev RESOURCE: nais/kafka/aapen-k9statistikk-sak-v2.yml - - uses: nais/deploy/actions/deploy@v1 + - uses: nais/deploy/actions/deploy@v2 env: APIKEY: ${{ secrets.DEPLOY_KEY }} CLUSTER: dev-gcp @@ -50,31 +50,31 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: nais/deploy/actions/deploy@v1 + - uses: nais/deploy/actions/deploy@v2 env: APIKEY: ${{ secrets.DEPLOY_KEY }} CLUSTER: prod-gcp VAR: kafka-pool=nav-prod RESOURCE: nais/kafka/produksjonsstyring-k9sak.yml - - uses: nais/deploy/actions/deploy@v1 + - uses: nais/deploy/actions/deploy@v2 env: APIKEY: ${{ secrets.DEPLOY_KEY }} CLUSTER: prod-gcp VAR: kafka-pool=nav-prod RESOURCE: nais/kafka/produksjonsstyring-k9punsj.yml - - uses: nais/deploy/actions/deploy@v1 + - uses: nais/deploy/actions/deploy@v2 env: APIKEY: ${{ secrets.DEPLOY_KEY }} CLUSTER: prod-gcp VAR: kafka-pool=nav-prod RESOURCE: nais/kafka/oppgavemeldinger-klage-til-los.yml - - uses: nais/deploy/actions/deploy@v1 + - uses: nais/deploy/actions/deploy@v2 env: APIKEY: ${{ secrets.DEPLOY_KEY }} CLUSTER: prod-gcp VAR: kafka-pool=nav-prod RESOURCE: nais/kafka/aapen-k9statistikk-behandling-v2.yml - - uses: nais/deploy/actions/deploy@v1 + - uses: nais/deploy/actions/deploy@v2 env: APIKEY: ${{ secrets.DEPLOY_KEY }} CLUSTER: prod-gcp diff --git a/.github/workflows/promote.yml b/.github/workflows/promote.yml index 1700fc551..85a0238d6 100644 --- a/.github/workflows/promote.yml +++ b/.github/workflows/promote.yml @@ -16,7 +16,7 @@ jobs: - name: Henter informasjon fra issuet id: issue_comment - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: script: | github.rest.issues.get( { @@ -43,7 +43,7 @@ jobs: ref: ${{ steps.issue_comment.outputs.sha }} - name: Promoter til cluster og namespace - uses: nais/deploy/actions/deploy@v1 + uses: nais/deploy/actions/deploy@v2 env: APIKEY: ${{ secrets.DEPLOY_KEY }} CLUSTER: ${{ env.CLUSTER }} @@ -51,7 +51,7 @@ jobs: - name: Oppdater kommentar med deployment status ved feil if: failure() - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: script: | const issue = { owner: context.issue.owner, @@ -65,7 +65,7 @@ jobs: - name: Oppdater kommentar med deployment status if: success() - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: script: | const issue = { owner: context.issue.owner, @@ -81,7 +81,7 @@ jobs: echo "COMMIT_SHA=$(git rev-parse ${{ env.TAG }})" >> $GITHUB_ENV - name: Tagg prodsatt commit if: success() && env.CLUSTER == 'prod-fss' - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: github-token: ${{secrets.GITHUB_TOKEN}} script: | From 147d5ea6c42bc91466afbb022b0b1d7e79ab64ad Mon Sep 17 00:00:00 2001 From: Mats Bolstad Date: Tue, 26 Nov 2024 14:41:57 +0100 Subject: [PATCH 13/15] =?UTF-8?q?Avdelingsleder=20f=C3=A5r=20kun=20se=20k?= =?UTF-8?q?=C3=B8er=20ihht=20skjerming?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoApis.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoApis.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoApis.kt index b3d47a50b..5a0aa934d 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoApis.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoApis.kt @@ -22,7 +22,7 @@ fun Route.OppgaveKoApis() { get("/") { requestContextService.withRequestContext(call) { if (pepClient.erOppgaveStyrer()) { - val oppgavekøer = oppgaveKoTjeneste.hentOppgavekøer() + val oppgavekøer = oppgaveKoTjeneste.hentOppgavekøer(pepClient.harTilgangTilKode6()) .map { oppgaveko -> OppgaveKoListeelement( id = oppgaveko.id, From 889204ae4f1bbc203f313d1df0c451f845a74ecb Mon Sep 17 00:00:00 2001 From: Mats Bolstad Date: Wed, 27 Nov 2024 11:37:20 +0100 Subject: [PATCH 14/15] Skjermer kode 6 bedre (#2753) * Skjermer kode 6 bedre * Forenkler, trenger ikke pair * Bruker "inkluder kode 6" i stedet for "ikke ta hensyn", som er litt mer beskrivende --- .../K9TilbakeEventHandler.kt | 2 +- .../K9punsjEventHandler.kt | 2 +- .../K9sakEventHandler.kt | 2 +- .../nav/k9/los/domene/modell/K9SakModell.kt | 4 +- .../k9/los/domene/modell/K9TilbakeModell.kt | 4 +- .../repository/OppgaveK\303\270Repository.kt" | 9 ++- .../repository/ReservasjonRepository.kt | 5 +- .../repository/SaksbehandlerRepository.kt | 16 ++--- .../los/eventhandler/K\303\270Oppdatert.kt" | 2 +- .../los/eventhandler/RefreshK9v3Tjeneste.kt | 2 +- .../k9/los/eventhandler/SjekkReserverte.kt | 2 +- .../jobber/K9sakBehandlingsoppfriskingJobb.kt | 2 +- .../forvaltning/ForvaltningApis.kt | 4 +- .../los/nyoppgavestyring/ko/OppgaveKoApis.kt | 20 +++--- .../nyoppgavestyring/ko/OppgaveKoTjeneste.kt | 27 +++---- .../ko/db/OppgaveKoRepository.kt | 71 ++++++++++++------- .../avdelingsleder/AvdelingslederTjeneste.kt | 6 +- .../k9/los/tjenester/innsikt/InnsiktApis.kt | 8 +-- .../oppgave/OppgaveK\303\270Oppdaterer.kt" | 2 +- .../saksbehandler/oppgave/OppgaveTjeneste.kt | 18 ++--- .../oppgave/ReservasjonTjeneste.kt | 2 +- .../BeslutterSkalIkkePlukkeEgenSakTest.kt | 2 +- .../K9sakEventHandlerTest.kt | 2 +- .../k9saktillosadapter/K9SakTilLosIT.kt | 2 +- .../los/nyoppgavestyring/ko/OppgaveKoTest.kt | 18 +++-- 25 files changed, 129 insertions(+), 105 deletions(-) diff --git a/src/main/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9TilbakeEventHandler.kt b/src/main/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9TilbakeEventHandler.kt index ff35c9283..f864dbb69 100644 --- a/src/main/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9TilbakeEventHandler.kt +++ b/src/main/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9TilbakeEventHandler.kt @@ -70,7 +70,7 @@ class K9TilbakeEventHandler( OpentelemetrySpanUtil.span("k9TilbakeTilLosAdapterTjeneste.oppdaterOppgaveForBehandlingUuid") { k9TilbakeTilLosAdapterTjeneste.oppdaterOppgaveForBehandlingUuid(event.eksternId!!) } runBlocking { - for (oppgavekø in oppgaveKøRepository.hentKøIdIkkeTaHensyn()) { + for (oppgavekø in oppgaveKøRepository.hentKøIdInkluderKode6()) { oppgaveKøRepository.leggTilOppgaverTilKø(oppgavekø, listOf(oppgave), reservasjonRepository) } statistikkChannel.send(true) diff --git a/src/main/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9punsjEventHandler.kt b/src/main/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9punsjEventHandler.kt index 618053cea..cf1c661ef 100644 --- a/src/main/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9punsjEventHandler.kt +++ b/src/main/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9punsjEventHandler.kt @@ -58,7 +58,7 @@ class K9punsjEventHandler constructor( } runBlocking { - for (oppgavekø in oppgaveKøRepository.hentKøIdIkkeTaHensyn()) { + for (oppgavekø in oppgaveKøRepository.hentKøIdInkluderKode6()) { oppgaveKøRepository.leggTilOppgaverTilKø(oppgavekø, listOf(oppgave), reservasjonRepository) } statistikkChannel.send(true) diff --git a/src/main/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9sakEventHandler.kt b/src/main/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9sakEventHandler.kt index abe2fac6c..e33e61287 100644 --- a/src/main/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9sakEventHandler.kt +++ b/src/main/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9sakEventHandler.kt @@ -85,7 +85,7 @@ class K9sakEventHandler constructor( } modell.reportMetrics(reservasjonRepository) runBlocking { - for (oppgavekø in oppgaveKøRepository.hentKøIdIkkeTaHensyn()) { + for (oppgavekø in oppgaveKøRepository.hentKøIdInkluderKode6()) { if (reservasjonFjernet){ oppgaveKøRepository.leggTilOppgaverTilKø(oppgavekø, listOf(oppgave), erOppgavenReservertSjekk = {false}) //reservasjon nettopp fjernet, trenger ikke sjekke mot repository } else { diff --git a/src/main/kotlin/no/nav/k9/los/domene/modell/K9SakModell.kt b/src/main/kotlin/no/nav/k9/los/domene/modell/K9SakModell.kt index 0677cf3fb..664051c31 100644 --- a/src/main/kotlin/no/nav/k9/los/domene/modell/K9SakModell.kt +++ b/src/main/kotlin/no/nav/k9/los/domene/modell/K9SakModell.kt @@ -273,7 +273,7 @@ data class K9SakModell( val oppgave = oppgave() val reservasjon = reservasjonRepository.hentOptional(oppgave.eksternId) val beslutter = if (oppgave.tilBeslutter && reservasjon != null) { - val saksbehandler = saksbehandlerRepository.finnSaksbehandlerMedIdentIkkeTaHensyn(reservasjon.reservertAv) + val saksbehandler = saksbehandlerRepository.finnSaksbehandlerMedIdentInkluderKode6(reservasjon.reservertAv) saksbehandler?.brukerIdent } else { "" @@ -283,7 +283,7 @@ data class K9SakModell( if (reservasjon != null) { val hentMedHistorikk = reservasjonRepository.hentMedHistorikk(oppgave.eksternId) val reservertav = hentMedHistorikk.map { it.reservertAv }.first() - saksbehandlerRepository.finnSaksbehandlerMedIdentIkkeTaHensyn(reservertav)?.enhet?.substringBefore(" ") + saksbehandlerRepository.finnSaksbehandlerMedIdentInkluderKode6(reservertav)?.enhet?.substringBefore(" ") } else { "SRV" } diff --git a/src/main/kotlin/no/nav/k9/los/domene/modell/K9TilbakeModell.kt b/src/main/kotlin/no/nav/k9/los/domene/modell/K9TilbakeModell.kt index 1d4ea73c2..0b398a067 100644 --- a/src/main/kotlin/no/nav/k9/los/domene/modell/K9TilbakeModell.kt +++ b/src/main/kotlin/no/nav/k9/los/domene/modell/K9TilbakeModell.kt @@ -245,7 +245,7 @@ data class K9TilbakeModell( val oppgave = oppgave(sisteEvent()) val reservasjon = reservasjonRepository.hentOptional(oppgave.eksternId) val beslutter = if (oppgave.tilBeslutter && reservasjon != null) { - val saksbehandler = saksbehandlerRepository.finnSaksbehandlerMedIdentIkkeTaHensyn(reservasjon.reservertAv) + val saksbehandler = saksbehandlerRepository.finnSaksbehandlerMedIdentInkluderKode6(reservasjon.reservertAv) saksbehandler?.brukerIdent } else { "" @@ -255,7 +255,7 @@ data class K9TilbakeModell( if (reservasjonRepository.finnes(oppgave.eksternId)) { val hentMedHistorikk = reservasjonRepository.hentMedHistorikk(oppgave.eksternId) val reservertav = hentMedHistorikk.map { it.reservertAv }.first() - saksbehandlerRepository.finnSaksbehandlerMedIdentIkkeTaHensyn(reservertav)?.enhet?.substringBefore(" ") + saksbehandlerRepository.finnSaksbehandlerMedIdentInkluderKode6(reservertav)?.enhet?.substringBefore(" ") } else { "SRV" } diff --git "a/src/main/kotlin/no/nav/k9/los/domene/repository/OppgaveK\303\270Repository.kt" "b/src/main/kotlin/no/nav/k9/los/domene/repository/OppgaveK\303\270Repository.kt" index ddcab9da6..88870a684 100644 --- "a/src/main/kotlin/no/nav/k9/los/domene/repository/OppgaveK\303\270Repository.kt" +++ "b/src/main/kotlin/no/nav/k9/los/domene/repository/OppgaveK\303\270Repository.kt" @@ -17,7 +17,6 @@ import org.slf4j.Logger import org.slf4j.LoggerFactory import java.time.LocalDate import java.util.* -import java.util.concurrent.atomic.LongAdder import javax.sql.DataSource class OppgaveKøRepository( @@ -29,7 +28,7 @@ class OppgaveKøRepository( private val pepClient: IPepClient ) { private val log: Logger = LoggerFactory.getLogger(OppgaveKøRepository::class.java) - suspend fun hent(): List { + suspend fun hentAlle(): List { val skjermet = pepClient.harTilgangTilKode6() val json: List = using(sessionOf(dataSource)) { it.run( @@ -45,7 +44,7 @@ class OppgaveKøRepository( return json.map { s -> LosObjectMapper.instance.readValue(s, OppgaveKø::class.java) }.toList() } - fun hentIkkeTaHensyn(): List { + fun hentAlleInkluderKode6(): List { val json: List = using(sessionOf(dataSource)) { it.run( queryOf( @@ -60,7 +59,7 @@ class OppgaveKøRepository( return json.map { s -> LosObjectMapper.instance.readValue(s, OppgaveKø::class.java) }.toList() } - fun hentKøIdIkkeTaHensyn(): List { + fun hentKøIdInkluderKode6(): List { val uuidListe: List = using(sessionOf(dataSource)) { it.run( queryOf( @@ -208,7 +207,7 @@ class OppgaveKøRepository( } } - suspend fun lagreIkkeTaHensyn( + suspend fun lagreInkluderKode6( uuid: UUID, f: (OppgaveKø?) -> OppgaveKø ) { diff --git a/src/main/kotlin/no/nav/k9/los/domene/repository/ReservasjonRepository.kt b/src/main/kotlin/no/nav/k9/los/domene/repository/ReservasjonRepository.kt index 2cd3735e1..0d630fa8c 100644 --- a/src/main/kotlin/no/nav/k9/los/domene/repository/ReservasjonRepository.kt +++ b/src/main/kotlin/no/nav/k9/los/domene/repository/ReservasjonRepository.kt @@ -19,7 +19,6 @@ import org.slf4j.LoggerFactory import java.time.LocalDateTime import java.time.temporal.ChronoUnit import java.util.* -import java.util.concurrent.atomic.LongAdder import javax.sql.DataSource import kotlin.system.measureTimeMillis @@ -135,7 +134,7 @@ class ReservasjonRepository( this, ) ) { - oppgaveKøRepository.lagreIkkeTaHensyn(oppgaveKø.id) { + oppgaveKøRepository.lagreInkluderKode6(oppgaveKø.id) { it!!.leggOppgaveTilEllerFjernFraKø( oppgave = oppgave, reservasjonRepository = this, @@ -169,7 +168,7 @@ class ReservasjonRepository( val inaktive = reservasjonPrAktive[false] ?: emptyList() var totalAntallFjerninger = 0 if (inaktive.isNotEmpty()) { - val oppgaveKøer = oppgaveKøRepository.hentIkkeTaHensyn() + val oppgaveKøer = oppgaveKøRepository.hentAlleInkluderKode6() val tid = measureTimeMillis { inaktive.forEach { reservasjon -> totalAntallFjerninger += fjernInaktivReservasjon(reservasjon, oppgaveKøer, saksbehandlersIdent) diff --git a/src/main/kotlin/no/nav/k9/los/domene/repository/SaksbehandlerRepository.kt b/src/main/kotlin/no/nav/k9/los/domene/repository/SaksbehandlerRepository.kt index bd20eb7ef..56db6d2fe 100644 --- a/src/main/kotlin/no/nav/k9/los/domene/repository/SaksbehandlerRepository.kt +++ b/src/main/kotlin/no/nav/k9/los/domene/repository/SaksbehandlerRepository.kt @@ -64,7 +64,7 @@ class SaksbehandlerRepository( } } - private fun lagreMedIdIkkeTaHensyn( + private fun lagreMedIdInkluderKode6( id: String, f: (Saksbehandler?) -> Saksbehandler ) { @@ -202,8 +202,8 @@ class SaksbehandlerRepository( if (id == null) { return } - if (finnSaksbehandlerMedIdentIkkeTaHensyn(id) != null) { - lagreMedIdIkkeTaHensyn(id) { saksbehandler -> + if (finnSaksbehandlerMedIdentInkluderKode6(id) != null) { + lagreMedIdInkluderKode6(id) { saksbehandler -> val fjernet = saksbehandler!!.reservasjoner.remove(reservasjon) loggFjernet(fjernet, id, reservasjon) saksbehandler @@ -211,12 +211,12 @@ class SaksbehandlerRepository( } } - fun fjernReservasjonIkkeTaHensyn(id: String?, reservasjon: UUID) { + fun fjernReservasjonInkluderKode6(id: String?, reservasjon: UUID) { if (id == null) { return } - if (finnSaksbehandlerMedIdentIkkeTaHensyn(id) != null) { - lagreMedIdIkkeTaHensyn(id) { saksbehandler -> + if (finnSaksbehandlerMedIdentInkluderKode6(id) != null) { + lagreMedIdInkluderKode6(id) { saksbehandler -> val fjernet = saksbehandler!!.reservasjoner.remove(reservasjon) loggFjernet(fjernet, id, reservasjon) saksbehandler @@ -319,7 +319,7 @@ class SaksbehandlerRepository( return saksbehandler } - fun finnSaksbehandlerMedIdentIkkeTaHensyn(ident: String): Saksbehandler? { + fun finnSaksbehandlerMedIdentInkluderKode6(ident: String): Saksbehandler? { val saksbehandler = using(sessionOf(dataSource)) { it.run( queryOf( @@ -361,7 +361,7 @@ class SaksbehandlerRepository( return identer } - fun hentAlleSaksbehandlereIkkeTaHensyn(): List { + fun hentAlleSaksbehandlereInkluderKode6(): List { val identer = using(sessionOf(dataSource)) { it.run( queryOf( diff --git "a/src/main/kotlin/no/nav/k9/los/eventhandler/K\303\270Oppdatert.kt" "b/src/main/kotlin/no/nav/k9/los/eventhandler/K\303\270Oppdatert.kt" index 4986f36fb..b6ae7fc03 100644 --- "a/src/main/kotlin/no/nav/k9/los/eventhandler/K\303\270Oppdatert.kt" +++ "b/src/main/kotlin/no/nav/k9/los/eventhandler/K\303\270Oppdatert.kt" @@ -74,7 +74,7 @@ private suspend fun oppdaterKø( } } val k9sakRefreshBehanderListe = mutableListOf() - oppgaveKøRepository.lagreIkkeTaHensyn(it) { oppgaveKø -> + oppgaveKøRepository.lagreInkluderKode6(it) { oppgaveKø -> checkNotNull(oppgaveKø) { "Fant ikke kø ved køoppdatering" } if (oppgaveKø.oppgaverOgDatoer == opprinnelige) { oppgaveKø.oppgaverOgDatoer = kø.oppgaverOgDatoer diff --git a/src/main/kotlin/no/nav/k9/los/eventhandler/RefreshK9v3Tjeneste.kt b/src/main/kotlin/no/nav/k9/los/eventhandler/RefreshK9v3Tjeneste.kt index e31bbfd6e..4438c3726 100644 --- a/src/main/kotlin/no/nav/k9/los/eventhandler/RefreshK9v3Tjeneste.kt +++ b/src/main/kotlin/no/nav/k9/los/eventhandler/RefreshK9v3Tjeneste.kt @@ -99,7 +99,7 @@ class RefreshK9v3Tjeneste( @WithSpan fun behandlingerTilOppfriskningForKøer(tx: TransactionalSession, køId: List, antallPrKø: Int) : Set{ return DetaljerMetrikker.time("RefreshK9V3", "refreshForKøer", køId.size.toString()) { - val køer = køId.map { oppgaveKoRepository.hent(it) } + val køer = køId.map { oppgaveKoRepository.hentInkluderKode6(it) } behandlingerTilOppfriskning(tx, køer, antallPrKø) } } diff --git a/src/main/kotlin/no/nav/k9/los/eventhandler/SjekkReserverte.kt b/src/main/kotlin/no/nav/k9/los/eventhandler/SjekkReserverte.kt index 8b0bac6f2..0ffa25579 100644 --- a/src/main/kotlin/no/nav/k9/los/eventhandler/SjekkReserverte.kt +++ b/src/main/kotlin/no/nav/k9/los/eventhandler/SjekkReserverte.kt @@ -18,7 +18,7 @@ fun sjekkReserverteJobb( ) { OpentelemetrySpanUtil.span("sjekkReserverteJobb", emptyMap()) { JobbMetrikker.time("sjekk_reserverte") { - for (saksbehandler in saksbehandlerRepository.hentAlleSaksbehandlereIkkeTaHensyn()) { + for (saksbehandler in saksbehandlerRepository.hentAlleSaksbehandlereInkluderKode6()) { runBlocking { reservasjonRepository.hentOgFjernInaktiveReservasjoner(saksbehandler.reservasjoner, saksbehandler.brukerIdent) } } } diff --git a/src/main/kotlin/no/nav/k9/los/jobber/K9sakBehandlingsoppfriskingJobb.kt b/src/main/kotlin/no/nav/k9/los/jobber/K9sakBehandlingsoppfriskingJobb.kt index f545b5a5a..fb6312efe 100644 --- a/src/main/kotlin/no/nav/k9/los/jobber/K9sakBehandlingsoppfriskingJobb.kt +++ b/src/main/kotlin/no/nav/k9/los/jobber/K9sakBehandlingsoppfriskingJobb.kt @@ -101,7 +101,7 @@ class K9sakBehandlingsoppfriskingJobb( } private fun hentOppgaverFørstIGamleKøer(k9sakOppgaver: Set): Set { - val køene = oppgaveKøRepository.hentIkkeTaHensyn() + val køene = oppgaveKøRepository.hentAlleInkluderKode6() log.info("Hentet ${køene.size} køer") return køene.flatMap { kø -> kø.oppgaverOgDatoer diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/forvaltning/ForvaltningApis.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/forvaltning/ForvaltningApis.kt index 412fdcf85..8e133d320 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/forvaltning/ForvaltningApis.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/forvaltning/ForvaltningApis.kt @@ -198,7 +198,7 @@ fun Route.forvaltningApis() { route("/ytelse") { get("/oppgaveko/antall") { val antall = oppgaveKoTjeneste.hentOppgavekøer().map { - oppgaveKoTjeneste.hentAntallOppgaverForKø(it.id, false) }.size + oppgaveKoTjeneste.hentAntallOppgaverForKø(oppgaveKoId = it.id, filtrerReserverte = false, skjermet = false) }.size call.respond(antall) } @@ -209,7 +209,7 @@ fun Route.forvaltningApis() { get("/oppgaveko/{ko}/antall") { val køId = call.parameters["ko"]!!.toLong() val medReserverte = call.request.queryParameters["reserverte"]?.toBoolean() ?: false - val antall = oppgaveKoTjeneste.hentAntallOppgaverForKø(køId, medReserverte) + val antall = oppgaveKoTjeneste.hentAntallOppgaverForKø(køId, medReserverte, false) call.respond(if (antall > 10) antall else -1) } } diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoApis.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoApis.kt index 5a0aa934d..71c426ae4 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoApis.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoApis.kt @@ -48,7 +48,8 @@ fun Route.OppgaveKoApis() { kopierOppgaveKoDto.kopierFraOppgaveId, kopierOppgaveKoDto.tittel, kopierOppgaveKoDto.taMedQuery, - kopierOppgaveKoDto.taMedSaksbehandlere + kopierOppgaveKoDto.taMedSaksbehandlere, + pepClient.harTilgangTilKode6() ) ) } else { @@ -73,7 +74,7 @@ fun Route.OppgaveKoApis() { requestContextService.withRequestContext(call) { if (pepClient.erOppgaveStyrer()) { val oppgavekøId = call.parameters["id"]!! - call.respond(oppgaveKoTjeneste.hent(oppgavekøId.toLong())) + call.respond(oppgaveKoTjeneste.hent(oppgavekøId.toLong(), pepClient.harTilgangTilKode6())) } else { call.respond(HttpStatusCode.Forbidden) } @@ -160,17 +161,19 @@ fun Route.OppgaveKoApis() { requestContextService.withRequestContext(call) { if (pepClient.harBasisTilgang()) { val oppgavekøId = call.parameters["id"]!! - + val skjermet = pepClient.harTilgangTilKode6() val antallUtenReserverte = OpentelemetrySpanUtil.span("OppgaveKoTjeneste.hentAntallOppgaverForKø") { oppgaveKoTjeneste.hentAntallOppgaverForKø( oppgavekøId.toLong(), - true + true, + skjermet ) } val antallMedReserverte = OpentelemetrySpanUtil.span("OppgaveKoTjeneste.hentAntallOppgaverForKø") { oppgaveKoTjeneste.hentAntallOppgaverForKø( oppgavekøId.toLong(), - false + false, + skjermet ) } call.respond(AntallOppgaverOgReserverte(antallUtenReserverte, antallMedReserverte)) @@ -184,11 +187,12 @@ fun Route.OppgaveKoApis() { requestContextService.withRequestContext(call) { if (pepClient.harBasisTilgang()) { val oppgavekøId = call.parameters["id"]!! - + val skjermet = pepClient.harTilgangTilKode6() val antallUtenReserverte = OpentelemetrySpanUtil.span("OppgaveKoTjeneste.hentAntallOppgaverForKø") { oppgaveKoTjeneste.hentAntallOppgaverForKø( oppgavekøId.toLong(), - true + true, + skjermet ) } call.respond(AntallOppgaver(antallUtenReserverte)) @@ -226,7 +230,7 @@ fun Route.OppgaveKoApis() { requestContextService.withRequestContext(call) { if (pepClient.erOppgaveStyrer()) { val oppgaveKo = call.receive() - call.respond(oppgaveKoTjeneste.endre(oppgaveKo)) + call.respond(oppgaveKoTjeneste.endre(oppgaveKo, pepClient.harTilgangTilKode6())) } else { call.respond(HttpStatusCode.Forbidden) } diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoTjeneste.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoTjeneste.kt index 7c2741986..2b2925b47 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoTjeneste.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoTjeneste.kt @@ -64,7 +64,7 @@ class OppgaveKoTjeneste( ønsketAntallSaker: Long, fjernReserverte: Boolean = false ): List { - val ko = oppgaveKoRepository.hent(oppgaveKoId) + val ko = oppgaveKoRepository.hent(oppgaveKoId, pepClient.harTilgangTilKode6()) val køoppgaveIder = oppgaveQueryService.queryForOppgaveEksternId(QueryRequest(ko.oppgaveQuery, fjernReserverte = fjernReserverte, Avgrensning.maxAntall(ønsketAntallSaker))) val oppgaver = mutableListOf() @@ -117,9 +117,10 @@ class OppgaveKoTjeneste( @WithSpan fun hentAntallOppgaverForKø( oppgaveKoId: Long, - filtrerReserverte: Boolean + filtrerReserverte: Boolean, + skjermet: Boolean ): Long { - val ko = oppgaveKoRepository.hent(oppgaveKoId) + val ko = oppgaveKoRepository.hent(oppgaveKoId, skjermet) return oppgaveQueryService.queryForAntall(QueryRequest(ko.oppgaveQuery, fjernReserverte = filtrerReserverte)) } @@ -127,7 +128,7 @@ class OppgaveKoTjeneste( fun hentAntallUreserverteOppgaveForKø( oppgaveKoId: Long ): Long { - val ko = oppgaveKoRepository.hent(oppgaveKoId) + val ko = oppgaveKoRepository.hent(oppgaveKoId, runBlocking { pepClient.harTilgangTilKode6() }) return oppgaveQueryService.queryForAntall(QueryRequest(ko.oppgaveQuery, fjernReserverte = true)) } @@ -148,8 +149,8 @@ class OppgaveKoTjeneste( coroutineContext: CoroutineContext ): Pair? { log.info("taReservasjonFraKø, oppgaveKøId: $oppgaveKoId") - - val oppgavekø = DetaljerMetrikker.time("taReservasjonFraKø", "hentKø", "$oppgaveKoId" ) { oppgaveKoRepository.hent(oppgaveKoId) } + val skjermet = runBlocking(coroutineContext) { pepClient.harTilgangTilKode6() } + val oppgavekø = DetaljerMetrikker.time("taReservasjonFraKø", "hentKø", "$oppgaveKoId" ) { oppgaveKoRepository.hent(oppgaveKoId, skjermet) } var antallKandidaterEtterspurt = 1 while (true) { @@ -233,7 +234,7 @@ class OppgaveKoTjeneste( @WithSpan suspend fun hentSaksbehandlereForKo(oppgaveKoId: Long): List { - val oppgaveKo = oppgaveKoRepository.hent(oppgaveKoId) + val oppgaveKo = oppgaveKoRepository.hent(oppgaveKoId, pepClient.harTilgangTilKode6()) return oppgaveKo.saksbehandlere.mapNotNull { saksbehandlerEpost: String -> saksbehandlerRepository.finnSaksbehandlerMedEpost(saksbehandlerEpost).also { if (it == null) { @@ -244,8 +245,8 @@ class OppgaveKoTjeneste( } @WithSpan - fun kopier(kopierFraOppgaveId: Long, tittel: String, taMedQuery: Boolean, taMedSaksbehandlere: Boolean): OppgaveKo { - val kø = oppgaveKoRepository.kopier(kopierFraOppgaveId, tittel, taMedQuery, taMedSaksbehandlere) + fun kopier(kopierFraOppgaveId: Long, tittel: String, taMedQuery: Boolean, taMedSaksbehandlere: Boolean, skjermet: Boolean): OppgaveKo { + val kø = oppgaveKoRepository.kopier(kopierFraOppgaveId, tittel, taMedQuery, taMedSaksbehandlere, skjermet) runBlocking { køpåvirkendeHendelseChannel.send(Kødefinisjon(kø.id)) } @@ -262,8 +263,8 @@ class OppgaveKoTjeneste( } @WithSpan - fun hent(oppgaveKoId: Long): OppgaveKo { - return oppgaveKoRepository.hent(oppgaveKoId) + fun hent(oppgaveKoId: Long, harTilgangTilKode6: Boolean): OppgaveKo { + return oppgaveKoRepository.hent(oppgaveKoId, harTilgangTilKode6) } @WithSpan @@ -274,8 +275,8 @@ class OppgaveKoTjeneste( } } - fun endre(oppgaveKo: OppgaveKo): OppgaveKo { - val kø = oppgaveKoRepository.endre(oppgaveKo) + fun endre(oppgaveKo: OppgaveKo, skjermet: Boolean): OppgaveKo { + val kø = oppgaveKoRepository.endre(oppgaveKo, skjermet) runBlocking { køpåvirkendeHendelseChannel.send(Kødefinisjon(kø.id)) } diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/db/OppgaveKoRepository.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/db/OppgaveKoRepository.kt index 9485567fc..3ec822d70 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/db/OppgaveKoRepository.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/ko/db/OppgaveKoRepository.kt @@ -47,13 +47,13 @@ class OppgaveKoRepository( ) } - fun hent(oppgaveKoId: Long): OppgaveKo { + fun hent(oppgaveKoId: Long, skjermet: Boolean): OppgaveKo { return using(sessionOf(datasource)) { - it.transaction { tx -> hent(tx, oppgaveKoId).first } + it.transaction { tx -> hent(tx, oppgaveKoId, skjermet) } } } - fun hent(tx: TransactionalSession, oppgaveKoId: Long, skjermet: Boolean = false): Pair { + fun hent(tx: TransactionalSession, oppgaveKoId: Long, skjermet: Boolean): OppgaveKo { return tx.run( queryOf( """SELECT id, versjon, tittel, beskrivelse, query, fritt_valg_av_oppgave, endret_tidspunkt, skjermet @@ -63,6 +63,25 @@ class OppgaveKoRepository( "id" to oppgaveKoId, "skjermet" to skjermet ) + ).map { it.tilOppgaveKo(objectMapper, true, tx) }.asSingle + ) ?: throw IllegalStateException("Feil ved henting av oppgavekø: $oppgaveKoId") + } + + fun hentInkluderKode6(oppgaveKoId: Long): OppgaveKo { + return using(sessionOf(datasource)) { + it.transaction { tx -> hentInkluderKode6(tx, oppgaveKoId).first } + } + } + + fun hentInkluderKode6(tx: TransactionalSession, oppgaveKoId: Long): Pair { + return tx.run( + queryOf( + """SELECT id, versjon, tittel, beskrivelse, query, fritt_valg_av_oppgave, endret_tidspunkt, skjermet + FROM OPPGAVEKO_V3 + WHERE id = :id""", + mapOf( + "id" to oppgaveKoId, + ) ).map { it.tilOppgaveKo(objectMapper, true, tx) to it.boolean("skjermet") }.asSingle ) ?: throw IllegalStateException("Feil ved henting av oppgavekø: $oppgaveKoId") } @@ -82,8 +101,8 @@ class OppgaveKoRepository( } fun leggTil(tittel: String, skjermet: Boolean): OppgaveKo { - return using(sessionOf(datasource)) { it -> - it.transaction { tx -> leggTil(tx, tittel, skjermet) } + return using(sessionOf(datasource)) { session -> + session.transaction { tx -> leggTil(tx, tittel, skjermet) } } } @@ -102,20 +121,16 @@ class OppgaveKoRepository( ) ).map { row -> row.long(1) }.asSingle ) ?: throw IllegalStateException("Feil ved opprettelse av ny oppgavekø.") - return hent(tx, oppgaveKoId).first + return hent(tx, oppgaveKoId, skjermet) } - fun endre(oppgaveKo: OppgaveKo): OppgaveKo { - return using(sessionOf(datasource)) { it -> - it.transaction { tx -> endre(tx, oppgaveKo) } + fun endre(oppgaveKo: OppgaveKo, skjermet: Boolean): OppgaveKo { + return using(sessionOf(datasource)) { session -> + session.transaction { tx -> endre(tx, oppgaveKo, skjermet) } } } - fun endre(tx: TransactionalSession, oppgaveKo: OppgaveKo): OppgaveKo { - if (oppgaveKo.id == null) { - throw IllegalArgumentException("Kan ikke oppdatere oppgavekø uten ID.") - } - + fun endre(tx: TransactionalSession, oppgaveKo: OppgaveKo, skjermet: Boolean): OppgaveKo { val rows = tx.run( queryOf( """ @@ -126,7 +141,7 @@ class OppgaveKoRepository( query = :query, fritt_valg_av_oppgave = :frittValgAvOppgave, endret_tidspunkt = :endret_tidspunkt - WHERE id = :id AND versjon = :gammelVersjon + WHERE id = :id AND versjon = :gammelVersjon AND skjermet = :skjermet """.trimIndent(), mapOf( "id" to oppgaveKo.id, @@ -136,18 +151,19 @@ class OppgaveKoRepository( "beskrivelse" to oppgaveKo.beskrivelse, "query" to objectMapper.writeValueAsString(oppgaveKo.oppgaveQuery), "frittValgAvOppgave" to oppgaveKo.frittValgAvOppgave, - "endret_tidspunkt" to LocalDateTime.now() + "endret_tidspunkt" to LocalDateTime.now(), + "skjermet" to skjermet ) ).asUpdate ) if (rows != 1) { - throw IllegalStateException("Feil ved oppdatering av oppgavekø: ${oppgaveKo.id}, rows: ${rows}") + throw IllegalStateException("Feil ved oppdatering av oppgavekø: ${oppgaveKo.id}, rows: $rows") } lagreKoSaksbehandlere(tx, oppgaveKo) - return hent(tx, oppgaveKo.id).first + return hent(tx, oppgaveKo.id, skjermet) } fun hentKoerMedOppgittSaksbehandler( @@ -221,7 +237,7 @@ class OppgaveKoRepository( private fun lagreKoSaksbehandlere(tx: TransactionalSession, oppgaveKo: OppgaveKo) { fjernAlleSaksbehandlereFraOppgaveKo(tx, oppgaveKo.id) oppgaveKo.saksbehandlere.forEach { - val updated = tx.run( + tx.run( queryOf( "INSERT INTO OPPGAVEKO_SAKSBEHANDLER (oppgaveko_v3_id, saksbehandler_epost) VALUES (:oppgavekoV3Id, :epost)", mapOf( @@ -234,8 +250,8 @@ class OppgaveKoRepository( } fun slett(oppgaveKoId: Long) { - using(sessionOf(datasource)) { it -> - it.transaction { tx -> slett(tx, oppgaveKoId) } + using(sessionOf(datasource)) { session -> + session.transaction { tx -> slett(tx, oppgaveKoId) } } } @@ -262,9 +278,9 @@ class OppgaveKoRepository( ) } - fun kopier(kopierFraOppgaveId: Long, tittel: String, taMedQuery: Boolean, taMedSaksbehandlere: Boolean): OppgaveKo { - return using(sessionOf(datasource)) { it -> - it.transaction { tx -> kopier(tx, kopierFraOppgaveId, tittel, taMedQuery, taMedSaksbehandlere) } + fun kopier(kopierFraOppgaveId: Long, tittel: String, taMedQuery: Boolean, taMedSaksbehandlere: Boolean, skjermet: Boolean): OppgaveKo { + return using(sessionOf(datasource)) { session -> + session.transaction { tx -> kopier(tx, kopierFraOppgaveId, tittel, taMedQuery, taMedSaksbehandlere, skjermet) } } } @@ -273,9 +289,10 @@ class OppgaveKoRepository( kopierFraOppgaveId: Long, tittel: String, taMedQuery: Boolean, - taMedSaksbehandlere: Boolean + taMedSaksbehandlere: Boolean, + skjermet: Boolean ): OppgaveKo { - val (gammelOppgaveKo, skjermet) = hent(tx, kopierFraOppgaveId) + val gammelOppgaveKo = hent(tx, kopierFraOppgaveId, skjermet) val nyOppgaveKo = leggTil(tx, tittel, skjermet) val oppdatertNyOppgaveko = nyOppgaveKo.copy( @@ -285,6 +302,6 @@ class OppgaveKoRepository( frittValgAvOppgave = gammelOppgaveKo.frittValgAvOppgave ) - return endre(tx, oppdatertNyOppgaveko) + return endre(tx, oppdatertNyOppgaveko, skjermet) } } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/k9/los/tjenester/avdelingsleder/AvdelingslederTjeneste.kt b/src/main/kotlin/no/nav/k9/los/tjenester/avdelingsleder/AvdelingslederTjeneste.kt index 63b9dc0b7..4d261d6ec 100644 --- a/src/main/kotlin/no/nav/k9/los/tjenester/avdelingsleder/AvdelingslederTjeneste.kt +++ b/src/main/kotlin/no/nav/k9/los/tjenester/avdelingsleder/AvdelingslederTjeneste.kt @@ -32,7 +32,7 @@ class AvdelingslederTjeneste( } suspend fun hentOppgaveKøer(): List { - return oppgaveKøRepository.hent().map { + return oppgaveKøRepository.hentAlle().map { lagOppgaveKøDto(it) }.sortedBy { it.navn } } @@ -113,7 +113,7 @@ class AvdelingslederTjeneste( transactionalManager.transaction { tx -> // V3-modellen: Sletter køer saksbehandler er med i oppgaveKøV3Repository.hentKoerMedOppgittSaksbehandler(tx, epost, skjermet, true).forEach { kø -> - oppgaveKøV3Repository.endre(tx, kø.copy(saksbehandlere = kø.saksbehandlere - epost)) + oppgaveKøV3Repository.endre(tx, kø.copy(saksbehandlere = kø.saksbehandlere - epost), skjermet) } // Sletter fra saksbehandler-tabellen @@ -125,7 +125,7 @@ class AvdelingslederTjeneste( } // V1-modellen: Sletter køer saksbehandler er med i. (Lager sin egen transaksjon.) - oppgaveKøRepository.hent().forEach { t: OppgaveKø -> + oppgaveKøRepository.hentAlle().forEach { t: OppgaveKø -> oppgaveKøRepository.lagre(t.id) { oppgaveKø -> oppgaveKø!!.saksbehandlere = oppgaveKø.saksbehandlere.filter { it.epost != epost } diff --git a/src/main/kotlin/no/nav/k9/los/tjenester/innsikt/InnsiktApis.kt b/src/main/kotlin/no/nav/k9/los/tjenester/innsikt/InnsiktApis.kt index 7c405c575..86642e2f5 100644 --- a/src/main/kotlin/no/nav/k9/los/tjenester/innsikt/InnsiktApis.kt +++ b/src/main/kotlin/no/nav/k9/los/tjenester/innsikt/InnsiktApis.kt @@ -224,7 +224,7 @@ fun Route.InnsiktApis() { if (køer.isEmpty()) { val hentAktiveOppgaver = oppgaveRepository.hentAktiveUreserverteOppgaver() - val oppgaveKøer = oppgaveKøRepository.hentIkkeTaHensyn() + val oppgaveKøer = oppgaveKøRepository.hentAlleInkluderKode6() for (oppgaveKø in oppgaveKøer.filterNot { it.kode6 || it.skjermet }) { oppgaveKø.oppgaverOgDatoer.clear() for (oppgave in hentAktiveOppgaver) { @@ -245,7 +245,7 @@ fun Route.InnsiktApis() { } body { val list = - oppgaveKøRepository.hentIkkeTaHensyn().filterNot { it.kode6 || it.skjermet } + oppgaveKøRepository.hentAlleInkluderKode6().filterNot { it.kode6 || it.skjermet } ul { for (l in list) { val oppgaverOgDatoer = køer.first { it.navn == l.navn }.oppgaverOgDatoer @@ -596,7 +596,7 @@ fun Route.InnsiktApis() { fun køDistribusjon(): Map> { val aktiveOppgaver = oppgaveRepository.hentAktiveUreserverteOppgaver() - val oppgavekøer = oppgaveKøRepository.hentIkkeTaHensyn().filter { it.oppgaverOgDatoer.isNotEmpty() } + val oppgavekøer = oppgaveKøRepository.hentAlleInkluderKode6().filter { it.oppgaverOgDatoer.isNotEmpty() } return aktiveOppgaver .groupBy { oppgave -> oppgavekøer.count { kø -> @@ -658,7 +658,7 @@ fun Route.InnsiktApis() { val oppgavekøer = if (oppgave.kode6 || oppgave.skjermet) { listOf() } else { - oppgaveKøRepository.hentIkkeTaHensyn().filterNot { it.kode6 || it.skjermet } + oppgaveKøRepository.hentAlleInkluderKode6().filterNot { it.kode6 || it.skjermet } } val køerSomInneholderOppgave = oppgavekøer.filter { kø -> diff --git "a/src/main/kotlin/no/nav/k9/los/tjenester/saksbehandler/oppgave/OppgaveK\303\270Oppdaterer.kt" "b/src/main/kotlin/no/nav/k9/los/tjenester/saksbehandler/oppgave/OppgaveK\303\270Oppdaterer.kt" index 647a8bbfb..83d33c810 100644 --- "a/src/main/kotlin/no/nav/k9/los/tjenester/saksbehandler/oppgave/OppgaveK\303\270Oppdaterer.kt" +++ "b/src/main/kotlin/no/nav/k9/los/tjenester/saksbehandler/oppgave/OppgaveK\303\270Oppdaterer.kt" @@ -13,7 +13,7 @@ class OppgaveKøOppdaterer( suspend fun oppdater(oppgaveId: UUID) { val oppgave = oppgaveRepository.hent(oppgaveId) - for (oppgavekø in oppgaveKøRepository.hentIkkeTaHensyn()) { + for (oppgavekø in oppgaveKøRepository.hentAlleInkluderKode6()) { oppgaveKøRepository.leggTilOppgaverTilKø(oppgavekø.id, listOf(oppgave), reservasjonRepository) } } diff --git a/src/main/kotlin/no/nav/k9/los/tjenester/saksbehandler/oppgave/OppgaveTjeneste.kt b/src/main/kotlin/no/nav/k9/los/tjenester/saksbehandler/oppgave/OppgaveTjeneste.kt index cb8fedb75..3dab7de6f 100644 --- a/src/main/kotlin/no/nav/k9/los/tjenester/saksbehandler/oppgave/OppgaveTjeneste.kt +++ b/src/main/kotlin/no/nav/k9/los/tjenester/saksbehandler/oppgave/OppgaveTjeneste.kt @@ -188,7 +188,7 @@ class OppgaveTjeneste constructor( reservasjonRepository.lagreFlereReservasjoner(reservasjoner) saksbehandlerRepository.leggTilFlereReservasjoner(reserveresAvIdent, reservasjoner.map { r -> r.oppgave }) - for (oppgavekø in oppgaveKøRepository.hentKøIdIkkeTaHensyn()) { + for (oppgavekø in oppgaveKøRepository.hentKøIdInkluderKode6()) { oppgaveKøRepository.leggTilOppgaverTilKø( oppgavekø, oppgaverSomSkalBliReservert.map { o -> o.oppgave }, @@ -555,7 +555,7 @@ class OppgaveTjeneste constructor( } saksbehandlerRepository.fjernReservasjon(reservasjon.reservertAv, reservasjon.oppgave) val oppgave = oppgaveRepository.hent(uuid) - for (oppgavekø in oppgaveKøRepository.hent()) { + for (oppgavekø in oppgaveKøRepository.hentAlle()) { oppgaveKøRepository.leggTilOppgaverTilKø( oppgavekø.id, listOf(oppgave), @@ -664,10 +664,10 @@ class OppgaveTjeneste constructor( suspend fun refreshAntallForAlleKøer() { val køene = DetaljerMetrikker.timeSuspended("refreshAntallForAlleKøer", "hent") - { oppgaveKøRepository.hentIkkeTaHensyn() } + { oppgaveKøRepository.hentAlleInkluderKode6() } val reservasjonIder = DetaljerMetrikker.timeSuspended("refreshAntallForAlleKøer", "hentReservasjonIder") { - saksbehandlerRepository.hentAlleSaksbehandlereIkkeTaHensyn() + saksbehandlerRepository.hentAlleSaksbehandlereInkluderKode6() .flatMap { saksbehandler -> saksbehandler.reservasjoner }.toSet() } val reserverteOppgaveIderDirekte = @@ -684,7 +684,7 @@ class OppgaveTjeneste constructor( } fun refreshAntallOppgaverForKø(oppgavekø: OppgaveKø) { - val reservasjonIder = saksbehandlerRepository.hentAlleSaksbehandlereIkkeTaHensyn() + val reservasjonIder = saksbehandlerRepository.hentAlleSaksbehandlereInkluderKode6() .flatMap { saksbehandler -> saksbehandler.reservasjoner }.toSet() val reserverteOppgaveIder = reservasjonRepository.hentOppgaveUuidMedAktivReservasjon(reservasjonIder) val reserverteOppgaver = oppgaveRepository.hentOppgaver(reserverteOppgaveIder) @@ -727,7 +727,7 @@ class OppgaveTjeneste constructor( val oppgavekø = oppgaveKøRepository.hentOppgavekø(oppgavekøId, ignorerSkjerming = true) var antallReserverteOppgaverSomTilhørerKø = 0 if (taMedReserverte) { - val reservasjonIder = saksbehandlerRepository.hentAlleSaksbehandlereIkkeTaHensyn() + val reservasjonIder = saksbehandlerRepository.hentAlleSaksbehandlereInkluderKode6() .flatMap { saksbehandler -> saksbehandler.reservasjoner }.toSet() val reserverteOppgaveIder = reservasjonRepository.hentOppgaveUuidMedAktivReservasjon(reservasjonIder) val reserverteOppgaver = oppgaveRepository.hentOppgaver(reserverteOppgaveIder) @@ -864,7 +864,7 @@ class OppgaveTjeneste constructor( } suspend fun hentOppgaveKøer(): List { - return oppgaveKøRepository.hent() + return oppgaveKøRepository.hentAlle() } fun leggTilBehandletOppgave(ident: String, oppgave: BehandletOppgave) { @@ -876,7 +876,7 @@ class OppgaveTjeneste constructor( it!! } val oppaveSkjermet = oppgaveRepository.hent(oppgave.eksternId) - for (oppgaveKø in oppgaveKøRepository.hent()) { + for (oppgaveKø in oppgaveKøRepository.hentAlle()) { val skalOppdareKø = oppgaveKø.leggOppgaveTilEllerFjernFraKø( oppaveSkjermet, reservasjonRepository, @@ -1014,7 +1014,7 @@ class OppgaveTjeneste constructor( reservasjoner.map { r -> r.oppgave }) } DetaljerMetrikker.timeSuspended("faaOppgaveFraKo", "leggTilOppgaverTilKø") { - for (oppgavekø in oppgaveKøRepository.hentKøIdIkkeTaHensyn()) { + for (oppgavekø in oppgaveKøRepository.hentKøIdInkluderKode6()) { oppgaveKøRepository.leggTilOppgaverTilKø( oppgavekø, oppgaverSomSkalBliReservert.map { o -> o.oppgave }, diff --git a/src/main/kotlin/no/nav/k9/los/tjenester/saksbehandler/oppgave/ReservasjonTjeneste.kt b/src/main/kotlin/no/nav/k9/los/tjenester/saksbehandler/oppgave/ReservasjonTjeneste.kt index 123736c28..f9a50dba1 100644 --- a/src/main/kotlin/no/nav/k9/los/tjenester/saksbehandler/oppgave/ReservasjonTjeneste.kt +++ b/src/main/kotlin/no/nav/k9/los/tjenester/saksbehandler/oppgave/ReservasjonTjeneste.kt @@ -16,7 +16,7 @@ class ReservasjonTjeneste constructor( reservasjon } val reservasjon = reservasjonRepository.hent(oppgave.eksternId) - saksbehandlerRepository.fjernReservasjonIkkeTaHensyn( + saksbehandlerRepository.fjernReservasjonInkluderKode6( reservasjon.reservertAv, reservasjon.oppgave ) diff --git a/src/test/kotlin/no/nav/k9/los/aksjonspunktbehandling/BeslutterSkalIkkePlukkeEgenSakTest.kt b/src/test/kotlin/no/nav/k9/los/aksjonspunktbehandling/BeslutterSkalIkkePlukkeEgenSakTest.kt index 6c4251e5d..a0e080811 100644 --- a/src/test/kotlin/no/nav/k9/los/aksjonspunktbehandling/BeslutterSkalIkkePlukkeEgenSakTest.kt +++ b/src/test/kotlin/no/nav/k9/los/aksjonspunktbehandling/BeslutterSkalIkkePlukkeEgenSakTest.kt @@ -105,7 +105,7 @@ class BeslutterSkalIkkePlukkeEgenSakTest : AbstractK9LosIntegrationTest() { erOppgavenReservertSjekk = {false}, ) - oppgaveKøRepository.lagreIkkeTaHensyn(oppgaveKø.id) { + oppgaveKøRepository.lagreInkluderKode6(oppgaveKø.id) { oppgaveKø } diff --git a/src/test/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9sakEventHandlerTest.kt b/src/test/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9sakEventHandlerTest.kt index 7e64f6019..e9ad13b6d 100644 --- a/src/test/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9sakEventHandlerTest.kt +++ b/src/test/kotlin/no/nav/k9/los/aksjonspunktbehandling/K9sakEventHandlerTest.kt @@ -390,7 +390,7 @@ class K9sakEventHandlerTest : AbstractK9LosIntegrationTest() { assertTrue(oppgave.aksjonspunkter.hentLengde() == 1) val i = runBlocking { - oppgaveKøRepository.hent() + oppgaveKøRepository.hentAlle() } assertSame(1, i[0].oppgaverOgDatoer.size) } diff --git a/src/test/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/k9saktillos/k9saktillosadapter/K9SakTilLosIT.kt b/src/test/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/k9saktillos/k9saktillosadapter/K9SakTilLosIT.kt index cef0382bd..a69e5c702 100644 --- a/src/test/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/k9saktillos/k9saktillosadapter/K9SakTilLosIT.kt +++ b/src/test/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/k9saktillos/k9saktillosadapter/K9SakTilLosIT.kt @@ -405,7 +405,7 @@ class K9SakTilLosIT : AbstractK9LosIntegrationTest() { saksbehandlere = listOf(saksbehandler.epost), oppgaveQuery = oppgaveQuery ) - return oppgaveKoRepository.endre(nyKø) + return oppgaveKoRepository.endre(nyKø, false) } private fun querySomKunInneholder(eksternId: UUID, vararg status: Oppgavestatus = emptyArray()): OppgaveQuery { diff --git a/src/test/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoTest.kt b/src/test/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoTest.kt index 4acaf68cd..c34663667 100644 --- a/src/test/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoTest.kt +++ b/src/test/kotlin/no/nav/k9/los/nyoppgavestyring/ko/OppgaveKoTest.kt @@ -25,12 +25,12 @@ class OppgaveKoTest : AbstractK9LosIntegrationTest() { val oppgaveKo = oppgaveKoRepository.leggTil("Testkø", skjermet = false) assertThat(oppgaveKo.tittel).isEqualTo("Testkø") - val oppgaveKoFraDb = oppgaveKoRepository.hent(oppgaveKo.id) + val oppgaveKoFraDb = oppgaveKoRepository.hent(oppgaveKo.id, false) assertThat(oppgaveKoFraDb).isNotNull() oppgaveKoRepository.slett(oppgaveKo.id) assertFailure { - oppgaveKoRepository.hent(oppgaveKo.id) + oppgaveKoRepository.hent(oppgaveKo.id, false) } } @@ -43,7 +43,7 @@ class OppgaveKoTest : AbstractK9LosIntegrationTest() { assertThat(oppgaveKo.tittel).isEqualTo(tittel) val beskrivelse = "En god beskrivelse" - val oppgaveKoFraDb = oppgaveKoRepository.endre(oppgaveKo.copy(beskrivelse = beskrivelse)) + val oppgaveKoFraDb = oppgaveKoRepository.endre(oppgaveKo.copy(beskrivelse = beskrivelse), false) assertThat(oppgaveKoFraDb).isNotNull() assertThat(oppgaveKoFraDb.tittel).isEqualTo(tittel) assertThat(oppgaveKoFraDb.beskrivelse).isEqualTo(beskrivelse) @@ -60,13 +60,13 @@ class OppgaveKoTest : AbstractK9LosIntegrationTest() { val saksbehandlerepost = "a@b" mockLeggTilSaksbehandler(saksbehandlerepost) - val oppgaveKoFraDb = oppgaveKoRepository.endre(oppgaveKo.copy(saksbehandlere = listOf(saksbehandlerepost))) + val oppgaveKoFraDb = oppgaveKoRepository.endre(oppgaveKo.copy(saksbehandlere = listOf(saksbehandlerepost)), false) assertThat(oppgaveKoFraDb.saksbehandlere).contains(saksbehandlerepost) assertThat(oppgaveKoFraDb.saksbehandlere).hasSize(1) val saksbehandlerepost2 = "b@c" mockLeggTilSaksbehandler(saksbehandlerepost2) - val oppgaveKoFraDb2 = oppgaveKoRepository.endre(oppgaveKoFraDb.copy(saksbehandlere = listOf(saksbehandlerepost2))) + val oppgaveKoFraDb2 = oppgaveKoRepository.endre(oppgaveKoFraDb.copy(saksbehandlere = listOf(saksbehandlerepost2)), false) assertThat(oppgaveKoFraDb2.saksbehandlere).contains(saksbehandlerepost2) assertThat(oppgaveKoFraDb2.saksbehandlere).hasSize(1) @@ -81,10 +81,14 @@ class OppgaveKoTest : AbstractK9LosIntegrationTest() { val saksbehandlerepost = "a@b" val oppgaveKo = oppgaveKoRepository.leggTil(tittel, skjermet = false) mockLeggTilSaksbehandler(saksbehandlerepost) - val gammelOppgaveko = oppgaveKoRepository.endre(oppgaveKo.copy(saksbehandlere = listOf(saksbehandlerepost))) + val gammelOppgaveko = oppgaveKoRepository.endre(oppgaveKo.copy(saksbehandlere = listOf(saksbehandlerepost)), false) val nyTittel = "Ny tittel" - val nyOppgaveKo = oppgaveKoRepository.kopier(gammelOppgaveko.id, nyTittel, true, true) + val nyOppgaveKo = oppgaveKoRepository.kopier(gammelOppgaveko.id, nyTittel, + taMedQuery = true, + taMedSaksbehandlere = true, + skjermet = false + ) assertThat(nyOppgaveKo.saksbehandlere).contains(saksbehandlerepost) assertThat(nyOppgaveKo.saksbehandlere).hasSize(1) assertThat(nyOppgaveKo.tittel).isEqualTo(nyTittel) From b40310916d171d901a2c386ec39f72dcac58ca02 Mon Sep 17 00:00:00 2001 From: Mats Bolstad Date: Wed, 27 Nov 2024 15:09:28 +0100 Subject: [PATCH 15/15] =?UTF-8?q?Fikser=20bug=20ved=20auditlogging=20av=20?= =?UTF-8?q?punsj-oppgave,=20har=20ikke=20alltid=20akt=C3=B8rId=20til=20s?= =?UTF-8?q?=C3=B8ker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/no/nav/k9/los/integrasjon/abac/PepClient.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/no/nav/k9/los/integrasjon/abac/PepClient.kt b/src/main/kotlin/no/nav/k9/los/integrasjon/abac/PepClient.kt index 50d0fc28e..8904d6233 100644 --- a/src/main/kotlin/no/nav/k9/los/integrasjon/abac/PepClient.kt +++ b/src/main/kotlin/no/nav/k9/los/integrasjon/abac/PepClient.kt @@ -255,6 +255,7 @@ class PepClient( "k9punsj" -> { + val berørteAktørId = setOfNotNull(aktørIdSøker, aktørIdPleietrengende) val builder = XacmlRequestBuilder() .addEnvironmentAttribute(ENVIRONMENT_PEP_ID, "srvk9los") .addResourceAttribute(RESOURCE_DOMENE, DOMENE) @@ -262,14 +263,17 @@ class PepClient( .addActionAttribute(ACTION_ID, action) .addAccessSubjectAttribute(SUBJECT_TYPE, INTERNBRUKER) .addAccessSubjectAttribute(SUBJECTID, identTilInnloggetBruker) - .addResourceAttribute(RESOURCE_AKTØR_ID, setOfNotNull(aktørIdSøker, aktørIdPleietrengende)) + .addResourceAttribute(RESOURCE_AKTØR_ID, berørteAktørId) if (config.koinProfile == KoinProfile.PREPROD){ val xacmlJson = gson.toJson(builder.build()) log.info("Tilgangssforespørsel k9punsj: " + xacmlJson) } val tilgang = evaluate(builder) - k9Auditlogger.betingetLogging(tilgang, auditlogging) { - loggTilgangK9Punsj(aktørIdSøker!!, identTilInnloggetBruker, action, tilgang) + + berørteAktørId.firstOrNull()?.let { aktørId -> + k9Auditlogger.betingetLogging(tilgang, auditlogging) { + loggTilgangK9Punsj(aktørId, identTilInnloggetBruker, action, tilgang) + } } tilgang