@pisell/pisellos 0.0.569 → 0.10.2

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 (328) hide show
  1. package/dist/core/index.js +10 -6
  2. package/dist/index.d.ts +0 -1
  3. package/dist/index.js +0 -3
  4. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  5. package/dist/model/strategy/adapter/walletPass/evaluator.js +7 -5
  6. package/dist/model/strategy/adapter/walletPass/example.js +26 -3
  7. package/dist/model/strategy/adapter/walletPass/index.js +5 -5
  8. package/dist/model/strategy/adapter/walletPass/type.d.ts +0 -3
  9. package/dist/model/strategy/adapter/walletPass/utils.d.ts +0 -26
  10. package/dist/model/strategy/adapter/walletPass/utils.js +17 -92
  11. package/dist/model/strategy/strategy-example.js +19 -5
  12. package/dist/modules/BaseModule.d.ts +1 -1
  13. package/dist/modules/BaseModule.js +8 -10
  14. package/dist/modules/Cart/index.js +3 -0
  15. package/dist/modules/Cart/utils/cartProduct.js +1 -0
  16. package/dist/modules/Cart/utils/cartResource.js +0 -2
  17. package/dist/modules/Cart/utils/changePrice.js +9 -16
  18. package/dist/modules/Date/index.js +5 -1
  19. package/dist/modules/Discount/index.d.ts +0 -1
  20. package/dist/modules/Discount/index.js +7 -22
  21. package/dist/modules/Discount/types.d.ts +0 -1
  22. package/dist/modules/OpenData/index.js +2 -0
  23. package/dist/modules/Order/index.js +70 -40
  24. package/dist/modules/Payment/index.js +162 -97
  25. package/dist/modules/Payment/types.d.ts +4 -8
  26. package/dist/modules/Payment/walletpass.d.ts +0 -2
  27. package/dist/modules/Payment/walletpass.js +5 -4
  28. package/dist/modules/ProductList/index.d.ts +1 -1
  29. package/dist/modules/ProductList/index.js +3 -12
  30. package/dist/modules/ProductList/types.d.ts +0 -1
  31. package/dist/modules/Rules/index.js +126 -427
  32. package/dist/modules/SalesSummary/utils.js +1 -2
  33. package/dist/modules/Schedule/getDateIsInSchedule.js +0 -5
  34. package/dist/modules/Schedule/index.js +1 -0
  35. package/dist/modules/Schedule/utils.js +1 -0
  36. package/dist/modules/Step/index.js +1 -0
  37. package/dist/modules/Summary/utils.js +22 -43
  38. package/dist/plugins/request.js +4 -1
  39. package/dist/plugins/window.js +6 -2
  40. package/dist/server/index.js +129 -97
  41. package/dist/server/modules/menu/index.js +41 -32
  42. package/dist/server/modules/order/index.js +4 -2
  43. package/dist/server/modules/products/index.js +42 -24
  44. package/dist/server/modules/quotation/index.js +38 -29
  45. package/dist/server/modules/resource/index.js +4 -3
  46. package/dist/server/modules/schedule/index.js +35 -27
  47. package/dist/server/utils/product.js +1 -0
  48. package/dist/solution/BaseSales/index.js +41 -38
  49. package/dist/solution/BookingByStep/index.d.ts +1 -1
  50. package/dist/solution/BookingByStep/index.js +60 -11
  51. package/dist/solution/BookingByStep/utils/capacity.js +11 -1
  52. package/dist/solution/BookingByStep/utils/resources.js +3 -1
  53. package/dist/solution/BookingByStep/utils/timeslots.js +43 -2
  54. package/dist/solution/BookingTicket/index.d.ts +1 -1
  55. package/dist/solution/BookingTicket/index.js +2 -0
  56. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +7 -6
  57. package/dist/solution/BookingTicket/utils/scan/handleScan.js +31 -25
  58. package/dist/solution/BookingTicket/utils/scan/index.js +10 -6
  59. package/dist/solution/BuyTickets/index.js +12 -9
  60. package/dist/solution/Checkout/index.js +252 -177
  61. package/dist/solution/Checkout/utils/index.js +16 -4
  62. package/dist/solution/RegisterAndLogin/index.js +76 -30
  63. package/dist/solution/ScanOrder/index.js +60 -50
  64. package/dist/solution/ShopDiscount/index.js +14 -15
  65. package/dist/solution/ShopDiscount/types.d.ts +4 -5
  66. package/dist/solution/ShopDiscount/utils.d.ts +0 -9
  67. package/dist/solution/ShopDiscount/utils.js +0 -9
  68. package/dist/solution/VenueBooking/index.d.ts +3 -31
  69. package/dist/solution/VenueBooking/index.js +496 -651
  70. package/dist/solution/VenueBooking/types.d.ts +1 -3
  71. package/dist/solution/VenueBooking/types.js +0 -1
  72. package/dist/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  73. package/dist/solution/VenueBooking/utils/dateSummary.js +25 -12
  74. package/dist/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  75. package/dist/solution/VenueBooking/utils/timeSlot.js +4 -9
  76. package/dist/types/index.d.ts +1 -1
  77. package/dist/utils/task.js +18 -15
  78. package/dist/utils/watch.js +1 -0
  79. package/lib/apis/picoding.js +0 -2
  80. package/lib/core/index.js +132 -130
  81. package/lib/effects/index.js +57 -46
  82. package/lib/index.d.ts +0 -1
  83. package/lib/index.js +50 -92
  84. package/lib/model/index.js +21 -14
  85. package/lib/model/strategy/adapter/dataVariant/adapter.js +50 -38
  86. package/lib/model/strategy/adapter/dataVariant/evaluator.js +236 -162
  87. package/lib/model/strategy/adapter/dataVariant/examples.js +237 -229
  88. package/lib/model/strategy/adapter/dataVariant/index.js +34 -39
  89. package/lib/model/strategy/adapter/dataVariant/type.js +28 -57
  90. package/lib/model/strategy/adapter/index.js +64 -100
  91. package/lib/model/strategy/adapter/itemRule/adapter.js +144 -156
  92. package/lib/model/strategy/adapter/itemRule/evaluator.js +48 -36
  93. package/lib/model/strategy/adapter/itemRule/examples.js +225 -295
  94. package/lib/model/strategy/adapter/itemRule/index.js +57 -83
  95. package/lib/model/strategy/adapter/itemRule/type.js +36 -97
  96. package/lib/model/strategy/adapter/promotion/adapter.js +63 -84
  97. package/lib/model/strategy/adapter/promotion/evaluator.js +231 -381
  98. package/lib/model/strategy/adapter/promotion/examples.js +159 -139
  99. package/lib/model/strategy/adapter/promotion/index.js +49 -1
  100. package/lib/model/strategy/adapter/promotion/type.js +35 -199
  101. package/lib/model/strategy/adapter/type.js +16 -4
  102. package/lib/model/strategy/adapter/walletPass/evaluator.js +152 -180
  103. package/lib/model/strategy/adapter/walletPass/example.js +190 -217
  104. package/lib/model/strategy/adapter/walletPass/index.js +51 -75
  105. package/lib/model/strategy/adapter/walletPass/locales.js +58 -36
  106. package/lib/model/strategy/adapter/walletPass/type.d.ts +0 -3
  107. package/lib/model/strategy/adapter/walletPass/type.js +16 -4
  108. package/lib/model/strategy/adapter/walletPass/utils.d.ts +0 -26
  109. package/lib/model/strategy/adapter/walletPass/utils.js +383 -678
  110. package/lib/model/strategy/engine.js +168 -270
  111. package/lib/model/strategy/index.js +34 -49
  112. package/lib/model/strategy/strategy-example.js +239 -243
  113. package/lib/model/strategy/type.js +40 -100
  114. package/lib/modules/Account/index.js +53 -39
  115. package/lib/modules/Account/types.js +33 -20
  116. package/lib/modules/AccountList/index.js +154 -116
  117. package/lib/modules/AccountList/types.js +31 -30
  118. package/lib/modules/AccountList/utils.js +30 -18
  119. package/lib/modules/BaseModule.d.ts +1 -1
  120. package/lib/modules/BaseModule.js +46 -25
  121. package/lib/modules/BookingContext/index.js +136 -158
  122. package/lib/modules/BookingContext/types.js +32 -46
  123. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +143 -131
  124. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +82 -75
  125. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +150 -170
  126. package/lib/modules/BookingContext/utils/flexible.js +55 -38
  127. package/lib/modules/BookingContext/utils/formatResourceList.js +34 -19
  128. package/lib/modules/BookingContext/utils/index.js +41 -124
  129. package/lib/modules/BookingContext/utils/noResource.js +70 -58
  130. package/lib/modules/BookingContext/utils/orderLineDisplay.js +41 -14
  131. package/lib/modules/BookingContext/utils/productExtend.js +155 -202
  132. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  133. package/lib/modules/BookingContext/utils/resourceSelection.js +41 -19
  134. package/lib/modules/BookingContext/utils/resources.js +167 -209
  135. package/lib/modules/BookingContext/utils/serviceTimes.js +116 -115
  136. package/lib/modules/BookingContext/utils/timeSlices.js +80 -70
  137. package/lib/modules/Cart/index.js +124 -170
  138. package/lib/modules/Cart/types.js +51 -46
  139. package/lib/modules/Cart/utils/cartAccount.js +39 -40
  140. package/lib/modules/Cart/utils/cartDate.js +61 -56
  141. package/lib/modules/Cart/utils/cartDiscount.js +33 -28
  142. package/lib/modules/Cart/utils/cartNote.js +32 -27
  143. package/lib/modules/Cart/utils/cartProduct.js +251 -321
  144. package/lib/modules/Cart/utils/cartRelationForms.js +35 -29
  145. package/lib/modules/Cart/utils/cartResource.js +78 -72
  146. package/lib/modules/Cart/utils/changePrice.js +50 -28
  147. package/lib/modules/Cart/utils/index.js +48 -106
  148. package/lib/modules/Customer/constants.js +34 -13
  149. package/lib/modules/Customer/index.js +169 -232
  150. package/lib/modules/Customer/types.js +35 -38
  151. package/lib/modules/Date/index.js +115 -116
  152. package/lib/modules/Date/types.js +28 -16
  153. package/lib/modules/Date/utils.js +123 -174
  154. package/lib/modules/Discount/index.d.ts +0 -1
  155. package/lib/modules/Discount/index.js +128 -130
  156. package/lib/modules/Discount/types.d.ts +0 -1
  157. package/lib/modules/Discount/types.js +31 -9
  158. package/lib/modules/Guests/index.js +56 -30
  159. package/lib/modules/Guests/types.js +33 -23
  160. package/lib/modules/Holder/index.js +189 -209
  161. package/lib/modules/Holder/types.js +16 -4
  162. package/lib/modules/Holder/utils.js +49 -20
  163. package/lib/modules/OpenData/index.js +76 -69
  164. package/lib/modules/OpenData/types.js +16 -4
  165. package/lib/modules/OpenData/utils.js +78 -44
  166. package/lib/modules/Order/index.js +1909 -1572
  167. package/lib/modules/Order/types.js +35 -78
  168. package/lib/modules/Order/utils/bundleDiscountHydration.js +74 -41
  169. package/lib/modules/Order/utils/manualProductDiscount.js +123 -124
  170. package/lib/modules/Order/utils/orderCollectionIdentity.js +210 -148
  171. package/lib/modules/Order/utils.js +634 -799
  172. package/lib/modules/Payment/cash.js +33 -20
  173. package/lib/modules/Payment/cashRecommendationAlgorithm.js +76 -145
  174. package/lib/modules/Payment/eftpos.js +30 -16
  175. package/lib/modules/Payment/index.js +378 -518
  176. package/lib/modules/Payment/mx51.js +0 -1
  177. package/lib/modules/Payment/types.d.ts +4 -8
  178. package/lib/modules/Payment/types.js +107 -216
  179. package/lib/modules/Payment/utils.js +48 -51
  180. package/lib/modules/Payment/walletpass.d.ts +0 -2
  181. package/lib/modules/Payment/walletpass.js +211 -226
  182. package/lib/modules/Product/index.js +46 -51
  183. package/lib/modules/Product/types.js +16 -4
  184. package/lib/modules/Product/utils.js +33 -32
  185. package/lib/modules/ProductList/index.d.ts +1 -1
  186. package/lib/modules/ProductList/index.js +117 -117
  187. package/lib/modules/ProductList/types.d.ts +0 -1
  188. package/lib/modules/ProductList/types.js +31 -9
  189. package/lib/modules/Quotation/index.js +100 -66
  190. package/lib/modules/Quotation/types.js +16 -4
  191. package/lib/modules/Resource/index.js +59 -27
  192. package/lib/modules/Resource/types.js +32 -22
  193. package/lib/modules/Resource/utils.js +38 -30
  194. package/lib/modules/ResourcePlanner/index.js +61 -60
  195. package/lib/modules/ResourcePlanner/planner.js +384 -346
  196. package/lib/modules/ResourcePlanner/types.js +16 -4
  197. package/lib/modules/Rules/index.js +903 -1475
  198. package/lib/modules/Rules/types.js +40 -17
  199. package/lib/modules/SalesSummary/index.js +90 -85
  200. package/lib/modules/SalesSummary/types.js +16 -4
  201. package/lib/modules/SalesSummary/utils.js +427 -351
  202. package/lib/modules/ScanOrderLogger/index.js +79 -59
  203. package/lib/modules/ScanOrderLogger/providers/feishu.js +78 -54
  204. package/lib/modules/ScanOrderLogger/providers/grafana.js +36 -13
  205. package/lib/modules/ScanOrderLogger/types.js +16 -4
  206. package/lib/modules/Schedule/getDateIsInSchedule.js +163 -339
  207. package/lib/modules/Schedule/index.js +114 -100
  208. package/lib/modules/Schedule/type.js +16 -4
  209. package/lib/modules/Schedule/types.js +16 -4
  210. package/lib/modules/Schedule/utils.js +291 -433
  211. package/lib/modules/Step/index.js +52 -40
  212. package/lib/modules/Step/tyeps.js +16 -4
  213. package/lib/modules/Summary/index.js +71 -66
  214. package/lib/modules/Summary/types.js +16 -4
  215. package/lib/modules/Summary/utils.js +418 -791
  216. package/lib/modules/SurchargeList/index.js +60 -46
  217. package/lib/modules/SurchargeList/types.js +16 -4
  218. package/lib/modules/index.js +63 -245
  219. package/lib/plugins/app.js +16 -4
  220. package/lib/plugins/index.js +25 -36
  221. package/lib/plugins/request.js +126 -137
  222. package/lib/plugins/shopStore.js +16 -4
  223. package/lib/plugins/user.js +16 -4
  224. package/lib/plugins/window.js +179 -171
  225. package/lib/server/index.js +2337 -2675
  226. package/lib/server/modules/floor-plan/index.js +123 -102
  227. package/lib/server/modules/floor-plan/types.js +30 -15
  228. package/lib/server/modules/index.js +68 -106
  229. package/lib/server/modules/menu/index.js +122 -146
  230. package/lib/server/modules/menu/types.js +31 -18
  231. package/lib/server/modules/order/index.js +642 -567
  232. package/lib/server/modules/order/types.js +32 -117
  233. package/lib/server/modules/order/utils/filterBookings.js +194 -219
  234. package/lib/server/modules/order/utils/filterOrders.js +92 -118
  235. package/lib/server/modules/payment/index.js +83 -59
  236. package/lib/server/modules/payment/types.js +16 -4
  237. package/lib/server/modules/products/index.js +459 -575
  238. package/lib/server/modules/products/types.js +34 -44
  239. package/lib/server/modules/quotation/index.js +172 -137
  240. package/lib/server/modules/quotation/types.js +31 -21
  241. package/lib/server/modules/resource/index.js +184 -213
  242. package/lib/server/modules/resource/types.js +33 -42
  243. package/lib/server/modules/schedule/index.js +123 -135
  244. package/lib/server/modules/schedule/types.js +21 -14
  245. package/lib/server/modules/schedule/utils.js +163 -334
  246. package/lib/server/types.js +16 -4
  247. package/lib/server/utils/index.js +23 -25
  248. package/lib/server/utils/product.js +139 -196
  249. package/lib/server/utils/schedule.js +41 -34
  250. package/lib/server/utils/small-ticket.js +456 -478
  251. package/lib/server/utils/time.js +49 -40
  252. package/lib/solution/BaseSales/index.js +1016 -850
  253. package/lib/solution/BaseSales/types.js +37 -41
  254. package/lib/solution/BaseSales/utils/cartPromotion.js +460 -611
  255. package/lib/solution/BaseSales/utils/parseSalesResponse.js +105 -85
  256. package/lib/solution/BaseSales/utils/quotationPrice.js +114 -56
  257. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +143 -102
  258. package/lib/solution/BaseSales/utils.js +140 -155
  259. package/lib/solution/BookingByStep/index.d.ts +1 -1
  260. package/lib/solution/BookingByStep/index.js +1340 -1530
  261. package/lib/solution/BookingByStep/types.js +99 -40
  262. package/lib/solution/BookingByStep/utils/capacity.js +160 -192
  263. package/lib/solution/BookingByStep/utils/products.js +52 -42
  264. package/lib/solution/BookingByStep/utils/resources.js +330 -527
  265. package/lib/solution/BookingByStep/utils/stock.js +44 -65
  266. package/lib/solution/BookingByStep/utils/timeslots.js +131 -129
  267. package/lib/solution/BookingTicket/index.d.ts +1 -1
  268. package/lib/solution/BookingTicket/index.js +459 -543
  269. package/lib/solution/BookingTicket/types.js +77 -99
  270. package/lib/solution/BookingTicket/utils/addProductDecision.js +184 -219
  271. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +89 -58
  272. package/lib/solution/BookingTicket/utils/bookingStatus.js +78 -107
  273. package/lib/solution/BookingTicket/utils/cartView.js +94 -110
  274. package/lib/solution/BookingTicket/utils/exampleData.js +0 -185
  275. package/lib/solution/BookingTicket/utils/orderCustomer.js +41 -18
  276. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +86 -219
  277. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +93 -144
  278. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +91 -79
  279. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +41 -54
  280. package/lib/solution/BookingTicket/utils/scan/handleScan.js +81 -84
  281. package/lib/solution/BookingTicket/utils/scan/index.js +104 -98
  282. package/lib/solution/BookingTicket/utils/scan/scanCache.js +43 -90
  283. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +64 -52
  284. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +58 -56
  285. package/lib/solution/BuyTickets/index.js +70 -67
  286. package/lib/solution/BuyTickets/types.js +38 -22
  287. package/lib/solution/Checkout/index.js +1158 -1451
  288. package/lib/solution/Checkout/types.js +61 -91
  289. package/lib/solution/Checkout/utils/index.js +156 -228
  290. package/lib/solution/PlaceOrder/index.js +0 -55
  291. package/lib/solution/RegisterAndLogin/config.js +460 -493
  292. package/lib/solution/RegisterAndLogin/index.js +630 -633
  293. package/lib/solution/RegisterAndLogin/types.js +76 -189
  294. package/lib/solution/RegisterAndLogin/utils.js +125 -183
  295. package/lib/solution/Sales/index.js +320 -317
  296. package/lib/solution/Sales/types.js +33 -27
  297. package/lib/solution/ScanOrder/index.js +862 -831
  298. package/lib/solution/ScanOrder/types.js +34 -33
  299. package/lib/solution/ScanOrder/utils.js +371 -406
  300. package/lib/solution/ShopDiscount/index.js +233 -235
  301. package/lib/solution/ShopDiscount/types.d.ts +4 -5
  302. package/lib/solution/ShopDiscount/types.js +37 -15
  303. package/lib/solution/ShopDiscount/utils.d.ts +0 -9
  304. package/lib/solution/ShopDiscount/utils.js +172 -309
  305. package/lib/solution/UnifiedBookingSales/index.js +405 -379
  306. package/lib/solution/UnifiedBookingSales/types.js +31 -12
  307. package/lib/solution/VenueBooking/index.d.ts +3 -31
  308. package/lib/solution/VenueBooking/index.js +916 -967
  309. package/lib/solution/VenueBooking/types.d.ts +1 -3
  310. package/lib/solution/VenueBooking/types.js +39 -20
  311. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  312. package/lib/solution/VenueBooking/utils/dateSummary.js +62 -25
  313. package/lib/solution/VenueBooking/utils/resource.js +54 -31
  314. package/lib/solution/VenueBooking/utils/slotMerge.js +107 -94
  315. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  316. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -138
  317. package/lib/solution/VenueBooking/utils.js +67 -130
  318. package/lib/solution/index.js +41 -124
  319. package/lib/store/createStore.js +29 -32
  320. package/lib/types/index.d.ts +1 -1
  321. package/lib/types/index.js +16 -4
  322. package/lib/utils/task.js +36 -36
  323. package/lib/utils/watch.js +47 -81
  324. package/package.json +2 -4
  325. package/dist/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  326. package/dist/solution/VenueBooking/utils/smartPricing.js +0 -233
  327. package/lib/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  328. package/lib/solution/VenueBooking/utils/smartPricing.js +0 -192
@@ -1,317 +1,257 @@
1
- "use strict";
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);
2
18
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
19
+ // src/model/strategy/adapter/itemRule/examples.ts
20
+ var examples_exports = {};
21
+ __export(examples_exports, {
22
+ HOTPOT_BASE_PICK_ONE_STRATEGY: () => HOTPOT_BASE_PICK_ONE_STRATEGY,
23
+ HOTPOT_BASE_REQUIRED_STRATEGY: () => HOTPOT_BASE_REQUIRED_STRATEGY,
24
+ MAX_BUNS_PER_TABLE_STRATEGY: () => MAX_BUNS_PER_TABLE_STRATEGY,
25
+ MIN_CONDIMENT_PER_PERSON_STRATEGY: () => MIN_CONDIMENT_PER_PERSON_STRATEGY,
26
+ quickUseItemRuleEvaluator: () => quickUseItemRuleEvaluator,
27
+ runItemRuleEvaluatorDemo: () => runItemRuleEvaluatorDemo
5
28
  });
6
- exports.MIN_CONDIMENT_PER_PERSON_STRATEGY = exports.MAX_BUNS_PER_TABLE_STRATEGY = exports.HOTPOT_BASE_REQUIRED_STRATEGY = exports.HOTPOT_BASE_PICK_ONE_STRATEGY = void 0;
7
- exports.quickUseItemRuleEvaluator = quickUseItemRuleEvaluator;
8
- exports.runItemRuleEvaluatorDemo = runItemRuleEvaluatorDemo;
9
- var _evaluator = require("./evaluator");
10
- var _type = require("./type");
11
- // ============================================
12
- // 示例 1:每人至少一份小料 (Minimum Per Person)
13
- // ============================================
14
-
15
- /**
16
- * 场景:火锅店扫码点餐,要求小料数量 >= 成人人数,自动添加到购物车
17
- *
18
- * WHEN: Always active
19
- * THEN:
20
- * - Quantity Check: 小料最少数量 = Adult Pax
21
- * - Prefill Cart: 自动添加小料 x Adult Pax
22
- */
23
- const MIN_CONDIMENT_PER_PERSON_STRATEGY = exports.MIN_CONDIMENT_PER_PERSON_STRATEGY = {
29
+ module.exports = __toCommonJS(examples_exports);
30
+ var import_evaluator = require("./evaluator");
31
+ var import_type = require("./type");
32
+ var MIN_CONDIMENT_PER_PERSON_STRATEGY = {
24
33
  metadata: {
25
- id: 'RULE_MIN_CONDIMENT_PER_PERSON',
34
+ id: "RULE_MIN_CONDIMENT_PER_PERSON",
26
35
  name: {
27
- 'zh-CN': '每人至少一份小料',
28
- en: 'Min 1 Condiment per person'
36
+ "zh-CN": "每人至少一份小料",
37
+ en: "Min 1 Condiment per person"
29
38
  },
30
- type: 'item_rule',
39
+ type: "item_rule",
31
40
  description: {
32
- 'zh-CN': '火锅小料数量不少于成人人数,自动添加',
33
- en: 'Condiment count must be at least adult pax, auto-added to cart'
41
+ "zh-CN": "火锅小料数量不少于成人人数,自动添加",
42
+ en: "Condiment count must be at least adult pax, auto-added to cart"
34
43
  }
35
44
  },
36
45
  conditions: {
37
- operator: 'and',
46
+ operator: "and",
38
47
  rules: [],
39
- actionIds: ['quantity_check_condiment', 'prefill_condiment']
48
+ actionIds: ["quantity_check_condiment", "prefill_condiment"]
40
49
  },
41
- actions: [{
42
- id: 'quantity_check_condiment',
43
- type: _type.ITEM_RULE_ACTION_TYPES.QUANTITY_CHECK,
44
- value: null,
45
- target: 'cart',
46
- priority: 10,
47
- config: {
48
- targetType: 'product',
49
- targets: [{
50
- product_id: 10001
51
- }, {
52
- product_id: 10002
53
- }],
54
- quantityRules: [{
55
- comparison: 'minimum',
56
- source: 'total_pax'
57
- }],
58
- scope: 'first_submission_only',
59
- validationMessage: {
60
- 'zh-CN': '小料至少需要 {min} 份(每位成人一份)',
61
- en: 'Condiment requires at least {min} items (one per adult)'
50
+ actions: [
51
+ {
52
+ id: "quantity_check_condiment",
53
+ type: import_type.ITEM_RULE_ACTION_TYPES.QUANTITY_CHECK,
54
+ value: null,
55
+ target: "cart",
56
+ priority: 10,
57
+ config: {
58
+ targetType: "product",
59
+ targets: [{ product_id: 10001 }, { product_id: 10002 }],
60
+ quantityRules: [
61
+ { comparison: "minimum", source: "total_pax" }
62
+ ],
63
+ scope: "first_submission_only",
64
+ validationMessage: {
65
+ "zh-CN": "小料至少需要 {min} 份(每位成人一份)",
66
+ en: "Condiment requires at least {min} items (one per adult)"
67
+ }
68
+ }
69
+ },
70
+ {
71
+ id: "prefill_condiment",
72
+ type: import_type.ITEM_RULE_ACTION_TYPES.PREFILL_CART,
73
+ value: null,
74
+ target: "cart",
75
+ priority: 5,
76
+ config: {
77
+ products: [
78
+ {
79
+ product_id: 10001,
80
+ quantityFrom: "total_pax"
81
+ }
82
+ ]
62
83
  }
63
84
  }
64
- }, {
65
- id: 'prefill_condiment',
66
- type: _type.ITEM_RULE_ACTION_TYPES.PREFILL_CART,
67
- value: null,
68
- target: 'cart',
69
- priority: 5,
70
- config: {
71
- products: [{
72
- product_id: 10001,
73
- quantityFrom: 'total_pax'
74
- }]
75
- }
76
- }]
85
+ ]
77
86
  };
78
-
79
- // ============================================
80
- // 示例 2:每桌限量3份包子 (Maximum Per Table)
81
- // ============================================
82
-
83
- /**
84
- * 场景:包子限量供应,每桌最多3份(含加单累计),肉包和菜包合计
85
- *
86
- * WHEN: Always active
87
- * THEN:
88
- * - Quantity Check: 肉包 + 菜包 合计 <= 3,scope=cumulative
89
- */
90
- const MAX_BUNS_PER_TABLE_STRATEGY = exports.MAX_BUNS_PER_TABLE_STRATEGY = {
87
+ var MAX_BUNS_PER_TABLE_STRATEGY = {
91
88
  metadata: {
92
- id: 'RULE_MAX_BUNS_PER_TABLE',
89
+ id: "RULE_MAX_BUNS_PER_TABLE",
93
90
  name: {
94
- 'zh-CN': '每桌限量供应3份包子',
95
- en: '3 Buns limit per table'
91
+ "zh-CN": "每桌限量供应3份包子",
92
+ en: "3 Buns limit per table"
96
93
  },
97
- type: 'item_rule',
94
+ type: "item_rule",
98
95
  description: {
99
- 'zh-CN': '肉包和菜包合计每桌不超过3份,含加单累计',
100
- en: 'Max 3 buns per table (pork + veggie combined, cumulative)'
96
+ "zh-CN": "肉包和菜包合计每桌不超过3份,含加单累计",
97
+ en: "Max 3 buns per table (pork + veggie combined, cumulative)"
101
98
  }
102
99
  },
103
100
  conditions: {
104
- operator: 'and',
101
+ operator: "and",
105
102
  rules: [],
106
- actionIds: ['quantity_check_buns']
103
+ actionIds: ["quantity_check_buns"]
107
104
  },
108
- actions: [{
109
- id: 'quantity_check_buns',
110
- type: _type.ITEM_RULE_ACTION_TYPES.QUANTITY_CHECK,
111
- value: null,
112
- target: 'cart',
113
- priority: 10,
114
- config: {
115
- targetType: 'product',
116
- targets: [{
117
- product_id: 20001
118
- }, {
119
- product_id: 20002
120
- }],
121
- quantityRules: [{
122
- comparison: 'maximum',
123
- source: 'fixed',
124
- value: 3
125
- }],
126
- scope: 'cumulative',
127
- validationMessage: {
128
- 'zh-CN': '包子每桌限量 {max} 份(含加单累计)',
129
- en: 'Buns are limited to {max} per table (cumulative)'
105
+ actions: [
106
+ {
107
+ id: "quantity_check_buns",
108
+ type: import_type.ITEM_RULE_ACTION_TYPES.QUANTITY_CHECK,
109
+ value: null,
110
+ target: "cart",
111
+ priority: 10,
112
+ config: {
113
+ targetType: "product",
114
+ targets: [
115
+ { product_id: 20001 },
116
+ { product_id: 20002 }
117
+ ],
118
+ quantityRules: [
119
+ { comparison: "maximum", source: "fixed", value: 3 }
120
+ ],
121
+ scope: "cumulative",
122
+ validationMessage: {
123
+ "zh-CN": "包子每桌限量 {max} 份(含加单累计)",
124
+ en: "Buns are limited to {max} per table (cumulative)"
125
+ }
130
126
  }
131
127
  }
132
- }]
128
+ ]
133
129
  };
134
-
135
- // ============================================
136
- // 示例 3:锅底必选 (Must Include - Conditional)
137
- // ============================================
138
-
139
- /**
140
- * 场景:堂食必须选择一个锅底(按商品匹配),自动预填默认锅底
141
- *
142
- * WHEN: Service Type = Dine-in
143
- * THEN:
144
- * - Quantity Check: 指定锅底商品精确1份
145
- * - Prefill Cart: 自动添加默认锅底 x 1
146
- */
147
- const HOTPOT_BASE_REQUIRED_STRATEGY = exports.HOTPOT_BASE_REQUIRED_STRATEGY = {
130
+ var HOTPOT_BASE_REQUIRED_STRATEGY = {
148
131
  metadata: {
149
- id: 'RULE_HOTPOT_BASE_REQUIRED',
132
+ id: "RULE_HOTPOT_BASE_REQUIRED",
150
133
  name: {
151
- 'zh-CN': '锅底必选',
152
- en: 'Hotpot base required'
134
+ "zh-CN": "锅底必选",
135
+ en: "Hotpot base required"
153
136
  },
154
- type: 'item_rule',
137
+ type: "item_rule",
155
138
  description: {
156
- 'zh-CN': '堂食必须选择一个锅底',
157
- en: 'Hotpot base is mandatory for dine-in'
139
+ "zh-CN": "堂食必须选择一个锅底",
140
+ en: "Hotpot base is mandatory for dine-in"
158
141
  }
159
142
  },
160
143
  conditions: {
161
- operator: 'and',
162
- rules: [{
163
- type: 'operator',
164
- dimension: 'context',
165
- field: 'serviceType',
166
- operator: '=',
167
- value: 'dine-in'
168
- }],
169
- actionIds: ['quantity_check_base', 'prefill_base']
144
+ operator: "and",
145
+ rules: [
146
+ {
147
+ type: "operator",
148
+ dimension: "context",
149
+ field: "serviceType",
150
+ operator: "=",
151
+ value: "dine-in"
152
+ }
153
+ ],
154
+ actionIds: ["quantity_check_base", "prefill_base"]
170
155
  },
171
- actions: [{
172
- id: 'quantity_check_base',
173
- type: _type.ITEM_RULE_ACTION_TYPES.QUANTITY_CHECK,
174
- value: null,
175
- target: 'cart',
176
- priority: 10,
177
- config: {
178
- targetType: 'product',
179
- targets: [{
180
- product_id: 30001
181
- }],
182
- quantityRules: [{
183
- comparison: 'exact',
184
- source: 'fixed',
185
- value: 1
186
- }],
187
- scope: 'first_submission_only',
188
- validationMessage: {
189
- 'zh-CN': '请选择 {exact} 个锅底',
190
- en: 'Please select exactly {exact} hotpot base'
156
+ actions: [
157
+ {
158
+ id: "quantity_check_base",
159
+ type: import_type.ITEM_RULE_ACTION_TYPES.QUANTITY_CHECK,
160
+ value: null,
161
+ target: "cart",
162
+ priority: 10,
163
+ config: {
164
+ targetType: "product",
165
+ targets: [{ product_id: 30001 }],
166
+ quantityRules: [
167
+ { comparison: "exact", source: "fixed", value: 1 }
168
+ ],
169
+ scope: "first_submission_only",
170
+ validationMessage: {
171
+ "zh-CN": "请选择 {exact} 个锅底",
172
+ en: "Please select exactly {exact} hotpot base"
173
+ }
174
+ }
175
+ },
176
+ {
177
+ id: "prefill_base",
178
+ type: import_type.ITEM_RULE_ACTION_TYPES.PREFILL_CART,
179
+ value: null,
180
+ target: "cart",
181
+ priority: 5,
182
+ config: {
183
+ products: [
184
+ {
185
+ product_id: 30001,
186
+ quantityFrom: "fixed",
187
+ quantity: 1
188
+ }
189
+ ]
191
190
  }
192
191
  }
193
- }, {
194
- id: 'prefill_base',
195
- type: _type.ITEM_RULE_ACTION_TYPES.PREFILL_CART,
196
- value: null,
197
- target: 'cart',
198
- priority: 5,
199
- config: {
200
- products: [{
201
- product_id: 30001,
202
- quantityFrom: 'fixed',
203
- quantity: 1
204
- }]
205
- }
206
- }]
192
+ ]
207
193
  };
208
-
209
- // ============================================
210
- // 示例 4:锅底四选一(Multi-target OR 组至少 1 份)
211
- // ============================================
212
-
213
- /**
214
- * 场景:4 款锅底里任选至少 1 款,不自动预填,不限制多选上限
215
- *
216
- * WHEN: Always active
217
- * THEN:
218
- * - Quantity Check: 4 个锅底商品合计数量 >= 1 (OR 组语义)
219
- *
220
- * 说明:
221
- * - targets 里放多个 product_id 时,ItemRuleAdapter 会把它们视为 OR 组,
222
- * 仅校验「合计数量」,不会要求每款各自满足 min。
223
- * - ScanOrder 工具层 buildQuantityLimitIndex 会跳过多目标规则的
224
- * 单品索引,避免 UI 把组级 min 误当作每张商品卡的减号下限,
225
- * 锁死用户切换锅底的操作。
226
- */
227
- const HOTPOT_BASE_PICK_ONE_STRATEGY = exports.HOTPOT_BASE_PICK_ONE_STRATEGY = {
194
+ var HOTPOT_BASE_PICK_ONE_STRATEGY = {
228
195
  metadata: {
229
- id: 'RULE_HOTPOT_BASE_PICK_ONE',
196
+ id: "RULE_HOTPOT_BASE_PICK_ONE",
230
197
  name: {
231
- 'zh-CN': '锅底必选(四选一)',
232
- en: 'Hotpot base required (pick any)'
198
+ "zh-CN": "锅底必选(四选一)",
199
+ en: "Hotpot base required (pick any)"
233
200
  },
234
- type: 'item_rule',
201
+ type: "item_rule",
235
202
  description: {
236
- 'zh-CN': '4 款锅底任选至少 1 份',
237
- en: 'Pick at least 1 hotpot base from the available options'
203
+ "zh-CN": "4 款锅底任选至少 1 份",
204
+ en: "Pick at least 1 hotpot base from the available options"
238
205
  }
239
206
  },
240
207
  conditions: {
241
- operator: 'and',
208
+ operator: "and",
242
209
  rules: [],
243
- actionIds: ['quantity_check_hotpot_base_group']
210
+ actionIds: ["quantity_check_hotpot_base_group"]
244
211
  },
245
- actions: [{
246
- id: 'quantity_check_hotpot_base_group',
247
- type: _type.ITEM_RULE_ACTION_TYPES.QUANTITY_CHECK,
248
- value: null,
249
- target: 'cart',
250
- priority: 10,
251
- config: {
252
- targetType: 'product',
253
- targets: [{
254
- product_id: 30001
255
- }, {
256
- product_id: 30002
257
- }, {
258
- product_id: 30003
259
- }, {
260
- product_id: 30004
261
- }],
262
- quantityRules: [{
263
- comparison: 'minimum',
264
- source: 'fixed',
265
- value: 1
266
- }],
267
- scope: 'first_submission_only',
268
- validationMessage: {
269
- 'zh-CN': '请至少选择 {min} 款锅底',
270
- en: 'Please select at least {min} hotpot base'
212
+ actions: [
213
+ {
214
+ id: "quantity_check_hotpot_base_group",
215
+ type: import_type.ITEM_RULE_ACTION_TYPES.QUANTITY_CHECK,
216
+ value: null,
217
+ target: "cart",
218
+ priority: 10,
219
+ config: {
220
+ targetType: "product",
221
+ targets: [
222
+ { product_id: 30001 },
223
+ { product_id: 30002 },
224
+ { product_id: 30003 },
225
+ { product_id: 30004 }
226
+ ],
227
+ quantityRules: [
228
+ { comparison: "minimum", source: "fixed", value: 1 }
229
+ ],
230
+ scope: "first_submission_only",
231
+ validationMessage: {
232
+ "zh-CN": "请至少选择 {min} 款锅底",
233
+ en: "Please select at least {min} hotpot base"
234
+ }
271
235
  }
272
236
  }
273
- }]
237
+ ]
274
238
  };
275
-
276
- // ============================================
277
- // 示例 5:ItemRuleEvaluator 用法(简洁调用 + 完整 Demo)
278
- // ============================================
279
-
280
- /**
281
- * ItemRuleEvaluator 简洁调用示例
282
- *
283
- * 覆盖方法:
284
- * - setStrategyConfigs
285
- * - getStrategyConfigs
286
- * - evaluate
287
- * - getQuantityLimits
288
- * - validateCart
289
- * - getPrefillItems
290
- */
291
239
  function quickUseItemRuleEvaluator() {
292
- const evaluator = new _evaluator.ItemRuleEvaluator();
293
- evaluator.setStrategyConfigs([MIN_CONDIMENT_PER_PERSON_STRATEGY, MAX_BUNS_PER_TABLE_STRATEGY, HOTPOT_BASE_REQUIRED_STRATEGY]);
240
+ const evaluator = new import_evaluator.ItemRuleEvaluator();
241
+ evaluator.setStrategyConfigs([
242
+ MIN_CONDIMENT_PER_PERSON_STRATEGY,
243
+ MAX_BUNS_PER_TABLE_STRATEGY,
244
+ HOTPOT_BASE_REQUIRED_STRATEGY
245
+ ]);
294
246
  const businessData = {
295
- pax: {
296
- total: 3,
297
- adult: 3,
298
- child: 0
299
- },
300
- serviceType: 'dine-in',
301
- cartItems: [{
302
- product_id: 10001,
303
- quantity: 1
304
- }, {
305
- product_id: 20001,
306
- quantity: 2
307
- }, {
308
- product_id: 20002,
309
- quantity: 1
310
- }],
311
- historicalItems: [{
312
- product_id: 20001,
313
- quantity: 1
314
- }],
247
+ pax: { total: 3, adult: 3, child: 0 },
248
+ serviceType: "dine-in",
249
+ cartItems: [
250
+ { product_id: 10001, quantity: 1 },
251
+ { product_id: 20001, quantity: 2 },
252
+ { product_id: 20002, quantity: 1 }
253
+ ],
254
+ historicalItems: [{ product_id: 20001, quantity: 1 }],
315
255
  submissionIndex: 0
316
256
  };
317
257
  return {
@@ -322,40 +262,23 @@ function quickUseItemRuleEvaluator() {
322
262
  prefillItems: evaluator.getPrefillItems(businessData)
323
263
  };
324
264
  }
325
-
326
- /**
327
- * ItemRuleEvaluator 完整可运行 Demo
328
- *
329
- * 说明:
330
- * 1) 首次提交:触发 first_submission_only + cumulative + 条件规则
331
- * 2) 追加提交:演示 first_submission_only 不再触发
332
- * 3) 覆盖 strategyConfigs 临时传入:演示按需仅评估部分规则
333
- */
334
265
  function runItemRuleEvaluatorDemo() {
335
- const evaluator = new _evaluator.ItemRuleEvaluator();
336
- evaluator.setStrategyConfigs([MIN_CONDIMENT_PER_PERSON_STRATEGY
337
- // MAX_BUNS_PER_TABLE_STRATEGY,
338
- // HOTPOT_BASE_REQUIRED_STRATEGY,
266
+ const evaluator = new import_evaluator.ItemRuleEvaluator();
267
+ evaluator.setStrategyConfigs([
268
+ MIN_CONDIMENT_PER_PERSON_STRATEGY
269
+ // MAX_BUNS_PER_TABLE_STRATEGY,
270
+ // HOTPOT_BASE_REQUIRED_STRATEGY,
339
271
  ]);
340
272
  const firstSubmissionData = {
341
- pax: {
342
- total: 4,
343
- adult: 3,
344
- child: 1
345
- },
346
- serviceType: 'dine-in',
273
+ pax: { total: 4, adult: 3, child: 1 },
274
+ serviceType: "dine-in",
347
275
  submissionIndex: 0,
348
- cartItems: [{
349
- product_id: 10001,
350
- quantity: 3
351
- }
352
- // { product_id: 20001, quantity: 2 },
353
- // { product_id: 20002, quantity: 1 },
276
+ cartItems: [
277
+ { product_id: 10001, quantity: 3 }
278
+ // { product_id: 20001, quantity: 2 },
279
+ // { product_id: 20002, quantity: 1 },
354
280
  ],
355
- historicalItems: [{
356
- product_id: 20001,
357
- quantity: 1
358
- }]
281
+ historicalItems: [{ product_id: 20001, quantity: 1 }]
359
282
  };
360
283
  const additionalSubmissionData = {
361
284
  ...firstSubmissionData,
@@ -366,8 +289,6 @@ function runItemRuleEvaluatorDemo() {
366
289
  const quantityLimits = evaluator.getQuantityLimits(firstSubmissionData);
367
290
  const validateResult = evaluator.validateCart(firstSubmissionData);
368
291
  const prefillItems = evaluator.getPrefillItems(firstSubmissionData);
369
-
370
- // 按需覆盖策略:仅评估“锅底必选”规则
371
292
  const baseOnlyEvaluation = evaluator.evaluate({
372
293
  ...firstSubmissionData,
373
294
  strategyConfigs: [HOTPOT_BASE_REQUIRED_STRATEGY]
@@ -383,4 +304,13 @@ function runItemRuleEvaluatorDemo() {
383
304
  prefillItems
384
305
  // baseOnlyEvaluation,
385
306
  };
386
- }
307
+ }
308
+ // Annotate the CommonJS export names for ESM import in node:
309
+ 0 && (module.exports = {
310
+ HOTPOT_BASE_PICK_ONE_STRATEGY,
311
+ HOTPOT_BASE_REQUIRED_STRATEGY,
312
+ MAX_BUNS_PER_TABLE_STRATEGY,
313
+ MIN_CONDIMENT_PER_PERSON_STRATEGY,
314
+ quickUseItemRuleEvaluator,
315
+ runItemRuleEvaluatorDemo
316
+ });