dabke 0.83.0 → 0.84.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.
Files changed (330) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +22 -27
  3. package/dist/client.d.ts +39 -3
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js.map +1 -1
  6. package/dist/client.schemas.d.ts +118 -18
  7. package/dist/client.schemas.d.ts.map +1 -1
  8. package/dist/client.schemas.js +110 -6
  9. package/dist/client.schemas.js.map +1 -1
  10. package/dist/client.types.d.ts +63 -7
  11. package/dist/client.types.d.ts.map +1 -1
  12. package/dist/client.types.js.map +1 -1
  13. package/dist/cpsat/cost.d.ts +5 -2
  14. package/dist/cpsat/cost.d.ts.map +1 -1
  15. package/dist/cpsat/cost.js +13 -6
  16. package/dist/cpsat/cost.js.map +1 -1
  17. package/dist/cpsat/model-builder.d.ts +42 -61
  18. package/dist/cpsat/model-builder.d.ts.map +1 -1
  19. package/dist/cpsat/model-builder.js +451 -56
  20. package/dist/cpsat/model-builder.js.map +1 -1
  21. package/dist/cpsat/response.d.ts +19 -7
  22. package/dist/cpsat/response.d.ts.map +1 -1
  23. package/dist/cpsat/response.js +48 -9
  24. package/dist/cpsat/response.js.map +1 -1
  25. package/dist/cpsat/rule-descriptor.d.ts +250 -0
  26. package/dist/cpsat/rule-descriptor.d.ts.map +1 -0
  27. package/dist/cpsat/rule-descriptor.js +51 -0
  28. package/dist/cpsat/rule-descriptor.js.map +1 -0
  29. package/dist/cpsat/rules/artifacts.d.ts +9 -0
  30. package/dist/cpsat/rules/artifacts.d.ts.map +1 -0
  31. package/dist/cpsat/rules/artifacts.js +31 -0
  32. package/dist/cpsat/rules/artifacts.js.map +1 -0
  33. package/dist/cpsat/rules/assign-together.d.ts +18 -20
  34. package/dist/cpsat/rules/assign-together.d.ts.map +1 -1
  35. package/dist/cpsat/rules/assign-together.js +90 -54
  36. package/dist/cpsat/rules/assign-together.js.map +1 -1
  37. package/dist/cpsat/rules/assigned-day.d.ts +12 -0
  38. package/dist/cpsat/rules/assigned-day.d.ts.map +1 -0
  39. package/dist/cpsat/rules/assigned-day.js +43 -0
  40. package/dist/cpsat/rules/assigned-day.js.map +1 -0
  41. package/dist/cpsat/rules/assignment-priority.d.ts +15 -29
  42. package/dist/cpsat/rules/assignment-priority.d.ts.map +1 -1
  43. package/dist/cpsat/rules/assignment-priority.js +47 -50
  44. package/dist/cpsat/rules/assignment-priority.js.map +1 -1
  45. package/dist/cpsat/rules/assignment-terms.d.ts +6 -0
  46. package/dist/cpsat/rules/assignment-terms.d.ts.map +1 -0
  47. package/dist/cpsat/rules/assignment-terms.js +19 -0
  48. package/dist/cpsat/rules/assignment-terms.js.map +1 -0
  49. package/dist/cpsat/rules/concurrent-intervals.d.ts +19 -0
  50. package/dist/cpsat/rules/concurrent-intervals.d.ts.map +1 -0
  51. package/dist/cpsat/rules/concurrent-intervals.js +57 -0
  52. package/dist/cpsat/rules/concurrent-intervals.js.map +1 -0
  53. package/dist/cpsat/rules/cost-utils.d.ts +1 -3
  54. package/dist/cpsat/rules/cost-utils.d.ts.map +1 -1
  55. package/dist/cpsat/rules/cost-utils.js +0 -7
  56. package/dist/cpsat/rules/cost-utils.js.map +1 -1
  57. package/dist/cpsat/rules/day-cost-multiplier.d.ts +10 -10
  58. package/dist/cpsat/rules/day-cost-multiplier.d.ts.map +1 -1
  59. package/dist/cpsat/rules/day-cost-multiplier.js +88 -77
  60. package/dist/cpsat/rules/day-cost-multiplier.js.map +1 -1
  61. package/dist/cpsat/rules/day-cost-surcharge.d.ts +10 -10
  62. package/dist/cpsat/rules/day-cost-surcharge.d.ts.map +1 -1
  63. package/dist/cpsat/rules/day-cost-surcharge.js +76 -65
  64. package/dist/cpsat/rules/day-cost-surcharge.js.map +1 -1
  65. package/dist/cpsat/rules/index.d.ts +30 -24
  66. package/dist/cpsat/rules/index.d.ts.map +1 -1
  67. package/dist/cpsat/rules/index.js +30 -24
  68. package/dist/cpsat/rules/index.js.map +1 -1
  69. package/dist/cpsat/rules/location-preference.d.ts +14 -21
  70. package/dist/cpsat/rules/location-preference.d.ts.map +1 -1
  71. package/dist/cpsat/rules/location-preference.js +45 -45
  72. package/dist/cpsat/rules/location-preference.js.map +1 -1
  73. package/dist/cpsat/rules/max-concurrent-assignments.d.ts +46 -0
  74. package/dist/cpsat/rules/max-concurrent-assignments.d.ts.map +1 -0
  75. package/dist/cpsat/rules/max-concurrent-assignments.js +121 -0
  76. package/dist/cpsat/rules/max-concurrent-assignments.js.map +1 -0
  77. package/dist/cpsat/rules/max-consecutive-days.d.ts +18 -17
  78. package/dist/cpsat/rules/max-consecutive-days.d.ts.map +1 -1
  79. package/dist/cpsat/rules/max-consecutive-days.js +67 -66
  80. package/dist/cpsat/rules/max-consecutive-days.js.map +1 -1
  81. package/dist/cpsat/rules/max-days-of-week-per-period.d.ts +45 -0
  82. package/dist/cpsat/rules/max-days-of-week-per-period.d.ts.map +1 -0
  83. package/dist/cpsat/rules/max-days-of-week-per-period.js +95 -0
  84. package/dist/cpsat/rules/max-days-of-week-per-period.js.map +1 -0
  85. package/dist/cpsat/rules/max-days-week.d.ts +17 -31
  86. package/dist/cpsat/rules/max-days-week.d.ts.map +1 -1
  87. package/dist/cpsat/rules/max-days-week.js +69 -81
  88. package/dist/cpsat/rules/max-days-week.js.map +1 -1
  89. package/dist/cpsat/rules/max-hours-day.d.ts +14 -31
  90. package/dist/cpsat/rules/max-hours-day.d.ts.map +1 -1
  91. package/dist/cpsat/rules/max-hours-day.js +56 -72
  92. package/dist/cpsat/rules/max-hours-day.js.map +1 -1
  93. package/dist/cpsat/rules/max-hours-week.d.ts +15 -31
  94. package/dist/cpsat/rules/max-hours-week.d.ts.map +1 -1
  95. package/dist/cpsat/rules/max-hours-week.js +60 -75
  96. package/dist/cpsat/rules/max-hours-week.js.map +1 -1
  97. package/dist/cpsat/rules/max-shifts-day.d.ts +17 -33
  98. package/dist/cpsat/rules/max-shifts-day.d.ts.map +1 -1
  99. package/dist/cpsat/rules/max-shifts-day.js +57 -73
  100. package/dist/cpsat/rules/max-shifts-day.js.map +1 -1
  101. package/dist/cpsat/rules/min-consecutive-days.d.ts +18 -18
  102. package/dist/cpsat/rules/min-consecutive-days.d.ts.map +1 -1
  103. package/dist/cpsat/rules/min-consecutive-days.js +123 -94
  104. package/dist/cpsat/rules/min-consecutive-days.js.map +1 -1
  105. package/dist/cpsat/rules/min-days-of-week-per-period.d.ts +35 -0
  106. package/dist/cpsat/rules/min-days-of-week-per-period.d.ts.map +1 -0
  107. package/dist/cpsat/rules/min-days-of-week-per-period.js +108 -0
  108. package/dist/cpsat/rules/min-days-of-week-per-period.js.map +1 -0
  109. package/dist/cpsat/rules/min-days-week.d.ts +13 -26
  110. package/dist/cpsat/rules/min-days-week.d.ts.map +1 -1
  111. package/dist/cpsat/rules/min-days-week.js +85 -74
  112. package/dist/cpsat/rules/min-days-week.js.map +1 -1
  113. package/dist/cpsat/rules/min-hours-day.d.ts +14 -17
  114. package/dist/cpsat/rules/min-hours-day.d.ts.map +1 -1
  115. package/dist/cpsat/rules/min-hours-day.js +72 -54
  116. package/dist/cpsat/rules/min-hours-day.js.map +1 -1
  117. package/dist/cpsat/rules/min-hours-week.d.ts +15 -18
  118. package/dist/cpsat/rules/min-hours-week.d.ts.map +1 -1
  119. package/dist/cpsat/rules/min-hours-week.js +75 -57
  120. package/dist/cpsat/rules/min-hours-week.js.map +1 -1
  121. package/dist/cpsat/rules/min-rest-between-shifts.d.ts +14 -17
  122. package/dist/cpsat/rules/min-rest-between-shifts.d.ts.map +1 -1
  123. package/dist/cpsat/rules/min-rest-between-shifts.js +148 -138
  124. package/dist/cpsat/rules/min-rest-between-shifts.js.map +1 -1
  125. package/dist/cpsat/rules/minimize-cost.d.ts +2 -18
  126. package/dist/cpsat/rules/minimize-cost.d.ts.map +1 -1
  127. package/dist/cpsat/rules/minimize-cost.js +151 -163
  128. package/dist/cpsat/rules/minimize-cost.js.map +1 -1
  129. package/dist/cpsat/rules/must-assign.d.ts +5 -42
  130. package/dist/cpsat/rules/must-assign.d.ts.map +1 -1
  131. package/dist/cpsat/rules/must-assign.js +43 -75
  132. package/dist/cpsat/rules/must-assign.js.map +1 -1
  133. package/dist/cpsat/rules/overtime-daily-multiplier.d.ts +6 -10
  134. package/dist/cpsat/rules/overtime-daily-multiplier.d.ts.map +1 -1
  135. package/dist/cpsat/rules/overtime-daily-multiplier.js +118 -112
  136. package/dist/cpsat/rules/overtime-daily-multiplier.js.map +1 -1
  137. package/dist/cpsat/rules/overtime-daily-surcharge.d.ts +6 -11
  138. package/dist/cpsat/rules/overtime-daily-surcharge.d.ts.map +1 -1
  139. package/dist/cpsat/rules/overtime-daily-surcharge.js +104 -99
  140. package/dist/cpsat/rules/overtime-daily-surcharge.js.map +1 -1
  141. package/dist/cpsat/rules/overtime-tiered-multiplier.d.ts +9 -21
  142. package/dist/cpsat/rules/overtime-tiered-multiplier.d.ts.map +1 -1
  143. package/dist/cpsat/rules/overtime-tiered-multiplier.js +181 -199
  144. package/dist/cpsat/rules/overtime-tiered-multiplier.js.map +1 -1
  145. package/dist/cpsat/rules/overtime-weekly-multiplier.d.ts +13 -12
  146. package/dist/cpsat/rules/overtime-weekly-multiplier.d.ts.map +1 -1
  147. package/dist/cpsat/rules/overtime-weekly-multiplier.js +143 -143
  148. package/dist/cpsat/rules/overtime-weekly-multiplier.js.map +1 -1
  149. package/dist/cpsat/rules/overtime-weekly-surcharge.d.ts +7 -11
  150. package/dist/cpsat/rules/overtime-weekly-surcharge.d.ts.map +1 -1
  151. package/dist/cpsat/rules/overtime-weekly-surcharge.js +124 -119
  152. package/dist/cpsat/rules/overtime-weekly-surcharge.js.map +1 -1
  153. package/dist/cpsat/rules/pattern-eligibility.d.ts +6 -0
  154. package/dist/cpsat/rules/pattern-eligibility.d.ts.map +1 -0
  155. package/dist/cpsat/rules/pattern-eligibility.js +16 -0
  156. package/dist/cpsat/rules/pattern-eligibility.js.map +1 -0
  157. package/dist/cpsat/rules/pattern-time.d.ts +5 -0
  158. package/dist/cpsat/rules/pattern-time.d.ts.map +1 -0
  159. package/dist/cpsat/rules/pattern-time.js +20 -0
  160. package/dist/cpsat/rules/pattern-time.js.map +1 -0
  161. package/dist/cpsat/rules/registry.d.ts +217 -30
  162. package/dist/cpsat/rules/registry.d.ts.map +1 -1
  163. package/dist/cpsat/rules/registry.js +98 -34
  164. package/dist/cpsat/rules/registry.js.map +1 -1
  165. package/dist/cpsat/rules/resolver.d.ts +9 -7
  166. package/dist/cpsat/rules/resolver.d.ts.map +1 -1
  167. package/dist/cpsat/rules/resolver.js +19 -18
  168. package/dist/cpsat/rules/resolver.js.map +1 -1
  169. package/dist/cpsat/rules/role-preference.d.ts +24 -0
  170. package/dist/cpsat/rules/role-preference.d.ts.map +1 -0
  171. package/dist/cpsat/rules/role-preference.js +72 -0
  172. package/dist/cpsat/rules/role-preference.js.map +1 -0
  173. package/dist/cpsat/rules/rules.types.d.ts +90 -17
  174. package/dist/cpsat/rules/rules.types.d.ts.map +1 -1
  175. package/dist/cpsat/rules/scope.types.d.ts +24 -11
  176. package/dist/cpsat/rules/scope.types.d.ts.map +1 -1
  177. package/dist/cpsat/rules/scope.types.js +14 -19
  178. package/dist/cpsat/rules/scope.types.js.map +1 -1
  179. package/dist/cpsat/rules/target-days-week.d.ts +31 -0
  180. package/dist/cpsat/rules/target-days-week.d.ts.map +1 -0
  181. package/dist/cpsat/rules/target-days-week.js +80 -0
  182. package/dist/cpsat/rules/target-days-week.js.map +1 -0
  183. package/dist/cpsat/rules/target-peak-concurrent-assignments.d.ts +33 -0
  184. package/dist/cpsat/rules/target-peak-concurrent-assignments.d.ts.map +1 -0
  185. package/dist/cpsat/rules/target-peak-concurrent-assignments.js +146 -0
  186. package/dist/cpsat/rules/target-peak-concurrent-assignments.js.map +1 -0
  187. package/dist/cpsat/rules/time-cost-surcharge.d.ts +15 -14
  188. package/dist/cpsat/rules/time-cost-surcharge.d.ts.map +1 -1
  189. package/dist/cpsat/rules/time-cost-surcharge.js +82 -96
  190. package/dist/cpsat/rules/time-cost-surcharge.js.map +1 -1
  191. package/dist/cpsat/rules/time-off.d.ts +21 -57
  192. package/dist/cpsat/rules/time-off.d.ts.map +1 -1
  193. package/dist/cpsat/rules/time-off.js +114 -127
  194. package/dist/cpsat/rules/time-off.js.map +1 -1
  195. package/dist/cpsat/rules/variables.d.ts +4 -0
  196. package/dist/cpsat/rules/variables.d.ts.map +1 -0
  197. package/dist/cpsat/rules/variables.js +10 -0
  198. package/dist/cpsat/rules/variables.js.map +1 -0
  199. package/dist/cpsat/rules.d.ts +20 -3
  200. package/dist/cpsat/rules.d.ts.map +1 -1
  201. package/dist/cpsat/rules.js +19 -2
  202. package/dist/cpsat/rules.js.map +1 -1
  203. package/dist/cpsat/semantic-time.d.ts +7 -6
  204. package/dist/cpsat/semantic-time.d.ts.map +1 -1
  205. package/dist/cpsat/semantic-time.js +15 -28
  206. package/dist/cpsat/semantic-time.js.map +1 -1
  207. package/dist/cpsat/types.d.ts +47 -4
  208. package/dist/cpsat/types.d.ts.map +1 -1
  209. package/dist/cpsat/types.js +24 -1
  210. package/dist/cpsat/types.js.map +1 -1
  211. package/dist/cpsat/utils.d.ts +23 -6
  212. package/dist/cpsat/utils.d.ts.map +1 -1
  213. package/dist/cpsat/utils.js +76 -15
  214. package/dist/cpsat/utils.js.map +1 -1
  215. package/dist/cpsat/validation-reporter.d.ts +6 -2
  216. package/dist/cpsat/validation-reporter.d.ts.map +1 -1
  217. package/dist/cpsat/validation-reporter.js +122 -10
  218. package/dist/cpsat/validation-reporter.js.map +1 -1
  219. package/dist/cpsat/validation.types.d.ts +21 -10
  220. package/dist/cpsat/validation.types.d.ts.map +1 -1
  221. package/dist/datetime.utils.d.ts +7 -13
  222. package/dist/datetime.utils.d.ts.map +1 -1
  223. package/dist/datetime.utils.js +29 -36
  224. package/dist/datetime.utils.js.map +1 -1
  225. package/dist/index.d.ts +12 -8
  226. package/dist/index.d.ts.map +1 -1
  227. package/dist/index.js +8 -3
  228. package/dist/index.js.map +1 -1
  229. package/dist/schedule/cost.d.ts +48 -60
  230. package/dist/schedule/cost.d.ts.map +1 -1
  231. package/dist/schedule/cost.js +15 -51
  232. package/dist/schedule/cost.js.map +1 -1
  233. package/dist/schedule/coverage.d.ts +57 -28
  234. package/dist/schedule/coverage.d.ts.map +1 -1
  235. package/dist/schedule/coverage.js +24 -1
  236. package/dist/schedule/coverage.js.map +1 -1
  237. package/dist/schedule/definition.d.ts +138 -19
  238. package/dist/schedule/definition.d.ts.map +1 -1
  239. package/dist/schedule/definition.js +99 -90
  240. package/dist/schedule/definition.js.map +1 -1
  241. package/dist/schedule/index.d.ts +4 -4
  242. package/dist/schedule/index.d.ts.map +1 -1
  243. package/dist/schedule/index.js +2 -2
  244. package/dist/schedule/index.js.map +1 -1
  245. package/dist/schedule/rules.d.ts +438 -113
  246. package/dist/schedule/rules.d.ts.map +1 -1
  247. package/dist/schedule/rules.js +310 -108
  248. package/dist/schedule/rules.js.map +1 -1
  249. package/dist/schedule/shift-patterns.d.ts +0 -17
  250. package/dist/schedule/shift-patterns.d.ts.map +1 -1
  251. package/dist/schedule/shift-patterns.js +0 -17
  252. package/dist/schedule/shift-patterns.js.map +1 -1
  253. package/dist/schedule/time-periods.d.ts +37 -27
  254. package/dist/schedule/time-periods.d.ts.map +1 -1
  255. package/dist/schedule/time-periods.js +37 -27
  256. package/dist/schedule/time-periods.js.map +1 -1
  257. package/dist/types.d.ts +67 -3
  258. package/dist/types.d.ts.map +1 -1
  259. package/dist/types.js +64 -0
  260. package/dist/types.js.map +1 -1
  261. package/package.json +8 -9
  262. package/solver/src/solver/models.py +41 -4
  263. package/solver/src/solver/solver.py +546 -157
  264. package/solver/tests/test_solver.py +363 -7
  265. package/src/client.schemas.ts +127 -10
  266. package/src/client.ts +3 -0
  267. package/src/client.types.ts +73 -7
  268. package/src/cpsat/cost.ts +17 -7
  269. package/src/cpsat/model-builder.ts +614 -129
  270. package/src/cpsat/response.ts +57 -13
  271. package/src/cpsat/rule-descriptor.ts +311 -0
  272. package/src/cpsat/rules/artifacts.ts +56 -0
  273. package/src/cpsat/rules/assign-together.ts +104 -69
  274. package/src/cpsat/rules/assigned-day.ts +70 -0
  275. package/src/cpsat/rules/assignment-priority.ts +54 -58
  276. package/src/cpsat/rules/assignment-terms.ts +43 -0
  277. package/src/cpsat/rules/concurrent-intervals.ts +93 -0
  278. package/src/cpsat/rules/cost-utils.ts +1 -9
  279. package/src/cpsat/rules/day-cost-multiplier.ts +101 -81
  280. package/src/cpsat/rules/day-cost-surcharge.ts +91 -70
  281. package/src/cpsat/rules/index.ts +30 -24
  282. package/src/cpsat/rules/location-preference.ts +47 -52
  283. package/src/cpsat/rules/max-concurrent-assignments.ts +170 -0
  284. package/src/cpsat/rules/max-consecutive-days.ts +74 -91
  285. package/src/cpsat/rules/max-days-of-week-per-period.ts +127 -0
  286. package/src/cpsat/rules/max-days-week.ts +89 -115
  287. package/src/cpsat/rules/max-hours-day.ts +64 -84
  288. package/src/cpsat/rules/max-hours-week.ts +74 -90
  289. package/src/cpsat/rules/max-shifts-day.ts +65 -85
  290. package/src/cpsat/rules/min-consecutive-days.ts +161 -127
  291. package/src/cpsat/rules/min-days-of-week-per-period.ts +144 -0
  292. package/src/cpsat/rules/min-days-week.ts +93 -91
  293. package/src/cpsat/rules/min-hours-day.ts +79 -58
  294. package/src/cpsat/rules/min-hours-week.ts +87 -62
  295. package/src/cpsat/rules/min-rest-between-shifts.ts +191 -178
  296. package/src/cpsat/rules/minimize-cost.ts +175 -188
  297. package/src/cpsat/rules/must-assign.ts +44 -81
  298. package/src/cpsat/rules/overtime-daily-multiplier.ts +158 -140
  299. package/src/cpsat/rules/overtime-daily-surcharge.ts +141 -126
  300. package/src/cpsat/rules/overtime-tiered-multiplier.ts +234 -253
  301. package/src/cpsat/rules/overtime-weekly-multiplier.ts +183 -175
  302. package/src/cpsat/rules/overtime-weekly-surcharge.ts +161 -150
  303. package/src/cpsat/rules/pattern-eligibility.ts +26 -0
  304. package/src/cpsat/rules/pattern-time.ts +30 -0
  305. package/src/cpsat/rules/registry.ts +140 -62
  306. package/src/cpsat/rules/resolver.ts +58 -30
  307. package/src/cpsat/rules/role-preference.ts +92 -0
  308. package/src/cpsat/rules/rules.types.ts +89 -17
  309. package/src/cpsat/rules/scope.types.ts +31 -26
  310. package/src/cpsat/rules/target-days-week.ts +105 -0
  311. package/src/cpsat/rules/target-peak-concurrent-assignments.ts +212 -0
  312. package/src/cpsat/rules/time-cost-surcharge.ts +116 -122
  313. package/src/cpsat/rules/time-off.ts +154 -163
  314. package/src/cpsat/rules/variables.ts +11 -0
  315. package/src/cpsat/rules.ts +43 -17
  316. package/src/cpsat/semantic-time.ts +29 -43
  317. package/src/cpsat/types.ts +53 -4
  318. package/src/cpsat/utils.ts +92 -20
  319. package/src/cpsat/validation-reporter.ts +170 -19
  320. package/src/cpsat/validation.types.ts +22 -11
  321. package/src/datetime.utils.ts +45 -44
  322. package/src/index.ts +64 -12
  323. package/src/schedule/cost.ts +40 -61
  324. package/src/schedule/coverage.ts +57 -28
  325. package/src/schedule/definition.ts +565 -76
  326. package/src/schedule/index.ts +23 -3
  327. package/src/schedule/rules.ts +631 -132
  328. package/src/schedule/shift-patterns.ts +0 -17
  329. package/src/schedule/time-periods.ts +37 -27
  330. package/src/types.ts +114 -2
@@ -1 +1 @@
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
+ {"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;AACzB,OAAO,EAAE,aAAa,EAAuC,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAI7D,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EACL,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,uBAAuB,EACvB,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAE7F,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC;KACxC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,QAAQ,EAAE,cAAc;CACzB,CAAC;KACD,GAAG,CAAC,WAAW,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAOpD;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,oBAAoB,CAAC;IACrE,IAAI,EAAE,yBAAyB;IAC/B,MAAM,EAAE,0BAA0B;IAClC,OAAO,CAAC,MAAM,EAAE,GAAG;QACjB,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QACnC,MAAM,UAAU,GAAG,KAAK,GAAG,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,SAAS,CACrB,2BAA2B,KAAK,EAAE,EAClC,OAAO,KAAK,uBAAuB,EACnC,KAAK,CACN,CAAC;QACF,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAEjE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC3C,MAAM,eAAe,GAAmB,EAAE,CAAC;YAE3C,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;gBAC9D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChC,IAAI,CAAC,IAAI;oBAAE,SAAS;gBAEpB,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC;gBACzB,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBACvC,IAAI,OAAO;oBAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAErC,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;oBACzC,IACE,CAAC,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC;wBAC3C,CAAC,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,EACxC,CAAC;wBACD,SAAS;oBACX,CAAC;oBACD,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;oBAEzC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;wBAC7B,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;4BACzC,IACE,CAAC,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC;gCAC3C,CAAC,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC;gCACxC,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,EACtD,CAAC;gCACD,SAAS;4BACX,CAAC;4BAED,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;4BAClF,MAAM,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC;4BAC1B,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,UAAU;gCAAE,SAAS;4BAE3C,MAAM,WAAW,GAAG,GAAG,MAAM,CAAC,EAAE,UAAU,KAAK,kBAAkB,QAAQ,CAAC,EAAE,OAAO,IAAI,CAAC,GAAG,QAAQ,QAAQ,CAAC,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;4BAChI,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;4BACvE,MAAM,YAAY,GAAG,2BAA2B,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;4BAClH,MAAM,KAAK,GAAG;gCACZ,EAAE,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;gCAClE,EAAE,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;6BACnE,CAAC;4BAEF,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;gCAC7B,eAAe,CAAC,IAAI,CAClB,cAAc,CAAC;oCACb,KAAK;oCACL,WAAW;oCACX,OAAO;oCACP,UAAU,EAAE,gBAAgB,CAAC,YAAY,CAAC;oCAC1C,KAAK;oCACL,UAAU,EAAE,IAAI;oCAChB,WAAW,EAAE,CAAC;iCACf,CAAC,CACH,CAAC;4BACJ,CAAC;iCAAM,CAAC;gCACN,eAAe,CAAC,IAAI,CAClB,cAAc,CAAC;oCACb,KAAK;oCACL,WAAW;oCACX,OAAO;oCACP,UAAU,EAAE,gBAAgB,EAAE;oCAC9B,KAAK;oCACL,UAAU,EAAE,IAAI;oCAChB,WAAW,EAAE,CAAC;oCACd,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC;oCACpC,YAAY;iCACb,CAAC,CACH,CAAC;4BACJ,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,eAAe,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,MAAM,kBAAkB,GACtB,QAAQ,KAAK,WAAW;YACtB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE;oBACE,IAAI,EAAE,qBAA8B;oBACpC,GAAG,CACD,WAA+C,EAC/C,QAA4B,EAC5B,iBAAqC;wBAErC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,KAAK,EAAE;4BACtD,GAAG,iBAAiB,CAAC,OAAO;yBAC7B,CAAC,CAAC;wBACH,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;4BAAE,OAAO;wBAE1C,MAAM,SAAS,GAAG,IAAI,GAAG,CACvB,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAkB,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAU,CAAC,CAC5E,CAAC;wBACF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;wBACvE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqC,CAAC;wBAE9D,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;4BACrC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;gCAAE,SAAS;4BAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;4BACrD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;4BACtB,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;wBAC1C,CAAC;wBAED,KAAK,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC,IAAI,QAAQ,EAAE,CAAC;4BACrD,MAAM,MAAM,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gCAC7D,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;oCAAE,OAAO,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gCACjE,OAAO,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;4BAClF,CAAC,CAAC,CAAC;4BAEH,IAAI,QAAQ,GAAG,KAAK,CAAC;4BACrB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;gCACvD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAE,CAAC;gCAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC;gCAChC,MAAM,UAAU,GAAG,mBAAmB,CACpC,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,EACrC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CACpC,CAAC;gCACF,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gCACrD,MAAM,GAAG,GACP,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG;oCACtB,CAAC,CAAC,SAAS,GAAG,UAAU;oCACxB,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE;wCACvD,UAAU;wCACV,SAAS,CAAC;gCAEhB,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,UAAU;oCAAE,SAAS;gCAC3C,QAAQ,GAAG,IAAI,CAAC;4BAClB,CAAC;4BAED,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCACnC,QAAQ,CAAC,gBAAgB,CAAC;oCACxB,IAAI,EAAE,yBAAyB;oCAC/B,OAAO,EAAE,GAAG,QAAQ,QAAQ,KAAK,4BAA4B;oCAC7D,OAAO,EAAE;wCACP,SAAS,EAAE,CAAC,QAAQ,CAAC;wCACrB,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;qCAC/D;oCACD,KAAK;iCACN,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC;oBACH,CAAC;iBACF;aACF,CAAC;QAER,OAAO;YACL,IAAI,EAAE,yBAAyB;YAC/B,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,kBAAkB,CAAC;SACjD,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,SAAS,iBAAiB,CAAC,OAG1B;IACC,OAAO,mBAAmB,CACxB,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,EACrC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CACpC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAmB,EAAE,IAAmB;IAC7D,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,WAAW,CAClB,IAAgB,EAChB,IAAgB,EAChB,MAA8C;IAE9C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,IAAI,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACzD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;AACrE,CAAC"}
@@ -1,23 +1,7 @@
1
1
  import type * as z from "zod";
2
- import type { CompilationRule } from "../model-builder.js";
3
2
  declare const MinimizeCostSchema: z.ZodIntersection<z.ZodType<import("./scope.types.js").EntityScopeType<"members" | "roles" | "skills">, unknown, z.core.$ZodTypeInternals<import("./scope.types.js").EntityScopeType<"members" | "roles" | "skills">, unknown>>, z.ZodType<import("./scope.types.js").OptionalTimeScopeType<"dateRange" | "dayOfWeek" | "specificDates" | "recurring">, unknown, z.core.$ZodTypeInternals<import("./scope.types.js").OptionalTimeScopeType<"dateRange" | "dayOfWeek" | "specificDates" | "recurring">, unknown>>>;
4
- /** Configuration for {@link createMinimizeCostRule}. */
3
+ /** Configuration for {@link minimizeCostRuleDescriptor}. */
5
4
  export type MinimizeCostConfig = z.infer<typeof MinimizeCostSchema>;
6
- /**
7
- * Creates the minimize-cost rule.
8
- *
9
- * **Hourly members:** adds a penalty proportional to
10
- * `hourlyRate * shiftDurationMinutes / 60` for each assignment.
11
- *
12
- * **Salaried members:** zero marginal cost up to their contracted hours.
13
- * A boolean variable tracks whether the member has any assignment in a
14
- * given week. When active, their full weekly salary (`annual / 52`) is
15
- * added as a penalty. This causes the solver to load work onto salaried
16
- * members (who are "free" once activated) before hourly workers.
17
- *
18
- * Computes a normalization factor and stores it on the model builder's
19
- * `costContext` so modifier rules can use the same scale.
20
- */
21
- export declare function createMinimizeCostRule(config: MinimizeCostConfig): CompilationRule;
5
+ export declare const minimizeCostRuleDescriptor: import("../rule-descriptor.js").RuleDescriptor<"minimize-cost", import("./scope.types.js").EntityScopeType<"members" | "roles" | "skills"> & import("./scope.types.js").OptionalTimeScopeType<"dateRange" | "dayOfWeek" | "specificDates" | "recurring">>;
22
6
  export {};
23
7
  //# sourceMappingURL=minimize-cost.d.ts.map
@@ -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;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
+ {"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;AAiB9B,QAAA,MAAM,kBAAkB,mfAEvB,CAAC;AAEF,4DAA4D;AAC5D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,eAAO,MAAM,0BAA0B,2PAyLrC,CAAC"}
@@ -1,185 +1,173 @@
1
+ import { defineRuleDescriptor } from "../rule-descriptor.js";
1
2
  import { COST_CATEGORY } from "../cost.js";
2
3
  import { OBJECTIVE_WEIGHTS, splitIntoWeeks } from "../utils.js";
3
- import { entityScope, timeScope, parseEntityScope, parseTimeScope, resolveMembersFromScope, resolveActiveDaysFromScope, } from "./scope.types.js";
4
- import { getHourlyRate, getSalariedPay, patternDurationMinutes } from "./cost-utils.js";
4
+ import { entityScope, parseEntityScope, parseTimeScope, resolveActiveDaysFromScope, resolveMembersFromScope, timeScope, } from "./scope.types.js";
5
+ import { getHourlyRate, getSalariedPay } from "./cost-utils.js";
6
+ import { patternDurationMinutes } from "./pattern-time.js";
5
7
  const MinimizeCostSchema = entityScope(["members", "roles", "skills"]).and(timeScope(["dateRange", "specificDates", "dayOfWeek", "recurring"]));
6
- /**
7
- * Creates the minimize-cost rule.
8
- *
9
- * **Hourly members:** adds a penalty proportional to
10
- * `hourlyRate * shiftDurationMinutes / 60` for each assignment.
11
- *
12
- * **Salaried members:** zero marginal cost up to their contracted hours.
13
- * A boolean variable tracks whether the member has any assignment in a
14
- * given week. When active, their full weekly salary (`annual / 52`) is
15
- * added as a penalty. This causes the solver to load work onto salaried
16
- * members (who are "free" once activated) before hourly workers.
17
- *
18
- * Computes a normalization factor and stores it on the model builder's
19
- * `costContext` so modifier rules can use the same scale.
20
- */
21
- export function createMinimizeCostRule(config) {
22
- const parsed = MinimizeCostSchema.parse(config);
23
- const entityScopeValue = parseEntityScope(parsed);
24
- const timeScopeValue = parseTimeScope(parsed);
25
- let resolvedWeekStartsOn = "monday";
26
- return {
27
- compile(b) {
28
- resolvedWeekStartsOn = b.weekStartsOn;
29
- const targetMembers = resolveMembersFromScope(entityScopeValue, b.members);
30
- const activeDays = resolveActiveDaysFromScope(timeScopeValue, b.days);
31
- if (targetMembers.length === 0 || activeDays.length === 0)
32
- return;
33
- // Compute normalization factor: max raw cost of any single assignment
34
- // (hourly) or weekly salary (salaried)
35
- let maxRawCost = 0;
36
- for (const member of targetMembers) {
37
- const rate = getHourlyRate(member);
38
- if (rate !== undefined) {
39
- for (const pattern of b.shiftPatterns) {
40
- if (!b.canAssign(member, pattern))
41
- continue;
42
- const duration = patternDurationMinutes(pattern);
43
- const rawCost = (rate * duration) / 60;
44
- if (rawCost > maxRawCost)
45
- maxRawCost = rawCost;
46
- }
47
- }
48
- const salaried = getSalariedPay(member);
49
- if (salaried !== undefined) {
50
- const weeklyCost = salaried.annual / 52;
51
- if (weeklyCost > maxRawCost)
52
- maxRawCost = weeklyCost;
53
- }
54
- }
55
- if (maxRawCost === 0)
56
- return;
57
- const normalizationFactor = maxRawCost / OBJECTIVE_WEIGHTS.COST;
58
- b.costContext = {
59
- normalizationFactor,
60
- active: true,
61
- };
62
- // Add penalty terms for hourly members
63
- for (const member of targetMembers) {
64
- const rate = getHourlyRate(member);
65
- if (rate !== undefined) {
66
- for (const pattern of b.shiftPatterns) {
67
- if (!b.canAssign(member, pattern))
68
- continue;
69
- for (const day of activeDays) {
70
- if (!b.patternAvailableOnDay(pattern, day))
8
+ export const minimizeCostRuleDescriptor = defineRuleDescriptor({
9
+ name: "minimize-cost",
10
+ schema: MinimizeCostSchema,
11
+ compile(config) {
12
+ const entityScopeValue = parseEntityScope(config);
13
+ const timeScopeValue = parseTimeScope(config);
14
+ let resolvedWeekStartsOn = "monday";
15
+ const costArtifact = {
16
+ kind: "cost",
17
+ validation: {
18
+ strategy: "skip",
19
+ category: "no-meaningful-feedback",
20
+ rationale: "Cost optimization influences the objective and contributes post-solve accounting, not validation feedback.",
21
+ },
22
+ compileObjective(builder) {
23
+ resolvedWeekStartsOn = builder.weekStartsOn;
24
+ const targetMembers = resolveMembersFromScope(entityScopeValue, builder.members);
25
+ const activeDays = resolveActiveDaysFromScope(timeScopeValue, builder.days);
26
+ if (targetMembers.length === 0 || activeDays.length === 0)
27
+ return;
28
+ let maxRawCost = 0;
29
+ for (const member of targetMembers) {
30
+ const rate = getHourlyRate(member);
31
+ if (rate !== undefined) {
32
+ for (const pattern of builder.shiftPatterns) {
33
+ if (!builder.canAssign(member, pattern))
71
34
  continue;
72
35
  const duration = patternDurationMinutes(pattern);
73
36
  const rawCost = (rate * duration) / 60;
74
- const normalizedPenalty = rawCost / normalizationFactor;
75
- b.addPenalty(b.assignment(member.id, pattern.id, day), Math.max(1, normalizedPenalty));
37
+ if (rawCost > maxRawCost)
38
+ maxRawCost = rawCost;
76
39
  }
77
40
  }
78
- continue;
41
+ const salaried = getSalariedPay(member);
42
+ if (salaried !== undefined) {
43
+ const weeklyCost = salaried.annual / 52;
44
+ if (weeklyCost > maxRawCost)
45
+ maxRawCost = weeklyCost;
46
+ }
79
47
  }
80
- // Salaried members: weekly fixed cost when active
81
- const salaried = getSalariedPay(member);
82
- if (salaried === undefined)
83
- continue;
84
- const weeklyCost = salaried.annual / 52;
85
- const normalizedWeeklyCost = weeklyCost / normalizationFactor;
86
- const weeks = splitIntoWeeks(activeDays, b.weekStartsOn);
87
- for (const [weekIdx, weekDays] of weeks.entries()) {
88
- // Collect all assignment vars for this member this week
89
- const weekAssignmentVars = [];
90
- for (const day of weekDays) {
91
- for (const pattern of b.shiftPatterns) {
92
- if (!b.canAssign(member, pattern))
48
+ if (maxRawCost === 0)
49
+ return;
50
+ const normalizationFactor = maxRawCost / OBJECTIVE_WEIGHTS.COST;
51
+ builder.costContext = {
52
+ normalizationFactor,
53
+ active: true,
54
+ };
55
+ for (const member of targetMembers) {
56
+ const rate = getHourlyRate(member);
57
+ if (rate !== undefined) {
58
+ for (const pattern of builder.shiftPatterns) {
59
+ if (!builder.canAssign(member, pattern))
93
60
  continue;
94
- if (!b.patternAvailableOnDay(pattern, day))
95
- continue;
96
- weekAssignmentVars.push(b.assignment(member.id, pattern.id, day));
61
+ for (const day of activeDays) {
62
+ if (!builder.patternAvailableOnDay(pattern, day))
63
+ continue;
64
+ const duration = patternDurationMinutes(pattern);
65
+ const rawCost = (rate * duration) / 60;
66
+ const normalizedPenalty = rawCost / normalizationFactor;
67
+ builder.addPenalty(builder.assignment(member.id, pattern.id, day), Math.max(1, normalizedPenalty));
68
+ }
97
69
  }
70
+ continue;
98
71
  }
99
- if (weekAssignmentVars.length === 0)
72
+ const salaried = getSalariedPay(member);
73
+ if (salaried === undefined)
100
74
  continue;
101
- // Bool var: true if this salaried member works any shift this week
102
- const activeVar = b.boolVar(`active:cost:${member.id}:w${weekIdx}`);
103
- // If any assignment is true, activeVar must be true
104
- // activeVar OR NOT(assignment_1) OR NOT(assignment_2) OR ...
105
- // This is equivalent to: for each assignment, assignment => activeVar
106
- for (const assignVar of weekAssignmentVars) {
107
- b.addImplication(assignVar, activeVar);
75
+ const weeklyCost = salaried.annual / 52;
76
+ const normalizedWeeklyCost = weeklyCost / normalizationFactor;
77
+ const weeks = splitIntoWeeks(activeDays, builder.weekStartsOn);
78
+ for (const [weekIndex, weekDays] of weeks.entries()) {
79
+ const weekAssignmentVars = [];
80
+ for (const day of weekDays) {
81
+ for (const pattern of builder.shiftPatterns) {
82
+ if (!builder.canAssign(member, pattern))
83
+ continue;
84
+ if (!builder.patternAvailableOnDay(pattern, day))
85
+ continue;
86
+ weekAssignmentVars.push(builder.assignment(member.id, pattern.id, day));
87
+ }
88
+ }
89
+ if (weekAssignmentVars.length === 0)
90
+ continue;
91
+ const activeVar = builder.boolVar(`active:cost:${member.id}:w${weekIndex}`);
92
+ for (const assignVar of weekAssignmentVars) {
93
+ builder.addLinear([
94
+ { var: activeVar, coeff: 1 },
95
+ { var: assignVar, coeff: -1 },
96
+ ], ">=", 0);
97
+ }
98
+ builder.addPenalty(activeVar, Math.max(1, Math.round(normalizedWeeklyCost)));
108
99
  }
109
- b.addPenalty(activeVar, Math.max(1, Math.round(normalizedWeeklyCost)));
110
- }
111
- }
112
- },
113
- cost(assignments, members, shiftPatterns) {
114
- const memberMap = new Map(members.map((m) => [m.id, m]));
115
- const patternMap = new Map(shiftPatterns.map((p) => [p.id, p]));
116
- const allDays = [...new Set(assignments.map((a) => a.day))].toSorted();
117
- const activeDays = new Set(resolveActiveDaysFromScope(timeScopeValue, allDays));
118
- const targetMemberIds = new Set(resolveMembersFromScope(entityScopeValue, [...members]).map((m) => m.id));
119
- const entries = [];
120
- // Track which salaried members are active per week for weekly cost
121
- const salariedWeekActive = new Map();
122
- for (const a of assignments) {
123
- if (!activeDays.has(a.day))
124
- continue;
125
- if (!targetMemberIds.has(a.memberId))
126
- continue;
127
- const member = memberMap.get(a.memberId);
128
- if (!member)
129
- continue;
130
- const pattern = patternMap.get(a.shiftPatternId);
131
- if (!pattern)
132
- continue;
133
- const duration = patternDurationMinutes(pattern);
134
- const rate = getHourlyRate(member);
135
- if (rate !== undefined) {
136
- entries.push({
137
- memberId: a.memberId,
138
- day: a.day,
139
- category: COST_CATEGORY.BASE,
140
- amount: (rate * duration) / 60,
141
- });
142
- continue;
143
100
  }
144
- // Salaried: track weeks with assignments
145
- const salaried = getSalariedPay(member);
146
- if (salaried === undefined)
147
- continue;
148
- let days = salariedWeekActive.get(a.memberId);
149
- if (!days) {
150
- days = new Set();
151
- salariedWeekActive.set(a.memberId, days);
152
- }
153
- days.add(a.day);
154
- }
155
- // Compute salaried costs: weekly salary distributed across active days
156
- for (const [memberId, activeDaysSet] of salariedWeekActive) {
157
- const member = memberMap.get(memberId);
158
- if (!member)
159
- continue;
160
- const salaried = getSalariedPay(member);
161
- if (!salaried)
162
- continue;
163
- const activeList = [...activeDaysSet].toSorted();
164
- const weeks = splitIntoWeeks(activeList, resolvedWeekStartsOn);
165
- for (const weekDays of weeks) {
166
- if (weekDays.length === 0)
101
+ },
102
+ calculateCost(assignments, costContext) {
103
+ const memberMap = new Map(costContext.members.map((member) => [member.id, member]));
104
+ const patternMap = new Map(costContext.shiftPatterns.map((pattern) => [pattern.id, pattern]));
105
+ const activeDays = new Set(resolveActiveDaysFromScope(timeScopeValue, [...costContext.days]).map((day) => day.iso));
106
+ const targetMemberIds = new Set(resolveMembersFromScope(entityScopeValue, [...costContext.members]).map((member) => member.id));
107
+ const entries = [];
108
+ const salariedWeekActive = new Map();
109
+ for (const assignment of assignments) {
110
+ if (!activeDays.has(assignment.day) || !targetMemberIds.has(assignment.memberId))
167
111
  continue;
168
- const weeklyCost = salaried.annual / 52;
169
- // Distribute evenly across days worked that week
170
- const perDay = weeklyCost / weekDays.length;
171
- for (const day of weekDays) {
112
+ const member = memberMap.get(assignment.memberId);
113
+ if (!member)
114
+ continue;
115
+ const pattern = patternMap.get(assignment.shiftPatternId);
116
+ if (!pattern)
117
+ continue;
118
+ const duration = patternDurationMinutes(pattern);
119
+ const rate = getHourlyRate(member);
120
+ if (rate !== undefined) {
172
121
  entries.push({
173
- memberId,
174
- day,
122
+ memberId: assignment.memberId,
123
+ day: assignment.day,
175
124
  category: COST_CATEGORY.BASE,
176
- amount: perDay,
125
+ amount: (rate * duration) / 60,
177
126
  });
127
+ continue;
128
+ }
129
+ const salaried = getSalariedPay(member);
130
+ if (salaried === undefined)
131
+ continue;
132
+ let memberDays = salariedWeekActive.get(assignment.memberId);
133
+ if (!memberDays) {
134
+ memberDays = new Set();
135
+ salariedWeekActive.set(assignment.memberId, memberDays);
136
+ }
137
+ memberDays.add(assignment.day);
138
+ }
139
+ for (const [memberId, activeDaysSet] of salariedWeekActive) {
140
+ const member = memberMap.get(memberId);
141
+ if (!member)
142
+ continue;
143
+ const salaried = getSalariedPay(member);
144
+ if (!salaried)
145
+ continue;
146
+ const activeDateSet = new Set(activeDaysSet);
147
+ const activeList = costContext.days.filter((day) => activeDateSet.has(day.iso));
148
+ const weeks = splitIntoWeeks(activeList, resolvedWeekStartsOn);
149
+ for (const weekDays of weeks) {
150
+ if (weekDays.length === 0)
151
+ continue;
152
+ const weeklyCost = salaried.annual / 52;
153
+ const perDay = weeklyCost / weekDays.length;
154
+ for (const day of weekDays) {
155
+ entries.push({
156
+ memberId,
157
+ day: day.iso,
158
+ category: COST_CATEGORY.BASE,
159
+ amount: perDay,
160
+ });
161
+ }
178
162
  }
179
163
  }
180
- }
181
- return { entries };
182
- },
183
- };
184
- }
164
+ return { entries };
165
+ },
166
+ };
167
+ return {
168
+ rule: "minimize-cost",
169
+ artifacts: [costArtifact],
170
+ };
171
+ },
172
+ });
185
173
  //# sourceMappingURL=minimize-cost.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"minimize-cost.js","sourceRoot":"","sources":["../../../src/cpsat/rules/minimize-cost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"minimize-cost.js","sourceRoot":"","sources":["../../../src/cpsat/rules/minimize-cost.ts"],"names":[],"mappings":"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"}
@@ -1,49 +1,12 @@
1
1
  import * as z from "zod";
2
- import type { CompilationRule } from "../model-builder.js";
3
- declare const MustAssignSchema: z.ZodIntersection<z.ZodObject<{
2
+ export declare const MustAssignSchema: z.ZodIntersection<z.ZodObject<{
4
3
  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
4
  }, 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
5
  /**
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`
6
+ * Configuration for {@link mustAssignRuleDescriptor}.
13
7
  */
14
8
  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 {};
9
+ export declare const mustAssignRuleDescriptor: import("../rule-descriptor.js").RuleDescriptor<"must-assign", {
10
+ weekStartsOn?: "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday" | undefined;
11
+ } & import("./scope.types.js").EntityScopeType<"members" | "roles" | "skills">>;
49
12
  //# sourceMappingURL=must-assign.d.ts.map
@@ -1 +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"}
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;AAgBzB,eAAO,MAAM,gBAAgB;;iOAIsB,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,eAAO,MAAM,wBAAwB;;+EA2CnC,CAAC"}