@pisell/pisellos 0.0.567 → 0.0.569

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 (557) hide show
  1. package/dist/core/index.js +6 -9
  2. package/dist/model/strategy/adapter/promotion/evaluator.js +3 -2
  3. package/dist/model/strategy/adapter/walletPass/evaluator.js +0 -2
  4. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  5. package/dist/model/strategy/adapter/walletPass/utils.js +7 -7
  6. package/dist/model/strategy/strategy-example.js +5 -19
  7. package/dist/modules/BaseModule.d.ts +2 -2
  8. package/dist/modules/BaseModule.js +4 -4
  9. package/dist/modules/BookingContext/index.d.ts +48 -0
  10. package/dist/modules/BookingContext/index.js +566 -0
  11. package/dist/modules/BookingContext/types.d.ts +102 -0
  12. package/dist/modules/BookingContext/types.js +51 -0
  13. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  14. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +302 -0
  15. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  16. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +149 -0
  17. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  18. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +249 -0
  19. package/dist/modules/BookingContext/utils/flexible.d.ts +28 -0
  20. package/dist/modules/BookingContext/utils/flexible.js +56 -0
  21. package/dist/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  22. package/dist/modules/BookingContext/utils/formatResourceList.js +38 -0
  23. package/dist/modules/BookingContext/utils/index.d.ts +11 -0
  24. package/dist/modules/BookingContext/utils/index.js +11 -0
  25. package/dist/modules/BookingContext/utils/noResource.d.ts +13 -0
  26. package/dist/modules/BookingContext/utils/noResource.js +77 -0
  27. package/dist/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  28. package/dist/modules/BookingContext/utils/orderLineDisplay.js +36 -0
  29. package/dist/modules/BookingContext/utils/productExtend.d.ts +72 -0
  30. package/dist/modules/BookingContext/utils/productExtend.js +339 -0
  31. package/dist/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  32. package/dist/modules/BookingContext/utils/resourceErrors.js +74 -0
  33. package/dist/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  34. package/dist/modules/BookingContext/utils/resourceSelection.js +24 -0
  35. package/dist/modules/BookingContext/utils/resources.d.ts +80 -0
  36. package/dist/modules/BookingContext/utils/resources.js +486 -0
  37. package/dist/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  38. package/dist/modules/BookingContext/utils/serviceTimes.js +151 -0
  39. package/dist/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  40. package/dist/modules/BookingContext/utils/timeSlices.js +100 -0
  41. package/dist/modules/Cart/index.js +0 -3
  42. package/dist/modules/Cart/utils/cartProduct.js +26 -6
  43. package/dist/modules/Cart/utils/changePrice.js +27 -20
  44. package/dist/modules/Customer/index.d.ts +20 -0
  45. package/dist/modules/Customer/index.js +172 -83
  46. package/dist/modules/Customer/types.d.ts +2 -0
  47. package/dist/modules/Date/index.js +1 -5
  48. package/dist/modules/Discount/index.d.ts +2 -1
  49. package/dist/modules/Discount/index.js +37 -12
  50. package/dist/modules/Discount/types.d.ts +1 -0
  51. package/dist/modules/OpenData/index.d.ts +8 -0
  52. package/dist/modules/OpenData/index.js +35 -17
  53. package/dist/modules/Order/index.d.ts +449 -24
  54. package/dist/modules/Order/index.js +5437 -608
  55. package/dist/modules/Order/types.d.ts +693 -88
  56. package/dist/modules/Order/types.js +68 -1
  57. package/dist/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  58. package/dist/modules/Order/utils/bundleDiscountHydration.js +144 -0
  59. package/dist/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  60. package/dist/modules/Order/utils/manualProductDiscount.js +210 -0
  61. package/dist/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  62. package/dist/modules/Order/utils/orderCollectionIdentity.js +405 -0
  63. package/dist/modules/Order/utils.d.ts +167 -18
  64. package/dist/modules/Order/utils.js +960 -165
  65. package/dist/modules/Payment/index.d.ts +10 -9
  66. package/dist/modules/Payment/index.js +508 -874
  67. package/dist/modules/Payment/types.d.ts +40 -16
  68. package/dist/modules/Payment/utils.d.ts +1 -1
  69. package/dist/modules/Payment/utils.js +4 -3
  70. package/dist/modules/Payment/walletpass.js +48 -34
  71. package/dist/modules/Product/types.d.ts +29 -7
  72. package/dist/modules/ProductList/index.d.ts +17 -13
  73. package/dist/modules/ProductList/index.js +184 -74
  74. package/dist/modules/ProductList/types.d.ts +17 -0
  75. package/dist/modules/Quotation/index.d.ts +22 -2
  76. package/dist/modules/Quotation/index.js +108 -42
  77. package/dist/modules/Quotation/types.d.ts +19 -0
  78. package/dist/modules/ResourcePlanner/index.d.ts +24 -0
  79. package/dist/modules/ResourcePlanner/index.js +181 -0
  80. package/dist/modules/ResourcePlanner/planner.d.ts +14 -0
  81. package/dist/modules/ResourcePlanner/planner.js +1069 -0
  82. package/dist/modules/ResourcePlanner/types.d.ts +227 -0
  83. package/dist/modules/ResourcePlanner/types.js +1 -0
  84. package/dist/modules/Rules/index.d.ts +8 -10
  85. package/dist/modules/Rules/index.js +219 -114
  86. package/dist/modules/Rules/types.d.ts +14 -3
  87. package/dist/modules/SalesSummary/index.d.ts +23 -26
  88. package/dist/modules/SalesSummary/index.js +152 -46
  89. package/dist/modules/SalesSummary/types.d.ts +9 -1
  90. package/dist/modules/SalesSummary/utils.d.ts +3 -22
  91. package/dist/modules/SalesSummary/utils.js +803 -163
  92. package/dist/modules/Schedule/getDateIsInSchedule.js +14 -7
  93. package/dist/modules/Schedule/index.d.ts +18 -5
  94. package/dist/modules/Schedule/index.js +78 -24
  95. package/dist/modules/Schedule/types.d.ts +2 -0
  96. package/dist/modules/Schedule/utils.js +0 -1
  97. package/dist/modules/Step/index.js +0 -1
  98. package/dist/modules/Summary/index.js +4 -3
  99. package/dist/modules/SurchargeList/index.d.ts +18 -0
  100. package/dist/modules/SurchargeList/index.js +185 -0
  101. package/dist/modules/SurchargeList/types.d.ts +15 -0
  102. package/dist/modules/SurchargeList/types.js +1 -0
  103. package/dist/modules/index.d.ts +3 -0
  104. package/dist/modules/index.js +4 -1
  105. package/dist/plugins/app.d.ts +2 -0
  106. package/dist/plugins/request.d.ts +1 -0
  107. package/dist/plugins/request.js +1 -4
  108. package/dist/plugins/window.js +2 -6
  109. package/dist/server/index.d.ts +462 -8
  110. package/dist/server/index.js +6137 -714
  111. package/dist/server/modules/floor-plan/index.d.ts +39 -0
  112. package/dist/server/modules/floor-plan/index.js +595 -0
  113. package/dist/server/modules/floor-plan/types.d.ts +43 -0
  114. package/dist/server/modules/floor-plan/types.js +13 -0
  115. package/dist/server/modules/index.d.ts +7 -2
  116. package/dist/server/modules/index.js +6 -0
  117. package/dist/server/modules/menu/index.js +32 -41
  118. package/dist/server/modules/order/index.d.ts +207 -14
  119. package/dist/server/modules/order/index.js +2326 -379
  120. package/dist/server/modules/order/types.d.ts +76 -5
  121. package/dist/server/modules/order/types.js +14 -1
  122. package/dist/server/modules/order/utils/filterBookings.d.ts +7 -1
  123. package/dist/server/modules/order/utils/filterBookings.js +118 -11
  124. package/dist/server/modules/order/utils/filterOrders.js +242 -14
  125. package/dist/server/modules/payment/index.d.ts +28 -0
  126. package/dist/server/modules/payment/index.js +305 -0
  127. package/dist/server/modules/payment/types.d.ts +9 -0
  128. package/dist/server/modules/payment/types.js +1 -0
  129. package/dist/server/modules/products/index.d.ts +105 -14
  130. package/dist/server/modules/products/index.js +1397 -540
  131. package/dist/server/modules/products/types.d.ts +34 -1
  132. package/dist/server/modules/products/types.js +4 -0
  133. package/dist/server/modules/quotation/index.d.ts +39 -0
  134. package/dist/server/modules/quotation/index.js +289 -86
  135. package/dist/server/modules/resource/index.d.ts +2 -3
  136. package/dist/server/modules/resource/index.js +105 -84
  137. package/dist/server/modules/schedule/index.d.ts +6 -4
  138. package/dist/server/modules/schedule/index.js +137 -114
  139. package/dist/server/test.json +713 -0
  140. package/dist/server/types.d.ts +2 -0
  141. package/dist/server/utils/product.js +2 -3
  142. package/dist/server/utils/small-ticket.d.ts +71 -0
  143. package/dist/server/utils/small-ticket.js +963 -0
  144. package/dist/solution/BaseSales/index.d.ts +378 -0
  145. package/dist/solution/BaseSales/index.js +4006 -0
  146. package/dist/solution/BaseSales/types.d.ts +394 -0
  147. package/dist/solution/BaseSales/types.js +40 -0
  148. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  149. package/dist/solution/BaseSales/utils/cartPromotion.js +1450 -0
  150. package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  151. package/dist/solution/BaseSales/utils/parseSalesResponse.js +157 -0
  152. package/dist/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  153. package/dist/solution/BaseSales/utils/quotationPrice.js +250 -0
  154. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  155. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +218 -0
  156. package/dist/solution/BaseSales/utils.d.ts +40 -0
  157. package/dist/solution/BaseSales/utils.js +263 -0
  158. package/dist/solution/BookingByStep/index.js +7 -59
  159. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  160. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  161. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  162. package/dist/solution/BookingTicket/index.d.ts +393 -24
  163. package/dist/solution/BookingTicket/index.js +2506 -445
  164. package/dist/solution/BookingTicket/types.d.ts +191 -6
  165. package/dist/solution/BookingTicket/types.js +83 -10
  166. package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  167. package/dist/solution/BookingTicket/utils/addProductDecision.js +346 -0
  168. package/dist/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  169. package/dist/solution/BookingTicket/utils/addTimeAvailability.js +95 -0
  170. package/dist/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  171. package/dist/solution/BookingTicket/utils/bookingStatus.js +136 -0
  172. package/dist/solution/BookingTicket/utils/cartView.d.ts +29 -0
  173. package/dist/solution/BookingTicket/utils/cartView.js +209 -0
  174. package/dist/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  175. package/dist/solution/BookingTicket/utils/exampleData.js +183 -0
  176. package/dist/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  177. package/dist/solution/BookingTicket/utils/orderCustomer.js +31 -0
  178. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  179. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.js +438 -0
  180. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  181. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +400 -0
  182. package/dist/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  183. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +41 -1
  184. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  185. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.js +56 -0
  186. package/dist/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  187. package/dist/solution/BookingTicket/utils/scan/handleScan.js +36 -34
  188. package/dist/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  189. package/dist/solution/BookingTicket/utils/scan/index.js +26 -18
  190. package/dist/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  191. package/dist/solution/BookingTicket/utils/scan/scanProductValues.js +150 -0
  192. package/dist/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  193. package/dist/solution/BookingTicket/utils/sessionCatalogStale.js +78 -0
  194. package/dist/solution/BuyTickets/index.js +9 -12
  195. package/dist/solution/Checkout/index.d.ts +1 -0
  196. package/dist/solution/Checkout/index.js +199 -277
  197. package/dist/solution/Checkout/utils/index.js +8 -20
  198. package/dist/solution/RegisterAndLogin/config.js +2 -10
  199. package/dist/solution/RegisterAndLogin/index.js +30 -76
  200. package/dist/solution/Sales/index.d.ts +50 -5
  201. package/dist/solution/Sales/index.js +484 -92
  202. package/dist/solution/Sales/types.d.ts +26 -2
  203. package/dist/solution/ScanOrder/index.d.ts +27 -21
  204. package/dist/solution/ScanOrder/index.js +509 -454
  205. package/dist/solution/ScanOrder/types.d.ts +33 -11
  206. package/dist/solution/ScanOrder/types.js +4 -5
  207. package/dist/solution/ScanOrder/utils.d.ts +4 -1
  208. package/dist/solution/ScanOrder/utils.js +109 -34
  209. package/dist/solution/ShopDiscount/index.js +6 -11
  210. package/dist/solution/UnifiedBookingSales/index.d.ts +183 -0
  211. package/dist/solution/UnifiedBookingSales/index.js +1871 -0
  212. package/dist/solution/UnifiedBookingSales/types.d.ts +143 -0
  213. package/dist/solution/UnifiedBookingSales/types.js +11 -0
  214. package/dist/solution/VenueBooking/index.d.ts +34 -20
  215. package/dist/solution/VenueBooking/index.js +630 -505
  216. package/dist/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  217. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  218. package/dist/solution/VenueBooking/utils/slotMerge.js +9 -3
  219. package/dist/solution/index.d.ts +2 -0
  220. package/dist/solution/index.js +3 -1
  221. package/dist/types/index.d.ts +11 -1
  222. package/dist/utils/task.js +15 -18
  223. package/dist/utils/watch.js +0 -1
  224. package/lib/apis/picoding.js +2 -0
  225. package/lib/core/index.js +130 -131
  226. package/lib/effects/index.js +46 -57
  227. package/lib/index.js +92 -53
  228. package/lib/model/index.js +14 -21
  229. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  230. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  231. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  232. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  233. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  234. package/lib/model/strategy/adapter/index.js +100 -64
  235. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  236. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  237. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  238. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  239. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  240. package/lib/model/strategy/adapter/promotion/adapter.js +84 -63
  241. package/lib/model/strategy/adapter/promotion/evaluator.js +383 -232
  242. package/lib/model/strategy/adapter/promotion/examples.js +139 -159
  243. package/lib/model/strategy/adapter/promotion/index.js +1 -49
  244. package/lib/model/strategy/adapter/promotion/type.js +199 -35
  245. package/lib/model/strategy/adapter/type.js +4 -16
  246. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -152
  247. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  248. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  249. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  250. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  251. package/lib/model/strategy/adapter/walletPass/utils.js +654 -402
  252. package/lib/model/strategy/engine.js +270 -168
  253. package/lib/model/strategy/index.js +49 -34
  254. package/lib/model/strategy/strategy-example.js +243 -239
  255. package/lib/model/strategy/type.js +100 -40
  256. package/lib/modules/Account/index.js +39 -53
  257. package/lib/modules/Account/types.js +20 -33
  258. package/lib/modules/AccountList/index.js +116 -154
  259. package/lib/modules/AccountList/types.js +30 -31
  260. package/lib/modules/AccountList/utils.js +18 -30
  261. package/lib/modules/BaseModule.d.ts +2 -2
  262. package/lib/modules/BaseModule.js +26 -49
  263. package/lib/modules/BookingContext/index.d.ts +48 -0
  264. package/lib/modules/BookingContext/index.js +390 -0
  265. package/lib/modules/BookingContext/types.d.ts +102 -0
  266. package/lib/modules/BookingContext/types.js +48 -0
  267. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  268. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +286 -0
  269. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  270. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +148 -0
  271. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  272. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +242 -0
  273. package/lib/modules/BookingContext/utils/flexible.d.ts +28 -0
  274. package/lib/modules/BookingContext/utils/flexible.js +63 -0
  275. package/lib/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  276. package/lib/modules/BookingContext/utils/formatResourceList.js +35 -0
  277. package/lib/modules/BookingContext/utils/index.d.ts +11 -0
  278. package/lib/modules/BookingContext/utils/index.js +126 -0
  279. package/lib/modules/BookingContext/utils/noResource.d.ts +13 -0
  280. package/lib/modules/BookingContext/utils/noResource.js +78 -0
  281. package/lib/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  282. package/lib/modules/BookingContext/utils/orderLineDisplay.js +29 -0
  283. package/lib/modules/BookingContext/utils/productExtend.d.ts +72 -0
  284. package/lib/modules/BookingContext/utils/productExtend.js +330 -0
  285. package/lib/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  286. package/lib/modules/BookingContext/utils/resourceErrors.js +80 -0
  287. package/lib/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  288. package/lib/modules/BookingContext/utils/resourceSelection.js +24 -0
  289. package/lib/modules/BookingContext/utils/resources.d.ts +80 -0
  290. package/lib/modules/BookingContext/utils/resources.js +419 -0
  291. package/lib/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  292. package/lib/modules/BookingContext/utils/serviceTimes.js +161 -0
  293. package/lib/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  294. package/lib/modules/BookingContext/utils/timeSlices.js +114 -0
  295. package/lib/modules/Cart/index.js +170 -124
  296. package/lib/modules/Cart/types.js +46 -51
  297. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  298. package/lib/modules/Cart/utils/cartDate.js +56 -61
  299. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  300. package/lib/modules/Cart/utils/cartNote.js +27 -32
  301. package/lib/modules/Cart/utils/cartProduct.js +331 -244
  302. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  303. package/lib/modules/Cart/utils/cartResource.js +72 -78
  304. package/lib/modules/Cart/utils/changePrice.js +37 -67
  305. package/lib/modules/Cart/utils/index.js +106 -48
  306. package/lib/modules/Customer/constants.js +13 -34
  307. package/lib/modules/Customer/index.d.ts +20 -0
  308. package/lib/modules/Customer/index.js +270 -154
  309. package/lib/modules/Customer/types.d.ts +2 -0
  310. package/lib/modules/Customer/types.js +38 -35
  311. package/lib/modules/Date/index.js +116 -115
  312. package/lib/modules/Date/types.js +16 -28
  313. package/lib/modules/Date/utils.js +174 -123
  314. package/lib/modules/Discount/index.d.ts +2 -1
  315. package/lib/modules/Discount/index.js +133 -113
  316. package/lib/modules/Discount/types.d.ts +1 -0
  317. package/lib/modules/Discount/types.js +9 -31
  318. package/lib/modules/Guests/index.js +30 -56
  319. package/lib/modules/Guests/types.js +23 -33
  320. package/lib/modules/Holder/index.js +209 -189
  321. package/lib/modules/Holder/types.js +4 -16
  322. package/lib/modules/Holder/utils.js +20 -49
  323. package/lib/modules/OpenData/index.d.ts +8 -0
  324. package/lib/modules/OpenData/index.js +81 -74
  325. package/lib/modules/OpenData/types.js +4 -16
  326. package/lib/modules/OpenData/utils.js +44 -78
  327. package/lib/modules/Order/index.d.ts +449 -24
  328. package/lib/modules/Order/index.js +3834 -489
  329. package/lib/modules/Order/types.d.ts +693 -88
  330. package/lib/modules/Order/types.js +78 -33
  331. package/lib/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  332. package/lib/modules/Order/utils/bundleDiscountHydration.js +106 -0
  333. package/lib/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  334. package/lib/modules/Order/utils/manualProductDiscount.js +207 -0
  335. package/lib/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  336. package/lib/modules/Order/utils/orderCollectionIdentity.js +353 -0
  337. package/lib/modules/Order/utils.d.ts +167 -18
  338. package/lib/modules/Order/utils.js +1247 -345
  339. package/lib/modules/Payment/cash.js +20 -33
  340. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  341. package/lib/modules/Payment/eftpos.js +16 -30
  342. package/lib/modules/Payment/index.d.ts +10 -9
  343. package/lib/modules/Payment/index.js +542 -502
  344. package/lib/modules/Payment/mx51.js +1 -0
  345. package/lib/modules/Payment/types.d.ts +40 -16
  346. package/lib/modules/Payment/types.js +216 -107
  347. package/lib/modules/Payment/utils.d.ts +1 -1
  348. package/lib/modules/Payment/utils.js +53 -49
  349. package/lib/modules/Payment/walletpass.js +231 -203
  350. package/lib/modules/Product/index.js +51 -46
  351. package/lib/modules/Product/types.d.ts +29 -7
  352. package/lib/modules/Product/types.js +4 -16
  353. package/lib/modules/Product/utils.js +32 -33
  354. package/lib/modules/ProductList/index.d.ts +17 -13
  355. package/lib/modules/ProductList/index.js +160 -118
  356. package/lib/modules/ProductList/types.d.ts +17 -0
  357. package/lib/modules/ProductList/types.js +9 -31
  358. package/lib/modules/Quotation/index.d.ts +22 -2
  359. package/lib/modules/Quotation/index.js +123 -89
  360. package/lib/modules/Quotation/types.d.ts +19 -0
  361. package/lib/modules/Quotation/types.js +4 -16
  362. package/lib/modules/Resource/index.js +27 -59
  363. package/lib/modules/Resource/types.js +22 -32
  364. package/lib/modules/Resource/utils.js +30 -38
  365. package/lib/modules/ResourcePlanner/index.d.ts +24 -0
  366. package/lib/modules/ResourcePlanner/index.js +147 -0
  367. package/lib/modules/ResourcePlanner/planner.d.ts +14 -0
  368. package/lib/modules/ResourcePlanner/planner.js +895 -0
  369. package/lib/modules/ResourcePlanner/types.d.ts +227 -0
  370. package/lib/modules/ResourcePlanner/types.js +5 -0
  371. package/lib/modules/Rules/index.d.ts +8 -10
  372. package/lib/modules/Rules/index.js +1286 -894
  373. package/lib/modules/Rules/types.d.ts +14 -3
  374. package/lib/modules/Rules/types.js +17 -40
  375. package/lib/modules/SalesSummary/index.d.ts +23 -26
  376. package/lib/modules/SalesSummary/index.js +130 -71
  377. package/lib/modules/SalesSummary/types.d.ts +9 -1
  378. package/lib/modules/SalesSummary/types.js +4 -16
  379. package/lib/modules/SalesSummary/utils.d.ts +3 -22
  380. package/lib/modules/SalesSummary/utils.js +738 -250
  381. package/lib/modules/ScanOrderLogger/index.js +59 -79
  382. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  383. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  384. package/lib/modules/ScanOrderLogger/types.js +4 -16
  385. package/lib/modules/Schedule/getDateIsInSchedule.js +345 -171
  386. package/lib/modules/Schedule/index.d.ts +18 -5
  387. package/lib/modules/Schedule/index.js +139 -114
  388. package/lib/modules/Schedule/type.js +4 -16
  389. package/lib/modules/Schedule/types.d.ts +2 -0
  390. package/lib/modules/Schedule/types.js +4 -16
  391. package/lib/modules/Schedule/utils.js +433 -291
  392. package/lib/modules/Step/index.js +40 -52
  393. package/lib/modules/Step/tyeps.js +4 -16
  394. package/lib/modules/Summary/index.js +66 -70
  395. package/lib/modules/Summary/types.js +4 -16
  396. package/lib/modules/Summary/utils.js +782 -429
  397. package/lib/modules/SurchargeList/index.d.ts +18 -0
  398. package/lib/modules/SurchargeList/index.js +95 -0
  399. package/lib/modules/SurchargeList/types.d.ts +15 -0
  400. package/lib/modules/SurchargeList/types.js +5 -0
  401. package/lib/modules/index.d.ts +3 -0
  402. package/lib/modules/index.js +245 -57
  403. package/lib/plugins/app.d.ts +2 -0
  404. package/lib/plugins/app.js +4 -16
  405. package/lib/plugins/index.js +36 -25
  406. package/lib/plugins/request.d.ts +1 -0
  407. package/lib/plugins/request.js +137 -126
  408. package/lib/plugins/shopStore.js +4 -16
  409. package/lib/plugins/user.js +4 -16
  410. package/lib/plugins/window.js +171 -179
  411. package/lib/server/index.d.ts +462 -8
  412. package/lib/server/index.js +4668 -713
  413. package/lib/server/modules/floor-plan/index.d.ts +39 -0
  414. package/lib/server/modules/floor-plan/index.js +306 -0
  415. package/lib/server/modules/floor-plan/types.d.ts +43 -0
  416. package/lib/server/modules/floor-plan/types.js +19 -0
  417. package/lib/server/modules/index.d.ts +7 -2
  418. package/lib/server/modules/index.js +106 -59
  419. package/lib/server/modules/menu/index.js +146 -122
  420. package/lib/server/modules/menu/types.js +18 -31
  421. package/lib/server/modules/order/index.d.ts +207 -14
  422. package/lib/server/modules/order/index.js +1463 -316
  423. package/lib/server/modules/order/types.d.ts +76 -5
  424. package/lib/server/modules/order/types.js +117 -32
  425. package/lib/server/modules/order/utils/filterBookings.d.ts +7 -1
  426. package/lib/server/modules/order/utils/filterBookings.js +288 -146
  427. package/lib/server/modules/order/utils/filterOrders.js +318 -64
  428. package/lib/server/modules/payment/index.d.ts +28 -0
  429. package/lib/server/modules/payment/index.js +168 -0
  430. package/lib/server/modules/payment/types.d.ts +9 -0
  431. package/lib/server/modules/payment/types.js +5 -0
  432. package/lib/server/modules/products/index.d.ts +105 -14
  433. package/lib/server/modules/products/index.js +969 -383
  434. package/lib/server/modules/products/types.d.ts +34 -1
  435. package/lib/server/modules/products/types.js +44 -34
  436. package/lib/server/modules/quotation/index.d.ts +39 -0
  437. package/lib/server/modules/quotation/index.js +220 -77
  438. package/lib/server/modules/quotation/types.js +21 -31
  439. package/lib/server/modules/resource/index.d.ts +2 -3
  440. package/lib/server/modules/resource/index.js +269 -214
  441. package/lib/server/modules/resource/types.js +42 -33
  442. package/lib/server/modules/schedule/index.d.ts +6 -4
  443. package/lib/server/modules/schedule/index.js +158 -132
  444. package/lib/server/modules/schedule/types.js +14 -21
  445. package/lib/server/modules/schedule/utils.js +334 -163
  446. package/lib/server/test.json +713 -0
  447. package/lib/server/types.d.ts +2 -0
  448. package/lib/server/types.js +4 -16
  449. package/lib/server/utils/index.js +25 -23
  450. package/lib/server/utils/product.js +197 -140
  451. package/lib/server/utils/schedule.js +34 -41
  452. package/lib/server/utils/small-ticket.d.ts +71 -0
  453. package/lib/server/utils/small-ticket.js +926 -0
  454. package/lib/server/utils/time.js +40 -49
  455. package/lib/solution/BaseSales/index.d.ts +378 -0
  456. package/lib/solution/BaseSales/index.js +2367 -0
  457. package/lib/solution/BaseSales/types.d.ts +394 -0
  458. package/lib/solution/BaseSales/types.js +47 -0
  459. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  460. package/lib/solution/BaseSales/utils/cartPromotion.js +1155 -0
  461. package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  462. package/lib/solution/BaseSales/utils/parseSalesResponse.js +140 -0
  463. package/lib/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  464. package/lib/solution/BaseSales/utils/quotationPrice.js +231 -0
  465. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  466. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +215 -0
  467. package/lib/solution/BaseSales/utils.d.ts +40 -0
  468. package/lib/solution/BaseSales/utils.js +259 -0
  469. package/lib/solution/BookingByStep/index.js +1530 -1343
  470. package/lib/solution/BookingByStep/types.js +40 -99
  471. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  472. package/lib/solution/BookingByStep/utils/products.js +42 -52
  473. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  474. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  475. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  476. package/lib/solution/BookingTicket/index.d.ts +393 -24
  477. package/lib/solution/BookingTicket/index.js +1459 -160
  478. package/lib/solution/BookingTicket/types.d.ts +191 -6
  479. package/lib/solution/BookingTicket/types.js +101 -66
  480. package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  481. package/lib/solution/BookingTicket/utils/addProductDecision.js +353 -0
  482. package/lib/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  483. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +94 -0
  484. package/lib/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  485. package/lib/solution/BookingTicket/utils/bookingStatus.js +136 -0
  486. package/lib/solution/BookingTicket/utils/cartView.d.ts +29 -0
  487. package/lib/solution/BookingTicket/utils/cartView.js +200 -0
  488. package/lib/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  489. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  490. package/lib/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  491. package/lib/solution/BookingTicket/utils/orderCustomer.js +35 -0
  492. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  493. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +387 -0
  494. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  495. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +220 -0
  496. package/lib/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  497. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +85 -80
  498. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  499. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +64 -0
  500. package/lib/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  501. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -80
  502. package/lib/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  503. package/lib/solution/BookingTicket/utils/scan/index.js +103 -95
  504. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  505. package/lib/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  506. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +115 -0
  507. package/lib/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  508. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +83 -0
  509. package/lib/solution/BuyTickets/index.js +67 -70
  510. package/lib/solution/BuyTickets/types.js +22 -38
  511. package/lib/solution/Checkout/index.d.ts +1 -0
  512. package/lib/solution/Checkout/index.js +1461 -1169
  513. package/lib/solution/Checkout/types.js +91 -61
  514. package/lib/solution/Checkout/utils/index.js +228 -159
  515. package/lib/solution/PlaceOrder/index.js +55 -0
  516. package/lib/solution/RegisterAndLogin/config.js +495 -470
  517. package/lib/solution/RegisterAndLogin/index.js +633 -630
  518. package/lib/solution/RegisterAndLogin/types.js +189 -76
  519. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  520. package/lib/solution/Sales/index.d.ts +50 -5
  521. package/lib/solution/Sales/index.js +495 -220
  522. package/lib/solution/Sales/types.d.ts +26 -2
  523. package/lib/solution/Sales/types.js +27 -33
  524. package/lib/solution/ScanOrder/index.d.ts +27 -21
  525. package/lib/solution/ScanOrder/index.js +908 -904
  526. package/lib/solution/ScanOrder/types.d.ts +33 -11
  527. package/lib/solution/ScanOrder/types.js +33 -34
  528. package/lib/solution/ScanOrder/utils.d.ts +4 -1
  529. package/lib/solution/ScanOrder/utils.js +457 -344
  530. package/lib/solution/ShopDiscount/index.js +230 -236
  531. package/lib/solution/ShopDiscount/types.js +15 -37
  532. package/lib/solution/ShopDiscount/utils.js +309 -172
  533. package/lib/solution/UnifiedBookingSales/index.d.ts +183 -0
  534. package/lib/solution/UnifiedBookingSales/index.js +1050 -0
  535. package/lib/solution/UnifiedBookingSales/types.d.ts +143 -0
  536. package/lib/solution/UnifiedBookingSales/types.js +14 -0
  537. package/lib/solution/VenueBooking/index.d.ts +34 -20
  538. package/lib/solution/VenueBooking/index.js +982 -950
  539. package/lib/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  540. package/lib/solution/VenueBooking/types.js +20 -40
  541. package/lib/solution/VenueBooking/utils/dateSummary.js +22 -54
  542. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  543. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  544. package/lib/solution/VenueBooking/utils/slotMerge.js +96 -108
  545. package/lib/solution/VenueBooking/utils/smartPricing.js +112 -100
  546. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -132
  547. package/lib/solution/VenueBooking/utils.js +130 -67
  548. package/lib/solution/index.d.ts +2 -0
  549. package/lib/solution/index.js +124 -37
  550. package/lib/store/createStore.js +32 -29
  551. package/lib/types/index.d.ts +11 -1
  552. package/lib/types/index.js +4 -16
  553. package/lib/utils/task.js +36 -36
  554. package/lib/utils/watch.js +81 -47
  555. package/package.json +2 -1
  556. package/dist/solution/Checkout/appointmentDemo.json +0 -1
  557. package/lib/solution/Checkout/appointmentDemo.json +0 -1
@@ -1,36 +1,27 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
18
2
 
19
- // src/model/strategy/adapter/itemRule/adapter.ts
20
- var adapter_exports = {};
21
- __export(adapter_exports, {
22
- ItemRuleAdapter: () => ItemRuleAdapter,
23
- default: () => adapter_default
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
24
5
  });
25
- module.exports = __toCommonJS(adapter_exports);
26
- var import_type = require("./type");
27
- var ItemRuleAdapter = class {
28
- constructor() {
29
- this.name = "ItemRuleAdapter";
30
- this.version = "1.0.0";
31
- }
6
+ exports.default = exports.ItemRuleAdapter = void 0;
7
+ var _type = require("./type");
8
+ /**
9
+ * ItemRule 适配器
10
+ *
11
+ * 将堂食扫码点餐的商品规则业务数据转换为策略引擎格式,
12
+ * 并将引擎结果转换为数量校验和预填购物车的业务结果。
13
+ */
14
+ class ItemRuleAdapter {
15
+ name = 'ItemRuleAdapter';
16
+ version = '1.0.0';
32
17
  prepareContext(businessData) {
33
- const { pax, cartItems, serviceType, submissionIndex, custom } = businessData;
18
+ const {
19
+ pax,
20
+ cartItems,
21
+ serviceType,
22
+ submissionIndex,
23
+ custom
24
+ } = businessData;
34
25
  return {
35
26
  entities: {
36
27
  cartItems,
@@ -38,7 +29,7 @@ var ItemRuleAdapter = class {
38
29
  pax
39
30
  },
40
31
  attributes: {
41
- serviceType: serviceType || "",
32
+ serviceType: serviceType || '',
42
33
  totalPax: pax.total,
43
34
  adultPax: pax.adult,
44
35
  childPax: pax.child,
@@ -56,47 +47,61 @@ var ItemRuleAdapter = class {
56
47
  const quantityChecks = [];
57
48
  const prefillItems = [];
58
49
  if (!result.applicable || !businessData) {
59
- return { quantityChecks, prefillItems };
50
+ return {
51
+ quantityChecks,
52
+ prefillItems
53
+ };
60
54
  }
61
55
  for (const action of result.matchedActions) {
62
- if (action.type === import_type.ITEM_RULE_ACTION_TYPES.QUANTITY_CHECK) {
56
+ if (action.type === _type.ITEM_RULE_ACTION_TYPES.QUANTITY_CHECK) {
63
57
  const checkResult = this.processQuantityCheck(action, businessData);
64
58
  if (checkResult) {
65
59
  quantityChecks.push(checkResult);
66
60
  }
67
- } else if (action.type === import_type.ITEM_RULE_ACTION_TYPES.PREFILL_CART) {
61
+ } else if (action.type === _type.ITEM_RULE_ACTION_TYPES.PREFILL_CART) {
68
62
  const items = this.processPrefillCart(action, businessData);
69
63
  prefillItems.push(...items);
70
64
  }
71
65
  }
72
- return { quantityChecks, prefillItems };
66
+ return {
67
+ quantityChecks,
68
+ prefillItems
69
+ };
73
70
  }
74
71
  formatConfig(result, businessData) {
75
- return { result, businessData };
72
+ return {
73
+ result,
74
+ businessData
75
+ };
76
76
  }
77
+
77
78
  // ============================================
78
79
  // Quantity Check 处理
79
80
  // ============================================
81
+
80
82
  processQuantityCheck(action, businessData) {
81
83
  const config = action.config;
82
- if (!config)
83
- return null;
84
- const { scope, quantityRules, targetType, targets, validationMessage } = config;
84
+ if (!config) return null;
85
+ const {
86
+ scope,
87
+ quantityRules,
88
+ targetType,
89
+ targets,
90
+ validationMessage
91
+ } = config;
85
92
  if (!this.shouldEvaluateForScope(scope, businessData.submissionIndex ?? 0)) {
86
93
  return null;
87
94
  }
88
- const actualQuantity = this.calculateActualQuantity(
89
- targets,
90
- scope,
91
- businessData
92
- );
93
- const { passed, failedRules, requiredMin, requiredMax, requiredExact, mustInclude } = this.evaluateQuantityRules(quantityRules, actualQuantity, businessData);
94
- const message = this.formatValidationMessage(
95
- validationMessage,
95
+ const actualQuantity = this.calculateActualQuantity(targets, scope, businessData);
96
+ const {
97
+ passed,
98
+ failedRules,
96
99
  requiredMin,
97
100
  requiredMax,
98
- requiredExact
99
- );
101
+ requiredExact,
102
+ mustInclude
103
+ } = this.evaluateQuantityRules(quantityRules, actualQuantity, businessData);
104
+ const message = this.formatValidationMessage(validationMessage, requiredMin, requiredMax, requiredExact);
100
105
  return {
101
106
  ruleId: action.id,
102
107
  passed,
@@ -109,42 +114,44 @@ var ItemRuleAdapter = class {
109
114
  mustInclude,
110
115
  validationMessage: message,
111
116
  scope,
112
- failedRules: passed ? void 0 : failedRules
117
+ failedRules: passed ? undefined : failedRules
113
118
  };
114
119
  }
120
+
115
121
  /**
116
122
  * 根据 scope 判断当前提交是否需要评估此规则
117
123
  */
118
124
  shouldEvaluateForScope(scope, submissionIndex) {
119
125
  switch (scope) {
120
- case "each_submission":
126
+ case 'each_submission':
121
127
  return true;
122
- case "first_submission_only":
128
+ case 'first_submission_only':
123
129
  return submissionIndex === 0;
124
- case "subsequent_only":
130
+ case 'subsequent_only':
125
131
  return submissionIndex > 0;
126
- case "cumulative":
132
+ case 'cumulative':
127
133
  return true;
128
134
  default:
129
135
  return true;
130
136
  }
131
137
  }
138
+
132
139
  /**
133
140
  * 计算目标商品在购物车中的实际数量
134
141
  *
135
142
  * cumulative scope 时还会加上历史订单数量。
136
143
  */
137
144
  calculateActualQuantity(targets, scope, businessData) {
138
- const targetIds = new Set(targets.map((t) => t.product_id));
145
+ const targetIds = new Set(targets.map(t => t.product_id));
139
146
  let quantity = 0;
140
- const countFromItems = (items) => {
147
+ const countFromItems = items => {
141
148
  for (const item of items) {
142
149
  if (targetIds.has(item.product_id)) {
143
150
  quantity += item.quantity;
144
151
  }
145
152
  }
146
153
  };
147
- if (scope === "cumulative") {
154
+ if (scope === 'cumulative') {
148
155
  if (businessData.historicalItems) {
149
156
  countFromItems(businessData.historicalItems);
150
157
  }
@@ -166,38 +173,42 @@ var ItemRuleAdapter = class {
166
173
  for (const rule of rules) {
167
174
  const resolvedValue = this.resolveQuantityValue(rule, businessData);
168
175
  switch (rule.comparison) {
169
- case "minimum": {
170
- if (requiredMin === void 0 || resolvedValue > requiredMin) {
171
- requiredMin = resolvedValue;
172
- }
173
- if (actualQuantity < resolvedValue) {
174
- failedRules.push(rule);
175
- }
176
- break;
177
- }
178
- case "maximum": {
179
- if (requiredMax === void 0 || resolvedValue < requiredMax) {
180
- requiredMax = resolvedValue;
176
+ case 'minimum':
177
+ {
178
+ if (requiredMin === undefined || resolvedValue > requiredMin) {
179
+ requiredMin = resolvedValue;
180
+ }
181
+ if (actualQuantity < resolvedValue) {
182
+ failedRules.push(rule);
183
+ }
184
+ break;
181
185
  }
182
- if (actualQuantity > resolvedValue) {
183
- failedRules.push(rule);
186
+ case 'maximum':
187
+ {
188
+ if (requiredMax === undefined || resolvedValue < requiredMax) {
189
+ requiredMax = resolvedValue;
190
+ }
191
+ if (actualQuantity > resolvedValue) {
192
+ failedRules.push(rule);
193
+ }
194
+ break;
184
195
  }
185
- break;
186
- }
187
- case "exact": {
188
- requiredExact = resolvedValue;
189
- if (actualQuantity !== resolvedValue) {
190
- failedRules.push(rule);
196
+ case 'exact':
197
+ {
198
+ requiredExact = resolvedValue;
199
+ if (actualQuantity !== resolvedValue) {
200
+ failedRules.push(rule);
201
+ }
202
+ break;
191
203
  }
192
- break;
193
- }
194
- case "must_include": {
195
- mustInclude = true;
196
- if (actualQuantity < 1) {
197
- failedRules.push(rule);
204
+ case 'must_include':
205
+ {
206
+ mustInclude = true;
207
+ if (actualQuantity < 1) {
208
+ failedRules.push(rule);
209
+ }
210
+ break;
198
211
  }
199
- break;
200
- }
201
212
  }
202
213
  }
203
214
  return {
@@ -209,36 +220,39 @@ var ItemRuleAdapter = class {
209
220
  mustInclude
210
221
  };
211
222
  }
223
+
212
224
  /**
213
225
  * 根据 source 解析出数量规则的实际数值
214
226
  */
215
227
  resolveQuantityValue(rule, businessData) {
216
228
  switch (rule.source) {
217
- case "total_pax":
229
+ case 'total_pax':
218
230
  return businessData.pax.total;
219
- case "adult_pax":
231
+ case 'adult_pax':
220
232
  return businessData.pax.adult;
221
- case "fixed":
233
+ case 'fixed':
222
234
  return rule.value ?? 0;
223
235
  default:
224
236
  return rule.value ?? 0;
225
237
  }
226
238
  }
239
+
227
240
  /**
228
241
  * 格式化校验提示语,替换 {min} {max} 占位符
229
242
  */
230
243
  formatValidationMessage(template, min, max, exact, locale) {
231
- if (!template)
232
- return void 0;
233
- let text = typeof template === "string" ? template : template[locale || "en"] || Object.values(template)[0] || "";
234
- text = text.replace(/\{min\}/g, String(min ?? ""));
235
- text = text.replace(/\{max\}/g, String(max ?? ""));
236
- text = text.replace(/\{exact\}/g, String(exact ?? ""));
244
+ if (!template) return undefined;
245
+ let text = typeof template === 'string' ? template : template[locale || 'en'] || Object.values(template)[0] || '';
246
+ text = text.replace(/\{min\}/g, String(min ?? ''));
247
+ text = text.replace(/\{max\}/g, String(max ?? ''));
248
+ text = text.replace(/\{exact\}/g, String(exact ?? ''));
237
249
  return text;
238
250
  }
251
+
239
252
  // ============================================
240
253
  // Quantity Limit 提取(仅读取配置,不做校验)
241
254
  // ============================================
255
+
242
256
  /**
243
257
  * 从单个 QUANTITY_CHECK action 中提取数量限制配置。
244
258
  *
@@ -248,9 +262,14 @@ var ItemRuleAdapter = class {
248
262
  */
249
263
  extractQuantityLimits(action, businessData) {
250
264
  const config = action.config;
251
- if (!config)
252
- return null;
253
- const { scope, quantityRules, targetType, targets, validationMessage } = config;
265
+ if (!config) return null;
266
+ const {
267
+ scope,
268
+ quantityRules,
269
+ targetType,
270
+ targets,
271
+ validationMessage
272
+ } = config;
254
273
  if (!this.shouldEvaluateForScope(scope, businessData.submissionIndex ?? 0)) {
255
274
  return null;
256
275
  }
@@ -261,40 +280,34 @@ var ItemRuleAdapter = class {
261
280
  for (const rule of quantityRules) {
262
281
  const resolvedValue = this.resolveQuantityValue(rule, businessData);
263
282
  switch (rule.comparison) {
264
- case "minimum": {
265
- if (requiredMin === void 0 || resolvedValue > requiredMin) {
266
- requiredMin = resolvedValue;
283
+ case 'minimum':
284
+ {
285
+ if (requiredMin === undefined || resolvedValue > requiredMin) {
286
+ requiredMin = resolvedValue;
287
+ }
288
+ break;
267
289
  }
268
- break;
269
- }
270
- case "maximum": {
271
- if (requiredMax === void 0 || resolvedValue < requiredMax) {
272
- requiredMax = resolvedValue;
290
+ case 'maximum':
291
+ {
292
+ if (requiredMax === undefined || resolvedValue < requiredMax) {
293
+ requiredMax = resolvedValue;
294
+ }
295
+ break;
296
+ }
297
+ case 'exact':
298
+ {
299
+ requiredExact = resolvedValue;
300
+ break;
301
+ }
302
+ case 'must_include':
303
+ {
304
+ mustInclude = true;
305
+ break;
273
306
  }
274
- break;
275
- }
276
- case "exact": {
277
- requiredExact = resolvedValue;
278
- break;
279
- }
280
- case "must_include": {
281
- mustInclude = true;
282
- break;
283
- }
284
307
  }
285
308
  }
286
- const remainingMax = this.calculateRemainingMax(
287
- scope,
288
- requiredMax,
289
- targets,
290
- businessData
291
- );
292
- const formattedValidationMessage = this.formatValidationMessage(
293
- validationMessage,
294
- requiredMin,
295
- requiredMax,
296
- requiredExact
297
- );
309
+ const remainingMax = this.calculateRemainingMax(scope, requiredMax, targets, businessData);
310
+ const formattedValidationMessage = this.formatValidationMessage(validationMessage, requiredMin, requiredMax, requiredExact);
298
311
  return {
299
312
  ruleId: action.id,
300
313
  targetType,
@@ -309,6 +322,7 @@ var ItemRuleAdapter = class {
309
322
  rawValidationMessage: validationMessage
310
323
  };
311
324
  }
325
+
312
326
  /**
313
327
  * 计算当前提交剩余可选的最大数量。
314
328
  *
@@ -317,14 +331,14 @@ var ItemRuleAdapter = class {
317
331
  * 其余场景返回 undefined,保持向后兼容。
318
332
  */
319
333
  calculateRemainingMax(scope, requiredMax, targets, businessData) {
320
- if (scope !== "cumulative" || typeof requiredMax !== "number") {
321
- return void 0;
334
+ if (scope !== 'cumulative' || typeof requiredMax !== 'number') {
335
+ return undefined;
322
336
  }
323
337
  const historicalItems = businessData.historicalItems;
324
- if (!(historicalItems == null ? void 0 : historicalItems.length)) {
338
+ if (!historicalItems?.length) {
325
339
  return Math.max(0, requiredMax);
326
340
  }
327
- const targetIds = new Set(targets.map((t) => t.product_id));
341
+ const targetIds = new Set(targets.map(t => t.product_id));
328
342
  let historicalQty = 0;
329
343
  for (const item of historicalItems) {
330
344
  if (targetIds.has(item.product_id)) {
@@ -333,18 +347,18 @@ var ItemRuleAdapter = class {
333
347
  }
334
348
  return Math.max(0, requiredMax - historicalQty);
335
349
  }
350
+
336
351
  // ============================================
337
352
  // Prefill Cart 处理
338
353
  // ============================================
354
+
339
355
  processPrefillCart(action, businessData) {
340
356
  const config = action.config;
341
- if (!(config == null ? void 0 : config.products))
342
- return [];
357
+ if (!config?.products) return [];
343
358
  const results = [];
344
359
  for (const prefillProduct of config.products) {
345
360
  const quantity = this.resolvePrefillQuantity(prefillProduct.quantityFrom, prefillProduct.quantity, businessData);
346
- if (quantity <= 0)
347
- continue;
361
+ if (quantity <= 0) continue;
348
362
  results.push({
349
363
  ruleId: action.id,
350
364
  product_id: prefillProduct.product_id,
@@ -354,24 +368,22 @@ var ItemRuleAdapter = class {
354
368
  }
355
369
  return results;
356
370
  }
371
+
357
372
  /**
358
373
  * 根据 quantityFrom 计算预填数量
359
374
  */
360
375
  resolvePrefillQuantity(quantityFrom, fixedValue, businessData) {
361
376
  switch (quantityFrom) {
362
- case "total_pax":
377
+ case 'total_pax':
363
378
  return businessData.pax.total;
364
- case "adult_pax":
379
+ case 'adult_pax':
365
380
  return businessData.pax.adult;
366
- case "fixed":
381
+ case 'fixed':
367
382
  return fixedValue ?? 0;
368
383
  default:
369
384
  return fixedValue ?? 0;
370
385
  }
371
386
  }
372
- };
373
- var adapter_default = ItemRuleAdapter;
374
- // Annotate the CommonJS export names for ESM import in node:
375
- 0 && (module.exports = {
376
- ItemRuleAdapter
377
- });
387
+ }
388
+ exports.ItemRuleAdapter = ItemRuleAdapter;
389
+ var _default = exports.default = ItemRuleAdapter;
@@ -1,56 +1,46 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
18
2
 
19
- // src/model/strategy/adapter/itemRule/evaluator.ts
20
- var evaluator_exports = {};
21
- __export(evaluator_exports, {
22
- ItemRuleEvaluator: () => ItemRuleEvaluator
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
23
5
  });
24
- module.exports = __toCommonJS(evaluator_exports);
25
- var import_engine = require("../../engine");
26
- var import_adapter = require("./adapter");
27
- var import_type = require("./type");
28
- var ItemRuleEvaluator = class {
6
+ exports.ItemRuleEvaluator = void 0;
7
+ var _engine = require("../../engine");
8
+ var _adapter = require("./adapter");
9
+ var _type = require("./type");
10
+ /**
11
+ * ItemRule 评估器
12
+ *
13
+ * 组合 StrategyEngine + ItemRuleAdapter,提供面向业务的高层 API。
14
+ * 支持批量评估多条 item_rule 策略配置,聚合数量校验和预填购物车结果。
15
+ */
16
+ class ItemRuleEvaluator {
17
+ engine;
18
+ adapter;
19
+ strategyConfigs = [];
29
20
  constructor() {
30
- this.strategyConfigs = [];
31
- this.engine = new import_engine.StrategyEngine({
21
+ this.engine = new _engine.StrategyEngine({
32
22
  debug: false,
33
23
  enableTrace: false
34
24
  });
35
- this.adapter = new import_adapter.ItemRuleAdapter();
25
+ this.adapter = new _adapter.ItemRuleAdapter();
36
26
  }
27
+
37
28
  /**
38
29
  * 设置策略配置列表
39
30
  * 自动过滤 metadata.type === 'item_rule' 的配置
40
31
  */
41
32
  setStrategyConfigs(configs) {
42
- this.strategyConfigs = configs.filter(
43
- (c) => c.metadata.type === "item_rule"
44
- );
33
+ this.strategyConfigs = configs.filter(c => c.metadata.type === 'item_rule');
45
34
  }
46
35
  getStrategyConfigs() {
47
36
  return this.strategyConfigs;
48
37
  }
38
+
49
39
  /**
50
40
  * 完整评估:数量校验 + 预填购物车
51
41
  */
52
42
  evaluate(businessData) {
53
- const configs = businessData.strategyConfigs ? businessData.strategyConfigs.filter((c) => c.metadata.type === "item_rule") : this.strategyConfigs;
43
+ const configs = businessData.strategyConfigs ? businessData.strategyConfigs.filter(c => c.metadata.type === 'item_rule') : this.strategyConfigs;
54
44
  const allQuantityChecks = [];
55
45
  const allPrefillItems = [];
56
46
  const rawResults = [];
@@ -58,14 +48,14 @@ var ItemRuleEvaluator = class {
58
48
  for (const config of configs) {
59
49
  const evalResult = this.engine.evaluate(config, context);
60
50
  rawResults.push(evalResult);
61
- const { quantityChecks, prefillItems } = this.adapter.transformResult(
62
- evalResult,
63
- businessData
64
- );
51
+ const {
52
+ quantityChecks,
53
+ prefillItems
54
+ } = this.adapter.transformResult(evalResult, businessData);
65
55
  allQuantityChecks.push(...quantityChecks);
66
56
  allPrefillItems.push(...prefillItems);
67
57
  }
68
- const failedChecks = allQuantityChecks.filter((c) => !c.passed);
58
+ const failedChecks = allQuantityChecks.filter(c => !c.passed);
69
59
  return {
70
60
  quantityChecks: allQuantityChecks,
71
61
  prefillItems: allPrefillItems,
@@ -74,6 +64,7 @@ var ItemRuleEvaluator = class {
74
64
  rawResults
75
65
  };
76
66
  }
67
+
77
68
  /**
78
69
  * 获取当前配置中各商品的数量限制
79
70
  *
@@ -82,16 +73,14 @@ var ItemRuleEvaluator = class {
82
73
  * 会评估条件是否满足、根据 scope + submissionIndex 过滤。
83
74
  */
84
75
  getQuantityLimits(businessData) {
85
- const configs = businessData.strategyConfigs ? businessData.strategyConfigs.filter((c) => c.metadata.type === "item_rule") : this.strategyConfigs;
76
+ const configs = businessData.strategyConfigs ? businessData.strategyConfigs.filter(c => c.metadata.type === 'item_rule') : this.strategyConfigs;
86
77
  const results = [];
87
78
  const context = this.adapter.prepareContext(businessData);
88
79
  for (const config of configs) {
89
80
  const evalResult = this.engine.evaluate(config, context);
90
- if (!evalResult.applicable)
91
- continue;
81
+ if (!evalResult.applicable) continue;
92
82
  for (const action of evalResult.matchedActions) {
93
- if (action.type !== import_type.ITEM_RULE_ACTION_TYPES.QUANTITY_CHECK)
94
- continue;
83
+ if (action.type !== _type.ITEM_RULE_ACTION_TYPES.QUANTITY_CHECK) continue;
95
84
  const limit = this.adapter.extractQuantityLimits(action, businessData);
96
85
  if (limit) {
97
86
  results.push(limit);
@@ -100,6 +89,7 @@ var ItemRuleEvaluator = class {
100
89
  }
101
90
  return results;
102
91
  }
92
+
103
93
  /**
104
94
  * 便捷方法:仅做数量校验,返回是否全部通过及失败详情
105
95
  */
@@ -110,6 +100,7 @@ var ItemRuleEvaluator = class {
110
100
  failures: result.failedChecks
111
101
  };
112
102
  }
103
+
113
104
  /**
114
105
  * 便捷方法:仅获取需要预填到购物车的商品
115
106
  */
@@ -117,8 +108,5 @@ var ItemRuleEvaluator = class {
117
108
  const result = this.evaluate(businessData);
118
109
  return result.prefillItems;
119
110
  }
120
- };
121
- // Annotate the CommonJS export names for ESM import in node:
122
- 0 && (module.exports = {
123
- ItemRuleEvaluator
124
- });
111
+ }
112
+ exports.ItemRuleEvaluator = ItemRuleEvaluator;