@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
@@ -3,10 +3,26 @@ import { MenuModule } from './modules/menu';
3
3
  import { QuotationModule } from './modules/quotation';
4
4
  import { ScheduleModuleEx } from './modules/schedule';
5
5
  import { ResourceModule } from './modules/resource';
6
+ import { FloorPlanModule } from './modules/floor-plan';
7
+ import { PaymentServerModule } from './modules/payment';
6
8
  import { PisellCore, ServerModuleConfig, InitializeServerOptions } from '../types';
7
9
  import type { RouteHandler, HttpMethod, RouteDefinition, Router, ModuleRegistryConfig, RequestSetting } from './types';
8
10
  import { OrderModule } from './modules/order';
9
11
  export type { RouteHandler, HttpMethod, RouteDefinition, Router, ModuleRegistryConfig, };
12
+ /** Server 运行时诊断快照,用于排查订阅者是否持续增长。 */
13
+ export interface ServerDiagnosticsSnapshot {
14
+ subscribers: {
15
+ productQuerySubscribers: number;
16
+ orderQuerySubscribers: number;
17
+ bookingQuerySubscribers: number;
18
+ bookingRemoteQuerySubscribers: number;
19
+ salesSearchSubscribers: number;
20
+ floorPlanQuerySubscribers: number;
21
+ };
22
+ caches: {
23
+ bookingRemoteCache: number;
24
+ };
25
+ }
10
26
  /**
11
27
  * Server 类
12
28
  * 用于注册和管理服务端模块
@@ -21,17 +37,49 @@ declare class Server {
21
37
  schedule?: ScheduleModuleEx;
22
38
  resource?: ResourceModule;
23
39
  order?: OrderModule;
40
+ floor_plan?: FloorPlanModule;
41
+ payment?: PaymentServerModule;
42
+ private paymentRouteModule?;
43
+ private paymentRouteModuleInFlight?;
44
+ private quotationAvailableCache;
45
+ private quotationAvailableInFlight;
46
+ /** GET 前缀路由(最长前缀优先匹配) */
47
+ private prefixRouterGet;
24
48
  router: Router;
25
49
  private productQuerySubscribers;
50
+ /** subscriberId → 智能定价变价时间点定时器句柄(与 subscriber 分离存储,便于 clear) */
51
+ private productQueryScheduleTimers;
52
+ /** 餐牌筛选为空时才触发的菜单/日程缓存自愈,避免每次商品查询都请求远端。 */
53
+ private menuScheduleRefreshInFlight;
54
+ private lastMenuScheduleRefreshAt;
55
+ private readonly MENU_SCHEDULE_REFRESH_COOLDOWN_MS;
26
56
  private orderQuerySubscribers;
27
57
  private bookingQuerySubscribers;
58
+ private bookingRemoteQuerySubscribers;
59
+ private bookingRemoteCache;
60
+ private readonly BOOKING_REMOTE_CACHE_TTL_MS;
61
+ private readonly BOOKING_REMOTE_CACHE_MAX_ENTRIES;
62
+ private salesSearchSubscribers;
63
+ private deviceTaskActionsRegistered;
64
+ private floorPlanQuerySubscribers;
28
65
  private moduleRegistry;
29
66
  constructor(core: PisellCore);
67
+ /**
68
+ * 获取 Server 内部订阅者和缓存数量快照。
69
+ *
70
+ * @example
71
+ * const snapshot = pisellos.server?.getDiagnosticsSnapshot?.();
72
+ */
73
+ getDiagnosticsSnapshot(): ServerDiagnosticsSnapshot;
30
74
  /**
31
75
  * 注册路由
32
76
  * @param routes 路由定义数组
33
77
  */
34
78
  private registerRoutes;
79
+ /**
80
+ * 注册前缀路由(仅 GET)。匹配规则:path === prefix 或 path 以 prefix + '/' 开头;最长前缀优先。
81
+ */
82
+ private registerPrefixRoutes;
35
83
  /**
36
84
  * 注册单个模块并自动注册其路由
37
85
  * @param module 模块实例
@@ -72,6 +120,15 @@ declare class Server {
72
120
  config: ModuleRegistryConfig;
73
121
  shouldPreload: boolean;
74
122
  }[]>;
123
+ private registerDeviceTaskActions;
124
+ private handleSyncSalesTask;
125
+ private runCheckoutSync;
126
+ private omitCheckoutSyncMode;
127
+ private persistSyncedCheckoutOrder;
128
+ /**
129
+ * 将普通层 QuotationModule 的报价单计算能力桥接到 Server Products 模块。
130
+ */
131
+ private setupProductsQuotationPriceBridge;
75
132
  /**
76
133
  * 获取 Products 模块实例
77
134
  */
@@ -98,6 +155,12 @@ declare class Server {
98
155
  * 不影响当前界面展示,适用于切回前台、定时刷新等场景
99
156
  */
100
157
  refreshProductsInBackground(): Promise<void>;
158
+ /**
159
+ * 后台静默刷新订单数据
160
+ * 重新拉取全量 SSE 接口,更新本地数据后触发 onOrdersSyncCompleted
161
+ * 不影响当前界面展示,适用于切回前台、定时刷新等场景
162
+ */
163
+ refreshOrdersInBackground(): Promise<void>;
101
164
  /**
102
165
  * 清空所有server模块的IndexedDB缓存
103
166
  * @returns Promise<void>
@@ -144,15 +207,77 @@ declare class Server {
144
207
  * @private
145
208
  */
146
209
  private registerServerRoutes;
210
+ private getPaymentRouteModule;
211
+ private handlePaymentMethods;
212
+ private handleQuotationAvailable;
213
+ private fetchQuotationAvailableFromAPI;
214
+ private isSuccessfulRemoteResponse;
147
215
  /**
148
216
  * 根据 subscriberId 移除商品查询订阅者
149
217
  */
150
218
  removeProductQuerySubscriber(subscriberId?: string): void;
219
+ /**
220
+ * 构建商品 query 响应 data 段,附带智能定价 schedule_time_points 元数据。
221
+ */
222
+ private buildProductQueryResultPayload;
223
+ /**
224
+ * 是否启用商品 query 订阅的 schedule 时间点定时重算。
225
+ * strategy_context.enable_schedule_reload === false 时关闭。
226
+ */
227
+ private shouldScheduleProductQueryReload;
228
+ /**
229
+ * 清除指定 subscriber 的全部 schedule 定时器,防止重复 query 或 unsubscribe 后泄漏。
230
+ */
231
+ private clearSubscriberScheduleTimers;
232
+ /**
233
+ * 从 productQueryScheduleTimers 移除已触发的 timer 引用。
234
+ */
235
+ private removeScheduleTimerRef;
236
+ /**
237
+ * 计算 schedule 变价时间点到当前时刻的延迟(ms)。已过期返回 -1。
238
+ */
239
+ private computeScheduleTimePointDelayMs;
240
+ /**
241
+ * 定时重算前刷新 subscriber schedule 上下文:使用执行瞬间时间,禁止沿用首次 query 的 schedule_datetime。
242
+ */
243
+ private refreshSubscriberScheduleAtExecution;
244
+ /**
245
+ * 为 subscriber 注册智能定价 scheduleTimePoints 定时重算。
246
+ * 必须先 clearSubscriberScheduleTimers,再调用本方法。
247
+ */
248
+ private scheduleSubscriberTimePointReloads;
249
+ /**
250
+ * schedule 变价时间点定时器触发:刷新 schedule_datetime 后重算并 callback。
251
+ */
252
+ private onScheduleTimePointTimerFire;
253
+ /**
254
+ * 对单个商品 query 订阅者重算并推送(定时路径;不新建 schedule timer)。
255
+ */
256
+ private recomputeAndNotifySubscriber;
257
+ /**
258
+ * query 完成后为 subscriber 同步 schedule 定时器(先 clear 再 schedule)。
259
+ */
260
+ private syncProductQueryScheduleTimers;
151
261
  /**
152
262
  * 处理商品查询请求
153
263
  * 存储订阅者信息,便于数据变更时推送最新结果
154
264
  */
155
265
  private handleProductQuery;
266
+ /**
267
+ * ProductList callers such as standalone retail pages do not always have a selected schedule.
268
+ * In that case query against the current local time so menu availability can still be evaluated.
269
+ */
270
+ private resolveProductQueryScheduleContext;
271
+ /**
272
+ * OpenData 的关联餐牌可能已更新,而 server_menu/server_schedule 仍命中本地持久化缓存。
273
+ * 仅在当前筛选没有任何生效餐牌时刷新一次,并由调用方重新计算筛选结果。
274
+ */
275
+ private refreshMenuScheduleCacheAfterEmptyResult;
276
+ /**
277
+ * 按商品 id 查询单条(GET /shop/product/query/:productId)
278
+ * schedule_date 必填:query 或 data;schedule_datetime 可选。不走订阅。
279
+ */
280
+ private handleProductQueryById;
156
281
  /**
157
282
  * 取消商品查询订阅(HTTP 路由入口)
158
283
  */
@@ -167,11 +292,153 @@ declare class Server {
167
292
  */
168
293
  private handleUnsubscribeOrderQuery;
169
294
  /**
170
- * 判断预约查询的 sales_time_between 起始日期是否为今天
295
+ * 处理 sales 单模块搜索:请求透传后端,仅在 OS 层维护已返回订单号集合。
296
+ *
297
+ * @example
298
+ * await this.handleSalesSearchModule({ url: '/shop/es/search/sales', method: 'post', data: { keyword: 'A' } })
171
299
  */
172
- private isBookingQueryForToday;
300
+ private handleSalesSearchModule;
173
301
  /**
174
- * 非今天的预约查询:通过真实 API 获取数据,再做 flattenOrdersToBookings 拆分
302
+ * 处理 sales 聚合搜索:请求透传后端,仅订阅 sales 分组的已返回订单号。
303
+ *
304
+ * @example
305
+ * await this.handleSalesSearchAggregate({ url: '/shop/es/search', method: 'post', data: { modules: [] } })
306
+ */
307
+ private handleSalesSearchAggregate;
308
+ /**
309
+ * 取消 sales 搜索订阅。
310
+ *
311
+ * @example
312
+ * await this.handleUnsubscribeSalesSearch({ data: { subscriberId: 'global-search-order' } } as any)
313
+ */
314
+ private handleUnsubscribeSalesSearch;
315
+ /**
316
+ * 执行 sales 搜索并登记可见订单号。
317
+ * 搜索参数完全透传后端,OS 不做过滤、筛选、排序。
318
+ *
319
+ * @example
320
+ * const result = await this.handleSalesSearchRequest('single', '/shop/es/search/sales', { keyword: '1001' }, {})
321
+ */
322
+ private handleSalesSearchRequest;
323
+ /**
324
+ * 透传调用后端 sales 搜索接口。
325
+ *
326
+ * @example
327
+ * const res = await this.fetchSalesSearchFromAPI('/shop/es/search/sales', { keyword: '1001' })
328
+ */
329
+ private fetchSalesSearchFromAPI;
330
+ /**
331
+ * 构建搜索订阅签名;页码变化不重置,可继续累计 visibleOrderIds。
332
+ *
333
+ * @example
334
+ * const signature = this.buildSalesSearchSignature('single', { keyword: 'A', page: 2 })
335
+ */
336
+ private buildSalesSearchSignature;
337
+ /**
338
+ * 移除页码参数,保留 page size、keyword、filters、sort 等查询语义参数。
339
+ *
340
+ * @example
341
+ * this.stripSalesSearchPageParams({ page: 2, per_page: 20, keyword: 'A' })
342
+ */
343
+ private stripSalesSearchPageParams;
344
+ /**
345
+ * 提取响应 data,兼容 OS 包装结构与后端直接响应结构。
346
+ *
347
+ * @example
348
+ * const data = this.extractSalesSearchResponseData(result)
349
+ */
350
+ private extractSalesSearchResponseData;
351
+ /**
352
+ * 从搜索响应中提取 sales 命中的订单号。
353
+ *
354
+ * @example
355
+ * const ids = this.extractSalesSearchOrderIds('single', result)
356
+ */
357
+ private extractSalesSearchOrderIds;
358
+ /**
359
+ * 查找聚合搜索响应中的 sales 分组。
360
+ *
361
+ * @example
362
+ * const group = this.findSalesSearchAggregateGroup({ results: [{ module: 'sales' }] })
363
+ */
364
+ private findSalesSearchAggregateGroup;
365
+ /**
366
+ * 从订单或搜索命中项中取订单号。
367
+ *
368
+ * @example
369
+ * const id = this.getSalesSearchOrderId({ order_id: 1001 })
370
+ */
371
+ private getSalesSearchOrderId;
372
+ /**
373
+ * 从查询值中提取 YYYY-MM-DD 日期串。
374
+ *
375
+ * @example
376
+ * this.extractQueryDate('2026-04-15 09:58:00') // => '2026-04-15'
377
+ */
378
+ private extractQueryDate;
379
+ /**
380
+ * 判断时间范围是否完整落在今天。
381
+ *
382
+ * @example
383
+ * this.isRangeFullyToday('2026-04-15', '2026-04-15') // => true
384
+ */
385
+ private isRangeFullyToday;
386
+ /**
387
+ * 判断时间范围是否「开始和结束都不是今天」。
388
+ *
389
+ * @example
390
+ * this.isRangeBothNotToday('2026-04-13', '2026-04-14') // => true
391
+ */
392
+ private isRangeBothNotToday;
393
+ /**
394
+ * 订单查询是否走本地:
395
+ * - 仅当 start_time 与 end_time 都是今天时,走本地;
396
+ * - 任意一端不是今天时,走云端,确保跨天查询能拉取非本地窗口数据。
397
+ */
398
+ private shouldUseLocalOrderQuery;
399
+ /**
400
+ * 预约查询是否走本地:
401
+ * - 当 sales_time_between 的开始和结束都不是今天时,走远端;
402
+ * - 其余情况走本地。
403
+ */
404
+ private shouldUseLocalBookingQuery;
405
+ /**
406
+ * 日历 SSE 精简 with:由调用方显式声明 compact_fields 决定
407
+ * - compact_fields === true → 精简字段(周/月视图)
408
+ * - 其余(false / 未传)→ ['all'](日视图/表格/平面图合并)
409
+ */
410
+ private resolveBookingSalesWith;
411
+ /**
412
+ * 日历 SSE 精简 select:渲染 + filterBookingsFromOrders 所需的主表字段
413
+ * business_code / payment_status 不直接用于渲染,但 matchOrder 过滤依赖
414
+ */
415
+ private resolveBookingSalesSelect;
416
+ /**
417
+ * 日历(compact_fields)场景下要直接在 SSE 层排除的订单类型:
418
+ * 这些类型不会出现在日历上,拉取它们只会浪费带宽并增加前端过滤成本。
419
+ */
420
+ private readonly BOOKING_SALES_COMPACT_EXCLUDE_TYPES;
421
+ private normalizeBookingRemoteQueryPayload;
422
+ /**
423
+ * 远端预约查询内存缓存开关:默认 false,仅显式 true 才启用。
424
+ */
425
+ private isBookingRemoteMemoryCacheEnabled;
426
+ private stableSerialize;
427
+ private buildBookingRemoteCacheKey;
428
+ private parseBookingSalesRangeMeta;
429
+ private readBookingRemoteCache;
430
+ private writeBookingRemoteCache;
431
+ private toOrderIdKey;
432
+ private markBookingRemoteCacheAllStale;
433
+ private buildBookingResponse;
434
+ private notifyBookingRemoteSubscribersByCacheKey;
435
+ private syncBookingRemoteCacheFromOrderChanges;
436
+ /**
437
+ * 非本地窗口的订单查询:走真实 API。
438
+ */
439
+ private fetchOrderListFromAPI;
440
+ /**
441
+ * 非今天的预约查询:通过 SSE 流式拉取订单,再做本地 booking 筛选展开
175
442
  */
176
443
  private fetchBookingListFromAPI;
177
444
  /**
@@ -184,6 +451,140 @@ declare class Server {
184
451
  * 转发到资源模块去
185
452
  */
186
453
  private handleResourceList;
454
+ /**
455
+ * 代理刷新 / 合并订单到本地(单笔 / 批量二合一):
456
+ * - 入参(GET query 或 data 任一):
457
+ * - `order_id`:单笔模式,原有行为
458
+ * - `order_ids`:批量模式,逗号分隔的 id 列表(如 `?order_ids=1,2,3`),数组也兼容
459
+ * - 同时存在时优先批量
460
+ * - 单笔流程:后端 /order/sales/{id}?with[]=all → 本地有则覆盖、无则 merge → 落 SQLite → emit onOrdersChanged
461
+ * - 批量流程:并发拉取每笔详情 → 一次性 `upsertOrdersFromRemote` 合并写入 → 仅 emit 一次 onOrdersChanged,
462
+ * 单笔失败不影响其他成功项;返回 { overwritten, inserted, failed }
463
+ * - 监听级联:onOrdersChanged 触发订单 / 预约 / bookingRemoteCache 三路订阅者推送
464
+ *
465
+ * @example 单笔:GET /update/localOrder?order_id=96971
466
+ * @example 批量:GET /update/localOrder?order_ids=96971,96972,96973
467
+ */
468
+ private handleUpdateLocalOrder;
469
+ private handleOrderSalesCheckout;
470
+ private handleOrderCheckout;
471
+ private getDeviceTaskPlugin;
472
+ private getIdGeneratorPlugin;
473
+ private getAppData;
474
+ private getSmallTicketShopInfo;
475
+ private taskOk;
476
+ private taskFail;
477
+ private taskTimeout;
478
+ private getShortNumberOrDeviceId;
479
+ private buildCheckoutTaskIdempotencyKey;
480
+ private isBlankCheckoutValue;
481
+ private isLocalCheckoutOrderId;
482
+ private normalizeCheckoutSubmitData;
483
+ private ensureCheckoutOrderNumbers;
484
+ private dispatchCheckoutSyncTask;
485
+ private dispatchPrintOtherReceiptTask;
486
+ private buildPrintOtherReceiptIdempotencyKey;
487
+ private getPrintOrderIdentity;
488
+ private dispatchLocalReceiptPrint;
489
+ private shouldLookupLocalPrintOrder;
490
+ private getLocalPrintOrderLookup;
491
+ private handleLocalPrintOrder;
492
+ private handleMachinecodeBatchMeta;
493
+ private resolveMachinecodeBatchMetadataLookup;
494
+ private syncMachinecodeRedeemStatusToLocalOrder;
495
+ private handleOrderCheckoutSubmit;
496
+ private handleSyncCheckoutSubmit;
497
+ private handlePendingSyncCheckoutOrder;
498
+ private buildPendingSyncCheckoutOrder;
499
+ private shouldBuildSmallTicketData;
500
+ private shouldPrintSyncedOrder;
501
+ private hasPaymentStatus;
502
+ private isSalesOrderFullyPaid;
503
+ private sumPaidOrderPayments;
504
+ private toAmountNumber;
505
+ private buildSmallTicketProductMap;
506
+ private collectSalesDetailProductIds;
507
+ private buildSalesDetailProductSnapshotMap;
508
+ private withProductCatalogSnapshots;
509
+ private withBundleCatalogSnapshots;
510
+ private withSalesDetailProductSnapshots;
511
+ private withPendingSyncProductTitles;
512
+ private buildProductTitleSnapshot;
513
+ private getProductTitleSnapshotCurrentLocale;
514
+ private normalizeProductTitleSnapshotLocale;
515
+ private resolveProductTitleValue;
516
+ private canAssignStringProductTitleToLocale;
517
+ private hasCjkText;
518
+ private resolveFirstProductTitleValue;
519
+ private getPaymentCodeKey;
520
+ private isBlankPaymentName;
521
+ private shouldLookupPaymentMethodNameByCode;
522
+ private enrichPaymentNamesByCode;
523
+ private withLocalSmallTicketData;
524
+ private handleOrderSalesDetail;
525
+ /**
526
+ * 解析 order_ids 入参,兼容 url query / data 字段、字符串(csv) / 数组两种形态。
527
+ * 自动 trim、去空、按字符串去重,输出归一化后的字符串数组。
528
+ *
529
+ * @example
530
+ * // url: /update/localOrder?order_ids=1,2,2,, → ['1','2']
531
+ * this.parseOrderIdsParam(url, undefined)
532
+ *
533
+ * @example
534
+ * // data: { order_ids: [1, '2', null] } → ['1','2']
535
+ * this.parseOrderIdsParam('', { order_ids: [1, '2', null] })
536
+ */
537
+ private parseOrderIdsParam;
538
+ /**
539
+ * 批量代理刷新 / 合并订单到本地:并发拉详情 → 单次合并 → 单次 emit。
540
+ * - 单笔失败不影响其他成功项
541
+ * - 没有任何成功项时不触发 emit / 落库
542
+ *
543
+ * @example
544
+ * await this.handleUpdateLocalOrdersBatch(['96971', '96972'])
545
+ */
546
+ private handleUpdateLocalOrdersBatch;
547
+ /**
548
+ * 从 url 中解析指定 query 参数,兼容相对路径与绝对路径
549
+ */
550
+ private extractQueryParam;
551
+ private extractOrderSalesDetailLookup;
552
+ private shouldForceRemoteSalesDetail;
553
+ private buildOrderSalesDetailBackendPath;
554
+ private extractOrderDataFromCheckoutResponse;
555
+ private getCheckoutExternalSaleNumber;
556
+ private buildCheckoutSyncSuccessPatch;
557
+ private buildSyncedOrderForPrint;
558
+ private isMergeableCheckoutOrder;
559
+ private normalizeCheckoutResponse;
560
+ private withSyncedOrderIdInCheckoutResponse;
561
+ private isCheckoutResponseRejected;
562
+ private getUnknownErrorMessage;
563
+ private normalizeUnknownError;
564
+ private safeJsonClone;
565
+ private extractBackendErrorResponse;
566
+ private isExplicitBackendErrorResponse;
567
+ /**
568
+ * 从 url 或路由 path 解析 pathname(不含 query,去掉末尾 /)
569
+ */
570
+ private parseRequestPath;
571
+ /**
572
+ * 解析平面图 GET 路径为查询上下文
573
+ */
574
+ private resolveFloorPlanQueryContext;
575
+ /**
576
+ * GET /shop/schedule/floor-plan* 前缀路由:读本地 store;支持 subscriberId + callback 订阅更新
577
+ */
578
+ private handleFloorPlanGet;
579
+ private computeFloorPlanQueryResult;
580
+ /**
581
+ * 平面图数据变更后向所有 GET 订阅者推送最新结果
582
+ */
583
+ private recomputeAndNotifyFloorPlanQuery;
584
+ /**
585
+ * 取消平面图 GET 订阅(也可走 GET .../unsubscribe + subscriberId)
586
+ */
587
+ removeFloorPlanQuerySubscriber(subscriberId?: string): void;
187
588
  /**
188
589
  * 取消预约列表查询订阅(HTTP 路由入口)
189
590
  */
@@ -198,6 +599,27 @@ declare class Server {
198
599
  * 从订单中展开 bookings,再按条件筛选 + 分页
199
600
  */
200
601
  private computeBookingQueryResult;
602
+ /**
603
+ * 规范商品扩展类型过滤参数。
604
+ *
605
+ * @example
606
+ * const types = this.normalizeProductExtensionTypes(['product_add_time']);
607
+ */
608
+ private normalizeProductExtensionTypes;
609
+ /**
610
+ * 请求包含 product_add_time 时,按传入 extension_type 数组配置过滤商品。
611
+ *
612
+ * @example
613
+ * const list = this.filterProductsByExtensionTypes(products, ['product_add_time']);
614
+ */
615
+ private filterProductsByExtensionTypes;
616
+ /**
617
+ * 判断本次查询是否需要跳过餐牌过滤,直接按扩展类型拉商品。
618
+ *
619
+ * @example
620
+ * const skipMenu = this.shouldQueryProductsByExtensionTypes(['product_add_time']);
621
+ */
622
+ private shouldQueryProductsByExtensionTypes;
201
623
  /**
202
624
  * 商品查询的核心计算逻辑(编排 Products、Menu、Schedule 模块)
203
625
  * 供 handleProductQuery 首次返回及 pubsub 变更推送复用
@@ -206,6 +628,12 @@ declare class Server {
206
628
  * @param options.changedIds 变更的商品 IDs,用于增量更新价格缓存
207
629
  */
208
630
  private computeProductQueryResult;
631
+ /**
632
+ * 构建商品格式化上下文。
633
+ *
634
+ * 智能定价条件使用全量 menuList/scheduleList;Product Query 顶层参数只保留筛选商品集合所需字段。
635
+ */
636
+ private buildProductFormatterContext;
209
637
  /**
210
638
  * 数据变更后,遍历所有订阅者重新计算查询结果并通过 callback 推送
211
639
  * 由 ProductsModule 的 onProductsSyncCompleted 事件触发
@@ -217,18 +645,44 @@ declare class Server {
217
645
  * 订单数据变更后,遍历订阅者重新计算并通过 callback 推送
218
646
  */
219
647
  private recomputeAndNotifyOrderQuery;
648
+ /**
649
+ * 订单变更后通知 sales 搜索订阅者。
650
+ * 仅回传当前查询已返回订单号集合中的变更订单。
651
+ *
652
+ * @example
653
+ * this.notifySalesSearchSubscribers({ list: [], changedOrders: [order], source: 'pubsub.bodyUpsert' })
654
+ */
655
+ private notifySalesSearchSubscribers;
656
+ /**
657
+ * 从订单变更事件中提取明确 delta。
658
+ *
659
+ * @example
660
+ * const list = this.extractChangedOrdersFromPayload(payload)
661
+ */
662
+ private extractChangedOrdersFromPayload;
663
+ /**
664
+ * 构建与当前搜索接口一致的 delta 响应。
665
+ *
666
+ * @example
667
+ * const response = this.buildSalesSearchDeltaResponse(subscriber, [order])
668
+ */
669
+ private buildSalesSearchDeltaResponse;
670
+ /**
671
+ * 构建聚合搜索接口的 sales 分组 delta 响应。
672
+ *
673
+ * @example
674
+ * const response = this.buildAggregateSalesSearchDeltaResponse(subscriber, [order])
675
+ */
676
+ private buildAggregateSalesSearchDeltaResponse;
220
677
  /**
221
678
  * 预约数据变更后,遍历订阅者重新计算并通过 callback 推送
222
679
  */
223
680
  private recomputeAndNotifyBookingQuery;
224
681
  /**
225
- * 根据餐牌配置过滤商品
226
- * @param products 所有商品列表
227
- * @param activeMenuList 生效的餐牌列表
228
- * @returns 过滤后的商品列表
682
+ * 根据餐牌配置提取轻量商品范围。
229
683
  * @private
230
684
  */
231
- private filterProductsByMenuConfig;
685
+ private getProductScopeByMenuConfig;
232
686
  /**
233
687
  * 记录信息日志
234
688
  * @param title 日志标题