@pisell/pisellos 2.2.141 → 2.2.142

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.
@@ -2665,7 +2665,8 @@ var Server = /*#__PURE__*/function () {
2665
2665
  rawCount: rawList.length,
2666
2666
  filteredCount: result.count,
2667
2667
  size: result.size,
2668
- skip: result.skip
2668
+ skip: result.skip,
2669
+ rejected: result.rejected
2669
2670
  });
2670
2671
  return _context23.abrupt("return", {
2671
2672
  code: 200,
@@ -14,7 +14,7 @@ export { QuotationHooks } from './quotation/types';
14
14
  export { ScheduleModuleEx } from './schedule';
15
15
  export type { ScheduleState, ScheduleItem } from './schedule/types';
16
16
  export { OrderModule } from './order';
17
- export type { OrderState, OrderData, OrderId, OrderSummary, OrderBookingItem, OrderProductLineItem, OrderPaymentItem, OrderSurchargeItem, OrderProductDiscountItem, OrderWithoutBookings, BookingData, OrderFilters, BookingFilters, OrderFilterResult, BookingFilterResult, OrderModulePagedResult, } from './order/types';
17
+ export type { OrderState, OrderData, OrderId, OrderSummary, OrderBookingItem, OrderProductLineItem, OrderPaymentItem, OrderSurchargeItem, OrderProductDiscountItem, OrderWithoutBookings, BookingData, OrderFilters, BookingFilters, OrderFilterResult, OrderFilterRejectDetail, OrderFilterRejectedEntry, BookingFilterResult, OrderModulePagedResult, } from './order/types';
18
18
  export { OrderHooks } from './order/types';
19
19
  export { FloorPlanModule } from './floor-plan';
20
20
  export type { FloorPlanItem, FloorPlanState, FloorPlanSyncMessage } from './floor-plan/types';
@@ -479,7 +479,27 @@ export interface OrderModulePagedResult<T> {
479
479
  size: number;
480
480
  skip: number;
481
481
  }
482
- export type OrderFilterResult = OrderModulePagedResult<OrderData>;
482
+ /** 单条筛选未命中说明(用于排查过滤原因) */
483
+ export interface OrderFilterRejectDetail {
484
+ /** 对应 OrderFilters 维度的标识 */
485
+ field: string;
486
+ /** 订单上该维度的当前值 */
487
+ actual: unknown;
488
+ /** 本次筛选的期望值/区间(便于对照) */
489
+ expected?: unknown;
490
+ }
491
+ /** 未通过筛选的订单及首个未满足条件(与过滤短路顺序一致) */
492
+ export interface OrderFilterRejectedEntry {
493
+ order_id?: OrderId | null;
494
+ /** 系统订单号等,便于与业务「订单号」对照 */
495
+ order_number?: string;
496
+ /** 按筛选顺序命中的第一条未满足条件 */
497
+ reason: OrderFilterRejectDetail;
498
+ }
499
+ export type OrderFilterResult = OrderModulePagedResult<OrderData> & {
500
+ /** 被过滤掉的订单及首个命中原因(与筛选短路顺序一致;不含仅分页未展示的已通过订单) */
501
+ rejected: OrderFilterRejectedEntry[];
502
+ };
483
503
  export type BookingFilterResult = OrderModulePagedResult<BookingData>;
484
504
  /**
485
505
  * SSE 同步配置
@@ -111,6 +111,10 @@
111
111
 
112
112
  /** 分页筛选结果通用结构 */
113
113
 
114
+ /** 单条筛选未命中说明(用于排查过滤原因) */
115
+
116
+ /** 未通过筛选的订单及首个未满足条件(与过滤短路顺序一致) */
117
+
114
118
  /**
115
119
  * SSE 同步配置
116
120
  */
@@ -18,18 +18,29 @@ export function filterOrders(orders, filters) {
18
18
  list: [],
19
19
  count: 0,
20
20
  size: 0,
21
- skip: 0
21
+ skip: 0,
22
+ rejected: []
22
23
  };
23
24
  }
24
25
 
25
26
  // 默认分页参数
26
27
  var size = safeFilters.num || 20;
27
28
  var page = safeFilters.skip || 1;
29
+ var rejected = [];
28
30
 
29
31
  // 1. 过滤
30
32
  var filteredList = orders.filter(function (order) {
31
33
  if (safeFilters.keyword) {
32
34
  if (!JSON.stringify(order).toLowerCase().includes(safeFilters.keyword.toLowerCase())) {
35
+ rejected.push({
36
+ order_id: order.order_id,
37
+ order_number: order.order_number,
38
+ reason: {
39
+ field: 'keyword',
40
+ actual: '',
41
+ expected: safeFilters.keyword
42
+ }
43
+ });
33
44
  return false;
34
45
  }
35
46
  }
@@ -37,6 +48,15 @@ export function filterOrders(orders, filters) {
37
48
  // status - 订单状态
38
49
  if (safeFilters.status && safeFilters.status.length > 0) {
39
50
  if (!order.status || !safeFilters.status.includes(order.status)) {
51
+ rejected.push({
52
+ order_id: order.order_id,
53
+ order_number: order.order_number,
54
+ reason: {
55
+ field: 'status',
56
+ actual: order.status,
57
+ expected: safeFilters.status
58
+ }
59
+ });
40
60
  return false;
41
61
  }
42
62
  }
@@ -44,6 +64,15 @@ export function filterOrders(orders, filters) {
44
64
  // payment_status - 支付状态
45
65
  if (safeFilters.payment_status && safeFilters.payment_status.length > 0) {
46
66
  if (!order.payment_status || !safeFilters.payment_status.includes(order.payment_status)) {
67
+ rejected.push({
68
+ order_id: order.order_id,
69
+ order_number: order.order_number,
70
+ reason: {
71
+ field: 'payment_status',
72
+ actual: order.payment_status,
73
+ expected: safeFilters.payment_status
74
+ }
75
+ });
47
76
  return false;
48
77
  }
49
78
  }
@@ -51,6 +80,15 @@ export function filterOrders(orders, filters) {
51
80
  // shipping_status - 处理状态
52
81
  if (safeFilters.shipping_status && safeFilters.shipping_status.length > 0) {
53
82
  if (!order.shipping_status || !safeFilters.shipping_status.includes(order.shipping_status)) {
83
+ rejected.push({
84
+ order_id: order.order_id,
85
+ order_number: order.order_number,
86
+ reason: {
87
+ field: 'shipping_status',
88
+ actual: order.shipping_status,
89
+ expected: safeFilters.shipping_status
90
+ }
91
+ });
54
92
  return false;
55
93
  }
56
94
  }
@@ -58,6 +96,15 @@ export function filterOrders(orders, filters) {
58
96
  // customer_id - 客户ID(精确匹配)
59
97
  if (safeFilters.customer_id !== undefined && safeFilters.customer_id !== null) {
60
98
  if (String(order.customer_id) !== String(safeFilters.customer_id)) {
99
+ rejected.push({
100
+ order_id: order.order_id,
101
+ order_number: order.order_number,
102
+ reason: {
103
+ field: 'customer_id',
104
+ actual: order.customer_id,
105
+ expected: safeFilters.customer_id
106
+ }
107
+ });
61
108
  return false;
62
109
  }
63
110
  }
@@ -65,6 +112,15 @@ export function filterOrders(orders, filters) {
65
112
  // order_sales_channel - 销售渠道
66
113
  if (safeFilters.order_sales_channel && safeFilters.order_sales_channel.length > 0) {
67
114
  if (!order.order_sales_channel || !safeFilters.order_sales_channel.includes(order.order_sales_channel)) {
115
+ rejected.push({
116
+ order_id: order.order_id,
117
+ order_number: order.order_number,
118
+ reason: {
119
+ field: 'order_sales_channel',
120
+ actual: order.order_sales_channel,
121
+ expected: safeFilters.order_sales_channel
122
+ }
123
+ });
68
124
  return false;
69
125
  }
70
126
  }
@@ -72,12 +128,30 @@ export function filterOrders(orders, filters) {
72
128
  // payment_methods - 支付方式
73
129
  if (safeFilters.payment_methods && safeFilters.payment_methods.length > 0) {
74
130
  if (!order.payment_methods || !Array.isArray(order.payment_methods) || order.payment_methods.length === 0) {
131
+ rejected.push({
132
+ order_id: order.order_id,
133
+ order_number: order.order_number,
134
+ reason: {
135
+ field: 'payment_methods',
136
+ actual: order.payment_methods,
137
+ expected: safeFilters.payment_methods
138
+ }
139
+ });
75
140
  return false;
76
141
  }
77
142
  var hasMatch = order.payment_methods.some(function (pm) {
78
143
  return safeFilters.payment_methods.includes(pm);
79
144
  });
80
145
  if (!hasMatch) {
146
+ rejected.push({
147
+ order_id: order.order_id,
148
+ order_number: order.order_number,
149
+ reason: {
150
+ field: 'payment_methods',
151
+ actual: order.payment_methods,
152
+ expected: safeFilters.payment_methods
153
+ }
154
+ });
81
155
  return false;
82
156
  }
83
157
  }
@@ -86,9 +160,27 @@ export function filterOrders(orders, filters) {
86
160
  if (safeFilters.min_total_amount !== undefined || safeFilters.max_total_amount !== undefined) {
87
161
  var orderAmount = parseFloat(String(order.total_amount || 0));
88
162
  if (safeFilters.min_total_amount !== undefined && orderAmount < safeFilters.min_total_amount) {
163
+ rejected.push({
164
+ order_id: order.order_id,
165
+ order_number: order.order_number,
166
+ reason: {
167
+ field: 'min_total_amount',
168
+ actual: order.total_amount,
169
+ expected: safeFilters.min_total_amount
170
+ }
171
+ });
89
172
  return false;
90
173
  }
91
174
  if (safeFilters.max_total_amount !== undefined && orderAmount > safeFilters.max_total_amount) {
175
+ rejected.push({
176
+ order_id: order.order_id,
177
+ order_number: order.order_number,
178
+ reason: {
179
+ field: 'max_total_amount',
180
+ actual: order.total_amount,
181
+ expected: safeFilters.max_total_amount
182
+ }
183
+ });
92
184
  return false;
93
185
  }
94
186
  }
@@ -96,6 +188,15 @@ export function filterOrders(orders, filters) {
96
188
  // tag_ids - 标签(统一 String 比较,兼容 number/string)
97
189
  if (safeFilters.tag_ids && safeFilters.tag_ids.length > 0) {
98
190
  if (!order.tag_ids || !Array.isArray(order.tag_ids) || order.tag_ids.length === 0) {
191
+ rejected.push({
192
+ order_id: order.order_id,
193
+ order_number: order.order_number,
194
+ reason: {
195
+ field: 'tag_ids',
196
+ actual: order.tag_ids,
197
+ expected: safeFilters.tag_ids
198
+ }
199
+ });
99
200
  return false;
100
201
  }
101
202
  var filterTagSet = new Set(safeFilters.tag_ids.map(String));
@@ -103,6 +204,15 @@ export function filterOrders(orders, filters) {
103
204
  return filterTagSet.has(String(tag));
104
205
  });
105
206
  if (!_hasMatch) {
207
+ rejected.push({
208
+ order_id: order.order_id,
209
+ order_number: order.order_number,
210
+ reason: {
211
+ field: 'tag_ids',
212
+ actual: order.tag_ids,
213
+ expected: safeFilters.tag_ids
214
+ }
215
+ });
106
216
  return false;
107
217
  }
108
218
  }
@@ -110,6 +220,15 @@ export function filterOrders(orders, filters) {
110
220
  // shipping_type - 配送方式
111
221
  if (safeFilters.shipping_type && safeFilters.shipping_type.length > 0) {
112
222
  if (!order.shipping_type || !safeFilters.shipping_type.includes(order.shipping_type)) {
223
+ rejected.push({
224
+ order_id: order.order_id,
225
+ order_number: order.order_number,
226
+ reason: {
227
+ field: 'shipping_type',
228
+ actual: order.shipping_type,
229
+ expected: safeFilters.shipping_type
230
+ }
231
+ });
113
232
  return false;
114
233
  }
115
234
  }
@@ -117,6 +236,15 @@ export function filterOrders(orders, filters) {
117
236
  // delivery_zone_name - 配送区域(模糊匹配)
118
237
  if (safeFilters.delivery_zone_name !== undefined && safeFilters.delivery_zone_name !== null && safeFilters.delivery_zone_name !== '') {
119
238
  if (!order.delivery_zone_name || !order.delivery_zone_name.toLowerCase().includes(safeFilters.delivery_zone_name.toLowerCase())) {
239
+ rejected.push({
240
+ order_id: order.order_id,
241
+ order_number: order.order_number,
242
+ reason: {
243
+ field: 'delivery_zone_name',
244
+ actual: order.delivery_zone_name,
245
+ expected: safeFilters.delivery_zone_name
246
+ }
247
+ });
120
248
  return false;
121
249
  }
122
250
  }
@@ -124,6 +252,15 @@ export function filterOrders(orders, filters) {
124
252
  // location_id - 取货地点(精确匹配)
125
253
  if (safeFilters.location_id !== undefined && safeFilters.location_id !== null) {
126
254
  if (String(order.location_id) !== String(safeFilters.location_id)) {
255
+ rejected.push({
256
+ order_id: order.order_id,
257
+ order_number: order.order_number,
258
+ reason: {
259
+ field: 'location_id',
260
+ actual: order.location_id,
261
+ expected: safeFilters.location_id
262
+ }
263
+ });
127
264
  return false;
128
265
  }
129
266
  }
@@ -131,6 +268,15 @@ export function filterOrders(orders, filters) {
131
268
  // shipping_order_number - 物流单号(模糊匹配)
132
269
  if (safeFilters.shipping_order_number !== undefined && safeFilters.shipping_order_number !== null && safeFilters.shipping_order_number !== '') {
133
270
  if (!order.shipping_order_number || !order.shipping_order_number.toLowerCase().includes(safeFilters.shipping_order_number.toLowerCase())) {
271
+ rejected.push({
272
+ order_id: order.order_id,
273
+ order_number: order.order_number,
274
+ reason: {
275
+ field: 'shipping_order_number',
276
+ actual: order.shipping_order_number,
277
+ expected: safeFilters.shipping_order_number
278
+ }
279
+ });
134
280
  return false;
135
281
  }
136
282
  }
@@ -138,6 +284,15 @@ export function filterOrders(orders, filters) {
138
284
  // logistics_company_id - 物流公司
139
285
  if (safeFilters.logistics_company_id && safeFilters.logistics_company_id.length > 0) {
140
286
  if (!order.logistics_company_id) {
287
+ rejected.push({
288
+ order_id: order.order_id,
289
+ order_number: order.order_number,
290
+ reason: {
291
+ field: 'logistics_company_id',
292
+ actual: order.logistics_company_id,
293
+ expected: safeFilters.logistics_company_id
294
+ }
295
+ });
141
296
  return false;
142
297
  }
143
298
  var orderLogisticsId = String(order.logistics_company_id);
@@ -145,6 +300,15 @@ export function filterOrders(orders, filters) {
145
300
  return String(id) === orderLogisticsId;
146
301
  });
147
302
  if (!_hasMatch2) {
303
+ rejected.push({
304
+ order_id: order.order_id,
305
+ order_number: order.order_number,
306
+ reason: {
307
+ field: 'logistics_company_id',
308
+ actual: order.logistics_company_id,
309
+ expected: safeFilters.logistics_company_id
310
+ }
311
+ });
148
312
  return false;
149
313
  }
150
314
  }
@@ -152,6 +316,15 @@ export function filterOrders(orders, filters) {
152
316
  // zip - 邮编(模糊匹配)
153
317
  if (safeFilters.zip !== undefined && safeFilters.zip !== null && safeFilters.zip !== '') {
154
318
  if (!order.zip || !order.zip.toLowerCase().includes(safeFilters.zip.toLowerCase())) {
319
+ rejected.push({
320
+ order_id: order.order_id,
321
+ order_number: order.order_number,
322
+ reason: {
323
+ field: 'zip',
324
+ actual: order.zip,
325
+ expected: safeFilters.zip
326
+ }
327
+ });
155
328
  return false;
156
329
  }
157
330
  }
@@ -159,6 +332,15 @@ export function filterOrders(orders, filters) {
159
332
  // business_code - 业务类型(精确匹配)
160
333
  if (safeFilters.business_code) {
161
334
  if (!order.business_code || order.business_code !== safeFilters.business_code) {
335
+ rejected.push({
336
+ order_id: order.order_id,
337
+ order_number: order.order_number,
338
+ reason: {
339
+ field: 'business_code',
340
+ actual: order.business_code,
341
+ expected: safeFilters.business_code
342
+ }
343
+ });
162
344
  return false;
163
345
  }
164
346
  }
@@ -168,12 +350,34 @@ export function filterOrders(orders, filters) {
168
350
  var orderTime = order.created_at ? typeof order.created_at === 'number' ? order.created_at : new Date(String(order.created_at)).getTime() : 0;
169
351
  if (safeFilters.start_time) {
170
352
  var startTs = new Date(safeFilters.start_time).getTime();
171
- if (orderTime < startTs) return false;
353
+ if (orderTime < startTs) {
354
+ rejected.push({
355
+ order_id: order.order_id,
356
+ order_number: order.order_number,
357
+ reason: {
358
+ field: 'start_time',
359
+ actual: order.created_at,
360
+ expected: safeFilters.start_time
361
+ }
362
+ });
363
+ return false;
364
+ }
172
365
  }
173
366
  if (safeFilters.end_time) {
174
367
  // end_time 为当天结束(23:59:59.999)
175
368
  var endTs = new Date(safeFilters.end_time).getTime() + 86400000 - 1;
176
- if (orderTime > endTs) return false;
369
+ if (orderTime > endTs) {
370
+ rejected.push({
371
+ order_id: order.order_id,
372
+ order_number: order.order_number,
373
+ reason: {
374
+ field: 'end_time',
375
+ actual: order.created_at,
376
+ expected: safeFilters.end_time
377
+ }
378
+ });
379
+ return false;
380
+ }
177
381
  }
178
382
  }
179
383
  return true;
@@ -227,6 +431,7 @@ export function filterOrders(orders, filters) {
227
431
  list: paginatedList,
228
432
  count: totalCount,
229
433
  size: size,
230
- skip: page
434
+ skip: page,
435
+ rejected: rejected
231
436
  };
232
437
  }
@@ -1710,7 +1710,8 @@ var Server = class {
1710
1710
  rawCount: rawList.length,
1711
1711
  filteredCount: result.count,
1712
1712
  size: result.size,
1713
- skip: result.skip
1713
+ skip: result.skip,
1714
+ rejected: result.rejected
1714
1715
  });
1715
1716
  return {
1716
1717
  code: 200,
@@ -14,7 +14,7 @@ export { QuotationHooks } from './quotation/types';
14
14
  export { ScheduleModuleEx } from './schedule';
15
15
  export type { ScheduleState, ScheduleItem } from './schedule/types';
16
16
  export { OrderModule } from './order';
17
- export type { OrderState, OrderData, OrderId, OrderSummary, OrderBookingItem, OrderProductLineItem, OrderPaymentItem, OrderSurchargeItem, OrderProductDiscountItem, OrderWithoutBookings, BookingData, OrderFilters, BookingFilters, OrderFilterResult, BookingFilterResult, OrderModulePagedResult, } from './order/types';
17
+ export type { OrderState, OrderData, OrderId, OrderSummary, OrderBookingItem, OrderProductLineItem, OrderPaymentItem, OrderSurchargeItem, OrderProductDiscountItem, OrderWithoutBookings, BookingData, OrderFilters, BookingFilters, OrderFilterResult, OrderFilterRejectDetail, OrderFilterRejectedEntry, BookingFilterResult, OrderModulePagedResult, } from './order/types';
18
18
  export { OrderHooks } from './order/types';
19
19
  export { FloorPlanModule } from './floor-plan';
20
20
  export type { FloorPlanItem, FloorPlanState, FloorPlanSyncMessage } from './floor-plan/types';
@@ -479,7 +479,27 @@ export interface OrderModulePagedResult<T> {
479
479
  size: number;
480
480
  skip: number;
481
481
  }
482
- export type OrderFilterResult = OrderModulePagedResult<OrderData>;
482
+ /** 单条筛选未命中说明(用于排查过滤原因) */
483
+ export interface OrderFilterRejectDetail {
484
+ /** 对应 OrderFilters 维度的标识 */
485
+ field: string;
486
+ /** 订单上该维度的当前值 */
487
+ actual: unknown;
488
+ /** 本次筛选的期望值/区间(便于对照) */
489
+ expected?: unknown;
490
+ }
491
+ /** 未通过筛选的订单及首个未满足条件(与过滤短路顺序一致) */
492
+ export interface OrderFilterRejectedEntry {
493
+ order_id?: OrderId | null;
494
+ /** 系统订单号等,便于与业务「订单号」对照 */
495
+ order_number?: string;
496
+ /** 按筛选顺序命中的第一条未满足条件 */
497
+ reason: OrderFilterRejectDetail;
498
+ }
499
+ export type OrderFilterResult = OrderModulePagedResult<OrderData> & {
500
+ /** 被过滤掉的订单及首个命中原因(与筛选短路顺序一致;不含仅分页未展示的已通过订单) */
501
+ rejected: OrderFilterRejectedEntry[];
502
+ };
483
503
  export type BookingFilterResult = OrderModulePagedResult<BookingData>;
484
504
  /**
485
505
  * SSE 同步配置
@@ -29,107 +29,289 @@ function filterOrders(orders, filters) {
29
29
  list: [],
30
30
  count: 0,
31
31
  size: 0,
32
- skip: 0
32
+ skip: 0,
33
+ rejected: []
33
34
  };
34
35
  }
35
36
  const size = safeFilters.num || 20;
36
37
  const page = safeFilters.skip || 1;
38
+ const rejected = [];
37
39
  let filteredList = orders.filter((order) => {
38
40
  if (safeFilters.keyword) {
39
41
  if (!JSON.stringify(order).toLowerCase().includes(safeFilters.keyword.toLowerCase())) {
42
+ rejected.push({
43
+ order_id: order.order_id,
44
+ order_number: order.order_number,
45
+ reason: {
46
+ field: "keyword",
47
+ actual: "",
48
+ expected: safeFilters.keyword
49
+ }
50
+ });
40
51
  return false;
41
52
  }
42
53
  }
43
54
  if (safeFilters.status && safeFilters.status.length > 0) {
44
55
  if (!order.status || !safeFilters.status.includes(order.status)) {
56
+ rejected.push({
57
+ order_id: order.order_id,
58
+ order_number: order.order_number,
59
+ reason: {
60
+ field: "status",
61
+ actual: order.status,
62
+ expected: safeFilters.status
63
+ }
64
+ });
45
65
  return false;
46
66
  }
47
67
  }
48
68
  if (safeFilters.payment_status && safeFilters.payment_status.length > 0) {
49
69
  if (!order.payment_status || !safeFilters.payment_status.includes(order.payment_status)) {
70
+ rejected.push({
71
+ order_id: order.order_id,
72
+ order_number: order.order_number,
73
+ reason: {
74
+ field: "payment_status",
75
+ actual: order.payment_status,
76
+ expected: safeFilters.payment_status
77
+ }
78
+ });
50
79
  return false;
51
80
  }
52
81
  }
53
82
  if (safeFilters.shipping_status && safeFilters.shipping_status.length > 0) {
54
83
  if (!order.shipping_status || !safeFilters.shipping_status.includes(order.shipping_status)) {
84
+ rejected.push({
85
+ order_id: order.order_id,
86
+ order_number: order.order_number,
87
+ reason: {
88
+ field: "shipping_status",
89
+ actual: order.shipping_status,
90
+ expected: safeFilters.shipping_status
91
+ }
92
+ });
55
93
  return false;
56
94
  }
57
95
  }
58
96
  if (safeFilters.customer_id !== void 0 && safeFilters.customer_id !== null) {
59
97
  if (String(order.customer_id) !== String(safeFilters.customer_id)) {
98
+ rejected.push({
99
+ order_id: order.order_id,
100
+ order_number: order.order_number,
101
+ reason: {
102
+ field: "customer_id",
103
+ actual: order.customer_id,
104
+ expected: safeFilters.customer_id
105
+ }
106
+ });
60
107
  return false;
61
108
  }
62
109
  }
63
110
  if (safeFilters.order_sales_channel && safeFilters.order_sales_channel.length > 0) {
64
111
  if (!order.order_sales_channel || !safeFilters.order_sales_channel.includes(order.order_sales_channel)) {
112
+ rejected.push({
113
+ order_id: order.order_id,
114
+ order_number: order.order_number,
115
+ reason: {
116
+ field: "order_sales_channel",
117
+ actual: order.order_sales_channel,
118
+ expected: safeFilters.order_sales_channel
119
+ }
120
+ });
65
121
  return false;
66
122
  }
67
123
  }
68
124
  if (safeFilters.payment_methods && safeFilters.payment_methods.length > 0) {
69
125
  if (!order.payment_methods || !Array.isArray(order.payment_methods) || order.payment_methods.length === 0) {
126
+ rejected.push({
127
+ order_id: order.order_id,
128
+ order_number: order.order_number,
129
+ reason: {
130
+ field: "payment_methods",
131
+ actual: order.payment_methods,
132
+ expected: safeFilters.payment_methods
133
+ }
134
+ });
70
135
  return false;
71
136
  }
72
137
  const hasMatch = order.payment_methods.some((pm) => safeFilters.payment_methods.includes(pm));
73
138
  if (!hasMatch) {
139
+ rejected.push({
140
+ order_id: order.order_id,
141
+ order_number: order.order_number,
142
+ reason: {
143
+ field: "payment_methods",
144
+ actual: order.payment_methods,
145
+ expected: safeFilters.payment_methods
146
+ }
147
+ });
74
148
  return false;
75
149
  }
76
150
  }
77
151
  if (safeFilters.min_total_amount !== void 0 || safeFilters.max_total_amount !== void 0) {
78
152
  const orderAmount = parseFloat(String(order.total_amount || 0));
79
153
  if (safeFilters.min_total_amount !== void 0 && orderAmount < safeFilters.min_total_amount) {
154
+ rejected.push({
155
+ order_id: order.order_id,
156
+ order_number: order.order_number,
157
+ reason: {
158
+ field: "min_total_amount",
159
+ actual: order.total_amount,
160
+ expected: safeFilters.min_total_amount
161
+ }
162
+ });
80
163
  return false;
81
164
  }
82
165
  if (safeFilters.max_total_amount !== void 0 && orderAmount > safeFilters.max_total_amount) {
166
+ rejected.push({
167
+ order_id: order.order_id,
168
+ order_number: order.order_number,
169
+ reason: {
170
+ field: "max_total_amount",
171
+ actual: order.total_amount,
172
+ expected: safeFilters.max_total_amount
173
+ }
174
+ });
83
175
  return false;
84
176
  }
85
177
  }
86
178
  if (safeFilters.tag_ids && safeFilters.tag_ids.length > 0) {
87
179
  if (!order.tag_ids || !Array.isArray(order.tag_ids) || order.tag_ids.length === 0) {
180
+ rejected.push({
181
+ order_id: order.order_id,
182
+ order_number: order.order_number,
183
+ reason: {
184
+ field: "tag_ids",
185
+ actual: order.tag_ids,
186
+ expected: safeFilters.tag_ids
187
+ }
188
+ });
88
189
  return false;
89
190
  }
90
191
  const filterTagSet = new Set(safeFilters.tag_ids.map(String));
91
192
  const hasMatch = order.tag_ids.some((tag) => filterTagSet.has(String(tag)));
92
193
  if (!hasMatch) {
194
+ rejected.push({
195
+ order_id: order.order_id,
196
+ order_number: order.order_number,
197
+ reason: {
198
+ field: "tag_ids",
199
+ actual: order.tag_ids,
200
+ expected: safeFilters.tag_ids
201
+ }
202
+ });
93
203
  return false;
94
204
  }
95
205
  }
96
206
  if (safeFilters.shipping_type && safeFilters.shipping_type.length > 0) {
97
207
  if (!order.shipping_type || !safeFilters.shipping_type.includes(order.shipping_type)) {
208
+ rejected.push({
209
+ order_id: order.order_id,
210
+ order_number: order.order_number,
211
+ reason: {
212
+ field: "shipping_type",
213
+ actual: order.shipping_type,
214
+ expected: safeFilters.shipping_type
215
+ }
216
+ });
98
217
  return false;
99
218
  }
100
219
  }
101
220
  if (safeFilters.delivery_zone_name !== void 0 && safeFilters.delivery_zone_name !== null && safeFilters.delivery_zone_name !== "") {
102
221
  if (!order.delivery_zone_name || !order.delivery_zone_name.toLowerCase().includes(safeFilters.delivery_zone_name.toLowerCase())) {
222
+ rejected.push({
223
+ order_id: order.order_id,
224
+ order_number: order.order_number,
225
+ reason: {
226
+ field: "delivery_zone_name",
227
+ actual: order.delivery_zone_name,
228
+ expected: safeFilters.delivery_zone_name
229
+ }
230
+ });
103
231
  return false;
104
232
  }
105
233
  }
106
234
  if (safeFilters.location_id !== void 0 && safeFilters.location_id !== null) {
107
235
  if (String(order.location_id) !== String(safeFilters.location_id)) {
236
+ rejected.push({
237
+ order_id: order.order_id,
238
+ order_number: order.order_number,
239
+ reason: {
240
+ field: "location_id",
241
+ actual: order.location_id,
242
+ expected: safeFilters.location_id
243
+ }
244
+ });
108
245
  return false;
109
246
  }
110
247
  }
111
248
  if (safeFilters.shipping_order_number !== void 0 && safeFilters.shipping_order_number !== null && safeFilters.shipping_order_number !== "") {
112
249
  if (!order.shipping_order_number || !order.shipping_order_number.toLowerCase().includes(safeFilters.shipping_order_number.toLowerCase())) {
250
+ rejected.push({
251
+ order_id: order.order_id,
252
+ order_number: order.order_number,
253
+ reason: {
254
+ field: "shipping_order_number",
255
+ actual: order.shipping_order_number,
256
+ expected: safeFilters.shipping_order_number
257
+ }
258
+ });
113
259
  return false;
114
260
  }
115
261
  }
116
262
  if (safeFilters.logistics_company_id && safeFilters.logistics_company_id.length > 0) {
117
263
  if (!order.logistics_company_id) {
264
+ rejected.push({
265
+ order_id: order.order_id,
266
+ order_number: order.order_number,
267
+ reason: {
268
+ field: "logistics_company_id",
269
+ actual: order.logistics_company_id,
270
+ expected: safeFilters.logistics_company_id
271
+ }
272
+ });
118
273
  return false;
119
274
  }
120
275
  const orderLogisticsId = String(order.logistics_company_id);
121
276
  const hasMatch = safeFilters.logistics_company_id.some((id) => String(id) === orderLogisticsId);
122
277
  if (!hasMatch) {
278
+ rejected.push({
279
+ order_id: order.order_id,
280
+ order_number: order.order_number,
281
+ reason: {
282
+ field: "logistics_company_id",
283
+ actual: order.logistics_company_id,
284
+ expected: safeFilters.logistics_company_id
285
+ }
286
+ });
123
287
  return false;
124
288
  }
125
289
  }
126
290
  if (safeFilters.zip !== void 0 && safeFilters.zip !== null && safeFilters.zip !== "") {
127
291
  if (!order.zip || !order.zip.toLowerCase().includes(safeFilters.zip.toLowerCase())) {
292
+ rejected.push({
293
+ order_id: order.order_id,
294
+ order_number: order.order_number,
295
+ reason: {
296
+ field: "zip",
297
+ actual: order.zip,
298
+ expected: safeFilters.zip
299
+ }
300
+ });
128
301
  return false;
129
302
  }
130
303
  }
131
304
  if (safeFilters.business_code) {
132
305
  if (!order.business_code || order.business_code !== safeFilters.business_code) {
306
+ rejected.push({
307
+ order_id: order.order_id,
308
+ order_number: order.order_number,
309
+ reason: {
310
+ field: "business_code",
311
+ actual: order.business_code,
312
+ expected: safeFilters.business_code
313
+ }
314
+ });
133
315
  return false;
134
316
  }
135
317
  }
@@ -137,13 +319,33 @@ function filterOrders(orders, filters) {
137
319
  const orderTime = order.created_at ? typeof order.created_at === "number" ? order.created_at : new Date(String(order.created_at)).getTime() : 0;
138
320
  if (safeFilters.start_time) {
139
321
  const startTs = new Date(safeFilters.start_time).getTime();
140
- if (orderTime < startTs)
322
+ if (orderTime < startTs) {
323
+ rejected.push({
324
+ order_id: order.order_id,
325
+ order_number: order.order_number,
326
+ reason: {
327
+ field: "start_time",
328
+ actual: order.created_at,
329
+ expected: safeFilters.start_time
330
+ }
331
+ });
141
332
  return false;
333
+ }
142
334
  }
143
335
  if (safeFilters.end_time) {
144
336
  const endTs = new Date(safeFilters.end_time).getTime() + 864e5 - 1;
145
- if (orderTime > endTs)
337
+ if (orderTime > endTs) {
338
+ rejected.push({
339
+ order_id: order.order_id,
340
+ order_number: order.order_number,
341
+ reason: {
342
+ field: "end_time",
343
+ actual: order.created_at,
344
+ expected: safeFilters.end_time
345
+ }
346
+ });
146
347
  return false;
348
+ }
147
349
  }
148
350
  }
149
351
  return true;
@@ -193,7 +395,8 @@ function filterOrders(orders, filters) {
193
395
  list: paginatedList,
194
396
  count: totalCount,
195
397
  size,
196
- skip: page
398
+ skip: page,
399
+ rejected
197
400
  };
198
401
  }
199
402
  // Annotate the CommonJS export names for ESM import in node:
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": false,
3
3
  "name": "@pisell/pisellos",
4
- "version": "2.2.141",
4
+ "version": "2.2.142",
5
5
  "description": "一个可扩展的前端模块化SDK框架,支持插件系统",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",