Add assignment engine, FCM, WebSockets, city gate, and internal APIs
- internal/assignment: GEORADIUS miler assignment with retry/escalation,
customer-side provider scoring, FCM notifications on assign
- internal/notify: Firebase Admin SDK (FCM) client initialisation
- internal/ws: WebSocket handlers for live parcel tracking and
customer↔miler chat
- middlewares: city gate (pincode prefix validation), internal API key
auth, WebSocket JWT auth
- controllers: InternalNotify + InternalReassign for machine-to-machine
calls; pricing helpers wired into CreateCustomerBooking and CreateCRMBooking
- routes: /internal/*, /ws/bookings/:id/track, /ws/bookings/:id/chat
- models/users, models/doormile_pricing: new fields for device tokens,
assignment state, pricing bands
- seed_data.sql: initial pricing seed rows
.env and Firebase service-account JSON intentionally excluded.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>