@pisell/pisellos 0.0.568 → 0.10.1

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 (588) 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/evaluator.js +3 -2
  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 +24 -96
  11. package/dist/model/strategy/strategy-example.js +19 -5
  12. package/dist/modules/BaseModule.d.ts +2 -2
  13. package/dist/modules/BaseModule.js +12 -14
  14. package/dist/modules/BookingContext/index.d.ts +48 -0
  15. package/dist/modules/BookingContext/index.js +566 -0
  16. package/dist/modules/BookingContext/types.d.ts +102 -0
  17. package/dist/modules/BookingContext/types.js +51 -0
  18. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  19. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +302 -0
  20. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  21. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +149 -0
  22. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  23. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +249 -0
  24. package/dist/modules/BookingContext/utils/flexible.d.ts +28 -0
  25. package/dist/modules/BookingContext/utils/flexible.js +56 -0
  26. package/dist/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  27. package/dist/modules/BookingContext/utils/formatResourceList.js +38 -0
  28. package/dist/modules/BookingContext/utils/index.d.ts +11 -0
  29. package/dist/modules/BookingContext/utils/index.js +11 -0
  30. package/dist/modules/BookingContext/utils/noResource.d.ts +13 -0
  31. package/dist/modules/BookingContext/utils/noResource.js +77 -0
  32. package/dist/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  33. package/dist/modules/BookingContext/utils/orderLineDisplay.js +36 -0
  34. package/dist/modules/BookingContext/utils/productExtend.d.ts +72 -0
  35. package/dist/modules/BookingContext/utils/productExtend.js +339 -0
  36. package/dist/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  37. package/dist/modules/BookingContext/utils/resourceErrors.js +74 -0
  38. package/dist/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  39. package/dist/modules/BookingContext/utils/resourceSelection.js +24 -0
  40. package/dist/modules/BookingContext/utils/resources.d.ts +80 -0
  41. package/dist/modules/BookingContext/utils/resources.js +486 -0
  42. package/dist/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  43. package/dist/modules/BookingContext/utils/serviceTimes.js +151 -0
  44. package/dist/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  45. package/dist/modules/BookingContext/utils/timeSlices.js +100 -0
  46. package/dist/modules/Cart/index.js +3 -0
  47. package/dist/modules/Cart/utils/cartProduct.js +27 -5
  48. package/dist/modules/Cart/utils/cartResource.js +0 -2
  49. package/dist/modules/Cart/utils/changePrice.js +11 -11
  50. package/dist/modules/Customer/index.d.ts +20 -0
  51. package/dist/modules/Customer/index.js +172 -83
  52. package/dist/modules/Customer/types.d.ts +2 -0
  53. package/dist/modules/Date/index.js +5 -1
  54. package/dist/modules/Discount/index.d.ts +2 -2
  55. package/dist/modules/Discount/index.js +43 -30
  56. package/dist/modules/Discount/types.d.ts +1 -1
  57. package/dist/modules/OpenData/index.d.ts +8 -0
  58. package/dist/modules/OpenData/index.js +38 -16
  59. package/dist/modules/Order/index.d.ts +449 -24
  60. package/dist/modules/Order/index.js +5460 -574
  61. package/dist/modules/Order/types.d.ts +693 -88
  62. package/dist/modules/Order/types.js +68 -1
  63. package/dist/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  64. package/dist/modules/Order/utils/bundleDiscountHydration.js +144 -0
  65. package/dist/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  66. package/dist/modules/Order/utils/manualProductDiscount.js +210 -0
  67. package/dist/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  68. package/dist/modules/Order/utils/orderCollectionIdentity.js +405 -0
  69. package/dist/modules/Order/utils.d.ts +167 -18
  70. package/dist/modules/Order/utils.js +960 -165
  71. package/dist/modules/Payment/index.d.ts +10 -9
  72. package/dist/modules/Payment/index.js +573 -746
  73. package/dist/modules/Payment/types.d.ts +44 -24
  74. package/dist/modules/Payment/utils.d.ts +1 -1
  75. package/dist/modules/Payment/utils.js +4 -3
  76. package/dist/modules/Payment/walletpass.d.ts +0 -2
  77. package/dist/modules/Payment/walletpass.js +49 -33
  78. package/dist/modules/Product/types.d.ts +29 -7
  79. package/dist/modules/ProductList/index.d.ts +17 -13
  80. package/dist/modules/ProductList/index.js +182 -81
  81. package/dist/modules/ProductList/types.d.ts +16 -0
  82. package/dist/modules/Quotation/index.d.ts +22 -2
  83. package/dist/modules/Quotation/index.js +108 -42
  84. package/dist/modules/Quotation/types.d.ts +19 -0
  85. package/dist/modules/ResourcePlanner/index.d.ts +24 -0
  86. package/dist/modules/ResourcePlanner/index.js +181 -0
  87. package/dist/modules/ResourcePlanner/planner.d.ts +14 -0
  88. package/dist/modules/ResourcePlanner/planner.js +1069 -0
  89. package/dist/modules/ResourcePlanner/types.d.ts +227 -0
  90. package/dist/modules/ResourcePlanner/types.js +1 -0
  91. package/dist/modules/Rules/index.d.ts +8 -10
  92. package/dist/modules/Rules/index.js +324 -513
  93. package/dist/modules/Rules/types.d.ts +14 -3
  94. package/dist/modules/SalesSummary/index.d.ts +23 -26
  95. package/dist/modules/SalesSummary/index.js +152 -46
  96. package/dist/modules/SalesSummary/types.d.ts +9 -1
  97. package/dist/modules/SalesSummary/utils.d.ts +3 -22
  98. package/dist/modules/SalesSummary/utils.js +804 -165
  99. package/dist/modules/Schedule/getDateIsInSchedule.js +14 -12
  100. package/dist/modules/Schedule/index.d.ts +18 -5
  101. package/dist/modules/Schedule/index.js +79 -24
  102. package/dist/modules/Schedule/types.d.ts +2 -0
  103. package/dist/modules/Schedule/utils.js +1 -0
  104. package/dist/modules/Step/index.js +1 -0
  105. package/dist/modules/Summary/index.js +4 -3
  106. package/dist/modules/Summary/utils.js +22 -43
  107. package/dist/modules/SurchargeList/index.d.ts +18 -0
  108. package/dist/modules/SurchargeList/index.js +185 -0
  109. package/dist/modules/SurchargeList/types.d.ts +15 -0
  110. package/dist/modules/SurchargeList/types.js +1 -0
  111. package/dist/modules/index.d.ts +3 -0
  112. package/dist/modules/index.js +4 -1
  113. package/dist/plugins/app.d.ts +2 -0
  114. package/dist/plugins/request.d.ts +1 -0
  115. package/dist/plugins/request.js +4 -1
  116. package/dist/plugins/window.js +6 -2
  117. package/dist/server/index.d.ts +462 -8
  118. package/dist/server/index.js +6168 -680
  119. package/dist/server/modules/floor-plan/index.d.ts +39 -0
  120. package/dist/server/modules/floor-plan/index.js +595 -0
  121. package/dist/server/modules/floor-plan/types.d.ts +43 -0
  122. package/dist/server/modules/floor-plan/types.js +13 -0
  123. package/dist/server/modules/index.d.ts +7 -2
  124. package/dist/server/modules/index.js +6 -0
  125. package/dist/server/modules/menu/index.js +41 -32
  126. package/dist/server/modules/order/index.d.ts +207 -14
  127. package/dist/server/modules/order/index.js +2328 -379
  128. package/dist/server/modules/order/types.d.ts +76 -5
  129. package/dist/server/modules/order/types.js +14 -1
  130. package/dist/server/modules/order/utils/filterBookings.d.ts +7 -1
  131. package/dist/server/modules/order/utils/filterBookings.js +118 -11
  132. package/dist/server/modules/order/utils/filterOrders.js +242 -14
  133. package/dist/server/modules/payment/index.d.ts +28 -0
  134. package/dist/server/modules/payment/index.js +305 -0
  135. package/dist/server/modules/payment/types.d.ts +9 -0
  136. package/dist/server/modules/payment/types.js +1 -0
  137. package/dist/server/modules/products/index.d.ts +105 -14
  138. package/dist/server/modules/products/index.js +1416 -521
  139. package/dist/server/modules/products/types.d.ts +34 -1
  140. package/dist/server/modules/products/types.js +4 -0
  141. package/dist/server/modules/quotation/index.d.ts +39 -0
  142. package/dist/server/modules/quotation/index.js +298 -77
  143. package/dist/server/modules/resource/index.d.ts +2 -3
  144. package/dist/server/modules/resource/index.js +109 -86
  145. package/dist/server/modules/schedule/index.d.ts +6 -4
  146. package/dist/server/modules/schedule/index.js +145 -106
  147. package/dist/server/test.json +713 -0
  148. package/dist/server/types.d.ts +2 -0
  149. package/dist/server/utils/product.js +3 -2
  150. package/dist/server/utils/small-ticket.d.ts +71 -0
  151. package/dist/server/utils/small-ticket.js +963 -0
  152. package/dist/solution/BaseSales/index.d.ts +378 -0
  153. package/dist/solution/BaseSales/index.js +4009 -0
  154. package/dist/solution/BaseSales/types.d.ts +394 -0
  155. package/dist/solution/BaseSales/types.js +40 -0
  156. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  157. package/dist/solution/BaseSales/utils/cartPromotion.js +1450 -0
  158. package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  159. package/dist/solution/BaseSales/utils/parseSalesResponse.js +157 -0
  160. package/dist/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  161. package/dist/solution/BaseSales/utils/quotationPrice.js +250 -0
  162. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  163. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +218 -0
  164. package/dist/solution/BaseSales/utils.d.ts +40 -0
  165. package/dist/solution/BaseSales/utils.js +263 -0
  166. package/dist/solution/BookingByStep/index.d.ts +1 -1
  167. package/dist/solution/BookingByStep/index.js +60 -11
  168. package/dist/solution/BookingByStep/utils/capacity.js +11 -1
  169. package/dist/solution/BookingByStep/utils/resources.js +3 -1
  170. package/dist/solution/BookingByStep/utils/timeslots.js +43 -2
  171. package/dist/solution/BookingTicket/index.d.ts +393 -24
  172. package/dist/solution/BookingTicket/index.js +2508 -443
  173. package/dist/solution/BookingTicket/types.d.ts +191 -6
  174. package/dist/solution/BookingTicket/types.js +83 -10
  175. package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  176. package/dist/solution/BookingTicket/utils/addProductDecision.js +346 -0
  177. package/dist/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  178. package/dist/solution/BookingTicket/utils/addTimeAvailability.js +95 -0
  179. package/dist/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  180. package/dist/solution/BookingTicket/utils/bookingStatus.js +136 -0
  181. package/dist/solution/BookingTicket/utils/cartView.d.ts +29 -0
  182. package/dist/solution/BookingTicket/utils/cartView.js +209 -0
  183. package/dist/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  184. package/dist/solution/BookingTicket/utils/exampleData.js +183 -0
  185. package/dist/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  186. package/dist/solution/BookingTicket/utils/orderCustomer.js +31 -0
  187. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  188. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.js +438 -0
  189. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  190. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +400 -0
  191. package/dist/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  192. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +42 -1
  193. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  194. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.js +56 -0
  195. package/dist/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  196. package/dist/solution/BookingTicket/utils/scan/handleScan.js +42 -28
  197. package/dist/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  198. package/dist/solution/BookingTicket/utils/scan/index.js +30 -14
  199. package/dist/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  200. package/dist/solution/BookingTicket/utils/scan/scanProductValues.js +150 -0
  201. package/dist/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  202. package/dist/solution/BookingTicket/utils/sessionCatalogStale.js +78 -0
  203. package/dist/solution/BuyTickets/index.js +12 -9
  204. package/dist/solution/Checkout/index.d.ts +1 -0
  205. package/dist/solution/Checkout/index.js +275 -209
  206. package/dist/solution/Checkout/utils/index.js +20 -8
  207. package/dist/solution/RegisterAndLogin/config.js +2 -10
  208. package/dist/solution/RegisterAndLogin/index.js +76 -30
  209. package/dist/solution/Sales/index.d.ts +50 -5
  210. package/dist/solution/Sales/index.js +484 -92
  211. package/dist/solution/Sales/types.d.ts +26 -2
  212. package/dist/solution/ScanOrder/index.d.ts +27 -21
  213. package/dist/solution/ScanOrder/index.js +519 -444
  214. package/dist/solution/ScanOrder/types.d.ts +33 -11
  215. package/dist/solution/ScanOrder/types.js +4 -5
  216. package/dist/solution/ScanOrder/utils.d.ts +4 -1
  217. package/dist/solution/ScanOrder/utils.js +109 -34
  218. package/dist/solution/ShopDiscount/index.js +18 -19
  219. package/dist/solution/ShopDiscount/types.d.ts +4 -5
  220. package/dist/solution/ShopDiscount/utils.d.ts +0 -9
  221. package/dist/solution/ShopDiscount/utils.js +0 -9
  222. package/dist/solution/UnifiedBookingSales/index.d.ts +183 -0
  223. package/dist/solution/UnifiedBookingSales/index.js +1871 -0
  224. package/dist/solution/UnifiedBookingSales/types.d.ts +143 -0
  225. package/dist/solution/UnifiedBookingSales/types.js +11 -0
  226. package/dist/solution/VenueBooking/index.d.ts +32 -51
  227. package/dist/solution/VenueBooking/index.js +741 -808
  228. package/dist/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  229. package/dist/solution/VenueBooking/types.d.ts +1 -3
  230. package/dist/solution/VenueBooking/types.js +0 -1
  231. package/dist/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  232. package/dist/solution/VenueBooking/utils/dateSummary.js +25 -12
  233. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  234. package/dist/solution/VenueBooking/utils/slotMerge.js +9 -3
  235. package/dist/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  236. package/dist/solution/VenueBooking/utils/timeSlot.js +4 -9
  237. package/dist/solution/index.d.ts +2 -0
  238. package/dist/solution/index.js +3 -1
  239. package/dist/types/index.d.ts +12 -2
  240. package/dist/utils/task.js +18 -15
  241. package/dist/utils/watch.js +1 -0
  242. package/lib/apis/picoding.js +0 -2
  243. package/lib/core/index.js +132 -130
  244. package/lib/effects/index.js +57 -46
  245. package/lib/index.d.ts +0 -1
  246. package/lib/index.js +50 -92
  247. package/lib/model/index.js +21 -14
  248. package/lib/model/strategy/adapter/dataVariant/adapter.js +50 -38
  249. package/lib/model/strategy/adapter/dataVariant/evaluator.js +236 -162
  250. package/lib/model/strategy/adapter/dataVariant/examples.js +237 -229
  251. package/lib/model/strategy/adapter/dataVariant/index.js +34 -39
  252. package/lib/model/strategy/adapter/dataVariant/type.js +28 -57
  253. package/lib/model/strategy/adapter/index.js +64 -100
  254. package/lib/model/strategy/adapter/itemRule/adapter.js +144 -156
  255. package/lib/model/strategy/adapter/itemRule/evaluator.js +48 -36
  256. package/lib/model/strategy/adapter/itemRule/examples.js +225 -295
  257. package/lib/model/strategy/adapter/itemRule/index.js +57 -83
  258. package/lib/model/strategy/adapter/itemRule/type.js +36 -97
  259. package/lib/model/strategy/adapter/promotion/adapter.js +63 -84
  260. package/lib/model/strategy/adapter/promotion/evaluator.js +233 -382
  261. package/lib/model/strategy/adapter/promotion/examples.js +159 -139
  262. package/lib/model/strategy/adapter/promotion/index.js +0 -1
  263. package/lib/model/strategy/adapter/promotion/type.js +35 -199
  264. package/lib/model/strategy/adapter/type.js +16 -4
  265. package/lib/model/strategy/adapter/walletPass/evaluator.js +152 -180
  266. package/lib/model/strategy/adapter/walletPass/example.js +190 -217
  267. package/lib/model/strategy/adapter/walletPass/index.js +51 -75
  268. package/lib/model/strategy/adapter/walletPass/locales.js +58 -36
  269. package/lib/model/strategy/adapter/walletPass/type.d.ts +0 -3
  270. package/lib/model/strategy/adapter/walletPass/type.js +16 -4
  271. package/lib/model/strategy/adapter/walletPass/utils.d.ts +0 -26
  272. package/lib/model/strategy/adapter/walletPass/utils.js +383 -676
  273. package/lib/model/strategy/engine.js +168 -270
  274. package/lib/model/strategy/index.js +34 -49
  275. package/lib/model/strategy/strategy-example.js +239 -243
  276. package/lib/model/strategy/type.js +40 -100
  277. package/lib/modules/Account/index.js +53 -39
  278. package/lib/modules/Account/types.js +33 -20
  279. package/lib/modules/AccountList/index.js +154 -116
  280. package/lib/modules/AccountList/types.js +31 -30
  281. package/lib/modules/AccountList/utils.js +30 -18
  282. package/lib/modules/BaseModule.d.ts +2 -2
  283. package/lib/modules/BaseModule.js +50 -29
  284. package/lib/modules/BookingContext/index.d.ts +48 -0
  285. package/lib/modules/BookingContext/index.js +368 -0
  286. package/lib/modules/BookingContext/types.d.ts +102 -0
  287. package/lib/modules/BookingContext/types.js +34 -0
  288. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  289. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +298 -0
  290. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  291. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +155 -0
  292. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  293. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +222 -0
  294. package/lib/modules/BookingContext/utils/flexible.d.ts +28 -0
  295. package/lib/modules/BookingContext/utils/flexible.js +80 -0
  296. package/lib/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  297. package/lib/modules/BookingContext/utils/formatResourceList.js +50 -0
  298. package/lib/modules/BookingContext/utils/index.d.ts +11 -0
  299. package/lib/modules/BookingContext/utils/index.js +43 -0
  300. package/lib/modules/BookingContext/utils/noResource.d.ts +13 -0
  301. package/lib/modules/BookingContext/utils/noResource.js +90 -0
  302. package/lib/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  303. package/lib/modules/BookingContext/utils/orderLineDisplay.js +56 -0
  304. package/lib/modules/BookingContext/utils/productExtend.d.ts +72 -0
  305. package/lib/modules/BookingContext/utils/productExtend.js +283 -0
  306. package/lib/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  307. package/lib/modules/BookingContext/utils/resourceErrors.js +80 -0
  308. package/lib/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  309. package/lib/modules/BookingContext/utils/resourceSelection.js +46 -0
  310. package/lib/modules/BookingContext/utils/resources.d.ts +80 -0
  311. package/lib/modules/BookingContext/utils/resources.js +377 -0
  312. package/lib/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  313. package/lib/modules/BookingContext/utils/serviceTimes.js +162 -0
  314. package/lib/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  315. package/lib/modules/BookingContext/utils/timeSlices.js +124 -0
  316. package/lib/modules/Cart/index.js +124 -170
  317. package/lib/modules/Cart/types.js +51 -46
  318. package/lib/modules/Cart/utils/cartAccount.js +39 -40
  319. package/lib/modules/Cart/utils/cartDate.js +61 -56
  320. package/lib/modules/Cart/utils/cartDiscount.js +33 -28
  321. package/lib/modules/Cart/utils/cartNote.js +32 -27
  322. package/lib/modules/Cart/utils/cartProduct.js +261 -309
  323. package/lib/modules/Cart/utils/cartRelationForms.js +35 -29
  324. package/lib/modules/Cart/utils/cartResource.js +78 -72
  325. package/lib/modules/Cart/utils/changePrice.js +59 -31
  326. package/lib/modules/Cart/utils/index.js +48 -106
  327. package/lib/modules/Customer/constants.js +34 -13
  328. package/lib/modules/Customer/index.d.ts +20 -0
  329. package/lib/modules/Customer/index.js +207 -217
  330. package/lib/modules/Customer/types.d.ts +2 -0
  331. package/lib/modules/Customer/types.js +35 -38
  332. package/lib/modules/Date/index.js +115 -116
  333. package/lib/modules/Date/types.js +28 -16
  334. package/lib/modules/Date/utils.js +123 -174
  335. package/lib/modules/Discount/index.d.ts +2 -2
  336. package/lib/modules/Discount/index.js +133 -119
  337. package/lib/modules/Discount/types.d.ts +1 -1
  338. package/lib/modules/Discount/types.js +31 -9
  339. package/lib/modules/Guests/index.js +56 -30
  340. package/lib/modules/Guests/types.js +33 -23
  341. package/lib/modules/Holder/index.js +189 -209
  342. package/lib/modules/Holder/types.js +16 -4
  343. package/lib/modules/Holder/utils.js +49 -20
  344. package/lib/modules/OpenData/index.d.ts +8 -0
  345. package/lib/modules/OpenData/index.js +88 -63
  346. package/lib/modules/OpenData/types.js +16 -4
  347. package/lib/modules/OpenData/utils.js +78 -44
  348. package/lib/modules/Order/index.d.ts +449 -24
  349. package/lib/modules/Order/index.js +4184 -514
  350. package/lib/modules/Order/types.d.ts +693 -88
  351. package/lib/modules/Order/types.js +35 -24
  352. package/lib/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  353. package/lib/modules/Order/utils/bundleDiscountHydration.js +139 -0
  354. package/lib/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  355. package/lib/modules/Order/utils/manualProductDiscount.js +206 -0
  356. package/lib/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  357. package/lib/modules/Order/utils/orderCollectionIdentity.js +415 -0
  358. package/lib/modules/Order/utils.d.ts +167 -18
  359. package/lib/modules/Order/utils.js +1085 -414
  360. package/lib/modules/Payment/cash.js +33 -20
  361. package/lib/modules/Payment/cashRecommendationAlgorithm.js +76 -145
  362. package/lib/modules/Payment/eftpos.js +30 -16
  363. package/lib/modules/Payment/index.d.ts +10 -9
  364. package/lib/modules/Payment/index.js +402 -636
  365. package/lib/modules/Payment/mx51.js +0 -1
  366. package/lib/modules/Payment/types.d.ts +44 -24
  367. package/lib/modules/Payment/types.js +107 -216
  368. package/lib/modules/Payment/utils.d.ts +1 -1
  369. package/lib/modules/Payment/utils.js +50 -52
  370. package/lib/modules/Payment/walletpass.d.ts +0 -2
  371. package/lib/modules/Payment/walletpass.js +216 -221
  372. package/lib/modules/Product/index.js +46 -51
  373. package/lib/modules/Product/types.d.ts +29 -7
  374. package/lib/modules/Product/types.js +16 -4
  375. package/lib/modules/Product/utils.js +33 -32
  376. package/lib/modules/ProductList/index.d.ts +17 -13
  377. package/lib/modules/ProductList/index.js +161 -120
  378. package/lib/modules/ProductList/types.d.ts +16 -0
  379. package/lib/modules/ProductList/types.js +31 -9
  380. package/lib/modules/Quotation/index.d.ts +22 -2
  381. package/lib/modules/Quotation/index.js +154 -64
  382. package/lib/modules/Quotation/types.d.ts +19 -0
  383. package/lib/modules/Quotation/types.js +16 -4
  384. package/lib/modules/Resource/index.js +59 -27
  385. package/lib/modules/Resource/types.js +32 -22
  386. package/lib/modules/Resource/utils.js +38 -30
  387. package/lib/modules/ResourcePlanner/index.d.ts +24 -0
  388. package/lib/modules/ResourcePlanner/index.js +148 -0
  389. package/lib/modules/ResourcePlanner/planner.d.ts +14 -0
  390. package/lib/modules/ResourcePlanner/planner.js +933 -0
  391. package/lib/modules/ResourcePlanner/types.d.ts +227 -0
  392. package/lib/modules/ResourcePlanner/types.js +17 -0
  393. package/lib/modules/Rules/index.d.ts +8 -10
  394. package/lib/modules/Rules/index.js +960 -1440
  395. package/lib/modules/Rules/types.d.ts +14 -3
  396. package/lib/modules/Rules/types.js +40 -17
  397. package/lib/modules/SalesSummary/index.d.ts +23 -26
  398. package/lib/modules/SalesSummary/index.js +134 -61
  399. package/lib/modules/SalesSummary/types.d.ts +9 -1
  400. package/lib/modules/SalesSummary/types.js +16 -4
  401. package/lib/modules/SalesSummary/utils.d.ts +3 -22
  402. package/lib/modules/SalesSummary/utils.js +814 -233
  403. package/lib/modules/ScanOrderLogger/index.js +79 -59
  404. package/lib/modules/ScanOrderLogger/providers/feishu.js +78 -54
  405. package/lib/modules/ScanOrderLogger/providers/grafana.js +36 -13
  406. package/lib/modules/ScanOrderLogger/types.js +16 -4
  407. package/lib/modules/Schedule/getDateIsInSchedule.js +169 -338
  408. package/lib/modules/Schedule/index.d.ts +18 -5
  409. package/lib/modules/Schedule/index.js +153 -104
  410. package/lib/modules/Schedule/type.js +16 -4
  411. package/lib/modules/Schedule/types.d.ts +2 -0
  412. package/lib/modules/Schedule/types.js +16 -4
  413. package/lib/modules/Schedule/utils.js +291 -433
  414. package/lib/modules/Step/index.js +52 -40
  415. package/lib/modules/Step/tyeps.js +16 -4
  416. package/lib/modules/Summary/index.js +71 -66
  417. package/lib/modules/Summary/types.js +16 -4
  418. package/lib/modules/Summary/utils.js +418 -791
  419. package/lib/modules/SurchargeList/index.d.ts +18 -0
  420. package/lib/modules/SurchargeList/index.js +109 -0
  421. package/lib/modules/SurchargeList/types.d.ts +15 -0
  422. package/lib/modules/SurchargeList/types.js +17 -0
  423. package/lib/modules/index.d.ts +3 -0
  424. package/lib/modules/index.js +63 -212
  425. package/lib/plugins/app.d.ts +2 -0
  426. package/lib/plugins/app.js +16 -4
  427. package/lib/plugins/index.js +25 -36
  428. package/lib/plugins/request.d.ts +1 -0
  429. package/lib/plugins/request.js +126 -137
  430. package/lib/plugins/shopStore.js +16 -4
  431. package/lib/plugins/user.js +16 -4
  432. package/lib/plugins/window.js +179 -171
  433. package/lib/server/index.d.ts +462 -8
  434. package/lib/server/index.js +4520 -1162
  435. package/lib/server/modules/floor-plan/index.d.ts +39 -0
  436. package/lib/server/modules/floor-plan/index.js +327 -0
  437. package/lib/server/modules/floor-plan/types.d.ts +43 -0
  438. package/lib/server/modules/floor-plan/types.js +34 -0
  439. package/lib/server/modules/index.d.ts +7 -2
  440. package/lib/server/modules/index.js +67 -84
  441. package/lib/server/modules/menu/index.js +122 -146
  442. package/lib/server/modules/menu/types.js +31 -18
  443. package/lib/server/modules/order/index.d.ts +207 -14
  444. package/lib/server/modules/order/index.js +1543 -285
  445. package/lib/server/modules/order/types.d.ts +76 -5
  446. package/lib/server/modules/order/types.js +32 -107
  447. package/lib/server/modules/order/utils/filterBookings.d.ts +7 -1
  448. package/lib/server/modules/order/utils/filterBookings.js +259 -176
  449. package/lib/server/modules/order/utils/filterOrders.js +293 -94
  450. package/lib/server/modules/payment/index.d.ts +28 -0
  451. package/lib/server/modules/payment/index.js +192 -0
  452. package/lib/server/modules/payment/types.d.ts +9 -0
  453. package/lib/server/modules/payment/types.js +17 -0
  454. package/lib/server/modules/products/index.d.ts +105 -14
  455. package/lib/server/modules/products/index.js +850 -475
  456. package/lib/server/modules/products/types.d.ts +34 -1
  457. package/lib/server/modules/products/types.js +34 -41
  458. package/lib/server/modules/quotation/index.d.ts +39 -0
  459. package/lib/server/modules/quotation/index.js +254 -75
  460. package/lib/server/modules/quotation/types.js +31 -21
  461. package/lib/server/modules/resource/index.d.ts +2 -3
  462. package/lib/server/modules/resource/index.js +240 -243
  463. package/lib/server/modules/resource/types.js +33 -42
  464. package/lib/server/modules/schedule/index.d.ts +6 -4
  465. package/lib/server/modules/schedule/index.js +146 -147
  466. package/lib/server/modules/schedule/types.js +21 -14
  467. package/lib/server/modules/schedule/utils.js +163 -334
  468. package/lib/server/test.json +713 -0
  469. package/lib/server/types.d.ts +2 -0
  470. package/lib/server/types.js +16 -4
  471. package/lib/server/utils/index.js +23 -25
  472. package/lib/server/utils/product.js +140 -197
  473. package/lib/server/utils/schedule.js +41 -34
  474. package/lib/server/utils/small-ticket.d.ts +71 -0
  475. package/lib/server/utils/small-ticket.js +904 -0
  476. package/lib/server/utils/time.js +49 -40
  477. package/lib/solution/BaseSales/index.d.ts +378 -0
  478. package/lib/solution/BaseSales/index.js +2533 -0
  479. package/lib/solution/BaseSales/types.d.ts +394 -0
  480. package/lib/solution/BaseSales/types.js +43 -0
  481. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  482. package/lib/solution/BaseSales/utils/cartPromotion.js +1004 -0
  483. package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  484. package/lib/solution/BaseSales/utils/parseSalesResponse.js +160 -0
  485. package/lib/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  486. package/lib/solution/BaseSales/utils/quotationPrice.js +289 -0
  487. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  488. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +256 -0
  489. package/lib/solution/BaseSales/utils.d.ts +40 -0
  490. package/lib/solution/BaseSales/utils.js +244 -0
  491. package/lib/solution/BookingByStep/index.d.ts +1 -1
  492. package/lib/solution/BookingByStep/index.js +1340 -1530
  493. package/lib/solution/BookingByStep/types.js +99 -40
  494. package/lib/solution/BookingByStep/utils/capacity.js +160 -192
  495. package/lib/solution/BookingByStep/utils/products.js +52 -42
  496. package/lib/solution/BookingByStep/utils/resources.js +330 -527
  497. package/lib/solution/BookingByStep/utils/stock.js +44 -65
  498. package/lib/solution/BookingByStep/utils/timeslots.js +131 -129
  499. package/lib/solution/BookingTicket/index.d.ts +393 -24
  500. package/lib/solution/BookingTicket/index.js +1374 -184
  501. package/lib/solution/BookingTicket/types.d.ts +191 -6
  502. package/lib/solution/BookingTicket/types.js +79 -40
  503. package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  504. package/lib/solution/BookingTicket/utils/addProductDecision.js +318 -0
  505. package/lib/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  506. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +125 -0
  507. package/lib/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  508. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -0
  509. package/lib/solution/BookingTicket/utils/cartView.d.ts +29 -0
  510. package/lib/solution/BookingTicket/utils/cartView.js +184 -0
  511. package/lib/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  512. package/lib/solution/BookingTicket/utils/exampleData.js +0 -0
  513. package/lib/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  514. package/lib/solution/BookingTicket/utils/orderCustomer.js +58 -0
  515. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  516. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +254 -0
  517. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  518. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +169 -0
  519. package/lib/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  520. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +97 -64
  521. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  522. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +51 -0
  523. package/lib/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  524. package/lib/solution/BookingTicket/utils/scan/handleScan.js +81 -82
  525. package/lib/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  526. package/lib/solution/BookingTicket/utils/scan/index.js +109 -91
  527. package/lib/solution/BookingTicket/utils/scan/scanCache.js +43 -90
  528. package/lib/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  529. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +127 -0
  530. package/lib/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  531. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +85 -0
  532. package/lib/solution/BuyTickets/index.js +70 -67
  533. package/lib/solution/BuyTickets/types.js +38 -22
  534. package/lib/solution/Checkout/index.d.ts +1 -0
  535. package/lib/solution/Checkout/index.js +1169 -1463
  536. package/lib/solution/Checkout/types.js +61 -91
  537. package/lib/solution/Checkout/utils/index.js +156 -228
  538. package/lib/solution/PlaceOrder/index.js +0 -55
  539. package/lib/solution/RegisterAndLogin/config.js +462 -503
  540. package/lib/solution/RegisterAndLogin/index.js +630 -633
  541. package/lib/solution/RegisterAndLogin/types.js +76 -189
  542. package/lib/solution/RegisterAndLogin/utils.js +125 -183
  543. package/lib/solution/Sales/index.d.ts +50 -5
  544. package/lib/solution/Sales/index.js +498 -238
  545. package/lib/solution/Sales/types.d.ts +26 -2
  546. package/lib/solution/Sales/types.js +33 -27
  547. package/lib/solution/ScanOrder/index.d.ts +27 -21
  548. package/lib/solution/ScanOrder/index.js +936 -864
  549. package/lib/solution/ScanOrder/types.d.ts +33 -11
  550. package/lib/solution/ScanOrder/types.js +34 -34
  551. package/lib/solution/ScanOrder/utils.d.ts +4 -1
  552. package/lib/solution/ScanOrder/utils.js +422 -385
  553. package/lib/solution/ShopDiscount/index.js +233 -235
  554. package/lib/solution/ShopDiscount/types.d.ts +4 -5
  555. package/lib/solution/ShopDiscount/types.js +37 -15
  556. package/lib/solution/ShopDiscount/utils.d.ts +0 -9
  557. package/lib/solution/ShopDiscount/utils.js +172 -309
  558. package/lib/solution/UnifiedBookingSales/index.d.ts +183 -0
  559. package/lib/solution/UnifiedBookingSales/index.js +1076 -0
  560. package/lib/solution/UnifiedBookingSales/types.d.ts +143 -0
  561. package/lib/solution/UnifiedBookingSales/types.js +33 -0
  562. package/lib/solution/VenueBooking/index.d.ts +32 -51
  563. package/lib/solution/VenueBooking/index.js +1008 -984
  564. package/lib/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  565. package/lib/solution/VenueBooking/types.d.ts +1 -3
  566. package/lib/solution/VenueBooking/types.js +39 -20
  567. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  568. package/lib/solution/VenueBooking/utils/dateSummary.js +62 -25
  569. package/lib/solution/VenueBooking/utils/resource.js +54 -31
  570. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  571. package/lib/solution/VenueBooking/utils/slotMerge.js +109 -90
  572. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  573. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -138
  574. package/lib/solution/VenueBooking/utils.js +67 -130
  575. package/lib/solution/index.d.ts +2 -0
  576. package/lib/solution/index.js +41 -102
  577. package/lib/store/createStore.js +29 -32
  578. package/lib/types/index.d.ts +12 -2
  579. package/lib/types/index.js +16 -4
  580. package/lib/utils/task.js +36 -36
  581. package/lib/utils/watch.js +47 -81
  582. package/package.json +2 -4
  583. package/dist/solution/Checkout/appointmentDemo.json +0 -1
  584. package/dist/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  585. package/dist/solution/VenueBooking/utils/smartPricing.js +0 -233
  586. package/lib/solution/Checkout/appointmentDemo.json +0 -1
  587. package/lib/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  588. package/lib/solution/VenueBooking/utils/smartPricing.js +0 -192
@@ -0,0 +1,43 @@
1
+ /**
2
+ * 平面图(floor-plan)Server 模块类型
3
+ * 与 GET /shop/schedule/floor-plan 系列接口数据结构对齐
4
+ */
5
+ export interface FloorPlanItem {
6
+ id: number;
7
+ shop_id?: number;
8
+ code: string;
9
+ name: string | Record<string, string>;
10
+ layout: unknown[];
11
+ canvas_width: number;
12
+ canvas_height: number;
13
+ sort: number;
14
+ status: number;
15
+ created_at?: string;
16
+ updated_at?: string;
17
+ }
18
+ export interface FloorPlanState {
19
+ list: FloorPlanItem[];
20
+ map: Map<string, FloorPlanItem>;
21
+ codeMap: Map<string, FloorPlanItem>;
22
+ }
23
+ /** pubsub / Ably 推送消息(与《平面图编辑器API文档》Socket 一节一致) */
24
+ export interface FloorPlanSyncMessage {
25
+ module?: string;
26
+ action?: string;
27
+ operation?: string;
28
+ id?: number;
29
+ ids?: number[];
30
+ body?: Partial<FloorPlanItem> & {
31
+ id?: number;
32
+ };
33
+ message_uuid?: string;
34
+ timestamp?: string;
35
+ _channelKey?: string;
36
+ }
37
+ export declare const FloorPlanHooks: {
38
+ /** 本地列表变更(预加载、合并、删除后) */
39
+ readonly onFloorPlansChanged: "server_floor_plan:onFloorPlansChanged";
40
+ /** pubsub 同步处理完成,供 Server 向订阅者推送最新查询结果 */
41
+ readonly onFloorPlanSyncCompleted: "server_floor_plan:onFloorPlanSyncCompleted";
42
+ };
43
+ export type FloorPlanHooksType = (typeof FloorPlanHooks)[keyof typeof FloorPlanHooks];
@@ -0,0 +1,13 @@
1
+ /**
2
+ * 平面图(floor-plan)Server 模块类型
3
+ * 与 GET /shop/schedule/floor-plan 系列接口数据结构对齐
4
+ */
5
+
6
+ /** pubsub / Ably 推送消息(与《平面图编辑器API文档》Socket 一节一致) */
7
+
8
+ export var FloorPlanHooks = {
9
+ /** 本地列表变更(预加载、合并、删除后) */
10
+ onFloorPlansChanged: 'server_floor_plan:onFloorPlansChanged',
11
+ /** pubsub 同步处理完成,供 Server 向订阅者推送最新查询结果 */
12
+ onFloorPlanSyncCompleted: 'server_floor_plan:onFloorPlanSyncCompleted'
13
+ };
@@ -3,7 +3,7 @@
3
3
  * 包含新增的 Products、Menu、Quotation 和扩展的 Schedule 模块
4
4
  */
5
5
  export { ProductsModule } from './products';
6
- export type { ProductsState } from './products/types';
6
+ export type { ProductIdScope, ProductsState } from './products/types';
7
7
  export { ProductsHooks } from './products/types';
8
8
  export { MenuModule } from './menu';
9
9
  export type { MenuState, MenuData } from './menu/types';
@@ -14,8 +14,13 @@ export { QuotationHooks } from './quotation/types';
14
14
  export { ScheduleModuleEx } from './schedule';
15
15
  export type { ScheduleState, ScheduleItem } from './schedule/types';
16
16
  export { OrderModule } from './order';
17
- export type { OrderState, OrderData, OrderId, OrderSummary, OrderBookingItem, OrderProductLineItem, OrderPaymentItem, OrderSurchargeItem, OrderProductDiscountItem, OrderWithoutBookings, BookingData, OrderFilters, BookingFilters, OrderFilterResult, BookingFilterResult, OrderModulePagedResult, } from './order/types';
17
+ export type { OrderState, OrderData, OrderId, OrderSummary, OrderBookingItem, OrderProductLineItem, OrderPaymentItem, OrderSurchargeItem, OrderProductDiscountItem, OrderWithoutBookings, BookingData, OrderFilters, BookingFilters, OrderFilterResult, OrderFilterRejectDetail, OrderFilterRejectedEntry, BookingFilterResult, OrderModulePagedResult, } from './order/types';
18
18
  export { OrderHooks } from './order/types';
19
+ export { PaymentServerModule } from './payment';
20
+ export type { PaymentMethod, PaymentMethodsChangedEventData, PaymentServerState } from './payment/types';
21
+ export { FloorPlanModule } from './floor-plan';
22
+ export type { FloorPlanItem, FloorPlanState, FloorPlanSyncMessage } from './floor-plan/types';
23
+ export { FloorPlanHooks } from './floor-plan/types';
19
24
  export { ResourceModule, resourceModule } from './resource';
20
25
  export type { ResourceState, ResourceData, ResourceId, ResourceBooking, ResourcePageQuery, ResourcePageResult, QueryOptions, ScheduleEventResource, } from './resource';
21
26
  export { ResourceHooks } from './resource';
@@ -21,6 +21,12 @@ export { ScheduleModuleEx } from "./schedule";
21
21
  export { OrderModule } from "./order";
22
22
  export { OrderHooks } from "./order/types";
23
23
 
24
+ // Payment 模块
25
+ export { PaymentServerModule } from "./payment";
26
+ // 平面图(floor-plan)
27
+ export { FloorPlanModule } from "./floor-plan";
28
+ export { FloorPlanHooks } from "./floor-plan/types";
29
+
24
30
  // Resource 模块
25
31
  export { ResourceModule, resourceModule } from "./resource";
26
32
  export { ResourceHooks } from "./resource";
@@ -84,7 +84,9 @@ export var MenuModule = /*#__PURE__*/function (_BaseModule) {
84
84
  app = appPlugin.getApp();
85
85
  this.dbManager = app.dbManager;
86
86
  this.logger = app.logger;
87
- if (this.dbManager) {} else {
87
+ if (this.dbManager) {
88
+ console.log('[Menu] IndexDB Manager 已初始化');
89
+ } else {
88
90
  console.warn('[Menu] IndexDB Manager 未找到');
89
91
  }
90
92
  }
@@ -260,6 +262,7 @@ export var MenuModule = /*#__PURE__*/function (_BaseModule) {
260
262
  } finally {
261
263
  _iterator2.f();
262
264
  }
265
+ console.log("[Menu] Map \u7F13\u5B58\u5DF2\u540C\u6B65\uFF0C\u5171 ".concat(this.store.map.size, " \u4E2A\u9910\u724C"));
263
266
  }
264
267
 
265
268
  /**
@@ -282,31 +285,33 @@ export var MenuModule = /*#__PURE__*/function (_BaseModule) {
282
285
 
283
286
  // 同时清空 IndexDB 中的数据
284
287
  if (!this.dbManager) {
285
- _context4.next = 16;
288
+ _context4.next = 17;
286
289
  break;
287
290
  }
288
291
  _context4.prev = 5;
289
292
  _context4.next = 8;
290
293
  return this.dbManager.clear(INDEXDB_STORE_NAME);
291
294
  case 8:
295
+ console.log('[Menu] IndexDB 缓存已清空');
292
296
  this.logInfo('IndexDB 缓存已清空');
293
- _context4.next = 16;
297
+ _context4.next = 17;
294
298
  break;
295
- case 11:
296
- _context4.prev = 11;
299
+ case 12:
300
+ _context4.prev = 12;
297
301
  _context4.t0 = _context4["catch"](5);
298
302
  errorMessage = _context4.t0 instanceof Error ? _context4.t0.message : String(_context4.t0);
299
303
  console.error('[Menu] 清空 IndexDB 缓存失败:', _context4.t0);
300
304
  this.logError('清空 IndexDB 缓存失败', {
301
305
  error: errorMessage
302
306
  });
303
- case 16:
304
- this.logInfo('缓存清空完成');
305
307
  case 17:
308
+ console.log('[Menu] 缓存已清空');
309
+ this.logInfo('缓存清空完成');
310
+ case 19:
306
311
  case "end":
307
312
  return _context4.stop();
308
313
  }
309
- }, _callee4, this, [[5, 11]]);
314
+ }, _callee4, this, [[5, 12]]);
310
315
  }));
311
316
  function clear() {
312
317
  return _clear.apply(this, arguments);
@@ -397,13 +402,14 @@ export var MenuModule = /*#__PURE__*/function (_BaseModule) {
397
402
  _context6.next = 10;
398
403
  return Promise.all(savePromises);
399
404
  case 10:
405
+ console.log("[Menu] \u5DF2\u5C06 ".concat(menuList.length, " \u6761\u9910\u724C\u6570\u636E\u4FDD\u5B58\u5230 IndexDB"));
400
406
  this.logInfo('餐牌数据已保存到 IndexDB', {
401
407
  menuCount: menuList.length
402
408
  });
403
- _context6.next = 18;
409
+ _context6.next = 19;
404
410
  break;
405
- case 13:
406
- _context6.prev = 13;
411
+ case 14:
412
+ _context6.prev = 14;
407
413
  _context6.t0 = _context6["catch"](4);
408
414
  errorMessage = _context6.t0 instanceof Error ? _context6.t0.message : String(_context6.t0);
409
415
  console.error('[Menu] 保存数据到 IndexDB 失败:', _context6.t0);
@@ -411,11 +417,11 @@ export var MenuModule = /*#__PURE__*/function (_BaseModule) {
411
417
  menuCount: menuList.length,
412
418
  error: errorMessage
413
419
  });
414
- case 18:
420
+ case 19:
415
421
  case "end":
416
422
  return _context6.stop();
417
423
  }
418
- }, _callee6, this, [[4, 13]]);
424
+ }, _callee6, this, [[4, 14]]);
419
425
  }));
420
426
  function saveMenuToIndexDB(_x4) {
421
427
  return _saveMenuToIndexDB.apply(this, arguments);
@@ -435,17 +441,19 @@ export var MenuModule = /*#__PURE__*/function (_BaseModule) {
435
441
  return _regeneratorRuntime().wrap(function _callee7$(_context7) {
436
442
  while (1) switch (_context7.prev = _context7.next) {
437
443
  case 0:
444
+ console.log('[Menu] 开始预加载数据...');
438
445
  startTime = Date.now();
439
446
  this.logInfo('开始预加载数据');
440
- _context7.prev = 2;
441
- _context7.next = 5;
447
+ _context7.prev = 3;
448
+ _context7.next = 6;
442
449
  return this.loadMenuFromIndexDB();
443
- case 5:
450
+ case 6:
444
451
  cachedData = _context7.sent;
445
452
  if (!(cachedData && cachedData.length > 0)) {
446
- _context7.next = 13;
453
+ _context7.next = 15;
447
454
  break;
448
455
  }
456
+ console.log("[Menu] \u4ECE IndexDB \u52A0\u8F7D\u4E86 ".concat(cachedData.length, " \u6761\u9910\u724C\u6570\u636E"));
449
457
  // 将缓存数据放入 store
450
458
  this.store.menuList = cloneDeep(cachedData);
451
459
  // 同步更新 Map 缓存
@@ -458,30 +466,31 @@ export var MenuModule = /*#__PURE__*/function (_BaseModule) {
458
466
  source: 'IndexDB'
459
467
  });
460
468
  return _context7.abrupt("return");
461
- case 13:
469
+ case 15:
470
+ console.log('[Menu] IndexDB 中没有缓存数据,从服务器加载...');
462
471
  this.logInfo('IndexDB 中没有缓存数据,准备从服务器加载');
463
- _context7.next = 21;
472
+ _context7.next = 24;
464
473
  break;
465
- case 16:
466
- _context7.prev = 16;
467
- _context7.t0 = _context7["catch"](2);
474
+ case 19:
475
+ _context7.prev = 19;
476
+ _context7.t0 = _context7["catch"](3);
468
477
  errorMessage = _context7.t0 instanceof Error ? _context7.t0.message : String(_context7.t0);
469
478
  console.warn('[Menu] 从 IndexDB 加载数据失败:', _context7.t0);
470
479
  this.logWarning('从 IndexDB 加载数据失败,准备从服务器加载', {
471
480
  error: errorMessage
472
481
  });
473
- case 21:
474
- _context7.next = 23;
482
+ case 24:
483
+ _context7.next = 26;
475
484
  return this.loadMenuList();
476
- case 23:
485
+ case 26:
477
486
  menuList = _context7.sent;
478
487
  if (!(menuList && menuList.length > 0)) {
479
- _context7.next = 34;
488
+ _context7.next = 37;
480
489
  break;
481
490
  }
482
- _context7.next = 27;
491
+ _context7.next = 30;
483
492
  return this.saveMenuToIndexDB(menuList);
484
- case 27:
493
+ case 30:
485
494
  this.store.menuList = cloneDeep(menuList);
486
495
  // 同步更新 Map 缓存
487
496
  this.syncMenuMap();
@@ -492,18 +501,18 @@ export var MenuModule = /*#__PURE__*/function (_BaseModule) {
492
501
  duration: "".concat(_duration2, "ms"),
493
502
  source: 'Server'
494
503
  });
495
- _context7.next = 36;
504
+ _context7.next = 39;
496
505
  break;
497
- case 34:
506
+ case 37:
498
507
  _duration3 = Date.now() - startTime;
499
508
  this.logWarning('预加载完成但未获取到数据', {
500
509
  duration: "".concat(_duration3, "ms")
501
510
  });
502
- case 36:
511
+ case 39:
503
512
  case "end":
504
513
  return _context7.stop();
505
514
  }
506
- }, _callee7, this, [[2, 16]]);
515
+ }, _callee7, this, [[3, 19]]);
507
516
  }));
508
517
  function preload() {
509
518
  return _preload.apply(this, arguments);
@@ -13,17 +13,28 @@ export declare class OrderModule extends BaseModule implements Module {
13
13
  private orderDataSource;
14
14
  private pendingSyncMessages;
15
15
  private syncTimer?;
16
- private readonly ORDER_SYNC_DEBOUNCE_MS;
17
- private resourceIdIndex;
16
+ private isProcessingSyncBatch;
17
+ private isIdlePhase;
18
18
  private logger;
19
19
  private storage;
20
+ private orderSQLiteSaveQueue; /** 按 storageKey 记录最近一次 SQLite 写入来源与时间,用于去重 */
21
+ private recentSqliteWriteByStorageKey;
22
+ /** 最近一次 SSE 全量拉取完成时间 */
23
+ private lastServerFullFetchAtMs;
20
24
  constructor(name?: string, version?: string);
25
+ /**
26
+ * 广播订单变更事件,兼容全量列表订阅并额外携带本次变更订单。
27
+ *
28
+ * @example
29
+ * await this.emitOrdersChanged([freshOrder], 'pubsub.bodyUpsert')
30
+ */
31
+ private emitOrdersChanged;
21
32
  initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
22
33
  /**
23
- * 记录信息日志
24
- * @param title 日志标题
25
- * @param metadata 日志元数据
26
- */
34
+ * 记录信息日志
35
+ * @param title 日志标题
36
+ * @param metadata 日志元数据
37
+ */
27
38
  private logInfo;
28
39
  /**
29
40
  * 记录错误日志
@@ -31,46 +42,190 @@ export declare class OrderModule extends BaseModule implements Module {
31
42
  * @param metadata 日志元数据
32
43
  */
33
44
  private logError;
45
+ private logWarning;
46
+ /**
47
+ * 在订单进入内存或 SQLite 前统一压缩子项强身份重复并补齐协议 UID。
48
+ * 仅记录计数与订单标识,不输出商品、预约、支付或客户明细。
49
+ */
50
+ private normalizeOrderCollectionsForIngress;
51
+ /**
52
+ * incoming 决定权威成员集合;同一持久化行仍从 existing 补齐 incoming 省略的本地展示字段。
53
+ */
54
+ private mergeAuthoritativeOrderCollection;
55
+ private reconcileOverwriteOrderCollections;
56
+ /**
57
+ * 记录订单最近一次 SQLite 写入,供 pubsub 回声去重使用。
58
+ *
59
+ * @example
60
+ * this.recordRecentSqliteWrite('upsertOrdersFromRemote', orders)
61
+ */
62
+ private recordRecentSqliteWrite;
63
+ /**
64
+ * 过滤 pubsub 触发的冗余 SQLite patch(业务 API 刚写入过的 update 回声)。
65
+ *
66
+ * @example
67
+ * const { toWrite, skipped } = this.filterRedundantPatchOrders('pubsub.bodyUpsert', orders, mergeActions)
68
+ */
69
+ private filterRedundantPatchOrders;
70
+ /**
71
+ * 过滤 pubsub HTTP 增量拉取 ids:本地刚由业务 API 写入的单可跳过 HTTP。
72
+ *
73
+ * @example
74
+ * const ids = this.filterRedundantHttpRefreshIds([99331, 99332])
75
+ */
76
+ private filterRedundantHttpRefreshIds;
77
+ /**
78
+ * 解析 pubsub 消息会走哪条同步分支,便于对照为何触发 HTTP 重拉或 body 直写。
79
+ *
80
+ * @example
81
+ * this.resolveSyncMessageRoute(msg)
82
+ * // => { route: 'httpRefresh.batchIds', ... }
83
+ */
84
+ private resolveSyncMessageRoute;
85
+ private updateCreateStore;
86
+ private getOrderSyncThrottleMs;
34
87
  preload(): Promise<void>;
35
88
  getOrders(): OrderData[];
36
89
  getOrderById(id: OrderId): OrderData | undefined;
37
- /** 按 order_id 查询(推荐) */
90
+ /** 按 order_id 查询内存订单。 */
38
91
  getOrderByOrderId(orderId: OrderId): OrderData | undefined;
92
+ getLocalOrderFromMemoryByLookup(lookup: OrderId): OrderData | null;
93
+ getLocalOrderByLookup(lookup: OrderId): Promise<OrderData | null>;
39
94
  loadOrdersByServer(): Promise<OrderData[]>;
40
- getOrdersByResourceId(resourceId: string | number): OrderData[];
95
+ /**
96
+ * 静默全量刷新:后台重新拉取全量 SSE 订单数据并更新本地
97
+ * 拿到完整数据后一次性替换 store,触发订单变更与同步完成事件
98
+ * @returns 刷新后的订单列表
99
+ */
100
+ silentRefresh(): Promise<OrderData[]>;
101
+ private normalizeOrderForMemoryList;
102
+ /**
103
+ * 仅覆盖本地已存在的订单;不存在则直接跳过,不落库、不 emit。
104
+ * 适用于"按 order_id 主动刷新本地订单详情"的代理场景。
105
+ */
106
+ overwriteExistingOrder(fresh: OrderData): Promise<{
107
+ overwritten: boolean;
108
+ }>;
109
+ /**
110
+ * 将远端拉取的订单合并进本地 store(已存在则更新,不存在则追加),落库并 emit onOrdersChanged。
111
+ * 供 /update/localOrder 等在「本地尚无该单」时写入新建单。
112
+ */
113
+ upsertOrdersFromRemote(freshOrders: OrderData[]): Promise<void>;
114
+ markOrderSyncedByExternalSaleNumber(params: {
115
+ externalSaleNumber: OrderId;
116
+ patch?: Partial<OrderData>;
117
+ }): Promise<{
118
+ updated: boolean;
119
+ order?: OrderData;
120
+ }>;
121
+ /**
122
+ * 将本地待同步订单按 SQLite storage key 合并进 store 并落库。
123
+ * checkout 离线兜底可能没有 order_id,但通常会有 external_sale_number。
124
+ */
125
+ upsertPendingSyncOrders(pendingOrders: OrderData[]): Promise<void>;
126
+ /**
127
+ * 通过 SSE 按自定义 query 拉取订单(支持 select/with 精简字段)
128
+ */
129
+ fetchOrdersBySSE(query?: Record<string, any>): Promise<OrderData[]>;
41
130
  getRoutes(): RouteDefinition[];
42
131
  destroy(): void;
43
132
  private syncOrdersMap;
44
- private extractResourceIds;
133
+ private getOrderMapKey;
134
+ private isBlankIdentityValue;
135
+ private getOrderIdentityEntries;
136
+ private getOrderIdentityKeys;
45
137
  private getOrderDateKey;
46
138
  /**
47
139
  * 初始化 OrderDataSource 实例
48
140
  */
49
141
  private initOrderDataSource;
50
142
  /**
51
- * 初始化 pubsub 订阅,监听订单变更
143
+ * 初始化 pubsub 订阅,监听订单变更(纯订阅,不拉数据;全量 SSE 由 loadOrdersByServer 负责)
52
144
  */
53
145
  private setupOrderSync;
54
146
  /**
55
- * 处理防抖后的同步消息批次
147
+ * 调度订单同步节流窗口(leading-edge throttle):
148
+ * - 空闲状态下收到的第一条消息立即触发批处理,无需等待;
149
+ * - 首条处理后进入冷却窗口,窗口期间的后续消息聚合,窗口结束后批量处理;
150
+ * - 若当前批处理执行中,则由批处理结束后决定是否开启下一轮窗口。
151
+ */
152
+ private scheduleOrderSyncThrottle;
153
+ /**
154
+ * 执行一次节流批处理并在需要时续约下一轮窗口。
155
+ * 批处理完成且无后续消息时恢复空闲状态,下一条消息将立即触发。
156
+ */
157
+ private flushOrderSyncMessagesByThrottle;
158
+ /**
159
+ * 处理节流窗口内聚合后的同步消息批次
56
160
  *
57
161
  * 后端统一发送 change 消息,不再区分新增/编辑/删除。
58
162
  * - 单条(id/order_id):若携带 body/data 则直接 upsert 到本地
59
163
  * - 批量(ids):通过 HTTP 按 ids 增量拉取,再 merge 到本地
164
+ *
165
+ * @example
166
+ * // pending 队列中存在 8 条消息时,仅处理一次批次并统一 merge
167
+ * await this.processOrderSyncMessages()
60
168
  */
61
169
  private processOrderSyncMessages;
62
170
  /**
63
- * 通过 HTTP 按 ids 增量拉取订单
171
+ * 通过 HTTP 按 ids 批量拉取订单详情(走 orderDataSource)。
172
+ *
173
+ * - 优先使用 `orderDataSource.fetchOrdersByIds`(如适配器实现了该方法)
174
+ * - 否则回退到 `orderDataSource.run({ http: { query: { ids } } })`
175
+ * - 失败统一返回空数组(由调用方按"返回缺失的 id" 判断单笔失败)
176
+ *
177
+ * @example
178
+ * const fresh = await orderModule.fetchOrdersByHttp(['96971', '96972'])
64
179
  */
65
- private fetchOrdersByHttp;
180
+ fetchOrdersByHttp(ids: OrderId[]): Promise<OrderData[]>;
66
181
  /**
67
182
  * 将增量订单合并到 store
68
183
  */
69
184
  private mergeOrdersToStore;
185
+ /**
186
+ * 在身份索引中查找与目标订单共享任一身份键的已存在订单下标。
187
+ * 返回所有命中键里最小的下标,等价于原 findOrderIndexByIdentity 的「取首个匹配」语义。
188
+ *
189
+ * @example
190
+ * const idx = this.lookupOrderIndexByIdentityKeys(identityKeyToIndex, freshIdentityKeys)
191
+ */
192
+ private lookupOrderIndexByIdentityKeys;
193
+ private isRemoteEchoMergeSource;
194
+ /**
195
+ * 将订单的全部身份键登记到索引并指向其在列表中的下标。
196
+ * 合并后订单新增的身份字段(如挂单同步后拿到 order_id)也会被登记。
197
+ *
198
+ * @example
199
+ * this.registerOrderIdentityKeys(identityKeyToIndex, mergedOrder, matchIndex)
200
+ */
201
+ private registerOrderIdentityKeys;
202
+ /**
203
+ * 合并热路径去重兜底:默认直接返回原列表(增量索引已保证无重复)。
204
+ * 仅当 ORDER_MERGE_SELF_CHECK 开启时,额外做一次全表压缩并在发现残留重复时告警。
205
+ */
206
+ private runOrderStoreSelfCheck;
70
207
  private normalizeOrderSyncMessage;
71
208
  private normalizeOrderSyncPayload;
72
209
  private uniqueOrderIds;
73
210
  private getIdKey;
211
+ private isOrderLookupMatch;
212
+ /**
213
+ * 解析订单 SQLite 主键,规则与宿主 OrderDataSource.getOrderStorageKey 一致。
214
+ *
215
+ * @example
216
+ * const key = this.getOrderStorageKey({ order_id: 1001, external_sale_number: 'S-1001' })
217
+ * // => 'S-1001'
218
+ */
219
+ private getOrderStorageKey;
220
+ private getOrderIdentityMatchKeys;
221
+ private doOrdersShareIdentity;
222
+ private findOrderIndexByIdentity;
223
+ private getOrderCompletenessScore;
224
+ private pickPreferredOrder;
225
+ private mergeOrderRecords;
226
+ private summarizeDuplicateOrders;
227
+ private logDuplicateOrders;
228
+ private compactOrderListByIdentity;
74
229
  /**
75
230
  * 当前订单拉取窗口:
76
231
  * - 优先使用 createdAtQuery.sales_time_between(已按营业日边界初始化)
@@ -82,6 +237,44 @@ export declare class OrderModule extends BaseModule implements Module {
82
237
  private getStorageItem;
83
238
  private setStorageItem;
84
239
  private loadOrdersFromSQLite;
85
- private saveOrdersToSQLite;
240
+ private isPendingSyncOrder;
241
+ private normalizeRemoteSyncedOrder;
242
+ private mergeRemoteSnapshotWithPendingOrders;
243
+ /**
244
+ * 串行执行订单 SQLite 写入任务,避免快照替换与增量 upsert 并发交错。
245
+ *
246
+ * @example
247
+ * await this.runInOrderSQLiteSaveQueue(async () => {
248
+ * await this.dbManager.bulkUpdate(INDEXDB_STORE_NAME, orders)
249
+ * })
250
+ */
251
+ private runInOrderSQLiteSaveQueue;
252
+ /**
253
+ * 批量增量 upsert 订单到 SQLite,不清空表;用于 pubsub / HTTP 增量合并。
254
+ *
255
+ * @example
256
+ * await this.patchOrdersInSQLite(freshOrders)
257
+ */
258
+ private patchOrdersInSQLite;
259
+ /**
260
+ * 单条 upsert 订单到 SQLite;用于 overwriteExistingOrder 等单条覆盖场景。
261
+ *
262
+ * @example
263
+ * await this.updateOrderInSQLite(freshOrder)
264
+ */
265
+ private updateOrderInSQLite;
266
+ /**
267
+ * 全量快照替换 orders 表(clear + bulkAdd),用于 SSE 全量拉取与营业日窗口裁剪。
268
+ *
269
+ * @example
270
+ * await this.replaceOrdersSnapshotInSQLite(orderList)
271
+ */
272
+ private replaceOrdersSnapshotInSQLite;
273
+ /**
274
+ * 清空订单模块的内存数据和本地 SQLite 订单表。
275
+ *
276
+ * @example
277
+ * await orderModule.clear()
278
+ */
86
279
  clear(): Promise<void>;
87
280
  }