Some checks failed
PR Fast Feedback / fast-feedback (pull_request) Failing after 2m6s
Implement external support desk handoff (spec 256). Created and pushed branch `256-external-support-desk-handoff`. Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #301
4.3 KiB
4.3 KiB
Quickstart — External Support Desk / PSA Handoff
Prereqs
- Docker is running.
- Laravel Sail dependencies are installed.
- The support-request foundation from Spec 246 is already present in the workspace.
- One application-configured external support desk target is available through
apps/platform/config/support_desk.php, or a fake target is available for implementation tests.
Run locally after implementation
- Start containers:
export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && cd apps/platform && ./vendor/bin/sail up -d
- Run targeted unit proof:
export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Unit/Support/SupportRequests/ExternalSupportDeskHandoffServiceTest.php tests/Unit/Support/SupportRequests/SupportRequestLatestHandoffSummaryTest.php
- Run targeted feature proof:
export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/SupportRequests/TenantSupportRequestExternalHandoffTest.php tests/Feature/SupportRequests/OperationRunSupportRequestExternalHandoffTest.php tests/Feature/SupportRequests/SupportRequestExternalHandoffAuthorizationTest.php tests/Feature/SupportRequests/SupportRequestExternalHandoffAuditTest.php
- Format after implementation:
export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent
Manual smoke after implementation
- Sign in to
/adminas a workspace member with tenant entitlement andsupport_requests.createcapability. - Open one tenant at
/admin/t/{tenant}and triggerRequest support. - Verify the action shows the existing context summary plus the new handoff mode controls. If no external target is configured in
config/support_desk.php, verify the action clearly stays ininternal_onlymode. - Submit the tenant-context flow with
create_external_ticketand verify the success notification includes the internal support reference plus the created external ticket reference. - Reopen the tenant-context action and verify the latest-handoff summary names the same internal support reference and external ticket reference.
- Submit the tenant-context flow with
link_existing_ticketand verify the stored summary shows the linked external reference without issuing a create call. - Force the external create path to fail, including the five-second timeout path, and verify the action returns explicit partial-success or warning feedback, the internal support request still exists, and the latest-handoff summary shows the persisted failure summary.
- Open one canonical run detail page at
/admin/operations/{run}for a run that resolves to the same entitled tenant scope and repeat create, link, and failure checks there. - Verify a non-member or non-entitled actor receives
404, while an in-scope member withoutsupport_requests.createsees the action disabled and receives403on execution. - Verify no new support-request resource, support queue, global-search result, or
OperationRunside effect appears in this slice.
Notes
- Filament v5 remains on Livewire v4.0+ in this repo; the feature stays inside native Filament page actions.
- No provider registration change is part of this slice; Laravel 12 panel providers remain registered in
bootstrap/providers.php. - No globally searchable resource is added, so there is no new global-search contract to satisfy.
- No destructive action is introduced, so
->requiresConfirmation()is not newly involved here. - No asset strategy changes are required. The general deploy step
cd apps/platform && php artisan filament:assetsremains unchanged.
Implementation Close-Out Expectations
- The targeted unit and feature commands above pass.
- Manual smoke proves create, link, and explicit failure handling from both existing support-aware surfaces.
- Audit review shows
support_request.created,support_request.external_ticket_created,support_request.external_ticket_linked, andsupport_request.external_handoff_failedevents with the expected bounded metadata. - Internal-only support-request submission still works when the external target is unavailable or intentionally bypassed.
- No new support product surface appears beyond the two existing actions.