@pisell/pisellos 2.1.119 → 2.1.121

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 (231) hide show
  1. package/dist/apis/picoding.d.ts +0 -0
  2. package/dist/apis/picoding.js +1 -0
  3. package/dist/model/index.d.ts +1 -0
  4. package/dist/model/index.js +1 -0
  5. package/dist/model/strategy/adapter/index.d.ts +7 -0
  6. package/dist/model/strategy/adapter/index.js +7 -0
  7. package/dist/model/strategy/adapter/itemRule/adapter.d.ts +59 -0
  8. package/dist/model/strategy/adapter/itemRule/adapter.js +439 -0
  9. package/dist/model/strategy/adapter/itemRule/evaluator.d.ts +43 -0
  10. package/dist/model/strategy/adapter/itemRule/evaluator.js +169 -0
  11. package/dist/model/strategy/adapter/itemRule/examples.d.ts +64 -0
  12. package/dist/model/strategy/adapter/itemRule/examples.js +315 -0
  13. package/dist/model/strategy/adapter/itemRule/index.d.ts +5 -0
  14. package/dist/model/strategy/adapter/itemRule/index.js +5 -0
  15. package/dist/model/strategy/adapter/itemRule/type.d.ts +206 -0
  16. package/dist/model/strategy/adapter/itemRule/type.js +101 -0
  17. package/dist/model/strategy/adapter/promotion/adapter.d.ts +66 -0
  18. package/dist/model/strategy/adapter/promotion/adapter.js +271 -0
  19. package/dist/model/strategy/adapter/promotion/evaluator.d.ts +213 -0
  20. package/dist/model/strategy/adapter/promotion/evaluator.js +1206 -0
  21. package/dist/model/strategy/adapter/promotion/examples.d.ts +138 -0
  22. package/dist/model/strategy/adapter/promotion/examples.js +166 -0
  23. package/dist/model/strategy/adapter/promotion/index.d.ts +4 -0
  24. package/dist/model/strategy/adapter/promotion/index.js +0 -0
  25. package/dist/model/strategy/adapter/promotion/type.d.ts +447 -0
  26. package/dist/model/strategy/adapter/promotion/type.js +209 -0
  27. package/dist/model/strategy/adapter/type.d.ts +28 -0
  28. package/dist/model/strategy/adapter/type.js +1 -0
  29. package/dist/model/strategy/adapter/walletPass/evaluator.d.ts +84 -0
  30. package/dist/model/strategy/adapter/walletPass/evaluator.js +502 -0
  31. package/dist/model/strategy/adapter/walletPass/example.d.ts +4 -0
  32. package/dist/model/strategy/adapter/walletPass/example.js +258 -0
  33. package/dist/model/strategy/adapter/walletPass/index.d.ts +32 -0
  34. package/dist/model/strategy/adapter/walletPass/index.js +182 -0
  35. package/dist/model/strategy/adapter/walletPass/locales.d.ts +1 -0
  36. package/dist/model/strategy/adapter/walletPass/locales.js +26 -0
  37. package/dist/model/strategy/adapter/walletPass/type.d.ts +187 -0
  38. package/dist/model/strategy/adapter/walletPass/type.js +1 -0
  39. package/dist/model/strategy/adapter/walletPass/utils.d.ts +50 -0
  40. package/dist/model/strategy/adapter/walletPass/utils.js +1104 -0
  41. package/dist/model/strategy/engine.d.ts +106 -0
  42. package/dist/model/strategy/engine.js +611 -0
  43. package/dist/model/strategy/index.d.ts +3 -0
  44. package/dist/model/strategy/index.js +8 -0
  45. package/dist/model/strategy/strategy-example.d.ts +5 -0
  46. package/dist/model/strategy/strategy-example.js +331 -0
  47. package/dist/model/strategy/type.d.ts +228 -0
  48. package/dist/model/strategy/type.js +94 -0
  49. package/dist/modules/Cart/utils/cartProduct.js +1 -0
  50. package/dist/modules/OpenData/index.d.ts +24 -0
  51. package/dist/modules/OpenData/index.js +173 -0
  52. package/dist/modules/OpenData/types.d.ts +73 -0
  53. package/dist/modules/OpenData/types.js +1 -0
  54. package/dist/modules/OpenData/utils.d.ts +2 -0
  55. package/dist/modules/OpenData/utils.js +75 -0
  56. package/dist/modules/Order/index.d.ts +58 -1
  57. package/dist/modules/Order/index.js +796 -29
  58. package/dist/modules/Order/types.d.ts +144 -12
  59. package/dist/modules/Order/utils.d.ts +28 -0
  60. package/dist/modules/Order/utils.js +250 -1
  61. package/dist/modules/Product/index.d.ts +1 -1
  62. package/dist/modules/Product/utils.js +2 -2
  63. package/dist/modules/ProductList/index.d.ts +1 -1
  64. package/dist/modules/ProductList/index.js +2 -1
  65. package/dist/modules/Quotation/index.d.ts +48 -0
  66. package/dist/modules/Quotation/index.js +245 -0
  67. package/dist/modules/Quotation/types.d.ts +42 -0
  68. package/dist/modules/Quotation/types.js +1 -0
  69. package/dist/modules/Rules/index.js +4 -1
  70. package/dist/modules/SalesSummary/index.d.ts +63 -0
  71. package/dist/modules/SalesSummary/index.js +174 -0
  72. package/dist/modules/SalesSummary/types.d.ts +59 -0
  73. package/dist/modules/SalesSummary/types.js +1 -0
  74. package/dist/modules/SalesSummary/utils.d.ts +30 -0
  75. package/dist/modules/SalesSummary/utils.js +513 -0
  76. package/dist/modules/ScanOrderLogger/index.d.ts +21 -0
  77. package/dist/modules/ScanOrderLogger/index.js +161 -0
  78. package/dist/modules/ScanOrderLogger/providers/feishu.d.ts +2 -0
  79. package/dist/modules/ScanOrderLogger/providers/feishu.js +95 -0
  80. package/dist/modules/ScanOrderLogger/providers/grafana.d.ts +2 -0
  81. package/dist/modules/ScanOrderLogger/providers/grafana.js +50 -0
  82. package/dist/modules/ScanOrderLogger/types.d.ts +46 -0
  83. package/dist/modules/ScanOrderLogger/types.js +1 -0
  84. package/dist/modules/Schedule/getDateIsInSchedule.js +11 -18
  85. package/dist/modules/Summary/utils.d.ts +3 -3
  86. package/dist/modules/Summary/utils.js +4 -4
  87. package/dist/modules/index.d.ts +4 -0
  88. package/dist/modules/index.js +5 -1
  89. package/dist/solution/BookingByStep/index.d.ts +1 -1
  90. package/dist/solution/BookingByStep/types.d.ts +3 -1
  91. package/dist/solution/BookingByStep/types.js +5 -1
  92. package/dist/solution/BookingTicket/index.d.ts +1 -1
  93. package/dist/solution/ScanOrder/index.d.ts +90 -0
  94. package/dist/solution/ScanOrder/index.js +1853 -0
  95. package/dist/solution/ScanOrder/types.d.ts +210 -0
  96. package/dist/solution/ScanOrder/types.js +16 -0
  97. package/dist/solution/ScanOrder/utils.d.ts +93 -0
  98. package/dist/solution/ScanOrder/utils.js +397 -0
  99. package/dist/solution/VenueBooking/index.d.ts +163 -0
  100. package/dist/solution/VenueBooking/index.js +2931 -0
  101. package/dist/solution/VenueBooking/sales-section-4-annotated.json +343 -0
  102. package/dist/solution/VenueBooking/types.d.ts +130 -0
  103. package/dist/solution/VenueBooking/types.js +21 -0
  104. package/dist/solution/VenueBooking/utils/dateSummary.d.ts +10 -0
  105. package/dist/solution/VenueBooking/utils/dateSummary.js +102 -0
  106. package/dist/solution/VenueBooking/utils/resource.d.ts +4 -0
  107. package/dist/solution/VenueBooking/utils/resource.js +94 -0
  108. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +29 -0
  109. package/dist/solution/VenueBooking/utils/slotMerge.js +203 -0
  110. package/dist/solution/VenueBooking/utils/timeSlot.d.ts +32 -0
  111. package/dist/solution/VenueBooking/utils/timeSlot.js +256 -0
  112. package/dist/solution/VenueBooking/utils.d.ts +1 -0
  113. package/dist/solution/VenueBooking/utils.js +1 -0
  114. package/dist/solution/index.d.ts +2 -0
  115. package/dist/solution/index.js +3 -1
  116. package/lib/apis/picoding.d.ts +0 -0
  117. package/lib/apis/picoding.js +0 -0
  118. package/lib/model/index.d.ts +1 -0
  119. package/lib/model/index.js +23 -0
  120. package/lib/model/strategy/adapter/index.d.ts +7 -0
  121. package/lib/model/strategy/adapter/index.js +57 -0
  122. package/lib/model/strategy/adapter/itemRule/adapter.d.ts +59 -0
  123. package/lib/model/strategy/adapter/itemRule/adapter.js +338 -0
  124. package/lib/model/strategy/adapter/itemRule/evaluator.d.ts +43 -0
  125. package/lib/model/strategy/adapter/itemRule/evaluator.js +124 -0
  126. package/lib/model/strategy/adapter/itemRule/examples.d.ts +64 -0
  127. package/lib/model/strategy/adapter/itemRule/examples.js +269 -0
  128. package/lib/model/strategy/adapter/itemRule/index.d.ts +5 -0
  129. package/lib/model/strategy/adapter/itemRule/index.js +58 -0
  130. package/lib/model/strategy/adapter/itemRule/type.d.ts +206 -0
  131. package/lib/model/strategy/adapter/itemRule/type.js +46 -0
  132. package/lib/model/strategy/adapter/promotion/adapter.d.ts +66 -0
  133. package/lib/model/strategy/adapter/promotion/adapter.js +217 -0
  134. package/lib/model/strategy/adapter/promotion/evaluator.d.ts +213 -0
  135. package/lib/model/strategy/adapter/promotion/evaluator.js +844 -0
  136. package/lib/model/strategy/adapter/promotion/examples.d.ts +138 -0
  137. package/lib/model/strategy/adapter/promotion/examples.js +192 -0
  138. package/lib/model/strategy/adapter/promotion/index.d.ts +4 -0
  139. package/lib/model/strategy/adapter/promotion/index.js +49 -0
  140. package/lib/model/strategy/adapter/promotion/type.d.ts +447 -0
  141. package/lib/model/strategy/adapter/promotion/type.js +51 -0
  142. package/lib/model/strategy/adapter/type.d.ts +28 -0
  143. package/lib/model/strategy/adapter/type.js +17 -0
  144. package/lib/model/strategy/adapter/walletPass/evaluator.d.ts +84 -0
  145. package/lib/model/strategy/adapter/walletPass/evaluator.js +424 -0
  146. package/lib/model/strategy/adapter/walletPass/example.d.ts +4 -0
  147. package/lib/model/strategy/adapter/walletPass/example.js +207 -0
  148. package/lib/model/strategy/adapter/walletPass/index.d.ts +32 -0
  149. package/lib/model/strategy/adapter/walletPass/index.js +142 -0
  150. package/lib/model/strategy/adapter/walletPass/locales.d.ts +1 -0
  151. package/lib/model/strategy/adapter/walletPass/locales.js +54 -0
  152. package/lib/model/strategy/adapter/walletPass/type.d.ts +187 -0
  153. package/lib/model/strategy/adapter/walletPass/type.js +17 -0
  154. package/lib/model/strategy/adapter/walletPass/utils.d.ts +50 -0
  155. package/lib/model/strategy/adapter/walletPass/utils.js +791 -0
  156. package/lib/model/strategy/engine.d.ts +106 -0
  157. package/lib/model/strategy/engine.js +450 -0
  158. package/lib/model/strategy/index.d.ts +3 -0
  159. package/lib/model/strategy/index.js +38 -0
  160. package/lib/model/strategy/strategy-example.d.ts +5 -0
  161. package/lib/model/strategy/strategy-example.js +318 -0
  162. package/lib/model/strategy/type.d.ts +228 -0
  163. package/lib/model/strategy/type.js +44 -0
  164. package/lib/modules/Cart/utils/cartProduct.js +1 -0
  165. package/lib/modules/OpenData/index.d.ts +24 -0
  166. package/lib/modules/OpenData/index.js +119 -0
  167. package/lib/modules/OpenData/types.d.ts +73 -0
  168. package/lib/modules/OpenData/types.js +17 -0
  169. package/lib/modules/OpenData/utils.d.ts +2 -0
  170. package/lib/modules/OpenData/utils.js +111 -0
  171. package/lib/modules/Order/index.d.ts +58 -1
  172. package/lib/modules/Order/index.js +437 -1
  173. package/lib/modules/Order/types.d.ts +144 -12
  174. package/lib/modules/Order/utils.d.ts +28 -0
  175. package/lib/modules/Order/utils.js +250 -2
  176. package/lib/modules/Product/index.d.ts +1 -1
  177. package/lib/modules/Product/utils.js +2 -2
  178. package/lib/modules/ProductList/index.d.ts +1 -1
  179. package/lib/modules/ProductList/index.js +2 -1
  180. package/lib/modules/Quotation/index.d.ts +48 -0
  181. package/lib/modules/Quotation/index.js +149 -0
  182. package/lib/modules/Quotation/types.d.ts +42 -0
  183. package/lib/modules/Quotation/types.js +17 -0
  184. package/lib/modules/Rules/index.js +4 -1
  185. package/lib/modules/SalesSummary/index.d.ts +63 -0
  186. package/lib/modules/SalesSummary/index.js +105 -0
  187. package/lib/modules/SalesSummary/types.d.ts +59 -0
  188. package/lib/modules/SalesSummary/types.js +17 -0
  189. package/lib/modules/SalesSummary/utils.d.ts +30 -0
  190. package/lib/modules/SalesSummary/utils.js +452 -0
  191. package/lib/modules/ScanOrderLogger/index.d.ts +21 -0
  192. package/lib/modules/ScanOrderLogger/index.js +135 -0
  193. package/lib/modules/ScanOrderLogger/providers/feishu.d.ts +2 -0
  194. package/lib/modules/ScanOrderLogger/providers/feishu.js +82 -0
  195. package/lib/modules/ScanOrderLogger/providers/grafana.d.ts +2 -0
  196. package/lib/modules/ScanOrderLogger/providers/grafana.js +52 -0
  197. package/lib/modules/ScanOrderLogger/types.d.ts +46 -0
  198. package/lib/modules/ScanOrderLogger/types.js +17 -0
  199. package/lib/modules/Schedule/getDateIsInSchedule.js +9 -11
  200. package/lib/modules/Summary/utils.d.ts +3 -3
  201. package/lib/modules/Summary/utils.js +4 -4
  202. package/lib/modules/index.d.ts +4 -0
  203. package/lib/modules/index.js +9 -1
  204. package/lib/solution/BookingByStep/index.d.ts +1 -1
  205. package/lib/solution/BookingByStep/types.d.ts +3 -1
  206. package/lib/solution/BookingByStep/types.js +10 -0
  207. package/lib/solution/BookingTicket/index.d.ts +1 -1
  208. package/lib/solution/ScanOrder/index.d.ts +90 -0
  209. package/lib/solution/ScanOrder/index.js +1071 -0
  210. package/lib/solution/ScanOrder/types.d.ts +210 -0
  211. package/lib/solution/ScanOrder/types.js +36 -0
  212. package/lib/solution/ScanOrder/utils.d.ts +93 -0
  213. package/lib/solution/ScanOrder/utils.js +359 -0
  214. package/lib/solution/VenueBooking/index.d.ts +163 -0
  215. package/lib/solution/VenueBooking/index.js +1578 -0
  216. package/lib/solution/VenueBooking/sales-section-4-annotated.json +343 -0
  217. package/lib/solution/VenueBooking/types.d.ts +130 -0
  218. package/lib/solution/VenueBooking/types.js +44 -0
  219. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +10 -0
  220. package/lib/solution/VenueBooking/utils/dateSummary.js +101 -0
  221. package/lib/solution/VenueBooking/utils/resource.d.ts +4 -0
  222. package/lib/solution/VenueBooking/utils/resource.js +80 -0
  223. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +29 -0
  224. package/lib/solution/VenueBooking/utils/slotMerge.js +208 -0
  225. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +32 -0
  226. package/lib/solution/VenueBooking/utils/timeSlot.js +200 -0
  227. package/lib/solution/VenueBooking/utils.d.ts +1 -0
  228. package/lib/solution/VenueBooking/utils.js +69 -0
  229. package/lib/solution/index.d.ts +2 -0
  230. package/lib/solution/index.js +5 -1
  231. package/package.json +1 -1
@@ -0,0 +1,210 @@
1
+ import { OrderModule, ProductList, SalesSummaryModule, ScanOrderLogInput, ScanOrderLoggerModule, ScanOrderLoggerProviderConfig, ScanOrderLoggerProviderType } from '../../modules';
2
+ import type { QuantityCheckResult, QuantityLimitResult } from '../../model/strategy/adapter/itemRule';
3
+ /**
4
+ * 扫码下单流程 hook
5
+ */
6
+ export declare enum ScanOrderHooks {
7
+ onInited = "scanOrder:onInited",
8
+ onDestroy = "scanOrder:onDestroy",
9
+ onRetryInit = "scanOrder:onRetryInit",
10
+ onRefresh = "scanOrder:onRefresh",
11
+ onCartValidationChanged = "scanOrder:onCartValidationChanged"
12
+ }
13
+ export type ScanOrderStatus = 'idle' | 'initializing' | 'ready' | 'error';
14
+ export type ScanOrderEntryContext = {
15
+ biz: string;
16
+ mode: 'scan' | 'append';
17
+ resourceId?: string;
18
+ sourceOrderId?: string;
19
+ };
20
+ export interface ScanOrderConfig {
21
+ orderSource: 'local' | 'remote';
22
+ scanTimeout: number;
23
+ allowAppend: boolean;
24
+ maxAppendCount: number;
25
+ features: {
26
+ autoMerge: boolean;
27
+ verifyResource: boolean;
28
+ };
29
+ }
30
+ export interface ScanOrderOrderProductIdentity {
31
+ product_id: number | null;
32
+ product_variant_id: number;
33
+ identity_key?: string;
34
+ }
35
+ export interface ScanOrderOrderProduct extends ScanOrderOrderProductIdentity {
36
+ order_detail_id: number | null;
37
+ num: number;
38
+ product_option_item: any[];
39
+ selling_price: string;
40
+ original_price: string;
41
+ payment_price: string;
42
+ tax_fee: string;
43
+ is_charge_tax: number;
44
+ discount_list: any[];
45
+ product_bundle: any[];
46
+ metadata: Record<string, any>;
47
+ _origin?: Record<string, any>;
48
+ }
49
+ export interface ScanOrderSubmitProduct extends Omit<ScanOrderOrderProduct, '_origin' | 'identity_key'> {
50
+ }
51
+ export interface ScanOrderSummary {
52
+ product_quantity: number;
53
+ product_original_amount: string;
54
+ product_amount: string;
55
+ product_expect_amount: string;
56
+ product_tax_fee: string;
57
+ shipping_fee: string;
58
+ shipping_tax_fee: string;
59
+ tax_fee: string;
60
+ surcharge_fee: string;
61
+ discount_amount: string;
62
+ deposit_amount: string;
63
+ deposit?: {
64
+ total: string;
65
+ deposit_policy_ids: number[];
66
+ hasDeposit: boolean;
67
+ };
68
+ expect_amount: string;
69
+ total_amount: string;
70
+ amount_gap: string;
71
+ rounding_amount: string;
72
+ pay_service_charge_amount: string;
73
+ tax_title?: string;
74
+ tax_rate?: number;
75
+ }
76
+ /**
77
+ * ScanOrder 临时订单(runtime-clean 版本)
78
+ * 只保留运行时字段,不包含任何 __comment 字段
79
+ */
80
+ export interface ScanOrderTempOrder {
81
+ order_id: number | null;
82
+ relation_id?: string;
83
+ table_form_id?: string;
84
+ resource_id?: string;
85
+ order_number: string;
86
+ shop_order_number: string;
87
+ type: string;
88
+ business_code: string;
89
+ platform: string;
90
+ sales_channel: string;
91
+ order_sales_channel: string;
92
+ status: string;
93
+ payment_status: string;
94
+ shipping_status: string;
95
+ customer_id: number | null;
96
+ customer_name: string;
97
+ country_calling_code: string;
98
+ phone: string;
99
+ email: string;
100
+ is_price_include_tax: number;
101
+ tax_title: string;
102
+ tax_country_code: string;
103
+ currency_code: string;
104
+ currency_symbol: string;
105
+ currency_format: string;
106
+ is_deposit: number;
107
+ deposit_amount: string;
108
+ shop_discount: string;
109
+ surcharge_fee: string;
110
+ note: string;
111
+ schedule_date: string;
112
+ created_at: string;
113
+ products: ScanOrderOrderProduct[];
114
+ bookings: any[];
115
+ payments: any[];
116
+ surcharges: any[];
117
+ discount_list: any[];
118
+ relation_forms: any[];
119
+ contacts: any[];
120
+ contacts_info: any[];
121
+ holder: Record<string, any> | null;
122
+ summary: ScanOrderSummary;
123
+ metadata: Record<string, any>;
124
+ }
125
+ export interface ScanOrderSubmitPayload extends Omit<ScanOrderTempOrder, 'platform' | 'products' | 'created_at' | 'summary' | 'surcharges'> {
126
+ platform: 'H5' | 'PC';
127
+ request_unique_idempotency_token?: string;
128
+ form_record_ids?: Array<{
129
+ form_id: number | string;
130
+ form_record_ids: Array<number | string>;
131
+ }>;
132
+ products: ScanOrderSubmitProduct[];
133
+ }
134
+ export type ScanOrderAvailabilityMode = 'idle' | 'shop_closed' | 'resource_block' | 'resource_busy' | 'additional_order_with_code' | 'additional_order';
135
+ export interface ScanOrderAvailabilityInfo {
136
+ mode: ScanOrderAvailabilityMode;
137
+ order_id?: string;
138
+ relation_id?: string;
139
+ table_form_id?: string;
140
+ deskmate_valid?: boolean;
141
+ errorTips?: string;
142
+ policy?: string | null;
143
+ partyroom_booking?: string | null;
144
+ }
145
+ export interface ScanOrderTableSnackConfig {
146
+ snack?: boolean | number | string;
147
+ table_validate?: boolean | number | string;
148
+ }
149
+ export interface ScanOrderOrderNumberPrefixConfig {
150
+ table_order?: string;
151
+ pos?: string;
152
+ }
153
+ export interface ScanOrderTableFormRecord {
154
+ policy?: string | null;
155
+ }
156
+ export interface ScanOrderTableConfigApiData {
157
+ table_max_number?: number | string | null;
158
+ order_count?: number | string | null;
159
+ order_id?: number | string | null;
160
+ last_order_id?: number | string | null;
161
+ relation_id?: number | string | null;
162
+ table_form_id?: number | string | null;
163
+ table_snack?: ScanOrderTableSnackConfig[] | null;
164
+ order_number_prefix?: ScanOrderOrderNumberPrefixConfig[] | null;
165
+ [key: string]: any;
166
+ }
167
+ export interface ScanOrderTableConfigApiResponse {
168
+ status?: boolean;
169
+ code?: number;
170
+ message?: string;
171
+ data?: ScanOrderTableConfigApiData | null;
172
+ }
173
+ export interface ScanOrderResourceState extends ScanOrderAvailabilityInfo {
174
+ tableMaxNumber: number;
175
+ orderCount: number;
176
+ relationId?: string;
177
+ tableFormId?: string;
178
+ currentOrderId?: string;
179
+ lastOrderId?: string;
180
+ allowSnack: boolean;
181
+ deskmateValid: boolean;
182
+ isExclusive: boolean;
183
+ isFull: boolean;
184
+ orderNumberPrefix: ScanOrderOrderNumberPrefixConfig[];
185
+ raw: ScanOrderTableConfigApiData | null;
186
+ table_form_record?: ScanOrderTableFormRecord | null;
187
+ }
188
+ export interface ScanOrderState {
189
+ entryContext: ScanOrderEntryContext | null;
190
+ status: ScanOrderStatus;
191
+ config: ScanOrderTableConfigApiData | null;
192
+ resource: ScanOrderResourceState | null;
193
+ flow: Record<string, any>;
194
+ error: string | null;
195
+ products?: ProductList;
196
+ order?: OrderModule;
197
+ salesSummary?: SalesSummaryModule;
198
+ scanOrderLogger?: ScanOrderLoggerModule;
199
+ itemRuleQuantityLimits: QuantityLimitResult[];
200
+ cartValidation: {
201
+ passed: boolean | null;
202
+ failures: QuantityCheckResult[];
203
+ };
204
+ }
205
+ export interface ScanOrderLoggerRuntimeConfig {
206
+ provider?: ScanOrderLoggerProviderType;
207
+ providerConfig?: ScanOrderLoggerProviderConfig;
208
+ }
209
+ export interface ScanOrderAddLogParams extends ScanOrderLogInput {
210
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 扫码下单流程 hook
3
+ */
4
+ export var ScanOrderHooks = /*#__PURE__*/function (ScanOrderHooks) {
5
+ ScanOrderHooks["onInited"] = "scanOrder:onInited";
6
+ ScanOrderHooks["onDestroy"] = "scanOrder:onDestroy";
7
+ ScanOrderHooks["onRetryInit"] = "scanOrder:onRetryInit";
8
+ ScanOrderHooks["onRefresh"] = "scanOrder:onRefresh";
9
+ ScanOrderHooks["onCartValidationChanged"] = "scanOrder:onCartValidationChanged";
10
+ return ScanOrderHooks;
11
+ }({});
12
+
13
+ /**
14
+ * ScanOrder 临时订单(runtime-clean 版本)
15
+ * 只保留运行时字段,不包含任何 __comment 字段
16
+ */
@@ -0,0 +1,93 @@
1
+ import { ScanOrderOrderProduct, ScanOrderOrderProductIdentity, ScanOrderSummary, ScanOrderTempOrder } from './types';
2
+ import type { CartItemSummary, ItemRuleBusinessData, PaxInfo, QuantityLimitResult } from '../../model/strategy/adapter/itemRule';
3
+ import type { StrategyConfig } from '../../model/strategy/type';
4
+ /**
5
+ * 构建金额全为 0 的空 summary。
6
+ * 作为尚未计算金额时的兜底默认值,避免下游因 undefined 报错。
7
+ */
8
+ export declare function createEmptySummary(): ScanOrderSummary;
9
+ /**
10
+ * 商品数量安全取值。
11
+ * - NaN / undefined / < 1 均视作 1(最低起订量)
12
+ * - 有值时取整(不支持小数数量)
13
+ */
14
+ export declare function getSafeProductNum(num?: number): number;
15
+ /**
16
+ * 宽松布尔值转换。
17
+ * 兼容后端/配置中心常见的 boolean / number / string 表达,统一归一成 true/false。
18
+ */
19
+ export declare function toBoolean(value: unknown): boolean;
20
+ /**
21
+ * 将值归一化为有效的正向字符串。
22
+ * null / undefined / 空串 / '0' / 'null' 统一视为无效值并返回 undefined。
23
+ */
24
+ export declare function toPositiveString(value: unknown): string | undefined;
25
+ /**
26
+ * 归一化 item rule 策略模型 ID 列表。
27
+ * - 支持 string / number 混合输入
28
+ * - 仅保留 > 0 的合法数字
29
+ * - 自动去重
30
+ */
31
+ export declare function normalizeEnabledItemRuleIds(rawIds: unknown): number[];
32
+ /**
33
+ * 从 tableConfig 中提取合法策略模型 ID 列表。
34
+ */
35
+ export declare function extractStrategyModelIdsFromTableConfig(tableConfig: Record<string, any> | null | undefined): number[];
36
+ /**
37
+ * 仅保留 item_rule 类型策略。
38
+ */
39
+ export declare function normalizeItemRuleStrategies(configs: unknown): StrategyConfig[];
40
+ export declare function toNonNegativeNumber(value: unknown): number;
41
+ export declare function toNonNegativeInt(value: unknown): number;
42
+ export declare function toPriceString(value: unknown, fallback?: string): string;
43
+ export declare function buildProductKey(productId: number, productVariantId: number): string;
44
+ export declare function getTopLevelProductId(product: Record<string, any>): number | null;
45
+ export declare function getTopLevelVariantId(product: Record<string, any>): number | null;
46
+ export declare function buildQuantityLimitIndex(limits: QuantityLimitResult[]): {
47
+ exactLimitMap: Map<string, QuantityLimitResult[]>;
48
+ productLimitMap: Map<number, QuantityLimitResult[]>;
49
+ };
50
+ export declare function resolveSkuMatchedQuantityLimits(params: {
51
+ productId: number;
52
+ variantId: number | null;
53
+ limitIndex: {
54
+ exactLimitMap: Map<string, QuantityLimitResult[]>;
55
+ productLimitMap: Map<number, QuantityLimitResult[]>;
56
+ };
57
+ }): QuantityLimitResult[];
58
+ export declare function aggregateItemRuleLimit(matchedLimits: QuantityLimitResult[]): {
59
+ min: number | undefined;
60
+ max: number | undefined;
61
+ exact: number | undefined;
62
+ mustInclude: boolean;
63
+ } | null;
64
+ export declare function buildItemRuleBusinessData(params: {
65
+ tempOrder: ScanOrderTempOrder;
66
+ runtimeConfig: {
67
+ pax?: Partial<PaxInfo>;
68
+ historicalItems?: CartItemSummary[];
69
+ serviceType?: string;
70
+ submissionIndex?: number;
71
+ custom?: Record<string, any>;
72
+ };
73
+ itemRuleConfigs: StrategyConfig[];
74
+ }): ItemRuleBusinessData;
75
+ export declare function attachItemRuleLimitsToTopLevelProducts<T>(productList: T, limits: QuantityLimitResult[]): T;
76
+ /**
77
+ * 判断两个商品 identity 是否匹配。
78
+ * 当双方都没有 identity_key 时回退到 product_id + product_variant_id 比较(向后兼容);
79
+ * 一旦有一方携带 identity_key,则必须严格相等。
80
+ */
81
+ export declare function isIdentityMatch(a: ScanOrderOrderProductIdentity, b: ScanOrderOrderProductIdentity): boolean;
82
+ /**
83
+ * 根据 identity 在商品列表中定位下标。
84
+ * 用于判断商品是否已存在(已存在则累加数量,否则新增)。
85
+ */
86
+ export declare function getProductIdentityIndex(products: ScanOrderOrderProduct[], identity: ScanOrderOrderProductIdentity): number;
87
+ /**
88
+ * 对外部传入的商品对象做归一化:
89
+ * - 补全可选字段默认值(未传则使用兜底值,避免后续计算时因 undefined 导致异常)
90
+ * - 对 num 调用 getSafeProductNum 做安全处理
91
+ * - 保留 _origin 供后续业务流程(如促销规则)使用
92
+ */
93
+ export declare function normalizeOrderProduct(product: Partial<ScanOrderOrderProduct> & ScanOrderOrderProductIdentity): ScanOrderOrderProduct;