一键导入
stonadstype
StonadsType enum-mapping fra (kravKode, kodeHjemmel) til stønadstyper med Identifikator, og sjekkliste for å legge til nye stønadstyper
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
StonadsType enum-mapping fra (kravKode, kodeHjemmel) til stønadstyper med Identifikator, og sjekkliste for å legge til nye stønadstyper
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | stonadstype |
| description | StonadsType enum-mapping fra (kravKode, kodeHjemmel) til stønadstyper med Identifikator, og sjekkliste for å legge til nye stønadstyper |
StonadsType enum: mapping av (kravKode, kodeHjemmel)-par til stønadstyper, og sjekkliste for å legge til nye.
StonadsTypemaps NAV's internal(kravKode, kodeHjemmel)pairs to Skatteetaten's benefit type classification. Each enum entry holds one or moreIdentifikatorvalues. The companiongetStonadstype()performs the lookup and throwsNotImplementedErrorfor unknown combinations.
enum class StonadsType(
vararg val identifikatorer: Identifikator,
) {
TILBAKEKREVING_ALDERSPENSJON(Identifikator("PE AP", "T")),
// Some entries have multiple Identifikator mappings:
TILBAKEKREVING_ARBEIDSAVKLARINGSPENGER(
Identifikator("AAP AAP", "T"),
Identifikator("AE AA", "AT"),
),
;
val kravKoder: List<String> get() = identifikatorer.map { it.kravKode }
data class Identifikator(
val kravKode: String,
val kodeHjemmel: String,
)
companion object {
fun getStonadstype(
kravkode: String,
kodeHjemmel: String,
): StonadsType =
StonadsType.entries.firstOrNull { type ->
type.identifikatorer.any { it.kravKode == kravkode && it.kodeHjemmel == kodeHjemmel }
}
?: throw NotImplementedError(
"Kombinasjonen kravkode=$kravkode og hjemmelkode=$kodeHjemmel gir ingen stønadstype.",
)
}
}
| Location | Usage |
|---|---|
LineValidationRules.kravTypeIsValid() | Validates that (kravKode, kodeHjemmel) maps to a known StonadsType |
CreateRequests.createOpprettKravRequest() | Maps krav to stonadstype field in the SKE API request |
Application.kt | Registers Prometheus metrics counters for each unique kravKode at startup |
RapportService | Includes StonadsType in report/CSV output |
StonadsType.ktAdd a new entry in alphabetical order among the existing entries. The naming convention is TILBAKEKREVING_<YTELSESNAVN>:
// Single Identifikator:
TILBAKEKREVING_NY_YTELSE(Identifikator("XX YY", "T")),
// Multiple Identifikator mappings (if multiple source systems send the same benefit):
TILBAKEKREVING_NY_YTELSE(
Identifikator("XX YY", "T"),
Identifikator("ZZ ZZ", "AT"),
),
kravKode: The benefit code from the upstream system (e.g., "PE AP", "BA OR")kodeHjemmel: The legal basis code (e.g., "T" for tilbakekreving, "TA" for avregning, "AT" for Arena-tilbakekreving)StonadsTypeTest.ktAdd the new (kravKode, kodeHjemmel) → StonadsType mapping(s) to the testCombinations map:
val testCombinations = mapOf(
// ... existing entries ...
Pair("XX YY", "T") to StonadsType.TILBAKEKREVING_NY_YTELSE,
)
The test "testdata skal dekke alle kravKode og kodeHjemmel kombinasjoner fra StonadsType" will fail if you forget this step — it verifies that every Identifikator in the enum is covered by the test map.
LineValidationRules.kravTypeIsValid() uses getStonadstype() — new entries are automatically acceptedCreateRequests.createOpprettKravRequest() uses getStonadstype() — new entries are automatically mappedApplication.kt iterates StonadsType.entries.flatMap { it.kravKoder } — new kravKoder are automatically registeredRun the StonadsType tests to confirm everything is wired up:
./gradlew test --tests "no.nav.sokos.ske.krav.service.unit.StonadsTypeTest"
TILBAKEKREVING_ prefix for enum namesStonadsTypeTest.ktkodeHjemmel values not previously used (may need SKE coordination)kravKode maps to different StonadsType values with different kodeHjemmel(kravKode, kodeHjemmel) combinations across different entriesFlyway-migrasjoner for PostgreSQL: navnekonvensjoner (V{n}__desc.sql), skjema for krav/feilmelding/filvalideringsfeil, DBListener-testing med TestContainers
Post-send livssyklus: StatusService poller /mottaksstatus; StoppKravService; RapportService + AvstemmingRouting-frontend for manuell reskontroføring
HOCON-basert konfigurasjon med PropertiesConfig singleton for Ktor batch-tjenester på NAIS (FSS)
SlackService feilakkumulering og Tags-basert varsling for prosesseringsfeil i SKE-batch
Endring av eksisterende krav (endre rente og endre hovedstol): EndreKravService, request-DTOer, status-konformering og SKE API PUT-endepunkter
Kotest BehaviorSpec/MockK-mønstre for sokos-ske-krav: scenariostruktur, DBListener/SftpListener, MockHttpClient, circuit-breaker-reset og matchers