@fiado/type-kit 3.574.0 → 3.575.0
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.
- package/_test_/unit/rewardsEligibility/evaluationStrategyDtos.test.ts +93 -0
- package/_test_/unit/rewardsEligibility/segmentMessagesAndRunDtos.test.ts +2 -2
- package/_test_/unit/rules/evaluationDatalakeDtos.test.ts +144 -0
- package/bin/rewardsEligibility/constants/BatchLimits.d.ts +2 -0
- package/bin/rewardsEligibility/constants/BatchLimits.js +5 -0
- package/bin/rewardsEligibility/dtos/backoffice/CreateRunRequest.d.ts +2 -0
- package/bin/rewardsEligibility/dtos/backoffice/CreateRunRequest.js +7 -0
- package/bin/rewardsEligibility/dtos/backoffice/EvaluationRequest.d.ts +3 -0
- package/bin/rewardsEligibility/dtos/backoffice/EvaluationRequest.js +7 -0
- package/bin/rewardsEligibility/dtos/backoffice/EvaluationResponse.d.ts +3 -0
- package/bin/rewardsEligibility/dtos/backoffice/SimulateRequest.d.ts +2 -0
- package/bin/rewardsEligibility/dtos/backoffice/SimulateRequest.js +7 -0
- package/bin/rewardsEligibility/dtos/messages/EvaluateBatchMessage.d.ts +1 -1
- package/bin/rewardsEligibility/dtos/messages/EvaluateBatchMessage.js +3 -2
- package/bin/rewardsEligibility/index.d.ts +2 -0
- package/bin/rewardsEligibility/index.js +2 -0
- package/bin/rewardsEligibility/types/RewardInputRef.d.ts +9 -1
- package/bin/rewardsEligibility/validators/IsRewardInputs.d.ts +7 -0
- package/bin/rewardsEligibility/validators/IsRewardInputs.js +26 -0
- package/bin/rules/constants/RulesLimits.d.ts +6 -0
- package/bin/rules/constants/RulesLimits.js +7 -1
- package/bin/rules/dtos/EvaluateRulesRequest.d.ts +8 -0
- package/bin/rules/dtos/EvaluateRulesRequest.js +24 -0
- package/bin/rules/dtos/EvaluateRulesResponse.d.ts +3 -0
- package/bin/rules/dtos/ValidateRulesRequest.d.ts +5 -0
- package/bin/rules/dtos/ValidateRulesRequest.js +15 -0
- package/bin/rules/dtos/datalake/EvaluationExecutionRequest.d.ts +21 -0
- package/bin/rules/dtos/datalake/EvaluationExecutionRequest.js +83 -0
- package/bin/rules/dtos/datalake/EvaluationExecutionResponse.d.ts +6 -0
- package/bin/rules/dtos/datalake/EvaluationExecutionResponse.js +7 -0
- package/bin/rules/dtos/datalake/EvaluationExecutionResultsResponse.d.ts +11 -0
- package/bin/rules/dtos/datalake/EvaluationExecutionResultsResponse.js +7 -0
- package/bin/rules/dtos/datalake/EvaluationResultsRequest.d.ts +11 -0
- package/bin/rules/dtos/datalake/EvaluationResultsRequest.js +64 -0
- package/bin/rules/dtos/datalake/ReturnFieldsCatalogResponse.d.ts +17 -0
- package/bin/rules/dtos/datalake/ReturnFieldsCatalogResponse.js +10 -0
- package/bin/rules/dtos/population/SegmentTableSchemaResponse.d.ts +2 -0
- package/bin/rules/enums/EvaluationStrategyEnum.d.ts +5 -0
- package/bin/rules/enums/EvaluationStrategyEnum.js +9 -0
- package/bin/rules/enums/RulesErrorCodeEnum.d.ts +11 -1
- package/bin/rules/enums/RulesErrorCodeEnum.js +10 -0
- package/bin/rules/index.d.ts +6 -0
- package/bin/rules/index.js +7 -0
- package/package.json +1 -1
- package/src/rewardsEligibility/constants/BatchLimits.ts +2 -0
- package/src/rewardsEligibility/dtos/backoffice/CreateRunRequest.ts +7 -0
- package/src/rewardsEligibility/dtos/backoffice/EvaluationRequest.ts +8 -1
- package/src/rewardsEligibility/dtos/backoffice/EvaluationResponse.ts +3 -0
- package/src/rewardsEligibility/dtos/backoffice/SimulateRequest.ts +7 -0
- package/src/rewardsEligibility/dtos/messages/EvaluateBatchMessage.ts +3 -2
- package/src/rewardsEligibility/index.ts +2 -0
- package/src/rewardsEligibility/types/RewardInputRef.ts +6 -2
- package/src/rewardsEligibility/validators/IsRewardInputs.ts +16 -0
- package/src/rules/constants/RulesLimits.ts +6 -0
- package/src/rules/dtos/EvaluateRulesRequest.ts +26 -1
- package/src/rules/dtos/EvaluateRulesResponse.ts +3 -0
- package/src/rules/dtos/ValidateRulesRequest.ts +17 -2
- package/src/rules/dtos/datalake/EvaluationExecutionRequest.ts +73 -0
- package/src/rules/dtos/datalake/EvaluationExecutionResponse.ts +7 -0
- package/src/rules/dtos/datalake/EvaluationExecutionResultsResponse.ts +12 -0
- package/src/rules/dtos/datalake/EvaluationResultsRequest.ts +46 -0
- package/src/rules/dtos/datalake/ReturnFieldsCatalogResponse.ts +19 -0
- package/src/rules/dtos/population/SegmentTableSchemaResponse.ts +2 -0
- package/src/rules/enums/EvaluationStrategyEnum.ts +5 -0
- package/src/rules/enums/RulesErrorCodeEnum.ts +10 -0
- package/src/rules/index.ts +8 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Expose, Type } from 'class-transformer';
|
|
2
|
+
import { ArrayMaxSize, ArrayMinSize, IsArray, IsISO8601, IsObject, IsOptional, IsString, Matches, MaxLength, MinLength, ValidateNested } from 'class-validator';
|
|
3
|
+
import { InputField } from '../../../dynamicForm/dtos/InputField';
|
|
4
|
+
import {
|
|
5
|
+
RETURN_FIELD_ID_PATTERN,
|
|
6
|
+
RULES_MAX_INPUT_CONTRACT,
|
|
7
|
+
RULES_MAX_RETURN_FIELDS,
|
|
8
|
+
RULES_MAX_SUBJECTS_PER_DATALAKE_CALL,
|
|
9
|
+
} from '../../constants/RulesLimits';
|
|
10
|
+
import { RuleToEvaluate, RulesEvaluationSubject } from '../EvaluateRulesRequest';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* `POST /evaluate/executions`: inicia UNA query Athena por lote (hasta 1000 sujetos).
|
|
14
|
+
* `rules` ausente = modo "solo campos" (exige `returnFields` ≥ 1: esa regla la valida el lambda).
|
|
15
|
+
*/
|
|
16
|
+
export class EvaluationExecutionRequest {
|
|
17
|
+
/** Quién llama (solo logs y métricas). */
|
|
18
|
+
@Expose()
|
|
19
|
+
@IsOptional()
|
|
20
|
+
@IsString()
|
|
21
|
+
consumer?: string;
|
|
22
|
+
|
|
23
|
+
/** Ids de ítems del catálogo (`source:key`) que las reglas pueden usar. */
|
|
24
|
+
@Expose()
|
|
25
|
+
@IsArray()
|
|
26
|
+
@IsString({ each: true })
|
|
27
|
+
items: string[];
|
|
28
|
+
|
|
29
|
+
@Expose()
|
|
30
|
+
@IsOptional()
|
|
31
|
+
@IsArray()
|
|
32
|
+
@ArrayMinSize(1)
|
|
33
|
+
@ArrayMaxSize(10)
|
|
34
|
+
@ValidateNested({ each: true })
|
|
35
|
+
@Type(() => RuleToEvaluate)
|
|
36
|
+
rules?: RuleToEvaluate[];
|
|
37
|
+
|
|
38
|
+
/** Contrato de la fuente `input` (tipos de las columnas `i_<llave>`). */
|
|
39
|
+
@Expose()
|
|
40
|
+
@IsOptional()
|
|
41
|
+
@IsArray()
|
|
42
|
+
@ArrayMaxSize(RULES_MAX_INPUT_CONTRACT)
|
|
43
|
+
@IsObject({ each: true })
|
|
44
|
+
inputContract?: InputField[];
|
|
45
|
+
|
|
46
|
+
@Expose()
|
|
47
|
+
@IsArray()
|
|
48
|
+
@ArrayMinSize(1)
|
|
49
|
+
@ArrayMaxSize(RULES_MAX_SUBJECTS_PER_DATALAKE_CALL)
|
|
50
|
+
@ValidateNested({ each: true })
|
|
51
|
+
@Type(() => RulesEvaluationSubject)
|
|
52
|
+
subjects: RulesEvaluationSubject[];
|
|
53
|
+
|
|
54
|
+
/** Fecha ISO 8601 con hora (ancla del cálculo, nunca `now()`). */
|
|
55
|
+
@Expose()
|
|
56
|
+
@IsISO8601({ strict: true })
|
|
57
|
+
@Matches(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/)
|
|
58
|
+
referenceAt: string;
|
|
59
|
+
|
|
60
|
+
@Expose()
|
|
61
|
+
@IsOptional()
|
|
62
|
+
@IsArray()
|
|
63
|
+
@ArrayMaxSize(RULES_MAX_RETURN_FIELDS)
|
|
64
|
+
@Matches(RETURN_FIELD_ID_PATTERN, { each: true })
|
|
65
|
+
returnFields?: string[];
|
|
66
|
+
|
|
67
|
+
/** Mismo lote reintentado = mismo `QueryExecutionId`. */
|
|
68
|
+
@Expose()
|
|
69
|
+
@IsString()
|
|
70
|
+
@MinLength(32)
|
|
71
|
+
@MaxLength(128)
|
|
72
|
+
idempotencyKey: string;
|
|
73
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { PopulationExecutionStatusEnum } from '../../enums/PopulationExecutionStatusEnum';
|
|
2
|
+
import { RulesErrorCodeEnum } from '../../enums/RulesErrorCodeEnum';
|
|
3
|
+
import { RuleEvaluationResult } from '../EvaluateRulesResponse';
|
|
4
|
+
|
|
5
|
+
/** Pagina de resultados. Sin `nextToken` = última página. `reason` solo si `status` es `FAILED`. */
|
|
6
|
+
export class EvaluationExecutionResultsResponse {
|
|
7
|
+
executionId: string;
|
|
8
|
+
status: PopulationExecutionStatusEnum;
|
|
9
|
+
results: RuleEvaluationResult[];
|
|
10
|
+
nextToken?: string;
|
|
11
|
+
reason?: RulesErrorCodeEnum;
|
|
12
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Expose, Type } from 'class-transformer';
|
|
2
|
+
import { ArrayMaxSize, ArrayMinSize, IsArray, IsObject, IsOptional, IsString, Matches, ValidateNested } from 'class-validator';
|
|
3
|
+
import { InputField } from '../../../dynamicForm/dtos/InputField';
|
|
4
|
+
import { RETURN_FIELD_ID_PATTERN, RULES_MAX_INPUT_CONTRACT, RULES_MAX_RETURN_FIELDS } from '../../constants/RulesLimits';
|
|
5
|
+
import { RuleToEvaluate } from '../EvaluateRulesRequest';
|
|
6
|
+
|
|
7
|
+
/** `POST /evaluate/executions/{id}/results`: pagina de resultados. Reglas, ítems e `inputContract` deben ser los del inicio. */
|
|
8
|
+
export class EvaluationResultsRequest {
|
|
9
|
+
@Expose()
|
|
10
|
+
@IsOptional()
|
|
11
|
+
@IsString()
|
|
12
|
+
consumer?: string;
|
|
13
|
+
|
|
14
|
+
@Expose()
|
|
15
|
+
@IsArray()
|
|
16
|
+
@IsString({ each: true })
|
|
17
|
+
items: string[];
|
|
18
|
+
|
|
19
|
+
@Expose()
|
|
20
|
+
@IsOptional()
|
|
21
|
+
@IsArray()
|
|
22
|
+
@ArrayMinSize(1)
|
|
23
|
+
@ArrayMaxSize(10)
|
|
24
|
+
@ValidateNested({ each: true })
|
|
25
|
+
@Type(() => RuleToEvaluate)
|
|
26
|
+
rules?: RuleToEvaluate[];
|
|
27
|
+
|
|
28
|
+
@Expose()
|
|
29
|
+
@IsOptional()
|
|
30
|
+
@IsArray()
|
|
31
|
+
@ArrayMaxSize(RULES_MAX_INPUT_CONTRACT)
|
|
32
|
+
@IsObject({ each: true })
|
|
33
|
+
inputContract?: InputField[];
|
|
34
|
+
|
|
35
|
+
@Expose()
|
|
36
|
+
@IsOptional()
|
|
37
|
+
@IsArray()
|
|
38
|
+
@ArrayMaxSize(RULES_MAX_RETURN_FIELDS)
|
|
39
|
+
@Matches(RETURN_FIELD_ID_PATTERN, { each: true })
|
|
40
|
+
returnFields?: string[];
|
|
41
|
+
|
|
42
|
+
@Expose()
|
|
43
|
+
@IsOptional()
|
|
44
|
+
@IsString()
|
|
45
|
+
nextToken?: string;
|
|
46
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { RulesValueTypeEnum } from '../../enums/RulesValueTypeEnum';
|
|
2
|
+
|
|
3
|
+
/** Un campo del catálogo que se puede devolver (`GET /return-fields`). */
|
|
4
|
+
export class ReturnableFieldResponse {
|
|
5
|
+
/** `fuente:campo`. */
|
|
6
|
+
id: string;
|
|
7
|
+
source: string;
|
|
8
|
+
field: string;
|
|
9
|
+
label: string;
|
|
10
|
+
description: string;
|
|
11
|
+
valueType: RulesValueTypeEnum;
|
|
12
|
+
datalakeCompatible: boolean;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export class ReturnFieldsCatalogResponse {
|
|
16
|
+
/** `false` si el datalake no está disponible en el ambiente. */
|
|
17
|
+
available: boolean;
|
|
18
|
+
fields: ReturnableFieldResponse[];
|
|
19
|
+
}
|
|
@@ -4,4 +4,14 @@ export enum RulesErrorCodeEnum {
|
|
|
4
4
|
DUPLICATE_SOURCE_IN_ITEMS = 'DUPLICATE_SOURCE_IN_ITEMS',
|
|
5
5
|
TOO_MANY_SUBJECTS = 'TOO_MANY_SUBJECTS',
|
|
6
6
|
VALIDATION_ERROR = 'VALIDATION_ERROR',
|
|
7
|
+
/** 400: la regla usa `params`, o una tabla que el campo necesita no existe en el ambiente. */
|
|
8
|
+
RULE_NOT_DATALAKE_COMPATIBLE = 'RULE_NOT_DATALAKE_COMPATIBLE',
|
|
9
|
+
/** 503: el datalake no está disponible. */
|
|
10
|
+
DATALAKE_UNAVAILABLE = 'DATALAKE_UNAVAILABLE',
|
|
11
|
+
/** La query del datalake terminó en error. */
|
|
12
|
+
DATALAKE_EVALUATION_FAILED = 'DATALAKE_EVALUATION_FAILED',
|
|
13
|
+
/** La query del datalake superó el tiempo de espera (reintentable). */
|
|
14
|
+
DATALAKE_EVALUATION_TIMEOUT = 'DATALAKE_EVALUATION_TIMEOUT',
|
|
15
|
+
/** 400: un id de `returnFields` no existe en el catálogo ni en el esquema del datalake. */
|
|
16
|
+
UNKNOWN_RETURN_FIELD = 'UNKNOWN_RETURN_FIELD',
|
|
7
17
|
}
|
package/src/rules/index.ts
CHANGED
|
@@ -49,3 +49,11 @@ export * from './dtos/population/PopulationTestResponse';
|
|
|
49
49
|
export * from './dtos/population/PopulationExecutionRequest';
|
|
50
50
|
export * from './dtos/population/PopulationExecutionResponse';
|
|
51
51
|
export * from './dtos/population/PopulationExecutionPageResponse';
|
|
52
|
+
|
|
53
|
+
//Evaluacion DATALAKE, campos devueltos y ejecucion asincrona
|
|
54
|
+
export * from './enums/EvaluationStrategyEnum';
|
|
55
|
+
export * from './dtos/datalake/EvaluationExecutionRequest';
|
|
56
|
+
export * from './dtos/datalake/EvaluationExecutionResponse';
|
|
57
|
+
export * from './dtos/datalake/EvaluationResultsRequest';
|
|
58
|
+
export * from './dtos/datalake/EvaluationExecutionResultsResponse';
|
|
59
|
+
export * from './dtos/datalake/ReturnFieldsCatalogResponse';
|