dabke 0.81.1 → 0.83.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +58 -0
- package/README.md +45 -27
- package/dist/client.d.ts +20 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -1
- package/dist/client.js.map +1 -1
- package/dist/client.types.d.ts +9 -0
- package/dist/client.types.d.ts.map +1 -1
- package/dist/client.types.js +1 -0
- package/dist/client.types.js.map +1 -1
- package/dist/cpsat/model-builder.d.ts +9 -0
- package/dist/cpsat/model-builder.d.ts.map +1 -1
- package/dist/cpsat/model-builder.js +36 -34
- package/dist/cpsat/model-builder.js.map +1 -1
- package/dist/cpsat/response.d.ts +13 -1
- package/dist/cpsat/response.d.ts.map +1 -1
- package/dist/cpsat/response.js +4 -0
- package/dist/cpsat/response.js.map +1 -1
- package/dist/cpsat/rules/cost-utils.d.ts +11 -0
- package/dist/cpsat/rules/cost-utils.d.ts.map +1 -0
- package/dist/cpsat/rules/cost-utils.js +24 -0
- package/dist/cpsat/rules/cost-utils.js.map +1 -0
- package/dist/cpsat/rules/day-cost-multiplier.d.ts.map +1 -1
- package/dist/cpsat/rules/day-cost-multiplier.js +3 -14
- package/dist/cpsat/rules/day-cost-multiplier.js.map +1 -1
- package/dist/cpsat/rules/day-cost-surcharge.d.ts.map +1 -1
- package/dist/cpsat/rules/day-cost-surcharge.js +3 -7
- package/dist/cpsat/rules/day-cost-surcharge.js.map +1 -1
- package/dist/cpsat/rules/index.d.ts +3 -0
- package/dist/cpsat/rules/index.d.ts.map +1 -1
- package/dist/cpsat/rules/index.js +3 -0
- package/dist/cpsat/rules/index.js.map +1 -1
- package/dist/cpsat/rules/max-consecutive-days.d.ts.map +1 -1
- package/dist/cpsat/rules/max-consecutive-days.js +16 -2
- package/dist/cpsat/rules/max-consecutive-days.js.map +1 -1
- package/dist/cpsat/rules/max-days-week.d.ts +44 -0
- package/dist/cpsat/rules/max-days-week.d.ts.map +1 -0
- package/dist/cpsat/rules/max-days-week.js +95 -0
- package/dist/cpsat/rules/max-days-week.js.map +1 -0
- package/dist/cpsat/rules/max-hours-day.d.ts.map +1 -1
- package/dist/cpsat/rules/max-hours-day.js +15 -2
- package/dist/cpsat/rules/max-hours-day.js.map +1 -1
- package/dist/cpsat/rules/max-hours-week.d.ts.map +1 -1
- package/dist/cpsat/rules/max-hours-week.js +16 -2
- package/dist/cpsat/rules/max-hours-week.js.map +1 -1
- package/dist/cpsat/rules/max-shifts-day.d.ts.map +1 -1
- package/dist/cpsat/rules/max-shifts-day.js +15 -2
- package/dist/cpsat/rules/max-shifts-day.js.map +1 -1
- package/dist/cpsat/rules/min-consecutive-days.d.ts.map +1 -1
- package/dist/cpsat/rules/min-consecutive-days.js +15 -2
- package/dist/cpsat/rules/min-consecutive-days.js.map +1 -1
- package/dist/cpsat/rules/min-days-week.d.ts +34 -0
- package/dist/cpsat/rules/min-days-week.d.ts.map +1 -0
- package/dist/cpsat/rules/min-days-week.js +84 -0
- package/dist/cpsat/rules/min-days-week.js.map +1 -0
- package/dist/cpsat/rules/min-hours-day.d.ts.map +1 -1
- package/dist/cpsat/rules/min-hours-day.js +15 -2
- package/dist/cpsat/rules/min-hours-day.js.map +1 -1
- package/dist/cpsat/rules/min-hours-week.d.ts.map +1 -1
- package/dist/cpsat/rules/min-hours-week.js +16 -2
- package/dist/cpsat/rules/min-hours-week.js.map +1 -1
- package/dist/cpsat/rules/min-rest-between-shifts.d.ts.map +1 -1
- package/dist/cpsat/rules/min-rest-between-shifts.js +72 -2
- package/dist/cpsat/rules/min-rest-between-shifts.js.map +1 -1
- package/dist/cpsat/rules/minimize-cost.d.ts.map +1 -1
- package/dist/cpsat/rules/minimize-cost.js +2 -23
- package/dist/cpsat/rules/minimize-cost.js.map +1 -1
- package/dist/cpsat/rules/must-assign.d.ts +49 -0
- package/dist/cpsat/rules/must-assign.d.ts.map +1 -0
- package/dist/cpsat/rules/must-assign.js +86 -0
- package/dist/cpsat/rules/must-assign.js.map +1 -0
- package/dist/cpsat/rules/overtime-daily-multiplier.d.ts.map +1 -1
- package/dist/cpsat/rules/overtime-daily-multiplier.js +1 -12
- package/dist/cpsat/rules/overtime-daily-multiplier.js.map +1 -1
- package/dist/cpsat/rules/overtime-daily-surcharge.d.ts.map +1 -1
- package/dist/cpsat/rules/overtime-daily-surcharge.js +1 -5
- package/dist/cpsat/rules/overtime-daily-surcharge.js.map +1 -1
- package/dist/cpsat/rules/overtime-tiered-multiplier.d.ts +5 -1
- package/dist/cpsat/rules/overtime-tiered-multiplier.d.ts.map +1 -1
- package/dist/cpsat/rules/overtime-tiered-multiplier.js +1 -12
- package/dist/cpsat/rules/overtime-tiered-multiplier.js.map +1 -1
- package/dist/cpsat/rules/overtime-weekly-multiplier.d.ts.map +1 -1
- package/dist/cpsat/rules/overtime-weekly-multiplier.js +1 -12
- package/dist/cpsat/rules/overtime-weekly-multiplier.js.map +1 -1
- package/dist/cpsat/rules/overtime-weekly-surcharge.d.ts.map +1 -1
- package/dist/cpsat/rules/overtime-weekly-surcharge.js +1 -5
- package/dist/cpsat/rules/overtime-weekly-surcharge.js.map +1 -1
- package/dist/cpsat/rules/registry.d.ts +28 -2
- package/dist/cpsat/rules/registry.d.ts.map +1 -1
- package/dist/cpsat/rules/registry.js +4 -1
- package/dist/cpsat/rules/registry.js.map +1 -1
- package/dist/cpsat/rules/resolver.js +2 -2
- package/dist/cpsat/rules/resolver.js.map +1 -1
- package/dist/cpsat/rules/rules.types.d.ts +3 -0
- package/dist/cpsat/rules/rules.types.d.ts.map +1 -1
- package/dist/cpsat/rules/scope.types.d.ts +18 -1
- package/dist/cpsat/rules/scope.types.d.ts.map +1 -1
- package/dist/cpsat/rules/scope.types.js +59 -16
- package/dist/cpsat/rules/scope.types.js.map +1 -1
- package/dist/cpsat/rules/time-cost-surcharge.d.ts.map +1 -1
- package/dist/cpsat/rules/time-cost-surcharge.js +2 -1
- package/dist/cpsat/rules/time-cost-surcharge.js.map +1 -1
- package/dist/cpsat/rules/time-off.d.ts.map +1 -1
- package/dist/cpsat/rules/time-off.js +6 -3
- package/dist/cpsat/rules/time-off.js.map +1 -1
- package/dist/cpsat/semantic-time.d.ts +44 -42
- package/dist/cpsat/semantic-time.d.ts.map +1 -1
- package/dist/cpsat/semantic-time.js +64 -46
- package/dist/cpsat/semantic-time.js.map +1 -1
- package/dist/cpsat/types.d.ts +37 -27
- package/dist/cpsat/types.d.ts.map +1 -1
- package/dist/cpsat/utils.d.ts.map +1 -1
- package/dist/cpsat/utils.js +7 -12
- package/dist/cpsat/utils.js.map +1 -1
- package/dist/cpsat/validation-reporter.d.ts +10 -7
- package/dist/cpsat/validation-reporter.d.ts.map +1 -1
- package/dist/cpsat/validation-reporter.js +44 -72
- package/dist/cpsat/validation-reporter.js.map +1 -1
- package/dist/cpsat/validation.types.d.ts +54 -44
- package/dist/cpsat/validation.types.d.ts.map +1 -1
- package/dist/cpsat/validation.types.js +15 -10
- package/dist/cpsat/validation.types.js.map +1 -1
- package/dist/datetime.utils.d.ts +3 -203
- package/dist/datetime.utils.d.ts.map +1 -1
- package/dist/datetime.utils.js +1 -288
- package/dist/datetime.utils.js.map +1 -1
- package/dist/index.d.ts +14 -83
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -83
- package/dist/index.js.map +1 -1
- package/dist/schedule/cost.d.ts +204 -0
- package/dist/schedule/cost.d.ts.map +1 -0
- package/dist/schedule/cost.js +187 -0
- package/dist/schedule/cost.js.map +1 -0
- package/dist/schedule/coverage.d.ts +85 -0
- package/dist/schedule/coverage.d.ts.map +1 -0
- package/dist/schedule/coverage.js +33 -0
- package/dist/schedule/coverage.js.map +1 -0
- package/dist/schedule/definition.d.ts +227 -0
- package/dist/schedule/definition.d.ts.map +1 -0
- package/dist/schedule/definition.js +659 -0
- package/dist/schedule/definition.js.map +1 -0
- package/dist/schedule/index.d.ts +67 -0
- package/dist/schedule/index.d.ts.map +1 -0
- package/dist/schedule/index.js +69 -0
- package/dist/schedule/index.js.map +1 -0
- package/dist/schedule/rules.d.ts +353 -0
- package/dist/schedule/rules.d.ts.map +1 -0
- package/dist/schedule/rules.js +352 -0
- package/dist/schedule/rules.js.map +1 -0
- package/dist/schedule/shift-patterns.d.ts +34 -0
- package/dist/schedule/shift-patterns.d.ts.map +1 -0
- package/dist/schedule/shift-patterns.js +41 -0
- package/dist/schedule/shift-patterns.js.map +1 -0
- package/dist/schedule/time-periods.d.ts +69 -0
- package/dist/schedule/time-periods.d.ts.map +1 -0
- package/dist/schedule/time-periods.js +91 -0
- package/dist/schedule/time-periods.js.map +1 -0
- package/dist/types.d.ts +14 -78
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +4 -9
- package/solver/src/solver/app.py +1 -1
- package/solver/src/solver/solver.py +7 -4
- package/src/client.ts +6 -8
- package/src/client.types.ts +9 -0
- package/src/cpsat/model-builder.ts +44 -35
- package/src/cpsat/response.ts +13 -1
- package/src/cpsat/rules/cost-utils.ts +25 -0
- package/src/cpsat/rules/day-cost-multiplier.ts +3 -14
- package/src/cpsat/rules/day-cost-surcharge.ts +3 -8
- package/src/cpsat/rules/index.ts +3 -0
- package/src/cpsat/rules/max-consecutive-days.ts +17 -0
- package/src/cpsat/rules/max-days-week.ts +143 -0
- package/src/cpsat/rules/max-hours-day.ts +21 -1
- package/src/cpsat/rules/max-hours-week.ts +22 -1
- package/src/cpsat/rules/max-shifts-day.ts +21 -1
- package/src/cpsat/rules/min-consecutive-days.ts +16 -1
- package/src/cpsat/rules/min-days-week.ts +120 -0
- package/src/cpsat/rules/min-hours-day.ts +16 -1
- package/src/cpsat/rules/min-hours-week.ts +17 -1
- package/src/cpsat/rules/min-rest-between-shifts.ts +92 -2
- package/src/cpsat/rules/minimize-cost.ts +2 -29
- package/src/cpsat/rules/must-assign.ts +108 -0
- package/src/cpsat/rules/overtime-daily-multiplier.ts +1 -12
- package/src/cpsat/rules/overtime-daily-surcharge.ts +1 -6
- package/src/cpsat/rules/overtime-tiered-multiplier.ts +6 -13
- package/src/cpsat/rules/overtime-weekly-multiplier.ts +1 -12
- package/src/cpsat/rules/overtime-weekly-surcharge.ts +1 -6
- package/src/cpsat/rules/registry.ts +8 -2
- package/src/cpsat/rules/resolver.ts +2 -2
- package/src/cpsat/rules/rules.types.ts +3 -0
- package/src/cpsat/rules/scope.types.ts +73 -20
- package/src/cpsat/rules/time-cost-surcharge.ts +2 -1
- package/src/cpsat/rules/time-off.ts +6 -2
- package/src/cpsat/semantic-time.ts +115 -91
- package/src/cpsat/types.ts +37 -27
- package/src/cpsat/utils.ts +8 -12
- package/src/cpsat/validation-reporter.ts +51 -82
- package/src/cpsat/validation.types.ts +72 -47
- package/src/datetime.utils.ts +3 -334
- package/src/index.ts +35 -107
- package/src/schedule/cost.ts +242 -0
- package/src/schedule/coverage.ts +135 -0
- package/src/schedule/definition.ts +958 -0
- package/src/schedule/index.ts +112 -0
- package/src/schedule/rules.ts +529 -0
- package/src/schedule/shift-patterns.ts +46 -0
- package/src/schedule/time-periods.ts +110 -0
- package/src/types.ts +14 -88
- package/dist/errors.d.ts +0 -12
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -17
- package/dist/errors.js.map +0 -1
- package/dist/llms.d.ts +0 -2
- package/dist/llms.d.ts.map +0 -1
- package/dist/llms.js +0 -3
- package/dist/llms.js.map +0 -1
- package/dist/schedule.d.ts +0 -724
- package/dist/schedule.d.ts.map +0 -1
- package/dist/schedule.js +0 -899
- package/dist/schedule.js.map +0 -1
- package/dist/validation.d.ts +0 -105
- package/dist/validation.d.ts.map +0 -1
- package/dist/validation.js +0 -130
- package/dist/validation.js.map +0 -1
- package/llms.txt +0 -925
- package/src/errors.ts +0 -17
- package/src/llms.ts +0 -3
- package/src/schedule.ts +0 -1419
- package/src/validation.ts +0 -188
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"min-rest-between-shifts.d.ts","sourceRoot":"","sources":["../../../src/cpsat/rules/min-rest-between-shifts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"min-rest-between-shifts.d.ts","sourceRoot":"","sources":["../../../src/cpsat/rules/min-rest-between-shifts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,qBAAqB,CAAC;AAYlF,QAAA,MAAM,0BAA0B;;;iOAKmB,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEpF;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,0BAA0B,GACjC,eAAe,CAsKjB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as z from "zod";
|
|
2
|
-
import { priorityToPenalty } from "../utils.js";
|
|
3
|
-
import { PrioritySchema, entityScope, parseEntityScope, resolveMembersFromScope, } from "./scope.types.js";
|
|
2
|
+
import { normalizeEndMinutes, priorityToPenalty, timeOfDayToMinutes } from "../utils.js";
|
|
3
|
+
import { PrioritySchema, entityScope, parseEntityScope, resolveMembersFromScope, ruleGroup, } from "./scope.types.js";
|
|
4
4
|
const MinRestBetweenShiftsSchema = z
|
|
5
5
|
.object({
|
|
6
6
|
hours: z.number().min(0),
|
|
@@ -21,6 +21,7 @@ export function createMinRestBetweenShiftsRule(config) {
|
|
|
21
21
|
const scope = parseEntityScope(parsed);
|
|
22
22
|
const { hours, priority } = parsed;
|
|
23
23
|
const minMinutes = hours * 60;
|
|
24
|
+
const group = ruleGroup(`min-rest-between-shifts:${hours}`, `Min ${hours}h rest between shifts`, scope);
|
|
24
25
|
return {
|
|
25
26
|
compile(b) {
|
|
26
27
|
const members = resolveMembersFromScope(scope, b.members);
|
|
@@ -84,6 +85,75 @@ export function createMinRestBetweenShiftsRule(config) {
|
|
|
84
85
|
}
|
|
85
86
|
}
|
|
86
87
|
},
|
|
88
|
+
validate(assignments, reporter, context) {
|
|
89
|
+
if (priority === "MANDATORY")
|
|
90
|
+
return;
|
|
91
|
+
const members = resolveMembersFromScope(scope, context.members);
|
|
92
|
+
if (members.length === 0)
|
|
93
|
+
return;
|
|
94
|
+
const memberIds = new Set(members.map((m) => m.id));
|
|
95
|
+
// Group assignments by member, sort by day then start time
|
|
96
|
+
const byMember = new Map();
|
|
97
|
+
for (const a of assignments) {
|
|
98
|
+
if (!memberIds.has(a.memberId))
|
|
99
|
+
continue;
|
|
100
|
+
const list = byMember.get(a.memberId) ?? [];
|
|
101
|
+
list.push(a);
|
|
102
|
+
byMember.set(a.memberId, list);
|
|
103
|
+
}
|
|
104
|
+
for (const [memberId, memberAssignments] of byMember) {
|
|
105
|
+
const sorted = memberAssignments.toSorted((a, b) => {
|
|
106
|
+
if (a.day !== b.day)
|
|
107
|
+
return a.day < b.day ? -1 : 1;
|
|
108
|
+
return timeOfDayToMinutes(a.startTime) - timeOfDayToMinutes(b.startTime);
|
|
109
|
+
});
|
|
110
|
+
let violated = false;
|
|
111
|
+
for (let i = 0; i < sorted.length - 1; i++) {
|
|
112
|
+
const current = sorted[i];
|
|
113
|
+
const next = sorted[i + 1];
|
|
114
|
+
const currentEndMin = timeOfDayToMinutes(current.endTime);
|
|
115
|
+
const normalizedEnd = normalizeEndMinutes(timeOfDayToMinutes(current.startTime), currentEndMin);
|
|
116
|
+
const nextStartMin = timeOfDayToMinutes(next.startTime);
|
|
117
|
+
// Calculate gap considering day boundaries
|
|
118
|
+
let gap;
|
|
119
|
+
if (current.day === next.day) {
|
|
120
|
+
gap = nextStartMin - normalizedEnd;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
// Different days: account for the day boundary
|
|
124
|
+
const dayDiff = daysBetween(current.day, next.day);
|
|
125
|
+
gap = dayDiff * 24 * 60 - normalizedEnd + nextStartMin;
|
|
126
|
+
}
|
|
127
|
+
if (gap >= 0 && gap < minMinutes) {
|
|
128
|
+
reporter.reportRuleViolation({
|
|
129
|
+
rule: "min-rest-between-shifts",
|
|
130
|
+
message: `${memberId} has ${Math.round((gap / 60) * 10) / 10}h rest between shifts on ${current.day} and ${next.day}, need ${hours}h`,
|
|
131
|
+
context: { memberIds: [memberId], days: [current.day, next.day] },
|
|
132
|
+
shortfall: minMinutes - gap,
|
|
133
|
+
group,
|
|
134
|
+
});
|
|
135
|
+
violated = true;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (!violated && sorted.length > 1) {
|
|
139
|
+
reporter.reportRulePassed({
|
|
140
|
+
rule: "min-rest-between-shifts",
|
|
141
|
+
message: `${memberId} has ${hours}h+ rest between all shifts`,
|
|
142
|
+
context: {
|
|
143
|
+
memberIds: [memberId],
|
|
144
|
+
days: [...new Set(sorted.map((a) => a.day))],
|
|
145
|
+
},
|
|
146
|
+
group,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
},
|
|
87
151
|
};
|
|
88
152
|
}
|
|
153
|
+
/** Compute day difference from YYYY-MM-DD strings. */
|
|
154
|
+
function daysBetween(day1, day2) {
|
|
155
|
+
const d1 = new Date(`${day1}T00:00:00Z`);
|
|
156
|
+
const d2 = new Date(`${day2}T00:00:00Z`);
|
|
157
|
+
return Math.round((d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000));
|
|
158
|
+
}
|
|
89
159
|
//# sourceMappingURL=min-rest-between-shifts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"min-rest-between-shifts.js","sourceRoot":"","sources":["../../../src/cpsat/rules/min-rest-between-shifts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"min-rest-between-shifts.js","sourceRoot":"","sources":["../../../src/cpsat/rules/min-rest-between-shifts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimize-cost.d.ts","sourceRoot":"","sources":["../../../src/cpsat/rules/minimize-cost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC;AAE9B,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"minimize-cost.d.ts","sourceRoot":"","sources":["../../../src/cpsat/rules/minimize-cost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC;AAE9B,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,qBAAqB,CAAC;AAe7E,QAAA,MAAM,kBAAkB,mfAEvB,CAAC;AAEF,wDAAwD;AACxD,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,eAAe,CAuLlF"}
|
|
@@ -1,29 +1,8 @@
|
|
|
1
1
|
import { COST_CATEGORY } from "../cost.js";
|
|
2
|
-
import { OBJECTIVE_WEIGHTS,
|
|
2
|
+
import { OBJECTIVE_WEIGHTS, splitIntoWeeks } from "../utils.js";
|
|
3
3
|
import { entityScope, timeScope, parseEntityScope, parseTimeScope, resolveMembersFromScope, resolveActiveDaysFromScope, } from "./scope.types.js";
|
|
4
|
+
import { getHourlyRate, getSalariedPay, patternDurationMinutes } from "./cost-utils.js";
|
|
4
5
|
const MinimizeCostSchema = entityScope(["members", "roles", "skills"]).and(timeScope(["dateRange", "specificDates", "dayOfWeek", "recurring"]));
|
|
5
|
-
/** Returns the hourly rate for a member, or undefined if not hourly. */
|
|
6
|
-
function getHourlyRate(member) {
|
|
7
|
-
if (!member.pay)
|
|
8
|
-
return undefined;
|
|
9
|
-
if ("hourlyRate" in member.pay)
|
|
10
|
-
return member.pay.hourlyRate;
|
|
11
|
-
return undefined;
|
|
12
|
-
}
|
|
13
|
-
/** Returns salaried pay info, or undefined if not salaried. */
|
|
14
|
-
function getSalariedPay(member) {
|
|
15
|
-
if (!member.pay)
|
|
16
|
-
return undefined;
|
|
17
|
-
if ("annual" in member.pay)
|
|
18
|
-
return member.pay;
|
|
19
|
-
return undefined;
|
|
20
|
-
}
|
|
21
|
-
/** Computes shift duration in minutes from a pattern. */
|
|
22
|
-
function patternDurationMinutes(pattern) {
|
|
23
|
-
const start = timeOfDayToMinutes(pattern.startTime);
|
|
24
|
-
const end = normalizeEndMinutes(start, timeOfDayToMinutes(pattern.endTime));
|
|
25
|
-
return end - start;
|
|
26
|
-
}
|
|
27
6
|
/**
|
|
28
7
|
* Creates the minimize-cost rule.
|
|
29
8
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimize-cost.js","sourceRoot":"","sources":["../../../src/cpsat/rules/minimize-cost.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"minimize-cost.js","sourceRoot":"","sources":["../../../src/cpsat/rules/minimize-cost.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAExF,MAAM,kBAAkB,GAAG,WAAW,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CACxE,SAAS,CAAC,CAAC,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CACpE,CAAC;AAKF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAA0B;IAC/D,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAE9C,IAAI,oBAAoB,GAAc,QAAQ,CAAC;IAE/C,OAAO;QACL,OAAO,CAAC,CAAC;YACP,oBAAoB,GAAG,CAAC,CAAC,YAAY,CAAC;YAEtC,MAAM,aAAa,GAAG,uBAAuB,CAAC,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YAC3E,MAAM,UAAU,GAAG,0BAA0B,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAEtE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAElE,sEAAsE;YACtE,uCAAuC;YACvC,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;gBACnC,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;gBACnC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;wBACtC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;4BAAE,SAAS;wBAC5C,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;wBACjD,MAAM,OAAO,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;wBACvC,IAAI,OAAO,GAAG,UAAU;4BAAE,UAAU,GAAG,OAAO,CAAC;oBACjD,CAAC;gBACH,CAAC;gBACD,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC;oBACxC,IAAI,UAAU,GAAG,UAAU;wBAAE,UAAU,GAAG,UAAU,CAAC;gBACvD,CAAC;YACH,CAAC;YAED,IAAI,UAAU,KAAK,CAAC;gBAAE,OAAO;YAE7B,MAAM,mBAAmB,GAAG,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC;YAEhE,CAAC,CAAC,WAAW,GAAG;gBACd,mBAAmB;gBACnB,MAAM,EAAE,IAAI;aACb,CAAC;YAEF,uCAAuC;YACvC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;gBACnC,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;gBACnC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;wBACtC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;4BAAE,SAAS;wBAC5C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;4BAC7B,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC;gCAAE,SAAS;4BACrD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;4BACjD,MAAM,OAAO,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;4BACvC,MAAM,iBAAiB,GAAG,OAAO,GAAG,mBAAmB,CAAC;4BACxD,CAAC,CAAC,UAAU,CACV,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,EACxC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAC/B,CAAC;wBACJ,CAAC;oBACH,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,kDAAkD;gBAClD,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,QAAQ,KAAK,SAAS;oBAAE,SAAS;gBAErC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC;gBACxC,MAAM,oBAAoB,GAAG,UAAU,GAAG,mBAAmB,CAAC;gBAE9D,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;gBAEzD,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;oBAClD,wDAAwD;oBACxD,MAAM,kBAAkB,GAAa,EAAE,CAAC;oBACxC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;wBAC3B,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;4BACtC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;gCAAE,SAAS;4BAC5C,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC;gCAAE,SAAS;4BACrD,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;wBACpE,CAAC;oBACH,CAAC;oBAED,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC;wBAAE,SAAS;oBAE9C,mEAAmE;oBACnE,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,eAAe,MAAM,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;oBAEpE,oDAAoD;oBACpD,6DAA6D;oBAC7D,sEAAsE;oBACtE,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE,CAAC;wBAC3C,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;oBACzC,CAAC;oBAED,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CACF,WAA8B,EAC9B,OAAwC,EACxC,aAA0C;YAE1C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAEhE,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACvE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,0BAA0B,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;YAChF,MAAM,eAAe,GAAG,IAAI,GAAG,CAC7B,uBAAuB,CAAC,gBAAgB,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACzE,CAAC;YAEF,MAAM,OAAO,GAAgC,EAAE,CAAC;YAEhD,mEAAmE;YACnE,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAuB,CAAC;YAE1D,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBAAE,SAAS;gBACrC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAAE,SAAS;gBAC/C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACzC,IAAI,CAAC,MAAM;oBAAE,SAAS;gBAEtB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;gBACjD,IAAI,CAAC,OAAO;oBAAE,SAAS;gBACvB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;gBAEjD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;gBACnC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,OAAO,CAAC,IAAI,CAAC;wBACX,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,GAAG,EAAE,CAAC,CAAC,GAAG;wBACV,QAAQ,EAAE,aAAa,CAAC,IAAI;wBAC5B,MAAM,EAAE,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE;qBAC/B,CAAC,CAAC;oBACH,SAAS;gBACX,CAAC;gBAED,yCAAyC;gBACzC,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,QAAQ,KAAK,SAAS;oBAAE,SAAS;gBAErC,IAAI,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;oBACjB,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC3C,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;YAED,uEAAuE;YACvE,KAAK,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,kBAAkB,EAAE,CAAC;gBAC3D,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACvC,IAAI,CAAC,MAAM;oBAAE,SAAS;gBACtB,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,CAAC,QAAQ;oBAAE,SAAS;gBAExB,MAAM,UAAU,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACjD,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;gBAE/D,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;oBAC7B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;wBAAE,SAAS;oBACpC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC;oBACxC,iDAAiD;oBACjD,MAAM,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;oBAC5C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;wBAC3B,OAAO,CAAC,IAAI,CAAC;4BACX,QAAQ;4BACR,GAAG;4BACH,QAAQ,EAAE,aAAa,CAAC,IAAI;4BAC5B,MAAM,EAAE,MAAM;yBACf,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import * as z from "zod";
|
|
2
|
+
import type { CompilationRule } from "../model-builder.js";
|
|
3
|
+
declare const MustAssignSchema: z.ZodIntersection<z.ZodObject<{
|
|
4
|
+
weekStartsOn: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"monday">, z.ZodLiteral<"tuesday">, z.ZodLiteral<"wednesday">, z.ZodLiteral<"thursday">, z.ZodLiteral<"friday">, z.ZodLiteral<"saturday">, z.ZodLiteral<"sunday">]>>;
|
|
5
|
+
}, z.core.$strip>, z.ZodType<import("./scope.types.js").EntityScopeType<"members" | "roles" | "skills">, unknown, z.core.$ZodTypeInternals<import("./scope.types.js").EntityScopeType<"members" | "roles" | "skills">, unknown>>>;
|
|
6
|
+
/**
|
|
7
|
+
* Configuration for {@link createMustAssignRule}.
|
|
8
|
+
*
|
|
9
|
+
* - `weekStartsOn` (optional): which day starts the week; defaults to
|
|
10
|
+
* {@link ModelBuilder.weekStartsOn}
|
|
11
|
+
*
|
|
12
|
+
* Entity scoping (at most one): `memberIds`, `roleIds`, `skillIds`
|
|
13
|
+
*/
|
|
14
|
+
export type MustAssignConfig = z.infer<typeof MustAssignSchema>;
|
|
15
|
+
/**
|
|
16
|
+
* Guarantees that targeted members appear on the schedule.
|
|
17
|
+
*
|
|
18
|
+
* @remarks
|
|
19
|
+
* Use this for staffing obligations: salaried employees who are paid
|
|
20
|
+
* regardless of whether they work, or contracted staff who must be
|
|
21
|
+
* rostered. The solver ensures each targeted member has at least one
|
|
22
|
+
* assignment per scheduling week.
|
|
23
|
+
*
|
|
24
|
+
* Always compiles as a soft constraint (HIGH priority internally) so the
|
|
25
|
+
* schedule still generates when a member genuinely cannot be placed
|
|
26
|
+
* (e.g., full week of absences, no compatible shift patterns). Violations
|
|
27
|
+
* surface as validation warnings with distinct messaging from
|
|
28
|
+
* `min-days-week`.
|
|
29
|
+
*
|
|
30
|
+
* Unlike {@link createMinDaysWeekRule}, this rule communicates a staffing
|
|
31
|
+
* obligation rather than a scheduling preference. Validation messages
|
|
32
|
+
* reflect this: "Alice was not assigned (staffing obligation)" rather
|
|
33
|
+
* than "Alice worked 0 days, minimum was 1."
|
|
34
|
+
*
|
|
35
|
+
* @param config - See {@link MustAssignConfig}
|
|
36
|
+
*
|
|
37
|
+
* @example Ensure a salaried manager is always rostered
|
|
38
|
+
* ```ts
|
|
39
|
+
* createMustAssignRule({ memberIds: ["diana"] });
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @example Ensure all supervisors appear on the rota
|
|
43
|
+
* ```ts
|
|
44
|
+
* createMustAssignRule({ roleIds: ["supervisor"] });
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function createMustAssignRule(config: MustAssignConfig): CompilationRule;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=must-assign.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"must-assign.d.ts","sourceRoot":"","sources":["../../../src/cpsat/rules/must-assign.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAa3D,QAAA,MAAM,gBAAgB;;iOAI6B,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe,CA4C9E"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import * as z from "zod";
|
|
2
|
+
import { DayOfWeekSchema } from "../../types.js";
|
|
3
|
+
import { priorityToPenalty, splitIntoWeeks } from "../utils.js";
|
|
4
|
+
import { entityScope, parseEntityScope, resolveMembersFromScope, ruleGroup, } from "./scope.types.js";
|
|
5
|
+
/** Internally always HIGH. Not user-configurable. */
|
|
6
|
+
const MUST_ASSIGN_PENALTY = priorityToPenalty("HIGH");
|
|
7
|
+
const MustAssignSchema = z
|
|
8
|
+
.object({
|
|
9
|
+
weekStartsOn: DayOfWeekSchema.optional(),
|
|
10
|
+
})
|
|
11
|
+
.and(entityScope(["members", "roles", "skills"]));
|
|
12
|
+
/**
|
|
13
|
+
* Guarantees that targeted members appear on the schedule.
|
|
14
|
+
*
|
|
15
|
+
* @remarks
|
|
16
|
+
* Use this for staffing obligations: salaried employees who are paid
|
|
17
|
+
* regardless of whether they work, or contracted staff who must be
|
|
18
|
+
* rostered. The solver ensures each targeted member has at least one
|
|
19
|
+
* assignment per scheduling week.
|
|
20
|
+
*
|
|
21
|
+
* Always compiles as a soft constraint (HIGH priority internally) so the
|
|
22
|
+
* schedule still generates when a member genuinely cannot be placed
|
|
23
|
+
* (e.g., full week of absences, no compatible shift patterns). Violations
|
|
24
|
+
* surface as validation warnings with distinct messaging from
|
|
25
|
+
* `min-days-week`.
|
|
26
|
+
*
|
|
27
|
+
* Unlike {@link createMinDaysWeekRule}, this rule communicates a staffing
|
|
28
|
+
* obligation rather than a scheduling preference. Validation messages
|
|
29
|
+
* reflect this: "Alice was not assigned (staffing obligation)" rather
|
|
30
|
+
* than "Alice worked 0 days, minimum was 1."
|
|
31
|
+
*
|
|
32
|
+
* @param config - See {@link MustAssignConfig}
|
|
33
|
+
*
|
|
34
|
+
* @example Ensure a salaried manager is always rostered
|
|
35
|
+
* ```ts
|
|
36
|
+
* createMustAssignRule({ memberIds: ["diana"] });
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* @example Ensure all supervisors appear on the rota
|
|
40
|
+
* ```ts
|
|
41
|
+
* createMustAssignRule({ roleIds: ["supervisor"] });
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export function createMustAssignRule(config) {
|
|
45
|
+
const parsed = MustAssignSchema.parse(config);
|
|
46
|
+
const scope = parseEntityScope(parsed);
|
|
47
|
+
const { weekStartsOn } = parsed;
|
|
48
|
+
const group = ruleGroup("must-assign", "Must assign", scope);
|
|
49
|
+
return {
|
|
50
|
+
compile(b) {
|
|
51
|
+
const members = resolveMembersFromScope(scope, b.members);
|
|
52
|
+
const weeks = splitIntoWeeks(b.days, weekStartsOn ?? b.weekStartsOn);
|
|
53
|
+
for (const emp of members) {
|
|
54
|
+
for (const weekDays of weeks) {
|
|
55
|
+
const terms = [];
|
|
56
|
+
for (const day of weekDays) {
|
|
57
|
+
for (const pattern of b.shiftPatterns) {
|
|
58
|
+
if (!b.canAssign(emp, pattern))
|
|
59
|
+
continue;
|
|
60
|
+
if (!b.patternAvailableOnDay(pattern, day))
|
|
61
|
+
continue;
|
|
62
|
+
terms.push({ var: b.assignment(emp.id, pattern.id, day), coeff: 1 });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (terms.length === 0)
|
|
66
|
+
continue;
|
|
67
|
+
const weekLabel = weekDays[0];
|
|
68
|
+
const constraintId = `must-assign:${emp.id}:${weekLabel}`;
|
|
69
|
+
b.addSoftLinear(terms, ">=", 1, MUST_ASSIGN_PENALTY, constraintId);
|
|
70
|
+
b.reporter.trackConstraint({
|
|
71
|
+
id: constraintId,
|
|
72
|
+
type: "rule",
|
|
73
|
+
rule: "must-assign",
|
|
74
|
+
description: `${emp.id} not assigned in week starting ${weekLabel} (staffing obligation)`,
|
|
75
|
+
targetValue: 1,
|
|
76
|
+
comparator: ">=",
|
|
77
|
+
day: weekLabel,
|
|
78
|
+
context: { memberIds: [emp.id], days: weekDays },
|
|
79
|
+
group,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=must-assign.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"must-assign.js","sourceRoot":"","sources":["../../../src/cpsat/rules/must-assign.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overtime-daily-multiplier.d.ts","sourceRoot":"","sources":["../../../src/cpsat/rules/overtime-daily-multiplier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"overtime-daily-multiplier.d.ts","sourceRoot":"","sources":["../../../src/cpsat/rules/overtime-daily-multiplier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,qBAAqB,CAAC;AAoB7E,QAAA,MAAM,6BAA6B;;;mfAMwC,CAAC;AAE5E,mEAAmE;AACnE,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAE1F;;;;GAIG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,6BAA6B,GACpC,eAAe,CAkIjB"}
|
|
@@ -2,6 +2,7 @@ import * as z from "zod";
|
|
|
2
2
|
import { COST_CATEGORY } from "../cost.js";
|
|
3
3
|
import { timeOfDayToMinutes, normalizeEndMinutes, unionMinutes, OBJECTIVE_WEIGHTS, } from "../utils.js";
|
|
4
4
|
import { entityScope, timeScope, parseEntityScope, parseTimeScope, resolveMembersFromScope, resolveActiveDaysFromScope, } from "./scope.types.js";
|
|
5
|
+
import { getHourlyRate, patternDurationMinutes } from "./cost-utils.js";
|
|
5
6
|
const OvertimeDailyMultiplierSchema = z
|
|
6
7
|
.object({
|
|
7
8
|
after: z.number().min(0),
|
|
@@ -9,18 +10,6 @@ const OvertimeDailyMultiplierSchema = z
|
|
|
9
10
|
})
|
|
10
11
|
.and(entityScope(["members", "roles", "skills"]))
|
|
11
12
|
.and(timeScope(["dateRange", "specificDates", "dayOfWeek", "recurring"]));
|
|
12
|
-
function getHourlyRate(emp) {
|
|
13
|
-
if (!emp.pay)
|
|
14
|
-
return undefined;
|
|
15
|
-
if ("hourlyRate" in emp.pay)
|
|
16
|
-
return emp.pay.hourlyRate;
|
|
17
|
-
return undefined;
|
|
18
|
-
}
|
|
19
|
-
function patternDurationMinutes(pattern) {
|
|
20
|
-
const start = timeOfDayToMinutes(pattern.startTime);
|
|
21
|
-
const end = normalizeEndMinutes(start, timeOfDayToMinutes(pattern.endTime));
|
|
22
|
-
return end - start;
|
|
23
|
-
}
|
|
24
13
|
/**
|
|
25
14
|
* Creates a daily overtime rate multiplier rule.
|
|
26
15
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overtime-daily-multiplier.js","sourceRoot":"","sources":["../../../src/cpsat/rules/overtime-daily-multiplier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"overtime-daily-multiplier.js","sourceRoot":"","sources":["../../../src/cpsat/rules/overtime-daily-multiplier.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overtime-daily-surcharge.d.ts","sourceRoot":"","sources":["../../../src/cpsat/rules/overtime-daily-surcharge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"overtime-daily-surcharge.d.ts","sourceRoot":"","sources":["../../../src/cpsat/rules/overtime-daily-surcharge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,qBAAqB,CAAC;AAoB7E,QAAA,MAAM,4BAA4B;;;mfAMyC,CAAC;AAE5E,kEAAkE;AAClE,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAExF;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,4BAA4B,GACnC,eAAe,CAmHjB"}
|
|
@@ -2,6 +2,7 @@ import * as z from "zod";
|
|
|
2
2
|
import { COST_CATEGORY } from "../cost.js";
|
|
3
3
|
import { timeOfDayToMinutes, normalizeEndMinutes, unionMinutes, OBJECTIVE_WEIGHTS, } from "../utils.js";
|
|
4
4
|
import { entityScope, timeScope, parseEntityScope, parseTimeScope, resolveMembersFromScope, resolveActiveDaysFromScope, } from "./scope.types.js";
|
|
5
|
+
import { patternDurationMinutes } from "./cost-utils.js";
|
|
5
6
|
const OvertimeDailySurchargeSchema = z
|
|
6
7
|
.object({
|
|
7
8
|
after: z.number().min(0),
|
|
@@ -9,11 +10,6 @@ const OvertimeDailySurchargeSchema = z
|
|
|
9
10
|
})
|
|
10
11
|
.and(entityScope(["members", "roles", "skills"]))
|
|
11
12
|
.and(timeScope(["dateRange", "specificDates", "dayOfWeek", "recurring"]));
|
|
12
|
-
function patternDurationMinutes(pattern) {
|
|
13
|
-
const start = timeOfDayToMinutes(pattern.startTime);
|
|
14
|
-
const end = normalizeEndMinutes(start, timeOfDayToMinutes(pattern.endTime));
|
|
15
|
-
return end - start;
|
|
16
|
-
}
|
|
17
13
|
/**
|
|
18
14
|
* Creates a daily overtime flat surcharge rule.
|
|
19
15
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overtime-daily-surcharge.js","sourceRoot":"","sources":["../../../src/cpsat/rules/overtime-daily-surcharge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"overtime-daily-surcharge.js","sourceRoot":"","sources":["../../../src/cpsat/rules/overtime-daily-surcharge.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,11 @@ declare const OvertimeTierSchema: z.ZodObject<{
|
|
|
4
4
|
after: z.ZodNumber;
|
|
5
5
|
factor: z.ZodNumber;
|
|
6
6
|
}, z.core.$strip>;
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* A single tier in a tiered overtime configuration.
|
|
9
|
+
*
|
|
10
|
+
* @category Cost Optimization
|
|
11
|
+
*/
|
|
8
12
|
export type OvertimeTier = z.infer<typeof OvertimeTierSchema>;
|
|
9
13
|
declare const OvertimeTieredMultiplierSchema: z.ZodIntersection<z.ZodIntersection<z.ZodObject<{
|
|
10
14
|
tiers: z.ZodArray<z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overtime-tiered-multiplier.d.ts","sourceRoot":"","sources":["../../../src/cpsat/rules/overtime-tiered-multiplier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"overtime-tiered-multiplier.d.ts","sourceRoot":"","sources":["../../../src/cpsat/rules/overtime-tiered-multiplier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,qBAAqB,CAAC;AAqB7E,QAAA,MAAM,kBAAkB;;;iBAGtB,CAAC;AAEH;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,QAAA,MAAM,8BAA8B;;;;;;mfAMuC,CAAC;AAE5E,oEAAoE;AACpE,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAE5F;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,8BAA8B,GACrC,eAAe,CA0PjB"}
|
|
@@ -3,6 +3,7 @@ import { DayOfWeekSchema } from "../../types.js";
|
|
|
3
3
|
import { COST_CATEGORY } from "../cost.js";
|
|
4
4
|
import { timeOfDayToMinutes, normalizeEndMinutes, splitIntoWeeks, unionMinutes, OBJECTIVE_WEIGHTS, } from "../utils.js";
|
|
5
5
|
import { entityScope, timeScope, parseEntityScope, parseTimeScope, resolveMembersFromScope, resolveActiveDaysFromScope, } from "./scope.types.js";
|
|
6
|
+
import { getHourlyRate, patternDurationMinutes } from "./cost-utils.js";
|
|
6
7
|
const OvertimeTierSchema = z.object({
|
|
7
8
|
after: z.number().min(0),
|
|
8
9
|
factor: z.number().min(1),
|
|
@@ -14,18 +15,6 @@ const OvertimeTieredMultiplierSchema = z
|
|
|
14
15
|
})
|
|
15
16
|
.and(entityScope(["members", "roles", "skills"]))
|
|
16
17
|
.and(timeScope(["dateRange", "specificDates", "dayOfWeek", "recurring"]));
|
|
17
|
-
function getHourlyRate(emp) {
|
|
18
|
-
if (!emp.pay)
|
|
19
|
-
return undefined;
|
|
20
|
-
if ("hourlyRate" in emp.pay)
|
|
21
|
-
return emp.pay.hourlyRate;
|
|
22
|
-
return undefined;
|
|
23
|
-
}
|
|
24
|
-
function patternDurationMinutes(pattern) {
|
|
25
|
-
const start = timeOfDayToMinutes(pattern.startTime);
|
|
26
|
-
const end = normalizeEndMinutes(start, timeOfDayToMinutes(pattern.endTime));
|
|
27
|
-
return end - start;
|
|
28
|
-
}
|
|
29
18
|
/**
|
|
30
19
|
* Creates a multi-threshold weekly overtime multiplier rule.
|
|
31
20
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overtime-tiered-multiplier.js","sourceRoot":"","sources":["../../../src/cpsat/rules/overtime-tiered-multiplier.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"overtime-tiered-multiplier.js","sourceRoot":"","sources":["../../../src/cpsat/rules/overtime-tiered-multiplier.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overtime-weekly-multiplier.d.ts","sourceRoot":"","sources":["../../../src/cpsat/rules/overtime-weekly-multiplier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"overtime-weekly-multiplier.d.ts","sourceRoot":"","sources":["../../../src/cpsat/rules/overtime-weekly-multiplier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,qBAAqB,CAAC;AAqB7E,QAAA,MAAM,8BAA8B;;;;mfAOuC,CAAC;AAE5E,oEAAoE;AACpE,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAE5F;;;;;;;;;;GAUG;AACH,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,8BAA8B,GACrC,eAAe,CAsKjB"}
|
|
@@ -3,6 +3,7 @@ import { DayOfWeekSchema } from "../../types.js";
|
|
|
3
3
|
import { COST_CATEGORY } from "../cost.js";
|
|
4
4
|
import { timeOfDayToMinutes, normalizeEndMinutes, splitIntoWeeks, unionMinutes, OBJECTIVE_WEIGHTS, } from "../utils.js";
|
|
5
5
|
import { entityScope, timeScope, parseEntityScope, parseTimeScope, resolveMembersFromScope, resolveActiveDaysFromScope, } from "./scope.types.js";
|
|
6
|
+
import { getHourlyRate, patternDurationMinutes } from "./cost-utils.js";
|
|
6
7
|
const OvertimeWeeklyMultiplierSchema = z
|
|
7
8
|
.object({
|
|
8
9
|
after: z.number().min(0),
|
|
@@ -11,18 +12,6 @@ const OvertimeWeeklyMultiplierSchema = z
|
|
|
11
12
|
})
|
|
12
13
|
.and(entityScope(["members", "roles", "skills"]))
|
|
13
14
|
.and(timeScope(["dateRange", "specificDates", "dayOfWeek", "recurring"]));
|
|
14
|
-
function getHourlyRate(emp) {
|
|
15
|
-
if (!emp.pay)
|
|
16
|
-
return undefined;
|
|
17
|
-
if ("hourlyRate" in emp.pay)
|
|
18
|
-
return emp.pay.hourlyRate;
|
|
19
|
-
return undefined;
|
|
20
|
-
}
|
|
21
|
-
function patternDurationMinutes(pattern) {
|
|
22
|
-
const start = timeOfDayToMinutes(pattern.startTime);
|
|
23
|
-
const end = normalizeEndMinutes(start, timeOfDayToMinutes(pattern.endTime));
|
|
24
|
-
return end - start;
|
|
25
|
-
}
|
|
26
15
|
/**
|
|
27
16
|
* Creates a weekly overtime rate multiplier rule.
|
|
28
17
|
*
|