@fiado/type-kit 3.612.0 → 3.614.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.
Files changed (134) hide show
  1. package/_test_/unit/loanCredit/segmentFactsDtos.test.ts +80 -0
  2. package/_test_/unit/loanOfferings/segmentCatalog.test.ts +4 -2
  3. package/_test_/unit/loanOfferings/segmentCohorts.test.ts +333 -0
  4. package/bin/loanCredit/dtos/requests/SegmentFactsBatchRequest.d.ts +4 -0
  5. package/bin/loanCredit/dtos/requests/SegmentFactsBatchRequest.js +27 -0
  6. package/bin/loanCredit/dtos/requests/SegmentFactsPageRequest.d.ts +7 -0
  7. package/bin/loanCredit/dtos/requests/SegmentFactsPageRequest.js +32 -0
  8. package/bin/loanCredit/dtos/responses/BorrowerSegmentFacts.d.ts +22 -0
  9. package/bin/loanCredit/dtos/responses/BorrowerSegmentFacts.js +2 -0
  10. package/bin/loanCredit/dtos/responses/SegmentFactsBatchResponse.d.ts +5 -0
  11. package/bin/loanCredit/dtos/responses/SegmentFactsBatchResponse.js +2 -0
  12. package/bin/loanCredit/dtos/responses/SegmentFactsPageResponse.d.ts +7 -0
  13. package/bin/loanCredit/dtos/responses/SegmentFactsPageResponse.js +2 -0
  14. package/bin/loanCredit/index.d.ts +5 -0
  15. package/bin/loanCredit/index.js +6 -0
  16. package/bin/loanOfferings/dtos/requests/ChangeCohortStatusRequest.d.ts +9 -0
  17. package/bin/loanOfferings/dtos/requests/ChangeCohortStatusRequest.js +34 -0
  18. package/bin/loanOfferings/dtos/requests/CohortCondition.d.ts +15 -0
  19. package/bin/loanOfferings/dtos/requests/CohortCondition.js +48 -0
  20. package/bin/loanOfferings/dtos/requests/CreateCohortRequest.d.ts +11 -0
  21. package/bin/loanOfferings/dtos/requests/CreateCohortRequest.js +44 -0
  22. package/bin/loanOfferings/dtos/requests/CreateSegmentRequest.d.ts +7 -8
  23. package/bin/loanOfferings/dtos/requests/CreateSegmentRequest.js +5 -3
  24. package/bin/loanOfferings/dtos/requests/CustomerSegmentFacts.d.ts +30 -0
  25. package/bin/loanOfferings/dtos/requests/CustomerSegmentFacts.js +92 -0
  26. package/bin/loanOfferings/dtos/requests/ListCohortsQuery.d.ts +5 -0
  27. package/bin/loanOfferings/dtos/requests/ListCohortsQuery.js +25 -0
  28. package/bin/loanOfferings/dtos/requests/ResolveCustomerSegmentsRequest.d.ts +4 -20
  29. package/bin/loanOfferings/dtos/requests/ResolveCustomerSegmentsRequest.js +4 -48
  30. package/bin/loanOfferings/dtos/requests/ResolveSegmentMembersRequest.d.ts +8 -0
  31. package/bin/loanOfferings/dtos/requests/ResolveSegmentMembersRequest.js +31 -0
  32. package/bin/loanOfferings/dtos/requests/TestCohortRequest.d.ts +9 -0
  33. package/bin/loanOfferings/dtos/requests/TestCohortRequest.js +36 -0
  34. package/bin/loanOfferings/dtos/requests/TestCustomerSegmentsRequest.d.ts +4 -0
  35. package/bin/loanOfferings/dtos/requests/TestCustomerSegmentsRequest.js +23 -0
  36. package/bin/loanOfferings/dtos/requests/UpdateCohortRequest.d.ts +12 -0
  37. package/bin/loanOfferings/dtos/requests/UpdateCohortRequest.js +53 -0
  38. package/bin/loanOfferings/dtos/requests/UpdateSegmentRequest.d.ts +2 -2
  39. package/bin/loanOfferings/dtos/requests/UpdateSegmentRequest.js +3 -1
  40. package/bin/loanOfferings/dtos/responses/CohortCatalogResponse.d.ts +33 -0
  41. package/bin/loanOfferings/dtos/responses/CohortCatalogResponse.js +2 -0
  42. package/bin/loanOfferings/dtos/responses/CohortLogEntryResponse.d.ts +11 -0
  43. package/bin/loanOfferings/dtos/responses/CohortLogEntryResponse.js +2 -0
  44. package/bin/loanOfferings/dtos/responses/CohortResponse.d.ts +43 -0
  45. package/bin/loanOfferings/dtos/responses/CohortResponse.js +2 -0
  46. package/bin/loanOfferings/dtos/responses/SegmentCatalogResponse.d.ts +5 -2
  47. package/bin/loanOfferings/dtos/responses/SegmentLogEntryResponse.d.ts +11 -0
  48. package/bin/loanOfferings/dtos/responses/SegmentLogEntryResponse.js +2 -0
  49. package/bin/loanOfferings/dtos/responses/SegmentMembersResponse.d.ts +19 -0
  50. package/bin/loanOfferings/dtos/responses/SegmentMembersResponse.js +2 -0
  51. package/bin/loanOfferings/dtos/responses/SegmentResponse.d.ts +12 -6
  52. package/bin/loanOfferings/dtos/responses/SegmentUsageResponse.d.ts +18 -0
  53. package/bin/loanOfferings/dtos/responses/SegmentUsageResponse.js +2 -0
  54. package/bin/loanOfferings/dtos/responses/SegmentationRecountRunResponse.d.ts +23 -0
  55. package/bin/loanOfferings/dtos/responses/SegmentationRecountRunResponse.js +2 -0
  56. package/bin/loanOfferings/dtos/responses/SegmentationRecountStartResponse.d.ts +6 -0
  57. package/bin/loanOfferings/dtos/responses/SegmentationRecountStartResponse.js +2 -0
  58. package/bin/loanOfferings/dtos/responses/TestCohortResponse.d.ts +17 -0
  59. package/bin/loanOfferings/dtos/responses/TestCohortResponse.js +2 -0
  60. package/bin/loanOfferings/dtos/responses/TestCustomerSegmentsResponse.d.ts +23 -0
  61. package/bin/loanOfferings/dtos/responses/TestCustomerSegmentsResponse.js +2 -0
  62. package/bin/loanOfferings/enums/CohortConditionOutcomeEnum.d.ts +10 -0
  63. package/bin/loanOfferings/enums/CohortConditionOutcomeEnum.js +14 -0
  64. package/bin/loanOfferings/enums/CohortFactKeyEnum.d.ts +17 -0
  65. package/bin/loanOfferings/enums/CohortFactKeyEnum.js +21 -0
  66. package/bin/loanOfferings/enums/CohortFactTypeEnum.d.ts +9 -0
  67. package/bin/loanOfferings/enums/CohortFactTypeEnum.js +13 -0
  68. package/bin/loanOfferings/enums/CohortLogEventEnum.d.ts +10 -0
  69. package/bin/loanOfferings/enums/CohortLogEventEnum.js +14 -0
  70. package/bin/loanOfferings/enums/CohortOperatorEnum.d.ts +15 -0
  71. package/bin/loanOfferings/enums/CohortOperatorEnum.js +19 -0
  72. package/bin/loanOfferings/enums/CohortStatusEnum.d.ts +9 -0
  73. package/bin/loanOfferings/enums/CohortStatusEnum.js +13 -0
  74. package/bin/loanOfferings/enums/SegmentFilterIdEnum.d.ts +2 -0
  75. package/bin/loanOfferings/enums/SegmentFilterIdEnum.js +2 -0
  76. package/bin/loanOfferings/enums/SegmentLogEventEnum.d.ts +10 -0
  77. package/bin/loanOfferings/enums/SegmentLogEventEnum.js +14 -0
  78. package/bin/loanOfferings/enums/SegmentMembershipReasonEnum.d.ts +9 -0
  79. package/bin/loanOfferings/enums/SegmentMembershipReasonEnum.js +13 -0
  80. package/bin/loanOfferings/enums/SegmentationRecountStatusEnum.d.ts +9 -0
  81. package/bin/loanOfferings/enums/SegmentationRecountStatusEnum.js +13 -0
  82. package/bin/loanOfferings/enums/SegmentationRecountTriggerEnum.d.ts +8 -0
  83. package/bin/loanOfferings/enums/SegmentationRecountTriggerEnum.js +12 -0
  84. package/bin/loanOfferings/index.d.ts +29 -0
  85. package/bin/loanOfferings/index.js +29 -0
  86. package/bin/onboarding/events/SponsorChangedEventDetail.d.ts +16 -0
  87. package/bin/onboarding/events/SponsorChangedEventDetail.js +14 -0
  88. package/bin/onboarding/index.d.ts +1 -0
  89. package/bin/onboarding/index.js +2 -0
  90. package/package.json +1 -1
  91. package/src/loanCredit/dtos/requests/SegmentFactsBatchRequest.ts +13 -0
  92. package/src/loanCredit/dtos/requests/SegmentFactsPageRequest.ts +19 -0
  93. package/src/loanCredit/dtos/responses/BorrowerSegmentFacts.ts +24 -0
  94. package/src/loanCredit/dtos/responses/SegmentFactsBatchResponse.ts +6 -0
  95. package/src/loanCredit/dtos/responses/SegmentFactsPageResponse.ts +8 -0
  96. package/src/loanCredit/index.ts +7 -0
  97. package/src/loanOfferings/dtos/requests/ChangeCohortStatusRequest.ts +19 -0
  98. package/src/loanOfferings/dtos/requests/CohortCondition.ts +33 -0
  99. package/src/loanOfferings/dtos/requests/CreateCohortRequest.ts +29 -0
  100. package/src/loanOfferings/dtos/requests/CreateSegmentRequest.ts +10 -9
  101. package/src/loanOfferings/dtos/requests/CustomerSegmentFacts.ts +79 -0
  102. package/src/loanOfferings/dtos/requests/ListCohortsQuery.ts +11 -0
  103. package/src/loanOfferings/dtos/requests/ResolveCustomerSegmentsRequest.ts +5 -49
  104. package/src/loanOfferings/dtos/requests/ResolveSegmentMembersRequest.ts +17 -0
  105. package/src/loanOfferings/dtos/requests/TestCohortRequest.ts +21 -0
  106. package/src/loanOfferings/dtos/requests/TestCustomerSegmentsRequest.ts +9 -0
  107. package/src/loanOfferings/dtos/requests/UpdateCohortRequest.ts +37 -0
  108. package/src/loanOfferings/dtos/requests/UpdateSegmentRequest.ts +5 -3
  109. package/src/loanOfferings/dtos/responses/CohortCatalogResponse.ts +36 -0
  110. package/src/loanOfferings/dtos/responses/CohortLogEntryResponse.ts +12 -0
  111. package/src/loanOfferings/dtos/responses/CohortResponse.ts +47 -0
  112. package/src/loanOfferings/dtos/responses/SegmentCatalogResponse.ts +5 -2
  113. package/src/loanOfferings/dtos/responses/SegmentLogEntryResponse.ts +12 -0
  114. package/src/loanOfferings/dtos/responses/SegmentMembersResponse.ts +21 -0
  115. package/src/loanOfferings/dtos/responses/SegmentResponse.ts +12 -6
  116. package/src/loanOfferings/dtos/responses/SegmentUsageResponse.ts +20 -0
  117. package/src/loanOfferings/dtos/responses/SegmentationRecountRunResponse.ts +25 -0
  118. package/src/loanOfferings/dtos/responses/SegmentationRecountStartResponse.ts +7 -0
  119. package/src/loanOfferings/dtos/responses/TestCohortResponse.ts +19 -0
  120. package/src/loanOfferings/dtos/responses/TestCustomerSegmentsResponse.ts +25 -0
  121. package/src/loanOfferings/enums/CohortConditionOutcomeEnum.ts +10 -0
  122. package/src/loanOfferings/enums/CohortFactKeyEnum.ts +17 -0
  123. package/src/loanOfferings/enums/CohortFactTypeEnum.ts +9 -0
  124. package/src/loanOfferings/enums/CohortLogEventEnum.ts +10 -0
  125. package/src/loanOfferings/enums/CohortOperatorEnum.ts +15 -0
  126. package/src/loanOfferings/enums/CohortStatusEnum.ts +9 -0
  127. package/src/loanOfferings/enums/SegmentFilterIdEnum.ts +2 -0
  128. package/src/loanOfferings/enums/SegmentLogEventEnum.ts +10 -0
  129. package/src/loanOfferings/enums/SegmentMembershipReasonEnum.ts +9 -0
  130. package/src/loanOfferings/enums/SegmentationRecountStatusEnum.ts +9 -0
  131. package/src/loanOfferings/enums/SegmentationRecountTriggerEnum.ts +8 -0
  132. package/src/loanOfferings/index.ts +29 -0
  133. package/src/onboarding/events/SponsorChangedEventDetail.ts +20 -0
  134. package/src/onboarding/index.ts +3 -0
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CohortCondition = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const CohortFactKeyEnum_1 = require("../../enums/CohortFactKeyEnum");
16
+ const CohortOperatorEnum_1 = require("../../enums/CohortOperatorEnum");
17
+ /**
18
+ * Una condición de cohort: «dato operador valor». Las condiciones de un cohort se unen con Y.
19
+ * Que el operador aplique al tipo del dato y que el valor tenga el tipo correcto lo valida el
20
+ * lambda (422), contra el catálogo.
21
+ */
22
+ class CohortCondition {
23
+ }
24
+ exports.CohortCondition = CohortCondition;
25
+ __decorate([
26
+ (0, class_transformer_1.Expose)(),
27
+ (0, class_validator_1.IsEnum)(CohortFactKeyEnum_1.CohortFactKeyEnum),
28
+ __metadata("design:type", String)
29
+ ], CohortCondition.prototype, "field", void 0);
30
+ __decorate([
31
+ (0, class_transformer_1.Expose)(),
32
+ (0, class_validator_1.IsEnum)(CohortOperatorEnum_1.CohortOperatorEnum),
33
+ __metadata("design:type", String)
34
+ ], CohortCondition.prototype, "op", void 0);
35
+ __decorate([
36
+ (0, class_transformer_1.Expose)(),
37
+ (0, class_validator_1.IsOptional)(),
38
+ __metadata("design:type", Object)
39
+ ], CohortCondition.prototype, "value", void 0);
40
+ __decorate([
41
+ (0, class_transformer_1.Expose)(),
42
+ (0, class_validator_1.IsOptional)(),
43
+ (0, class_validator_1.IsArray)(),
44
+ (0, class_validator_1.IsString)({ each: true }),
45
+ (0, class_validator_1.IsNotEmpty)({ each: true }),
46
+ (0, class_validator_1.ArrayMaxSize)(10),
47
+ __metadata("design:type", Array)
48
+ ], CohortCondition.prototype, "values", void 0);
@@ -0,0 +1,11 @@
1
+ import { CohortCondition } from './CohortCondition';
2
+ /**
3
+ * Body de POST /cohorts — alta de un cohort. Nace en `ACTIVE`; `cohortId`, `status`, `version` y
4
+ * la auditoría los asigna el lambda. El nombre es único entre los cohorts activos.
5
+ */
6
+ export declare class CreateCohortRequest {
7
+ name: string;
8
+ description?: string;
9
+ /** Condiciones unidas con Y: el cliente entra si cumple todas. */
10
+ conditions: CohortCondition[];
11
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CreateCohortRequest = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const CohortCondition_1 = require("./CohortCondition");
16
+ /**
17
+ * Body de POST /cohorts — alta de un cohort. Nace en `ACTIVE`; `cohortId`, `status`, `version` y
18
+ * la auditoría los asigna el lambda. El nombre es único entre los cohorts activos.
19
+ */
20
+ class CreateCohortRequest {
21
+ }
22
+ exports.CreateCohortRequest = CreateCohortRequest;
23
+ __decorate([
24
+ (0, class_transformer_1.Expose)(),
25
+ (0, class_validator_1.IsString)(),
26
+ (0, class_validator_1.MaxLength)(120),
27
+ __metadata("design:type", String)
28
+ ], CreateCohortRequest.prototype, "name", void 0);
29
+ __decorate([
30
+ (0, class_transformer_1.Expose)(),
31
+ (0, class_validator_1.IsOptional)(),
32
+ (0, class_validator_1.IsString)(),
33
+ (0, class_validator_1.MaxLength)(500),
34
+ __metadata("design:type", String)
35
+ ], CreateCohortRequest.prototype, "description", void 0);
36
+ __decorate([
37
+ (0, class_transformer_1.Expose)(),
38
+ (0, class_validator_1.IsArray)(),
39
+ (0, class_validator_1.ArrayMinSize)(1),
40
+ (0, class_validator_1.ArrayMaxSize)(10),
41
+ (0, class_validator_1.ValidateNested)({ each: true }),
42
+ (0, class_transformer_1.Type)(() => CohortCondition_1.CohortCondition),
43
+ __metadata("design:type", Array)
44
+ ], CreateCohortRequest.prototype, "conditions", void 0);
@@ -2,8 +2,8 @@ import { SegmentColorSlotEnum } from '../../enums/SegmentColorSlotEnum';
2
2
  /**
3
3
  * Body de POST /segments — alta de un segmento de clientes.
4
4
  * Nace en `ACTIVE`: `segmentId`, `status`, `version`, `isDefault` y la auditoría los asigna el
5
- * lambda y NO viajan en el request. Que cada filtro exista en el catálogo y tenga fuente lo valida
6
- * el lambda contra `GET /segments/filters`.
5
+ * lambda y NO viajan en el request. Que cada cohort exista y esté activo lo valida el lambda, igual
6
+ * que la regla de tener al menos un cohort o un individuo.
7
7
  */
8
8
  export declare class CreateSegmentRequest {
9
9
  name: string;
@@ -11,14 +11,13 @@ export declare class CreateSegmentRequest {
11
11
  /** Ranura de color del chip. Ausente = `slate`. */
12
12
  colorSlot?: SegmentColorSlotEnum;
13
13
  /**
14
- * Filtros del catálogo cerrado. Un cliente pertenece si cumple AL MENOS UNO — es un OR, no un
15
- * AND. Se valida contra el catálogo en el lambda (422), no acá, para poder nombrar el filtro
16
- * desconocido y el que todavía no tiene fuente.
14
+ * Cohorts del segmento. Un cliente pertenece si cumple AL MENOS UNO — es un OR entre cohorts;
15
+ * dentro de cada cohort las condiciones se unen con Y.
17
16
  */
18
- filterIds?: string[];
17
+ cohortIds?: string[];
19
18
  /**
20
- * Clientes agregados a mano por `retailCustomerId`. Ganan siempre, cumplan o no un filtro.
21
- * Un segmento puede nacer SOLO con esta lista, sin ningún filtro activo.
19
+ * Clientes agregados a mano por `retailCustomerId`. Ganan siempre, cumplan o no un cohort.
20
+ * Un segmento puede nacer SOLO con esta lista, sin ningún cohort.
22
21
  */
23
22
  memberIds?: string[];
24
23
  }
@@ -16,8 +16,8 @@ const SegmentColorSlotEnum_1 = require("../../enums/SegmentColorSlotEnum");
16
16
  /**
17
17
  * Body de POST /segments — alta de un segmento de clientes.
18
18
  * Nace en `ACTIVE`: `segmentId`, `status`, `version`, `isDefault` y la auditoría los asigna el
19
- * lambda y NO viajan en el request. Que cada filtro exista en el catálogo y tenga fuente lo valida
20
- * el lambda contra `GET /segments/filters`.
19
+ * lambda y NO viajan en el request. Que cada cohort exista y esté activo lo valida el lambda, igual
20
+ * que la regla de tener al menos un cohort o un individuo.
21
21
  */
22
22
  class CreateSegmentRequest {
23
23
  }
@@ -46,8 +46,10 @@ __decorate([
46
46
  (0, class_validator_1.IsOptional)(),
47
47
  (0, class_validator_1.IsArray)(),
48
48
  (0, class_validator_1.IsString)({ each: true }),
49
+ (0, class_validator_1.IsNotEmpty)({ each: true }),
50
+ (0, class_validator_1.ArrayMaxSize)(20),
49
51
  __metadata("design:type", Array)
50
- ], CreateSegmentRequest.prototype, "filterIds", void 0);
52
+ ], CreateSegmentRequest.prototype, "cohortIds", void 0);
51
53
  __decorate([
52
54
  (0, class_transformer_1.Expose)(),
53
55
  (0, class_validator_1.IsOptional)(),
@@ -0,0 +1,30 @@
1
+ import { CreditPlanLevelEnum } from '../../enums/CreditPlanLevelEnum';
2
+ /**
3
+ * Datos del cliente contra los que se evalúan los cohorts. Las llaves son las de
4
+ * `CohortFactKeyEnum`. Todos opcionales: un dato ausente hace que su condición no se cumpla.
5
+ *
6
+ * Cliente sin acreditado: conteos y días en `0`, `sciLevel` ausente. `sciLevel` en `ALL` o
7
+ * `NOT_ELIGIBLE` se manda ausente.
8
+ */
9
+ export declare class CustomerSegmentFacts {
10
+ /** Nivel de la última evaluación SCI del acreditado. */
11
+ sciLevel?: CreditPlanLevelEnum;
12
+ /** Créditos en toda la vida del cliente, en cualquier estado. */
13
+ totalCredits?: number;
14
+ /** Créditos vivos hoy. */
15
+ activeCredits?: number;
16
+ /** Créditos liquidados en toda la vida del cliente. */
17
+ completedCredits?: number;
18
+ /** Créditos con baja contable en toda la vida del cliente. `0` es ninguno. */
19
+ lifetimeWriteOffs?: number;
20
+ /** Días de atraso hoy. `0` es al corriente. */
21
+ currentArrearsDays?: number;
22
+ /** Días de mora en la ventana de 180 días. Sin cuotas en la ventana cuenta como `0`. */
23
+ delinquencyDaysLast6M?: number;
24
+ /** Reestructuras en toda la vida del cliente. `0` es ninguna. */
25
+ lifetimeRestructures?: number;
26
+ /** Colaborador de la red. Hoy ningún sistema lo produce: se usa la lista manual del segmento. */
27
+ isEmployee?: boolean;
28
+ /** Tiene cuenta PCF. Sin fuente mientras no se defina qué cuenta como cuenta PCF. */
29
+ hasPcfAccount?: boolean;
30
+ }
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CustomerSegmentFacts = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const CreditPlanLevelEnum_1 = require("../../enums/CreditPlanLevelEnum");
16
+ /**
17
+ * Datos del cliente contra los que se evalúan los cohorts. Las llaves son las de
18
+ * `CohortFactKeyEnum`. Todos opcionales: un dato ausente hace que su condición no se cumpla.
19
+ *
20
+ * Cliente sin acreditado: conteos y días en `0`, `sciLevel` ausente. `sciLevel` en `ALL` o
21
+ * `NOT_ELIGIBLE` se manda ausente.
22
+ */
23
+ class CustomerSegmentFacts {
24
+ }
25
+ exports.CustomerSegmentFacts = CustomerSegmentFacts;
26
+ __decorate([
27
+ (0, class_transformer_1.Expose)(),
28
+ (0, class_validator_1.IsOptional)(),
29
+ (0, class_validator_1.IsEnum)(CreditPlanLevelEnum_1.CreditPlanLevelEnum),
30
+ __metadata("design:type", String)
31
+ ], CustomerSegmentFacts.prototype, "sciLevel", void 0);
32
+ __decorate([
33
+ (0, class_transformer_1.Expose)(),
34
+ (0, class_validator_1.IsOptional)(),
35
+ (0, class_validator_1.IsInt)(),
36
+ (0, class_validator_1.Min)(0),
37
+ __metadata("design:type", Number)
38
+ ], CustomerSegmentFacts.prototype, "totalCredits", void 0);
39
+ __decorate([
40
+ (0, class_transformer_1.Expose)(),
41
+ (0, class_validator_1.IsOptional)(),
42
+ (0, class_validator_1.IsInt)(),
43
+ (0, class_validator_1.Min)(0),
44
+ __metadata("design:type", Number)
45
+ ], CustomerSegmentFacts.prototype, "activeCredits", void 0);
46
+ __decorate([
47
+ (0, class_transformer_1.Expose)(),
48
+ (0, class_validator_1.IsOptional)(),
49
+ (0, class_validator_1.IsInt)(),
50
+ (0, class_validator_1.Min)(0),
51
+ __metadata("design:type", Number)
52
+ ], CustomerSegmentFacts.prototype, "completedCredits", void 0);
53
+ __decorate([
54
+ (0, class_transformer_1.Expose)(),
55
+ (0, class_validator_1.IsOptional)(),
56
+ (0, class_validator_1.IsInt)(),
57
+ (0, class_validator_1.Min)(0),
58
+ __metadata("design:type", Number)
59
+ ], CustomerSegmentFacts.prototype, "lifetimeWriteOffs", void 0);
60
+ __decorate([
61
+ (0, class_transformer_1.Expose)(),
62
+ (0, class_validator_1.IsOptional)(),
63
+ (0, class_validator_1.IsInt)(),
64
+ (0, class_validator_1.Min)(0),
65
+ __metadata("design:type", Number)
66
+ ], CustomerSegmentFacts.prototype, "currentArrearsDays", void 0);
67
+ __decorate([
68
+ (0, class_transformer_1.Expose)(),
69
+ (0, class_validator_1.IsOptional)(),
70
+ (0, class_validator_1.IsInt)(),
71
+ (0, class_validator_1.Min)(0),
72
+ __metadata("design:type", Number)
73
+ ], CustomerSegmentFacts.prototype, "delinquencyDaysLast6M", void 0);
74
+ __decorate([
75
+ (0, class_transformer_1.Expose)(),
76
+ (0, class_validator_1.IsOptional)(),
77
+ (0, class_validator_1.IsInt)(),
78
+ (0, class_validator_1.Min)(0),
79
+ __metadata("design:type", Number)
80
+ ], CustomerSegmentFacts.prototype, "lifetimeRestructures", void 0);
81
+ __decorate([
82
+ (0, class_transformer_1.Expose)(),
83
+ (0, class_validator_1.IsOptional)(),
84
+ (0, class_validator_1.IsBoolean)(),
85
+ __metadata("design:type", Boolean)
86
+ ], CustomerSegmentFacts.prototype, "isEmployee", void 0);
87
+ __decorate([
88
+ (0, class_transformer_1.Expose)(),
89
+ (0, class_validator_1.IsOptional)(),
90
+ (0, class_validator_1.IsBoolean)(),
91
+ __metadata("design:type", Boolean)
92
+ ], CustomerSegmentFacts.prototype, "hasPcfAccount", void 0);
@@ -0,0 +1,5 @@
1
+ import { CohortStatusEnum } from '../../enums/CohortStatusEnum';
2
+ /** Query de GET /cohorts (backoffice). El tenant sale del token. Sin `status` devuelve todos. */
3
+ export declare class ListCohortsQuery {
4
+ status?: CohortStatusEnum;
5
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ListCohortsQuery = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const CohortStatusEnum_1 = require("../../enums/CohortStatusEnum");
16
+ /** Query de GET /cohorts (backoffice). El tenant sale del token. Sin `status` devuelve todos. */
17
+ class ListCohortsQuery {
18
+ }
19
+ exports.ListCohortsQuery = ListCohortsQuery;
20
+ __decorate([
21
+ (0, class_transformer_1.Expose)(),
22
+ (0, class_validator_1.IsOptional)(),
23
+ (0, class_validator_1.IsEnum)(CohortStatusEnum_1.CohortStatusEnum),
24
+ __metadata("design:type", String)
25
+ ], ListCohortsQuery.prototype, "status", void 0);
@@ -1,24 +1,8 @@
1
- import { CreditPlanLevelEnum } from '../../enums/CreditPlanLevelEnum';
1
+ import { CustomerSegmentFacts } from './CustomerSegmentFacts';
2
2
  /**
3
- * Body de POST /private/segments/resolve — los hechos del cliente contra los que se evalúan los
4
- * filtros. Los junta quien ya tiene al cliente delante (el wizard o el motor de crédito); este
5
- * lambda no sale a buscarlos a otro silo en el camino caliente.
6
- *
7
- * Un hecho AUSENTE hace que su filtro NO se cumpla: sin el dato no se puede afirmar que el cliente
8
- * califica, y de las dos salidas la segura es dejarlo fuera.
3
+ * Body de POST /private/segments/resolve — el cliente y, opcionalmente, sus datos para evaluar los
4
+ * cohorts. Si el llamador no manda los datos, loan-offerings los pide a loan-credit.
9
5
  */
10
- export declare class ResolveCustomerSegmentsRequest {
6
+ export declare class ResolveCustomerSegmentsRequest extends CustomerSegmentFacts {
11
7
  retailCustomerId: string;
12
- /** Colaborador de la red. Hoy ningún sistema lo produce — ver la lista de individuos. */
13
- isEmployee?: boolean;
14
- /** Nivel que resolvió loan-scoring a partir del SCI. */
15
- sciLevel?: CreditPlanLevelEnum;
16
- /** Créditos cerrados en toda la vida del cliente. */
17
- completedCredits?: number;
18
- /** Días de mora acumulados en la ventana de 180 días. `0` es sin mora. */
19
- delinquencyDaysLast6M?: number;
20
- /** Bajas contables vitalicias. `0` es ninguna. */
21
- lifetimeWriteOffs?: number;
22
- /** Reestructuras vitalicias. `0` es ninguna. */
23
- lifetimeRestructures?: number;
24
8
  }
@@ -12,16 +12,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.ResolveCustomerSegmentsRequest = void 0;
13
13
  const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
- const CreditPlanLevelEnum_1 = require("../../enums/CreditPlanLevelEnum");
15
+ const CustomerSegmentFacts_1 = require("./CustomerSegmentFacts");
16
16
  /**
17
- * Body de POST /private/segments/resolve — los hechos del cliente contra los que se evalúan los
18
- * filtros. Los junta quien ya tiene al cliente delante (el wizard o el motor de crédito); este
19
- * lambda no sale a buscarlos a otro silo en el camino caliente.
20
- *
21
- * Un hecho AUSENTE hace que su filtro NO se cumpla: sin el dato no se puede afirmar que el cliente
22
- * califica, y de las dos salidas la segura es dejarlo fuera.
17
+ * Body de POST /private/segments/resolve — el cliente y, opcionalmente, sus datos para evaluar los
18
+ * cohorts. Si el llamador no manda los datos, loan-offerings los pide a loan-credit.
23
19
  */
24
- class ResolveCustomerSegmentsRequest {
20
+ class ResolveCustomerSegmentsRequest extends CustomerSegmentFacts_1.CustomerSegmentFacts {
25
21
  }
26
22
  exports.ResolveCustomerSegmentsRequest = ResolveCustomerSegmentsRequest;
27
23
  __decorate([
@@ -29,43 +25,3 @@ __decorate([
29
25
  (0, class_validator_1.IsString)(),
30
26
  __metadata("design:type", String)
31
27
  ], ResolveCustomerSegmentsRequest.prototype, "retailCustomerId", void 0);
32
- __decorate([
33
- (0, class_transformer_1.Expose)(),
34
- (0, class_validator_1.IsOptional)(),
35
- (0, class_validator_1.IsBoolean)(),
36
- __metadata("design:type", Boolean)
37
- ], ResolveCustomerSegmentsRequest.prototype, "isEmployee", void 0);
38
- __decorate([
39
- (0, class_transformer_1.Expose)(),
40
- (0, class_validator_1.IsOptional)(),
41
- (0, class_validator_1.IsEnum)(CreditPlanLevelEnum_1.CreditPlanLevelEnum),
42
- __metadata("design:type", String)
43
- ], ResolveCustomerSegmentsRequest.prototype, "sciLevel", void 0);
44
- __decorate([
45
- (0, class_transformer_1.Expose)(),
46
- (0, class_validator_1.IsOptional)(),
47
- (0, class_validator_1.IsInt)(),
48
- (0, class_validator_1.Min)(0),
49
- __metadata("design:type", Number)
50
- ], ResolveCustomerSegmentsRequest.prototype, "completedCredits", void 0);
51
- __decorate([
52
- (0, class_transformer_1.Expose)(),
53
- (0, class_validator_1.IsOptional)(),
54
- (0, class_validator_1.IsInt)(),
55
- (0, class_validator_1.Min)(0),
56
- __metadata("design:type", Number)
57
- ], ResolveCustomerSegmentsRequest.prototype, "delinquencyDaysLast6M", void 0);
58
- __decorate([
59
- (0, class_transformer_1.Expose)(),
60
- (0, class_validator_1.IsOptional)(),
61
- (0, class_validator_1.IsInt)(),
62
- (0, class_validator_1.Min)(0),
63
- __metadata("design:type", Number)
64
- ], ResolveCustomerSegmentsRequest.prototype, "lifetimeWriteOffs", void 0);
65
- __decorate([
66
- (0, class_transformer_1.Expose)(),
67
- (0, class_validator_1.IsOptional)(),
68
- (0, class_validator_1.IsInt)(),
69
- (0, class_validator_1.Min)(0),
70
- __metadata("design:type", Number)
71
- ], ResolveCustomerSegmentsRequest.prototype, "lifetimeRestructures", void 0);
@@ -0,0 +1,8 @@
1
+ import { ResolveCustomerSegmentsRequest } from './ResolveCustomerSegmentsRequest';
2
+ /**
3
+ * Body de POST /private/segments/members — pertenencia a segmentos en lote, con cohorts. Cada
4
+ * cliente viaja con sus datos si el llamador los tiene; los que falten los pide loan-offerings.
5
+ */
6
+ export declare class ResolveSegmentMembersRequest {
7
+ customers: ResolveCustomerSegmentsRequest[];
8
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ResolveSegmentMembersRequest = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const ResolveCustomerSegmentsRequest_1 = require("./ResolveCustomerSegmentsRequest");
16
+ /**
17
+ * Body de POST /private/segments/members — pertenencia a segmentos en lote, con cohorts. Cada
18
+ * cliente viaja con sus datos si el llamador los tiene; los que falten los pide loan-offerings.
19
+ */
20
+ class ResolveSegmentMembersRequest {
21
+ }
22
+ exports.ResolveSegmentMembersRequest = ResolveSegmentMembersRequest;
23
+ __decorate([
24
+ (0, class_transformer_1.Expose)(),
25
+ (0, class_validator_1.IsArray)(),
26
+ (0, class_validator_1.ArrayMinSize)(1),
27
+ (0, class_validator_1.ArrayMaxSize)(100),
28
+ (0, class_validator_1.ValidateNested)({ each: true }),
29
+ (0, class_transformer_1.Type)(() => ResolveCustomerSegmentsRequest_1.ResolveCustomerSegmentsRequest),
30
+ __metadata("design:type", Array)
31
+ ], ResolveSegmentMembersRequest.prototype, "customers", void 0);
@@ -0,0 +1,9 @@
1
+ import { CohortCondition } from './CohortCondition';
2
+ /**
3
+ * Body de POST /cohorts/test — prueba unas condiciones, guardadas o no, con un cliente. Devuelve
4
+ * los datos del cliente y el resultado de cada condición.
5
+ */
6
+ export declare class TestCohortRequest {
7
+ retailCustomerId: string;
8
+ conditions: CohortCondition[];
9
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TestCohortRequest = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const CohortCondition_1 = require("./CohortCondition");
16
+ /**
17
+ * Body de POST /cohorts/test — prueba unas condiciones, guardadas o no, con un cliente. Devuelve
18
+ * los datos del cliente y el resultado de cada condición.
19
+ */
20
+ class TestCohortRequest {
21
+ }
22
+ exports.TestCohortRequest = TestCohortRequest;
23
+ __decorate([
24
+ (0, class_transformer_1.Expose)(),
25
+ (0, class_validator_1.IsString)(),
26
+ __metadata("design:type", String)
27
+ ], TestCohortRequest.prototype, "retailCustomerId", void 0);
28
+ __decorate([
29
+ (0, class_transformer_1.Expose)(),
30
+ (0, class_validator_1.IsArray)(),
31
+ (0, class_validator_1.ArrayMinSize)(1),
32
+ (0, class_validator_1.ArrayMaxSize)(10),
33
+ (0, class_validator_1.ValidateNested)({ each: true }),
34
+ (0, class_transformer_1.Type)(() => CohortCondition_1.CohortCondition),
35
+ __metadata("design:type", Array)
36
+ ], TestCohortRequest.prototype, "conditions", void 0);
@@ -0,0 +1,4 @@
1
+ /** Body de POST /segments/test — en qué segmentos cae un cliente y por qué. */
2
+ export declare class TestCustomerSegmentsRequest {
3
+ retailCustomerId: string;
4
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TestCustomerSegmentsRequest = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ /** Body de POST /segments/test — en qué segmentos cae un cliente y por qué. */
16
+ class TestCustomerSegmentsRequest {
17
+ }
18
+ exports.TestCustomerSegmentsRequest = TestCustomerSegmentsRequest;
19
+ __decorate([
20
+ (0, class_transformer_1.Expose)(),
21
+ (0, class_validator_1.IsString)(),
22
+ __metadata("design:type", String)
23
+ ], TestCustomerSegmentsRequest.prototype, "retailCustomerId", void 0);
@@ -0,0 +1,12 @@
1
+ import { CohortCondition } from './CohortCondition';
2
+ /**
3
+ * Body de PUT /cohorts/:cohortId — edición parcial; ausente deja el campo como está. Sube
4
+ * `version`. El cambio de estado va por su endpoint dedicado.
5
+ */
6
+ export declare class UpdateCohortRequest {
7
+ name?: string;
8
+ description?: string;
9
+ /** Reemplaza todas las condiciones. */
10
+ conditions?: CohortCondition[];
11
+ reason?: string;
12
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UpdateCohortRequest = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const CohortCondition_1 = require("./CohortCondition");
16
+ /**
17
+ * Body de PUT /cohorts/:cohortId — edición parcial; ausente deja el campo como está. Sube
18
+ * `version`. El cambio de estado va por su endpoint dedicado.
19
+ */
20
+ class UpdateCohortRequest {
21
+ }
22
+ exports.UpdateCohortRequest = UpdateCohortRequest;
23
+ __decorate([
24
+ (0, class_transformer_1.Expose)(),
25
+ (0, class_validator_1.IsOptional)(),
26
+ (0, class_validator_1.IsString)(),
27
+ (0, class_validator_1.MaxLength)(120),
28
+ __metadata("design:type", String)
29
+ ], UpdateCohortRequest.prototype, "name", void 0);
30
+ __decorate([
31
+ (0, class_transformer_1.Expose)(),
32
+ (0, class_validator_1.IsOptional)(),
33
+ (0, class_validator_1.IsString)(),
34
+ (0, class_validator_1.MaxLength)(500),
35
+ __metadata("design:type", String)
36
+ ], UpdateCohortRequest.prototype, "description", void 0);
37
+ __decorate([
38
+ (0, class_transformer_1.Expose)(),
39
+ (0, class_validator_1.IsOptional)(),
40
+ (0, class_validator_1.IsArray)(),
41
+ (0, class_validator_1.ArrayMinSize)(1),
42
+ (0, class_validator_1.ArrayMaxSize)(10),
43
+ (0, class_validator_1.ValidateNested)({ each: true }),
44
+ (0, class_transformer_1.Type)(() => CohortCondition_1.CohortCondition),
45
+ __metadata("design:type", Array)
46
+ ], UpdateCohortRequest.prototype, "conditions", void 0);
47
+ __decorate([
48
+ (0, class_transformer_1.Expose)(),
49
+ (0, class_validator_1.IsOptional)(),
50
+ (0, class_validator_1.IsString)(),
51
+ (0, class_validator_1.MaxLength)(280),
52
+ __metadata("design:type", String)
53
+ ], UpdateCohortRequest.prototype, "reason", void 0);
@@ -10,8 +10,8 @@ export declare class UpdateSegmentRequest {
10
10
  name?: string;
11
11
  description?: string;
12
12
  colorSlot?: SegmentColorSlotEnum;
13
- /** Reemplaza la lista entera; `[]` deja el segmento sin filtros. */
14
- filterIds?: string[];
13
+ /** Reemplaza la lista entera; `[]` deja el segmento sin cohorts. */
14
+ cohortIds?: string[];
15
15
  /** Reemplaza la lista entera; `[]` saca a todos los agregados a mano. */
16
16
  memberIds?: string[];
17
17
  reason?: string;
@@ -48,8 +48,10 @@ __decorate([
48
48
  (0, class_validator_1.IsOptional)(),
49
49
  (0, class_validator_1.IsArray)(),
50
50
  (0, class_validator_1.IsString)({ each: true }),
51
+ (0, class_validator_1.IsNotEmpty)({ each: true }),
52
+ (0, class_validator_1.ArrayMaxSize)(20),
51
53
  __metadata("design:type", Array)
52
- ], UpdateSegmentRequest.prototype, "filterIds", void 0);
54
+ ], UpdateSegmentRequest.prototype, "cohortIds", void 0);
53
55
  __decorate([
54
56
  (0, class_transformer_1.Expose)(),
55
57
  (0, class_validator_1.IsOptional)(),