Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Legg på metrikk på arenakort-visninger #719

Merged
merged 4 commits into from
Nov 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package no.nav.veilarbaktivitet.arena;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import no.nav.poao.dab.spring_a2_annotations.auth.AuthorizeFnr;
import no.nav.poao.dab.spring_auth.IAuthService;
import no.nav.veilarbaktivitet.aktivitet.AktivitetDAO;
import no.nav.veilarbaktivitet.aktivitetskort.MigreringService;
import no.nav.veilarbaktivitet.aktivitetskort.idmapping.IdMapping;
import no.nav.veilarbaktivitet.aktivitetskort.idmapping.IdMappingDAO;
import no.nav.veilarbaktivitet.arena.model.ArenaAktivitetDTO;
import no.nav.veilarbaktivitet.arena.model.ArenaAktivitetTypeDTO;
import no.nav.veilarbaktivitet.arena.model.ArenaId;
import no.nav.veilarbaktivitet.avtalt_med_nav.ForhaandsorienteringDTO;
import no.nav.veilarbaktivitet.person.Person;
Expand All @@ -19,10 +21,12 @@

import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

@Transactional
@RestController
@RequiredArgsConstructor
@Slf4j
@RequestMapping("/api/arena")
public class ArenaController {
private final UserInContext userInContext;
Expand Down Expand Up @@ -62,7 +66,7 @@ public List<ArenaAktivitetDTO> hentArenaAktiviteter() {
var ideer = arenaAktiviteter.stream().map(arenaAktivitetDTO -> new ArenaId(arenaAktivitetDTO.getId())).toList();
var idMappings = idMappingDAO.getMappings(ideer);
var aktivitetsVersjoner = aktivitetDAO.getAktivitetsVersjoner(idMappings.values().stream().map(IdMapping::getAktivitetId).toList());
return arenaAktiviteter
var filtrerteArenaAktiviteter = arenaAktiviteter
.stream()
// Bare vis arena aktiviteter som mangler id, dvs ikke er migrert
.filter(migreringService.filtrerBortArenaTiltakHvisToggleAktiv(idMappings.keySet()))
Expand All @@ -75,6 +79,19 @@ public List<ArenaAktivitetDTO> hentArenaAktiviteter() {
return arenaAktivitet;
})
.toList();
migreringService.countArenaAktiviteter(arenaAktiviteter, filtrerteArenaAktiviteter);
logUmigrerteIder(filtrerteArenaAktiviteter);
return filtrerteArenaAktiviteter;
}

private void logUmigrerteIder(List<ArenaAktivitetDTO> arenaAktiviteter) {
var umigrerteTiltaksIder = arenaAktiviteter.stream()
.filter(aktivitet -> aktivitet.getType() == ArenaAktivitetTypeDTO.TILTAKSAKTIVITET)
.map(ArenaAktivitetDTO::getId)
.collect(Collectors.joining(","));
if (!umigrerteTiltaksIder.isEmpty()) {
log.info("Umigrerte tiltaksIdEr %s", umigrerteTiltaksIder);
}
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ class AdminController(
val azureId = authContextHolder.requireOid()
poaoTilgangClient.hentAdGrupper(azureId).get()?.find { adminGroups.contains(it.id) } ?: throw ResponseStatusException(HttpStatus.FORBIDDEN, "Veileder er ikke i admingroup")
val aktorId = personService.getAktorIdForPersonBruker(fnr(fnr)).get()
val sluttDato = oppfolgingsperiodeService.hentOppfolgingsperiode(aktorId, UUID.fromString(oppfolgingsperiodeUuid))?.sluttDato ?: throw NoSuchElementException("Finner ikke oppfolgingsperiode / sluttdato")
val sluttDato = oppfolgingsperiodeService.hentOppfolgingsperiode(aktorId, UUID.fromString(oppfolgingsperiodeUuid))?.sluttDato()
?: throw NoSuchElementException("Finner ikke oppfolgingsperiode / sluttdato")
oppfolgingsperiodeService.avsluttOppfolgingsperiode(UUID.fromString(oppfolgingsperiodeUuid), sluttDato)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,31 @@ import io.micrometer.core.instrument.MeterRegistry
import no.nav.veilarbaktivitet.aktivitetskort.bestilling.AktivitetskortBestilling
import no.nav.veilarbaktivitet.aktivitetskort.dto.aktivitetskort.MessageSource
import no.nav.veilarbaktivitet.aktivitetskort.service.UpsertActionResult
import no.nav.veilarbaktivitet.arena.model.ArenaAktivitetTypeDTO
import org.springframework.stereotype.Component

@Component
class AktivitetskortMetrikker(private val meterRegistry: MeterRegistry) {

fun countMigrerteArenaAktiviteter(type: ArenaAktivitetTypeDTO, foer: Int, etter: Int) {
val diff = foer - etter
Counter.builder(VISTE_MIGRERTE_ARENA_AKTIVITETER)
.tag("tiltakstype", type.name)
.tag("counter_type", "ikke_migrert")
.register(meterRegistry)
.increment((foer - diff).toDouble())
Counter.builder(VISTE_MIGRERTE_ARENA_AKTIVITETER)
.tag("tiltakstype", type.name)
.tag("counter_type", "filtrert_bort")
.register(meterRegistry)
.increment(diff.toDouble())
Counter.builder(VISTE_MIGRERTE_ARENA_AKTIVITETER)
.tag("tiltakstype", type.name)
.tag("counter_type", "total")
.register(meterRegistry)
.increment(foer.toDouble())
}

fun countAktivitetskortUpsert(bestilling: AktivitetskortBestilling, upsertActionResult: UpsertActionResult) {
val type = bestilling.aktivitetskortType.name
val source = bestilling.source
Expand Down Expand Up @@ -39,5 +60,6 @@ class AktivitetskortMetrikker(private val meterRegistry: MeterRegistry) {
const val AKTIVITETSKORT_UPSERT = "aktivitetskort_upsert"
const val AKTIVITETSKORT_FUNKSJONELL_FEIL = "aktivitetskort_funksjonell_feil"
const val AKTIVITETSKORT_TEKNISK_FEIL = "aktivitetskort_teknisk_feil"
const val VISTE_MIGRERTE_ARENA_AKTIVITETER = "arena_aktivitet_visning"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import lombok.extern.slf4j.Slf4j
import no.nav.veilarbaktivitet.aktivitet.dto.AktivitetDTO
import no.nav.veilarbaktivitet.aktivitetskort.idmapping.IdMappingDAO
import no.nav.veilarbaktivitet.arena.model.ArenaAktivitetDTO
import no.nav.veilarbaktivitet.arena.model.ArenaAktivitetTypeDTO
import no.nav.veilarbaktivitet.arena.model.ArenaId
import org.springframework.stereotype.Service
import java.util.*
Expand All @@ -15,8 +16,26 @@ import java.util.function.Predicate
class MigreringService (
private val unleash: Unleash,
private val idMappingDAO: IdMappingDAO,
private val aktivitetskortMetrikker: AktivitetskortMetrikker
) {

/* Hører kanskje ikke til her men var lettere å gjøre groupBy i kotlin vs java */
fun countArenaAktiviteter(foer: MutableList<ArenaAktivitetDTO>, etter: MutableList<ArenaAktivitetDTO> ) {
if (foer.isEmpty()) return
val antallFoer = foer.groupBy { it.type }.mapValues { it.value.size }
val antallEtter = etter.groupBy { it.type }.mapValues { it.value.size }
ArenaAktivitetTypeDTO.values()
.map {
val totaltFoer = antallFoer[it] ?: 0
val totaltEtter = antallEtter[it] ?: 0
reportMetric(it, totaltFoer, totaltEtter)
}
}
private fun reportMetric(type: ArenaAktivitetTypeDTO, foer: Int, etter: Int) {
if (foer == 0) return
aktivitetskortMetrikker.countMigrerteArenaAktiviteter(type, foer, etter)
}

fun filtrerBortArenaTiltakHvisToggleAktiv(arenaIds: Set<ArenaId?>): Predicate<ArenaAktivitetDTO> {
return if (unleash.isEnabled(VIS_MIGRERTE_ARENA_AKTIVITETER_TOGGLE)) {
// Hvis migrert, skjul fra /tiltak endepunkt
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import no.nav.poao.dab.spring_auth.AuthService;
import no.nav.poao.dab.spring_auth.IAuthService;
import no.nav.veilarbaktivitet.aktivitet.AktivitetDAO;
import no.nav.veilarbaktivitet.aktivitetskort.AktivitetskortMetrikker;
import no.nav.veilarbaktivitet.aktivitetskort.MigreringService;
import no.nav.veilarbaktivitet.aktivitetskort.idmapping.IdMappingDAO;
import no.nav.veilarbaktivitet.arena.model.AktiviteterDTO;
Expand Down Expand Up @@ -66,10 +67,9 @@ class ArenaControllerTest {
private final ForhaandsorienteringDAO fhoDao = new ForhaandsorienteringDAO(db.getNamedJdbcTemplate());
private final IdMappingDAO idMappingDAO = new IdMappingDAO(new NamedParameterJdbcTemplate(jdbc));
private final Unleash unleash = mock(Unleash.class);

private final MigreringService migreringService = new MigreringService(unleash, idMappingDAO);

private final MeterRegistry meterRegistry = new SimpleMeterRegistry();
private final AktivitetskortMetrikker aktivitetskortMetrikker = new AktivitetskortMetrikker(meterRegistry);
private final MigreringService migreringService = new MigreringService(unleash, idMappingDAO, aktivitetskortMetrikker);
private final ArenaService arenaService = new ArenaService(fhoDao, meterRegistry, brukernotifikasjonArenaAktivitetService, veilarbarenaClient, idMappingDAO, personService);
private final ArenaController controller = new ArenaController(context, authService, arenaService, idMappingDAO, aktivitetDAO, migreringService);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,10 @@ import no.nav.veilarbaktivitet.aktivitet.dto.AktivitetTypeDTO
import no.nav.veilarbaktivitet.mock_nav_modell.MockNavService
import no.nav.veilarbaktivitet.mock_nav_modell.WireMockUtil
import no.nav.veilarbaktivitet.oppfolging.client.OppfolgingPeriodeMinimalDTO
import no.nav.veilarbaktivitet.oppfolging.periode.Oppfolgingsperiode
import no.nav.veilarbaktivitet.person.Person.AktorId
import no.nav.veilarbaktivitet.testutils.AktivitetDtoTestBuilder
import org.apache.http.HttpStatus
import org.assertj.core.api.Assertions
import org.joda.time.DateTime
import org.junit.jupiter.api.Disabled
import org.junit.jupiter.api.Test
import java.time.ZonedDateTime
import java.util.*
Expand Down