Skip to content

Åtgärda granskningens kodbara fynd (lön, schema, LAS, behörighet, drift) + ärlig README - #1

Merged
SpankulatorX merged 2 commits into
mainfrom
fix/granskningsatgarder-2026-07-02
Jul 3, 2026
Merged

SpankulatorX merged 2 commits into
mainfrom
fix/granskningsatgarder-2026-07-02

Conversation

@SpankulatorX

Copy link
Copy Markdown
Owner

Åtgärdar de kodbara fynden ur en oberoende, kritisk granskning mot Region Örebro läns upphandlingsunderlag (dnr 25RS1678), plus en ärlig README-uppdatering.

Bygge grönt, 2 219 tester passerar (0 fel). 69 filer, +3231/−489.

Kritiska

  • Live-krasch vid ny lönekörning — kostnadsställe-GUID (36 tecken) mot varchar(20)-kolumn → INSERT föll. Trunkeras nu. Verifierat live: körning skapas och beräknas utan fel.
  • Frånvaroavdrag saknades — sjukdom/föräldraledighet höjde bruttolönen. Inför sjukavdrag (inkl. dag 15+) och föräldraledighetsavdrag.
  • OB-default-bugg — manuellt inlagda pass klassades som kvälls-OB. OBKategori sätts nu korrekt utifrån passets tid.
  • Tidrapportgranskningens LINQ-krasch — value-object-jämförelse i Where översätts nu korrekt.

Höga

Övertid enligt AB §20 (180/240 % av mån.lön/165) · O-natt B 2026 78,30→101,80 kr/h (AB §21 anm. 1) · OB-tid/storhelg mot AB §21 · natthöjda O-satser i schema→lön · resekrav når lönen · fem "sparar-aldrig"-buggar · LAS-dagar räknas upp löpande + SÄVA/vikariat separat · retroaktiv löneöversyn triggar retro-körning · behörighet fail-closed + audit loggar faktisk användare (ICurrentUser) + enhets-scoping · rätt arbetsgivare (Region Örebro län) + riktig PDF (QuestPDF).

Medel/drift

Schemalagda rapporter körs · KPI-statusfilter · cert-bevakning · schemaoptimerarens OB-satser kanoniska · korrekta värden i kunskapsartikel/CLAUDE.md · rate-limiter bakom proxy (ForwardedHeaders) · demo-seed bakom flagga · compose-portfix · optimistisk låsning (xmin) på PayrollRun/Employment.

Medvetet ej åtgärdat

Effektivdaterad lönehistorik-versionering; riktig EF-migrationsstrategi (behåller EnsureCreated); lasttest/utskalning för 11 000; komplett A-tidsmodell för alla storhelgskanter; avtalsbundna live-integrationer (BankID/SITHS, bank, FK, KPA, Navet, Inera).

🤖 Generated with Claude Code

https://claude.ai/code/session_0114SipfUPpV6WRPh9jMRfUL

SpankulatorX and others added 2 commits July 2, 2026 21:11
…, drift)

Rättar de kodbara fynden ur den oberoende granskningen mot Region Örebro
läns upphandlingsunderlag. Bygge grönt, 2219 tester passerar.

Kritiska:
- Live-krasch vid ny lönekörning: Kostnadsstalle sattes till enhetens
  36-teckens GUID mot varchar(20)-kolumn → INSERT föll. Hämtar nu kort
  kostnadsställeskod (trunkerad till 20).
- Frånvaroavdrag saknades: sjukdom/föräldraledighet höjde bruttolönen.
  Inför sjukavdrag (löneart 3005, inkl. dag 15+) och föräldraledighets-
  avdrag (3210) som dras i brutto.
- OB-default: manuellt inlagda pass klassades som kvälls-OB. OBKategori
  sätts nu korrekt utifrån passets tid vid skapande.
- Tidrapportgranskning kastade rått EF LINQ-fel: value-object-jämförelsen
  i Where översätts nu korrekt.

Höga:
- Övertid enligt AB §20 (180/240 % av mån.lön/165); delare 165.
- O-natt B 2026 78,30 → 101,80 kr/h (AB §21 anm. 1, +30 %).
- OB-tidsklassificering + storhelg mot AB §21 (fredag 17–24 = B,
  Kristi himmelsfärd bort, långfredag + söndag efter midsommar in).
- Natthöjda O-satser tillämpas i schema→lön-kedjan.
- Godkända resekrav når lönekörningen (skattefria rader 5100/5200/5300).
- "Sparar-aldrig"-buggar (passbyte, öppet pass, chef-ledighet,
  friskvårdsgodkännande, kompetens/utbildning-formulär) persisterar nu.
- LAS-dagar räknas upp löpande; SÄVA/vikariat ackumuleras separat.
- Retroaktiv löneöversyn triggar retroaktiv körning; revisionsdatum väljbart.
- Behörighet fail-closed (okänd rutt nekas; /las, /anpassat regelsatta);
  granskningslogg loggar faktisk användare via ICurrentUser; enhets-scoping
  på fler sidor.
- Fel arbetsgivare (Västra Götalandsregionen) → Region Örebro län; riktig
  PDF via QuestPDF.

Medel/drift:
- Schemalagda rapporter körs (ArSchemalagd sätts); KPI-status­filter.
- Cert-bevakning implementerad; schemaoptimerarens OB-satser kanoniska.
- Kunskapsartikel/CLAUDE.md korrekta regelvärden; SCB-könsnormalisering.
- Rate-limiter bakom proxy (UseForwardedHeaders); demo-seed bakom flagga;
  compose-portfix (5076); optimistisk låsning (xmin) på PayrollRun/Employment.

Medvetet ej åtgärdat (kräver avtal/större omskrivning): skarp BankID/SITHS
och live-transport (bank/FK/KPA/Navet/Inera), full effektivdaterad löne-
historik-versionering, komplett A-tidsmodell för alla storhelgskanter.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0114SipfUPpV6WRPh9jMRfUL
…ngar, korrekt skalning/OB)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0114SipfUPpV6WRPh9jMRfUL
@SpankulatorX
SpankulatorX merged commit 6101ce0 into main Jul 3, 2026
1 check failed
@SpankulatorX
SpankulatorX deleted the fix/granskningsatgarder-2026-07-02 branch October 1, 2026 18:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant