Επισκόπηση
Ένας μηνιαίος προγραμματιστής βαρδιών που αναθέτει αυτόματα 24ωρες υπηρεσίες, 8ωρες βάρδιες και ρεπό σε ομάδα έξι ατόμων, και εξάγει έγχρωμο PDF πρόγραμμα σε οριζόντιο A4.
Τι έφτιαξα
Η λογική ανάθεσης είναι αλγόριθμος επιλύσεως περιορισμών: τις καθημερινές πρέπει να υπηρετούν ακριβώς τέσσερις (δύο τύποι υπηρεσίας συν συμπληρωματικοί), τα Σαββατοκύριακα μόνο όσοι κάνουν 24ωρες, χωρίς διαδοχικές 24ωρες, με αυστηρούς περιορισμούς full (υποχρεωτικό ρεπό) και evening (αποκλεισμός 24ωρης). Οι μετρητές δικαιοσύνης — 24ωρες, Σαββατοκύριακα, 8ωρες, ρεπό — ισορροπούν μέσα στον μήνα.
Η ισοβαθμία επιλύεται με χειροποίητο seedable PRNG (Mulberry32), οπότε ένα δεδομένο seed παράγει ντετερμινιστικά, αναπαράξιμα προγράμματα. Η διαμόρφωση ζει στο work.json.
Η απόδοση γίνεται με Puppeteer: έγχρωμα κελιά για τους δύο τύπους 24ωρης υπηρεσίας, τις 8ωρες και τα ρεπό, με υπόμνημα, σε οριζόντιο A4.
Τεχνικά highlights
- Κατανομή με περιορισμούς και ισορροπία δικαιοσύνης σε όλους τους τύπους βαρδιών
- Ντετερμινιστική τυχαιότητα με seed για αναπαράξιμη έξοδο
- Επαγγελματική έξοδος PDF μέσω headless Chromium
Αποτέλεσμα
Παράγει το μηνιαίο πρόγραμμα της ομάδας· το PDF τυπώνεται και αναρτάται.