feat: add GPS tracking with Traccar integration

- Add GPS module with Traccar client service for device management
- Add driver enrollment flow with QR code generation
- Add real-time location tracking on driver profiles
- Add GPS settings configuration in admin tools
- Add Auth0 OpenID Connect setup script for Traccar
- Add deployment configs for production server
- Update nginx configs for SSL on GPS port 5055
- Add timezone setting support
- Various UI improvements and bug fixes

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-03 18:13:17 +01:00
parent 3814d175ff
commit 5ded039793
91 changed files with 4403 additions and 68 deletions

389
COPILOT_QUICK_REFERENCE.md Normal file
View File

@@ -0,0 +1,389 @@
# AI Copilot - Quick Reference Guide
Quick reference for all AI Copilot tools in VIP Coordinator.
---
## 🔍 SEARCH & RETRIEVAL
### Search VIPs
```
"Find VIPs from the Office of Development"
"Show me VIPs arriving by flight"
```
### Search Drivers
```
"Show all available drivers"
"Find drivers in the Admin department"
```
### Search Events
```
"Show events for John Smith today"
"Find all transport events this week"
```
### Search Vehicles
```
"Show available SUVs with at least 7 seats"
"List all vehicles"
```
---
## 📅 SCHEDULING & AVAILABILITY
### Find Available Drivers
```
"Who's available tomorrow from 2pm to 5pm?"
"Find drivers free this afternoon in Office of Development"
```
**Tool:** `find_available_drivers_for_timerange`
### Get Driver's Daily Schedule
```
"Show John's schedule for tomorrow"
"What's on Jane Doe's manifest today?"
"Get the daily schedule for driver [name]"
```
**Tool:** `get_daily_driver_manifest`
- Returns chronological events with VIP names, locations, vehicles
- Shows gaps between events
### Get Weekly Lookahead
```
"What's coming up next week?"
"Show me a 2-week lookahead"
```
**Tool:** `get_weekly_lookahead`
- Day-by-day breakdown
- Event counts, unassigned events, arriving VIPs
### Get VIP Itinerary
```
"Show me the complete itinerary for [VIP name]"
"Get all events for VIP [name] this week"
```
**Tool:** `get_vip_itinerary`
---
## ⚠️ CONFLICT DETECTION & AUDITING
### Check VIP Conflicts
```
"Does Jane Smith have any conflicts tomorrow afternoon?"
"Check if [VIP] is double-booked on Friday"
```
**Tool:** `check_vip_conflicts`
### Check Driver Conflicts
```
"Does John have any conflicts if I schedule him at 3pm?"
"Check driver [name] for conflicts on [date]"
```
**Tool:** `check_driver_conflicts`
### Find Unassigned Events
```
"What events don't have drivers assigned?"
"Find events missing vehicle assignments this week"
```
**Tool:** `find_unassigned_events`
### Audit Schedule for Problems
```
"Check next week's schedule for problems"
"Audit the next 14 days for conflicts"
"Identify scheduling gaps"
```
**Tool:** `identify_scheduling_gaps`
- Finds unassigned events
- Detects driver conflicts
- Detects VIP conflicts
---
## 🚗 VEHICLE MANAGEMENT
### Suggest Vehicle for Event
```
"What vehicles would work for event [ID]?"
"Suggest a vehicle for the airport pickup at 2pm"
```
**Tool:** `suggest_vehicle_for_event`
- Ranks by availability and capacity
- Shows recommended options
### Get Vehicle Schedule
```
"Show the Blue Van's schedule this week"
"What events is the Suburban assigned to?"
```
**Tool:** `get_vehicle_schedule`
### Assign Vehicle to Event
```
"Assign the Blue Van to event [ID]"
"Change the vehicle for [event] to [vehicle name]"
```
**Tool:** `assign_vehicle_to_event`
---
## 👥 DRIVER MANAGEMENT
### Get Driver Schedule
```
"Show John Smith's schedule for next week"
"What's on Jane's calendar tomorrow?"
```
**Tool:** `get_driver_schedule`
### Reassign Driver Events (Bulk)
```
"John is sick, reassign all his events to Jane"
"Move all of driver A's Friday events to driver B"
```
**Tool:** `reassign_driver_events`
### Get Driver Workload Summary
```
"Show driver workload for this month"
"Who's working the most hours?"
"Get utilization stats for all drivers"
```
**Tool:** `get_driver_workload_summary`
- Event counts per driver
- Total hours worked
- Utilization percentages
### Update Driver Info
```
"Mark John Smith as unavailable"
"Update driver [name]'s shift times"
```
**Tool:** `update_driver`
---
## 📱 SIGNAL MESSAGING
### Send Message to Driver
```
"Send a message to John Smith: The 3pm pickup is delayed"
"Notify Jane Doe about the schedule change"
```
**Tool:** `send_driver_notification_via_signal`
### Bulk Send Schedules
```
"Send tomorrow's schedules to all drivers"
"Send Monday's schedule to John and Jane"
```
**Tool:** `bulk_send_driver_schedules`
- Sends PDF and ICS files
- Can target specific drivers or all with events
---
## ✏️ CREATE & UPDATE
### Create VIP
```
"Add a new VIP named [name] from [organization]"
"Create VIP arriving by flight"
```
**Tool:** `create_vip`
### Create Event
```
"Schedule a transport from airport to hotel at 2pm for [VIP]"
"Add a meeting event for [VIP] tomorrow at 10am"
```
**Tool:** `create_event`
### Create Flight
```
"Add flight AA1234 for [VIP] arriving tomorrow"
"Create flight record for [VIP]"
```
**Tool:** `create_flight`
### Update Event
```
"Change the event start time to 3pm"
"Update event [ID] location to Main Building"
```
**Tool:** `update_event`
### Update Flight
```
"Update flight [ID] arrival time to 5:30pm"
"Flight AA1234 is delayed, new arrival 6pm"
```
**Tool:** `update_flight`
### Update VIP
```
"Change [VIP]'s organization to XYZ Corp"
"Update VIP notes with dietary restrictions"
```
**Tool:** `update_vip`
---
## 🗑️ DELETE
### Delete Event
```
"Cancel the 3pm airport pickup"
"Remove event [ID]"
```
**Tool:** `delete_event` (soft delete)
### Delete Flight
```
"Remove flight [ID]"
"Delete the cancelled flight"
```
**Tool:** `delete_flight`
---
## 📊 SUMMARIES & REPORTS
### Today's Summary
```
"What's happening today?"
"Give me today's overview"
```
**Tool:** `get_todays_summary`
- Today's events
- Arriving VIPs
- Available resources
- Unassigned counts
### List All Drivers
```
"Show me all drivers"
"List drivers including unavailable ones"
```
**Tool:** `list_all_drivers`
---
## 💡 TIPS FOR BEST RESULTS
### Use Names, Not IDs
✅ "Send a message to John Smith"
❌ "Send a message to driver ID abc123"
### Be Specific with Ambiguous Names
✅ "John Smith in Office of Development"
❌ "John" (if multiple Johns exist)
### Natural Language Works
✅ "Who's free tomorrow afternoon?"
✅ "What vehicles can fit 8 people?"
✅ "Check next week for problems"
### Confirm Before Changes
The AI will:
1. Search for matching records
2. Show what it found
3. Propose changes
4. Ask for confirmation
5. Execute and confirm
---
## 🎯 COMMON WORKFLOWS
### Morning Briefing
```
1. "What's happening today?"
2. "Find any unassigned events"
3. "Send schedules to all drivers"
```
### Handle Driver Absence
```
1. "John is sick, who's available to cover his events?"
2. "Reassign John's events to Jane for today"
3. "Send Jane a notification about the changes"
```
### Weekly Planning
```
1. "Get a 1-week lookahead"
2. "Identify scheduling gaps for next week"
3. "Show driver workload for next week"
```
### New Event Planning
```
1. "Check if VIP [name] has conflicts on Friday at 2pm"
2. "Find available drivers for Friday 2-4pm"
3. "Suggest vehicles for a 6-person group"
4. "Create the transport event"
```
---
## 📖 SPECIAL FEATURES
### Image Processing
Upload screenshots of:
- Flight delay emails
- Itinerary changes
- Schedule requests
The AI will:
1. Extract information
2. Find matching records
3. Propose updates
4. Ask for confirmation
### Name Fuzzy Matching
- "john smith" matches "John Smith"
- "jane" matches "Jane Doe" (if unique)
- Case-insensitive searches
### Helpful Error Messages
If not found, the AI lists available options:
```
"No driver found matching 'Jon'. Available drivers: John Smith, Jane Doe, ..."
```
---
## 🚀 ADVANCED USAGE
### Chained Operations
```
"Find available drivers for tomorrow 2-5pm, then suggest vehicles that can seat 6,
then create a transport event for VIP John Smith with the first available driver
and suitable vehicle"
```
### Batch Operations
```
"Send schedules to John, Jane, and Bob for Monday"
"Find all unassigned events this week and list available drivers for each"
```
### Conditional Logic
```
"If John has conflicts on Friday, reassign to Jane, otherwise assign to John"
```
---
**Need Help?** Just ask the AI Copilot in natural language!
Examples:
- "How do I check for driver conflicts?"
- "What can you help me with?"
- "Show me an example of creating an event"