feat: implement rescheduling workflows as background job #27259
+1,083
−39
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Implements rescheduling workflows as a background job using the existing email/SMS tasker pattern as inspiration. This moves workflow scheduling for reschedule events to trigger.dev for async execution, reducing latency in the booking response.
The implementation follows the same 3-layer architecture used by
BookingEmailAndSmsTasker:WorkflowTasker- Main orchestrator that dispatches to async or sync taskerWorkflowTriggerDevTasker- Async implementation via trigger.devWorkflowSyncTasker- Sync fallback implementationWorkflowTaskService- Contains the actual business logic (callsscheduleWorkflowReminders)Key changes:
workflow-taskerfeature flag toAppFlagsgetBookingForWorkflowTaskerrepository method to fetch booking data with required relationsWorkflowTaskerintoRegularBookingServicefor reschedule eventsworkflow.schedule.rescheduleThe feature is gated behind the
workflow-taskerfeature flag and only triggers for organizations that have the flag enabled.Mandatory Tasks (DO NOT REMOVE)
How should this be tested?
workflow-taskerfeature flag for a test organizationRESCHEDULE_EVENTEnvironment variables needed:
TRIGGER_API_KEYandTRIGGER_API_URLfor trigger.dev integrationworkflow-taskermust be enabled for the orgChecklist for Human Review
ExtendedCalendarEventconstruction inWorkflowTaskServicematches whatscheduleWorkflowRemindersexpectspackages/features/tasker/tasks/index.tsis needed for trigger.devRESCHEDULE_EVENT,BEFORE_EVENT, andAFTER_EVENTtriggersRegularBookingService.ts,BookingRepository.ts, andconfig.ts- some appear to be formatting-only changes that may need cleanupLink to Devin run: https://app.devin.ai/sessions/43d17dbab131473883f6421be9ebc5fd
Requested by: @sean-brydon