@burdenoff/microfe-movethewheels 2026.822.1 → 2026.828.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.
- package/dist/generated/wspace-operations.d.ts +168 -912
- package/dist/generated/wspace-types.d.ts +78432 -35831
- package/dist/hooks/useFleet.js +142 -74
- package/dist/hooks/useImportExport.js +22 -51
- package/dist/hooks/useInventory.js +163 -70
- package/dist/hooks/useOrders.js +2 -2
- package/dist/hooks/useReports.js +63 -73
- package/dist/hooks/useSettings.js +52 -44
- package/dist/hooks/useTracking.js +5 -5
- package/dist/index.js +33 -33
- package/dist/movethewheels/hooks/index.d.ts +2 -2
- package/dist/movethewheels/hooks/useFleet.d.ts +32 -1
- package/dist/movethewheels/hooks/useImportExport.d.ts +10 -0
- package/dist/movethewheels/hooks/useInventory.d.ts +67 -12
- package/dist/movethewheels/hooks/useOrders.d.ts +25 -2
- package/dist/movethewheels/pages/MarketplacePage.d.ts +7 -4
- package/dist/movethewheels/types/index.d.ts +2 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/arrow-down-right.js +11 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/arrow-left-right.js +22 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/arrow-up-right.js +11 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/calendar-clock.js +32 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/history.js +18 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/lock.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/user-round.js +13 -0
- package/dist/pages/CreateOrderPage.js +246 -195
- package/dist/pages/DeliveryCapturePage.js +91 -78
- package/dist/pages/DriversPage.js +202 -108
- package/dist/pages/InventoryPage.js +356 -131
- package/dist/pages/MarketplacePage.js +11 -432
- package/dist/pages/ProductDetailsPage.js +212 -156
- package/dist/pages/ReportsPage.js +120 -109
- package/dist/pages/VehicleDetailsPage.js +257 -193
- package/dist/utils/formatters.js +4 -1
- package/package.json +2 -2
- package/src/generated/wspace-operations.ts +134 -929
- package/src/generated/wspace-types.ts +91730 -40059
- package/src/movethewheels/hooks/index.ts +9 -0
- package/src/movethewheels/hooks/useFleet.ts +133 -3
- package/src/movethewheels/hooks/useImportExport.ts +36 -72
- package/src/movethewheels/hooks/useInventory.ts +311 -53
- package/src/movethewheels/hooks/useOrders.ts +31 -7
- package/src/movethewheels/hooks/useReports.ts +73 -87
- package/src/movethewheels/hooks/useSettings.ts +50 -53
- package/src/movethewheels/hooks/useTracking.ts +14 -14
- package/src/movethewheels/pages/CreateOrderPage.tsx +67 -10
- package/src/movethewheels/pages/DeliveryCapturePage.tsx +8 -0
- package/src/movethewheels/pages/DriversPage.tsx +181 -31
- package/src/movethewheels/pages/InventoryPage.tsx +299 -19
- package/src/movethewheels/pages/MarketplacePage.tsx +16 -539
- package/src/movethewheels/pages/ProductDetailsPage.tsx +68 -3
- package/src/movethewheels/pages/ReportsPage.tsx +23 -0
- package/src/movethewheels/pages/VehicleDetailsPage.tsx +86 -27
- package/src/movethewheels/types/index.ts +2 -0
- package/src/operations/wspace/movethewheels/fragments/core.graphql +23 -53
- package/src/operations/wspace/movethewheels/fragments/core.withdrawn.graphql +59 -0
- package/src/operations/wspace/movethewheels/mutations/entities.graphql +5 -5
- package/src/operations/wspace/movethewheels/mutations/marketplace-reports.graphql +18 -78
- package/src/operations/wspace/movethewheels/mutations/marketplace-reports.withdrawn.graphql +93 -0
- package/src/operations/wspace/movethewheels/mutations/orders.graphql +7 -7
- package/src/operations/wspace/movethewheels/queries/dashboard.graphql +3 -3
- package/src/operations/wspace/movethewheels/queries/entities.graphql +3 -3
- package/src/operations/wspace/movethewheels/queries/logistics.graphql +3 -3
- package/src/operations/wspace/movethewheels/queries/marketplace-reports.withdrawn.graphql +58 -0
- package/src/operations/wspace/movethewheels/queries/orders.graphql +3 -3
- package/dist/generated/global-operations.d.ts +0 -1
- package/dist/generated/global-types.d.ts +0 -23526
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.js +0 -8
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-up.js +0 -8
- package/src/generated/global-operations.ts +0 -2
- package/src/generated/global-types.ts +0 -27259
- package/src/operations/wspace/movethewheels/queries/marketplace-reports.graphql +0 -40
|
@@ -36,6 +36,8 @@ import { EmphasisPanel, IllustratedEmptyState, PagePurpose } from '@burdenoff/fe
|
|
|
36
36
|
import { VolumeBar } from '../components/charts';
|
|
37
37
|
import { useReports, type CreateReportInput } from '../hooks/useReports';
|
|
38
38
|
import { useAnalytics } from '../hooks/useAnalytics';
|
|
39
|
+
import { useDemandForecast } from '../hooks/useDemandForecast';
|
|
40
|
+
import { UpcomingDemandPanel } from '../components/UpcomingDemandPanel';
|
|
39
41
|
import { formatDate } from '../utils/formatters';
|
|
40
42
|
import { downloadFile, downloadJson, recordToCsv, slugifyForFilename } from '../utils/download';
|
|
41
43
|
|
|
@@ -62,6 +64,15 @@ export default function ReportsPage() {
|
|
|
62
64
|
});
|
|
63
65
|
const { analytics } = useAnalytics();
|
|
64
66
|
const previewData = analytics.trends.dailyOrders.slice(-7);
|
|
67
|
+
const {
|
|
68
|
+
laneForecast,
|
|
69
|
+
customerForecast,
|
|
70
|
+
laneVariance,
|
|
71
|
+
customerVariance,
|
|
72
|
+
isLoading: forecastLoading,
|
|
73
|
+
error: forecastError,
|
|
74
|
+
refetch: refetchForecast,
|
|
75
|
+
} = useDemandForecast(4, 8);
|
|
65
76
|
const [reportType, setReportType] = useState('operations');
|
|
66
77
|
const [busyId, setBusyId] = useState<string | null>(null);
|
|
67
78
|
const [creating, setCreating] = useState(false);
|
|
@@ -280,6 +291,18 @@ export default function ReportsPage() {
|
|
|
280
291
|
</div>
|
|
281
292
|
|
|
282
293
|
<div className="space-y-6">
|
|
294
|
+
{/* Demand forecast (BOFF-4393) — shared with AnalyticsPage so reports
|
|
295
|
+
and analytics show the same planning signal. */}
|
|
296
|
+
<UpcomingDemandPanel
|
|
297
|
+
laneForecast={laneForecast}
|
|
298
|
+
customerForecast={customerForecast}
|
|
299
|
+
laneVariance={laneVariance}
|
|
300
|
+
customerVariance={customerVariance}
|
|
301
|
+
isLoading={forecastLoading}
|
|
302
|
+
error={forecastError}
|
|
303
|
+
onRetry={refetchForecast}
|
|
304
|
+
/>
|
|
305
|
+
|
|
283
306
|
{/* Data preview — a real snapshot (recent order volume) of what a
|
|
284
307
|
generated report draws from. Honest empty state when no data. */}
|
|
285
308
|
<Card>
|
|
@@ -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,
|
|
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,
|
|
251
|
-
|
|
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: '
|
|
267
|
-
label: '
|
|
268
|
-
description: '
|
|
269
|
-
icon: <
|
|
270
|
-
|
|
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-
|
|
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
|
-
<
|
|
387
|
+
<UserRound size={18} /> Assigned Driver
|
|
366
388
|
</CardTitle>
|
|
367
389
|
</CardHeader>
|
|
368
|
-
<CardContent className="space-y-
|
|
369
|
-
|
|
370
|
-
<p className="text-sm text-text-secondary">
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
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
|
|
|
@@ -1,14 +1,20 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
4
|
-
orderType
|
|
10
|
+
deliveryJobNumber
|
|
5
11
|
status
|
|
6
12
|
priority
|
|
7
13
|
customerId
|
|
8
14
|
trackingNumber
|
|
9
15
|
pickupAddress
|
|
10
16
|
deliveryAddress
|
|
11
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
109
|
+
fragment InventoryItemCore on MtwInventoryItem {
|
|
104
110
|
id
|
|
105
|
-
|
|
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
|
|
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
|
|
142
|
+
fragment ShipmentCore on MtwShipment {
|
|
137
143
|
id
|
|
138
144
|
shipmentNumber
|
|
139
|
-
|
|
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
|
-
|
|
154
|
-
|
|
155
|
-
|
|
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:
|
|
18
|
-
|
|
17
|
+
mutation CreateProduct($input: CreateCargoItemInput!) {
|
|
18
|
+
createCargoItem(input: $input) {
|
|
19
19
|
...ProductCore
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
mutation UpdateProduct($id: ID!, $input:
|
|
24
|
-
|
|
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
|
-
|
|
30
|
+
deleteCargoItem(id: $id)
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
mutation CreateVehicle($input: CreateVehicleInput!) {
|
|
@@ -1,81 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
79
|
-
|
|
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
|
+
}
|