test(m2): build the eight-case fixture workspace
Eight cases, one per build-brief 6 state, dated relative to 2026-09-15. One of them (havbris) carries frontmatter that deliberately disagrees with its log, so the derived-truth rule has a fixture instead of only a docstring. One (vaeroy-sjomat) is named for an employer with ae, o-slash and a-ring, so the ASCII path rule has teeth on macOS NFD. Six beslutninger.jsonl fixtures for M6's counting rules are written now, in M2, because the store is append-only: type, skjema, delscore and vekt_hash have to be right at the first write or they are wrong forever. Co-Authored-By: Claude <claude-opus-5>
This commit is contained in:
parent
8d577dc3ca
commit
b80bd00781
23 changed files with 515 additions and 0 deletions
6
tests/fixtures/beslutninger/med-korrigering.jsonl
vendored
Normal file
6
tests/fixtures/beslutninger/med-korrigering.jsonl
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0000", "dato": "2026-06-01T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0000", "tittel": "AI-radgiver", "arbeidsgiver": "Nordlys Data AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 71, "delscore": {"fagomrade": 71, "oppgavetype": 66, "teknologi": 61, "selskapstype": 56}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0001", "dato": "2026-06-03T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0001", "tittel": "Dataingenior", "arbeidsgiver": "Vaeroy Sjomat AS", "beslutning": "ja", "arsak": ["fagomrade", "teknologi"], "notat": "treffer kjernen", "score_da": 78, "delscore": {"fagomrade": 78, "oppgavetype": 73, "teknologi": 68, "selskapstype": 63}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0002", "dato": "2026-06-05T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0002", "tittel": "Losningsarkitekt", "arbeidsgiver": "Havbris Energi AS", "beslutning": "nei", "arsak": ["geografi"], "notat": "for lang reisevei hver dag", "score_da": 64, "delscore": {"fagomrade": 64, "oppgavetype": 59, "teknologi": 54, "selskapstype": 49}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0003", "dato": "2026-06-07T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0003", "tittel": "Fagleder digitalisering", "arbeidsgiver": "Storelva kommune", "beslutning": "nei", "arsak": ["arbeidsform"], "notat": "full kontorplikt", "score_da": 59, "delscore": {"fagomrade": 59, "oppgavetype": 54, "teknologi": 49, "selskapstype": 44}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0004", "dato": "2026-06-09T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0004", "tittel": "Systemarkitekt", "arbeidsgiver": "Bratthaug Industri AS", "beslutning": "ja", "arsak": ["oppgavetype"], "notat": "arkitektarbeid, ikke forvaltning", "score_da": 81, "delscore": {"fagomrade": 81, "oppgavetype": 76, "teknologi": 71, "selskapstype": 66}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "korrigering", "skjema": 1, "id": "k-0001", "dato": "2026-06-13T09:00:00+02:00", "korrigerer": "b-0000", "arsak": ["geografi"], "notat": "reisevei var den egentlige grunnen, ikke lonn"}
|
||||||
6
tests/fixtures/beslutninger/med-utfall.jsonl
vendored
Normal file
6
tests/fixtures/beslutninger/med-utfall.jsonl
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0000", "dato": "2026-06-01T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0000", "tittel": "AI-radgiver", "arbeidsgiver": "Nordlys Data AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 71, "delscore": {"fagomrade": 71, "oppgavetype": 66, "teknologi": 61, "selskapstype": 56}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0001", "dato": "2026-06-03T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0001", "tittel": "Dataingenior", "arbeidsgiver": "Vaeroy Sjomat AS", "beslutning": "ja", "arsak": ["fagomrade", "teknologi"], "notat": "treffer kjernen", "score_da": 78, "delscore": {"fagomrade": 78, "oppgavetype": 73, "teknologi": 68, "selskapstype": 63}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0002", "dato": "2026-06-05T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0002", "tittel": "Losningsarkitekt", "arbeidsgiver": "Havbris Energi AS", "beslutning": "nei", "arsak": ["geografi"], "notat": "for lang reisevei hver dag", "score_da": 64, "delscore": {"fagomrade": 64, "oppgavetype": 59, "teknologi": 54, "selskapstype": 49}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0003", "dato": "2026-06-07T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0003", "tittel": "Fagleder digitalisering", "arbeidsgiver": "Storelva kommune", "beslutning": "nei", "arsak": ["arbeidsform"], "notat": "full kontorplikt", "score_da": 59, "delscore": {"fagomrade": 59, "oppgavetype": 54, "teknologi": 49, "selskapstype": 44}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "utfall", "skjema": 1, "id": "u-0001", "dato": "2026-07-11T09:00:00+02:00", "gjelder": "b-0001", "utfall": "avslag", "stadium": "screening", "notat": "registrert av operatoren"}
|
||||||
|
{"type": "utfall", "skjema": 1, "id": "u-0002", "dato": "2026-07-26T09:00:00+02:00", "gjelder": "b-0004", "utfall": "avslag", "stadium": "andre_intervju", "notat": "registrert av operatoren"}
|
||||||
9
tests/fixtures/beslutninger/ni-beslutninger.jsonl
vendored
Normal file
9
tests/fixtures/beslutninger/ni-beslutninger.jsonl
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0000", "dato": "2026-06-01T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0000", "tittel": "AI-radgiver", "arbeidsgiver": "Nordlys Data AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 71, "delscore": {"fagomrade": 71, "oppgavetype": 66, "teknologi": 61, "selskapstype": 56}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0001", "dato": "2026-06-03T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0001", "tittel": "Dataingenior", "arbeidsgiver": "Vaeroy Sjomat AS", "beslutning": "ja", "arsak": ["fagomrade", "teknologi"], "notat": "treffer kjernen", "score_da": 78, "delscore": {"fagomrade": 78, "oppgavetype": 73, "teknologi": 68, "selskapstype": 63}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0002", "dato": "2026-06-05T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0002", "tittel": "Losningsarkitekt", "arbeidsgiver": "Havbris Energi AS", "beslutning": "nei", "arsak": ["geografi"], "notat": "for lang reisevei hver dag", "score_da": 64, "delscore": {"fagomrade": 64, "oppgavetype": 59, "teknologi": 54, "selskapstype": 49}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0003", "dato": "2026-06-07T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0003", "tittel": "Fagleder digitalisering", "arbeidsgiver": "Storelva kommune", "beslutning": "nei", "arsak": ["arbeidsform"], "notat": "full kontorplikt", "score_da": 59, "delscore": {"fagomrade": 59, "oppgavetype": 54, "teknologi": 49, "selskapstype": 44}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0004", "dato": "2026-06-09T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0004", "tittel": "Systemarkitekt", "arbeidsgiver": "Bratthaug Industri AS", "beslutning": "ja", "arsak": ["oppgavetype"], "notat": "arkitektarbeid, ikke forvaltning", "score_da": 81, "delscore": {"fagomrade": 81, "oppgavetype": 76, "teknologi": 71, "selskapstype": 66}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0005", "dato": "2026-06-11T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0005", "tittel": "Teknisk radgiver", "arbeidsgiver": "Solvang Helse AS", "beslutning": "nei", "arsak": ["senioritetsniva"], "notat": "for junior rolle", "score_da": 55, "delscore": {"fagomrade": 55, "oppgavetype": 50, "teknologi": 45, "selskapstype": 40}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0006", "dato": "2026-06-13T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0006", "tittel": "Utvikler", "arbeidsgiver": "Myrvang Teknologi AS", "beslutning": "nei", "arsak": ["selskapstype", "arbeidsgiverrykte"], "notat": "bemanningsbyraa", "score_da": 61, "delscore": {"fagomrade": 61, "oppgavetype": 56, "teknologi": 51, "selskapstype": 46}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0007", "dato": "2026-06-15T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0007", "tittel": "Prosjektleder", "arbeidsgiver": "Aurland Maritim AS", "beslutning": "ja", "arsak": ["fagomrade"], "notat": "offentlig digitalisering", "score_da": 84, "delscore": {"fagomrade": 84, "oppgavetype": 79, "teknologi": 74, "selskapstype": 69}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0008", "dato": "2026-06-17T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0008", "tittel": "Analytiker", "arbeidsgiver": "Fjelltun Analyse AS", "beslutning": "nei", "arsak": ["tidspunkt"], "notat": "tiltredelse alt for tidlig", "score_da": 66, "delscore": {"fagomrade": 66, "oppgavetype": 61, "teknologi": 56, "selskapstype": 51}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
10
tests/fixtures/beslutninger/ti-beslutninger.jsonl
vendored
Normal file
10
tests/fixtures/beslutninger/ti-beslutninger.jsonl
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0000", "dato": "2026-06-01T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0000", "tittel": "AI-radgiver", "arbeidsgiver": "Nordlys Data AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 71, "delscore": {"fagomrade": 71, "oppgavetype": 66, "teknologi": 61, "selskapstype": 56}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0001", "dato": "2026-06-03T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0001", "tittel": "Dataingenior", "arbeidsgiver": "Vaeroy Sjomat AS", "beslutning": "ja", "arsak": ["fagomrade", "teknologi"], "notat": "treffer kjernen", "score_da": 78, "delscore": {"fagomrade": 78, "oppgavetype": 73, "teknologi": 68, "selskapstype": 63}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0002", "dato": "2026-06-05T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0002", "tittel": "Losningsarkitekt", "arbeidsgiver": "Havbris Energi AS", "beslutning": "nei", "arsak": ["geografi"], "notat": "for lang reisevei hver dag", "score_da": 64, "delscore": {"fagomrade": 64, "oppgavetype": 59, "teknologi": 54, "selskapstype": 49}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0003", "dato": "2026-06-07T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0003", "tittel": "Fagleder digitalisering", "arbeidsgiver": "Storelva kommune", "beslutning": "nei", "arsak": ["arbeidsform"], "notat": "full kontorplikt", "score_da": 59, "delscore": {"fagomrade": 59, "oppgavetype": 54, "teknologi": 49, "selskapstype": 44}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0004", "dato": "2026-06-09T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0004", "tittel": "Systemarkitekt", "arbeidsgiver": "Bratthaug Industri AS", "beslutning": "ja", "arsak": ["oppgavetype"], "notat": "arkitektarbeid, ikke forvaltning", "score_da": 81, "delscore": {"fagomrade": 81, "oppgavetype": 76, "teknologi": 71, "selskapstype": 66}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0005", "dato": "2026-06-11T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0005", "tittel": "Teknisk radgiver", "arbeidsgiver": "Solvang Helse AS", "beslutning": "nei", "arsak": ["senioritetsniva"], "notat": "for junior rolle", "score_da": 55, "delscore": {"fagomrade": 55, "oppgavetype": 50, "teknologi": 45, "selskapstype": 40}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0006", "dato": "2026-06-13T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0006", "tittel": "Utvikler", "arbeidsgiver": "Myrvang Teknologi AS", "beslutning": "nei", "arsak": ["selskapstype", "arbeidsgiverrykte"], "notat": "bemanningsbyraa", "score_da": 61, "delscore": {"fagomrade": 61, "oppgavetype": 56, "teknologi": 51, "selskapstype": 46}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0007", "dato": "2026-06-15T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0007", "tittel": "Prosjektleder", "arbeidsgiver": "Aurland Maritim AS", "beslutning": "ja", "arsak": ["fagomrade"], "notat": "offentlig digitalisering", "score_da": 84, "delscore": {"fagomrade": 84, "oppgavetype": 79, "teknologi": 74, "selskapstype": 69}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0008", "dato": "2026-06-17T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0008", "tittel": "Analytiker", "arbeidsgiver": "Fjelltun Analyse AS", "beslutning": "nei", "arsak": ["tidspunkt"], "notat": "tiltredelse alt for tidlig", "score_da": 66, "delscore": {"fagomrade": 66, "oppgavetype": 61, "teknologi": 56, "selskapstype": 51}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0009", "dato": "2026-06-19T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0009", "tittel": "Plattformingenior", "arbeidsgiver": "Kvitberg Logistikk AS", "beslutning": "nei", "arsak": ["konkurranse"], "notat": "hundre soekere pa to dager", "score_da": 52, "delscore": {"fagomrade": 52, "oppgavetype": 47, "teknologi": 42, "selskapstype": 37}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
20
tests/fixtures/beslutninger/tjue-faa-ja.jsonl
vendored
Normal file
20
tests/fixtures/beslutninger/tjue-faa-ja.jsonl
vendored
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0000", "dato": "2026-06-01T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0000", "tittel": "AI-radgiver", "arbeidsgiver": "Nordlys Data AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "passet ikke profilen", "score_da": 50, "delscore": {"fagomrade": 50, "oppgavetype": 45, "teknologi": 40, "selskapstype": 35}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0001", "dato": "2026-06-02T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0001", "tittel": "Dataingenior", "arbeidsgiver": "Vaeroy Sjomat AS", "beslutning": "nei", "arsak": ["fagomrade", "teknologi"], "notat": "passet ikke profilen", "score_da": 51, "delscore": {"fagomrade": 51, "oppgavetype": 46, "teknologi": 41, "selskapstype": 36}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0002", "dato": "2026-06-03T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0002", "tittel": "Losningsarkitekt", "arbeidsgiver": "Havbris Energi AS", "beslutning": "nei", "arsak": ["geografi"], "notat": "passet ikke profilen", "score_da": 52, "delscore": {"fagomrade": 52, "oppgavetype": 47, "teknologi": 42, "selskapstype": 37}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0003", "dato": "2026-06-04T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0003", "tittel": "Fagleder digitalisering", "arbeidsgiver": "Storelva kommune", "beslutning": "nei", "arsak": ["arbeidsform"], "notat": "passet ikke profilen", "score_da": 53, "delscore": {"fagomrade": 53, "oppgavetype": 48, "teknologi": 43, "selskapstype": 38}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0004", "dato": "2026-06-05T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0004", "tittel": "Systemarkitekt", "arbeidsgiver": "Bratthaug Industri AS", "beslutning": "nei", "arsak": ["oppgavetype"], "notat": "passet ikke profilen", "score_da": 54, "delscore": {"fagomrade": 54, "oppgavetype": 49, "teknologi": 44, "selskapstype": 39}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0005", "dato": "2026-06-06T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0005", "tittel": "Teknisk radgiver", "arbeidsgiver": "Solvang Helse AS", "beslutning": "nei", "arsak": ["senioritetsniva"], "notat": "passet ikke profilen", "score_da": 55, "delscore": {"fagomrade": 55, "oppgavetype": 50, "teknologi": 45, "selskapstype": 40}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0006", "dato": "2026-06-07T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0006", "tittel": "Utvikler", "arbeidsgiver": "Myrvang Teknologi AS", "beslutning": "nei", "arsak": ["selskapstype", "arbeidsgiverrykte"], "notat": "passet ikke profilen", "score_da": 56, "delscore": {"fagomrade": 56, "oppgavetype": 51, "teknologi": 46, "selskapstype": 41}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0007", "dato": "2026-06-08T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0007", "tittel": "Prosjektleder", "arbeidsgiver": "Aurland Maritim AS", "beslutning": "nei", "arsak": ["fagomrade"], "notat": "passet ikke profilen", "score_da": 57, "delscore": {"fagomrade": 57, "oppgavetype": 52, "teknologi": 47, "selskapstype": 42}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0008", "dato": "2026-06-09T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0008", "tittel": "Analytiker", "arbeidsgiver": "Fjelltun Analyse AS", "beslutning": "nei", "arsak": ["tidspunkt"], "notat": "passet ikke profilen", "score_da": 58, "delscore": {"fagomrade": 58, "oppgavetype": 53, "teknologi": 48, "selskapstype": 43}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0009", "dato": "2026-06-10T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0009", "tittel": "Plattformingenior", "arbeidsgiver": "Kvitberg Logistikk AS", "beslutning": "nei", "arsak": ["konkurranse"], "notat": "passet ikke profilen", "score_da": 59, "delscore": {"fagomrade": 59, "oppgavetype": 54, "teknologi": 49, "selskapstype": 44}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0010", "dato": "2026-06-11T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0010", "tittel": "AI-radgiver", "arbeidsgiver": "Sorvik Media AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "passet ikke profilen", "score_da": 60, "delscore": {"fagomrade": 60, "oppgavetype": 55, "teknologi": 50, "selskapstype": 45}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0011", "dato": "2026-06-12T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0011", "tittel": "Dataingenior", "arbeidsgiver": "Tindved Bygg AS", "beslutning": "ja", "arsak": ["fagomrade", "oppgavetype"], "notat": "eneste ja i runden", "score_da": 88, "delscore": {"fagomrade": 88, "oppgavetype": 83, "teknologi": 78, "selskapstype": 73}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0012", "dato": "2026-06-13T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0012", "tittel": "Losningsarkitekt", "arbeidsgiver": "Ravnedal Forsikring AS", "beslutning": "nei", "arsak": ["geografi"], "notat": "passet ikke profilen", "score_da": 62, "delscore": {"fagomrade": 62, "oppgavetype": 57, "teknologi": 52, "selskapstype": 47}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0013", "dato": "2026-06-14T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0013", "tittel": "Fagleder digitalisering", "arbeidsgiver": "Ostmarka Naering AS", "beslutning": "nei", "arsak": ["arbeidsform"], "notat": "passet ikke profilen", "score_da": 63, "delscore": {"fagomrade": 63, "oppgavetype": 58, "teknologi": 53, "selskapstype": 48}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0014", "dato": "2026-06-15T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0014", "tittel": "Systemarkitekt", "arbeidsgiver": "Lundvik Kraft AS", "beslutning": "nei", "arsak": ["oppgavetype"], "notat": "passet ikke profilen", "score_da": 64, "delscore": {"fagomrade": 64, "oppgavetype": 59, "teknologi": 54, "selskapstype": 49}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0015", "dato": "2026-06-16T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0015", "tittel": "Teknisk radgiver", "arbeidsgiver": "Bjornstad Verft AS", "beslutning": "nei", "arsak": ["senioritetsniva"], "notat": "passet ikke profilen", "score_da": 65, "delscore": {"fagomrade": 65, "oppgavetype": 60, "teknologi": 55, "selskapstype": 50}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0016", "dato": "2026-06-17T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0016", "tittel": "Utvikler", "arbeidsgiver": "Granheim Utdanning AS", "beslutning": "nei", "arsak": ["selskapstype", "arbeidsgiverrykte"], "notat": "passet ikke profilen", "score_da": 66, "delscore": {"fagomrade": 66, "oppgavetype": 61, "teknologi": 56, "selskapstype": 51}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0017", "dato": "2026-06-18T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0017", "tittel": "Prosjektleder", "arbeidsgiver": "Skarnes Transport AS", "beslutning": "nei", "arsak": ["fagomrade"], "notat": "passet ikke profilen", "score_da": 67, "delscore": {"fagomrade": 67, "oppgavetype": 62, "teknologi": 57, "selskapstype": 52}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0018", "dato": "2026-06-19T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0018", "tittel": "Analytiker", "arbeidsgiver": "Elvebakken Bank AS", "beslutning": "nei", "arsak": ["tidspunkt"], "notat": "passet ikke profilen", "score_da": 68, "delscore": {"fagomrade": 68, "oppgavetype": 63, "teknologi": 58, "selskapstype": 53}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0019", "dato": "2026-06-20T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0019", "tittel": "Plattformingenior", "arbeidsgiver": "Holtan Romteknikk AS", "beslutning": "nei", "arsak": ["konkurranse"], "notat": "passet ikke profilen", "score_da": 69, "delscore": {"fagomrade": 69, "oppgavetype": 64, "teknologi": 59, "selskapstype": 54}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
20
tests/fixtures/beslutninger/tjue-lonnsdominert.jsonl
vendored
Normal file
20
tests/fixtures/beslutninger/tjue-lonnsdominert.jsonl
vendored
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0000", "dato": "2026-06-01T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0000", "tittel": "AI-radgiver", "arbeidsgiver": "Nordlys Data AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 70, "delscore": {"fagomrade": 70, "oppgavetype": 65, "teknologi": 60, "selskapstype": 55}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0001", "dato": "2026-06-02T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0001", "tittel": "Dataingenior", "arbeidsgiver": "Vaeroy Sjomat AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 71, "delscore": {"fagomrade": 71, "oppgavetype": 66, "teknologi": 61, "selskapstype": 56}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0002", "dato": "2026-06-03T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0002", "tittel": "Losningsarkitekt", "arbeidsgiver": "Havbris Energi AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 72, "delscore": {"fagomrade": 72, "oppgavetype": 67, "teknologi": 62, "selskapstype": 57}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0003", "dato": "2026-06-04T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0003", "tittel": "Fagleder digitalisering", "arbeidsgiver": "Storelva kommune", "beslutning": "nei", "arsak": ["geografi"], "notat": "for lang reisevei", "score_da": 62, "delscore": {"fagomrade": 62, "oppgavetype": 57, "teknologi": 52, "selskapstype": 47}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0004", "dato": "2026-06-05T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0004", "tittel": "Systemarkitekt", "arbeidsgiver": "Bratthaug Industri AS", "beslutning": "ja", "arsak": ["fagomrade"], "notat": "verdt det tross lonna", "score_da": 83, "delscore": {"fagomrade": 83, "oppgavetype": 78, "teknologi": 73, "selskapstype": 68}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0005", "dato": "2026-06-06T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0005", "tittel": "Teknisk radgiver", "arbeidsgiver": "Solvang Helse AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 70, "delscore": {"fagomrade": 70, "oppgavetype": 65, "teknologi": 60, "selskapstype": 55}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0006", "dato": "2026-06-07T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0006", "tittel": "Utvikler", "arbeidsgiver": "Myrvang Teknologi AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 71, "delscore": {"fagomrade": 71, "oppgavetype": 66, "teknologi": 61, "selskapstype": 56}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0007", "dato": "2026-06-08T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0007", "tittel": "Prosjektleder", "arbeidsgiver": "Aurland Maritim AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 72, "delscore": {"fagomrade": 72, "oppgavetype": 67, "teknologi": 62, "selskapstype": 57}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0008", "dato": "2026-06-09T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0008", "tittel": "Analytiker", "arbeidsgiver": "Fjelltun Analyse AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 73, "delscore": {"fagomrade": 73, "oppgavetype": 68, "teknologi": 63, "selskapstype": 58}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0009", "dato": "2026-06-10T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0009", "tittel": "Plattformingenior", "arbeidsgiver": "Kvitberg Logistikk AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 74, "delscore": {"fagomrade": 74, "oppgavetype": 69, "teknologi": 64, "selskapstype": 59}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0010", "dato": "2026-06-11T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0010", "tittel": "AI-radgiver", "arbeidsgiver": "Sorvik Media AS", "beslutning": "nei", "arsak": ["geografi"], "notat": "for lang reisevei", "score_da": 62, "delscore": {"fagomrade": 62, "oppgavetype": 57, "teknologi": 52, "selskapstype": 47}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0011", "dato": "2026-06-12T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0011", "tittel": "Dataingenior", "arbeidsgiver": "Tindved Bygg AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 71, "delscore": {"fagomrade": 71, "oppgavetype": 66, "teknologi": 61, "selskapstype": 56}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0012", "dato": "2026-06-13T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0012", "tittel": "Losningsarkitekt", "arbeidsgiver": "Ravnedal Forsikring AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 72, "delscore": {"fagomrade": 72, "oppgavetype": 67, "teknologi": 62, "selskapstype": 57}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0013", "dato": "2026-06-14T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0013", "tittel": "Fagleder digitalisering", "arbeidsgiver": "Ostmarka Naering AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 73, "delscore": {"fagomrade": 73, "oppgavetype": 68, "teknologi": 63, "selskapstype": 58}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0014", "dato": "2026-06-15T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0014", "tittel": "Systemarkitekt", "arbeidsgiver": "Lundvik Kraft AS", "beslutning": "ja", "arsak": ["fagomrade"], "notat": "verdt det tross lonna", "score_da": 83, "delscore": {"fagomrade": 83, "oppgavetype": 78, "teknologi": 73, "selskapstype": 68}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0015", "dato": "2026-06-16T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0015", "tittel": "Teknisk radgiver", "arbeidsgiver": "Bjornstad Verft AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 70, "delscore": {"fagomrade": 70, "oppgavetype": 65, "teknologi": 60, "selskapstype": 55}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0016", "dato": "2026-06-17T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0016", "tittel": "Utvikler", "arbeidsgiver": "Granheim Utdanning AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 71, "delscore": {"fagomrade": 71, "oppgavetype": 66, "teknologi": 61, "selskapstype": 56}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0017", "dato": "2026-06-18T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0017", "tittel": "Prosjektleder", "arbeidsgiver": "Skarnes Transport AS", "beslutning": "nei", "arsak": ["geografi"], "notat": "for lang reisevei", "score_da": 62, "delscore": {"fagomrade": 62, "oppgavetype": 57, "teknologi": 52, "selskapstype": 47}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0018", "dato": "2026-06-19T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0018", "tittel": "Analytiker", "arbeidsgiver": "Elvebakken Bank AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 73, "delscore": {"fagomrade": 73, "oppgavetype": 68, "teknologi": 63, "selskapstype": 58}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
|
{"type": "beslutning", "skjema": 1, "id": "b-0019", "dato": "2026-06-20T09:00:00+02:00", "kilde": "manuell", "url": "https://stillinger.example/sak-0019", "tittel": "Plattformingenior", "arbeidsgiver": "Holtan Romteknikk AS", "beslutning": "nei", "arsak": ["lonn"], "notat": "gulvet er ikke naadd", "score_da": 74, "delscore": {"fagomrade": 74, "oppgavetype": 69, "teknologi": 64, "selskapstype": 59}, "vekter": {"fagomrade": 40, "oppgavetype": 30, "teknologi": 20, "selskapstype": 10}, "vekt_hash": "sha256:e41763ee596e56a3916a7017ac4952a073eff1b48ea69906816217e10b178a41", "korrigerer": null}
|
||||||
4
tests/fixtures/workspace/saker/2026-09-aurland-maritim-as-prosjektleder/logg.jsonl
vendored
Normal file
4
tests/fixtures/workspace/saker/2026-09-aurland-maritim-as-prosjektleder/logg.jsonl
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{"ts": "2026-08-21T12:00:00+02:00", "hendelse": "opprettet", "kilde": "manuell", "ref": null, "notat": null}
|
||||||
|
{"ts": "2026-08-22T12:00:00+02:00", "type": "beslutning", "skjema": 1, "beslutning": "ja", "id": "b-2026-0821", "notat": "passer profilen"}
|
||||||
|
{"ts": "2026-08-26T12:00:00+02:00", "hendelse": "soknad_sendt", "kilde": "e-post", "ref": "soknad-v1.md", "notat": null}
|
||||||
|
{"ts": "2026-09-05T12:00:00+02:00", "hendelse": "trukket", "kilde": "manuell", "ref": null, "notat": "reisekravet"}
|
||||||
35
tests/fixtures/workspace/saker/2026-09-aurland-maritim-as-prosjektleder/sak.md
vendored
Normal file
35
tests/fixtures/workspace/saker/2026-09-aurland-maritim-as-prosjektleder/sak.md
vendored
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
---
|
||||||
|
sak_id: 2026-09-aurland-maritim-as-prosjektleder
|
||||||
|
arbeidsgiver: Aurland Maritim AS
|
||||||
|
rolle: Prosjektleder
|
||||||
|
kilde: manuell
|
||||||
|
url: https://stillinger.example/aurland-12
|
||||||
|
opprettet: 2026-08-21
|
||||||
|
status: trukket
|
||||||
|
neste_frist: null
|
||||||
|
ventende_part: ingen
|
||||||
|
sist_aktivitet: 2026-09-05
|
||||||
|
score: 58
|
||||||
|
cv_variant: cv-generell-v3
|
||||||
|
soknad_versjon: v1
|
||||||
|
---
|
||||||
|
|
||||||
|
## Hvorfor denne
|
||||||
|
|
||||||
|
Trukket etter at reisekravet ble tydelig i annonseteksten.
|
||||||
|
|
||||||
|
## Status naa
|
||||||
|
|
||||||
|
Generert fikstur. Proveniens: syntetisk, skrevet for testkorpuset.
|
||||||
|
|
||||||
|
## Neste handling
|
||||||
|
|
||||||
|
Avventer det statusmaskinen utleder fra logg.jsonl.
|
||||||
|
|
||||||
|
## Aapne sporsmaal
|
||||||
|
|
||||||
|
- Ingen.
|
||||||
|
|
||||||
|
## Tidslinje
|
||||||
|
|
||||||
|
Genereres fra logg.jsonl.
|
||||||
5
tests/fixtures/workspace/saker/2026-09-bratthaug-industri-as-systemarkitekt/logg.jsonl
vendored
Normal file
5
tests/fixtures/workspace/saker/2026-09-bratthaug-industri-as-systemarkitekt/logg.jsonl
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
{"ts": "2026-08-01T12:00:00+02:00", "hendelse": "opprettet", "kilde": "manuell", "ref": null, "notat": null}
|
||||||
|
{"ts": "2026-08-02T12:00:00+02:00", "type": "beslutning", "skjema": 1, "beslutning": "ja", "id": "b-2026-0716", "notat": "passer profilen"}
|
||||||
|
{"ts": "2026-08-06T12:00:00+02:00", "hendelse": "soknad_sendt", "kilde": "e-post", "ref": "soknad-v1.md", "notat": null}
|
||||||
|
{"ts": "2026-08-16T12:00:00+02:00", "hendelse": "intervju_avtalt", "kilde": "e-post", "ref": null, "notat": null}
|
||||||
|
{"ts": "2026-08-26T12:00:00+02:00", "hendelse": "intervju_gjennomfort", "kilde": "manuell", "ref": null, "notat": "forste runde, to fra teamet"}
|
||||||
35
tests/fixtures/workspace/saker/2026-09-bratthaug-industri-as-systemarkitekt/sak.md
vendored
Normal file
35
tests/fixtures/workspace/saker/2026-09-bratthaug-industri-as-systemarkitekt/sak.md
vendored
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
---
|
||||||
|
sak_id: 2026-09-bratthaug-industri-as-systemarkitekt
|
||||||
|
arbeidsgiver: Bratthaug Industri AS
|
||||||
|
rolle: Systemarkitekt
|
||||||
|
kilde: manuell
|
||||||
|
url: https://stillinger.example/bratthaug-9
|
||||||
|
opprettet: 2026-08-01
|
||||||
|
status: intervju
|
||||||
|
neste_frist: 2026-09-05
|
||||||
|
ventende_part: dem
|
||||||
|
sist_aktivitet: 2026-08-26
|
||||||
|
score: 77
|
||||||
|
cv_variant: cv-arkitekt-v1
|
||||||
|
soknad_versjon: v1
|
||||||
|
---
|
||||||
|
|
||||||
|
## Hvorfor denne
|
||||||
|
|
||||||
|
De eier hele stacken selv, og det er sjeldent.
|
||||||
|
|
||||||
|
## Status naa
|
||||||
|
|
||||||
|
Generert fikstur. Proveniens: syntetisk, skrevet for testkorpuset.
|
||||||
|
|
||||||
|
## Neste handling
|
||||||
|
|
||||||
|
Avventer det statusmaskinen utleder fra logg.jsonl.
|
||||||
|
|
||||||
|
## Aapne sporsmaal
|
||||||
|
|
||||||
|
- Ingen.
|
||||||
|
|
||||||
|
## Tidslinje
|
||||||
|
|
||||||
|
Genereres fra logg.jsonl.
|
||||||
4
tests/fixtures/workspace/saker/2026-09-havbris-energi-as-losningsarkitekt/logg.jsonl
vendored
Normal file
4
tests/fixtures/workspace/saker/2026-09-havbris-energi-as-losningsarkitekt/logg.jsonl
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{"ts": "2026-08-16T12:00:00+02:00", "hendelse": "opprettet", "kilde": "manuell", "ref": null, "notat": null}
|
||||||
|
{"ts": "2026-08-17T12:00:00+02:00", "type": "beslutning", "skjema": 1, "beslutning": "ja", "id": "b-2026-0801", "notat": "passer profilen"}
|
||||||
|
{"ts": "2026-08-26T12:00:00+02:00", "hendelse": "soknad_sendt", "kilde": "e-post", "ref": "soknad-v2.md", "notat": null}
|
||||||
|
{"ts": "2026-08-27T12:00:00+02:00", "hendelse": "bekreftelse_mottatt", "kilde": "e-post", "ref": null, "notat": "automatisk kvittering, ikke et svar"}
|
||||||
35
tests/fixtures/workspace/saker/2026-09-havbris-energi-as-losningsarkitekt/sak.md
vendored
Normal file
35
tests/fixtures/workspace/saker/2026-09-havbris-energi-as-losningsarkitekt/sak.md
vendored
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
---
|
||||||
|
sak_id: 2026-09-havbris-energi-as-losningsarkitekt
|
||||||
|
arbeidsgiver: Havbris Energi AS
|
||||||
|
rolle: Løsningsarkitekt
|
||||||
|
kilde: manuell
|
||||||
|
url: https://stillinger.example/havbris-233
|
||||||
|
opprettet: 2026-08-16
|
||||||
|
status: dialog
|
||||||
|
neste_frist: 2026-09-09
|
||||||
|
ventende_part: meg
|
||||||
|
sist_aktivitet: 2026-08-27
|
||||||
|
score: 81
|
||||||
|
cv_variant: cv-arkitekt-v1
|
||||||
|
soknad_versjon: v2
|
||||||
|
---
|
||||||
|
|
||||||
|
## Hvorfor denne
|
||||||
|
|
||||||
|
Storst faglig spenn av alle sakene i denne runden.
|
||||||
|
|
||||||
|
## Status naa
|
||||||
|
|
||||||
|
Generert fikstur. Proveniens: syntetisk, skrevet for testkorpuset.
|
||||||
|
|
||||||
|
## Neste handling
|
||||||
|
|
||||||
|
Avventer det statusmaskinen utleder fra logg.jsonl.
|
||||||
|
|
||||||
|
## Aapne sporsmaal
|
||||||
|
|
||||||
|
- Ingen.
|
||||||
|
|
||||||
|
## Tidslinje
|
||||||
|
|
||||||
|
Genereres fra logg.jsonl.
|
||||||
4
tests/fixtures/workspace/saker/2026-09-myrvang-teknologi-as-utvikler/logg.jsonl
vendored
Normal file
4
tests/fixtures/workspace/saker/2026-09-myrvang-teknologi-as-utvikler/logg.jsonl
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{"ts": "2026-07-17T12:00:00+02:00", "hendelse": "opprettet", "kilde": "manuell", "ref": null, "notat": null}
|
||||||
|
{"ts": "2026-07-18T12:00:00+02:00", "type": "beslutning", "skjema": 1, "beslutning": "ja", "id": "b-2026-0623", "notat": "passer profilen"}
|
||||||
|
{"ts": "2026-07-22T12:00:00+02:00", "hendelse": "soknad_sendt", "kilde": "e-post", "ref": "soknad-v1.md", "notat": null}
|
||||||
|
{"ts": "2026-08-06T12:00:00+02:00", "hendelse": "avslag", "kilde": "e-post", "ref": null, "notat": "stadium: screening"}
|
||||||
35
tests/fixtures/workspace/saker/2026-09-myrvang-teknologi-as-utvikler/sak.md
vendored
Normal file
35
tests/fixtures/workspace/saker/2026-09-myrvang-teknologi-as-utvikler/sak.md
vendored
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
---
|
||||||
|
sak_id: 2026-09-myrvang-teknologi-as-utvikler
|
||||||
|
arbeidsgiver: Myrvang Teknologi AS
|
||||||
|
rolle: Utvikler
|
||||||
|
kilde: manuell
|
||||||
|
url: https://stillinger.example/myrvang-55
|
||||||
|
opprettet: 2026-07-17
|
||||||
|
status: avslag
|
||||||
|
neste_frist: null
|
||||||
|
ventende_part: ingen
|
||||||
|
sist_aktivitet: 2026-08-06
|
||||||
|
score: 52
|
||||||
|
cv_variant: cv-generell-v3
|
||||||
|
soknad_versjon: v1
|
||||||
|
---
|
||||||
|
|
||||||
|
## Hvorfor denne
|
||||||
|
|
||||||
|
Lav score, sokt fordi teknologien var interessant.
|
||||||
|
|
||||||
|
## Status naa
|
||||||
|
|
||||||
|
Generert fikstur. Proveniens: syntetisk, skrevet for testkorpuset.
|
||||||
|
|
||||||
|
## Neste handling
|
||||||
|
|
||||||
|
Avventer det statusmaskinen utleder fra logg.jsonl.
|
||||||
|
|
||||||
|
## Aapne sporsmaal
|
||||||
|
|
||||||
|
- Ingen.
|
||||||
|
|
||||||
|
## Tidslinje
|
||||||
|
|
||||||
|
Genereres fra logg.jsonl.
|
||||||
1
tests/fixtures/workspace/saker/2026-09-nordlys-data-as-ai-radgiver/logg.jsonl
vendored
Normal file
1
tests/fixtures/workspace/saker/2026-09-nordlys-data-as-ai-radgiver/logg.jsonl
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"ts": "2026-09-13T12:00:00+02:00", "hendelse": "opprettet", "kilde": "manuell", "ref": null, "notat": null}
|
||||||
35
tests/fixtures/workspace/saker/2026-09-nordlys-data-as-ai-radgiver/sak.md
vendored
Normal file
35
tests/fixtures/workspace/saker/2026-09-nordlys-data-as-ai-radgiver/sak.md
vendored
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
---
|
||||||
|
sak_id: 2026-09-nordlys-data-as-ai-radgiver
|
||||||
|
arbeidsgiver: Nordlys Data AS
|
||||||
|
rolle: AI-rådgiver
|
||||||
|
kilde: manuell
|
||||||
|
url: https://stillinger.example/nordlys-1041
|
||||||
|
opprettet: 2026-09-13
|
||||||
|
status: vurderer
|
||||||
|
neste_frist: 2026-09-25
|
||||||
|
ventende_part: meg
|
||||||
|
sist_aktivitet: 2026-09-13
|
||||||
|
score: 74
|
||||||
|
cv_variant: cv-generell-v3
|
||||||
|
soknad_versjon: null
|
||||||
|
---
|
||||||
|
|
||||||
|
## Hvorfor denne
|
||||||
|
|
||||||
|
Fagomradet treffer, men lonnsnivaet er ikke oppgitt.
|
||||||
|
|
||||||
|
## Status naa
|
||||||
|
|
||||||
|
Generert fikstur. Proveniens: syntetisk, skrevet for testkorpuset.
|
||||||
|
|
||||||
|
## Neste handling
|
||||||
|
|
||||||
|
Avventer det statusmaskinen utleder fra logg.jsonl.
|
||||||
|
|
||||||
|
## Aapne sporsmaal
|
||||||
|
|
||||||
|
- Ingen.
|
||||||
|
|
||||||
|
## Tidslinje
|
||||||
|
|
||||||
|
Genereres fra logg.jsonl.
|
||||||
6
tests/fixtures/workspace/saker/2026-09-solvang-helse-as-teknisk-radgiver/logg.jsonl
vendored
Normal file
6
tests/fixtures/workspace/saker/2026-09-solvang-helse-as-teknisk-radgiver/logg.jsonl
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{"ts": "2026-07-27T12:00:00+02:00", "hendelse": "opprettet", "kilde": "manuell", "ref": null, "notat": null}
|
||||||
|
{"ts": "2026-07-28T12:00:00+02:00", "type": "beslutning", "skjema": 1, "beslutning": "ja", "id": "b-2026-0703", "notat": "passer profilen"}
|
||||||
|
{"ts": "2026-08-01T12:00:00+02:00", "hendelse": "soknad_sendt", "kilde": "e-post", "ref": "soknad-v1.md", "notat": null}
|
||||||
|
{"ts": "2026-08-11T12:00:00+02:00", "hendelse": "intervju_avtalt", "kilde": "e-post", "ref": null, "notat": null}
|
||||||
|
{"ts": "2026-08-16T12:00:00+02:00", "hendelse": "intervju_gjennomfort", "kilde": "manuell", "ref": null, "notat": null}
|
||||||
|
{"ts": "2026-09-12T12:00:00+02:00", "hendelse": "tilbud_mottatt", "kilde": "e-post", "ref": null, "notat": "frist for svar er ikke satt"}
|
||||||
35
tests/fixtures/workspace/saker/2026-09-solvang-helse-as-teknisk-radgiver/sak.md
vendored
Normal file
35
tests/fixtures/workspace/saker/2026-09-solvang-helse-as-teknisk-radgiver/sak.md
vendored
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
---
|
||||||
|
sak_id: 2026-09-solvang-helse-as-teknisk-radgiver
|
||||||
|
arbeidsgiver: Solvang Helse AS
|
||||||
|
rolle: Teknisk rådgiver
|
||||||
|
kilde: manuell
|
||||||
|
url: https://stillinger.example/solvang-402
|
||||||
|
opprettet: 2026-07-27
|
||||||
|
status: tilbud
|
||||||
|
neste_frist: null
|
||||||
|
ventende_part: meg
|
||||||
|
sist_aktivitet: 2026-09-12
|
||||||
|
score: 70
|
||||||
|
cv_variant: cv-generell-v3
|
||||||
|
soknad_versjon: v1
|
||||||
|
---
|
||||||
|
|
||||||
|
## Hvorfor denne
|
||||||
|
|
||||||
|
Minst spennende fagligt, men de svarer raskt og ryddig.
|
||||||
|
|
||||||
|
## Status naa
|
||||||
|
|
||||||
|
Generert fikstur. Proveniens: syntetisk, skrevet for testkorpuset.
|
||||||
|
|
||||||
|
## Neste handling
|
||||||
|
|
||||||
|
Avventer det statusmaskinen utleder fra logg.jsonl.
|
||||||
|
|
||||||
|
## Aapne sporsmaal
|
||||||
|
|
||||||
|
- Ingen.
|
||||||
|
|
||||||
|
## Tidslinje
|
||||||
|
|
||||||
|
Genereres fra logg.jsonl.
|
||||||
5
tests/fixtures/workspace/saker/2026-09-storelva-kommune-fagleder-digitalisering/logg.jsonl
vendored
Normal file
5
tests/fixtures/workspace/saker/2026-09-storelva-kommune-fagleder-digitalisering/logg.jsonl
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
{"ts": "2026-08-06T12:00:00+02:00", "hendelse": "opprettet", "kilde": "manuell", "ref": null, "notat": null}
|
||||||
|
{"ts": "2026-08-07T12:00:00+02:00", "type": "beslutning", "skjema": 1, "beslutning": "ja", "id": "b-2026-0722", "notat": "passer profilen"}
|
||||||
|
{"ts": "2026-08-11T12:00:00+02:00", "hendelse": "soknad_sendt", "kilde": "e-post", "ref": "soknad-v1.md", "notat": null}
|
||||||
|
{"ts": "2026-08-21T12:00:00+02:00", "hendelse": "henvendelse_mottatt", "kilde": "e-post", "ref": null, "notat": "sporsmal om tilgjengelighet"}
|
||||||
|
{"ts": "2026-08-22T12:00:00+02:00", "hendelse": "svar_sendt", "kilde": "e-post", "ref": null, "notat": null}
|
||||||
35
tests/fixtures/workspace/saker/2026-09-storelva-kommune-fagleder-digitalisering/sak.md
vendored
Normal file
35
tests/fixtures/workspace/saker/2026-09-storelva-kommune-fagleder-digitalisering/sak.md
vendored
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
---
|
||||||
|
sak_id: 2026-09-storelva-kommune-fagleder-digitalisering
|
||||||
|
arbeidsgiver: Storelva kommune
|
||||||
|
rolle: Fagleder digitalisering
|
||||||
|
kilde: manuell
|
||||||
|
url: https://stillinger.example/storelva-17
|
||||||
|
opprettet: 2026-08-06
|
||||||
|
status: dialog
|
||||||
|
neste_frist: 2026-08-28
|
||||||
|
ventende_part: dem
|
||||||
|
sist_aktivitet: 2026-08-22
|
||||||
|
score: 63
|
||||||
|
cv_variant: cv-generell-v3
|
||||||
|
soknad_versjon: v1
|
||||||
|
---
|
||||||
|
|
||||||
|
## Hvorfor denne
|
||||||
|
|
||||||
|
Offentlig virksomhet med et reelt digitaliseringsmandat.
|
||||||
|
|
||||||
|
## Status naa
|
||||||
|
|
||||||
|
Generert fikstur. Proveniens: syntetisk, skrevet for testkorpuset.
|
||||||
|
|
||||||
|
## Neste handling
|
||||||
|
|
||||||
|
Avventer det statusmaskinen utleder fra logg.jsonl.
|
||||||
|
|
||||||
|
## Aapne sporsmaal
|
||||||
|
|
||||||
|
- Ingen.
|
||||||
|
|
||||||
|
## Tidslinje
|
||||||
|
|
||||||
|
Genereres fra logg.jsonl.
|
||||||
2
tests/fixtures/workspace/saker/2026-09-vaeroy-sjomat-as-dataingenior/logg.jsonl
vendored
Normal file
2
tests/fixtures/workspace/saker/2026-09-vaeroy-sjomat-as-dataingenior/logg.jsonl
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
{"ts": "2026-09-09T12:00:00+02:00", "hendelse": "opprettet", "kilde": "manuell", "ref": null, "notat": null}
|
||||||
|
{"ts": "2026-09-10T12:00:00+02:00", "type": "beslutning", "skjema": 1, "beslutning": "ja", "id": "b-2026-0912", "notat": "passer profilen"}
|
||||||
35
tests/fixtures/workspace/saker/2026-09-vaeroy-sjomat-as-dataingenior/sak.md
vendored
Normal file
35
tests/fixtures/workspace/saker/2026-09-vaeroy-sjomat-as-dataingenior/sak.md
vendored
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
---
|
||||||
|
sak_id: 2026-09-vaeroy-sjomat-as-dataingenior
|
||||||
|
arbeidsgiver: Værøy Sjømat AS
|
||||||
|
rolle: Dataingeniør
|
||||||
|
kilde: manuell
|
||||||
|
url: https://stillinger.example/vaeroy-88
|
||||||
|
opprettet: 2026-09-09
|
||||||
|
status: soker
|
||||||
|
neste_frist: 2026-09-20
|
||||||
|
ventende_part: meg
|
||||||
|
sist_aktivitet: 2026-09-10
|
||||||
|
score: 68
|
||||||
|
cv_variant: cv-data-v2
|
||||||
|
soknad_versjon: null
|
||||||
|
---
|
||||||
|
|
||||||
|
## Hvorfor denne
|
||||||
|
|
||||||
|
Naert nok til basen, og de bygger datplattform fra bunnen.
|
||||||
|
|
||||||
|
## Status naa
|
||||||
|
|
||||||
|
Generert fikstur. Proveniens: syntetisk, skrevet for testkorpuset.
|
||||||
|
|
||||||
|
## Neste handling
|
||||||
|
|
||||||
|
Avventer det statusmaskinen utleder fra logg.jsonl.
|
||||||
|
|
||||||
|
## Aapne sporsmaal
|
||||||
|
|
||||||
|
- Ingen.
|
||||||
|
|
||||||
|
## Tidslinje
|
||||||
|
|
||||||
|
Genereres fra logg.jsonl.
|
||||||
133
tests/test_workspace_fixtures.py
Normal file
133
tests/test_workspace_fixtures.py
Normal file
|
|
@ -0,0 +1,133 @@
|
||||||
|
"""The eight-case fixture workspace every later milestone reads (plan Step 19).
|
||||||
|
|
||||||
|
A corpus is a contract with the milestones that have not been written yet.
|
||||||
|
M3 ingests into it, M4 drafts against it, M6 counts from it, and each of those
|
||||||
|
will assume the corpus says what this file asserts it says. So the assertions
|
||||||
|
here are about the corpus itself -- that each case really does resolve to the
|
||||||
|
state its name claims, that the one case built to disagree with its own
|
||||||
|
frontmatter actually disagrees, and that nothing in it carries a real name, a
|
||||||
|
real employer or a resolvable host.
|
||||||
|
|
||||||
|
The decision fixtures are M6's, written now on purpose. `beslutninger.jsonl`
|
||||||
|
is append-only, so its schema is irreversible: `type` and `skjema` have to be
|
||||||
|
right at the first write or they are wrong forever (risk H10). Writing M6's
|
||||||
|
counting fixtures in M2 is what forces that schema to be decided while it can
|
||||||
|
still be changed.
|
||||||
|
|
||||||
|
The ASCII assertion is not decoration. macOS hands back filenames in NFD, so a
|
||||||
|
Norwegian employer name can produce two directories that look identical and
|
||||||
|
are different byte strings (risk H8). One case in the corpus is named for an
|
||||||
|
employer with three of the four characters that provoke it.
|
||||||
|
|
||||||
|
Style note: this file follows tests/test_fixture_hygiene.py.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
import test_fixture_hygiene as hygiene
|
||||||
|
|
||||||
|
import sak_status
|
||||||
|
from jobbsok_lib import jsonl
|
||||||
|
|
||||||
|
FIXTURES = os.path.join(os.path.dirname(os.path.abspath(__file__)), "fixtures")
|
||||||
|
KORPUS = os.path.join(FIXTURES, "workspace")
|
||||||
|
BESLUTNINGER = os.path.join(FIXTURES, "beslutninger")
|
||||||
|
|
||||||
|
TODAY = "2026-09-15"
|
||||||
|
|
||||||
|
#: sak-id -> (status, ventende_part, flags). One case per state in build-brief
|
||||||
|
#: 6, dated relative to the frozen today.
|
||||||
|
FORVENTET = {
|
||||||
|
"2026-09-aurland-maritim-as-prosjektleder": ("trukket", "ingen", []),
|
||||||
|
"2026-09-bratthaug-industri-as-systemarkitekt": ("intervju", "dem", ["intervju_10"]),
|
||||||
|
"2026-09-havbris-energi-as-losningsarkitekt": ("sendt", "dem", ["sendt_14"]),
|
||||||
|
"2026-09-myrvang-teknologi-as-utvikler": ("avslag", "ingen", []),
|
||||||
|
"2026-09-nordlys-data-as-ai-radgiver": ("vurderer", "meg", []),
|
||||||
|
"2026-09-solvang-helse-as-teknisk-radgiver": ("tilbud", "meg", []),
|
||||||
|
"2026-09-storelva-kommune-fagleder-digitalisering": ("dialog", "dem", ["dialog_7"]),
|
||||||
|
"2026-09-vaeroy-sjomat-as-dataingenior": ("soker", "meg", []),
|
||||||
|
}
|
||||||
|
|
||||||
|
#: The one case whose cached frontmatter is deliberately wrong, and the keys
|
||||||
|
#: it is wrong about.
|
||||||
|
UENIG = "2026-09-havbris-energi-as-losningsarkitekt"
|
||||||
|
UENIG_NOKLER = ["status", "ventende_part"]
|
||||||
|
|
||||||
|
#: M6's counting fixtures. The name says what each one is for, because a
|
||||||
|
#: counting rule tested against a file called `data2.jsonl` is a rule nobody
|
||||||
|
#: can check.
|
||||||
|
BESLUTNINGSFIKSTURER = (
|
||||||
|
"ni-beslutninger.jsonl",
|
||||||
|
"ti-beslutninger.jsonl",
|
||||||
|
"tjue-lonnsdominert.jsonl",
|
||||||
|
"tjue-faa-ja.jsonl",
|
||||||
|
"med-korrigering.jsonl",
|
||||||
|
"med-utfall.jsonl",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_each_of_the_eight_cases_resolves_to_the_state_its_name_claims():
|
||||||
|
funnet = sak_status.alle_saker(KORPUS)
|
||||||
|
assert funnet == sorted(FORVENTET), (
|
||||||
|
"the corpus holds %r, the contract names %r" % (funnet, sorted(FORVENTET))
|
||||||
|
)
|
||||||
|
for sak_id, (status, ventende, flagg) in sorted(FORVENTET.items()):
|
||||||
|
resultat = sak_status.avgjor(sak_status.les_sak(KORPUS, sak_id)[2], TODAY)
|
||||||
|
assert resultat["status"] == status, sak_id
|
||||||
|
assert resultat["ventende_part"] == ventende, sak_id
|
||||||
|
assert resultat["flagg"] == flagg, sak_id
|
||||||
|
|
||||||
|
|
||||||
|
def test_the_case_built_to_disagree_with_its_frontmatter_reports_the_divergence():
|
||||||
|
avvik = sak_status.divergenser(KORPUS, TODAY)
|
||||||
|
assert [post["sak_id"] for post in avvik] == [UENIG], (
|
||||||
|
"exactly one case is supposed to disagree; found %r"
|
||||||
|
% ([post["sak_id"] for post in avvik],)
|
||||||
|
)
|
||||||
|
nokler = sorted(d["nokkel"] for d in avvik[0]["divergens"])
|
||||||
|
assert nokler == UENIG_NOKLER
|
||||||
|
resultat = sak_status.status_for_sak(KORPUS, UENIG, TODAY)
|
||||||
|
assert resultat["status"] == "sendt", "the log wins over the cache (risk H3)"
|
||||||
|
|
||||||
|
|
||||||
|
def test_every_generated_path_component_in_the_corpus_is_pure_ascii():
|
||||||
|
komponenter = []
|
||||||
|
for dirpath, dirnames, filenames in os.walk(KORPUS):
|
||||||
|
dirnames.sort()
|
||||||
|
komponenter.extend(dirnames)
|
||||||
|
komponenter.extend(sorted(filenames))
|
||||||
|
assert komponenter, "walked an empty corpus; the assertion below proves nothing"
|
||||||
|
for navn in komponenter:
|
||||||
|
assert navn.encode("ascii", "ignore").decode("ascii") == navn, (
|
||||||
|
"%r is not pure ASCII; on macOS its NFD twin is a second directory "
|
||||||
|
"(risk H8)" % navn
|
||||||
|
)
|
||||||
|
# The corpus must actually contain a name that could have gone wrong.
|
||||||
|
assert any("vaeroy" in navn for navn in komponenter), (
|
||||||
|
"no Norwegian-derived slug in the corpus, so the rule has no teeth"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_the_hygiene_scan_passes_over_the_new_corpus_and_states_its_denominator():
|
||||||
|
resultat = hygiene.scan(KORPUS)
|
||||||
|
assert resultat["findings"] == [], "hygiene findings: %r" % (resultat["findings"],)
|
||||||
|
melding = hygiene.report(resultat, KORPUS)
|
||||||
|
assert resultat["files"] == 2 * len(FORVENTET), (
|
||||||
|
"expected a sak.md and a logg.jsonl per case, scanned %d files"
|
||||||
|
% resultat["files"]
|
||||||
|
)
|
||||||
|
assert resultat["bytes"] > 0 and str(resultat["files"]) in melding
|
||||||
|
|
||||||
|
|
||||||
|
def test_every_decision_fixture_parses_and_carries_type_and_skjema():
|
||||||
|
funnet = sorted(os.listdir(BESLUTNINGER))
|
||||||
|
assert funnet == sorted(BESLUTNINGSFIKSTURER), funnet
|
||||||
|
for navn in funnet:
|
||||||
|
linjer = jsonl.read_lines(os.path.join(BESLUTNINGER, navn))
|
||||||
|
assert linjer, "%s is empty" % navn
|
||||||
|
for nummer, linje in enumerate(linjer, start=1):
|
||||||
|
assert linje.get("type") in jsonl.TYPES, (navn, nummer, linje.get("type"))
|
||||||
|
assert linje.get("skjema") == jsonl.SKJEMA, (navn, nummer)
|
||||||
|
# fold() is M6's reader; a fixture it cannot fold is a fixture that
|
||||||
|
# will fail in M6 instead of here.
|
||||||
|
jsonl.fold(linjer)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue