@pisell/pisellos 2.1.171 → 2.1.172

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 (230) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +1 -3
  3. package/dist/model/strategy/adapter/index.d.ts +0 -4
  4. package/dist/model/strategy/adapter/index.js +1 -5
  5. package/dist/model/strategy/adapter/promotion/evaluator.js +99 -26
  6. package/dist/model/strategy/adapter/walletPass/evaluator.d.ts +2 -0
  7. package/dist/model/strategy/adapter/walletPass/evaluator.js +61 -8
  8. package/dist/model/strategy/adapter/walletPass/locales.js +12 -3
  9. package/dist/model/strategy/engine.d.ts +18 -5
  10. package/dist/model/strategy/engine.js +145 -45
  11. package/dist/model/strategy/type.d.ts +17 -0
  12. package/dist/model/strategy/type.js +4 -0
  13. package/dist/modules/Cart/types.d.ts +2 -0
  14. package/dist/modules/Cart/utils/cartProduct.js +56 -25
  15. package/dist/modules/Cart/utils/changePrice.js +9 -16
  16. package/dist/modules/Discount/index.d.ts +4 -13
  17. package/dist/modules/Discount/index.js +12 -124
  18. package/dist/modules/Discount/types.d.ts +18 -13
  19. package/dist/modules/Order/index.d.ts +1 -67
  20. package/dist/modules/Order/index.js +30 -918
  21. package/dist/modules/Order/types.d.ts +12 -176
  22. package/dist/modules/Order/types.js +0 -2
  23. package/dist/modules/Order/utils.d.ts +0 -118
  24. package/dist/modules/Order/utils.js +2 -586
  25. package/dist/modules/Payment/index.d.ts +2 -1
  26. package/dist/modules/Payment/index.js +10 -7
  27. package/dist/modules/Payment/utils.js +3 -0
  28. package/dist/modules/Payment/walletpass.d.ts +23 -0
  29. package/dist/modules/Payment/walletpass.js +191 -95
  30. package/dist/modules/Product/utils.js +2 -2
  31. package/dist/modules/ProductList/index.d.ts +2 -4
  32. package/dist/modules/ProductList/index.js +12 -24
  33. package/dist/modules/Rules/index.d.ts +9 -5
  34. package/dist/modules/Rules/index.js +669 -173
  35. package/dist/modules/Rules/types.d.ts +2 -0
  36. package/dist/modules/Schedule/getDateIsInSchedule.js +18 -16
  37. package/dist/modules/Schedule/utils.d.ts +1 -1
  38. package/dist/modules/Summary/types.d.ts +2 -0
  39. package/dist/modules/Summary/utils.d.ts +9 -3
  40. package/dist/modules/Summary/utils.js +57 -67
  41. package/dist/modules/index.d.ts +0 -4
  42. package/dist/modules/index.js +1 -5
  43. package/dist/plugins/window.d.ts +2 -0
  44. package/dist/solution/BookingByStep/index.d.ts +3 -2
  45. package/dist/solution/BookingByStep/index.js +43 -46
  46. package/dist/solution/BookingByStep/types.d.ts +1 -3
  47. package/dist/solution/BookingByStep/types.js +1 -5
  48. package/dist/solution/BookingByStep/utils/timeslots.d.ts +1 -3
  49. package/dist/solution/BookingByStep/utils/timeslots.js +12 -19
  50. package/dist/solution/Checkout/index.js +2 -0
  51. package/dist/solution/ShopDiscount/index.d.ts +2 -3
  52. package/dist/solution/ShopDiscount/index.js +60 -62
  53. package/dist/solution/ShopDiscount/types.d.ts +1 -1
  54. package/dist/solution/ShopDiscount/types.js +2 -1
  55. package/dist/solution/ShopDiscount/utils.js +26 -12
  56. package/dist/solution/index.d.ts +0 -2
  57. package/dist/solution/index.js +1 -3
  58. package/lib/index.d.ts +1 -1
  59. package/lib/index.js +3 -4
  60. package/lib/model/strategy/adapter/index.d.ts +0 -4
  61. package/lib/model/strategy/adapter/index.js +2 -13
  62. package/lib/model/strategy/adapter/promotion/evaluator.js +57 -8
  63. package/lib/model/strategy/adapter/walletPass/evaluator.d.ts +2 -0
  64. package/lib/model/strategy/adapter/walletPass/evaluator.js +34 -3
  65. package/lib/model/strategy/adapter/walletPass/locales.js +12 -3
  66. package/lib/model/strategy/engine.d.ts +18 -5
  67. package/lib/model/strategy/engine.js +85 -21
  68. package/lib/model/strategy/type.d.ts +17 -0
  69. package/lib/modules/Cart/types.d.ts +2 -0
  70. package/lib/modules/Cart/utils/cartProduct.js +39 -12
  71. package/lib/modules/Cart/utils/changePrice.js +9 -13
  72. package/lib/modules/Discount/index.d.ts +4 -13
  73. package/lib/modules/Discount/index.js +5 -76
  74. package/lib/modules/Discount/types.d.ts +18 -13
  75. package/lib/modules/Order/index.d.ts +1 -67
  76. package/lib/modules/Order/index.js +1 -525
  77. package/lib/modules/Order/types.d.ts +12 -176
  78. package/lib/modules/Order/utils.d.ts +0 -118
  79. package/lib/modules/Order/utils.js +2 -483
  80. package/lib/modules/Payment/index.d.ts +2 -1
  81. package/lib/modules/Payment/index.js +1 -0
  82. package/lib/modules/Payment/utils.js +3 -0
  83. package/lib/modules/Payment/walletpass.d.ts +23 -0
  84. package/lib/modules/Payment/walletpass.js +94 -17
  85. package/lib/modules/Product/utils.js +2 -2
  86. package/lib/modules/ProductList/index.d.ts +2 -4
  87. package/lib/modules/ProductList/index.js +39 -46
  88. package/lib/modules/Rules/index.d.ts +9 -5
  89. package/lib/modules/Rules/index.js +776 -292
  90. package/lib/modules/Rules/types.d.ts +2 -0
  91. package/lib/modules/Schedule/getDateIsInSchedule.js +11 -13
  92. package/lib/modules/Schedule/utils.d.ts +1 -1
  93. package/lib/modules/Summary/types.d.ts +2 -0
  94. package/lib/modules/Summary/utils.d.ts +9 -3
  95. package/lib/modules/Summary/utils.js +34 -45
  96. package/lib/modules/index.d.ts +0 -4
  97. package/lib/modules/index.js +1 -9
  98. package/lib/plugins/window.d.ts +2 -0
  99. package/lib/solution/BookingByStep/index.d.ts +3 -2
  100. package/lib/solution/BookingByStep/index.js +4 -6
  101. package/lib/solution/BookingByStep/types.d.ts +1 -3
  102. package/lib/solution/BookingByStep/types.js +0 -10
  103. package/lib/solution/BookingByStep/utils/timeslots.d.ts +1 -3
  104. package/lib/solution/BookingByStep/utils/timeslots.js +11 -19
  105. package/lib/solution/Checkout/index.js +2 -0
  106. package/lib/solution/ShopDiscount/index.d.ts +2 -3
  107. package/lib/solution/ShopDiscount/index.js +27 -22
  108. package/lib/solution/ShopDiscount/types.d.ts +1 -1
  109. package/lib/solution/ShopDiscount/utils.js +10 -6
  110. package/lib/solution/index.d.ts +0 -2
  111. package/lib/solution/index.js +1 -5
  112. package/package.json +2 -2
  113. package/dist/apis/picoding.d.ts +0 -0
  114. package/dist/apis/picoding.js +0 -1
  115. package/dist/model/strategy/adapter/dataVariant/adapter.d.ts +0 -50
  116. package/dist/model/strategy/adapter/dataVariant/adapter.js +0 -167
  117. package/dist/model/strategy/adapter/dataVariant/evaluator.d.ts +0 -89
  118. package/dist/model/strategy/adapter/dataVariant/evaluator.js +0 -780
  119. package/dist/model/strategy/adapter/dataVariant/examples.d.ts +0 -39
  120. package/dist/model/strategy/adapter/dataVariant/examples.js +0 -277
  121. package/dist/model/strategy/adapter/dataVariant/index.d.ts +0 -4
  122. package/dist/model/strategy/adapter/dataVariant/index.js +0 -4
  123. package/dist/model/strategy/adapter/dataVariant/type.d.ts +0 -148
  124. package/dist/model/strategy/adapter/dataVariant/type.js +0 -54
  125. package/dist/modules/OpenData/index.d.ts +0 -24
  126. package/dist/modules/OpenData/index.js +0 -173
  127. package/dist/modules/OpenData/types.d.ts +0 -73
  128. package/dist/modules/OpenData/types.js +0 -1
  129. package/dist/modules/OpenData/utils.d.ts +0 -2
  130. package/dist/modules/OpenData/utils.js +0 -75
  131. package/dist/modules/Quotation/index.d.ts +0 -48
  132. package/dist/modules/Quotation/index.js +0 -248
  133. package/dist/modules/Quotation/types.d.ts +0 -42
  134. package/dist/modules/Quotation/types.js +0 -1
  135. package/dist/modules/SalesSummary/index.d.ts +0 -63
  136. package/dist/modules/SalesSummary/index.js +0 -174
  137. package/dist/modules/SalesSummary/types.d.ts +0 -60
  138. package/dist/modules/SalesSummary/types.js +0 -1
  139. package/dist/modules/SalesSummary/utils.d.ts +0 -30
  140. package/dist/modules/SalesSummary/utils.js +0 -480
  141. package/dist/modules/ScanOrderLogger/index.d.ts +0 -23
  142. package/dist/modules/ScanOrderLogger/index.js +0 -174
  143. package/dist/modules/ScanOrderLogger/providers/feishu.d.ts +0 -2
  144. package/dist/modules/ScanOrderLogger/providers/feishu.js +0 -221
  145. package/dist/modules/ScanOrderLogger/providers/grafana.d.ts +0 -2
  146. package/dist/modules/ScanOrderLogger/providers/grafana.js +0 -50
  147. package/dist/modules/ScanOrderLogger/types.d.ts +0 -53
  148. package/dist/modules/ScanOrderLogger/types.js +0 -1
  149. package/dist/solution/ScanOrder/index.d.ts +0 -158
  150. package/dist/solution/ScanOrder/index.js +0 -3474
  151. package/dist/solution/ScanOrder/types.d.ts +0 -306
  152. package/dist/solution/ScanOrder/types.js +0 -35
  153. package/dist/solution/ScanOrder/utils.d.ts +0 -172
  154. package/dist/solution/ScanOrder/utils.js +0 -796
  155. package/dist/solution/VenueBooking/index.d.ts +0 -262
  156. package/dist/solution/VenueBooking/index.js +0 -3991
  157. package/dist/solution/VenueBooking/sales-section-4-annotated.json +0 -343
  158. package/dist/solution/VenueBooking/types.d.ts +0 -156
  159. package/dist/solution/VenueBooking/types.js +0 -22
  160. package/dist/solution/VenueBooking/utils/dateSummary.d.ts +0 -11
  161. package/dist/solution/VenueBooking/utils/dateSummary.js +0 -91
  162. package/dist/solution/VenueBooking/utils/resource.d.ts +0 -14
  163. package/dist/solution/VenueBooking/utils/resource.js +0 -131
  164. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +0 -32
  165. package/dist/solution/VenueBooking/utils/slotMerge.js +0 -233
  166. package/dist/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  167. package/dist/solution/VenueBooking/utils/smartPricing.js +0 -233
  168. package/dist/solution/VenueBooking/utils/timeSlot.d.ts +0 -34
  169. package/dist/solution/VenueBooking/utils/timeSlot.js +0 -458
  170. package/dist/solution/VenueBooking/utils.d.ts +0 -1
  171. package/dist/solution/VenueBooking/utils.js +0 -1
  172. package/lib/apis/picoding.d.ts +0 -0
  173. package/lib/apis/picoding.js +0 -0
  174. package/lib/model/strategy/adapter/dataVariant/adapter.d.ts +0 -50
  175. package/lib/model/strategy/adapter/dataVariant/adapter.js +0 -149
  176. package/lib/model/strategy/adapter/dataVariant/evaluator.d.ts +0 -89
  177. package/lib/model/strategy/adapter/dataVariant/evaluator.js +0 -583
  178. package/lib/model/strategy/adapter/dataVariant/examples.d.ts +0 -39
  179. package/lib/model/strategy/adapter/dataVariant/examples.js +0 -293
  180. package/lib/model/strategy/adapter/dataVariant/index.d.ts +0 -4
  181. package/lib/model/strategy/adapter/dataVariant/index.js +0 -38
  182. package/lib/model/strategy/adapter/dataVariant/type.d.ts +0 -148
  183. package/lib/model/strategy/adapter/dataVariant/type.js +0 -31
  184. package/lib/modules/OpenData/index.d.ts +0 -24
  185. package/lib/modules/OpenData/index.js +0 -119
  186. package/lib/modules/OpenData/types.d.ts +0 -73
  187. package/lib/modules/OpenData/types.js +0 -17
  188. package/lib/modules/OpenData/utils.d.ts +0 -2
  189. package/lib/modules/OpenData/utils.js +0 -111
  190. package/lib/modules/Quotation/index.d.ts +0 -48
  191. package/lib/modules/Quotation/index.js +0 -152
  192. package/lib/modules/Quotation/types.d.ts +0 -42
  193. package/lib/modules/Quotation/types.js +0 -17
  194. package/lib/modules/SalesSummary/index.d.ts +0 -63
  195. package/lib/modules/SalesSummary/index.js +0 -105
  196. package/lib/modules/SalesSummary/types.d.ts +0 -60
  197. package/lib/modules/SalesSummary/types.js +0 -17
  198. package/lib/modules/SalesSummary/utils.d.ts +0 -30
  199. package/lib/modules/SalesSummary/utils.js +0 -420
  200. package/lib/modules/ScanOrderLogger/index.d.ts +0 -23
  201. package/lib/modules/ScanOrderLogger/index.js +0 -147
  202. package/lib/modules/ScanOrderLogger/providers/feishu.d.ts +0 -2
  203. package/lib/modules/ScanOrderLogger/providers/feishu.js +0 -157
  204. package/lib/modules/ScanOrderLogger/providers/grafana.d.ts +0 -2
  205. package/lib/modules/ScanOrderLogger/providers/grafana.js +0 -52
  206. package/lib/modules/ScanOrderLogger/types.d.ts +0 -53
  207. package/lib/modules/ScanOrderLogger/types.js +0 -17
  208. package/lib/solution/ScanOrder/index.d.ts +0 -158
  209. package/lib/solution/ScanOrder/index.js +0 -2135
  210. package/lib/solution/ScanOrder/types.d.ts +0 -306
  211. package/lib/solution/ScanOrder/types.js +0 -36
  212. package/lib/solution/ScanOrder/utils.d.ts +0 -172
  213. package/lib/solution/ScanOrder/utils.js +0 -658
  214. package/lib/solution/VenueBooking/index.d.ts +0 -262
  215. package/lib/solution/VenueBooking/index.js +0 -2394
  216. package/lib/solution/VenueBooking/sales-section-4-annotated.json +0 -343
  217. package/lib/solution/VenueBooking/types.d.ts +0 -156
  218. package/lib/solution/VenueBooking/types.js +0 -45
  219. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +0 -11
  220. package/lib/solution/VenueBooking/utils/dateSummary.js +0 -105
  221. package/lib/solution/VenueBooking/utils/resource.d.ts +0 -14
  222. package/lib/solution/VenueBooking/utils/resource.js +0 -92
  223. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +0 -32
  224. package/lib/solution/VenueBooking/utils/slotMerge.js +0 -236
  225. package/lib/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  226. package/lib/solution/VenueBooking/utils/smartPricing.js +0 -180
  227. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +0 -34
  228. package/lib/solution/VenueBooking/utils/timeSlot.js +0 -343
  229. package/lib/solution/VenueBooking/utils.d.ts +0 -1
  230. package/lib/solution/VenueBooking/utils.js +0 -69
@@ -1,147 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
- // src/modules/ScanOrderLogger/index.ts
31
- var ScanOrderLogger_exports = {};
32
- __export(ScanOrderLogger_exports, {
33
- ScanOrderLoggerModule: () => ScanOrderLoggerModule
34
- });
35
- module.exports = __toCommonJS(ScanOrderLogger_exports);
36
- var import_dayjs = __toESM(require("dayjs"));
37
- var import_BaseModule = require("../BaseModule");
38
- var import_feishu = require("./providers/feishu");
39
- var import_grafana = require("./providers/grafana");
40
- __reExport(ScanOrderLogger_exports, require("./types"), module.exports);
41
- var defaultProviderConfig = {
42
- feishu: {
43
- webhook: "https://open.feishu.cn/open-apis/bot/v2/hook/REPLACE_ME"
44
- },
45
- grafana: {
46
- endpoint: "https://grafana.example.com/collect"
47
- }
48
- };
49
- var providerMap = {
50
- feishu: import_feishu.feishuLoggerProvider,
51
- grafana: import_grafana.grafanaLoggerProvider
52
- };
53
- var ScanOrderLoggerModule = class extends import_BaseModule.BaseModule {
54
- constructor() {
55
- super(...arguments);
56
- this.defaultName = "scanOrderLogger";
57
- this.defaultVersion = "1.0.0";
58
- }
59
- async initialize(core, options = {}) {
60
- var _a, _b, _c;
61
- this.core = core;
62
- this.store = options.store;
63
- this.window = core.getPlugin("window") || void 0;
64
- const provider = ((_a = options.otherParams) == null ? void 0 : _a.provider) || "feishu";
65
- const providerConfig = ((_b = options.otherParams) == null ? void 0 : _b.providerConfig) || {};
66
- const context = ((_c = options.otherParams) == null ? void 0 : _c.context) || {};
67
- this.store.provider = provider;
68
- this.store.providerConfig = {
69
- ...defaultProviderConfig,
70
- ...providerConfig,
71
- feishu: {
72
- ...defaultProviderConfig.feishu,
73
- ...providerConfig.feishu || {}
74
- },
75
- grafana: {
76
- ...defaultProviderConfig.grafana,
77
- ...providerConfig.grafana || {}
78
- }
79
- };
80
- this.store.context = context;
81
- }
82
- setContext(context) {
83
- this.store.context = {
84
- ...this.store.context,
85
- ...context
86
- };
87
- }
88
- setProvider(provider) {
89
- this.store.provider = provider;
90
- }
91
- setProviderConfig(providerConfig) {
92
- this.store.providerConfig = {
93
- ...this.store.providerConfig,
94
- ...providerConfig,
95
- feishu: {
96
- ...this.store.providerConfig.feishu || {},
97
- ...providerConfig.feishu || {}
98
- },
99
- grafana: {
100
- ...this.store.providerConfig.grafana || {},
101
- ...providerConfig.grafana || {}
102
- }
103
- };
104
- }
105
- getCurrentHost() {
106
- var _a, _b;
107
- const host = (_b = (_a = this.window) == null ? void 0 : _a.location) == null ? void 0 : _b.host;
108
- if (typeof host === "string" && host.length > 0)
109
- return host;
110
- return void 0;
111
- }
112
- buildRecord(params) {
113
- const host = this.getCurrentHost();
114
- return {
115
- level: params.level || "info",
116
- title: params.title,
117
- timestamp: params.timestamp || (0, import_dayjs.default)().format("YYYY-MM-DD HH:mm:ss"),
118
- payload: params.payload || {},
119
- extra: params.extra || {},
120
- context: {
121
- ...this.store.context || {},
122
- ...host ? { host } : {}
123
- }
124
- };
125
- }
126
- async addLog(params) {
127
- if (!params.title) {
128
- console.warn("[ScanOrderLogger] 缺少日志标题,已跳过");
129
- return;
130
- }
131
- const provider = providerMap[this.store.provider] || import_feishu.feishuLoggerProvider;
132
- const record = this.buildRecord(params);
133
- try {
134
- await provider.send({
135
- record,
136
- providerConfig: this.store.providerConfig
137
- });
138
- } catch (error) {
139
- console.warn("[ScanOrderLogger] 日志上报失败", error);
140
- }
141
- }
142
- };
143
- // Annotate the CommonJS export names for ESM import in node:
144
- 0 && (module.exports = {
145
- ScanOrderLoggerModule,
146
- ...require("./types")
147
- });
@@ -1,2 +0,0 @@
1
- import { ScanOrderLoggerProvider } from '../types';
2
- export declare const feishuLoggerProvider: ScanOrderLoggerProvider;
@@ -1,157 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
-
19
- // src/modules/ScanOrderLogger/providers/feishu.ts
20
- var feishu_exports = {};
21
- __export(feishu_exports, {
22
- feishuLoggerProvider: () => feishuLoggerProvider
23
- });
24
- module.exports = __toCommonJS(feishu_exports);
25
- var DEFAULT_THROTTLE_MS = 3e3;
26
- var pendingQueue = [];
27
- var flushTimer = null;
28
- var cachedProviderConfig;
29
- function safeStringify(value) {
30
- if (value === void 0 || value === null)
31
- return "";
32
- if (typeof value === "string")
33
- return value;
34
- if (typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") {
35
- return String(value);
36
- }
37
- try {
38
- return JSON.stringify(value);
39
- } catch (error) {
40
- return `[unserializable: ${String(error)}]`;
41
- }
42
- }
43
- function isWebhookUsable(webhook) {
44
- if (!webhook)
45
- return false;
46
- if (webhook.includes("REPLACE_ME"))
47
- return false;
48
- return true;
49
- }
50
- function buildRecordSegments(record) {
51
- const context = record.context || {};
52
- return [
53
- [{ tag: "text", text: `[${record.level}] ${record.timestamp} ${record.title}
54
- ` }],
55
- [{ tag: "text", text: `缓存标识: ${safeStringify(context.cacheId)}
56
- ` }],
57
- [{ tag: "text", text: `日志来源: ${safeStringify(context)}
58
- ` }],
59
- [{ tag: "text", text: `日志内容: ${safeStringify(record.payload)}
60
- ` }],
61
- [{ tag: "text", text: `扩展信息: ${safeStringify(record.extra)}
62
- ` }],
63
- [{ tag: "text", text: "------\n" }]
64
- ];
65
- }
66
- function buildFeishuBody(records) {
67
- const title = records.length === 1 ? records[0].title : `ScanOrder 日志批量 (${records.length} 条)`;
68
- const content = [];
69
- records.forEach((record) => {
70
- buildRecordSegments(record).forEach((segment) => content.push(segment));
71
- });
72
- return JSON.stringify({
73
- msg_type: "post",
74
- content: JSON.stringify({
75
- post: {
76
- zh_cn: {
77
- title,
78
- content
79
- }
80
- }
81
- })
82
- });
83
- }
84
- async function postToFeishu(webhook, body) {
85
- await fetch(webhook, {
86
- method: "POST",
87
- headers: {
88
- "Content-Type": "application/json"
89
- },
90
- body
91
- });
92
- }
93
- async function flushQueue() {
94
- var _a;
95
- flushTimer = null;
96
- if (!pendingQueue.length)
97
- return;
98
- const records = pendingQueue.splice(0, pendingQueue.length);
99
- const webhook = (_a = cachedProviderConfig == null ? void 0 : cachedProviderConfig.feishu) == null ? void 0 : _a.webhook;
100
- if (!isWebhookUsable(webhook)) {
101
- return;
102
- }
103
- if (typeof fetch !== "function") {
104
- console.warn("[ScanOrderLogger] 当前环境不支持 fetch,跳过 Feishu 日志批量上报");
105
- return;
106
- }
107
- try {
108
- await postToFeishu(webhook, buildFeishuBody(records));
109
- } catch (error) {
110
- console.warn("[ScanOrderLogger] Feishu 批量上报失败", error);
111
- }
112
- }
113
- var feishuLoggerProvider = {
114
- async send(payload) {
115
- var _a, _b, _c, _d, _e, _f;
116
- cachedProviderConfig = payload.providerConfig;
117
- const webhook = (_b = (_a = payload.providerConfig) == null ? void 0 : _a.feishu) == null ? void 0 : _b.webhook;
118
- const errorHook = (_d = (_c = payload.providerConfig) == null ? void 0 : _c.feishu) == null ? void 0 : _d.errorHook;
119
- if (typeof fetch !== "function") {
120
- console.warn("[ScanOrderLogger] 当前环境不支持 fetch,跳过 Feishu 日志上报");
121
- return;
122
- }
123
- if (payload.record.level === "error" && isWebhookUsable(errorHook)) {
124
- try {
125
- await postToFeishu(errorHook, buildFeishuBody([payload.record]));
126
- } catch (error) {
127
- console.warn("[ScanOrderLogger] Feishu errorHook 上报失败", error);
128
- }
129
- return;
130
- }
131
- if (!webhook) {
132
- console.warn("[ScanOrderLogger] Feishu webhook 未配置,跳过日志上报");
133
- return;
134
- }
135
- if (!isWebhookUsable(webhook))
136
- return;
137
- const throttleMs = ((_f = (_e = payload.providerConfig) == null ? void 0 : _e.feishu) == null ? void 0 : _f.throttleMs) ?? DEFAULT_THROTTLE_MS;
138
- if (throttleMs <= 0) {
139
- try {
140
- await postToFeishu(webhook, buildFeishuBody([payload.record]));
141
- } catch (error) {
142
- console.warn("[ScanOrderLogger] Feishu 日志上报失败", error);
143
- }
144
- return;
145
- }
146
- pendingQueue.push(payload.record);
147
- if (!flushTimer) {
148
- flushTimer = setTimeout(() => {
149
- void flushQueue();
150
- }, throttleMs);
151
- }
152
- }
153
- };
154
- // Annotate the CommonJS export names for ESM import in node:
155
- 0 && (module.exports = {
156
- feishuLoggerProvider
157
- });
@@ -1,2 +0,0 @@
1
- import { ScanOrderLoggerProvider } from '../types';
2
- export declare const grafanaLoggerProvider: ScanOrderLoggerProvider;
@@ -1,52 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
-
19
- // src/modules/ScanOrderLogger/providers/grafana.ts
20
- var grafana_exports = {};
21
- __export(grafana_exports, {
22
- grafanaLoggerProvider: () => grafanaLoggerProvider
23
- });
24
- module.exports = __toCommonJS(grafana_exports);
25
- var grafanaLoggerProvider = {
26
- async send(payload) {
27
- var _a, _b, _c, _d;
28
- const endpoint = (_b = (_a = payload.providerConfig) == null ? void 0 : _a.grafana) == null ? void 0 : _b.endpoint;
29
- if (!endpoint) {
30
- console.warn("[ScanOrderLogger] Grafana endpoint 未配置,跳过日志上报");
31
- return;
32
- }
33
- if (typeof fetch !== "function") {
34
- console.warn("[ScanOrderLogger] 当前环境不支持 fetch,跳过 Grafana 日志上报");
35
- return;
36
- }
37
- await fetch(endpoint, {
38
- method: "POST",
39
- headers: {
40
- "Content-Type": "application/json",
41
- ...((_d = (_c = payload.providerConfig) == null ? void 0 : _c.grafana) == null ? void 0 : _d.headers) || {}
42
- },
43
- body: JSON.stringify({
44
- record: payload.record
45
- })
46
- });
47
- }
48
- };
49
- // Annotate the CommonJS export names for ESM import in node:
50
- 0 && (module.exports = {
51
- grafanaLoggerProvider
52
- });
@@ -1,53 +0,0 @@
1
- export type ScanOrderLogLevel = 'info' | 'warning' | 'error' | 'debug';
2
- export type ScanOrderLoggerProviderType = 'feishu' | 'grafana';
3
- export interface ScanOrderLoggerProviderFeishuConfig {
4
- webhook?: string;
5
- errorHook?: string;
6
- /**
7
- * 节流窗口毫秒数,默认 3000ms
8
- * - >0:首条日志进入队列并启动定时器,窗口结束后合并成一条 Feishu post 统一发送
9
- * - <=0:关闭节流,保持每条日志立即单独发送
10
- */
11
- throttleMs?: number;
12
- }
13
- export interface ScanOrderLoggerProviderGrafanaConfig {
14
- endpoint?: string;
15
- headers?: Record<string, string>;
16
- }
17
- export interface ScanOrderLoggerProviderConfig {
18
- feishu?: ScanOrderLoggerProviderFeishuConfig;
19
- grafana?: ScanOrderLoggerProviderGrafanaConfig;
20
- }
21
- export interface ScanOrderLoggerContext {
22
- cacheId?: string;
23
- solutionName?: string;
24
- moduleName?: string;
25
- [key: string]: any;
26
- }
27
- export interface ScanOrderLogInput {
28
- level?: ScanOrderLogLevel;
29
- title: string;
30
- payload?: Record<string, any>;
31
- extra?: Record<string, any>;
32
- timestamp?: string;
33
- }
34
- export interface ScanOrderLogRecord {
35
- level: ScanOrderLogLevel;
36
- title: string;
37
- timestamp: string;
38
- payload: Record<string, any>;
39
- extra: Record<string, any>;
40
- context: ScanOrderLoggerContext;
41
- }
42
- export interface ScanOrderLoggerDispatchPayload {
43
- record: ScanOrderLogRecord;
44
- providerConfig?: ScanOrderLoggerProviderConfig;
45
- }
46
- export interface ScanOrderLoggerProvider {
47
- send: (payload: ScanOrderLoggerDispatchPayload) => Promise<void>;
48
- }
49
- export interface ScanOrderLoggerState {
50
- provider: ScanOrderLoggerProviderType;
51
- providerConfig: ScanOrderLoggerProviderConfig;
52
- context: ScanOrderLoggerContext;
53
- }
@@ -1,17 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __copyProps = (to, from, except, desc) => {
6
- if (from && typeof from === "object" || typeof from === "function") {
7
- for (let key of __getOwnPropNames(from))
8
- if (!__hasOwnProp.call(to, key) && key !== except)
9
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
- }
11
- return to;
12
- };
13
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
14
-
15
- // src/modules/ScanOrderLogger/types.ts
16
- var types_exports = {};
17
- module.exports = __toCommonJS(types_exports);
@@ -1,158 +0,0 @@
1
- import { Module, ModuleOptions, PisellCore } from '../../types';
2
- import { BaseModule } from '../../modules/BaseModule';
3
- import { ScanOrderAddLogParams, ScanOrderAvailabilityInfo, ScanOrderAllowAddItemsInfo, ScanOrderOrderProduct, ScanOrderOrderProductIdentity, ScanOrderReservationResourceSelectInfo, ScanOrderScanCodeResult, ScanOrderSyncAdditionalOrderResult, ScanOrderTempOrder } from './types';
4
- import type { UpdateProductInOrderParams } from '../../modules/Order/types';
5
- import type { Discount } from '../../modules/Discount/types';
6
- import { type CartItemSummary, type PaxInfo, type QuantityCheckResult, type QuantityLimitResult } from '../../model/strategy/adapter/itemRule';
7
- import type { StrategyConfig } from '../../model/strategy/type';
8
- import type { ProductData } from '../../modules/Product/types';
9
- export * from './types';
10
- interface ScanOrderItemRuleRuntimeConfig {
11
- strategyConfigs?: StrategyConfig[];
12
- pax?: Partial<PaxInfo>;
13
- historicalItems?: CartItemSummary[];
14
- serviceType?: string;
15
- submissionIndex?: number;
16
- custom?: Record<string, any>;
17
- }
18
- export declare class ScanOrderImpl extends BaseModule implements Module {
19
- protected defaultName: string;
20
- protected defaultVersion: string;
21
- isSolution: boolean;
22
- private initializeOptions;
23
- private store;
24
- private otherParams;
25
- private cacheId;
26
- private window;
27
- private request;
28
- private itemRuleEvaluator;
29
- private itemRuleConfigs;
30
- private itemRuleConfigsPromise;
31
- private itemRulePrefillApplied;
32
- private itemRuleRuntimeConfig;
33
- /** 最近一次 checkResourceAvailable 从预约规则 link 拉取的商品快照 */
34
- private enabledReservationRuleProducts;
35
- private loginEffectDisposers;
36
- private customerLoginRefreshInFlight;
37
- private customerLoginRefreshIdInFlight;
38
- private static readonly PISELL1_LOGIN_SUCCESS;
39
- private getScanOrderLoggerContext;
40
- private safeStringify;
41
- private pickErrorMessage;
42
- private serializeError;
43
- private addScanOrderLog;
44
- private logMethodStart;
45
- private logMethodSuccess;
46
- private logMethodError;
47
- private assertProductListLoaded;
48
- addLog(params: ScanOrderAddLogParams): Promise<void>;
49
- private normalizeCustomerId;
50
- private resolveCustomerIdFromLoginPayload;
51
- private clearLoginEffectListeners;
52
- private registerLoginEffect;
53
- private registerCustomerLoginListeners;
54
- private refreshOrderMarketingAfterLogin;
55
- constructor(name?: string, version?: string);
56
- /** 与 `otherParams.cacheId` 一致,供宿主在 URL 变化时判断是否需要重新注册模块 */
57
- getCacheId(): string | undefined;
58
- private destroyRegisteredChildModules;
59
- initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
60
- destroy(): Promise<void>;
61
- retryInit(): Promise<void>;
62
- refresh(): Promise<void>;
63
- getStatus(): import("./types").ScanOrderStatus;
64
- getEntryContext(): import("./types").ScanOrderEntryContext | null;
65
- getConfig(): Record<string, any>;
66
- getItemRuleQuantityLimits(): QuantityLimitResult[];
67
- getCartValidationPassed(): boolean | null;
68
- getCartValidation(): {
69
- passed: boolean | null;
70
- failures: QuantityCheckResult[];
71
- };
72
- getTempOrder(): ScanOrderTempOrder | null;
73
- updateTempOrderNote(note: string): string;
74
- setPickupReferenceMode(mode: 'counter_pickup' | 'table_service'): {
75
- service_type: 'dine_in' | '';
76
- pickup_reference_mode: 'counter_pickup' | 'table_service';
77
- };
78
- setPickupRef(buzzer: string): string;
79
- private ensureTempOrder;
80
- addNewOrder(): Promise<ScanOrderTempOrder>;
81
- restoreOrder(): Promise<ScanOrderTempOrder>;
82
- getOrderProducts(): ScanOrderOrderProduct[];
83
- getSummary(): Promise<import("./types").ScanOrderSummary>;
84
- getDiscountList(): Discount[];
85
- scanCode(code: string, customerId?: number): Promise<ScanOrderScanCodeResult>;
86
- setDiscountSelected(params: {
87
- discountId: number;
88
- isSelected: boolean;
89
- }): Promise<void>;
90
- onCustomerLogin(params: {
91
- customerId: number;
92
- }): Promise<void>;
93
- private findReservationRuleResource;
94
- private buildScanOrderResourceMetadata;
95
- private prepareRetailAvailability;
96
- private buildSubmitPayloadEnhancer;
97
- submitScanOrder<T = any>(): Promise<T>;
98
- addProductToOrder(product: Partial<ScanOrderOrderProduct> & ScanOrderOrderProductIdentity): Promise<ScanOrderOrderProduct[]>;
99
- updateProductInOrder(params: UpdateProductInOrderParams): Promise<ScanOrderOrderProduct[]>;
100
- /**
101
- * 设置单行商品备注(与整单 `updateTempOrderNote` 区分)。
102
- * 多行同 SKU 时必须传入与删除/更新一致的 identity(如 `identity_key`)。
103
- */
104
- setOrderProductLineNote(identity: ScanOrderOrderProductIdentity, note: string): Promise<ScanOrderOrderProduct[]>;
105
- removeProductFromOrder(identity: ScanOrderOrderProductIdentity): Promise<ScanOrderOrderProduct[]>;
106
- private loadRuntimeConfigs;
107
- private syncItemRuleConfigsFromDineInConfig;
108
- private fetchItemRuleConfigsByModelIds;
109
- private buildPrefillProductSourceMap;
110
- private getItemRuleRuntimeConfig;
111
- private ensureItemRuleConfigsLoaded;
112
- private refreshItemRuleQuantityLimits;
113
- private applyPrefillByItemRule;
114
- applyItemRulePrefill(): Promise<void>;
115
- private evaluateCartValidationByItemRule;
116
- private validateBeforeSubmitByItemRule;
117
- private refreshCartValidationPassed;
118
- setItemRuleRuntimeConfig(config?: ScanOrderItemRuleRuntimeConfig): Promise<void>;
119
- private normalizeResourceState;
120
- private resolveResourceSelectType;
121
- private fetchResourceOccupyDetailsByResourceId;
122
- private resolveAdditionalOrderFromOccupyDetail;
123
- checkResourceAvailable(resourceId?: string | null, hasOrderId?: boolean): Promise<ScanOrderAvailabilityInfo>;
124
- restorePreviousOrderData(): Promise<void>;
125
- getAdditionalOrderInfo(): Promise<{
126
- orderId: string;
127
- orderStatus: 'pending' | 'processing' | 'completed' | 'cancelled';
128
- orderTime: string;
129
- orderAmount: number;
130
- orderItems: any[];
131
- }>;
132
- getProductList(): Promise<ProductData[]>;
133
- getOtherParams(): Record<string, any>;
134
- setOtherParams(params: Record<string, any>, { cover }?: {
135
- cover?: boolean;
136
- }): Promise<void>;
137
- private static readonly UI_STATE_KEY_PREFIX;
138
- private getUIStateBucketKey;
139
- private readUIStateBucket;
140
- private writeUIStateBucket;
141
- setUIState(key: string, value: any): void;
142
- getUIState<T = any>(key: string): T | undefined;
143
- deleteUIState(key: string): void;
144
- clearUIState(): void;
145
- setEntryPaxNumber(number: number): Promise<void>;
146
- getEntryPaxNumber(): number | null;
147
- syncAdditionalOrderFromResource(resourceId?: string | null): Promise<ScanOrderSyncAdditionalOrderResult>;
148
- getReservationResourceSelectType(): ScanOrderReservationResourceSelectInfo;
149
- checkAllowAddItems(): ScanOrderAllowAddItemsInfo;
150
- getFulfillmentModes(): {
151
- enablePickup: boolean;
152
- enableTableService: boolean;
153
- };
154
- checkManualPickupRef(): {
155
- enabled: boolean;
156
- manualInputType?: string;
157
- };
158
- }