@floristcloud/api-lib 1.2.138 → 1.2.139

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.
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PriceCorrectionAnalyzeContractCommand = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const schemas_1 = require("../../../schemas");
6
+ const PRICE_CORRECTION_ANALYZE_DEFAULT_LIMIT = 200;
7
+ const PRICE_CORRECTION_ANALYZE_MAX_LIMIT = 1000;
6
8
  const PriceCorrectionAnalyzeRequestSchema = zod_1.z
7
9
  .object({
8
10
  productUUIDList: zod_1.z.array(zod_1.z.string().uuid()).optional(),
@@ -11,6 +13,18 @@ const PriceCorrectionAnalyzeRequestSchema = zod_1.z
11
13
  // меняются единицы. По умолчанию отдаём только те, где цена реально расходится; полный
12
14
  // список — режим «показать всё».
13
15
  onlyChanged: zod_1.z.boolean().optional().default(true),
16
+ // Страница обязательна по смыслу, а не по схеме: строк здесь товары × заказы, то есть
17
+ // десятки тысяч на партию, и безлимитная выдача кладёт запрос независимо от того, сколько
18
+ // из неё нарисует таблица. Усечение при этом урезает только предпросмотр — execute в
19
+ // scope-форме пересобирает набор на сервере и списком из analyze не пользуется.
20
+ page: zod_1.z.number().int().positive().optional().default(1),
21
+ limit: zod_1.z
22
+ .number()
23
+ .int()
24
+ .positive()
25
+ .max(PRICE_CORRECTION_ANALYZE_MAX_LIMIT)
26
+ .optional()
27
+ .default(PRICE_CORRECTION_ANALYZE_DEFAULT_LIMIT),
14
28
  })
15
29
  .refine(data => { var _a; return ((_a = data.productUUIDList) === null || _a === void 0 ? void 0 : _a.length) || data.consignmentUUID; }, {
16
30
  message: 'validation.productListOrConsignment',
@@ -19,11 +33,15 @@ const PriceCorrectionAnalyzeResponseSchema = zod_1.z.object({
19
33
  message: zod_1.z.string().optional(),
20
34
  data: zod_1.z.object({
21
35
  items: zod_1.z.array(schemas_1.PriceCorrectionAnalyzeItemSchema),
36
+ // Сколько строк во всём наборе после фильтра `onlyChanged`, а не на странице.
37
+ total: zod_1.z.number(),
22
38
  }),
23
39
  });
24
40
  var PriceCorrectionAnalyzeContractCommand;
25
41
  (function (PriceCorrectionAnalyzeContractCommand) {
26
42
  PriceCorrectionAnalyzeContractCommand.RequestSchema = PriceCorrectionAnalyzeRequestSchema;
43
+ PriceCorrectionAnalyzeContractCommand.DEFAULT_LIMIT = PRICE_CORRECTION_ANALYZE_DEFAULT_LIMIT;
44
+ PriceCorrectionAnalyzeContractCommand.MAX_LIMIT = PRICE_CORRECTION_ANALYZE_MAX_LIMIT;
27
45
  PriceCorrectionAnalyzeContractCommand.ItemSchema = schemas_1.PriceCorrectionAnalyzeItemSchema;
28
46
  PriceCorrectionAnalyzeContractCommand.ResponseSchema = PriceCorrectionAnalyzeResponseSchema;
29
47
  })(PriceCorrectionAnalyzeContractCommand || (exports.PriceCorrectionAnalyzeContractCommand = PriceCorrectionAnalyzeContractCommand = {}));
@@ -4,6 +4,10 @@ exports.PriceCorrectionExecuteContractCommand = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const schemas_1 = require("../../../schemas");
6
6
  const PRICE_CORRECTION_BATCH_LIMIT = 50;
7
+ // Потолок на число строк в ответе scope-формы. Ошибки не обязаны быть редкими: коррекция старой
8
+ // партии, где все заказы закрыты, даёт отказ по статусу на каждую позицию, и без потолка ответ
9
+ // снова становится O(позиций). Сколько их всего — видно по `skippedCount` и разбивке `orders`.
10
+ const PRICE_CORRECTION_RESULTS_LIMIT = 200;
7
11
  /**
8
12
  * Две формы адресации, ровно одна на запрос.
9
13
  *
@@ -18,6 +22,9 @@ const PriceCorrectionExecuteRequestSchema = zod_1.z
18
22
  consignmentUUID: zod_1.z.string().uuid().optional(),
19
23
  productUUIDList: zod_1.z.array(zod_1.z.string().uuid()).min(1).optional(),
20
24
  excludeOrderProductUUIDList: zod_1.z.array(zod_1.z.string().uuid()).optional(),
25
+ // Снять товар целиком — одним uuid, а не списком всех его позиций: иначе запрос снова
26
+ // становится O(позиций), от чего и уходили.
27
+ excludeProductUUIDList: zod_1.z.array(zod_1.z.string().uuid()).optional(),
21
28
  onlyChanged: zod_1.z.boolean().optional().default(true),
22
29
  withDiscount: zod_1.z.boolean(),
23
30
  })
@@ -37,11 +44,14 @@ const PriceCorrectionExecuteResponseSchema = zod_1.z.object({
37
44
  orders: zod_1.z.array(schemas_1.PriceCorrectionExecuteOrderItemSchema),
38
45
  successCount: zod_1.z.number(),
39
46
  skippedCount: zod_1.z.number(),
47
+ // `results` в scope-форме обрезан по лимиту. Полные числа — в счётчиках и в `orders`.
48
+ isTruncated: zod_1.z.boolean(),
40
49
  }),
41
50
  });
42
51
  var PriceCorrectionExecuteContractCommand;
43
52
  (function (PriceCorrectionExecuteContractCommand) {
44
53
  PriceCorrectionExecuteContractCommand.RequestSchema = PriceCorrectionExecuteRequestSchema;
45
54
  PriceCorrectionExecuteContractCommand.BATCH_LIMIT = PRICE_CORRECTION_BATCH_LIMIT;
55
+ PriceCorrectionExecuteContractCommand.RESULTS_LIMIT = PRICE_CORRECTION_RESULTS_LIMIT;
46
56
  PriceCorrectionExecuteContractCommand.ResponseSchema = PriceCorrectionExecuteResponseSchema;
47
57
  })(PriceCorrectionExecuteContractCommand || (exports.PriceCorrectionExecuteContractCommand = PriceCorrectionExecuteContractCommand = {}));
@@ -1,6 +1,9 @@
1
1
  import { z } from 'zod';
2
2
  import { PriceCorrectionAnalyzeItemSchema } from '../../../schemas';
3
3
 
4
+ const PRICE_CORRECTION_ANALYZE_DEFAULT_LIMIT = 200;
5
+ const PRICE_CORRECTION_ANALYZE_MAX_LIMIT = 1000;
6
+
4
7
  const PriceCorrectionAnalyzeRequestSchema = z
5
8
  .object({
6
9
  productUUIDList: z.array(z.string().uuid()).optional(),
@@ -9,6 +12,19 @@ const PriceCorrectionAnalyzeRequestSchema = z
9
12
  // меняются единицы. По умолчанию отдаём только те, где цена реально расходится; полный
10
13
  // список — режим «показать всё».
11
14
  onlyChanged: z.boolean().optional().default(true),
15
+
16
+ // Страница обязательна по смыслу, а не по схеме: строк здесь товары × заказы, то есть
17
+ // десятки тысяч на партию, и безлимитная выдача кладёт запрос независимо от того, сколько
18
+ // из неё нарисует таблица. Усечение при этом урезает только предпросмотр — execute в
19
+ // scope-форме пересобирает набор на сервере и списком из analyze не пользуется.
20
+ page: z.number().int().positive().optional().default(1),
21
+ limit: z
22
+ .number()
23
+ .int()
24
+ .positive()
25
+ .max(PRICE_CORRECTION_ANALYZE_MAX_LIMIT)
26
+ .optional()
27
+ .default(PRICE_CORRECTION_ANALYZE_DEFAULT_LIMIT),
12
28
  })
13
29
  .refine(data => data.productUUIDList?.length || data.consignmentUUID, {
14
30
  message: 'validation.productListOrConsignment',
@@ -18,6 +34,8 @@ const PriceCorrectionAnalyzeResponseSchema = z.object({
18
34
  message: z.string().optional(),
19
35
  data: z.object({
20
36
  items: z.array(PriceCorrectionAnalyzeItemSchema),
37
+ // Сколько строк во всём наборе после фильтра `onlyChanged`, а не на странице.
38
+ total: z.number(),
21
39
  }),
22
40
  });
23
41
 
@@ -25,6 +43,9 @@ export namespace PriceCorrectionAnalyzeContractCommand {
25
43
  export const RequestSchema = PriceCorrectionAnalyzeRequestSchema;
26
44
  export type Request = z.infer<typeof RequestSchema>;
27
45
 
46
+ export const DEFAULT_LIMIT = PRICE_CORRECTION_ANALYZE_DEFAULT_LIMIT;
47
+ export const MAX_LIMIT = PRICE_CORRECTION_ANALYZE_MAX_LIMIT;
48
+
28
49
  export const ItemSchema = PriceCorrectionAnalyzeItemSchema;
29
50
  export type Item = z.infer<typeof ItemSchema>;
30
51
 
@@ -3,6 +3,11 @@ import { PriceCorrectionExecuteOrderItemSchema, PriceCorrectionExecuteResultItem
3
3
 
4
4
  const PRICE_CORRECTION_BATCH_LIMIT = 50;
5
5
 
6
+ // Потолок на число строк в ответе scope-формы. Ошибки не обязаны быть редкими: коррекция старой
7
+ // партии, где все заказы закрыты, даёт отказ по статусу на каждую позицию, и без потолка ответ
8
+ // снова становится O(позиций). Сколько их всего — видно по `skippedCount` и разбивке `orders`.
9
+ const PRICE_CORRECTION_RESULTS_LIMIT = 200;
10
+
6
11
  /**
7
12
  * Две формы адресации, ровно одна на запрос.
8
13
  *
@@ -18,6 +23,9 @@ const PriceCorrectionExecuteRequestSchema = z
18
23
  consignmentUUID: z.string().uuid().optional(),
19
24
  productUUIDList: z.array(z.string().uuid()).min(1).optional(),
20
25
  excludeOrderProductUUIDList: z.array(z.string().uuid()).optional(),
26
+ // Снять товар целиком — одним uuid, а не списком всех его позиций: иначе запрос снова
27
+ // становится O(позиций), от чего и уходили.
28
+ excludeProductUUIDList: z.array(z.string().uuid()).optional(),
21
29
  onlyChanged: z.boolean().optional().default(true),
22
30
 
23
31
  withDiscount: z.boolean(),
@@ -41,6 +49,8 @@ const PriceCorrectionExecuteResponseSchema = z.object({
41
49
  orders: z.array(PriceCorrectionExecuteOrderItemSchema),
42
50
  successCount: z.number(),
43
51
  skippedCount: z.number(),
52
+ // `results` в scope-форме обрезан по лимиту. Полные числа — в счётчиках и в `orders`.
53
+ isTruncated: z.boolean(),
44
54
  }),
45
55
  });
46
56
 
@@ -49,6 +59,7 @@ export namespace PriceCorrectionExecuteContractCommand {
49
59
  export type Request = z.infer<typeof RequestSchema>;
50
60
 
51
61
  export const BATCH_LIMIT = PRICE_CORRECTION_BATCH_LIMIT;
62
+ export const RESULTS_LIMIT = PRICE_CORRECTION_RESULTS_LIMIT;
52
63
 
53
64
  export const ResponseSchema = PriceCorrectionExecuteResponseSchema;
54
65
  export type Response = z.infer<typeof ResponseSchema>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floristcloud/api-lib",
3
- "version": "1.2.138",
3
+ "version": "1.2.139",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "scripts": {