Per-staff dashboards με σερβιρισμένες παραγγελίες, μέσος λογαριασμός, on-time rate, ακυρωμένα είδη και customer feedback — rolled up νυχτερινά από τα live order data σας, όχι από ξεχωριστή POS εξαγωγή.
Η απόδοση προσωπικού στο Ordering.Tools είναι ένας καθημερινός roll-up κάθε μετρικής που συνδέει εργαζόμενο με πελάτη ή βάρδια: παραγγελίες που σερβίρισαν, είδη που firε-αραν, έσοδα για τα οποία ήταν υπεύθυνοι, μέσο μέγεθος λογαριασμού, on-time vs late vs no-show βάρδιες, ακυρωμένα είδη και μέση αξιολόγηση πελάτη.
Το θέμα δεν είναι παρακολούθηση — είναι coaching. Per-staff dossiers εμφανίζουν τα patterns που έχουν σημασία: ποιος είναι σταθερά νωρίς; ποιος έχει το υψηλότερο μέσο τραπέζι; ποιος ακυρώνει περισσότερα από συναδέλφους; ποιος εμφανίζεται στην ώρα του ακόμη και Σάββατο μετά από γάμο.
Κάθε μετρική υπολογίζεται από γραμμές που ήδη έχετε — Order, OrderFeedback, ClockEvent, StaffShiftAssignment. Χωρίς επιπλέον αισθητήρες, χωρίς ξεχωριστή POS εξαγωγή, χωρίς third-party time-tracking ενσωμάτωση.
Ο roll-up τρέχει στις 03:00 UTC (cron:nightly) και γράφει μία γραμμή StaffMetricsDaily ανά (venue, staff, date). Αν χρειαστεί να ξανα-υπολογίσετε ένα παράθυρο — ας πούμε μετά από backfill — χτυπήστε /api/admin/staff/metrics/replay με from/to range.
Συγκρίνουμε το CLOCK_IN του προσωπικού με το προγραμματισμένο StaffShiftAssignment.startTime. Σε 5 λεπτά = on-time; πάνω από 5 λεπτά = late; χωρίς clock-in έως το τέλος της βάρδιας = no-show.
Οι μετρήσεις δεν είναι επεξεργάσιμες — οι διευθυντές δεν μπορούν να 'φτιάξουν' μια γραμμή να φαίνεται πιο κολακευτική. Τα raw events ζουν στο audit log και είναι αναπαραγώγιμα.
Ενεργοποιήστε enableStaffMetrics στο Προσωπικό → Ρυθμίσεις. Ο νυχτερινός cron αρχίζει να εκπέμπει rolled-up μετρήσεις σε 24 ώρες; η per-staff dossier καρτέλα στο /admin/profile γίνεται ορατή για το μέλος προσωπικού.
Στις 03:00 UTC ο cron:nightly runner εκτελεί το staff-metrics step. Ομαδοποιεί Order γραμμές ανά assignedWaiterId για κάθε ενεργοποιημένο venue, ενώνει ClockEvents για ώρες, συσσωρεύει OrderFeedback για ratings και upsert-ει μία γραμμή ανά (venue, user, date).
Ανοίξτε Προσωπικό → Μέλη → κλικ ένα μέλος προσωπικού. Το dossier δείχνει καθημερινές μετρήσεις τις τελευταίες 30/90 ημέρες με sparklines για παραγγελίες, έσοδα και feedback μέσος όρος.
Κάθε μέλος προσωπικού βλέπει τις μετρήσεις του από την οθόνη My Stats στο mobile waiter shell — read-only. Οι coaching συζητήσεις πλαισιώνονται από δεδομένα που και οι δύο πλευρές μπορούν να δουν.
Ιδεατός upsert — ξανα-τρέχοντας το ίδιο παράθυρο παράγει ταυτόσημες γραμμές. Ο roll-up είναι μέρος της cron-system-migration grouped runner αρχιτεκτονικής.
Συγκρίνουμε το πρώτο CLOCK_IN του προσωπικού της ημέρας με το StaffShiftAssignment.startTime. Late threshold είναι παραμετροποιήσιμο (default 5 λεπτά); no-show είναι χωρίς clock-in έως το τέλος της βάρδιας.
OrderFeedback γραμμές ενωμένες με Order.assignedWaiterId δίνουν per-staff customer ratings. Το dossier δείχνει feedbackAvg + feedbackCount; κλικ μέσα αποκαλύπτει μεμονωμένα σχόλια (όταν υπάρχουν).
Αν ένα backfill ή bug σημαίνει ότι παρελθόντες μετρήσεις είναι λάθος, χτυπήστε /api/admin/staff/metrics/replay με from/to. Το endpoint ξανα-τρέχει την ίδια λογική που ο νυχτερινός cron χρησιμοποιεί.
Σερβιτόρος που προσλήφθηκε πριν τρεις μήνες έχει feedbackAvg = 3.8 vs ομαδικό 4.4. Ανοίξτε το dossier — οι κακές αξιολογήσεις συγκεντρώνονται σε νυχτερινές βάρδιες Σαββάτου. Ο διευθυντής τους ζευγαρώνει με senior σε αυτές τις βάρδιες.
Τα noShowShifts του Πέτρου ανέβηκαν τις τελευταίες 30 ημέρες. Ανοίξτε το dossier — κάθε no-show είναι Κυριακή πρωί. Συζήτηση: 'Οι Κυριακές πρωί είναι δύσκολες — ας σε μεταφέρουμε σε βραδινές'.
Δύο υποψήφιοι για ρόλο head-server. Τα dossiers τους δείχνουν ίδιους μέσους λογαριασμούς, αλλά ο ένας έχει 92% on-time vs 78% του άλλου. Ο πρώτος παίρνει την προαγωγή.
Νέος μάγειρας έχει voidedItemCount 3× ομαδικό μέσο όρο. Οι περισσότερες ακυρώσεις είναι λάθος μαγειρεμένα steaks. Συζήτηση: 'Ας περάσουμε από το chart doneness μαζί'.
Κάθε venue έχει τον σερβιτόρο που upsell-ει φυσικά και αυτόν που δεν. Η avgTicketCents στήλη τους κατατάσσει. Οι συνήθειες του κορυφαίου σερβιτόρου coach-ονται στην υπόλοιπη ομάδα.
Το προσωπικό βλέπει τις δικές του στατιστικές και αυτο-διορθώνεται χωρίς παρέμβαση διευθυντή. Ένας σερβιτόρος παρατηρεί ότι το μέσο ticket Τρίτης έπεσε — αρχίζει να αναφέρει το νέο πιάτο πάστα.
Οι περισσότερες πλατφόρμες ανάλυσης εστιατορίων συγκεντρώνουν σε επίπεδο venue — σύνολα κάλυψης, σύνολα εσόδων, σύνολα tickets — και σταματούν εκεί. Το δύσκολο βήμα είναι να μεταβούν από venue averages σε per-staff insight, επειδή απαιτεί staff-attribution στήλη σε κάθε παραγγελία.
Υπολογισμός per-staff μετρήσεων live σε κάθε φόρτωση dashboard σημαίνει ότι η αρχική σελίδα ενός 50-staff venue κάνει 50-row συγκέντρωση σε 30 ημέρες παραγγελιών — σε κάθε φόρτωση. Είναι αργό ακόμη και με indexes. Νυχτερινός roll-up γράφει μία γραμμή StaffMetricsDaily ανά (venue, staff, date).
Υπάρχει ένταση μεταξύ του να είσαι επιεικής (30 λεπτά late = on-time) και αυστηρός (1 λεπτό late = late). Το Ordering.Tools default είναι 5 λεπτά — γενναιόδωρο αρκετά ώστε η κίνηση και η αριθμητική στάσης λεωφορείου να μην ταξινομούν καλούς εργαζόμενους ως late.
Επεξεργάσιμες performance μετρήσεις γεννούν δυσπιστία. Αν διευθυντής μπορεί να 'φτιάξει' μια χαμηλή-rated ημέρα να δείχνει καλύτερα, το προσωπικό σταματά να εμπιστεύεται το dashboard. Το Ordering.Tools εκθέτει τις μετρήσεις ως read-only.