@pisell/pisellos 2.3.69 → 2.3.71

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 (44) hide show
  1. package/dist/core/index.d.ts +0 -7
  2. package/dist/core/index.js +65 -109
  3. package/dist/modules/Order/index.d.ts +1 -1
  4. package/dist/modules/Order/types.d.ts +2 -0
  5. package/dist/modules/Order/types.js +1 -0
  6. package/dist/modules/Quotation/index.d.ts +0 -6
  7. package/dist/modules/Quotation/index.js +19 -75
  8. package/dist/plugins/request.d.ts +0 -1
  9. package/dist/server/index.d.ts +2 -8
  10. package/dist/server/index.js +140 -206
  11. package/dist/server/modules/floor-plan/index.d.ts +0 -4
  12. package/dist/server/modules/floor-plan/index.js +98 -240
  13. package/dist/server/modules/menu/index.js +23 -48
  14. package/dist/server/modules/order/index.d.ts +7 -17
  15. package/dist/server/modules/order/index.js +207 -419
  16. package/dist/server/modules/products/index.d.ts +2 -8
  17. package/dist/server/modules/products/index.js +75 -167
  18. package/dist/server/modules/resource/index.js +13 -21
  19. package/dist/solution/BaseSales/index.js +15 -4
  20. package/dist/solution/BookingByStep/index.d.ts +1 -1
  21. package/dist/solution/BookingTicket/index.d.ts +5 -15
  22. package/dist/solution/BookingTicket/index.js +21 -6
  23. package/lib/core/index.d.ts +0 -7
  24. package/lib/core/index.js +2 -20
  25. package/lib/modules/Order/index.d.ts +1 -1
  26. package/lib/modules/Order/types.d.ts +2 -0
  27. package/lib/modules/Quotation/index.d.ts +0 -6
  28. package/lib/modules/Quotation/index.js +5 -49
  29. package/lib/plugins/request.d.ts +0 -1
  30. package/lib/server/index.d.ts +2 -8
  31. package/lib/server/index.js +17 -52
  32. package/lib/server/modules/floor-plan/index.d.ts +0 -4
  33. package/lib/server/modules/floor-plan/index.js +6 -54
  34. package/lib/server/modules/menu/index.js +5 -31
  35. package/lib/server/modules/order/index.d.ts +7 -17
  36. package/lib/server/modules/order/index.js +40 -197
  37. package/lib/server/modules/products/index.d.ts +2 -8
  38. package/lib/server/modules/products/index.js +24 -97
  39. package/lib/server/modules/resource/index.js +2 -7
  40. package/lib/solution/BaseSales/index.js +4 -4
  41. package/lib/solution/BookingByStep/index.d.ts +1 -1
  42. package/lib/solution/BookingTicket/index.d.ts +5 -15
  43. package/lib/solution/BookingTicket/index.js +15 -5
  44. package/package.json +1 -1
@@ -119,23 +119,14 @@ export declare class OrderModule extends BaseModule implements Module {
119
119
  payment: Record<string, any>;
120
120
  previousPayment: Record<string, any>;
121
121
  } | null>;
122
- loadOrdersByServer(options?: {
123
- trigger?: string;
124
- }): Promise<OrderData[]>;
122
+ loadOrdersByServer(): Promise<OrderData[]>;
125
123
  /**
126
124
  * 静默全量刷新:后台重新拉取全量 SSE 订单数据并更新本地
127
125
  * 拿到完整数据后一次性替换 store,触发订单变更与同步完成事件
128
126
  * @returns 刷新后的订单列表
129
127
  */
130
- silentRefresh(options?: {
131
- trigger?: string;
132
- }): Promise<OrderData[]>;
128
+ silentRefresh(): Promise<OrderData[]>;
133
129
  private normalizeOrderForMemoryList;
134
- /**
135
- * 将已经完成集合规范化的订单转换为内存身份,不重复扫描 products/bookings/payments。
136
- */
137
- private prepareNormalizedOrderForMemoryList;
138
- private prepareNormalizedOrdersForMemoryList;
139
130
  private normalizeOrdersForMemoryList;
140
131
  private hasRealOrderId;
141
132
  private shouldKeepOrderInMemory;
@@ -300,14 +291,13 @@ export declare class OrderModule extends BaseModule implements Module {
300
291
  private logDuplicateOrders;
301
292
  private compactOrderListByIdentity;
302
293
  /**
303
- * 当前订单缓存可复用窗口。
304
- * start_time 模式使用精确的营业日起止时间;配置缺失或异常时退化为自然日。
294
+ * 当前订单拉取窗口:
295
+ * - 优先使用 createdAtQuery.sales_time_between(已按营业日边界初始化)
296
+ * - 无法解析时退化为自然日窗口
305
297
  */
306
- private getCurrentOrderCacheWindow;
298
+ private getCurrentPullWindow;
307
299
  private hasPulledOrdersToday;
308
300
  private markOrderPulledAtNow;
309
- private clearOrderSnapshotMarker;
310
- private getCurrentShopId;
311
301
  private getStorageItem;
312
302
  private setStorageItem;
313
303
  private loadOrdersFromSQLite;
@@ -345,7 +335,7 @@ export declare class OrderModule extends BaseModule implements Module {
345
335
  * 用于 SSE 全量拉取与营业日窗口裁剪。
346
336
  *
347
337
  * @example
348
- * const { orders, persisted } = await this.replaceOrdersSnapshotInSQLite(orderList, 'refresh')
338
+ * await this.replaceOrdersSnapshotInSQLite(orderList)
349
339
  */
350
340
  private replaceOrdersSnapshotInSQLite;
351
341
  /**
@@ -41,7 +41,6 @@ var import_payment_utils = require("../../../modules/Order/payment-utils");
41
41
  var INDEXDB_STORE_NAME = "orders";
42
42
  var ORDER_STORAGE_KEY_FIELD = "__order_storage_key";
43
43
  var ORDER_LAST_FULL_FETCH_AT_STORAGE_KEY = "server_order_last_full_fetch_at";
44
- var ORDER_LAST_FULL_FETCH_SHOP_ID_STORAGE_KEY = "server_order_last_full_fetch_shop_id";
45
44
  var ORDER_SYNC_THROTTLE_MS_STORAGE_KEY = "order_sync_throttle_ms";
46
45
  var DEFAULT_ORDER_SYNC_THROTTLE_MS = 2e3;
47
46
  var ORDER_SQLITE_DEDUPE_MS = 15e3;
@@ -193,21 +192,18 @@ var OrderModule = class extends import_BaseModule.BaseModule {
193
192
  * 仅记录计数与订单标识,不输出商品、预约、支付或客户明细。
194
193
  */
195
194
  normalizeOrderCollectionsForIngress(order, source) {
196
- const sourceOrderRecord = order;
197
- let sourceOrder = sourceOrderRecord;
195
+ const sourceOrder = (0, import_lodash_es.cloneDeep)(order);
196
+ const sourceOrderRecord = sourceOrder;
198
197
  if (Array.isArray(sourceOrderRecord.payments)) {
199
- sourceOrder = {
200
- ...sourceOrderRecord,
201
- payments: sourceOrderRecord.payments.map((payment) => {
202
- if (!(0, import_payment_utils.isPendingOrderPayment)(payment) || (0, import_payment_utils.getOrderPaymentIdentityKeys)(payment).some((key) => key.startsWith("unique_payment_number:"))) {
203
- return payment;
204
- }
205
- return {
206
- ...payment,
207
- [PENDING_PAYMENT_WITHOUT_UNIQUE_MARKER]: true
208
- };
209
- })
210
- };
198
+ sourceOrderRecord.payments = sourceOrderRecord.payments.map((payment) => {
199
+ if (!(0, import_payment_utils.isPendingOrderPayment)(payment) || (0, import_payment_utils.getOrderPaymentIdentityKeys)(payment).some((key) => key.startsWith("unique_payment_number:"))) {
200
+ return payment;
201
+ }
202
+ return {
203
+ ...payment,
204
+ [PENDING_PAYMENT_WITHOUT_UNIQUE_MARKER]: true
205
+ };
206
+ });
211
207
  }
212
208
  const result = (0, import_orderCollectionIdentity.normalizeOrderCollections)(sourceOrder);
213
209
  const normalizedOrderRecord = result.order;
@@ -529,65 +525,11 @@ var OrderModule = class extends import_BaseModule.BaseModule {
529
525
  return DEFAULT_ORDER_SYNC_THROTTLE_MS;
530
526
  }
531
527
  async preload() {
532
- const preloadStartedAt = Date.now();
533
- let cachedOrders = null;
534
- let sqliteLoadTimings;
535
- if (this.dbManager) {
536
- try {
537
- cachedOrders = await this.loadOrdersFromSQLite({
538
- throwOnError: true,
539
- onTiming: (timings) => {
540
- sqliteLoadTimings = timings;
541
- }
542
- });
543
- } catch (error) {
544
- this.logWarning("preload-SQLite读取失败,回退远端全量拉取", {
545
- error: error instanceof Error ? error.message : String(error)
546
- });
547
- }
548
- }
549
- if (cachedOrders !== null && this.hasPulledOrdersToday()) {
550
- const memoryPrepareStartedAt = performance.now();
551
- const memoryOrders = this.prepareNormalizedOrdersForMemoryList(cachedOrders);
552
- const memoryPrepareMs = +(performance.now() - memoryPrepareStartedAt).toFixed(2);
553
- this.store.list = memoryOrders;
554
- const syncMapStartedAt = performance.now();
555
- this.syncOrdersMap();
556
- const syncMapMs = +(performance.now() - syncMapStartedAt).toFixed(2);
557
- const onOrdersLoadedStartedAt = performance.now();
558
- await this.core.effects.emit(import_types.OrderHooks.onOrdersLoaded, this.store.list);
559
- const onOrdersLoadedMs = +(performance.now() - onOrdersLoadedStartedAt).toFixed(2);
560
- const emitOrdersChangedStartedAt = performance.now();
561
- await this.emitOrdersChanged([], "preload.sqlite");
562
- const emitOrdersChangedMs = +(performance.now() - emitOrdersChangedStartedAt).toFixed(2);
563
- this.logInfo("预加载完成", {
564
- trigger: "preload",
565
- source: "SQLite",
566
- orderCount: this.store.list.length,
567
- duration: `${Date.now() - preloadStartedAt}ms`,
568
- stages: {
569
- ...sqliteLoadTimings || {},
570
- memoryPrepareMs,
571
- syncMapMs,
572
- onOrdersLoadedMs,
573
- emitOrdersChangedMs
574
- }
575
- });
576
- return;
577
- }
578
- const orders = await this.loadOrdersByServer({
579
- trigger: "preload"
580
- });
528
+ const orders = await this.loadOrdersByServer();
581
529
  this.store.list = (0, import_lodash_es.cloneDeep)(orders);
582
530
  this.syncOrdersMap();
583
531
  await this.emitOrdersChanged([], "preload");
584
532
  await this.core.effects.emit(import_types.OrderHooks.onOrdersSyncCompleted, null);
585
- this.logInfo("预加载完成", {
586
- trigger: "preload",
587
- source: "Server",
588
- orderCount: this.store.list.length,
589
- duration: `${Date.now() - preloadStartedAt}ms`
590
- });
591
533
  }
592
534
  getOrders() {
593
535
  return this.store.list;
@@ -808,16 +750,13 @@ var OrderModule = class extends import_BaseModule.BaseModule {
808
750
  this.logInfo("updateLocalPayment-变更事件完成", paymentContext);
809
751
  return { order: nextOrder, payment: nextPayment, previousPayment };
810
752
  }
811
- async loadOrdersByServer(options = {}) {
753
+ async loadOrdersByServer() {
812
754
  var _a;
813
755
  let orderList = [];
814
- let hasFetchedRemoteSnapshot = false;
815
- const trigger = options.trigger || "unknown";
816
756
  const protectedOrdersBeforeRemoteFetch = (await this.loadOrdersFromSQLite()).filter(
817
757
  (order) => this.shouldProtectLocalOrderFromRemoteSnapshot(order)
818
758
  );
819
759
  this.logInfo("loadOrdersByServer-开始", {
820
- trigger,
821
760
  hasOrderDataSource: !!this.orderDataSource,
822
761
  query: ((_a = this.store) == null ? void 0 : _a.createdAtQuery) || null,
823
762
  protectedLocalOrderCount: protectedOrdersBeforeRemoteFetch.length,
@@ -835,36 +774,25 @@ var OrderModule = class extends import_BaseModule.BaseModule {
835
774
  });
836
775
  orderList = data || [];
837
776
  this.logInfo("loadOrdersByServer-SSE拉取成功", {
838
- trigger,
839
777
  count: orderList.length
840
778
  });
841
- hasFetchedRemoteSnapshot = true;
779
+ this.markOrderPulledAtNow();
842
780
  this.lastServerFullFetchAtMs = Date.now();
843
781
  } catch {
844
782
  this.logInfo("loadOrdersByServer-SSE拉取失败,保持当前内存订单");
845
783
  return this.store.list;
846
784
  }
847
785
  }
848
- if (hasFetchedRemoteSnapshot) {
849
- this.clearOrderSnapshotMarker();
850
- }
851
- const {
852
- orders: mergedOrders,
853
- persisted: isRemoteSnapshotPersisted
854
- } = await this.replaceOrdersSnapshotInSQLite(
786
+ const mergedOrders = await this.replaceOrdersSnapshotInSQLite(
855
787
  orderList,
856
788
  "loadOrdersByServer",
857
789
  protectedOrdersBeforeRemoteFetch
858
790
  );
859
- if (hasFetchedRemoteSnapshot && isRemoteSnapshotPersisted) {
860
- this.markOrderPulledAtNow();
861
- }
862
791
  const memoryOrders = this.normalizeOrdersForMemoryList(
863
792
  mergedOrders,
864
793
  "loadOrdersByServer.memory"
865
794
  );
866
795
  this.logInfo("loadOrdersByServer-结束", {
867
- trigger,
868
796
  count: memoryOrders.length,
869
797
  persistedCount: mergedOrders.length,
870
798
  sqliteOnlyDraftCount: mergedOrders.length - memoryOrders.length
@@ -877,34 +805,21 @@ var OrderModule = class extends import_BaseModule.BaseModule {
877
805
  * 拿到完整数据后一次性替换 store,触发订单变更与同步完成事件
878
806
  * @returns 刷新后的订单列表
879
807
  */
880
- async silentRefresh(options = {}) {
808
+ async silentRefresh() {
881
809
  const startTime = Date.now();
882
- const trigger = options.trigger || "background";
883
810
  const elapsedSinceFullFetch = Date.now() - this.lastServerFullFetchAtMs;
884
811
  if (this.lastServerFullFetchAtMs > 0 && elapsedSinceFullFetch < ORDER_SILENT_REFRESH_MIN_INTERVAL_MS) {
885
- this.logInfo("silentRefresh 跳过全量 SSE", {
886
- trigger,
887
- reason: "within_min_interval",
888
- minIntervalMs: ORDER_SILENT_REFRESH_MIN_INTERVAL_MS,
889
- elapsedSinceFullFetchMs: elapsedSinceFullFetch,
890
- orderCount: this.store.list.length
891
- });
892
812
  return this.store.list;
893
813
  }
894
- this.logInfo("silentRefresh 开始", {
895
- trigger,
896
- elapsedSinceFullFetchMs: elapsedSinceFullFetch,
897
- orderCount: this.store.list.length
898
- });
814
+ this.logInfo("silentRefresh 开始");
899
815
  try {
900
816
  this.updateCreateStore();
901
- const orders = await this.loadOrdersByServer({ trigger });
817
+ const orders = await this.loadOrdersByServer();
902
818
  this.store.list = (0, import_lodash_es.cloneDeep)(orders);
903
819
  this.syncOrdersMap();
904
820
  await this.emitOrdersChanged([], "silentRefresh");
905
821
  await this.core.effects.emit(import_types.OrderHooks.onOrdersSyncCompleted, null);
906
822
  this.logInfo("silentRefresh 完成", {
907
- trigger,
908
823
  orderCount: orders.length,
909
824
  duration: `${Date.now() - startTime}ms`
910
825
  });
@@ -912,7 +827,6 @@ var OrderModule = class extends import_BaseModule.BaseModule {
912
827
  } catch (error) {
913
828
  const errorMessage = error instanceof Error ? error.message : String(error);
914
829
  this.logError("silentRefresh 失败", {
915
- trigger,
916
830
  duration: `${Date.now() - startTime}ms`,
917
831
  error: errorMessage
918
832
  });
@@ -921,12 +835,6 @@ var OrderModule = class extends import_BaseModule.BaseModule {
921
835
  }
922
836
  normalizeOrderForMemoryList(order, source = "normalizeOrderForMemoryList") {
923
837
  const normalizedOrder = this.normalizeOrderCollectionsForIngress(order, source);
924
- return this.prepareNormalizedOrderForMemoryList(normalizedOrder);
925
- }
926
- /**
927
- * 将已经完成集合规范化的订单转换为内存身份,不重复扫描 products/bookings/payments。
928
- */
929
- prepareNormalizedOrderForMemoryList(normalizedOrder) {
930
838
  const externalSaleNumber = normalizedOrder == null ? void 0 : normalizedOrder.external_sale_number;
931
839
  if (this.isDraftOrder(normalizedOrder) && !this.hasRealOrderId(normalizedOrder)) {
932
840
  return normalizedOrder;
@@ -942,9 +850,6 @@ var OrderModule = class extends import_BaseModule.BaseModule {
942
850
  order_id: externalSaleNumber
943
851
  };
944
852
  }
945
- prepareNormalizedOrdersForMemoryList(orders) {
946
- return orders.map((order) => this.prepareNormalizedOrderForMemoryList(order)).filter((order) => this.shouldKeepOrderInMemory(order));
947
- }
948
853
  normalizeOrdersForMemoryList(orders, source) {
949
854
  return orders.map((order) => this.normalizeOrderForMemoryList(order, source)).filter((order) => this.shouldKeepOrderInMemory(order));
950
855
  }
@@ -2232,29 +2137,20 @@ var OrderModule = class extends import_BaseModule.BaseModule {
2232
2137
  return { list, removedCount };
2233
2138
  }
2234
2139
  /**
2235
- * 当前订单缓存可复用窗口。
2236
- * start_time 模式使用精确的营业日起止时间;配置缺失或异常时退化为自然日。
2140
+ * 当前订单拉取窗口:
2141
+ * - 优先使用 createdAtQuery.sales_time_between(已按营业日边界初始化)
2142
+ * - 无法解析时退化为自然日窗口
2237
2143
  */
2238
- getCurrentOrderCacheWindow() {
2239
- var _a;
2144
+ getCurrentPullWindow() {
2145
+ var _a, _b;
2240
2146
  const now = (0, import_dayjs.default)();
2241
- try {
2242
- const appPlugin = this.core.getPlugin("app");
2243
- const app = appPlugin == null ? void 0 : appPlugin.getApp();
2244
- const coreData = app == null ? void 0 : app.data.store.getStore().getDataByModel("core");
2245
- const boundary = (_a = coreData == null ? void 0 : coreData.core) == null ? void 0 : _a.operating_day_boundary;
2246
- if ((boundary == null ? void 0 : boundary.type) === "start_time") {
2247
- const boundaryTime = String(boundary.time || "").trim();
2248
- const todayBoundary = (0, import_dayjs.default)(`${now.format("YYYY-MM-DD")} ${boundaryTime}`);
2249
- if (todayBoundary.isValid()) {
2250
- const startAt2 = now.isBefore(todayBoundary) ? todayBoundary.subtract(1, "day") : todayBoundary;
2251
- return {
2252
- startAt: startAt2,
2253
- endExclusiveAt: startAt2.add(1, "day")
2254
- };
2255
- }
2147
+ const range = (_b = (_a = this.store) == null ? void 0 : _a.createdAtQuery) == null ? void 0 : _b.sales_time_between;
2148
+ if (Array.isArray(range) && range.length >= 2) {
2149
+ const startAt2 = (0, import_dayjs.default)(range[0]);
2150
+ const endExclusiveAt = (0, import_dayjs.default)(range[1]);
2151
+ if (startAt2.isValid() && endExclusiveAt.isValid() && endExclusiveAt.isAfter(startAt2)) {
2152
+ return { startAt: startAt2, endExclusiveAt };
2256
2153
  }
2257
- } catch {
2258
2154
  }
2259
2155
  const startAt = now.startOf("day");
2260
2156
  return { startAt, endExclusiveAt: startAt.add(1, "day") };
@@ -2263,51 +2159,17 @@ var OrderModule = class extends import_BaseModule.BaseModule {
2263
2159
  const lastFullFetchAt = this.getStorageItem(ORDER_LAST_FULL_FETCH_AT_STORAGE_KEY);
2264
2160
  if (!lastFullFetchAt)
2265
2161
  return false;
2266
- const currentShopId = this.getCurrentShopId();
2267
- const lastFullFetchShopId = this.getStorageItem(
2268
- ORDER_LAST_FULL_FETCH_SHOP_ID_STORAGE_KEY
2269
- );
2270
- if (!currentShopId || !lastFullFetchShopId || currentShopId !== lastFullFetchShopId) {
2271
- return false;
2272
- }
2273
2162
  const parsed = (0, import_dayjs.default)(lastFullFetchAt);
2274
2163
  if (!parsed.isValid())
2275
2164
  return false;
2276
- const { startAt, endExclusiveAt } = this.getCurrentOrderCacheWindow();
2165
+ const { startAt, endExclusiveAt } = this.getCurrentPullWindow();
2277
2166
  return (parsed.isAfter(startAt) || parsed.isSame(startAt)) && parsed.isBefore(endExclusiveAt);
2278
2167
  }
2279
2168
  markOrderPulledAtNow() {
2280
- const currentShopId = this.getCurrentShopId();
2281
- if (!currentShopId)
2282
- return;
2283
2169
  this.setStorageItem(
2284
2170
  ORDER_LAST_FULL_FETCH_AT_STORAGE_KEY,
2285
2171
  (0, import_dayjs.default)().format("YYYY-MM-DD HH:mm:ss")
2286
2172
  );
2287
- this.setStorageItem(
2288
- ORDER_LAST_FULL_FETCH_SHOP_ID_STORAGE_KEY,
2289
- currentShopId
2290
- );
2291
- }
2292
- clearOrderSnapshotMarker() {
2293
- this.setStorageItem(ORDER_LAST_FULL_FETCH_AT_STORAGE_KEY, "");
2294
- this.setStorageItem(ORDER_LAST_FULL_FETCH_SHOP_ID_STORAGE_KEY, "");
2295
- }
2296
- getCurrentShopId() {
2297
- var _a;
2298
- try {
2299
- const appPlugin = this.core.getPlugin("app");
2300
- const app = appPlugin == null ? void 0 : appPlugin.getApp();
2301
- if (!app)
2302
- return null;
2303
- const coreData = app.data.store.getStore().getDataByModel("core");
2304
- const shopId = (_a = coreData == null ? void 0 : coreData.core) == null ? void 0 : _a.id;
2305
- if (shopId === void 0 || shopId === null || shopId === "")
2306
- return null;
2307
- return String(shopId);
2308
- } catch {
2309
- return null;
2310
- }
2311
2173
  }
2312
2174
  getStorageItem(key) {
2313
2175
  var _a;
@@ -2334,29 +2196,15 @@ var OrderModule = class extends import_BaseModule.BaseModule {
2334
2196
  } catch {
2335
2197
  }
2336
2198
  }
2337
- async loadOrdersFromSQLite(options = {}) {
2338
- var _a;
2199
+ async loadOrdersFromSQLite() {
2339
2200
  if (!this.dbManager)
2340
2201
  return [];
2341
2202
  try {
2342
- const loadStartedAt = performance.now();
2343
- const rawReadStartedAt = performance.now();
2344
2203
  const orders = await this.dbManager.getAll(INDEXDB_STORE_NAME);
2345
- const sqliteRawReadMs = +(performance.now() - rawReadStartedAt).toFixed(2);
2346
- const normalizeStartedAt = performance.now();
2347
- const normalizedOrders = (orders || []).map(
2204
+ return (orders || []).map(
2348
2205
  (order) => this.normalizeOrderCollectionsForIngress(order, "loadOrdersFromSQLite")
2349
2206
  );
2350
- const sqliteNormalizeMs = +(performance.now() - normalizeStartedAt).toFixed(2);
2351
- (_a = options.onTiming) == null ? void 0 : _a.call(options, {
2352
- sqliteRawReadMs,
2353
- sqliteNormalizeMs,
2354
- sqliteLoadTotalMs: +(performance.now() - loadStartedAt).toFixed(2)
2355
- });
2356
- return normalizedOrders;
2357
- } catch (error) {
2358
- if (options.throwOnError)
2359
- throw error;
2207
+ } catch {
2360
2208
  return [];
2361
2209
  }
2362
2210
  }
@@ -2624,17 +2472,14 @@ var OrderModule = class extends import_BaseModule.BaseModule {
2624
2472
  * 用于 SSE 全量拉取与营业日窗口裁剪。
2625
2473
  *
2626
2474
  * @example
2627
- * const { orders, persisted } = await this.replaceOrdersSnapshotInSQLite(orderList, 'refresh')
2475
+ * await this.replaceOrdersSnapshotInSQLite(orderList)
2628
2476
  */
2629
2477
  async replaceOrdersSnapshotInSQLite(orderList, source, protectedOrdersBeforeRemoteFetch = []) {
2630
2478
  if (!this.dbManager) {
2631
- return {
2632
- orders: this.compactOrderListByIdentity(
2633
- orderList.map((order) => this.normalizeRemoteSyncedOrder(order)),
2634
- `${source}.snapshotNoDb`
2635
- ).list,
2636
- persisted: false
2637
- };
2479
+ return this.compactOrderListByIdentity(
2480
+ orderList.map((order) => this.normalizeRemoteSyncedOrder(order)),
2481
+ `${source}.snapshotNoDb`
2482
+ ).list;
2638
2483
  }
2639
2484
  const remoteSnapshot = (0, import_lodash_es.cloneDeep)(orderList).map(
2640
2485
  (order) => this.normalizeOrderCollectionsForIngress(order, `${source}.remoteIngress`)
@@ -2643,7 +2488,6 @@ var OrderModule = class extends import_BaseModule.BaseModule {
2643
2488
  remoteSnapshot.map((order) => this.normalizeRemoteSyncedOrder(order)),
2644
2489
  `${source}.remoteSnapshot`
2645
2490
  ).list;
2646
- let persisted = false;
2647
2491
  try {
2648
2492
  await this.runInOrderSQLiteSaveQueue(async () => {
2649
2493
  const existingOrders = typeof this.dbManager.getAll === "function" ? await this.dbManager.getAll(INDEXDB_STORE_NAME) : [];
@@ -2708,14 +2552,13 @@ var OrderModule = class extends import_BaseModule.BaseModule {
2708
2552
  count: mergedSnapshot.length
2709
2553
  });
2710
2554
  });
2711
- persisted = true;
2712
2555
  } catch (error) {
2713
2556
  this.logError("全量保存订单到 SQLite 失败", {
2714
2557
  error: error instanceof Error ? error.message : String(error),
2715
2558
  orderList: remoteSnapshot.length
2716
2559
  });
2717
2560
  }
2718
- return { orders: mergedSnapshot, persisted };
2561
+ return mergedSnapshot;
2719
2562
  }
2720
2563
  /**
2721
2564
  * 清空订单模块的内存数据和本地 SQLite 订单表。
@@ -2731,7 +2574,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
2731
2574
  await this.dbManager.clear(INDEXDB_STORE_NAME);
2732
2575
  });
2733
2576
  }
2734
- this.clearOrderSnapshotMarker();
2577
+ this.setStorageItem(ORDER_LAST_FULL_FETCH_AT_STORAGE_KEY, "");
2735
2578
  this.emitOrdersChanged([], "clear");
2736
2579
  }
2737
2580
  };
@@ -25,7 +25,6 @@ export declare class ProductsModule extends BaseModule implements Module {
25
25
  private quotationBridgeLoadedKey?;
26
26
  private quotationBridgeRefreshPromise?;
27
27
  private quotationBridgeRefreshKey?;
28
- private quotationBridgeUpdatedCallback?;
29
28
  private quotationScheduleCache;
30
29
  private quotationScheduleCacheSource;
31
30
  private quotationScheduleCacheLoaded;
@@ -73,7 +72,6 @@ export declare class ProductsModule extends BaseModule implements Module {
73
72
  scheduleModule?: any;
74
73
  channel?: string;
75
74
  customer_id?: number | string;
76
- onQuotationUpdated?: () => void;
77
75
  }): Promise<void>;
78
76
  /**
79
77
  * 刷新桥接器内的报价单列表。
@@ -183,9 +181,7 @@ export declare class ProductsModule extends BaseModule implements Module {
183
181
  /**
184
182
  * 通过 ProductDataSource SSE 加载完整商品列表
185
183
  */
186
- loadProductsByServer(options?: {
187
- trigger?: string;
188
- }): Promise<any>;
184
+ loadProductsByServer(): Promise<any>;
189
185
  /**
190
186
  * 纯请求方法:通过 HTTP 接口获取商品列表(无副作用,不触发事件、不写 IndexDB)
191
187
  * @param params 查询参数
@@ -335,9 +331,7 @@ export declare class ProductsModule extends BaseModule implements Module {
335
331
  * 拿到完整数据后一次性替换 store,清除价格缓存,触发 onProductsSyncCompleted
336
332
  * @returns 刷新后的商品列表
337
333
  */
338
- silentRefresh(options?: {
339
- trigger?: string;
340
- }): Promise<ProductData[]>;
334
+ silentRefresh(): Promise<ProductData[]>;
341
335
  /**
342
336
  * 销毁同步资源(取消 pubsub 订阅、清除定时器)
343
337
  */