cabloy 5.1.124 → 5.1.126

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/.cabloy-version +1 -1
  2. package/.claude/skills/cabloy-backend-scaffold/SKILL.md +1 -1
  3. package/.claude/skills/cabloy-backend-scaffold/evals/evals.json +6 -0
  4. package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +13 -4
  5. package/.claude/skills/cabloy-workflow/SKILL.md +4 -2
  6. package/.claude/skills/cabloy-workflow/evals/evals.json +14 -2
  7. package/.claude/skills/cabloy-worktree-environment/SKILL.md +206 -0
  8. package/.claude/skills/cabloy-worktree-environment/evals/evals.json +77 -0
  9. package/.github/workflows/vona-test-pg.yml +3 -0
  10. package/.github/workflows/vona-test-sqlite3.yml +3 -0
  11. package/CHANGELOG.md +21 -0
  12. package/CLAUDE.md +1 -1
  13. package/cabloy-docs/.vitepress/config.mjs +2 -0
  14. package/cabloy-docs/ai/playbook-technical-blog-authoring.md +158 -0
  15. package/cabloy-docs/backend/backend-contract-emission-specimen.md +2 -2
  16. package/cabloy-docs/backend/dto-guide.md +10 -7
  17. package/cabloy-docs/backend/dto-infer-generation.md +127 -7
  18. package/cabloy-docs/backend/foundation.md +1 -1
  19. package/cabloy-docs/backend/introduction.md +1 -0
  20. package/cabloy-docs/backend/module-dependencies.md +104 -0
  21. package/cabloy-docs/backend/serialization-guide.md +6 -0
  22. package/cabloy-docs/fullstack/parallel-worktree-environment.md +72 -34
  23. package/cabloy-docs/fullstack/suites-and-modules.md +1 -0
  24. package/cabloy-docs/reference/package-map.md +1 -0
  25. package/e2e/specs/a-commerce/commerce.spec.ts +89 -0
  26. package/package.json +2 -1
  27. package/scripts/init.ts +7 -12
  28. package/scripts/initAppName.test.ts +72 -0
  29. package/scripts/initAppName.ts +50 -0
  30. package/vona/packages-vona/vona/package.json +1 -1
  31. package/vona/pnpm-lock.yaml +48 -146
  32. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineCreate.tsx +6 -27
  33. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineItem.tsx +6 -31
  34. package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineUpdate.tsx +6 -2
  35. package/vona/src/suite/a-commerce/modules/commerce-member/src/lib/addressMine.ts +16 -0
  36. package/vona/src/suite/a-commerce/modules/commerce-member/src/service/address.ts +4 -17
  37. package/vona/src/suite/a-commerce/modules/commerce-member/test/addressOwnership.test.ts +63 -19
  38. package/vona/src/suite/a-commerce/modules/commerce-payment/package.json +2 -1
  39. package/vona/src/suite/a-commerce/modules/commerce-payment/src/bean/payScene.commerceOrder.ts +11 -2
  40. package/vona/src/suite/a-commerce/modules/commerce-payment/src/service/commercePayScene.ts +26 -0
  41. package/vona/src/suite/a-commerce/modules/commerce-payment/test/paymentAttempt.test.ts +19 -2
  42. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/config/locale/en-us.ts +5 -2
  43. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/config/locale/zh-cn.ts +5 -2
  44. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/dto/couponTemplateCreate.tsx +26 -35
  45. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/dto/couponTemplateUpdate.tsx +6 -1
  46. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/entity/couponTemplate.tsx +40 -4
  47. package/vona/src/suite/a-commerce/modules/commerce-promotion/test/couponTemplateFormLayout.test.ts +85 -0
  48. package/vona/src/suite/a-commerce/modules/commerce-trade/src/.metadata/index.ts +1 -1
  49. package/vona/src/suite/a-commerce/modules/commerce-trade/src/controller/order.ts +3 -5
  50. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderSummary.tsx +7 -40
  51. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/shipmentView.tsx +6 -15
  52. package/vona/src/suite/a-commerce/modules/commerce-trade/src/lib/order.ts +9 -0
  53. package/vona/src/suite/a-commerce/modules/commerce-trade/src/service/order.ts +121 -11
  54. package/vona/src/suite/a-commerce/modules/commerce-trade/test/order.test.ts +25 -0
  55. package/vona/src/suite/a-commerce/modules/commerce-trade/test/paymentOutcome.test.ts +19 -2
  56. package/vona/src/suite/a-training/modules/training-record/src/dto/detailRecordSubjectResItem.tsx +6 -1
  57. package/vona/src/suite/a-training/modules/training-record/src/dto/recordSelectResItem.tsx +3 -1
  58. package/vona/src/suite/a-training/modules/training-record/src/dto/recordView.tsx +4 -1
  59. package/vona/src/suite/a-training/modules/training-record/test/record.test.ts +45 -0
  60. package/vona/src/suite/a-training/modules/training-student/src/dto/detailRecordResItem.tsx +6 -1
  61. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSummary.tsx +5 -23
  62. package/vona/src/suite/a-training/modules/training-student/test/student.test.ts +37 -5
  63. package/vona/src/suite-vendor/a-pay/modules/a-pay/package.json +1 -1
  64. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/.metadata/index.ts +29 -0
  65. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/bean/meta.index.ts +3 -0
  66. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/bean/meta.redlock.ts +3 -1
  67. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/bean/meta.version.ts +7 -0
  68. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/bean/queue.outboxDispatch.ts +9 -4
  69. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/bean/schedule.providerOperationDispatch.ts +11 -0
  70. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/entity/outboxEvent.tsx +11 -4
  71. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/entity/providerOperation.tsx +12 -0
  72. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/entity/webhookInbox.tsx +6 -0
  73. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/service/outbox.ts +12 -5
  74. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/service/paymentSession.ts +1 -37
  75. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/service/providerOperation.ts +355 -1
  76. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/service/refundOperation.ts +226 -0
  77. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/service/webhook.ts +148 -50
  78. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/types/payScene.ts +2 -1
  79. package/vona/src/suite-vendor/a-pay/modules/pay-mock/package.json +1 -1
  80. package/vona/src/suite-vendor/a-pay/modules/pay-mock/src/.metadata/index.ts +39 -22
  81. package/vona/src/suite-vendor/a-pay/modules/pay-mock/src/bean/payProvider.mock.ts +42 -13
  82. package/vona/src/suite-vendor/a-pay/modules/pay-mock/src/controller/mockPayment.ts +11 -0
  83. package/vona/src/suite-vendor/a-pay/modules/pay-mock/src/dto/mockRefundComplete.tsx +13 -0
  84. package/vona/src/suite-vendor/a-pay/modules/pay-mock/src/dto/mockRefundReceipt.tsx +16 -0
  85. package/vona/src/suite-vendor/a-pay/modules/pay-mock/src/service/payMock.ts +56 -0
  86. package/vona/src/suite-vendor/a-pay/modules/pay-paypal/package.json +2 -1
  87. package/vona/src/suite-vendor/a-pay/modules/pay-paypal/src/bean/payProvider.paypal.ts +117 -8
  88. package/vona/src/suite-vendor/a-pay/modules/pay-stripe/package.json +1 -1
  89. package/vona/src/suite-vendor/a-pay/package.json +5 -5
  90. package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
  91. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGet.ts +5 -5
  92. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  93. package/zova/src/suite/a-commerce/modules/commerce-member/src/api/openapi/schemas.ts +54 -12
  94. package/zova/src/suite/a-commerce/modules/commerce-member/src/api/openapi/types.ts +625 -64
  95. package/zova/src/suite/a-commerce/modules/commerce-promotion/src/api/openapi/types.ts +55 -15
  96. package/zova/src/suite/a-commerce/modules/commerce-trade/cli/openapi.config.ts +1 -1
  97. package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/commerceTradeOrder.ts +15 -17
  98. package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/openapi/schemas.ts +12 -8
  99. package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/openapi/types.ts +111 -26
  100. package/zova/src/suite/a-commerce/modules/commerce-trade/src/apiSchema/commerceTradeOrder.ts +3 -3
  101. package/zova/src/suite/a-commerce/modules/commerce-trade/src/component/tableCellActionRefund/controller.tsx +1 -8
  102. package/zova/src/suite/a-commerce/modules/commerce-trade/src/model/order.ts +5 -9
  103. package/zova/src/suite/a-training/modules/training-student/src/.metadata/index.ts +1 -1
  104. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/schemas.ts +301 -17
  105. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/types.ts +5461 -1788
  106. package/vona/src/suite-vendor/a-pay/modules/a-pay/test/outbox.test.ts +0 -209
  107. package/vona/src/suite-vendor/a-pay/modules/a-pay/test/paymentSession.test.ts +0 -153
  108. package/vona/src/suite-vendor/a-pay/modules/a-pay/test/webhook.test.ts +0 -278
  109. package/vona/src/suite-vendor/a-pay/modules/pay-mock/test/payMock.test.ts +0 -141
@@ -2133,6 +2133,7 @@ export interface components {
2133
2133
  pageNo: number;
2134
2134
  };
2135
2135
  'commerce-member.dto.addressMineItem': {
2136
+ /** @description ID */
2136
2137
  id: number | string;
2137
2138
  /** @description Recipient Name */
2138
2139
  recipientName: string;
@@ -2153,6 +2154,7 @@ export interface components {
2153
2154
  };
2154
2155
  'commerce-member.dto.addressMineView_2d063d28bc7243bed02ebd8bddf1212a93c6305b':
2155
2156
  | {
2157
+ /** @description ID */
2156
2158
  id: number | string;
2157
2159
  /** @description Recipient Name */
2158
2160
  recipientName: string;
@@ -2432,20 +2434,39 @@ export interface components {
2432
2434
  reason: string;
2433
2435
  };
2434
2436
  'commerce-promotion.dto.couponTemplateCreate': {
2437
+ /** @description Name */
2435
2438
  name: string;
2436
- /** @enum {string} */
2439
+ /**
2440
+ * @description Template State
2441
+ * @enum {string}
2442
+ */
2437
2443
  state: 'draft' | 'active';
2438
- /** @enum {string} */
2444
+ /**
2445
+ * @description Currency
2446
+ * @enum {string}
2447
+ */
2439
2448
  currency: 'USD';
2449
+ /** @description Fixed Discount */
2440
2450
  discountCents: number;
2451
+ /** @description Minimum Spend */
2441
2452
  minSpendCents: number;
2442
- /** Format: date-time */
2453
+ /**
2454
+ * Format: date-time
2455
+ * @description Valid From
2456
+ */
2443
2457
  validFrom: Date;
2444
- /** Format: date-time */
2458
+ /**
2459
+ * Format: date-time
2460
+ * @description Valid Until
2461
+ */
2445
2462
  validUntil: Date;
2463
+ /** @description Total Issue Limit */
2446
2464
  totalIssueLimit?: number | undefined;
2465
+ /** @description Total Usage Limit */
2447
2466
  totalUsageLimit?: number | undefined;
2467
+ /** @description Per-customer Issue Limit */
2448
2468
  perCustomerIssueLimit?: number | undefined;
2469
+ /** @description Description */
2449
2470
  description?: string | undefined;
2450
2471
  };
2451
2472
  'commerce-promotion.dto.couponTemplateSelectRes': {
@@ -2490,9 +2511,9 @@ export interface components {
2490
2511
  * @enum {string}
2491
2512
  */
2492
2513
  currency: 'USD';
2493
- /** @description Fixed Discount (Cents) */
2514
+ /** @description Fixed Discount */
2494
2515
  discountCents: number;
2495
- /** @description Minimum Spend (Cents) */
2516
+ /** @description Minimum Spend */
2496
2517
  minSpendCents: number;
2497
2518
  /**
2498
2519
  * Format: date-time
@@ -2555,9 +2576,9 @@ export interface components {
2555
2576
  * @enum {string}
2556
2577
  */
2557
2578
  currency: 'USD';
2558
- /** @description Fixed Discount (Cents) */
2579
+ /** @description Fixed Discount */
2559
2580
  discountCents: number;
2560
- /** @description Minimum Spend (Cents) */
2581
+ /** @description Minimum Spend */
2561
2582
  minSpendCents: number;
2562
2583
  /**
2563
2584
  * Format: date-time
@@ -2642,6 +2663,12 @@ export interface components {
2642
2663
  pageNo: number;
2643
2664
  };
2644
2665
  'commerce-trade.dto.orderSummary': {
2666
+ /**
2667
+ * Format: date-time
2668
+ * @description Created At
2669
+ */
2670
+ createdAt: Date;
2671
+ /** @description ID */
2645
2672
  id: number | string;
2646
2673
  /** @enum {string} */
2647
2674
  state:
@@ -2657,8 +2684,6 @@ export interface components {
2657
2684
  /** @enum {string} */
2658
2685
  currency: 'USD';
2659
2686
  payableTotalCents: number;
2660
- /** Format: date-time */
2661
- createdAt: Date;
2662
2687
  };
2663
2688
  'commerce-trade.dto.orderDetail_2d063d28bc7243bed02ebd8bddf1212a93c6305b':
2664
2689
  | {
@@ -2720,6 +2745,7 @@ export interface components {
2720
2745
  | undefined;
2721
2746
  'commerce-trade.dto.shipmentView_2d063d28bc7243bed02ebd8bddf1212a93c6305b':
2722
2747
  | {
2748
+ /** @description ID */
2723
2749
  id: number | string;
2724
2750
  carrier: string;
2725
2751
  trackingNumber: string;
@@ -2759,6 +2785,7 @@ export interface components {
2759
2785
  idempotencyKey: string;
2760
2786
  };
2761
2787
  'commerce-trade.dto.shipmentView': {
2788
+ /** @description ID */
2762
2789
  id: number | string;
2763
2790
  carrier: string;
2764
2791
  trackingNumber: string;
@@ -3634,7 +3661,7 @@ export interface components {
3634
3661
  /** @description Description */
3635
3662
  description?: string | undefined;
3636
3663
  /** @description # */
3637
- _lineNumber: number;
3664
+ _lineNumber?: number | undefined;
3638
3665
  /** @description Operations */
3639
3666
  _operationsRow?: unknown;
3640
3667
  };
@@ -3689,6 +3716,12 @@ export interface components {
3689
3716
  dossierFileIds?: (number | string)[] | undefined;
3690
3717
  /** @description Description */
3691
3718
  description?: string | undefined;
3719
+ student?: {
3720
+ /** @description ID */
3721
+ id: number | string;
3722
+ /** @description Student Name */
3723
+ name: string;
3724
+ };
3692
3725
  sceneImages?: components['schemas']['a-image.dto.imageView'][] | undefined;
3693
3726
  /** @description Dossier Files */
3694
3727
  dossierFiles?: components['schemas']['a-file.dto.fileView'][] | undefined;
@@ -3762,6 +3795,12 @@ export interface components {
3762
3795
  dossierFileIds?: (number | string)[] | undefined;
3763
3796
  /** @description Description */
3764
3797
  description?: string | undefined;
3798
+ student?: {
3799
+ /** @description ID */
3800
+ id: number | string;
3801
+ /** @description Student Name */
3802
+ name: string;
3803
+ };
3765
3804
  /** @description Student Training Record Details */
3766
3805
  trainingRecordSubjects: {
3767
3806
  /**
@@ -3974,7 +4013,7 @@ export interface components {
3974
4013
  }[]
3975
4014
  | undefined;
3976
4015
  /** @description # */
3977
- _lineNumber: number;
4016
+ _lineNumber?: number | undefined;
3978
4017
  /** @description Operations */
3979
4018
  _operationsRow?: unknown;
3980
4019
  };
@@ -4245,17 +4284,18 @@ export interface components {
4245
4284
  };
4246
4285
  'training-student.dto.studentSummary_2d063d28bc7243bed02ebd8bddf1212a93c6305b':
4247
4286
  | {
4287
+ /** @description ID */
4248
4288
  id: number | string;
4249
4289
  /** @description Student Name */
4250
4290
  name: string;
4291
+ /** @description Description */
4292
+ description?: string | undefined;
4251
4293
  /** @description Mobile */
4252
4294
  mobile: string;
4253
4295
  /** @description Training Stage */
4254
- level: number;
4296
+ level: 1 | 2 | 3;
4255
4297
  /** @description Level Title */
4256
4298
  levelTitle: string;
4257
- /** @description Description */
4258
- description?: string | undefined;
4259
4299
  /** @description Description Length */
4260
4300
  descriptionLength: number;
4261
4301
  /** @description Summary */
@@ -16,7 +16,7 @@ export default function (): ZovaOpenapiConfigModule {
16
16
  'CommerceTradeOrder_requestRefund',
17
17
  'CommerceTradeOrder_approveRefund',
18
18
  'CommerceTradeOrder_rejectRefund',
19
- 'CommerceTradeOrder_refundOutcome',
19
+ 'CommerceTradeOrder_executeRefund',
20
20
  'CommerceTradeOrder_mine',
21
21
  'CommerceTradeOrder_viewMine',
22
22
  ],
@@ -63,18 +63,16 @@ export type ApiApiCommerceTradeOrderrejectRefundRequestBody =
63
63
  export type ApiApiCommerceTradeOrderrejectRefundResponseBody =
64
64
  paths[ApiApiCommerceTradeOrderrejectRefundPath][ApiApiCommerceTradeOrderrejectRefundMethod]['responses']['200']['content']['application/json']['data'];
65
65
 
66
- /** CommerceTradeOrder_refundOutcome */
67
- export const ApiApiCommerceTradeOrderrefundOutcomePath =
68
- '/api/commerce/trade/order/{id}/refundOutcome';
69
- export type ApiApiCommerceTradeOrderrefundOutcomePath =
70
- '/api/commerce/trade/order/{id}/refundOutcome';
71
- export type ApiApiCommerceTradeOrderrefundOutcomeMethod = 'post';
72
- export type ApiApiCommerceTradeOrderrefundOutcomeRequestParams =
73
- paths[ApiApiCommerceTradeOrderrefundOutcomePath][ApiApiCommerceTradeOrderrefundOutcomeMethod]['parameters']['path'];
74
- export type ApiApiCommerceTradeOrderrefundOutcomeRequestBody =
75
- components['schemas']['commerce-trade.dto.refundOutcomeCreate'];
76
- export type ApiApiCommerceTradeOrderrefundOutcomeResponseBody =
77
- paths[ApiApiCommerceTradeOrderrefundOutcomePath][ApiApiCommerceTradeOrderrefundOutcomeMethod]['responses']['200']['content']['application/json']['data'];
66
+ /** CommerceTradeOrder_executeRefund */
67
+ export const ApiApiCommerceTradeOrderexecuteRefundPath =
68
+ '/api/commerce/trade/order/{id}/executeRefund';
69
+ export type ApiApiCommerceTradeOrderexecuteRefundPath =
70
+ '/api/commerce/trade/order/{id}/executeRefund';
71
+ export type ApiApiCommerceTradeOrderexecuteRefundMethod = 'post';
72
+ export type ApiApiCommerceTradeOrderexecuteRefundRequestParams =
73
+ paths[ApiApiCommerceTradeOrderexecuteRefundPath][ApiApiCommerceTradeOrderexecuteRefundMethod]['parameters']['path'];
74
+ export type ApiApiCommerceTradeOrderexecuteRefundResponseBody =
75
+ paths[ApiApiCommerceTradeOrderexecuteRefundPath][ApiApiCommerceTradeOrderexecuteRefundMethod]['responses']['200']['content']['application/json']['data'];
78
76
 
79
77
  /** CommerceTradeOrder_ship */
80
78
  export const ApiApiCommerceTradeOrdershipPath = '/api/commerce/trade/order/{id}/ship';
@@ -168,14 +166,14 @@ export class ApiCommerceTradeOrder extends BeanApiBase {
168
166
  );
169
167
  }
170
168
 
171
- refundOutcome(
172
- body: ApiApiCommerceTradeOrderrefundOutcomeRequestBody,
169
+ executeRefund(
170
+ body: undefined,
173
171
  options: {
174
- params: ApiApiCommerceTradeOrderrefundOutcomeRequestParams;
172
+ params: ApiApiCommerceTradeOrderexecuteRefundRequestParams;
175
173
  } & IApiActionOptions,
176
174
  ) {
177
- return this.$fetch.post<any, ApiApiCommerceTradeOrderrefundOutcomeResponseBody>(
178
- this.$pathTranslate(ApiApiCommerceTradeOrderrefundOutcomePath, options.params),
175
+ return this.$fetch.post<any, ApiApiCommerceTradeOrderexecuteRefundResponseBody>(
176
+ this.$pathTranslate(ApiApiCommerceTradeOrderexecuteRefundPath, options.params),
179
177
  body,
180
178
  this.$configPrepare(OpenApiBaseURL(this.sys), options, true),
181
179
  );
@@ -95,10 +95,10 @@ export type ApiSchemaCommercePromotionDtoCouponTemplateSelectResItem =
95
95
  components['schemas']['commerce-promotion.dto.couponTemplateSelectResItem'];
96
96
  export type ApiSchemaCommercePromotionDtoCouponTemplateSelectResItemPartial =
97
97
  Partial<ApiSchemaCommercePromotionDtoCouponTemplateSelectResItem>;
98
- export type ApiSchemaCommercePromotionDtoCouponTemplateView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_425dbecccd52e19e24888f99e1b1670233afa875 =
99
- components['schemas']['commerce-promotion.dto.couponTemplateView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_425dbecccd52e19e24888f99e1b1670233afa875'];
100
- export type ApiSchemaCommercePromotionDtoCouponTemplateView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_425dbecccd52e19e24888f99e1b1670233afa875Partial =
101
- Partial<ApiSchemaCommercePromotionDtoCouponTemplateView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_425dbecccd52e19e24888f99e1b1670233afa875>;
98
+ export type ApiSchemaCommercePromotionDtoCouponTemplateView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_91abd8df366c0c4d47021b38af2a356349ee178b =
99
+ components['schemas']['commerce-promotion.dto.couponTemplateView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_91abd8df366c0c4d47021b38af2a356349ee178b'];
100
+ export type ApiSchemaCommercePromotionDtoCouponTemplateView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_91abd8df366c0c4d47021b38af2a356349ee178bPartial =
101
+ Partial<ApiSchemaCommercePromotionDtoCouponTemplateView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_91abd8df366c0c4d47021b38af2a356349ee178b>;
102
102
  export type ApiSchemaCommercePromotionDtoCouponTemplateUpdate =
103
103
  components['schemas']['commerce-promotion.dto.couponTemplateUpdate'];
104
104
  export type ApiSchemaCommercePromotionDtoCouponTemplateUpdatePartial =
@@ -165,10 +165,6 @@ export type ApiSchemaCommerceTradeDtoRefundReview =
165
165
  components['schemas']['commerce-trade.dto.refundReview'];
166
166
  export type ApiSchemaCommerceTradeDtoRefundReviewPartial =
167
167
  Partial<ApiSchemaCommerceTradeDtoRefundReview>;
168
- export type ApiSchemaCommerceTradeDtoRefundOutcomeCreate =
169
- components['schemas']['commerce-trade.dto.refundOutcomeCreate'];
170
- export type ApiSchemaCommerceTradeDtoRefundOutcomeCreatePartial =
171
- Partial<ApiSchemaCommerceTradeDtoRefundOutcomeCreate>;
172
168
  export type ApiSchemaCommerceTradeDtoShipmentView =
173
169
  components['schemas']['commerce-trade.dto.shipmentView'];
174
170
  export type ApiSchemaCommerceTradeDtoShipmentViewPartial =
@@ -461,6 +457,14 @@ export type ApiSchemaPayMockDtoMockPaymentComplete =
461
457
  components['schemas']['pay-mock.dto.mockPaymentComplete'];
462
458
  export type ApiSchemaPayMockDtoMockPaymentCompletePartial =
463
459
  Partial<ApiSchemaPayMockDtoMockPaymentComplete>;
460
+ export type ApiSchemaPayMockDtoMockRefundReceipt =
461
+ components['schemas']['pay-mock.dto.mockRefundReceipt'];
462
+ export type ApiSchemaPayMockDtoMockRefundReceiptPartial =
463
+ Partial<ApiSchemaPayMockDtoMockRefundReceipt>;
464
+ export type ApiSchemaPayMockDtoMockRefundComplete =
465
+ components['schemas']['pay-mock.dto.mockRefundComplete'];
466
+ export type ApiSchemaPayMockDtoMockRefundCompletePartial =
467
+ Partial<ApiSchemaPayMockDtoMockRefundComplete>;
464
468
  export type ApiSchemaAPaypalEntityPaypalRecord =
465
469
  components['schemas']['a-paypal.entity.paypalRecord'];
466
470
  export type ApiSchemaAPaypalEntityPaypalRecordPartial = Partial<ApiSchemaAPaypalEntityPaypalRecord>;
@@ -623,7 +623,7 @@ export interface paths {
623
623
  patch?: never;
624
624
  trace?: never;
625
625
  };
626
- '/api/commerce/trade/order/{id}/refundOutcome': {
626
+ '/api/commerce/trade/order/{id}/executeRefund': {
627
627
  parameters: {
628
628
  query?: never;
629
629
  header?: never;
@@ -632,7 +632,7 @@ export interface paths {
632
632
  };
633
633
  get?: never;
634
634
  put?: never;
635
- post: operations['CommerceTradeOrder_refundOutcome'];
635
+ post: operations['CommerceTradeOrder_executeRefund'];
636
636
  delete?: never;
637
637
  options?: never;
638
638
  head?: never;
@@ -1264,6 +1264,22 @@ export interface paths {
1264
1264
  patch?: never;
1265
1265
  trace?: never;
1266
1266
  };
1267
+ '/api/pay/mock/payment-session/refund-operation/{id}/complete': {
1268
+ parameters: {
1269
+ query?: never;
1270
+ header?: never;
1271
+ path?: never;
1272
+ cookie?: never;
1273
+ };
1274
+ get?: never;
1275
+ put?: never;
1276
+ post: operations['PayMockPayment_completeRefund'];
1277
+ delete?: never;
1278
+ options?: never;
1279
+ head?: never;
1280
+ patch?: never;
1281
+ trace?: never;
1282
+ };
1267
1283
  '/api/paypal/getRecord/{recordId}': {
1268
1284
  parameters: {
1269
1285
  query?: never;
@@ -2133,6 +2149,7 @@ export interface components {
2133
2149
  pageNo: number;
2134
2150
  };
2135
2151
  'commerce-member.dto.addressMineItem': {
2152
+ /** @description ID */
2136
2153
  id: number | string;
2137
2154
  /** @description Recipient Name */
2138
2155
  recipientName: string;
@@ -2153,6 +2170,7 @@ export interface components {
2153
2170
  };
2154
2171
  'commerce-member.dto.addressMineView_2d063d28bc7243bed02ebd8bddf1212a93c6305b':
2155
2172
  | {
2173
+ /** @description ID */
2156
2174
  id: number | string;
2157
2175
  /** @description Recipient Name */
2158
2176
  recipientName: string;
@@ -2432,20 +2450,39 @@ export interface components {
2432
2450
  reason: string;
2433
2451
  };
2434
2452
  'commerce-promotion.dto.couponTemplateCreate': {
2453
+ /** @description Name */
2435
2454
  name: string;
2436
- /** @enum {string} */
2455
+ /**
2456
+ * @description Template State
2457
+ * @enum {string}
2458
+ */
2437
2459
  state: 'draft' | 'active';
2438
- /** @enum {string} */
2460
+ /**
2461
+ * @description Currency
2462
+ * @enum {string}
2463
+ */
2439
2464
  currency: 'USD';
2465
+ /** @description Fixed Discount (Cents) */
2440
2466
  discountCents: number;
2467
+ /** @description Minimum Spend (Cents) */
2441
2468
  minSpendCents: number;
2442
- /** Format: date-time */
2469
+ /**
2470
+ * Format: date-time
2471
+ * @description Valid From
2472
+ */
2443
2473
  validFrom: Date;
2444
- /** Format: date-time */
2474
+ /**
2475
+ * Format: date-time
2476
+ * @description Valid Until
2477
+ */
2445
2478
  validUntil: Date;
2479
+ /** @description Total Issue Limit */
2446
2480
  totalIssueLimit?: number | undefined;
2481
+ /** @description Total Usage Limit */
2447
2482
  totalUsageLimit?: number | undefined;
2483
+ /** @description Per-customer Issue Limit */
2448
2484
  perCustomerIssueLimit?: number | undefined;
2485
+ /** @description Description */
2449
2486
  description?: string | undefined;
2450
2487
  };
2451
2488
  'commerce-promotion.dto.couponTemplateSelectRes': {
@@ -2519,7 +2556,7 @@ export interface components {
2519
2556
  /** @description Operations */
2520
2557
  _operationsRow?: unknown;
2521
2558
  };
2522
- 'commerce-promotion.dto.couponTemplateView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_425dbecccd52e19e24888f99e1b1670233afa875':
2559
+ 'commerce-promotion.dto.couponTemplateView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_91abd8df366c0c4d47021b38af2a356349ee178b':
2523
2560
  | {
2524
2561
  /**
2525
2562
  * Format: date-time
@@ -2642,6 +2679,12 @@ export interface components {
2642
2679
  pageNo: number;
2643
2680
  };
2644
2681
  'commerce-trade.dto.orderSummary': {
2682
+ /**
2683
+ * Format: date-time
2684
+ * @description Created At
2685
+ */
2686
+ createdAt: Date;
2687
+ /** @description ID */
2645
2688
  id: number | string;
2646
2689
  /** @enum {string} */
2647
2690
  state:
@@ -2657,8 +2700,6 @@ export interface components {
2657
2700
  /** @enum {string} */
2658
2701
  currency: 'USD';
2659
2702
  payableTotalCents: number;
2660
- /** Format: date-time */
2661
- createdAt: Date;
2662
2703
  };
2663
2704
  'commerce-trade.dto.orderDetail_2d063d28bc7243bed02ebd8bddf1212a93c6305b':
2664
2705
  | {
@@ -2720,6 +2761,7 @@ export interface components {
2720
2761
  | undefined;
2721
2762
  'commerce-trade.dto.shipmentView_2d063d28bc7243bed02ebd8bddf1212a93c6305b':
2722
2763
  | {
2764
+ /** @description ID */
2723
2765
  id: number | string;
2724
2766
  carrier: string;
2725
2767
  trackingNumber: string;
@@ -2753,12 +2795,8 @@ export interface components {
2753
2795
  reason: string;
2754
2796
  idempotencyKey: string;
2755
2797
  };
2756
- 'commerce-trade.dto.refundOutcomeCreate': {
2757
- /** @enum {string} */
2758
- outcome: 'succeeded' | 'failed';
2759
- idempotencyKey: string;
2760
- };
2761
2798
  'commerce-trade.dto.shipmentView': {
2799
+ /** @description ID */
2762
2800
  id: number | string;
2763
2801
  carrier: string;
2764
2802
  trackingNumber: string;
@@ -3634,7 +3672,7 @@ export interface components {
3634
3672
  /** @description Description */
3635
3673
  description?: string | undefined;
3636
3674
  /** @description # */
3637
- _lineNumber: number;
3675
+ _lineNumber?: number | undefined;
3638
3676
  /** @description Operations */
3639
3677
  _operationsRow?: unknown;
3640
3678
  };
@@ -3689,6 +3727,12 @@ export interface components {
3689
3727
  dossierFileIds?: (number | string)[] | undefined;
3690
3728
  /** @description Description */
3691
3729
  description?: string | undefined;
3730
+ student?: {
3731
+ /** @description ID */
3732
+ id: number | string;
3733
+ /** @description Student Name */
3734
+ name: string;
3735
+ };
3692
3736
  sceneImages?: components['schemas']['a-image.dto.imageView'][] | undefined;
3693
3737
  /** @description Dossier Files */
3694
3738
  dossierFiles?: components['schemas']['a-file.dto.fileView'][] | undefined;
@@ -3762,6 +3806,12 @@ export interface components {
3762
3806
  dossierFileIds?: (number | string)[] | undefined;
3763
3807
  /** @description Description */
3764
3808
  description?: string | undefined;
3809
+ student?: {
3810
+ /** @description ID */
3811
+ id: number | string;
3812
+ /** @description Student Name */
3813
+ name: string;
3814
+ };
3765
3815
  /** @description Student Training Record Details */
3766
3816
  trainingRecordSubjects: {
3767
3817
  /**
@@ -3974,7 +4024,7 @@ export interface components {
3974
4024
  }[]
3975
4025
  | undefined;
3976
4026
  /** @description # */
3977
- _lineNumber: number;
4027
+ _lineNumber?: number | undefined;
3978
4028
  /** @description Operations */
3979
4029
  _operationsRow?: unknown;
3980
4030
  };
@@ -4245,17 +4295,18 @@ export interface components {
4245
4295
  };
4246
4296
  'training-student.dto.studentSummary_2d063d28bc7243bed02ebd8bddf1212a93c6305b':
4247
4297
  | {
4298
+ /** @description ID */
4248
4299
  id: number | string;
4249
4300
  /** @description Student Name */
4250
4301
  name: string;
4302
+ /** @description Description */
4303
+ description?: string | undefined;
4251
4304
  /** @description Mobile */
4252
4305
  mobile: string;
4253
4306
  /** @description Training Stage */
4254
- level: number;
4307
+ level: 1 | 2 | 3;
4255
4308
  /** @description Level Title */
4256
4309
  levelTitle: string;
4257
- /** @description Description */
4258
- description?: string | undefined;
4259
4310
  /** @description Description Length */
4260
4311
  descriptionLength: number;
4261
4312
  /** @description Summary */
@@ -4443,6 +4494,14 @@ export interface components {
4443
4494
  /** @enum {string} */
4444
4495
  outcome: 'succeeded' | 'failed' | 'cancelled';
4445
4496
  };
4497
+ 'pay-mock.dto.mockRefundReceipt': {
4498
+ refundOperationId: number | string;
4499
+ accepted: boolean;
4500
+ };
4501
+ 'pay-mock.dto.mockRefundComplete': {
4502
+ /** @enum {string} */
4503
+ outcome: 'succeeded' | 'failed' | 'cancelled';
4504
+ };
4446
4505
  'a-paypal.entity.paypalRecord': {
4447
4506
  /**
4448
4507
  * Format: date-time
@@ -5851,7 +5910,7 @@ export interface operations {
5851
5910
  'application/json': {
5852
5911
  code: string;
5853
5912
  message: string;
5854
- data?: components['schemas']['commerce-promotion.dto.couponTemplateView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_425dbecccd52e19e24888f99e1b1670233afa875'];
5913
+ data?: components['schemas']['commerce-promotion.dto.couponTemplateView_2d063d28bc7243bed02ebd8bddf1212a93c6305b_91abd8df366c0c4d47021b38af2a356349ee178b'];
5855
5914
  };
5856
5915
  };
5857
5916
  };
@@ -6233,7 +6292,7 @@ export interface operations {
6233
6292
  };
6234
6293
  authToken: true;
6235
6294
  };
6236
- CommerceTradeOrder_refundOutcome: {
6295
+ CommerceTradeOrder_executeRefund: {
6237
6296
  parameters: {
6238
6297
  query?: never;
6239
6298
  header?: never;
@@ -6242,11 +6301,7 @@ export interface operations {
6242
6301
  };
6243
6302
  cookie?: never;
6244
6303
  };
6245
- requestBody: {
6246
- content: {
6247
- 'application/json': components['schemas']['commerce-trade.dto.refundOutcomeCreate'];
6248
- };
6249
- };
6304
+ requestBody?: never;
6250
6305
  responses: {
6251
6306
  200: {
6252
6307
  headers: {
@@ -7814,6 +7869,36 @@ export interface operations {
7814
7869
  };
7815
7870
  authToken: true;
7816
7871
  };
7872
+ PayMockPayment_completeRefund: {
7873
+ parameters: {
7874
+ query?: never;
7875
+ header?: never;
7876
+ path: {
7877
+ id: number | string;
7878
+ };
7879
+ cookie?: never;
7880
+ };
7881
+ requestBody: {
7882
+ content: {
7883
+ 'application/json': components['schemas']['pay-mock.dto.mockRefundComplete'];
7884
+ };
7885
+ };
7886
+ responses: {
7887
+ 200: {
7888
+ headers: {
7889
+ [name: string]: unknown;
7890
+ };
7891
+ content: {
7892
+ 'application/json': {
7893
+ code: string;
7894
+ message: string;
7895
+ data: components['schemas']['pay-mock.dto.mockRefundReceipt'];
7896
+ };
7897
+ };
7898
+ };
7899
+ };
7900
+ authToken: true;
7901
+ };
7817
7902
  Paypal_getRecord: {
7818
7903
  parameters: {
7819
7904
  query?: never;
@@ -9,7 +9,7 @@ import {
9
9
  ApiApiCommerceTradeOrderrequestRefundPath,
10
10
  ApiApiCommerceTradeOrderapproveRefundPath,
11
11
  ApiApiCommerceTradeOrderrejectRefundPath,
12
- ApiApiCommerceTradeOrderrefundOutcomePath,
12
+ ApiApiCommerceTradeOrderexecuteRefundPath,
13
13
  ApiApiCommerceTradeOrdershipPath,
14
14
  ApiApiCommerceTradeOrderselectPath,
15
15
  ApiApiCommerceTradeOrderviewPath,
@@ -37,8 +37,8 @@ export class ApiSchemaCommerceTradeOrder extends BeanBase {
37
37
  return this.$sdk.createApiSchemas(ApiApiCommerceTradeOrderrejectRefundPath, 'post', options);
38
38
  }
39
39
 
40
- refundOutcome(options?: IApiSchemaOptions) {
41
- return this.$sdk.createApiSchemas(ApiApiCommerceTradeOrderrefundOutcomePath, 'post', options);
40
+ executeRefund(options?: IApiSchemaOptions) {
41
+ return this.$sdk.createApiSchemas(ApiApiCommerceTradeOrderexecuteRefundPath, 'post', options);
42
42
  }
43
43
 
44
44
  ship(options?: IApiSchemaOptions) {
@@ -24,7 +24,6 @@ export class ControllerTableCellActionRefund extends BeanControllerBase {
24
24
  confirmed = false;
25
25
  approveIdempotencyKey?: string;
26
26
  rejectIdempotencyKey?: string;
27
- outcomeIdempotencyKey?: string;
28
27
 
29
28
  private async _approve() {
30
29
  const reason = this.reason.trim();
@@ -49,13 +48,7 @@ export class ControllerTableCellActionRefund extends BeanControllerBase {
49
48
  private async _execute() {
50
49
  if (!this.confirmed) return;
51
50
  const orderId = this.$$renderContext.cellContext.row.id as TableIdentity;
52
- const idempotencyKey = this.outcomeIdempotencyKey ?? crypto.randomUUID();
53
- this.outcomeIdempotencyKey = idempotencyKey;
54
- await this.$$modelOrder.refundOutcome(orderId).mutateAsync({
55
- outcome: 'succeeded',
56
- idempotencyKey,
57
- });
58
- this.outcomeIdempotencyKey = undefined;
51
+ await this.$$modelOrder.executeRefund(orderId).mutateAsync(undefined);
59
52
  }
60
53
 
61
54
  protected render() {
@@ -7,7 +7,6 @@ import { BeanModelBase, Model } from 'zova-module-a-model';
7
7
 
8
8
  import type {
9
9
  ApiApiCommerceTradeOrderapproveRefundRequestBody,
10
- ApiApiCommerceTradeOrderrefundOutcomeRequestBody,
11
10
  ApiApiCommerceTradeOrderrejectRefundRequestBody,
12
11
  ApiApiCommerceTradeOrdershipRequestBody,
13
12
  } from '../api/commerceTradeOrder.js';
@@ -67,15 +66,12 @@ export class ModelOrder extends BeanModelBase {
67
66
  });
68
67
  }
69
68
 
70
- refundOutcome(id: TableIdentity) {
71
- return this.$$modelResource.mutationItem<
72
- unknown,
73
- ApiApiCommerceTradeOrderrefundOutcomeRequestBody
74
- >({
69
+ executeRefund(id: TableIdentity) {
70
+ return this.$$modelResource.mutationItem<unknown, undefined>({
75
71
  id,
76
- action: 'refundOutcome',
77
- mutationFn: async payload => {
78
- return await this.scope.api.commerceTradeOrder.refundOutcome(payload, { params: { id } });
72
+ action: 'executeRefund',
73
+ mutationFn: async () => {
74
+ return await this.scope.api.commerceTradeOrder.executeRefund(undefined, { params: { id } });
79
75
  },
80
76
  });
81
77
  }
@@ -254,5 +254,5 @@ declare module 'zova' {
254
254
 
255
255
  export function locale<K extends keyof (typeof locales)[TypeLocaleBase]>(key: K): `training-student::${K}` {
256
256
  return `training-student::${key}`;
257
- }
257
+ }
258
258
  /** scope: end */