Skip to content

Commit

Permalink
Flyttet oppholdstilatelse stats funksjon til arbeidssøker-regler
Browse files Browse the repository at this point in the history
  • Loading branch information
nilsmsa committed Sep 23, 2024
1 parent e7bf46c commit f59d283
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 51 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import no.nav.paw.arbeidssokerregisteret.application.regler.TilgangsRegler
import no.nav.paw.arbeidssokerregisteret.domain.Identitetsnummer
import no.nav.paw.arbeidssokerregisteret.services.AutorisasjonService
import no.nav.paw.arbeidssokerregisteret.services.PersonInfoService
import no.nav.paw.arbeidssokerregisteret.services.personInfoStats
import no.nav.paw.arbeidssokerregisteret.utils.logger
import no.nav.paw.pdl.graphql.generated.hentperson.Person

Expand Down Expand Up @@ -50,10 +49,19 @@ class RequestValidator(
.flatMap { grunnlagForGodkjentAuth ->
val person = personInfoService.hentPersonInfo(identitetsnummer.verdi)
val opplysning = person?.let { genererPersonFakta(it) } ?: setOf(DomeneOpplysning.PersonIkkeFunnet)
try {
person?.let { p -> registry.personInfoStats(p, opplysning) }
} catch (ex: Exception) {
logger.warn("Feil under stats generering", ex)
if (person != null) {
try {
val oppholdIndfo = person.opphold.firstOrNull()?.let { opphold ->
statsOppholdstilatelse(
fra = opphold.oppholdFra,
til = opphold.oppholdTil,
type = opphold.type.name
)
}
registry.oppholdstillatelseStats(oppholdIndfo, opplysning)
} catch (ex: Exception) {
logger.warn("Feil under stats generering", ex)
}
}
regler.evaluer(
opplysning + grunnlagForGodkjentAuth.opplysning
Expand Down

This file was deleted.

1 change: 1 addition & 0 deletions domain/arbeidssoeker-regler/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ val jvmMajorVersion: String by project
dependencies {
implementation(pawClients.pawPdlClient)
implementation(project(":domain:interne-hendelser"))
api(micrometer.registryPrometheus)
api(arrow.core)
testImplementation(ktorServer.testJvm)
testImplementation(testLibs.runnerJunit5)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package no.nav.paw.arbeidssokerregisteret.application

import io.micrometer.core.instrument.Tag
import io.micrometer.prometheusmetrics.PrometheusMeterRegistry
import no.nav.paw.arbeidssokerregisteret.application.opplysninger.DomeneOpplysning
import no.nav.paw.arbeidssokerregisteret.application.opplysninger.Opplysning
import java.time.LocalDate
import java.time.temporal.ChronoUnit

data class StatsOppholdtilatelse(
val fra: LocalDate?,
val til: LocalDate?,
val type: String
)

fun statsOppholdstilatelse(type: String, fra: String?, til: String?) =
StatsOppholdtilatelse(
fra = fra?.let(LocalDate::parse),
til = til?.let(LocalDate::parse),
type = type
)

fun PrometheusMeterRegistry.oppholdstillatelseStats(oppholdtilatelse: StatsOppholdtilatelse?, opplysninger: Collection<Opplysning>) {
val tags = listOf(
Tag.of(
"oppholdstillatelse_type",
oppholdtilatelse?.type ?: "NA"
),
Tag.of(
"dager_siden_oppholdstillatelse_start",
oppholdtilatelse?.fra?.let(::daysBetweenNow)?.let(::asBucket) ?: if (oppholdtilatelse == null) "NA" else "undefined"
),
Tag.of(
"dager_til_oppholdstillatelse_stopp",
oppholdtilatelse?.til?.let(::daysBetweenNow)?.let(::asBucket) ?: if (oppholdtilatelse == null) "NA" else "undefined"
),
Tag.of(
"avtale_land",
(opplysninger.contains(DomeneOpplysning.ErEuEoesStatsborger) || opplysninger.contains(DomeneOpplysning.ErGbrStatsborger)).toString()
),
Tag.of(
"norsk_statsborger",
opplysninger.contains(DomeneOpplysning.ErNorskStatsborger).toString()
)
) + opplysningerTags(opplysninger)
counter("paw_bosatt_vs_oppholds_stats_v1", tags).increment()
}

fun opplysningerTags(opplysninger: Collection<Opplysning>): Collection<Tag> =
setOf(
DomeneOpplysning.BosattEtterFregLoven,
DomeneOpplysning.IkkeBosatt,
DomeneOpplysning.HarGyldigOppholdstillatelse,
DomeneOpplysning.UkjentStatusForOppholdstillatelse,
DomeneOpplysning.OppholdstillatelseUtgaaatt,
DomeneOpplysning.IngenInformasjonOmOppholdstillatelse
).map { Tag.of(it.id, opplysninger.contains(it).toString()) }


fun daysBetweenNow(then: LocalDate): Long {
val now = LocalDate.now()
return ChronoUnit.DAYS.between(now, then)
}

fun asBucket(number: Long): String =
when {
number < 7 -> number.toString()
number < 14 -> "[7, 14>"
number < 28 -> "[14-28>"
number < 56 -> "[28-56>"
number < 112 -> "[56-112>"
number < 224 -> "[112-224>"
else -> "[224-"
}

0 comments on commit f59d283

Please sign in to comment.