Kapacitetsberegning

Sådan beregner Ressourcify arbejdsdage, nettotimer og udnyttelse — med konkrete eksempler.

Alle kapacitetstal i Ressourcify er bygget af fire grundlæggende felter. Her kommer formlerne, et regneeksempel og de vigtigste fælder.

De fire grundfelter

FeltForklaring
workdaysAntal arbejdsdage i måneden — ekskl. weekender og helligdage
baseHoursForventede timer i måneden ud fra brugerens WorkingPattern
leaveHoursSum af fraværstimer i måneden
netHoursbaseHours − leaveHours

Formlerne

baseHours  = Σ (defaultHours[weekday(day)])  for hver workday
leaveHours = Σ (leave.hoursPerDay eller defaultHours)  for hver workday med fravær
netHours   = baseHours − leaveHours

Alle resultater afrundes til én decimal for at undgå float-støj.

Udnyttelse

utilizationPlanned = plannedHours / netHours × 100%
utilizationActual  = actualHours  / netHours × 100%

Hvis netHours = 0 (ren fraværsmåned) returneres 0% — ikke NaN.

Du kan vælge useNetCapacity = false for at regne mod brutto i stedet — relevant for "potentiel udnyttelse"-rapporter.

Regneeksempel: Alice, maj 2026

Forudsætninger:

  • Arbejdsmønster: dansk standard (37 t/uge fordelt 7,4 t × 5 dage)
  • employmentPct = 1.00
  • 1.-2. maj er weekend; 8. maj er helligdag (Store Bededag flyttet — fiktivt eksempel)
  • Alice har ferie 11.-15. maj (hele dage)
TrinTal
Dage i maj31
− weekender−10
− helligdage−1
workdays20
baseHours (20 × 7,4)148,0
Feriedage (11.-15. maj, alle hverdage)5
leaveHours (5 × 7,4)37,0
netHours111,0

Hvis Alice er allokeret 80 timer i maj:

utilizationPlanned = 80 / 111 × 100 = 72%

Arbejdsmønster (WorkingPattern)

Hver bruger har et mønster med en time-værdi per ugedag (ISO 1=mandag … 7=søndag). Standard er 7,4 t mandag–fredag og 0 t weekend.

EksempelMandagTirsdagOnsdagTorsdagFredagLørSøn
Fuldtid7,47,47,47,47,400
Halvtid3,73,73,73,73,700
4-dages uge9,259,259,259,25000

Mønsteret kan ændres over tid — hver pattern-række har en validFrom-dato.

Fravær: hele eller delvise dage

Et Leave har en valgfri hoursPerDay:

hoursPerDayTolkning
null (default)Hele dagen — bruger arbejdsmønsterets timer for ugedagen
4.0Halv dag — uanset mønster

Fravær på en weekend eller helligdag bidrager ikke til leaveHours, fordi det ikke er en arbejdsdag. Brugeren behøver ikke registrere det.

Bruger-start og -slut

Hvis User.startDate er midt i måneden, tæller kun dage fra og med start. Tilsvarende for User.endDate. Det forhindrer urealistisk høj kapacitet for ny-startede eller fratrådte.

Hvor logikken bor

Al beregning ligger i lib/calc/capacity.ts som rene funktioner — uden DB-kald. Det gør den nem at unit-teste og forhindrer at logikken spreder sig ud i routes og komponenter.

Resultatet caches i tabellerne MonthlyCapacity og MonthlyUtilization, så lister og rapporter kan læse dem hurtigt uden at genberegne.

Genberegning

Cachen invalideres når:

  • En allokering oprettes, ændres eller slettes
  • Et fravær oprettes, ændres eller slettes
  • Brugerens WorkingPattern ændres
  • En helligdag tilføjes eller fjernes
  • En manuel Genberegn-knap aktiveres af en admin

Genberegningen kører månedvis og er idempotent.

On this page