@living-architecture/riviere-schema 0.4.23 → 0.4.25

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.
@@ -1,2075 +0,0 @@
1
- {
2
- "version": "0.1",
3
- "metadata": {
4
- "name": "E-Commerce Complete Flow v2",
5
- "description": "Complete order placement flow with analytics tracking - UI → BFF → Orders → Inventory/Payment (parallel) → Shipping → Notifications → Analytics",
6
- "generated": "2025-12-01T10:00:00Z",
7
- "sources": [
8
- {
9
- "repository": "ecommerce-demo-app",
10
- "extractedAt": "2025-11-21T22:25:00Z"
11
- }
12
- ],
13
- "domains": {
14
- "ui": {
15
- "description": "User interface presentation layer",
16
- "systemType": "ui"
17
- },
18
- "bff": {
19
- "description": "Backend-for-frontend orchestration layer",
20
- "systemType": "bff"
21
- },
22
- "orders": {
23
- "description": "Order lifecycle management - placement, fulfillment, cancellation",
24
- "systemType": "domain"
25
- },
26
- "inventory": {
27
- "description": "Stock reservation and inventory management",
28
- "systemType": "domain"
29
- },
30
- "payment": {
31
- "description": "Payment processing and transaction management",
32
- "systemType": "domain"
33
- },
34
- "shipping": {
35
- "description": "Shipment creation, tracking, and delivery management",
36
- "systemType": "domain"
37
- },
38
- "notifications": {
39
- "description": "Customer notifications for orders and shipments",
40
- "systemType": "domain"
41
- },
42
- "analytics": {
43
- "description": "Order and shipment analytics tracking",
44
- "systemType": "domain"
45
- }
46
- },
47
- "customTypes": {
48
- "CronJob": {
49
- "description": "Scheduled background job that runs on a timer"
50
- }
51
- }
52
- },
53
- "components": [
54
- {
55
- "id": "ui:checkout:ui:orderpage",
56
- "type": "UI",
57
- "name": "Place Order Form",
58
- "domain": "ui",
59
- "module": "checkout",
60
- "description": "React form component for submitting order details",
61
- "route": "/checkout",
62
- "sourceLocation": {
63
- "filePath": "ui/src/pages/OrderPage.tsx",
64
- "lineNumber": 7,
65
- "methodName": "handlePlaceOrder",
66
- "repository": "ecommerce-demo-app"
67
- }
68
- },
69
- {
70
- "id": "bff:checkout:api:post:/orders",
71
- "type": "API",
72
- "name": "POST /orders",
73
- "domain": "bff",
74
- "module": "checkout",
75
- "description": "BFF endpoint that orchestrates order placement across domains",
76
- "apiType": "REST",
77
- "httpMethod": "POST",
78
- "path": "/orders",
79
- "sourceLocation": {
80
- "filePath": "bff/src/api/place-order/endpoint.ts",
81
- "lineNumber": 4,
82
- "methodName": "placeOrderBFFEndpoint",
83
- "repository": "ecommerce-demo-app"
84
- }
85
- },
86
- {
87
- "id": "bff:checkout:usecase:placeorderbffusecase",
88
- "type": "UseCase",
89
- "name": "Place Order BFF",
90
- "domain": "bff",
91
- "module": "checkout",
92
- "description": "Coordinates order placement, inventory check, and fraud detection",
93
- "sourceLocation": {
94
- "filePath": "bff/src/api/place-order/use-cases/place-order-bff-use-case.ts",
95
- "lineNumber": 15,
96
- "methodName": "apply",
97
- "repository": "ecommerce-demo-app"
98
- }
99
- },
100
- {
101
- "id": "orders:checkout:api:post:/orders",
102
- "type": "API",
103
- "name": "POST /orders",
104
- "domain": "orders",
105
- "module": "checkout",
106
- "description": "Orders domain API endpoint for creating orders",
107
- "apiType": "REST",
108
- "httpMethod": "POST",
109
- "path": "/orders",
110
- "sourceLocation": {
111
- "filePath": "orders-domain/src/api/place-order/endpoint.ts",
112
- "lineNumber": 4,
113
- "methodName": "placeOrderEndpoint",
114
- "repository": "ecommerce-demo-app"
115
- }
116
- },
117
- {
118
- "id": "orders:checkout:usecase:placeorderusecase",
119
- "type": "UseCase",
120
- "name": "Place Order",
121
- "domain": "orders",
122
- "module": "checkout",
123
- "description": "Creates order, validates items, and publishes OrderPlaced event",
124
- "sourceLocation": {
125
- "filePath": "orders-domain/src/api/place-order/use-cases/place-order-use-case.ts",
126
- "lineNumber": 11,
127
- "methodName": "apply",
128
- "repository": "ecommerce-demo-app"
129
- }
130
- },
131
- {
132
- "id": "orders:checkout:domainop:order.begin",
133
- "type": "DomainOp",
134
- "name": "Order.begin()",
135
- "domain": "orders",
136
- "module": "checkout",
137
- "description": "Transitions order from Draft to Placed state",
138
- "operationName": "begin",
139
- "entity": "Order",
140
- "sourceLocation": {
141
- "filePath": "orders-domain/src/domain/Order.ts",
142
- "lineNumber": 23,
143
- "methodName": "begin",
144
- "repository": "ecommerce-demo-app"
145
- },
146
- "signature": {
147
- "parameters": [
148
- {
149
- "name": "items",
150
- "type": "OrderItem[]",
151
- "description": "Line items for the order"
152
- },
153
- {
154
- "name": "customerId",
155
- "type": "string",
156
- "description": "Customer placing order"
157
- }
158
- ],
159
- "returnType": "void"
160
- },
161
- "behavior": {
162
- "reads": [
163
- "items parameter",
164
- "customerId parameter",
165
- "this.state"
166
- ],
167
- "validates": [
168
- "items.length > 0",
169
- "state === Draft",
170
- "customerId exists"
171
- ],
172
- "modifies": [
173
- "this.state ← Placed",
174
- "this.items ← items",
175
- "this.total ← calculated sum",
176
- "this.placedAt ← timestamp"
177
- ],
178
- "emits": [
179
- "order-placed event"
180
- ]
181
- },
182
- "stateChanges": [
183
- {
184
- "from": "Draft",
185
- "to": "Placed"
186
- }
187
- ]
188
- },
189
- {
190
- "id": "orders:checkout:event:orderplaced",
191
- "type": "Event",
192
- "name": "OrderPlaced",
193
- "domain": "orders",
194
- "module": "checkout",
195
- "eventName": "OrderPlaced",
196
- "sourceLocation": {
197
- "filePath": "orders-domain/src/infrastructure/events.ts",
198
- "lineNumber": 5,
199
- "repository": "ecommerce-demo-app"
200
- }
201
- },
202
- {
203
- "id": "inventory:fulfillment:eventhandler:handleorderplaced",
204
- "type": "EventHandler",
205
- "name": "Reserve Inventory Handler",
206
- "domain": "inventory",
207
- "module": "fulfillment",
208
- "description": "Handles OrderPlaced event by reserving inventory",
209
- "subscribedEvents": [
210
- "OrderPlaced"
211
- ],
212
- "sourceLocation": {
213
- "filePath": "inventory-domain/src/consumer/order-placed/handler.ts",
214
- "lineNumber": 5,
215
- "methodName": "handleOrderPlaced",
216
- "repository": "ecommerce-demo-app"
217
- }
218
- },
219
- {
220
- "id": "inventory:fulfillment:usecase:reserveinventoryusecase",
221
- "type": "UseCase",
222
- "name": "Reserve Inventory",
223
- "domain": "inventory",
224
- "module": "fulfillment",
225
- "description": "Reserves inventory for order items",
226
- "sourceLocation": {
227
- "filePath": "inventory-domain/src/consumer/order-placed/use-cases/reserve-inventory-use-case.ts",
228
- "lineNumber": 5,
229
- "methodName": "apply",
230
- "repository": "ecommerce-demo-app"
231
- }
232
- },
233
- {
234
- "id": "inventory:fulfillment:domainop:inventoryitem.reserve",
235
- "type": "DomainOp",
236
- "name": "InventoryItem.reserve()",
237
- "domain": "inventory",
238
- "module": "fulfillment",
239
- "description": "Reserves quantity from available stock",
240
- "operationName": "reserve",
241
- "entity": "InventoryItem",
242
- "sourceLocation": {
243
- "filePath": "inventory-domain/src/domain/InventoryItem.ts",
244
- "lineNumber": 18,
245
- "methodName": "reserve",
246
- "repository": "ecommerce-demo-app"
247
- },
248
- "signature": {
249
- "parameters": [
250
- {
251
- "name": "quantity",
252
- "type": "number"
253
- }
254
- ],
255
- "returnType": "void"
256
- },
257
- "behavior": {
258
- "validates": [
259
- "availableQuantity >= quantity"
260
- ],
261
- "modifies": [
262
- "availableQuantity",
263
- "reservedQuantity",
264
- "state"
265
- ]
266
- },
267
- "stateChanges": [
268
- {
269
- "from": "Available",
270
- "to": "Reserved"
271
- }
272
- ]
273
- },
274
- {
275
- "id": "inventory:fulfillment:event:inventoryreserved",
276
- "type": "Event",
277
- "name": "InventoryReserved",
278
- "domain": "inventory",
279
- "module": "fulfillment",
280
- "eventName": "InventoryReserved",
281
- "sourceLocation": {
282
- "filePath": "inventory-domain/src/infrastructure/events.ts",
283
- "lineNumber": 11,
284
- "repository": "ecommerce-demo-app"
285
- }
286
- },
287
- {
288
- "id": "payment:processing:eventhandler:handleorderplaced",
289
- "type": "EventHandler",
290
- "name": "Process Payment Handler",
291
- "domain": "payment",
292
- "module": "processing",
293
- "description": "Handles OrderPlaced event by processing payment",
294
- "subscribedEvents": [
295
- "OrderPlaced"
296
- ],
297
- "sourceLocation": {
298
- "filePath": "payment-domain/src/consumer/order-placed/handler.ts",
299
- "lineNumber": 5,
300
- "methodName": "handleOrderPlaced",
301
- "repository": "ecommerce-demo-app"
302
- }
303
- },
304
- {
305
- "id": "payment:processing:usecase:processpaymentusecase",
306
- "type": "UseCase",
307
- "name": "Process Payment",
308
- "domain": "payment",
309
- "module": "processing",
310
- "description": "Processes payment via external gateway",
311
- "sourceLocation": {
312
- "filePath": "payment-domain/src/consumer/order-placed/use-cases/process-payment-use-case.ts",
313
- "lineNumber": 9,
314
- "methodName": "apply",
315
- "repository": "ecommerce-demo-app"
316
- }
317
- },
318
- {
319
- "id": "payment:processing:domainop:payment.complete",
320
- "type": "DomainOp",
321
- "name": "Payment.complete()",
322
- "domain": "payment",
323
- "module": "processing",
324
- "description": "Marks payment as completed",
325
- "operationName": "complete",
326
- "entity": "Payment",
327
- "sourceLocation": {
328
- "filePath": "payment-domain/src/domain/Payment.ts",
329
- "lineNumber": 23,
330
- "methodName": "complete",
331
- "repository": "ecommerce-demo-app"
332
- },
333
- "signature": {
334
- "returnType": "void"
335
- },
336
- "behavior": {
337
- "modifies": [
338
- "state"
339
- ]
340
- },
341
- "stateChanges": [
342
- {
343
- "from": "Authorized",
344
- "to": "Completed"
345
- }
346
- ]
347
- },
348
- {
349
- "id": "payment:processing:event:paymentcompleted",
350
- "type": "Event",
351
- "name": "PaymentCompleted",
352
- "domain": "payment",
353
- "module": "processing",
354
- "eventName": "PaymentCompleted",
355
- "sourceLocation": {
356
- "filePath": "payment-domain/src/infrastructure/events.ts",
357
- "lineNumber": 5,
358
- "repository": "ecommerce-demo-app"
359
- }
360
- },
361
- {
362
- "id": "payment:processing:domainop:payment.fail",
363
- "type": "DomainOp",
364
- "name": "Payment.fail()",
365
- "domain": "payment",
366
- "module": "processing",
367
- "description": "Marks payment as failed due to authorization or capture failure",
368
- "operationName": "fail",
369
- "entity": "Payment",
370
- "sourceLocation": {
371
- "filePath": "payment-domain/src/domain/Payment.ts",
372
- "lineNumber": 27,
373
- "methodName": "fail",
374
- "repository": "ecommerce-demo-app"
375
- },
376
- "signature": {
377
- "returnType": "void"
378
- },
379
- "behavior": {
380
- "modifies": [
381
- "state"
382
- ]
383
- },
384
- "stateChanges": [
385
- {
386
- "from": "Authorized",
387
- "to": "Failed"
388
- }
389
- ]
390
- },
391
- {
392
- "id": "payment:processing:event:paymentfailed",
393
- "type": "Event",
394
- "name": "PaymentFailed",
395
- "domain": "payment",
396
- "module": "processing",
397
- "eventName": "PaymentFailed",
398
- "sourceLocation": {
399
- "filePath": "payment-domain/src/infrastructure/events.ts",
400
- "lineNumber": 11,
401
- "repository": "ecommerce-demo-app"
402
- }
403
- },
404
- {
405
- "id": "orders:checkout:eventhandler:handlepaymentfailed",
406
- "type": "EventHandler",
407
- "name": "Cancel Order After Payment Failure Handler",
408
- "domain": "orders",
409
- "module": "checkout",
410
- "description": "Cancels order when payment fails (compensation)",
411
- "subscribedEvents": [
412
- "PaymentFailed"
413
- ],
414
- "sourceLocation": {
415
- "filePath": "orders-domain/src/consumer/payment-failed/handler.ts",
416
- "lineNumber": 5,
417
- "methodName": "handlePaymentFailed",
418
- "repository": "ecommerce-demo-app"
419
- }
420
- },
421
- {
422
- "id": "orders:checkout:usecase:cancelorderafterpaymentfailureusecase",
423
- "type": "UseCase",
424
- "name": "Cancel Order After Payment Failure",
425
- "domain": "orders",
426
- "module": "checkout",
427
- "description": "Compensation flow: cancels order when payment fails",
428
- "sourceLocation": {
429
- "filePath": "orders-domain/src/consumer/payment-failed/use-cases/cancel-order-after-payment-failure-use-case.ts",
430
- "lineNumber": 7,
431
- "methodName": "apply",
432
- "repository": "ecommerce-demo-app"
433
- }
434
- },
435
- {
436
- "id": "notifications:alerts:eventhandler:handleorderplaced",
437
- "type": "EventHandler",
438
- "name": "Notify Order Placed Handler",
439
- "domain": "notifications",
440
- "module": "alerts",
441
- "description": "Sends order confirmation notification",
442
- "subscribedEvents": [
443
- "OrderPlaced"
444
- ],
445
- "sourceLocation": {
446
- "filePath": "notifications-domain/src/consumer/order-placed/handler.ts",
447
- "lineNumber": 4,
448
- "methodName": "handleOrderPlaced",
449
- "repository": "ecommerce-demo-app"
450
- }
451
- },
452
- {
453
- "id": "notifications:alerts:usecase:notifyorderplacedusecase",
454
- "type": "UseCase",
455
- "name": "Notify Order Placed",
456
- "domain": "notifications",
457
- "module": "alerts",
458
- "description": "Sends order confirmation email/SMS",
459
- "sourceLocation": {
460
- "filePath": "notifications-domain/src/consumer/order-placed/use-cases/notify-order-placed-use-case.ts",
461
- "lineNumber": 7,
462
- "methodName": "apply",
463
- "repository": "ecommerce-demo-app"
464
- }
465
- },
466
- {
467
- "id": "notifications:alerts:domainop:notification.marksent",
468
- "type": "DomainOp",
469
- "name": "Notification.markSent()",
470
- "domain": "notifications",
471
- "module": "alerts",
472
- "description": "Marks notification as sent",
473
- "operationName": "markSent",
474
- "entity": "Notification",
475
- "sourceLocation": {
476
- "filePath": "notifications-domain/src/domain/Notification.ts",
477
- "lineNumber": 24,
478
- "methodName": "markSent",
479
- "repository": "ecommerce-demo-app"
480
- },
481
- "signature": {
482
- "returnType": "void"
483
- },
484
- "behavior": {
485
- "modifies": [
486
- "status"
487
- ]
488
- },
489
- "stateChanges": [
490
- {
491
- "from": "Pending",
492
- "to": "Sent"
493
- }
494
- ]
495
- },
496
- {
497
- "id": "orders:checkout:eventhandler:handleinventoryreserved",
498
- "type": "EventHandler",
499
- "name": "Confirm Order After Inventory Handler",
500
- "domain": "orders",
501
- "module": "checkout",
502
- "description": "Marks inventory as reserved on order",
503
- "subscribedEvents": [
504
- "InventoryReserved"
505
- ],
506
- "sourceLocation": {
507
- "filePath": "orders-domain/src/consumer/inventory-reserved/handler.ts",
508
- "lineNumber": 5,
509
- "methodName": "handleInventoryReserved",
510
- "repository": "ecommerce-demo-app"
511
- }
512
- },
513
- {
514
- "id": "orders:checkout:usecase:confirmorderafterinventoryusecase",
515
- "type": "UseCase",
516
- "name": "Confirm Order After Inventory",
517
- "domain": "orders",
518
- "module": "checkout",
519
- "sourceLocation": {
520
- "filePath": "orders-domain/src/consumer/inventory-reserved/use-cases/confirm-order-after-inventory-use-case.ts",
521
- "lineNumber": 4,
522
- "methodName": "apply",
523
- "repository": "ecommerce-demo-app"
524
- }
525
- },
526
- {
527
- "id": "orders:checkout:domainop:order.markinventoryreserved",
528
- "type": "DomainOp",
529
- "name": "Order.markInventoryReserved()",
530
- "domain": "orders",
531
- "module": "checkout",
532
- "description": "Marks inventory as reserved, checks if order can be confirmed",
533
- "operationName": "markInventoryReserved",
534
- "entity": "Order",
535
- "sourceLocation": {
536
- "filePath": "orders-domain/src/domain/Order.ts",
537
- "lineNumber": 27,
538
- "methodName": "markInventoryReserved",
539
- "repository": "ecommerce-demo-app"
540
- },
541
- "signature": {
542
- "returnType": "void"
543
- },
544
- "behavior": {
545
- "modifies": [
546
- "inventoryReserved",
547
- "state"
548
- ]
549
- },
550
- "stateChanges": [
551
- {
552
- "from": "Placed",
553
- "to": "InventoryReserved"
554
- }
555
- ]
556
- },
557
- {
558
- "id": "orders:checkout:eventhandler:handlepaymentcompleted",
559
- "type": "EventHandler",
560
- "name": "Confirm Order After Payment Handler",
561
- "domain": "orders",
562
- "module": "checkout",
563
- "description": "Marks payment as completed on order",
564
- "subscribedEvents": [
565
- "PaymentCompleted"
566
- ],
567
- "sourceLocation": {
568
- "filePath": "orders-domain/src/consumer/payment-completed/handler.ts",
569
- "lineNumber": 5,
570
- "methodName": "handlePaymentCompleted",
571
- "repository": "ecommerce-demo-app"
572
- }
573
- },
574
- {
575
- "id": "orders:checkout:usecase:confirmorderafterpaymentusecase",
576
- "type": "UseCase",
577
- "name": "Confirm Order After Payment",
578
- "domain": "orders",
579
- "module": "checkout",
580
- "sourceLocation": {
581
- "filePath": "orders-domain/src/consumer/payment-completed/use-cases/confirm-order-after-payment-use-case.ts",
582
- "lineNumber": 7,
583
- "methodName": "apply",
584
- "repository": "ecommerce-demo-app"
585
- }
586
- },
587
- {
588
- "id": "orders:checkout:domainop:order.markpaymentcompleted",
589
- "type": "DomainOp",
590
- "name": "Order.markPaymentCompleted()",
591
- "domain": "orders",
592
- "module": "checkout",
593
- "description": "Marks payment as completed, may trigger confirmation",
594
- "operationName": "markPaymentCompleted",
595
- "entity": "Order",
596
- "sourceLocation": {
597
- "filePath": "orders-domain/src/domain/Order.ts",
598
- "lineNumber": 33,
599
- "methodName": "markPaymentCompleted",
600
- "repository": "ecommerce-demo-app"
601
- },
602
- "signature": {
603
- "returnType": "void"
604
- },
605
- "behavior": {
606
- "modifies": [
607
- "paymentCompleted",
608
- "state"
609
- ]
610
- },
611
- "stateChanges": [
612
- {
613
- "from": "Placed",
614
- "to": "PaymentCompleted"
615
- }
616
- ]
617
- },
618
- {
619
- "id": "orders:checkout:event:orderconfirmed",
620
- "type": "Event",
621
- "name": "OrderConfirmed",
622
- "domain": "orders",
623
- "module": "checkout",
624
- "eventName": "OrderConfirmed",
625
- "sourceLocation": {
626
- "filePath": "orders-domain/src/infrastructure/events.ts",
627
- "lineNumber": 12,
628
- "repository": "ecommerce-demo-app"
629
- }
630
- },
631
- {
632
- "id": "shipping:fulfillment:eventhandler:handleorderconfirmed",
633
- "type": "EventHandler",
634
- "name": "Create Shipment Handler",
635
- "domain": "shipping",
636
- "module": "fulfillment",
637
- "description": "Creates shipment when order is confirmed",
638
- "subscribedEvents": [
639
- "OrderConfirmed"
640
- ],
641
- "sourceLocation": {
642
- "filePath": "shipping-domain/src/consumer/order-confirmed/handler.ts",
643
- "lineNumber": 4,
644
- "methodName": "handleOrderConfirmed",
645
- "repository": "ecommerce-demo-app"
646
- }
647
- },
648
- {
649
- "id": "shipping:fulfillment:usecase:createshipmentusecase",
650
- "type": "UseCase",
651
- "name": "Create Shipment",
652
- "domain": "shipping",
653
- "module": "fulfillment",
654
- "description": "Creates shipment with tracking number from courier",
655
- "sourceLocation": {
656
- "filePath": "shipping-domain/src/consumer/order-confirmed/use-cases/create-shipment-use-case.ts",
657
- "lineNumber": 8,
658
- "methodName": "apply",
659
- "repository": "ecommerce-demo-app"
660
- }
661
- },
662
- {
663
- "id": "shipping:fulfillment:domainop:shipment.create",
664
- "type": "DomainOp",
665
- "name": "Shipment.create()",
666
- "domain": "shipping",
667
- "module": "fulfillment",
668
- "description": "Creates shipment with tracking number",
669
- "operationName": "create",
670
- "entity": "Shipment",
671
- "sourceLocation": {
672
- "filePath": "shipping-domain/src/domain/Shipment.ts",
673
- "lineNumber": 20,
674
- "methodName": "create",
675
- "repository": "ecommerce-demo-app"
676
- },
677
- "signature": {
678
- "parameters": [
679
- {
680
- "name": "trackingNumber",
681
- "type": "string"
682
- }
683
- ],
684
- "returnType": "void"
685
- },
686
- "behavior": {
687
- "modifies": [
688
- "trackingNumber",
689
- "state"
690
- ]
691
- },
692
- "stateChanges": [
693
- {
694
- "from": "Pending",
695
- "to": "Created"
696
- }
697
- ]
698
- },
699
- {
700
- "id": "shipping:fulfillment:event:shipmentcreated",
701
- "type": "Event",
702
- "name": "ShipmentCreated",
703
- "domain": "shipping",
704
- "module": "fulfillment",
705
- "eventName": "ShipmentCreated",
706
- "sourceLocation": {
707
- "filePath": "shipping-domain/src/infrastructure/events.ts",
708
- "lineNumber": 5,
709
- "repository": "ecommerce-demo-app"
710
- }
711
- },
712
- {
713
- "id": "inventory:fulfillment:eventhandler:handleshipmentcreated",
714
- "type": "EventHandler",
715
- "name": "Allocate Inventory Handler",
716
- "domain": "inventory",
717
- "module": "fulfillment",
718
- "description": "Allocates reserved inventory when shipment is created",
719
- "subscribedEvents": [
720
- "ShipmentCreated"
721
- ],
722
- "sourceLocation": {
723
- "filePath": "inventory-domain/src/consumer/shipment-created/handler.ts",
724
- "lineNumber": 5,
725
- "methodName": "handleShipmentCreated",
726
- "repository": "ecommerce-demo-app"
727
- }
728
- },
729
- {
730
- "id": "inventory:fulfillment:usecase:allocateinventoryusecase",
731
- "type": "UseCase",
732
- "name": "Allocate Inventory",
733
- "domain": "inventory",
734
- "module": "fulfillment",
735
- "description": "Transitions reserved inventory to allocated for shipment",
736
- "sourceLocation": {
737
- "filePath": "inventory-domain/src/consumer/shipment-created/use-cases/allocate-inventory-use-case.ts",
738
- "lineNumber": 3,
739
- "methodName": "apply",
740
- "repository": "ecommerce-demo-app"
741
- }
742
- },
743
- {
744
- "id": "inventory:fulfillment:domainop:inventoryitem.allocate",
745
- "type": "DomainOp",
746
- "name": "InventoryItem.allocate()",
747
- "domain": "inventory",
748
- "module": "fulfillment",
749
- "description": "Moves reserved quantity to allocated for shipment",
750
- "operationName": "allocate",
751
- "entity": "InventoryItem",
752
- "sourceLocation": {
753
- "filePath": "inventory-domain/src/domain/InventoryItem.ts",
754
- "lineNumber": 26,
755
- "methodName": "allocate",
756
- "repository": "ecommerce-demo-app"
757
- },
758
- "signature": {
759
- "parameters": [
760
- {
761
- "name": "quantity",
762
- "type": "number"
763
- }
764
- ],
765
- "returnType": "void"
766
- },
767
- "behavior": {
768
- "validates": [
769
- "reservedQuantity >= quantity"
770
- ],
771
- "modifies": [
772
- "reservedQuantity",
773
- "allocatedQuantity",
774
- "state"
775
- ]
776
- },
777
- "stateChanges": [
778
- {
779
- "from": "Reserved",
780
- "to": "Allocated"
781
- }
782
- ]
783
- },
784
- {
785
- "id": "shipping:fulfillment:api:put:/shipments/:id/dispatch",
786
- "type": "API",
787
- "name": "PUT /shipments/:id/dispatch",
788
- "domain": "shipping",
789
- "module": "fulfillment",
790
- "description": "Dispatch shipment for delivery",
791
- "apiType": "REST",
792
- "httpMethod": "PUT",
793
- "path": "/shipments/:id/dispatch",
794
- "sourceLocation": {
795
- "filePath": "shipping-domain/src/api/dispatch-shipment/endpoint.ts",
796
- "lineNumber": 4,
797
- "methodName": "dispatchShipmentEndpoint",
798
- "repository": "ecommerce-demo-app"
799
- }
800
- },
801
- {
802
- "id": "shipping:fulfillment:usecase:dispatchshipmentusecase",
803
- "type": "UseCase",
804
- "name": "Dispatch Shipment",
805
- "domain": "shipping",
806
- "module": "fulfillment",
807
- "sourceLocation": {
808
- "filePath": "shipping-domain/src/api/dispatch-shipment/use-cases/dispatch-shipment-use-case.ts",
809
- "lineNumber": 7,
810
- "methodName": "apply",
811
- "repository": "ecommerce-demo-app"
812
- }
813
- },
814
- {
815
- "id": "shipping:fulfillment:domainop:shipment.dispatch",
816
- "type": "DomainOp",
817
- "name": "Shipment.dispatch()",
818
- "domain": "shipping",
819
- "module": "fulfillment",
820
- "description": "Marks shipment as dispatched",
821
- "operationName": "dispatch",
822
- "entity": "Shipment",
823
- "sourceLocation": {
824
- "filePath": "shipping-domain/src/domain/Shipment.ts",
825
- "lineNumber": 25,
826
- "methodName": "dispatch",
827
- "repository": "ecommerce-demo-app"
828
- },
829
- "signature": {
830
- "returnType": "void"
831
- },
832
- "behavior": {
833
- "modifies": [
834
- "state"
835
- ]
836
- },
837
- "stateChanges": [
838
- {
839
- "from": "Created",
840
- "to": "Dispatched"
841
- }
842
- ]
843
- },
844
- {
845
- "id": "shipping:fulfillment:event:shipmentdispatched",
846
- "type": "Event",
847
- "name": "ShipmentDispatched",
848
- "domain": "shipping",
849
- "module": "fulfillment",
850
- "eventName": "ShipmentDispatched",
851
- "sourceLocation": {
852
- "filePath": "shipping-domain/src/infrastructure/events.ts",
853
- "lineNumber": 11,
854
- "repository": "ecommerce-demo-app"
855
- }
856
- },
857
- {
858
- "id": "notifications:alerts:eventhandler:handleshipmentdispatched",
859
- "type": "EventHandler",
860
- "name": "Notify Shipment Dispatched Handler",
861
- "domain": "notifications",
862
- "module": "alerts",
863
- "subscribedEvents": [
864
- "ShipmentDispatched"
865
- ],
866
- "sourceLocation": {
867
- "filePath": "notifications-domain/src/consumer/shipment-dispatched/handler.ts",
868
- "lineNumber": 4,
869
- "methodName": "handleShipmentDispatched",
870
- "repository": "ecommerce-demo-app"
871
- }
872
- },
873
- {
874
- "id": "orders:checkout:eventhandler:handleshipmentdispatched",
875
- "type": "EventHandler",
876
- "name": "Ship Order Handler",
877
- "domain": "orders",
878
- "module": "checkout",
879
- "description": "Marks order as shipped when shipment is dispatched",
880
- "subscribedEvents": [
881
- "ShipmentDispatched"
882
- ],
883
- "sourceLocation": {
884
- "filePath": "orders-domain/src/consumer/shipment-dispatched/handler.ts",
885
- "lineNumber": 5,
886
- "methodName": "handleShipmentDispatched",
887
- "repository": "ecommerce-demo-app"
888
- }
889
- },
890
- {
891
- "id": "orders:checkout:usecase:shiporderusecase",
892
- "type": "UseCase",
893
- "name": "Ship Order",
894
- "domain": "orders",
895
- "module": "checkout",
896
- "description": "Transitions order to shipped state",
897
- "sourceLocation": {
898
- "filePath": "orders-domain/src/consumer/shipment-dispatched/use-cases/ship-order-use-case.ts",
899
- "lineNumber": 4,
900
- "methodName": "apply",
901
- "repository": "ecommerce-demo-app"
902
- }
903
- },
904
- {
905
- "id": "orders:checkout:domainop:order.ship",
906
- "type": "DomainOp",
907
- "name": "Order.ship()",
908
- "domain": "orders",
909
- "module": "checkout",
910
- "description": "Marks order as shipped",
911
- "operationName": "ship",
912
- "entity": "Order",
913
- "sourceLocation": {
914
- "filePath": "orders-domain/src/domain/Order.ts",
915
- "lineNumber": 49,
916
- "methodName": "ship",
917
- "repository": "ecommerce-demo-app"
918
- },
919
- "signature": {
920
- "returnType": "void"
921
- },
922
- "behavior": {
923
- "modifies": [
924
- "state"
925
- ]
926
- },
927
- "stateChanges": [
928
- {
929
- "from": "Confirmed",
930
- "to": "Shipped"
931
- }
932
- ]
933
- },
934
- {
935
- "id": "shipping:fulfillment:domainop:shipment.deliver",
936
- "type": "DomainOp",
937
- "name": "Shipment.deliver()",
938
- "domain": "shipping",
939
- "module": "fulfillment",
940
- "description": "Marks shipment as delivered",
941
- "operationName": "deliver",
942
- "entity": "Shipment",
943
- "sourceLocation": {
944
- "filePath": "shipping-domain/src/domain/Shipment.ts",
945
- "lineNumber": 33,
946
- "methodName": "deliver",
947
- "repository": "ecommerce-demo-app"
948
- },
949
- "signature": {
950
- "returnType": "void"
951
- },
952
- "behavior": {
953
- "modifies": [
954
- "state"
955
- ]
956
- },
957
- "stateChanges": [
958
- {
959
- "from": "InTransit",
960
- "to": "Delivered"
961
- }
962
- ]
963
- },
964
- {
965
- "id": "shipping:fulfillment:event:shipmentdelivered",
966
- "type": "Event",
967
- "name": "ShipmentDelivered",
968
- "domain": "shipping",
969
- "module": "fulfillment",
970
- "eventName": "ShipmentDelivered",
971
- "sourceLocation": {
972
- "filePath": "shipping-domain/src/infrastructure/events.ts",
973
- "lineNumber": 17,
974
- "repository": "ecommerce-demo-app"
975
- }
976
- },
977
- {
978
- "id": "orders:checkout:eventhandler:handleshipmentdelivered",
979
- "type": "EventHandler",
980
- "name": "Complete Order Handler",
981
- "domain": "orders",
982
- "module": "checkout",
983
- "subscribedEvents": [
984
- "ShipmentDelivered"
985
- ],
986
- "sourceLocation": {
987
- "filePath": "orders-domain/src/consumer/shipment-delivered/handler.ts",
988
- "lineNumber": 5,
989
- "methodName": "handleShipmentDelivered",
990
- "repository": "ecommerce-demo-app"
991
- }
992
- },
993
- {
994
- "id": "orders:checkout:usecase:completeorderusecase",
995
- "type": "UseCase",
996
- "name": "Complete Order",
997
- "domain": "orders",
998
- "module": "checkout",
999
- "sourceLocation": {
1000
- "filePath": "orders-domain/src/consumer/shipment-delivered/use-cases/complete-order-use-case.ts",
1001
- "lineNumber": 7,
1002
- "methodName": "apply",
1003
- "repository": "ecommerce-demo-app"
1004
- }
1005
- },
1006
- {
1007
- "id": "orders:checkout:domainop:order.deliver",
1008
- "type": "DomainOp",
1009
- "name": "Order.deliver()",
1010
- "domain": "orders",
1011
- "module": "checkout",
1012
- "description": "Marks order as delivered (final state)",
1013
- "operationName": "deliver",
1014
- "entity": "Order",
1015
- "sourceLocation": {
1016
- "filePath": "orders-domain/src/domain/Order.ts",
1017
- "lineNumber": 53,
1018
- "methodName": "deliver",
1019
- "repository": "ecommerce-demo-app"
1020
- },
1021
- "signature": {
1022
- "returnType": "void"
1023
- },
1024
- "behavior": {
1025
- "modifies": [
1026
- "state"
1027
- ]
1028
- },
1029
- "stateChanges": [
1030
- {
1031
- "from": "Shipped",
1032
- "to": "Delivered"
1033
- }
1034
- ]
1035
- },
1036
- {
1037
- "id": "notifications:alerts:eventhandler:handleshipmentdelivered",
1038
- "type": "EventHandler",
1039
- "name": "Notify Delivery Handler",
1040
- "domain": "notifications",
1041
- "module": "alerts",
1042
- "subscribedEvents": [
1043
- "ShipmentDelivered"
1044
- ],
1045
- "sourceLocation": {
1046
- "filePath": "notifications-domain/src/consumer/shipment-delivered/handler.ts",
1047
- "lineNumber": 4,
1048
- "methodName": "handleShipmentDelivered",
1049
- "repository": "ecommerce-demo-app"
1050
- }
1051
- },
1052
- {
1053
- "id": "inventory:fulfillment:api:get:/inventory/:sku",
1054
- "type": "API",
1055
- "name": "GET /inventory/:sku",
1056
- "domain": "inventory",
1057
- "module": "fulfillment",
1058
- "description": "Check stock availability for SKU",
1059
- "apiType": "REST",
1060
- "httpMethod": "GET",
1061
- "path": "/inventory/:sku",
1062
- "sourceLocation": {
1063
- "filePath": "inventory-domain/src/api/check-stock/endpoint.ts",
1064
- "lineNumber": 4,
1065
- "methodName": "checkStockEndpoint",
1066
- "repository": "ecommerce-demo-app"
1067
- }
1068
- },
1069
- {
1070
- "id": "inventory:fulfillment:usecase:checkstockusecase",
1071
- "type": "UseCase",
1072
- "name": "Check Stock",
1073
- "domain": "inventory",
1074
- "module": "fulfillment",
1075
- "sourceLocation": {
1076
- "filePath": "inventory-domain/src/api/check-stock/use-cases/check-stock-use-case.ts",
1077
- "lineNumber": 12,
1078
- "methodName": "apply",
1079
- "repository": "ecommerce-demo-app"
1080
- }
1081
- },
1082
- {
1083
- "id": "orders:checkout:api:post:/orders/:id/cancel",
1084
- "type": "API",
1085
- "name": "POST /orders/:id/cancel",
1086
- "domain": "orders",
1087
- "module": "checkout",
1088
- "description": "Cancel an order",
1089
- "apiType": "REST",
1090
- "httpMethod": "POST",
1091
- "path": "/orders/:id/cancel",
1092
- "sourceLocation": {
1093
- "filePath": "orders-domain/src/api/cancel-order/endpoint.ts",
1094
- "lineNumber": 4,
1095
- "methodName": "cancelOrderEndpoint",
1096
- "repository": "ecommerce-demo-app"
1097
- }
1098
- },
1099
- {
1100
- "id": "orders:checkout:usecase:cancelorderusecase",
1101
- "type": "UseCase",
1102
- "name": "Cancel Order",
1103
- "domain": "orders",
1104
- "module": "checkout",
1105
- "sourceLocation": {
1106
- "filePath": "orders-domain/src/api/cancel-order/use-cases/cancel-order-use-case.ts",
1107
- "lineNumber": 7,
1108
- "methodName": "apply",
1109
- "repository": "ecommerce-demo-app"
1110
- }
1111
- },
1112
- {
1113
- "id": "orders:checkout:domainop:order.cancel",
1114
- "type": "DomainOp",
1115
- "name": "Order.cancel()",
1116
- "domain": "orders",
1117
- "module": "checkout",
1118
- "description": "Cancels the order",
1119
- "operationName": "cancel",
1120
- "entity": "Order",
1121
- "sourceLocation": {
1122
- "filePath": "orders-domain/src/domain/Order.ts",
1123
- "lineNumber": 57,
1124
- "methodName": "cancel",
1125
- "repository": "ecommerce-demo-app"
1126
- },
1127
- "signature": {
1128
- "returnType": "void"
1129
- },
1130
- "behavior": {
1131
- "modifies": [
1132
- "state"
1133
- ]
1134
- },
1135
- "stateChanges": [
1136
- {
1137
- "from": "*",
1138
- "to": "Cancelled"
1139
- }
1140
- ]
1141
- },
1142
- {
1143
- "id": "orders:checkout:event:ordercancelled",
1144
- "type": "Event",
1145
- "name": "OrderCancelled",
1146
- "domain": "orders",
1147
- "module": "checkout",
1148
- "eventName": "OrderCancelled",
1149
- "sourceLocation": {
1150
- "filePath": "orders-domain/src/infrastructure/events.ts",
1151
- "lineNumber": 23,
1152
- "repository": "ecommerce-demo-app"
1153
- }
1154
- },
1155
- {
1156
- "id": "inventory:fulfillment:eventhandler:handleordercancelled",
1157
- "type": "EventHandler",
1158
- "name": "Release Inventory Handler",
1159
- "domain": "inventory",
1160
- "module": "fulfillment",
1161
- "subscribedEvents": [
1162
- "OrderCancelled"
1163
- ],
1164
- "sourceLocation": {
1165
- "filePath": "inventory-domain/src/consumer/order-cancelled/handler.ts",
1166
- "lineNumber": 5,
1167
- "methodName": "handleOrderCancelled",
1168
- "repository": "ecommerce-demo-app"
1169
- }
1170
- },
1171
- {
1172
- "id": "inventory:fulfillment:usecase:releaseinventoryusecase",
1173
- "type": "UseCase",
1174
- "name": "Release Inventory",
1175
- "domain": "inventory",
1176
- "module": "fulfillment",
1177
- "sourceLocation": {
1178
- "filePath": "inventory-domain/src/consumer/order-cancelled/use-cases/release-inventory-use-case.ts",
1179
- "lineNumber": 7,
1180
- "methodName": "apply",
1181
- "repository": "ecommerce-demo-app"
1182
- }
1183
- },
1184
- {
1185
- "id": "inventory:fulfillment:domainop:inventoryitem.release",
1186
- "type": "DomainOp",
1187
- "name": "InventoryItem.release()",
1188
- "domain": "inventory",
1189
- "module": "fulfillment",
1190
- "description": "Releases reserved inventory back to available",
1191
- "operationName": "release",
1192
- "entity": "InventoryItem",
1193
- "sourceLocation": {
1194
- "filePath": "inventory-domain/src/domain/InventoryItem.ts",
1195
- "lineNumber": 34,
1196
- "methodName": "release",
1197
- "repository": "ecommerce-demo-app"
1198
- },
1199
- "signature": {
1200
- "parameters": [
1201
- {
1202
- "name": "quantity",
1203
- "type": "number"
1204
- }
1205
- ],
1206
- "returnType": "void"
1207
- },
1208
- "behavior": {
1209
- "modifies": [
1210
- "reservedQuantity",
1211
- "availableQuantity",
1212
- "state"
1213
- ]
1214
- },
1215
- "stateChanges": [
1216
- {
1217
- "from": "Reserved",
1218
- "to": "Available"
1219
- }
1220
- ]
1221
- },
1222
- {
1223
- "id": "payment:processing:eventhandler:handleordercancelled",
1224
- "type": "EventHandler",
1225
- "name": "Refund Payment Handler",
1226
- "domain": "payment",
1227
- "module": "processing",
1228
- "description": "Refunds payment when order is cancelled",
1229
- "subscribedEvents": [
1230
- "OrderCancelled"
1231
- ],
1232
- "sourceLocation": {
1233
- "filePath": "payment-domain/src/consumer/order-cancelled/handler.ts",
1234
- "lineNumber": 5,
1235
- "methodName": "handleOrderCancelled",
1236
- "repository": "ecommerce-demo-app"
1237
- }
1238
- },
1239
- {
1240
- "id": "payment:processing:usecase:refundpaymentusecase",
1241
- "type": "UseCase",
1242
- "name": "Refund Payment",
1243
- "domain": "payment",
1244
- "module": "processing",
1245
- "description": "Processes refund for cancelled order",
1246
- "sourceLocation": {
1247
- "filePath": "payment-domain/src/consumer/order-cancelled/use-cases/refund-payment-use-case.ts",
1248
- "lineNumber": 8,
1249
- "methodName": "apply",
1250
- "repository": "ecommerce-demo-app"
1251
- }
1252
- },
1253
- {
1254
- "id": "payment:processing:domainop:payment.refund",
1255
- "type": "DomainOp",
1256
- "name": "Payment.refund()",
1257
- "domain": "payment",
1258
- "module": "processing",
1259
- "description": "Processes refund for cancelled order",
1260
- "operationName": "refund",
1261
- "entity": "Payment",
1262
- "sourceLocation": {
1263
- "filePath": "payment-domain/src/domain/Payment.ts",
1264
- "lineNumber": 31,
1265
- "methodName": "refund",
1266
- "repository": "ecommerce-demo-app"
1267
- },
1268
- "signature": {
1269
- "returnType": "void"
1270
- },
1271
- "behavior": {
1272
- "modifies": [
1273
- "state"
1274
- ]
1275
- },
1276
- "stateChanges": [
1277
- {
1278
- "from": "Completed",
1279
- "to": "Refunded"
1280
- }
1281
- ]
1282
- },
1283
- {
1284
- "id": "shipping:jobs:custom:updatetrackingcron",
1285
- "type": "Custom",
1286
- "customTypeName": "CronJob",
1287
- "name": "Update Tracking Cron",
1288
- "domain": "shipping",
1289
- "module": "jobs",
1290
- "description": "Scheduled job that polls courier API for tracking updates every 5 minutes",
1291
- "sourceLocation": {
1292
- "filePath": "shipping-domain/src/jobs/update-tracking/cron.ts",
1293
- "lineNumber": 10,
1294
- "methodName": "runTrackingUpdate",
1295
- "repository": "ecommerce-demo-app"
1296
- }
1297
- },
1298
- {
1299
- "id": "shipping:jobs:usecase:updatetrackingusecase",
1300
- "type": "UseCase",
1301
- "name": "Update Tracking",
1302
- "domain": "shipping",
1303
- "module": "jobs",
1304
- "description": "Checks courier API for tracking updates and transitions shipment states",
1305
- "sourceLocation": {
1306
- "filePath": "shipping-domain/src/jobs/update-tracking/use-cases/update-tracking-use-case.ts",
1307
- "lineNumber": 8,
1308
- "methodName": "apply",
1309
- "repository": "ecommerce-demo-app"
1310
- }
1311
- },
1312
- {
1313
- "id": "analytics:tracking:eventhandler:handleorderplaced",
1314
- "type": "EventHandler",
1315
- "name": "Track Order Placed Handler",
1316
- "domain": "analytics",
1317
- "module": "tracking",
1318
- "description": "Records order placement metrics for analytics",
1319
- "subscribedEvents": [
1320
- "OrderPlaced"
1321
- ],
1322
- "sourceLocation": {
1323
- "filePath": "analytics-domain/src/consumer/order-placed/handler.ts",
1324
- "lineNumber": 5,
1325
- "methodName": "handleOrderPlaced",
1326
- "repository": "ecommerce-demo-app"
1327
- }
1328
- },
1329
- {
1330
- "id": "analytics:tracking:usecase:recordordermetricsusecase",
1331
- "type": "UseCase",
1332
- "name": "Record Order Metrics",
1333
- "domain": "analytics",
1334
- "module": "tracking",
1335
- "description": "Stores order metrics in analytics warehouse",
1336
- "sourceLocation": {
1337
- "filePath": "analytics-domain/src/consumer/order-placed/use-cases/record-order-metrics-use-case.ts",
1338
- "lineNumber": 1,
1339
- "methodName": "apply",
1340
- "repository": "ecommerce-demo-app"
1341
- }
1342
- },
1343
- {
1344
- "id": "analytics:tracking:eventhandler:handleshipmentdelivered",
1345
- "type": "EventHandler",
1346
- "name": "Track Delivery Handler",
1347
- "domain": "analytics",
1348
- "module": "tracking",
1349
- "description": "Records delivery time metrics",
1350
- "subscribedEvents": [
1351
- "ShipmentDelivered"
1352
- ],
1353
- "sourceLocation": {
1354
- "filePath": "analytics-domain/src/consumer/shipment-delivered/handler.ts",
1355
- "lineNumber": 5,
1356
- "methodName": "handleShipmentDelivered",
1357
- "repository": "ecommerce-demo-app"
1358
- }
1359
- },
1360
- {
1361
- "id": "analytics:tracking:usecase:recorddeliverymetricsusecase",
1362
- "type": "UseCase",
1363
- "name": "Record Delivery Metrics",
1364
- "domain": "analytics",
1365
- "module": "tracking",
1366
- "description": "Calculates and stores delivery time analytics",
1367
- "sourceLocation": {
1368
- "filePath": "analytics-domain/src/consumer/shipment-delivered/use-cases/record-delivery-metrics-use-case.ts",
1369
- "lineNumber": 1,
1370
- "methodName": "apply",
1371
- "repository": "ecommerce-demo-app"
1372
- }
1373
- },
1374
- {
1375
- "id": "notifications:webhooks:eventhandler:handleorderconfirmed",
1376
- "type": "EventHandler",
1377
- "name": "Webhook Order Confirmed Handler",
1378
- "domain": "notifications",
1379
- "module": "webhooks",
1380
- "description": "Sends webhook to external systems when order confirmed",
1381
- "subscribedEvents": [
1382
- "OrderConfirmed"
1383
- ],
1384
- "sourceLocation": {
1385
- "filePath": "notifications-domain/src/consumer/order-confirmed/handler.ts",
1386
- "lineNumber": 5,
1387
- "methodName": "handleOrderConfirmed",
1388
- "repository": "ecommerce-demo-app"
1389
- }
1390
- },
1391
- {
1392
- "id": "notifications:webhooks:usecase:sendwebhookusecase",
1393
- "type": "UseCase",
1394
- "name": "Send Webhook",
1395
- "domain": "notifications",
1396
- "module": "webhooks",
1397
- "description": "Dispatches webhook notifications to registered endpoints",
1398
- "sourceLocation": {
1399
- "filePath": "notifications-domain/src/consumer/order-confirmed/use-cases/send-webhook-use-case.ts",
1400
- "lineNumber": 1,
1401
- "methodName": "apply",
1402
- "repository": "ecommerce-demo-app"
1403
- }
1404
- }
1405
- ],
1406
- "links": [
1407
- {
1408
- "source": "ui:checkout:ui:orderpage",
1409
- "target": "bff:checkout:api:post:/orders",
1410
- "type": "sync",
1411
- "sourceLocation": {
1412
- "filePath": "ui/src/pages/OrderPage.tsx",
1413
- "lineNumber": 8,
1414
- "repository": "ecommerce-demo-app"
1415
- }
1416
- },
1417
- {
1418
- "source": "bff:checkout:api:post:/orders",
1419
- "target": "bff:checkout:usecase:placeorderbffusecase",
1420
- "type": "sync",
1421
- "sourceLocation": {
1422
- "filePath": "bff/src/api/place-order/endpoint.ts",
1423
- "lineNumber": 8,
1424
- "repository": "ecommerce-demo-app"
1425
- }
1426
- },
1427
- {
1428
- "source": "bff:checkout:usecase:placeorderbffusecase",
1429
- "target": "orders:checkout:api:post:/orders",
1430
- "type": "sync",
1431
- "sourceLocation": {
1432
- "filePath": "bff/src/api/place-order/use-cases/place-order-bff-use-case.ts",
1433
- "lineNumber": 16,
1434
- "repository": "ecommerce-demo-app"
1435
- }
1436
- },
1437
- {
1438
- "source": "bff:checkout:usecase:placeorderbffusecase",
1439
- "target": "inventory:fulfillment:api:get:/inventory/:sku",
1440
- "type": "sync",
1441
- "sourceLocation": {
1442
- "filePath": "bff/src/api/place-order/use-cases/place-order-bff-use-case.ts",
1443
- "lineNumber": 26,
1444
- "repository": "ecommerce-demo-app"
1445
- }
1446
- },
1447
- {
1448
- "source": "orders:checkout:api:post:/orders",
1449
- "target": "orders:checkout:usecase:placeorderusecase",
1450
- "type": "sync",
1451
- "sourceLocation": {
1452
- "filePath": "orders-domain/src/api/place-order/endpoint.ts",
1453
- "lineNumber": 8,
1454
- "repository": "ecommerce-demo-app"
1455
- }
1456
- },
1457
- {
1458
- "source": "orders:checkout:usecase:placeorderusecase",
1459
- "target": "orders:checkout:domainop:order.begin",
1460
- "type": "sync",
1461
- "sourceLocation": {
1462
- "filePath": "orders-domain/src/api/place-order/use-cases/place-order-use-case.ts",
1463
- "lineNumber": 16,
1464
- "repository": "ecommerce-demo-app"
1465
- }
1466
- },
1467
- {
1468
- "source": "orders:checkout:usecase:placeorderusecase",
1469
- "target": "orders:checkout:event:orderplaced",
1470
- "type": "async",
1471
- "sourceLocation": {
1472
- "filePath": "orders-domain/src/api/place-order/use-cases/place-order-use-case.ts",
1473
- "lineNumber": 27,
1474
- "repository": "ecommerce-demo-app"
1475
- }
1476
- },
1477
- {
1478
- "source": "orders:checkout:event:orderplaced",
1479
- "target": "inventory:fulfillment:eventhandler:handleorderplaced",
1480
- "type": "async"
1481
- },
1482
- {
1483
- "source": "inventory:fulfillment:eventhandler:handleorderplaced",
1484
- "target": "inventory:fulfillment:usecase:reserveinventoryusecase",
1485
- "type": "sync",
1486
- "sourceLocation": {
1487
- "filePath": "inventory-domain/src/consumer/order-placed/handler.ts",
1488
- "lineNumber": 12,
1489
- "repository": "ecommerce-demo-app"
1490
- }
1491
- },
1492
- {
1493
- "source": "inventory:fulfillment:usecase:reserveinventoryusecase",
1494
- "target": "inventory:fulfillment:domainop:inventoryitem.reserve",
1495
- "type": "sync",
1496
- "sourceLocation": {
1497
- "filePath": "inventory-domain/src/consumer/order-placed/use-cases/reserve-inventory-use-case.ts",
1498
- "lineNumber": 12,
1499
- "repository": "ecommerce-demo-app"
1500
- }
1501
- },
1502
- {
1503
- "source": "inventory:fulfillment:usecase:reserveinventoryusecase",
1504
- "target": "inventory:fulfillment:event:inventoryreserved",
1505
- "type": "async",
1506
- "sourceLocation": {
1507
- "filePath": "inventory-domain/src/consumer/order-placed/use-cases/reserve-inventory-use-case.ts",
1508
- "lineNumber": 20,
1509
- "repository": "ecommerce-demo-app"
1510
- }
1511
- },
1512
- {
1513
- "source": "orders:checkout:event:orderplaced",
1514
- "target": "payment:processing:eventhandler:handleorderplaced",
1515
- "type": "async"
1516
- },
1517
- {
1518
- "source": "payment:processing:eventhandler:handleorderplaced",
1519
- "target": "payment:processing:usecase:processpaymentusecase",
1520
- "type": "sync",
1521
- "sourceLocation": {
1522
- "filePath": "payment-domain/src/consumer/order-placed/handler.ts",
1523
- "lineNumber": 10,
1524
- "repository": "ecommerce-demo-app"
1525
- }
1526
- },
1527
- {
1528
- "source": "payment:processing:usecase:processpaymentusecase",
1529
- "target": "payment:processing:domainop:payment.complete",
1530
- "type": "sync",
1531
- "sourceLocation": {
1532
- "filePath": "payment-domain/src/consumer/order-placed/use-cases/process-payment-use-case.ts",
1533
- "lineNumber": 18,
1534
- "repository": "ecommerce-demo-app"
1535
- }
1536
- },
1537
- {
1538
- "source": "payment:processing:usecase:processpaymentusecase",
1539
- "target": "payment:processing:event:paymentcompleted",
1540
- "type": "async",
1541
- "sourceLocation": {
1542
- "filePath": "payment-domain/src/consumer/order-placed/use-cases/process-payment-use-case.ts",
1543
- "lineNumber": 25,
1544
- "repository": "ecommerce-demo-app"
1545
- }
1546
- },
1547
- {
1548
- "source": "payment:processing:usecase:processpaymentusecase",
1549
- "target": "payment:processing:domainop:payment.fail",
1550
- "type": "sync",
1551
- "sourceLocation": {
1552
- "filePath": "payment-domain/src/consumer/order-placed/use-cases/process-payment-use-case.ts",
1553
- "lineNumber": 20,
1554
- "repository": "ecommerce-demo-app"
1555
- }
1556
- },
1557
- {
1558
- "source": "payment:processing:usecase:processpaymentusecase",
1559
- "target": "payment:processing:event:paymentfailed",
1560
- "type": "async",
1561
- "sourceLocation": {
1562
- "filePath": "payment-domain/src/consumer/order-placed/use-cases/process-payment-use-case.ts",
1563
- "lineNumber": 23,
1564
- "repository": "ecommerce-demo-app"
1565
- }
1566
- },
1567
- {
1568
- "source": "payment:processing:event:paymentfailed",
1569
- "target": "orders:checkout:eventhandler:handlepaymentfailed",
1570
- "type": "async"
1571
- },
1572
- {
1573
- "source": "orders:checkout:eventhandler:handlepaymentfailed",
1574
- "target": "orders:checkout:usecase:cancelorderafterpaymentfailureusecase",
1575
- "type": "sync",
1576
- "sourceLocation": {
1577
- "filePath": "orders-domain/src/consumer/payment-failed/handler.ts",
1578
- "lineNumber": 10,
1579
- "repository": "ecommerce-demo-app"
1580
- }
1581
- },
1582
- {
1583
- "source": "orders:checkout:usecase:cancelorderafterpaymentfailureusecase",
1584
- "target": "orders:checkout:domainop:order.cancel",
1585
- "type": "sync",
1586
- "sourceLocation": {
1587
- "filePath": "orders-domain/src/consumer/payment-failed/use-cases/cancel-order-after-payment-failure-use-case.ts",
1588
- "lineNumber": 10,
1589
- "repository": "ecommerce-demo-app"
1590
- }
1591
- },
1592
- {
1593
- "source": "orders:checkout:usecase:cancelorderafterpaymentfailureusecase",
1594
- "target": "orders:checkout:event:ordercancelled",
1595
- "type": "async",
1596
- "sourceLocation": {
1597
- "filePath": "orders-domain/src/consumer/payment-failed/use-cases/cancel-order-after-payment-failure-use-case.ts",
1598
- "lineNumber": 15,
1599
- "repository": "ecommerce-demo-app"
1600
- }
1601
- },
1602
- {
1603
- "source": "orders:checkout:event:orderplaced",
1604
- "target": "notifications:alerts:eventhandler:handleorderplaced",
1605
- "type": "async"
1606
- },
1607
- {
1608
- "source": "notifications:alerts:eventhandler:handleorderplaced",
1609
- "target": "notifications:alerts:usecase:notifyorderplacedusecase",
1610
- "type": "sync",
1611
- "sourceLocation": {
1612
- "filePath": "notifications-domain/src/consumer/order-placed/handler.ts",
1613
- "lineNumber": 12,
1614
- "repository": "ecommerce-demo-app"
1615
- }
1616
- },
1617
- {
1618
- "source": "notifications:alerts:usecase:notifyorderplacedusecase",
1619
- "target": "notifications:alerts:domainop:notification.marksent",
1620
- "type": "sync",
1621
- "sourceLocation": {
1622
- "filePath": "notifications-domain/src/consumer/order-placed/use-cases/notify-order-placed-use-case.ts",
1623
- "lineNumber": 15,
1624
- "repository": "ecommerce-demo-app"
1625
- }
1626
- },
1627
- {
1628
- "source": "inventory:fulfillment:event:inventoryreserved",
1629
- "target": "orders:checkout:eventhandler:handleinventoryreserved",
1630
- "type": "async"
1631
- },
1632
- {
1633
- "source": "orders:checkout:eventhandler:handleinventoryreserved",
1634
- "target": "orders:checkout:usecase:confirmorderafterinventoryusecase",
1635
- "type": "sync",
1636
- "sourceLocation": {
1637
- "filePath": "orders-domain/src/consumer/inventory-reserved/handler.ts",
1638
- "lineNumber": 10,
1639
- "repository": "ecommerce-demo-app"
1640
- }
1641
- },
1642
- {
1643
- "source": "orders:checkout:usecase:confirmorderafterinventoryusecase",
1644
- "target": "orders:checkout:domainop:order.markinventoryreserved",
1645
- "type": "sync",
1646
- "sourceLocation": {
1647
- "filePath": "orders-domain/src/consumer/inventory-reserved/use-cases/confirm-order-after-inventory-use-case.ts",
1648
- "lineNumber": 10,
1649
- "repository": "ecommerce-demo-app"
1650
- }
1651
- },
1652
- {
1653
- "source": "payment:processing:event:paymentcompleted",
1654
- "target": "orders:checkout:eventhandler:handlepaymentcompleted",
1655
- "type": "async"
1656
- },
1657
- {
1658
- "source": "orders:checkout:eventhandler:handlepaymentcompleted",
1659
- "target": "orders:checkout:usecase:confirmorderafterpaymentusecase",
1660
- "type": "sync",
1661
- "sourceLocation": {
1662
- "filePath": "orders-domain/src/consumer/payment-completed/handler.ts",
1663
- "lineNumber": 10,
1664
- "repository": "ecommerce-demo-app"
1665
- }
1666
- },
1667
- {
1668
- "source": "orders:checkout:usecase:confirmorderafterpaymentusecase",
1669
- "target": "orders:checkout:domainop:order.markpaymentcompleted",
1670
- "type": "sync",
1671
- "sourceLocation": {
1672
- "filePath": "orders-domain/src/consumer/payment-completed/use-cases/confirm-order-after-payment-use-case.ts",
1673
- "lineNumber": 10,
1674
- "repository": "ecommerce-demo-app"
1675
- }
1676
- },
1677
- {
1678
- "source": "orders:checkout:usecase:confirmorderafterinventoryusecase",
1679
- "target": "orders:checkout:event:orderconfirmed",
1680
- "type": "async",
1681
- "sourceLocation": {
1682
- "filePath": "orders-domain/src/consumer/inventory-reserved/use-cases/confirm-order-after-inventory-use-case.ts",
1683
- "lineNumber": 18,
1684
- "repository": "ecommerce-demo-app"
1685
- }
1686
- },
1687
- {
1688
- "source": "orders:checkout:event:orderconfirmed",
1689
- "target": "shipping:fulfillment:eventhandler:handleorderconfirmed",
1690
- "type": "async"
1691
- },
1692
- {
1693
- "source": "shipping:fulfillment:eventhandler:handleorderconfirmed",
1694
- "target": "shipping:fulfillment:usecase:createshipmentusecase",
1695
- "type": "sync",
1696
- "sourceLocation": {
1697
- "filePath": "shipping-domain/src/consumer/order-confirmed/handler.ts",
1698
- "lineNumber": 10,
1699
- "repository": "ecommerce-demo-app"
1700
- }
1701
- },
1702
- {
1703
- "source": "shipping:fulfillment:usecase:createshipmentusecase",
1704
- "target": "shipping:fulfillment:domainop:shipment.create",
1705
- "type": "sync",
1706
- "sourceLocation": {
1707
- "filePath": "shipping-domain/src/consumer/order-confirmed/use-cases/create-shipment-use-case.ts",
1708
- "lineNumber": 15,
1709
- "repository": "ecommerce-demo-app"
1710
- }
1711
- },
1712
- {
1713
- "source": "shipping:fulfillment:usecase:createshipmentusecase",
1714
- "target": "shipping:fulfillment:event:shipmentcreated",
1715
- "type": "async",
1716
- "sourceLocation": {
1717
- "filePath": "shipping-domain/src/consumer/order-confirmed/use-cases/create-shipment-use-case.ts",
1718
- "lineNumber": 22,
1719
- "repository": "ecommerce-demo-app"
1720
- }
1721
- },
1722
- {
1723
- "source": "shipping:fulfillment:event:shipmentcreated",
1724
- "target": "inventory:fulfillment:eventhandler:handleshipmentcreated",
1725
- "type": "async"
1726
- },
1727
- {
1728
- "source": "inventory:fulfillment:eventhandler:handleshipmentcreated",
1729
- "target": "inventory:fulfillment:usecase:allocateinventoryusecase",
1730
- "type": "sync",
1731
- "sourceLocation": {
1732
- "filePath": "inventory-domain/src/consumer/shipment-created/handler.ts",
1733
- "lineNumber": 14,
1734
- "repository": "ecommerce-demo-app"
1735
- }
1736
- },
1737
- {
1738
- "source": "inventory:fulfillment:usecase:allocateinventoryusecase",
1739
- "target": "inventory:fulfillment:domainop:inventoryitem.allocate",
1740
- "type": "sync",
1741
- "sourceLocation": {
1742
- "filePath": "inventory-domain/src/consumer/shipment-created/use-cases/allocate-inventory-use-case.ts",
1743
- "lineNumber": 16,
1744
- "repository": "ecommerce-demo-app"
1745
- }
1746
- },
1747
- {
1748
- "source": "shipping:fulfillment:api:put:/shipments/:id/dispatch",
1749
- "target": "shipping:fulfillment:usecase:dispatchshipmentusecase",
1750
- "type": "sync",
1751
- "sourceLocation": {
1752
- "filePath": "shipping-domain/src/api/dispatch-shipment/endpoint.ts",
1753
- "lineNumber": 8,
1754
- "repository": "ecommerce-demo-app"
1755
- }
1756
- },
1757
- {
1758
- "source": "shipping:fulfillment:usecase:dispatchshipmentusecase",
1759
- "target": "shipping:fulfillment:domainop:shipment.dispatch",
1760
- "type": "sync",
1761
- "sourceLocation": {
1762
- "filePath": "shipping-domain/src/api/dispatch-shipment/use-cases/dispatch-shipment-use-case.ts",
1763
- "lineNumber": 10,
1764
- "repository": "ecommerce-demo-app"
1765
- }
1766
- },
1767
- {
1768
- "source": "shipping:fulfillment:usecase:dispatchshipmentusecase",
1769
- "target": "shipping:fulfillment:event:shipmentdispatched",
1770
- "type": "async",
1771
- "sourceLocation": {
1772
- "filePath": "shipping-domain/src/api/dispatch-shipment/use-cases/dispatch-shipment-use-case.ts",
1773
- "lineNumber": 15,
1774
- "repository": "ecommerce-demo-app"
1775
- }
1776
- },
1777
- {
1778
- "source": "shipping:fulfillment:event:shipmentdispatched",
1779
- "target": "notifications:alerts:eventhandler:handleshipmentdispatched",
1780
- "type": "async"
1781
- },
1782
- {
1783
- "source": "shipping:fulfillment:event:shipmentdispatched",
1784
- "target": "orders:checkout:eventhandler:handleshipmentdispatched",
1785
- "type": "async"
1786
- },
1787
- {
1788
- "source": "orders:checkout:eventhandler:handleshipmentdispatched",
1789
- "target": "orders:checkout:usecase:shiporderusecase",
1790
- "type": "sync",
1791
- "sourceLocation": {
1792
- "filePath": "orders-domain/src/consumer/shipment-dispatched/handler.ts",
1793
- "lineNumber": 10,
1794
- "repository": "ecommerce-demo-app"
1795
- }
1796
- },
1797
- {
1798
- "source": "orders:checkout:usecase:shiporderusecase",
1799
- "target": "orders:checkout:domainop:order.ship",
1800
- "type": "sync",
1801
- "sourceLocation": {
1802
- "filePath": "orders-domain/src/consumer/shipment-dispatched/use-cases/ship-order-use-case.ts",
1803
- "lineNumber": 7,
1804
- "repository": "ecommerce-demo-app"
1805
- }
1806
- },
1807
- {
1808
- "source": "shipping:fulfillment:event:shipmentdelivered",
1809
- "target": "orders:checkout:eventhandler:handleshipmentdelivered",
1810
- "type": "async"
1811
- },
1812
- {
1813
- "source": "orders:checkout:eventhandler:handleshipmentdelivered",
1814
- "target": "orders:checkout:usecase:completeorderusecase",
1815
- "type": "sync",
1816
- "sourceLocation": {
1817
- "filePath": "orders-domain/src/consumer/shipment-delivered/handler.ts",
1818
- "lineNumber": 10,
1819
- "repository": "ecommerce-demo-app"
1820
- }
1821
- },
1822
- {
1823
- "source": "orders:checkout:usecase:completeorderusecase",
1824
- "target": "orders:checkout:domainop:order.deliver",
1825
- "type": "sync",
1826
- "sourceLocation": {
1827
- "filePath": "orders-domain/src/consumer/shipment-delivered/use-cases/complete-order-use-case.ts",
1828
- "lineNumber": 10,
1829
- "repository": "ecommerce-demo-app"
1830
- }
1831
- },
1832
- {
1833
- "source": "shipping:fulfillment:event:shipmentdelivered",
1834
- "target": "notifications:alerts:eventhandler:handleshipmentdelivered",
1835
- "type": "async"
1836
- },
1837
- {
1838
- "source": "inventory:fulfillment:api:get:/inventory/:sku",
1839
- "target": "inventory:fulfillment:usecase:checkstockusecase",
1840
- "type": "sync",
1841
- "sourceLocation": {
1842
- "filePath": "inventory-domain/src/api/check-stock/endpoint.ts",
1843
- "lineNumber": 8,
1844
- "repository": "ecommerce-demo-app"
1845
- }
1846
- },
1847
- {
1848
- "source": "orders:checkout:api:post:/orders/:id/cancel",
1849
- "target": "orders:checkout:usecase:cancelorderusecase",
1850
- "type": "sync",
1851
- "sourceLocation": {
1852
- "filePath": "orders-domain/src/api/cancel-order/endpoint.ts",
1853
- "lineNumber": 8,
1854
- "repository": "ecommerce-demo-app"
1855
- }
1856
- },
1857
- {
1858
- "source": "orders:checkout:usecase:cancelorderusecase",
1859
- "target": "orders:checkout:domainop:order.cancel",
1860
- "type": "sync",
1861
- "sourceLocation": {
1862
- "filePath": "orders-domain/src/api/cancel-order/use-cases/cancel-order-use-case.ts",
1863
- "lineNumber": 10,
1864
- "repository": "ecommerce-demo-app"
1865
- }
1866
- },
1867
- {
1868
- "source": "orders:checkout:usecase:cancelorderusecase",
1869
- "target": "orders:checkout:event:ordercancelled",
1870
- "type": "async",
1871
- "sourceLocation": {
1872
- "filePath": "orders-domain/src/api/cancel-order/use-cases/cancel-order-use-case.ts",
1873
- "lineNumber": 15,
1874
- "repository": "ecommerce-demo-app"
1875
- }
1876
- },
1877
- {
1878
- "source": "orders:checkout:event:ordercancelled",
1879
- "target": "inventory:fulfillment:eventhandler:handleordercancelled",
1880
- "type": "async"
1881
- },
1882
- {
1883
- "source": "inventory:fulfillment:eventhandler:handleordercancelled",
1884
- "target": "inventory:fulfillment:usecase:releaseinventoryusecase",
1885
- "type": "sync",
1886
- "sourceLocation": {
1887
- "filePath": "inventory-domain/src/consumer/order-cancelled/handler.ts",
1888
- "lineNumber": 10,
1889
- "repository": "ecommerce-demo-app"
1890
- }
1891
- },
1892
- {
1893
- "source": "inventory:fulfillment:usecase:releaseinventoryusecase",
1894
- "target": "inventory:fulfillment:domainop:inventoryitem.release",
1895
- "type": "sync",
1896
- "sourceLocation": {
1897
- "filePath": "inventory-domain/src/consumer/order-cancelled/use-cases/release-inventory-use-case.ts",
1898
- "lineNumber": 12,
1899
- "repository": "ecommerce-demo-app"
1900
- }
1901
- },
1902
- {
1903
- "source": "orders:checkout:event:ordercancelled",
1904
- "target": "payment:processing:eventhandler:handleordercancelled",
1905
- "type": "async"
1906
- },
1907
- {
1908
- "source": "payment:processing:eventhandler:handleordercancelled",
1909
- "target": "payment:processing:usecase:refundpaymentusecase",
1910
- "type": "sync",
1911
- "sourceLocation": {
1912
- "filePath": "payment-domain/src/consumer/order-cancelled/handler.ts",
1913
- "lineNumber": 10,
1914
- "repository": "ecommerce-demo-app"
1915
- }
1916
- },
1917
- {
1918
- "source": "payment:processing:usecase:refundpaymentusecase",
1919
- "target": "payment:processing:domainop:payment.refund",
1920
- "type": "sync",
1921
- "sourceLocation": {
1922
- "filePath": "payment-domain/src/consumer/order-cancelled/use-cases/refund-payment-use-case.ts",
1923
- "lineNumber": 15,
1924
- "repository": "ecommerce-demo-app"
1925
- }
1926
- },
1927
- {
1928
- "source": "shipping:jobs:custom:updatetrackingcron",
1929
- "target": "shipping:jobs:usecase:updatetrackingusecase",
1930
- "type": "sync",
1931
- "sourceLocation": {
1932
- "filePath": "shipping-domain/src/jobs/update-tracking/cron.ts",
1933
- "lineNumber": 13,
1934
- "repository": "ecommerce-demo-app"
1935
- }
1936
- },
1937
- {
1938
- "source": "shipping:jobs:usecase:updatetrackingusecase",
1939
- "target": "shipping:fulfillment:domainop:shipment.deliver",
1940
- "type": "sync",
1941
- "sourceLocation": {
1942
- "filePath": "shipping-domain/src/jobs/update-tracking/use-cases/update-tracking-use-case.ts",
1943
- "lineNumber": 27,
1944
- "repository": "ecommerce-demo-app"
1945
- }
1946
- },
1947
- {
1948
- "source": "shipping:jobs:usecase:updatetrackingusecase",
1949
- "target": "shipping:fulfillment:event:shipmentdelivered",
1950
- "type": "async",
1951
- "sourceLocation": {
1952
- "filePath": "shipping-domain/src/jobs/update-tracking/use-cases/update-tracking-use-case.ts",
1953
- "lineNumber": 36,
1954
- "repository": "ecommerce-demo-app"
1955
- }
1956
- },
1957
- {
1958
- "source": "orders:checkout:event:orderplaced",
1959
- "target": "analytics:tracking:eventhandler:handleorderplaced",
1960
- "type": "async"
1961
- },
1962
- {
1963
- "source": "analytics:tracking:eventhandler:handleorderplaced",
1964
- "target": "analytics:tracking:usecase:recordordermetricsusecase",
1965
- "type": "sync"
1966
- },
1967
- {
1968
- "source": "shipping:fulfillment:event:shipmentdelivered",
1969
- "target": "analytics:tracking:eventhandler:handleshipmentdelivered",
1970
- "type": "async"
1971
- },
1972
- {
1973
- "source": "analytics:tracking:eventhandler:handleshipmentdelivered",
1974
- "target": "analytics:tracking:usecase:recorddeliverymetricsusecase",
1975
- "type": "sync"
1976
- },
1977
- {
1978
- "source": "orders:checkout:event:orderconfirmed",
1979
- "target": "notifications:webhooks:eventhandler:handleorderconfirmed",
1980
- "type": "async"
1981
- },
1982
- {
1983
- "source": "notifications:webhooks:eventhandler:handleorderconfirmed",
1984
- "target": "notifications:webhooks:usecase:sendwebhookusecase",
1985
- "type": "sync"
1986
- }
1987
- ],
1988
- "externalLinks": [
1989
- {
1990
- "source": "payment:processing:usecase:processpaymentusecase",
1991
- "target": {
1992
- "name": "Stripe",
1993
- "url": "https://api.stripe.com"
1994
- },
1995
- "type": "sync",
1996
- "description": "Process payment via Stripe payment gateway"
1997
- },
1998
- {
1999
- "source": "payment:processing:usecase:refundpaymentusecase",
2000
- "target": {
2001
- "name": "Stripe",
2002
- "url": "https://api.stripe.com"
2003
- },
2004
- "type": "sync",
2005
- "description": "Process refund via Stripe payment gateway"
2006
- },
2007
- {
2008
- "source": "shipping:jobs:usecase:updatetrackingusecase",
2009
- "target": {
2010
- "name": "FedEx Tracking API",
2011
- "url": "https://apis.fedex.com"
2012
- },
2013
- "type": "sync",
2014
- "description": "Poll FedEx API for shipment tracking updates"
2015
- },
2016
- {
2017
- "source": "shipping:fulfillment:usecase:createshipmentusecase",
2018
- "target": {
2019
- "name": "FedEx Shipping API",
2020
- "url": "https://apis.fedex.com"
2021
- },
2022
- "type": "sync",
2023
- "description": "Create shipment and get tracking number from courier"
2024
- },
2025
- {
2026
- "source": "notifications:alerts:usecase:notifyorderplacedusecase",
2027
- "target": {
2028
- "name": "SendGrid",
2029
- "url": "https://api.sendgrid.com"
2030
- },
2031
- "type": "async",
2032
- "description": "Send order confirmation email via SendGrid"
2033
- },
2034
- {
2035
- "source": "bff:checkout:usecase:placeorderbffusecase",
2036
- "target": {
2037
- "name": "Fraud Detection Service",
2038
- "domain": "fraud-detection",
2039
- "repository": "fraud-detection-service"
2040
- },
2041
- "type": "sync",
2042
- "description": "Check order for fraud signals before processing"
2043
- },
2044
- {
2045
- "source": "bff:checkout:usecase:placeorderbffusecase",
2046
- "target": {
2047
- "name": "Customer Profile API",
2048
- "domain": "customers",
2049
- "repository": "customer-service"
2050
- },
2051
- "type": "sync",
2052
- "description": "Fetch customer profile and payment methods"
2053
- },
2054
- {
2055
- "source": "analytics:tracking:usecase:recordordermetricsusecase",
2056
- "target": {
2057
- "name": "Data Warehouse",
2058
- "domain": "data-platform",
2059
- "repository": "analytics-warehouse"
2060
- },
2061
- "type": "async",
2062
- "description": "Stream order metrics to analytics warehouse"
2063
- },
2064
- {
2065
- "source": "analytics:tracking:usecase:recorddeliverymetricsusecase",
2066
- "target": {
2067
- "name": "Data Warehouse",
2068
- "domain": "data-platform",
2069
- "repository": "analytics-warehouse"
2070
- },
2071
- "type": "async",
2072
- "description": "Stream delivery metrics to analytics warehouse"
2073
- }
2074
- ]
2075
- }