@floristcloud/api-lib 1.2.157 → 1.2.158

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.
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnalyzeConsignmentProductUpdateContractCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const error_message_schema_1 = require("../../schemas/error-message.schema");
6
+ const AnalyzeMatchedRowSchema = zod_1.z.object({
7
+ uuid: zod_1.z.string(),
8
+ // Изменения позиции фронт не разбирает, а пересылает как есть в execute: там они и валидируются.
9
+ updates: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()),
10
+ rowIndex: zod_1.z.number(),
11
+ originalData: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()),
12
+ });
13
+ const AnalyzeUnmatchedRowSchema = zod_1.z.object({
14
+ // Индекс от первой строки данных; для показа пользователю — `row`.
15
+ rowIndex: zod_1.z.number(),
16
+ // Номер строки в Excel, как его видит пользователь.
17
+ row: zod_1.z.number(),
18
+ data: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()),
19
+ // Подробная причина по-английски, для логов и как запасной текст.
20
+ reason: zod_1.z.string(),
21
+ // Причина для перевода: `code` из ERRORS и параметры подстановки.
22
+ error: error_message_schema_1.ErrorMessageSchema,
23
+ });
24
+ const AnalyzeRowErrorSchema = error_message_schema_1.ErrorMessageSchema.extend({
25
+ row: zod_1.z.number(),
26
+ });
27
+ const AnalyzeConsignmentProductUpdateResponseSchema = zod_1.z.object({
28
+ data: zod_1.z.object({
29
+ success: zod_1.z.boolean(),
30
+ totalRows: zod_1.z.number(),
31
+ matchedCount: zod_1.z.number(),
32
+ unmatchedCount: zod_1.z.number(),
33
+ matched: zod_1.z.array(AnalyzeMatchedRowSchema),
34
+ unmatched: zod_1.z.array(AnalyzeUnmatchedRowSchema),
35
+ errors: zod_1.z.array(AnalyzeRowErrorSchema),
36
+ warnings: zod_1.z.array(AnalyzeRowErrorSchema),
37
+ }),
38
+ });
39
+ var AnalyzeConsignmentProductUpdateContractCommand;
40
+ (function (AnalyzeConsignmentProductUpdateContractCommand) {
41
+ AnalyzeConsignmentProductUpdateContractCommand.ResponseSchema = AnalyzeConsignmentProductUpdateResponseSchema;
42
+ })(AnalyzeConsignmentProductUpdateContractCommand || (exports.AnalyzeConsignmentProductUpdateContractCommand = AnalyzeConsignmentProductUpdateContractCommand = {}));
@@ -31,3 +31,4 @@ __exportStar(require("./execute-consignment-product-update.command"), exports);
31
31
  __exportStar(require("./determine-consignment-product-images.command"), exports);
32
32
  __exportStar(require("./analyze-consignment-product-enrichment.query"), exports);
33
33
  __exportStar(require("./execute-consignment-product-enrichment.command"), exports);
34
+ __exportStar(require("./analyze-consignment-product-update.command"), exports);
@@ -262,7 +262,16 @@ exports.ERRORS = {
262
262
  CONSIGNMENT_PRODUCT_UPDATE_INVALID_CONFIG: { code: 'CON018', message: 'Invalid config format', httpCode: 400 },
263
263
  CONSIGNMENT_PRODUCT_UPDATE_NO_DATA_ROWS: { code: 'CON019', message: 'File has no data rows', httpCode: 400 },
264
264
  CONSIGNMENT_PRODUCT_UPDATE_TOO_MANY_ROWS: { code: 'CON020', message: 'Too many rows', httpCode: 400 },
265
- CONSIGNMENT_PRODUCT_UPDATE_DUPLICATE_MATCH: { code: 'CON021', message: 'Multiple matches for row, first used', httpCode: 200 },
265
+ // Причины, по которым строка файла не попала в обновление: `httpCode` 200 — это не ошибка запроса,
266
+ // а построчный результат анализа. Параметры для перевода — в `i18nParams` у строки.
267
+ CONSIGNMENT_PRODUCT_UPDATE_UUID_NOT_PROVIDED: { code: 'CON030', message: 'UUID not provided', httpCode: 200 },
268
+ CONSIGNMENT_PRODUCT_UPDATE_INVALID_CELL: { code: 'CON031', message: 'Invalid cell value', httpCode: 200 },
269
+ CONSIGNMENT_PRODUCT_UPDATE_UNRECOGNIZED_BOOLEAN_CELL: { code: 'CON032', message: 'Value is not recognized as yes/no', httpCode: 200 },
270
+ CONSIGNMENT_PRODUCT_UPDATE_CONSIGNMENT_EMPTY: { code: 'CON033', message: 'No products in consignment', httpCode: 200 },
271
+ CONSIGNMENT_PRODUCT_UPDATE_NO_MATCH_CRITERIA: { code: 'CON034', message: 'No matching criteria filled in the row', httpCode: 200 },
272
+ CONSIGNMENT_PRODUCT_UPDATE_NO_MATCH: { code: 'CON035', message: 'No product matches the row', httpCode: 200 },
273
+ CONSIGNMENT_PRODUCT_UPDATE_AMBIGUOUS_MATCH: { code: 'CON036', message: 'Several products match the row', httpCode: 200 },
274
+ CONSIGNMENT_PRODUCT_UPDATE_ROWS_SHARE_PRODUCT: { code: 'CON037', message: 'Several rows target the same product', httpCode: 200 },
266
275
  CONSIGNMENT_PRODUCT_UPDATE_ANALYSIS_FAILED: { code: 'CON022', message: 'Update analysis failed', httpCode: 500 },
267
276
  CONSIGNMENT_PRODUCT_UPDATE_BATCH_TOO_LARGE: { code: 'CON023', message: 'Batch size too large', httpCode: 400 },
268
277
  CONSIGNMENT_IMPORT_TOO_MANY_ROWS: { code: 'CON024', message: 'Too many rows for this import mode', httpCode: 400 },
@@ -0,0 +1,44 @@
1
+ import { z } from 'zod';
2
+ import { ErrorMessageSchema } from '../../schemas/error-message.schema';
3
+
4
+ const AnalyzeMatchedRowSchema = z.object({
5
+ uuid: z.string(),
6
+ // Изменения позиции фронт не разбирает, а пересылает как есть в execute: там они и валидируются.
7
+ updates: z.record(z.string(), z.unknown()),
8
+ rowIndex: z.number(),
9
+ originalData: z.record(z.string(), z.unknown()),
10
+ });
11
+
12
+ const AnalyzeUnmatchedRowSchema = z.object({
13
+ // Индекс от первой строки данных; для показа пользователю — `row`.
14
+ rowIndex: z.number(),
15
+ // Номер строки в Excel, как его видит пользователь.
16
+ row: z.number(),
17
+ data: z.record(z.string(), z.unknown()),
18
+ // Подробная причина по-английски, для логов и как запасной текст.
19
+ reason: z.string(),
20
+ // Причина для перевода: `code` из ERRORS и параметры подстановки.
21
+ error: ErrorMessageSchema,
22
+ });
23
+
24
+ const AnalyzeRowErrorSchema = ErrorMessageSchema.extend({
25
+ row: z.number(),
26
+ });
27
+
28
+ const AnalyzeConsignmentProductUpdateResponseSchema = z.object({
29
+ data: z.object({
30
+ success: z.boolean(),
31
+ totalRows: z.number(),
32
+ matchedCount: z.number(),
33
+ unmatchedCount: z.number(),
34
+ matched: z.array(AnalyzeMatchedRowSchema),
35
+ unmatched: z.array(AnalyzeUnmatchedRowSchema),
36
+ errors: z.array(AnalyzeRowErrorSchema),
37
+ warnings: z.array(AnalyzeRowErrorSchema),
38
+ }),
39
+ });
40
+
41
+ export namespace AnalyzeConsignmentProductUpdateContractCommand {
42
+ export const ResponseSchema = AnalyzeConsignmentProductUpdateResponseSchema;
43
+ export type Response = z.infer<typeof ResponseSchema>;
44
+ }
@@ -15,3 +15,4 @@ export * from './execute-consignment-product-update.command';
15
15
  export * from './determine-consignment-product-images.command';
16
16
  export * from './analyze-consignment-product-enrichment.query';
17
17
  export * from './execute-consignment-product-enrichment.command';
18
+ export * from './analyze-consignment-product-update.command';
package/constant/error.ts CHANGED
@@ -271,7 +271,16 @@ export const ERRORS = {
271
271
  CONSIGNMENT_PRODUCT_UPDATE_INVALID_CONFIG: { code: 'CON018', message: 'Invalid config format', httpCode: 400 },
272
272
  CONSIGNMENT_PRODUCT_UPDATE_NO_DATA_ROWS: { code: 'CON019', message: 'File has no data rows', httpCode: 400 },
273
273
  CONSIGNMENT_PRODUCT_UPDATE_TOO_MANY_ROWS: { code: 'CON020', message: 'Too many rows', httpCode: 400 },
274
- CONSIGNMENT_PRODUCT_UPDATE_DUPLICATE_MATCH: { code: 'CON021', message: 'Multiple matches for row, first used', httpCode: 200 },
274
+ // Причины, по которым строка файла не попала в обновление: `httpCode` 200 — это не ошибка запроса,
275
+ // а построчный результат анализа. Параметры для перевода — в `i18nParams` у строки.
276
+ CONSIGNMENT_PRODUCT_UPDATE_UUID_NOT_PROVIDED: { code: 'CON030', message: 'UUID not provided', httpCode: 200 },
277
+ CONSIGNMENT_PRODUCT_UPDATE_INVALID_CELL: { code: 'CON031', message: 'Invalid cell value', httpCode: 200 },
278
+ CONSIGNMENT_PRODUCT_UPDATE_UNRECOGNIZED_BOOLEAN_CELL: { code: 'CON032', message: 'Value is not recognized as yes/no', httpCode: 200 },
279
+ CONSIGNMENT_PRODUCT_UPDATE_CONSIGNMENT_EMPTY: { code: 'CON033', message: 'No products in consignment', httpCode: 200 },
280
+ CONSIGNMENT_PRODUCT_UPDATE_NO_MATCH_CRITERIA: { code: 'CON034', message: 'No matching criteria filled in the row', httpCode: 200 },
281
+ CONSIGNMENT_PRODUCT_UPDATE_NO_MATCH: { code: 'CON035', message: 'No product matches the row', httpCode: 200 },
282
+ CONSIGNMENT_PRODUCT_UPDATE_AMBIGUOUS_MATCH: { code: 'CON036', message: 'Several products match the row', httpCode: 200 },
283
+ CONSIGNMENT_PRODUCT_UPDATE_ROWS_SHARE_PRODUCT: { code: 'CON037', message: 'Several rows target the same product', httpCode: 200 },
275
284
  CONSIGNMENT_PRODUCT_UPDATE_ANALYSIS_FAILED: { code: 'CON022', message: 'Update analysis failed', httpCode: 500 },
276
285
  CONSIGNMENT_PRODUCT_UPDATE_BATCH_TOO_LARGE: { code: 'CON023', message: 'Batch size too large', httpCode: 400 },
277
286
  CONSIGNMENT_IMPORT_TOO_MANY_ROWS: { code: 'CON024', message: 'Too many rows for this import mode', httpCode: 400 },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floristcloud/api-lib",
3
- "version": "1.2.157",
3
+ "version": "1.2.158",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "scripts": {