/portal/dispatcher is a tech-centric view of the day's schedule. Each active tech gets a column; appointments scheduled for that tech show up as draggable cards. Drag a card from one column to another → that appointment is reassigned to that tech, immediately. No save button.
When to use Dispatcher vs. Schedule
| Schedule (/portal/schedule) | Calendar / list / map of WHAT'S BOOKED. Day, week, month views. Read-mostly. |
| Dispatcher (/portal/dispatcher) | Tech-centric kanban for SHUFFLING ASSIGNMENTS. One day at a time. Drag-and-drop. |
Same underlying data — both pages read from + write to the appointments table. They're just two ways to look at the same schedule depending on what you're trying to do.
How to use it
- 1Pick a day
Defaults to today. Use Prev day / Next day arrows to step. URL is bookmarkable so you can share a specific day with a co-dispatcher.
- 2Find the column you want to move FROM
Each tech has their own column with a colored dot + their name. The 'Unassigned' column on the left holds jobs that came in without a tech assigned (typical for AI-receptionist bookings).
- 3Drag a card to another column
Click + hold on the card, drag horizontally across to the destination column, drop. The card jumps; a toast confirms 'Moved to Mike.'
- 4Verify on Schedule
The reassignment is live everywhere immediately — Schedule, the tech's /portal/tech feed, tech-on-the-way SMS routing.
What each card shows
- Time window (start–end based on duration).
- Tech-status badge if the tech has updated it (on the way / arrived / running late).
- Customer name + service description.
- Phone + address.
Click-and-hold for ~6px before dragging — that activation distance lets a SHORT tap on the card open the appointment detail page instead of starting a drag. So one component handles 'view' + 'reassign' without separate buttons.
Cancelled appointments are hidden from the dispatcher view — they can't be reassigned anyway. To revive a cancelled appointment, go to /portal/schedule and reopen it; it'll show up here on its scheduled day.
Each tech gets a stable color derived from their ID — blue, emerald, amber, violet, red, cyan, orange, or pink. Same tech keeps the same color across reloads, so when you also have the schedule map open, pin colors match column colors.