interface MiddlewareStep { name: string; description: string; type: 'validate' | 'persist' | 'sideEffect' | 'notify'; } const TYPE_COLORS = { validate: { color: '#60a5fa', bg: 'rgba(96,165,250,0.1)' }, persist: { color: '#22c55e', bg: 'rgba(34,197,94,0.1)' }, sideEffect: { color: '#f59e0b', bg: 'rgba(245,158,11,0.1)' }, notify: { color: '#fb2576', bg: 'rgba(251,37,118,0.1)' }, }; const CHAINS: { title: string; endpoint: string; color: string; steps: MiddlewareStep[] }[] = [ { title: 'Internal Trip Status Path', endpoint: 'PUT /b2c/rider/services/v6/request', color: '#7b59e6', steps: [ { name: 'validateTripStatus', description: 'Validates trip status transition is allowed', type: 'validate' }, { name: 'fnUpdateBookingStatus', description: 'Maps trip status to booking_status using TRIP_STATUS_TO_BOOKING_STATUS, writes with optimistic lock', type: 'persist' }, { name: 'fnUpdateCancelBookingStatus', description: 'Handles cancel-specific booking status updates (rider/driver/system cancels)', type: 'persist' }, { name: 'fnCancelBookedTripScheduledJobs', description: 'Removes pending BullMQ jobs on cancellation', type: 'sideEffect' }, { name: 'fnDeleteScheduledRideDac', description: 'Deletes DAC card via Pub/Sub when trip ends or is cancelled', type: 'sideEffect' }, { name: 'publishScheduledRideDacMW', description: 'Publishes new DAC card for driver actions (confirm/cancel)', type: 'sideEffect' }, { name: 'scheduleBookingJobs', description: 'Schedules BullMQ jobs on assignment (pre-trip confirmation timers)', type: 'sideEffect' }, ], }, { title: 'Rider Booking Endpoint', endpoint: 'PUT /rider/trips/:tripId/booking-status', color: '#06b6d4', steps: [ { name: 'validateBookingStatusTransition', description: 'Checks VALID_RIDER_TRANSITIONS map', type: 'validate' }, { name: 'saveBookingStatusUpdate', description: 'Persists new booking_status with optimistic lock', type: 'persist' }, { name: 'fnCancelBookedTripScheduledJobs', description: 'Cleans up BullMQ jobs if cancelled', type: 'sideEffect' }, { name: 'fnDeleteScheduledRideDac', description: 'Deletes DAC card on cancellation', type: 'sideEffect' }, { name: 'publishScheduledRideDacMW', description: 'Publishes updated DAC card', type: 'sideEffect' }, { name: 'sendBookingNotification', description: 'Sends push notification to driver about rider action', type: 'notify' }, ], }, { title: 'Driver Booking Endpoint', endpoint: 'PUT /b2c/driver/trips/:tripId/booking-status', color: '#10b981', steps: [ { name: 'validateDriverBookingTransition', description: 'Checks VALID_DRIVER_TRANSITIONS map', type: 'validate' }, { name: 'saveBookingStatusUpdate', description: 'Persists new booking_status with optimistic lock', type: 'persist' }, { name: 'fnCancelBookedTripScheduledJobs', description: 'Cleans up BullMQ jobs on driver cancel', type: 'sideEffect' }, { name: 'publishRideDispatchBookingMW', description: 'Re-dispatches ride when driver cancels', type: 'sideEffect' }, { name: 'publishScheduledRideDacMW', description: 'Publishes/deletes DAC card', type: 'sideEffect' }, { name: 'sendBookingNotification', description: 'Sends push notification to rider about driver action', type: 'notify' }, ], }, ]; export function MiddlewareChainSection() { return (
{chain.endpoint}
{step.description}