The service-request grid and client read the real endpoints

Featurekamo-internal
Shipped
August 27, 2026 at 5:02 PM UTC
Author
kamo
Commit
f51c91e

Restores the rest of SW6c Task 4, which landed as d58a6aba and was dropped by a history rewrite in a concurrent session; the detail page survived inside bddd3617 and has been importing `serviceQuoteWorkOrder` since. `PipelineServiceRequestsTab` calls `GET /service-quotes` instead of `generateMockServiceRequests`. The requester, department, category, priority, SLA, technician and team columns are gone: none has a source on the wire, and a column that renders an em dash forever reads as "nothing recorded" rather than as "this was never real" — how `serviceName`, `serviceId` and `engagementId` survived a whole screen's lifetime before SW6a. Status is `IntentStatus`'s five values, not the fixture's six, and the status buttons are gone with it: they moved a local array and raised a success toast for a write that never left the browser. Create sends exactly one offering and says so. `CreateServiceQuoteRequest` advertises `List<Long> serviceOfferingUids` and the service keeps only `.get(0)`, silently. The New button used to point at **************** which does not exist; it opens a dialog. `marketId` cannot filter this list, so the `data.filter(() => true)` that dressed up as a filter is gone and a caption says every market shows the same rows. `posApi.ServiceQuote` declared `serviceId` and `serviceName` against a DTO sending `serviceOfferingUid` and `serviceOfferingName` — the same defect on the sibling type — and now mirrors `ServiceQuoteDTO`. `WorkOrder`'s phantom members are corrected too, because one of them turns out to be load-bearing: `acceptServiceQuote` answers with the `FulfillmentOrder`, whose uid is not the `ServiceJob`'s, and `engagementUid` is the only thread across. `serviceQuoteWorkOrder.ts` follows it, and its test pins the part that would work on a seeded database and stop in production — `JsSafeLongSerializer` quotes a `Long` by value, so the same field arrives as a string on a 19-digit id and a number on a small one.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing