@burdenoff/microfe-movethewheels 2026.822.1 → 2026.827.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/generated/wspace-operations.d.ts +168 -912
  2. package/dist/generated/wspace-types.d.ts +78432 -35831
  3. package/dist/hooks/useFleet.js +142 -74
  4. package/dist/hooks/useInventory.js +163 -70
  5. package/dist/hooks/useOrders.js +2 -2
  6. package/dist/hooks/useTracking.js +5 -5
  7. package/dist/index.js +33 -33
  8. package/dist/movethewheels/hooks/index.d.ts +2 -2
  9. package/dist/movethewheels/hooks/useFleet.d.ts +32 -1
  10. package/dist/movethewheels/hooks/useInventory.d.ts +67 -12
  11. package/dist/movethewheels/hooks/useOrders.d.ts +25 -2
  12. package/dist/movethewheels/types/index.d.ts +2 -0
  13. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-down-right.js +11 -0
  14. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left-right.js +22 -0
  15. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-up-right.js +11 -0
  16. package/dist/node_modules/lucide-react/dist/esm/icons/calendar-clock.js +32 -0
  17. package/dist/node_modules/lucide-react/dist/esm/icons/history.js +18 -0
  18. package/dist/node_modules/lucide-react/dist/esm/icons/lock.js +16 -0
  19. package/dist/node_modules/lucide-react/dist/esm/icons/user-round.js +13 -0
  20. package/dist/pages/CreateOrderPage.js +246 -195
  21. package/dist/pages/DeliveryCapturePage.js +91 -78
  22. package/dist/pages/DriversPage.js +202 -108
  23. package/dist/pages/InventoryPage.js +356 -131
  24. package/dist/pages/ProductDetailsPage.js +212 -156
  25. package/dist/pages/VehicleDetailsPage.js +257 -193
  26. package/dist/utils/formatters.js +4 -1
  27. package/package.json +1 -1
  28. package/src/generated/wspace-operations.ts +134 -929
  29. package/src/generated/wspace-types.ts +91730 -40059
  30. package/src/movethewheels/hooks/index.ts +9 -0
  31. package/src/movethewheels/hooks/useFleet.ts +133 -3
  32. package/src/movethewheels/hooks/useInventory.ts +311 -53
  33. package/src/movethewheels/hooks/useOrders.ts +31 -7
  34. package/src/movethewheels/hooks/useTracking.ts +14 -14
  35. package/src/movethewheels/pages/CreateOrderPage.tsx +67 -10
  36. package/src/movethewheels/pages/DeliveryCapturePage.tsx +8 -0
  37. package/src/movethewheels/pages/DriversPage.tsx +181 -31
  38. package/src/movethewheels/pages/InventoryPage.tsx +299 -19
  39. package/src/movethewheels/pages/ProductDetailsPage.tsx +68 -3
  40. package/src/movethewheels/pages/VehicleDetailsPage.tsx +86 -27
  41. package/src/movethewheels/types/index.ts +2 -0
  42. package/src/operations/wspace/movethewheels/fragments/core.graphql +23 -53
  43. package/src/operations/wspace/movethewheels/fragments/core.withdrawn.graphql +59 -0
  44. package/src/operations/wspace/movethewheels/mutations/entities.graphql +5 -5
  45. package/src/operations/wspace/movethewheels/mutations/marketplace-reports.graphql +18 -78
  46. package/src/operations/wspace/movethewheels/mutations/marketplace-reports.withdrawn.graphql +93 -0
  47. package/src/operations/wspace/movethewheels/mutations/orders.graphql +7 -7
  48. package/src/operations/wspace/movethewheels/queries/dashboard.graphql +3 -3
  49. package/src/operations/wspace/movethewheels/queries/entities.graphql +3 -3
  50. package/src/operations/wspace/movethewheels/queries/logistics.graphql +3 -3
  51. package/src/operations/wspace/movethewheels/queries/marketplace-reports.withdrawn.graphql +58 -0
  52. package/src/operations/wspace/movethewheels/queries/orders.graphql +3 -3
  53. package/src/operations/wspace/movethewheels/queries/marketplace-reports.graphql +0 -40
@@ -4,7 +4,7 @@
4
4
 
5
5
  import { useEffect, useState } from 'react';
6
6
  import { useParams, useLocation } from 'react-router';
7
- import { Truck, ArrowLeft, MapPin, Fuel, Wrench, Edit, Save } from 'lucide-react';
7
+ import { Truck, ArrowLeft, MapPin, Fuel, UserRound, Edit, Save, Mail, Phone } from 'lucide-react';
8
8
  import { PageLayout, LoadingState, ErrorState } from '../components/PageLayout';
9
9
  import { StatusBadge, VehicleTypeBadge } from '../components/StatusBadge';
10
10
  import {
@@ -21,11 +21,13 @@ import {
21
21
  SelectItem,
22
22
  SelectTrigger,
23
23
  SelectValue,
24
+ Avatar,
25
+ AvatarFallback,
24
26
  } from '../components/ui';
25
27
  import { EmphasisPanel, NextSteps, PagePurpose } from '@burdenoff/fe-libs/ui';
26
- import { useVehicle, useFleet } from '../hooks/useFleet';
28
+ import { useVehicle, useVehicleDrivers, useFleet } from '../hooks/useFleet';
27
29
  import { useMoveTheWheels } from '../providers/MoveTheWheelsProvider';
28
- import { formatDate } from '../utils/formatters';
30
+ import { formatDate, getInitials } from '../utils/formatters';
29
31
  import { joinPath } from '../utils/navigation';
30
32
  import { FormError } from '../components/FormError';
31
33
  import { DocumentsCard } from '../components/DocumentsCard';
@@ -213,6 +215,13 @@ export default function VehicleDetailsPage() {
213
215
  const { basePath, navigate } = useMoveTheWheels();
214
216
  const { vehicle, isLoading, error, refetch } = useVehicle(vehicleId);
215
217
  const isEditRoute = useLocation().pathname.endsWith('/edit');
218
+ // Who is behind the wheel — resolved through DriverFilterInput.vehicleId, the
219
+ // same link `assignDriverVehicle` writes.
220
+ const {
221
+ drivers: assignedDrivers,
222
+ isLoading: driversLoading,
223
+ error: driversError,
224
+ } = useVehicleDrivers(isEditRoute ? undefined : vehicleId);
216
225
 
217
226
  const goBack = () => navigate?.(joinPath(basePath, 'fleet/vehicles'));
218
227
  const goTo = (path: string) => navigate?.(joinPath(basePath, path));
@@ -247,8 +256,8 @@ export default function VehicleDetailsPage() {
247
256
  }
248
257
  >
249
258
  <PagePurpose icon={<Truck size={18} />}>
250
- The full record for this vehicle — specs, capacity, fuel and mileage, maintenance schedule
251
- and current location. Use it to confirm a vehicle is fuelled, serviced and the right size
259
+ The full record for this vehicle — specs, capacity, fuel and mileage, who is driving it and
260
+ where it is right now. Use it to confirm a vehicle is fuelled, crewed and the right size
252
261
  before dispatching it on a delivery.
253
262
  </PagePurpose>
254
263
 
@@ -263,11 +272,15 @@ export default function VehicleDetailsPage() {
263
272
  onClick: () => goTo('orders'),
264
273
  },
265
274
  {
266
- id: 'maintenance',
267
- label: 'Schedule maintenance',
268
- description: 'Keep it road-ready and compliant.',
269
- icon: <Wrench size={16} />,
270
- onClick: () => {},
275
+ id: 'driver',
276
+ label: assignedDrivers.length > 0 ? 'Review the assigned driver' : 'Assign a driver',
277
+ description: 'A vehicle needs a driver before it can be dispatched.',
278
+ icon: <UserRound size={16} />,
279
+ done: assignedDrivers.length > 0,
280
+ onClick: () =>
281
+ assignedDrivers[0]
282
+ ? goTo(`fleet/drivers/${assignedDrivers[0].id}`)
283
+ : goTo('fleet/drivers'),
271
284
  },
272
285
  ]}
273
286
  />
@@ -277,23 +290,31 @@ export default function VehicleDetailsPage() {
277
290
  {/* Vehicle Information — the page's single emphasis zone */}
278
291
  <EmphasisPanel>
279
292
  <h2 className="text-base font-semibold text-text-primary mb-4">Vehicle Information</h2>
280
- <div className="grid grid-cols-2 md:grid-cols-4 gap-6">
293
+ <div className="grid grid-cols-2 md:grid-cols-3 gap-6">
281
294
  <div>
282
295
  <p className="text-sm text-text-secondary">Type</p>
283
296
  <p className="font-medium capitalize">{vehicle.type}</p>
284
297
  </div>
285
298
  <div>
286
299
  <p className="text-sm text-text-secondary">Make</p>
287
- <p className="font-medium">{vehicle.make}</p>
300
+ <p className="font-medium">{vehicle.make || '—'}</p>
288
301
  </div>
289
302
  <div>
290
303
  <p className="text-sm text-text-secondary">Model</p>
291
- <p className="font-medium">{vehicle.model}</p>
304
+ <p className="font-medium">{vehicle.model || '—'}</p>
292
305
  </div>
293
306
  <div>
294
307
  <p className="text-sm text-text-secondary">Year</p>
295
308
  <p className="font-medium">{vehicle.year}</p>
296
309
  </div>
310
+ <div>
311
+ <p className="text-sm text-text-secondary">License Plate</p>
312
+ <p className="font-medium">{vehicle.licensePlate || '—'}</p>
313
+ </div>
314
+ <div>
315
+ <p className="text-sm text-text-secondary">Ownership</p>
316
+ <p className="font-medium capitalize">{vehicle.ownershipType || '—'}</p>
317
+ </div>
297
318
  </div>
298
319
  </EmphasisPanel>
299
320
 
@@ -359,25 +380,63 @@ export default function VehicleDetailsPage() {
359
380
  </CardContent>
360
381
  </Card>
361
382
 
383
+ {/* Assigned driver — resolved from drivers(filter: { vehicleId }). */}
362
384
  <Card>
363
385
  <CardHeader>
364
386
  <CardTitle className="flex items-center gap-2">
365
- <Wrench size={18} /> Maintenance
387
+ <UserRound size={18} /> Assigned Driver
366
388
  </CardTitle>
367
389
  </CardHeader>
368
- <CardContent className="space-y-3">
369
- <div>
370
- <p className="text-sm text-text-secondary">Last Maintenance</p>
371
- <p className="font-medium">
372
- {vehicle.lastMaintenance ? formatDate(vehicle.lastMaintenance) : 'N/A'}
373
- </p>
374
- </div>
375
- <div>
376
- <p className="text-sm text-text-secondary">Next Scheduled</p>
377
- <p className="font-medium">
378
- {vehicle.nextMaintenance ? formatDate(vehicle.nextMaintenance) : 'N/A'}
379
- </p>
380
- </div>
390
+ <CardContent className="space-y-4">
391
+ {driversLoading ? (
392
+ <p className="text-sm text-text-secondary">Loading assignment…</p>
393
+ ) : driversError ? (
394
+ <p className="text-sm text-status-error-text">{driversError.message}</p>
395
+ ) : assignedDrivers.length === 0 ? (
396
+ <div className="space-y-3">
397
+ <p className="text-sm text-text-secondary">
398
+ No driver is assigned to this vehicle yet.
399
+ </p>
400
+ <Button variant="outline" size="sm" onClick={() => goTo('fleet/drivers')}>
401
+ Assign from the roster
402
+ </Button>
403
+ </div>
404
+ ) : (
405
+ assignedDrivers.map((driver) => (
406
+ <div
407
+ key={driver.id}
408
+ role="button"
409
+ tabIndex={0}
410
+ className="flex w-full items-start gap-3 rounded-lg p-2 text-left hover:bg-bg-sunken/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-action-primary-bg"
411
+ onClick={() => goTo(`fleet/drivers/${driver.id}`)}
412
+ onKeyDown={(e) => {
413
+ if (e.key === 'Enter' || e.key === ' ') {
414
+ e.preventDefault();
415
+ goTo(`fleet/drivers/${driver.id}`);
416
+ }
417
+ }}
418
+ >
419
+ <Avatar>
420
+ <AvatarFallback>{getInitials(driver.fullName)}</AvatarFallback>
421
+ </Avatar>
422
+ <div className="min-w-0 space-y-1">
423
+ <p className="font-medium">{driver.fullName}</p>
424
+ <p className="text-xs text-text-secondary">{driver.employeeId}</p>
425
+ <StatusBadge status={driver.status} type="driver" size="sm" />
426
+ {driver.email && (
427
+ <p className="flex items-center gap-1.5 truncate text-sm text-text-secondary">
428
+ <Mail size={13} /> {driver.email}
429
+ </p>
430
+ )}
431
+ {driver.phone && (
432
+ <p className="flex items-center gap-1.5 text-sm text-text-secondary">
433
+ <Phone size={13} /> {driver.phone}
434
+ </p>
435
+ )}
436
+ </div>
437
+ </div>
438
+ ))
439
+ )}
381
440
  </CardContent>
382
441
  </Card>
383
442
 
@@ -328,6 +328,8 @@ export interface Vehicle {
328
328
  make: string;
329
329
  model: string;
330
330
  licensePlate: string;
331
+ /** MtwVehicle.ownershipType — free-text, e.g. "owned", "leased". */
332
+ ownershipType?: string;
331
333
  year: number;
332
334
  capacity: {
333
335
  weight: number;
@@ -1,14 +1,20 @@
1
- fragment MovethewheelsOrderCore on MovethewheelsOrder {
1
+ # Core selection sets for the wspace-movethewheels-svc surface.
2
+ #
3
+ # Fragment names keep the MFE's own domain vocabulary (Order, Product, ...)
4
+ # because that is what src/movethewheels/ calls these concepts; the `on <Type>`
5
+ # condition is what has to track the service, which renamed its GraphQL types
6
+ # to the Mtw* prefix (BOFF-6758).
7
+
8
+ fragment MovethewheelsOrderCore on MtwDeliveryJob {
2
9
  id
3
- orderNumber
4
- orderType
10
+ deliveryJobNumber
5
11
  status
6
12
  priority
7
13
  customerId
8
14
  trackingNumber
9
15
  pickupAddress
10
16
  deliveryAddress
11
- items
17
+ cargoItems
12
18
  pricing
13
19
  scheduledDelivery
14
20
  vehicleId
@@ -17,7 +23,7 @@ fragment MovethewheelsOrderCore on MovethewheelsOrder {
17
23
  updatedAt
18
24
  }
19
25
 
20
- fragment CustomerCore on Customer {
26
+ fragment CustomerCore on MtwCustomer {
21
27
  id
22
28
  name
23
29
  email
@@ -30,7 +36,7 @@ fragment CustomerCore on Customer {
30
36
  updatedAt
31
37
  }
32
38
 
33
- fragment ProductCore on Product {
39
+ fragment ProductCore on MtwCargoItem {
34
40
  id
35
41
  sku
36
42
  name
@@ -47,7 +53,7 @@ fragment ProductCore on Product {
47
53
  updatedAt
48
54
  }
49
55
 
50
- fragment VehicleCore on Vehicle {
56
+ fragment VehicleCore on MtwVehicle {
51
57
  id
52
58
  vehicleNumber
53
59
  make
@@ -65,7 +71,7 @@ fragment VehicleCore on Vehicle {
65
71
  updatedAt
66
72
  }
67
73
 
68
- fragment DriverCore on Driver {
74
+ fragment DriverCore on MtwDriver {
69
75
  id
70
76
  employeeId
71
77
  firstName
@@ -84,7 +90,7 @@ fragment DriverCore on Driver {
84
90
  updatedAt
85
91
  }
86
92
 
87
- fragment WarehouseCore on Warehouse {
93
+ fragment WarehouseCore on MtwWarehouse {
88
94
  id
89
95
  name
90
96
  code
@@ -100,9 +106,9 @@ fragment WarehouseCore on Warehouse {
100
106
  updatedAt
101
107
  }
102
108
 
103
- fragment InventoryItemCore on InventoryItem {
109
+ fragment InventoryItemCore on MtwInventoryItem {
104
110
  id
105
- productId
111
+ cargoItemId
106
112
  warehouseId
107
113
  locationId
108
114
  onHand
@@ -116,7 +122,7 @@ fragment InventoryItemCore on InventoryItem {
116
122
  updatedAt
117
123
  }
118
124
 
119
- fragment RouteCore on Route {
125
+ fragment RouteCore on MtwRoute {
120
126
  id
121
127
  name
122
128
  status
@@ -133,10 +139,10 @@ fragment RouteCore on Route {
133
139
  updatedAt
134
140
  }
135
141
 
136
- fragment ShipmentCore on Shipment {
142
+ fragment ShipmentCore on MtwShipment {
137
143
  id
138
144
  shipmentNumber
139
- orderId
145
+ deliveryJobId
140
146
  customerId
141
147
  carrierId
142
148
  status
@@ -150,42 +156,6 @@ fragment ShipmentCore on Shipment {
150
156
  updatedAt
151
157
  }
152
158
 
153
- fragment ServiceProviderCore on ServiceProvider {
154
- id
155
- name
156
- type
157
- description
158
- rating
159
- contactInfo
160
- services
161
- isVerified
162
- isActive
163
- createdAt
164
- updatedAt
165
- }
166
-
167
- fragment ServiceOfferingCore on ServiceOffering {
168
- id
169
- providerId
170
- name
171
- description
172
- category
173
- price
174
- currency
175
- availability
176
- createdAt
177
- updatedAt
178
- }
179
-
180
- fragment MovethewheelsReportCore on MovethewheelsReport {
181
- id
182
- name
183
- type
184
- description
185
- schedule
186
- lastGenerated
187
- configuration
188
- status
189
- createdAt
190
- updatedAt
191
- }
159
+ # The ServiceProvider / ServiceOffering / MovethewheelsReport fragments that
160
+ # used to live here are preserved in `core.withdrawn.graphql` — the service no
161
+ # longer exposes those types.
@@ -0,0 +1,59 @@
1
+ # ─── Withdrawn service surface — preserved, not deleted ──────────────────────
2
+ #
3
+ # `ServiceProvider`, `ServiceOffering` and `MovethewheelsReport` were dropped
4
+ # from wspace-movethewheels-svc by migration
5
+ # `20260707000001_movethewheels_reuse_cleanup`. The live supergraph carries no
6
+ # replacement for any of them:
7
+ #
8
+ # * no Mtw* provider or offering type exists — `MtwIntegration` is a
9
+ # TMS/visibility connector (Project44 / FourKites / Descartes), a different
10
+ # domain, not a marketplace listing;
11
+ # * the platform-wide `Report` type belongs to the analytics-report module and
12
+ # has a different shape (sections / parameters / runs, and no
13
+ # type / schedule / lastGenerated / configuration), so it is not a drop-in.
14
+ #
15
+ # These fragments are kept verbatim so they can be restored unchanged the day the
16
+ # service re-publishes the surface. Files matching `*.withdrawn.graphql` are
17
+ # excluded from the codegen `documents` globs in `.graphqlrc.yml`, because
18
+ # codegen validates every document it loads and an unresolvable type condition
19
+ # fails the whole run.
20
+
21
+ fragment ServiceProviderCore on ServiceProvider {
22
+ id
23
+ name
24
+ type
25
+ description
26
+ rating
27
+ contactInfo
28
+ services
29
+ isVerified
30
+ isActive
31
+ createdAt
32
+ updatedAt
33
+ }
34
+
35
+ fragment ServiceOfferingCore on ServiceOffering {
36
+ id
37
+ providerId
38
+ name
39
+ description
40
+ category
41
+ price
42
+ currency
43
+ availability
44
+ createdAt
45
+ updatedAt
46
+ }
47
+
48
+ fragment MovethewheelsReportCore on MovethewheelsReport {
49
+ id
50
+ name
51
+ type
52
+ description
53
+ schedule
54
+ lastGenerated
55
+ configuration
56
+ status
57
+ createdAt
58
+ updatedAt
59
+ }
@@ -14,20 +14,20 @@ mutation DeleteCustomer($id: ID!) {
14
14
  deleteCustomer(id: $id)
15
15
  }
16
16
 
17
- mutation CreateProduct($input: CreateProductInput!) {
18
- createProduct(input: $input) {
17
+ mutation CreateProduct($input: CreateCargoItemInput!) {
18
+ createCargoItem(input: $input) {
19
19
  ...ProductCore
20
20
  }
21
21
  }
22
22
 
23
- mutation UpdateProduct($id: ID!, $input: UpdateProductInput!) {
24
- updateProduct(id: $id, input: $input) {
23
+ mutation UpdateProduct($id: ID!, $input: UpdateCargoItemInput!) {
24
+ updateCargoItem(id: $id, input: $input) {
25
25
  ...ProductCore
26
26
  }
27
27
  }
28
28
 
29
29
  mutation DeleteProduct($id: ID!) {
30
- deleteProduct(id: $id)
30
+ deleteCargoItem(id: $id)
31
31
  }
32
32
 
33
33
  mutation CreateVehicle($input: CreateVehicleInput!) {
@@ -1,81 +1,21 @@
1
- mutation CreateServiceProvider($input: CreateServiceProviderInput!) {
2
- createServiceProvider(input: $input) {
3
- ...ServiceProviderCore
4
- }
5
- }
6
-
7
- mutation UpdateServiceProvider($id: ID!, $input: UpdateServiceProviderInput!) {
8
- updateServiceProvider(id: $id, input: $input) {
9
- ...ServiceProviderCore
10
- }
11
- }
12
-
13
- mutation DeleteServiceProvider($id: ID!) {
14
- deleteServiceProvider(id: $id)
15
- }
16
-
17
- mutation CreateServiceOffering($input: CreateServiceOfferingInput!) {
18
- createServiceOffering(input: $input) {
19
- ...ServiceOfferingCore
20
- }
21
- }
22
-
23
- mutation UpdateServiceOffering($id: ID!, $input: UpdateServiceOfferingInput!) {
24
- updateServiceOffering(id: $id, input: $input) {
25
- ...ServiceOfferingCore
26
- }
27
- }
28
-
29
- mutation DeleteServiceOffering($id: ID!) {
30
- deleteServiceOffering(id: $id)
31
- }
32
-
33
- mutation CreateMovethewheelsReport($input: CreateMovethewheelsReportInput!) {
34
- createMovethewheelsReport(input: $input) {
35
- ...MovethewheelsReportCore
36
- }
37
- }
38
-
39
- mutation UpdateMovethewheelsReport($id: ID!, $input: UpdateMovethewheelsReportInput!) {
40
- updateMovethewheelsReport(id: $id, input: $input) {
41
- ...MovethewheelsReportCore
42
- }
43
- }
44
-
45
- mutation DeleteMovethewheelsReport($id: ID!) {
46
- deleteMovethewheelsReport(id: $id)
47
- }
48
-
49
- mutation GenerateMovethewheelsReport($input: GenerateMovethewheelsReportInput!) {
50
- generateMovethewheelsReport(input: $input) {
51
- generatedAt
52
- result
53
- report {
54
- ...MovethewheelsReportCore
55
- }
56
- }
57
- }
58
-
59
- mutation ImportMovethewheelsData($input: MovethewheelsImportDataInput!) {
60
- importData(input: $input) {
61
- success
62
- message
63
- payload
64
- }
65
- }
66
-
67
- mutation ExportMovethewheelsData($input: MovethewheelsExportDataInput!) {
68
- exportData(input: $input) {
69
- success
70
- message
71
- payload
72
- }
73
- }
74
-
75
- mutation UpdateMovethewheelsModuleSettings($input: UpdateMovethewheelsModuleSettingsInput!) {
76
- updateModuleSettings(input: $input) {
1
+ # Data export against the live wspace-movethewheels-svc surface.
2
+ #
3
+ # `exportData` / `MovethewheelsExportDataInput` were replaced by
4
+ # `exportMtwEntities` / `ExportMtwEntitiesInput`, which STARTS an export job
5
+ # instead of returning an inline success/message/payload envelope — hence the
6
+ # new selection set (MtwExportJob: poll `status`, then read `downloadUrl`).
7
+ #
8
+ # The marketplace, report and module-settings writes that used to live in this
9
+ # file are preserved in `marketplace-reports.withdrawn.graphql`; the service no
10
+ # longer exposes them.
11
+ mutation ExportMovethewheelsData($input: ExportMtwEntitiesInput!) {
12
+ exportMtwEntities(input: $input) {
13
+ id
77
14
  workspaceId
78
- preferences
79
- updatedAt
15
+ entityTypes
16
+ format
17
+ status
18
+ downloadUrl
19
+ createdAt
80
20
  }
81
21
  }
@@ -0,0 +1,93 @@
1
+ # ─── Withdrawn service surface — preserved, not deleted ──────────────────────
2
+ #
3
+ # Every write below targets a surface that migration
4
+ # `20260707000001_movethewheels_reuse_cleanup` removed from
5
+ # wspace-movethewheels-svc, with no replacement in the live supergraph:
6
+ #
7
+ # * service-provider / service-offering marketplace CRUD — no Mtw* provider or
8
+ # offering type exists (`MtwIntegration` is a TMS/visibility connector for
9
+ # Project44 / FourKites / Descartes, a different domain).
10
+ # * MovethewheelsReport CRUD + generation — the platform-wide `Report` type is
11
+ # the analytics-report module's, a different shape, not a drop-in.
12
+ # * `importData` — the service exposes an export job (`exportMtwEntities`, see
13
+ # mutations/marketplace-reports.graphql) but no import counterpart.
14
+ # * `updateModuleSettings` — no per-module settings surface remains.
15
+ #
16
+ # Kept verbatim so they can be restored unchanged if the surface returns. Files
17
+ # matching `*.withdrawn.graphql` are excluded from the codegen `documents` globs
18
+ # in `.graphqlrc.yml`; codegen validates every document it loads, and an
19
+ # unresolvable field fails the whole run.
20
+
21
+ mutation CreateServiceProvider($input: CreateServiceProviderInput!) {
22
+ createServiceProvider(input: $input) {
23
+ ...ServiceProviderCore
24
+ }
25
+ }
26
+
27
+ mutation UpdateServiceProvider($id: ID!, $input: UpdateServiceProviderInput!) {
28
+ updateServiceProvider(id: $id, input: $input) {
29
+ ...ServiceProviderCore
30
+ }
31
+ }
32
+
33
+ mutation DeleteServiceProvider($id: ID!) {
34
+ deleteServiceProvider(id: $id)
35
+ }
36
+
37
+ mutation CreateServiceOffering($input: CreateServiceOfferingInput!) {
38
+ createServiceOffering(input: $input) {
39
+ ...ServiceOfferingCore
40
+ }
41
+ }
42
+
43
+ mutation UpdateServiceOffering($id: ID!, $input: UpdateServiceOfferingInput!) {
44
+ updateServiceOffering(id: $id, input: $input) {
45
+ ...ServiceOfferingCore
46
+ }
47
+ }
48
+
49
+ mutation DeleteServiceOffering($id: ID!) {
50
+ deleteServiceOffering(id: $id)
51
+ }
52
+
53
+ mutation CreateMovethewheelsReport($input: CreateMovethewheelsReportInput!) {
54
+ createMovethewheelsReport(input: $input) {
55
+ ...MovethewheelsReportCore
56
+ }
57
+ }
58
+
59
+ mutation UpdateMovethewheelsReport($id: ID!, $input: UpdateMovethewheelsReportInput!) {
60
+ updateMovethewheelsReport(id: $id, input: $input) {
61
+ ...MovethewheelsReportCore
62
+ }
63
+ }
64
+
65
+ mutation DeleteMovethewheelsReport($id: ID!) {
66
+ deleteMovethewheelsReport(id: $id)
67
+ }
68
+
69
+ mutation GenerateMovethewheelsReport($input: GenerateMovethewheelsReportInput!) {
70
+ generateMovethewheelsReport(input: $input) {
71
+ generatedAt
72
+ result
73
+ report {
74
+ ...MovethewheelsReportCore
75
+ }
76
+ }
77
+ }
78
+
79
+ mutation ImportMovethewheelsData($input: MovethewheelsImportDataInput!) {
80
+ importData(input: $input) {
81
+ success
82
+ message
83
+ payload
84
+ }
85
+ }
86
+
87
+ mutation UpdateMovethewheelsModuleSettings($input: UpdateMovethewheelsModuleSettingsInput!) {
88
+ updateModuleSettings(input: $input) {
89
+ workspaceId
90
+ preferences
91
+ updatedAt
92
+ }
93
+ }
@@ -1,21 +1,21 @@
1
- mutation CreateMovethewheelsOrder($input: CreateOrderInput!) {
2
- createMovethewheelsOrder(input: $input) {
1
+ mutation CreateMovethewheelsOrder($input: CreateDeliveryJobInput!) {
2
+ createDeliveryJob(input: $input) {
3
3
  ...MovethewheelsOrderCore
4
4
  }
5
5
  }
6
6
 
7
- mutation UpdateMovethewheelsOrder($id: ID!, $input: UpdateOrderInput!) {
8
- updateMovethewheelsOrder(id: $id, input: $input) {
7
+ mutation UpdateMovethewheelsOrder($id: ID!, $input: UpdateDeliveryJobInput!) {
8
+ updateDeliveryJob(id: $id, input: $input) {
9
9
  ...MovethewheelsOrderCore
10
10
  }
11
11
  }
12
12
 
13
- mutation UpdateMovethewheelsOrderStatus($id: ID!, $input: UpdateOrderStatusInput!) {
14
- updateMovethewheelsOrderStatus(id: $id, input: $input) {
13
+ mutation UpdateMovethewheelsOrderStatus($id: ID!, $input: UpdateDeliveryJobStatusInput!) {
14
+ updateDeliveryJobStatus(id: $id, input: $input) {
15
15
  ...MovethewheelsOrderCore
16
16
  }
17
17
  }
18
18
 
19
19
  mutation DeleteMovethewheelsOrder($id: ID!) {
20
- deleteMovethewheelsOrder(id: $id)
20
+ deleteDeliveryJob(id: $id)
21
21
  }
@@ -1,16 +1,16 @@
1
1
  query GetMovethewheelsDashboard {
2
2
  dashboardMetrics {
3
- totalOrders
3
+ totalDeliveryJobs
4
4
  activeDeliveries
5
5
  availableDrivers
6
6
  activeVehicles
7
7
  lowStockItems
8
8
  totalRevenue
9
- recentOrders {
9
+ recentDeliveryJobs {
10
10
  ...MovethewheelsOrderCore
11
11
  }
12
12
  }
13
- orderStats {
13
+ deliveryJobStats {
14
14
  total
15
15
  pending
16
16
  inTransit