Διαχείριση Προσωπικού · Φάση 3

Απόδοση προσωπικού — καθημερινές μετρήσεις που εμφανίζουν πραγματικές στιγμές coaching

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 που έχουν σημασία: ποιος είναι σταθερά νωρίς; ποιος έχει το υψηλότερο μέσο τραπέζι; ποιος ακυρώνει περισσότερα από συναδέλφους; ποιος εμφανίζεται στην ώρα του ακόμη και Σάββατο μετά από γάμο.

Γιατί per-staff dashboards κερδίζουν τις 'συνολικές πωλήσεις'

Πηγή από τα δικά σας order data

Κάθε μετρική υπολογίζεται από γραμμές που ήδη έχετε — Order, OrderFeedback, ClockEvent, StaffShiftAssignment. Χωρίς επιπλέον αισθητήρες, χωρίς ξεχωριστή POS εξαγωγή, χωρίς third-party time-tracking ενσωμάτωση.

Νυχτερινός roll-up + on-demand replay

Ο roll-up τρέχει στις 03:00 UTC (cron:nightly) και γράφει μία γραμμή StaffMetricsDaily ανά (venue, staff, date). Αν χρειαστεί να ξανα-υπολογίσετε ένα παράθυρο — ας πούμε μετά από backfill — χτυπήστε /api/admin/staff/metrics/replay με from/to range.

On-time vs late vs no-show

Συγκρίνουμε το CLOCK_IN του προσωπικού με το προγραμματισμένο StaffShiftAssignment.startTime. Σε 5 λεπτά = on-time; πάνω από 5 λεπτά = late; χωρίς clock-in έως το τέλος της βάρδιας = no-show.

Read-only by design

Οι μετρήσεις δεν είναι επεξεργάσιμες — οι διευθυντές δεν μπορούν να 'φτιάξουν' μια γραμμή να φαίνεται πιο κολακευτική. Τα raw events ζουν στο audit log και είναι αναπαραγώγιμα.

Πώς λειτουργεί η παρακολούθηση απόδοσης

1

Ενεργοποιήστε το feature flag

Ενεργοποιήστε enableStaffMetrics στο Προσωπικό → Ρυθμίσεις. Ο νυχτερινός cron αρχίζει να εκπέμπει rolled-up μετρήσεις σε 24 ώρες; η per-staff dossier καρτέλα στο /admin/profile γίνεται ορατή για το μέλος προσωπικού.

2

Ο νυχτερινός roll-up τρέχει

Στις 03:00 UTC ο cron:nightly runner εκτελεί το staff-metrics step. Ομαδοποιεί Order γραμμές ανά assignedWaiterId για κάθε ενεργοποιημένο venue, ενώνει ClockEvents για ώρες, συσσωρεύει OrderFeedback για ratings και upsert-ει μία γραμμή ανά (venue, user, date).

3

Οι διευθυντές βλέπουν το dossier

Ανοίξτε Προσωπικό → Μέλη → κλικ ένα μέλος προσωπικού. Το dossier δείχνει καθημερινές μετρήσεις τις τελευταίες 30/90 ημέρες με sparklines για παραγγελίες, έσοδα και feedback μέσος όρος.

4

Το προσωπικό βλέπει τις δικές του στατιστικές

Κάθε μέλος προσωπικού βλέπει τις μετρήσεις του από την οθόνη My Stats στο mobile waiter shell — read-only. Οι coaching συζητήσεις πλαισιώνονται από δεδομένα που και οι δύο πλευρές μπορούν να δουν.

Απόδοση προσωπικού — λεπτομέρειες

Καθημερινός roll-up μέσω cron:nightly

Ιδεατός upsert — ξανα-τρέχοντας το ίδιο παράθυρο παράγει ταυτόσημες γραμμές. Ο roll-up είναι μέρος της cron-system-migration grouped runner αρχιτεκτονικής.

  • Τρέχει στις 03:00 UTC δίπλα σε cashback-expire και customer-stats
  • Ιδεατός — replay κάθε παράθυρο χωρίς διπλότυπα
  • Παραλείπει venues με enableStaffMetrics = false
  • Per-venue απομόνωση: σφάλματα σε ένα venue δεν μπλοκάρουν άλλα

Ταξινόμηση on-time / late / no-show

Συγκρίνουμε το πρώτο CLOCK_IN του προσωπικού της ημέρας με το StaffShiftAssignment.startTime. Late threshold είναι παραμετροποιήσιμο (default 5 λεπτά); no-show είναι χωρίς clock-in έως το τέλος της βάρδιας.

  • Παραμετροποιήσιμο late threshold ανά venue
  • Ανεκτικό σε πολλαπλές βάρδιες την ημέρα (χρησιμοποιεί το νωρίτερο match)
  • Παραλείπει βάρδιες με status = CANCELLED
  • Time-off-approved βάρδιες δεν μετρούν ως no-show

Συγκέντρωση customer feedback

OrderFeedback γραμμές ενωμένες με Order.assignedWaiterId δίνουν per-staff customer ratings. Το dossier δείχνει feedbackAvg + feedbackCount; κλικ μέσα αποκαλύπτει μεμονωμένα σχόλια (όταν υπάρχουν).

  • Μέση αξιολόγηση σε όλες τις αξιολογημένες παραγγελίες
  • Εμφάνιση σχολίων για coaching συζητήσεις
  • Διακρίνει 'χωρίς feedback' από 'χαμηλό feedback'
  • Φιλτράρει ανώνυμα bulk-spam ratings

Endpoint replay για διευθυντή

Αν ένα backfill ή bug σημαίνει ότι παρελθόντες μετρήσεις είναι λάθος, χτυπήστε /api/admin/staff/metrics/replay με from/to. Το endpoint ξανα-τρέχει την ίδια λογική που ο νυχτερινός cron χρησιμοποιεί.

  • Authenticated + permission-gated (staff.manage)
  • Ιδεατός — ασφαλές για κλήση πολλαπλές φορές
  • Προαιρετικό venueId scope — replay μόνο ένα venue
  • Επιστρέφει scanned/written/error μετρητές στην απόκριση

Όπου οι μετρήσεις προσωπικού οδηγούν σε καλύτερες αποφάσεις

Coaching του νέου προσλαμβανόμενου

Σερβιτόρος που προσλήφθηκε πριν τρεις μήνες έχει feedbackAvg = 3.8 vs ομαδικό 4.4. Ανοίξτε το dossier — οι κακές αξιολογήσεις συγκεντρώνονται σε νυχτερινές βάρδιες Σαββάτου. Ο διευθυντής τους ζευγαρώνει με senior σε αυτές τις βάρδιες.

Εντοπισμός pattern no-show

Τα noShowShifts του Πέτρου ανέβηκαν τις τελευταίες 30 ημέρες. Ανοίξτε το dossier — κάθε no-show είναι Κυριακή πρωί. Συζήτηση: 'Οι Κυριακές πρωί είναι δύσκολες — ας σε μεταφέρουμε σε βραδινές'.

Προαγωγή με βάση δεδομένα, όχι ένστικτο

Δύο υποψήφιοι για ρόλο head-server. Τα dossiers τους δείχνουν ίδιους μέσους λογαριασμούς, αλλά ο ένας έχει 92% on-time vs 78% του άλλου. Ο πρώτος παίρνει την προαγωγή.

Ακυρωμένα είδη σηματοδοτούν ανάγκη εκπαίδευσης

Νέος μάγειρας έχει voidedItemCount 3× ομαδικό μέσο όρο. Οι περισσότερες ακυρώσεις είναι λάθος μαγειρεμένα steaks. Συζήτηση: 'Ας περάσουμε από το chart doneness μαζί'.

Avg-ticket leaderboard

Κάθε venue έχει τον σερβιτόρο που upsell-ει φυσικά και αυτόν που δεν. Η avgTicketCents στήλη τους κατατάσσει. Οι συνήθειες του κορυφαίου σερβιτόρου coach-ονται στην υπόλοιπη ομάδα.

Self-coaching μέσω My Stats

Το προσωπικό βλέπει τις δικές του στατιστικές και αυτο-διορθώνεται χωρίς παρέμβαση διευθυντή. Ένας σερβιτόρος παρατηρεί ότι το μέσο ticket Τρίτης έπεσε — αρχίζει να αναφέρει το νέο πιάτο πάστα.

Per-staff μετρήσεις από δεδομένα που ήδη έχετε

Οι περισσότερες πλατφόρμες ανάλυσης εστιατορίων συγκεντρώνουν σε επίπεδο venue — σύνολα κάλυψης, σύνολα εσόδων, σύνολα tickets — και σταματούν εκεί. Το δύσκολο βήμα είναι να μεταβούν από venue averages σε per-staff insight, επειδή απαιτεί staff-attribution στήλη σε κάθε παραγγελία.

Γιατί νυχτερινός roll-up νικά τον live υπολογισμό

Υπολογισμός per-staff μετρήσεων live σε κάθε φόρτωση dashboard σημαίνει ότι η αρχική σελίδα ενός 50-staff venue κάνει 50-row συγκέντρωση σε 30 ημέρες παραγγελιών — σε κάθε φόρτωση. Είναι αργό ακόμη και με indexes. Νυχτερινός roll-up γράφει μία γραμμή StaffMetricsDaily ανά (venue, staff, date).

On-time ταξινόμηση, δίκαια

Υπάρχει ένταση μεταξύ του να είσαι επιεικής (30 λεπτά late = on-time) και αυστηρός (1 λεπτό late = late). Το Ordering.Tools default είναι 5 λεπτά — γενναιόδωρο αρκετά ώστε η κίνηση και η αριθμητική στάσης λεωφορείου να μην ταξινομούν καλούς εργαζόμενους ως late.

Read-only by design — coaching όχι παρακολούθηση

Επεξεργάσιμες performance μετρήσεις γεννούν δυσπιστία. Αν διευθυντής μπορεί να 'φτιάξει' μια χαμηλή-rated ημέρα να δείχνει καλύτερα, το προσωπικό σταματά να εμπιστεύεται το dashboard. Το Ordering.Tools εκθέτει τις μετρήσεις ως read-only.

Coach με δεδομένα, όχι με ανέκδοτα

Per-staff dossiers τροφοδοτούμενα από τα υπάρχοντα order data σας. Premium feature, περιλαμβάνεται στη Διαχείριση Προσωπικού.