34 Commits

Author SHA1 Message Date
515b9aa317 Update README 2026-03-15 15:23:05 +02:00
770b0e84c9 Add negative shifts in flex map logic and make it dynamic 2026-03-14 20:52:59 +02:00
d7fd717c95 Refactor duplicate code, lints, correct engine status render 2026-03-14 20:18:51 +02:00
756c1cdc47 Improve UI
- Add metrics table  to sidebar after schedule generation
- Add scheduler status indicator to sidebar
- Refactor report() to consume `ResidentMetrics`
- Delete unused preview component
- Beautify css across wizard steps
2026-03-14 19:44:29 +02:00
3ecdc91802 Expand integration suite to cover all months of 2026, minor refactorings 2026-02-28 10:01:26 +02:00
934e2c2fd2 Sort residents by least flexibility first 2026-02-28 10:00:35 +02:00
ab41e8f264 Adjust max workload calculation to take into account residents with reduced load 2026-02-28 09:58:03 +02:00
76d308351a Reorganize integration tests, simplify fn signatures 2026-02-22 13:01:28 +02:00
a41d1cd469 Remove min by shift type boundaries, improve logging, add more tests, add logs in tests, move fixtures in separate file, move restrictions_violated logic into valid_residents of next slot 2026-02-21 23:46:26 +02:00
c291328bfa Shuffle once and keep order, use SmallRng
time:   [98.196 µs 100.64 µs 103.56 µs]
change: [−13.633% −10.629% −7.6947%] (p = 0.00 < 0.05)
2026-02-10 22:46:31 +02:00
f84d812602 Add custom errors with thiserror, log thread id 2026-02-03 23:02:44 +02:00
2e5568fccb Store tracker info from solution thread, sort by lowest type count first 2026-02-02 00:00:57 +02:00
318b7f6450 Hold config state from the generated schedule; avoids desync issues when changing configs and re-exporting data without generating new schedule 2026-02-01 23:23:27 +02:00
98cb9f7f3e Parallelize DFS, use an AtomicBool for short-circuiting
time:   [73.407 µs 76.145 µs 79.345 µs]
change: [−40.126% −24.679% −3.8062%] (p = 0.04 < 0.05)
2026-02-01 22:53:04 +02:00
c9e1d3ab67 Avoid automatic open of generated docx in unit tests 2026-01-21 19:40:25 +02:00
334b009749 Resolve lint warnings 2026-01-18 00:03:18 +02:00
33de9720bf Improve error handling, logging 2026-01-18 00:02:11 +02:00
125ddc3117 Change ResidentId(String) to ResidentId(u8), impl Copy for ShiftType, use u8 for all UserConfig params 2026-01-17 19:27:35 +02:00
5bad63e8a7 Use maps to track workload progress instead of recalculating them at every step of the search, calculate total days/slots once, add integration tests, add log folder 2026-01-17 18:41:43 +02:00
908f114e54 Add justfile 2026-01-17 11:38:22 +02:00
af95cc2f5c Add missing shift type check 2026-01-14 23:52:42 +02:00
7713318d01 Improve type system with ResidentId and ToxicPair structs 2026-01-14 23:37:58 +02:00
70de9bcbf1 Impl Default trait 2026-01-14 21:19:14 +02:00
1ce55675db Move valid_residents to the scheduler impl and simplify it 2026-01-14 21:15:57 +02:00
2febcb7344 Create struct scheduler to encapsulate the search logic 2026-01-14 00:34:48 +02:00
d7d4b109c3 Separate user configs from resident workload bounds 2026-01-14 00:07:20 +02:00
8865f0b95a Replace from_dto fn with From trait impl 2026-01-13 23:11:44 +02:00
4b49b4b54e Export result to txt/docx 2026-01-13 21:08:24 +02:00
e9ca378099 Add fairness for each shift type count 2026-01-13 21:08:03 +02:00
db7623528c Remove bind of project month in resident calendar options 2026-01-13 21:02:25 +02:00
92a9c6d704 Implement DTOs, add managed state for schedule, export to txt 2026-01-11 22:28:10 +02:00
53f8695572 Complete backtracking, restriction violations, split model.rs into multiple files 2026-01-11 10:44:25 +02:00
e11e1376eb Sync progress 2025-12-28 21:32:08 +02:00
8f8fc50310 Init project 2025-12-26 11:25:45 +02:00