Add in-app Care Queue Engine (Phase 1 MVP).
Deploy Ladill Care / deploy (push) Successful in 1m28s

Issue, call-next, serve, and complete tickets locally so Care Pro no longer
needs QUEUE_API_* when CARE_QUEUE_DRIVER=native (default). Remote Ladill Queue
remains available for cutover; PHPUnit keeps the remote driver for existing fakes.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-18 09:54:06 +00:00
co-authored by Cursor
parent ad04f0cec8
commit 6cf5a24019
19 changed files with 1355 additions and 55 deletions
@@ -144,7 +144,7 @@ class SettingsController extends Controller
$settings[AppointmentPatientNotifier::SETTING_VIDEO_SMS] = $request->boolean('notify_video_scheduled_sms');
$settings[AppointmentPatientNotifier::SETTING_VIDEO_EMAIL] = $request->boolean('notify_video_scheduled_email');
if ($wantsQueue && $queue->configured()) {
if ($wantsQueue && config('care.queue.driver', 'native') !== 'native' && $queue->configured()) {
$branch = Branch::owned($owner)->where('organization_id', $organization->id)->orderBy('name')->first();
try {
$queue->enable($owner, $organization->name, $branch?->name);
@@ -186,9 +186,9 @@ class SettingsController extends Controller
}
}
// Queue department sync + waiting-ticket backfill can take minutes over HTTP.
// Never block the settings response on it — run after the redirect goes out.
if ($wantsQueue && $queue->configured()) {
// Queue department sync + waiting-ticket backfill — run after the redirect.
$queueReady = config('care.queue.driver', 'native') === 'native' || $queue->configured();
if ($wantsQueue && $queueReady) {
$organizationId = (int) $organization->id;
$backfillTickets = $queueJustEnabled;
dispatch(function () use ($organizationId, $owner, $backfillTickets) {