Skip to content

Commit

Permalink
Vil logge metadata for oppgave. Dette for å kunne feilsøke produksjon… (
Browse files Browse the repository at this point in the history
#2479)

* Vil logge metadata for oppgave. Dette for å kunne feilsøke produksjonsfeil knyttet til behandling og oppgave.
  • Loading branch information
ma10s authored Dec 14, 2023
1 parent 2c68ed7 commit 2dd1bb0
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package no.nav.familie.ef.sak.oppgave

import no.nav.familie.kontrakter.felles.oppgave.Oppgave
import no.nav.familie.prosessering.AsyncTaskStep
import no.nav.familie.prosessering.TaskStepBeskrivelse
import no.nav.familie.prosessering.domene.Task
import org.slf4j.LoggerFactory
import org.springframework.stereotype.Service
import java.util.*

@Service
@TaskStepBeskrivelse(
taskStepType = LoggOppgaveMetadataTask.TYPE,
maxAntallFeil = 1,
settTilManuellOppfølgning = true,
beskrivelse = "Finn og logg metadata for oppgave knyttet til behandling",
)
class LoggOppgaveMetadataTask(
private val tilordnetRessursService: TilordnetRessursService,
) : AsyncTaskStep {

private val logger = LoggerFactory.getLogger(javaClass)
private val secureLogger = LoggerFactory.getLogger("secureLogger")

override fun doTask(task: Task) {
logger.info("Henter oppgave for behandling ${task.payload}")
val oppgave = tilordnetRessursService.hentIkkeFerdigstiltOppgaveForBehandling(UUID.fromString(task.payload))

when (oppgave) {
null -> logger.info("Fant ikke oppgave for behandling ${task.payload}")
else -> secureLogger.info("Oppgave hentet for behandling ${task.payload}: ${oppgave.toLogString()}")
}
}

companion object {

const val TYPE = "loggOppgaveMetadataTask"
fun opprettTask(behandlingId: UUID): Task {
return Task(
TYPE,
behandlingId.toString(),
Properties(),
)
}
}
}

// Uten beskrivelse, bnr, identer, aktørid og metadata
fun Oppgave.toLogString(): String {
return "Oppgave(aktivDato=$aktivDato, behandlesAvApplikasjon=$behandlesAvApplikasjon, behandlingstema=$behandlingstema, behandlingstype=$behandlingstype, endretAv=$endretAv, endretAvEnhetsnr=$endretAvEnhetsnr, endretTidspunkt=$endretTidspunkt, ferdigstiltTidspunkt=$ferdigstiltTidspunkt, fristFerdigstillelse=$fristFerdigstillelse, id=$id, journalpostId=$journalpostId, journalpostkilde=$journalpostkilde, mappeId=$mappeId, oppgavetype=$oppgavetype, opprettetAv=$opprettetAv, opprettetAvEnhetsnr=$opprettetAvEnhetsnr, opprettetTidspunkt=$opprettetTidspunkt, orgnr=$orgnr, prioritet=$prioritet, saksreferanse=$saksreferanse, samhandlernr=$samhandlernr, status=$status, tema=$tema, temagruppe=$temagruppe, tildeltEnhetsnr=$tildeltEnhetsnr, tilordnetRessurs=$tilordnetRessurs, versjon=$versjon)"
}
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,10 @@ class OppgaveController(
behandlingId,
setOf(Oppgavetype.BehandleSak, Oppgavetype.BehandleUnderkjentVedtak, Oppgavetype.GodkjenneVedtak),
)
when (oppgave) {
null -> logger.warn("Finner ikke oppgave for behandlingId=$behandlingId")
}

return Ressurs.success(tilordnetRessursService.utledAnsvarligSaksbehandlerForOppgave(oppgave))
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package no.nav.familie.ef.sak.oppgave

import no.nav.familie.ef.sak.infrastruktur.exception.feilHvisIkke
import no.nav.familie.ef.sak.infrastruktur.featuretoggle.FeatureToggleService
import no.nav.familie.ef.sak.infrastruktur.featuretoggle.Toggle
import no.nav.familie.ef.sak.infrastruktur.sikkerhet.SikkerhetContext
import no.nav.familie.prosessering.internal.TaskService
import no.nav.security.token.support.core.api.ProtectedWithClaims
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import java.util.UUID

@RestController
@RequestMapping("/api/oppgave/forvaltning/")
@ProtectedWithClaims(issuer = "azuread")
class OppgaveforvaltningsController(
private val taskService: TaskService,
private val featureToggleService: FeatureToggleService,
) {
@PostMapping("behandling/{behandlingId}")
fun loggOppgavemetadataFor(@PathVariable behandlingId: UUID) {
feilHvisIkke(erUtviklerMedVeilderrolle()) { "Kan kun kjøres av utvikler med veilederrolle" }
val task = LoggOppgaveMetadataTask.opprettTask(behandlingId)
taskService.save(task)
}

private fun erUtviklerMedVeilderrolle(): Boolean =
SikkerhetContext.erSaksbehandler() && featureToggleService.isEnabled(Toggle.UTVIKLER_MED_VEILEDERRROLLE)
}

0 comments on commit 2dd1bb0

Please sign in to comment.