@fiado/type-kit 3.514.0 → 3.516.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 (76) hide show
  1. package/_test_/unit/group/groupOwnerFields.test.ts +32 -0
  2. package/_test_/unit/referral-business/groupOwnersByGroupIdsDtos.test.ts +46 -0
  3. package/_test_/unit/rewardsEligibility/domainDtos.test.ts +40 -0
  4. package/_test_/unit/rewardsEligibility/domainEnums.test.ts +35 -0
  5. package/bin/group/dtos/GroupCreateRequest.d.ts +1 -0
  6. package/bin/group/dtos/GroupCreateRequest.js +5 -0
  7. package/bin/group/dtos/GroupResponse.d.ts +2 -0
  8. package/bin/referral-business/dtos/GroupOwnersByGroupIdsRequest.d.ts +4 -0
  9. package/bin/referral-business/dtos/GroupOwnersByGroupIdsRequest.js +25 -0
  10. package/bin/referral-business/dtos/GroupOwnersByGroupIdsResponse.d.ts +8 -0
  11. package/bin/referral-business/dtos/GroupOwnersByGroupIdsResponse.js +2 -0
  12. package/bin/referral-business/index.d.ts +2 -0
  13. package/bin/referral-business/index.js +2 -0
  14. package/bin/rewardsEligibility/dtos/CampaignAlerts.d.ts +4 -0
  15. package/bin/rewardsEligibility/dtos/CampaignAlerts.js +7 -0
  16. package/bin/rewardsEligibility/dtos/CampaignQuota.d.ts +8 -0
  17. package/bin/rewardsEligibility/dtos/CampaignQuota.js +7 -0
  18. package/bin/rewardsEligibility/dtos/EvaluationReward.d.ts +6 -0
  19. package/bin/rewardsEligibility/dtos/EvaluationReward.js +7 -0
  20. package/bin/rewardsEligibility/dtos/EvaluationTrigger.d.ts +14 -0
  21. package/bin/rewardsEligibility/dtos/EvaluationTrigger.js +7 -0
  22. package/bin/rewardsEligibility/dtos/GrantPolicy.d.ts +12 -0
  23. package/bin/rewardsEligibility/dtos/GrantPolicy.js +7 -0
  24. package/bin/rewardsEligibility/dtos/PopulationRef.d.ts +6 -0
  25. package/bin/rewardsEligibility/dtos/PopulationRef.js +7 -0
  26. package/bin/rewardsEligibility/enums/ApprovalModeEnum.d.ts +4 -0
  27. package/bin/rewardsEligibility/enums/ApprovalModeEnum.js +8 -0
  28. package/bin/rewardsEligibility/enums/BatchPublishStateEnum.d.ts +7 -0
  29. package/bin/rewardsEligibility/enums/BatchPublishStateEnum.js +11 -0
  30. package/bin/rewardsEligibility/enums/CampaignPausedReasonEnum.d.ts +7 -0
  31. package/bin/rewardsEligibility/enums/CampaignPausedReasonEnum.js +11 -0
  32. package/bin/rewardsEligibility/enums/CampaignStatusEnum.d.ts +8 -0
  33. package/bin/rewardsEligibility/enums/CampaignStatusEnum.js +12 -0
  34. package/bin/rewardsEligibility/enums/EvaluationStatusEnum.d.ts +6 -0
  35. package/bin/rewardsEligibility/enums/EvaluationStatusEnum.js +10 -0
  36. package/bin/rewardsEligibility/enums/GrantPeriodEnum.d.ts +5 -0
  37. package/bin/rewardsEligibility/enums/GrantPeriodEnum.js +9 -0
  38. package/bin/rewardsEligibility/enums/GrantPolicyModeEnum.d.ts +11 -0
  39. package/bin/rewardsEligibility/enums/GrantPolicyModeEnum.js +15 -0
  40. package/bin/rewardsEligibility/enums/LedgerStatusEnum.d.ts +5 -0
  41. package/bin/rewardsEligibility/enums/LedgerStatusEnum.js +9 -0
  42. package/bin/rewardsEligibility/enums/QuotaExhaustedActionEnum.d.ts +7 -0
  43. package/bin/rewardsEligibility/enums/QuotaExhaustedActionEnum.js +11 -0
  44. package/bin/rewardsEligibility/enums/QuotaPeriodEnum.d.ts +7 -0
  45. package/bin/rewardsEligibility/enums/QuotaPeriodEnum.js +11 -0
  46. package/bin/rewardsEligibility/enums/TraceOriginEnum.d.ts +5 -0
  47. package/bin/rewardsEligibility/enums/TraceOriginEnum.js +9 -0
  48. package/bin/rewardsEligibility/index.d.ts +18 -0
  49. package/bin/rewardsEligibility/index.js +21 -0
  50. package/bin/rewardsEligibility/types/RewardInputRef.d.ts +7 -0
  51. package/bin/rewardsEligibility/types/RewardInputRef.js +2 -0
  52. package/package.json +1 -1
  53. package/src/group/dtos/GroupCreateRequest.ts +7 -1
  54. package/src/group/dtos/GroupResponse.ts +4 -0
  55. package/src/referral-business/dtos/GroupOwnersByGroupIdsRequest.ts +12 -0
  56. package/src/referral-business/dtos/GroupOwnersByGroupIdsResponse.ts +11 -0
  57. package/src/referral-business/index.ts +2 -0
  58. package/src/rewardsEligibility/dtos/CampaignAlerts.ts +4 -0
  59. package/src/rewardsEligibility/dtos/CampaignQuota.ts +9 -0
  60. package/src/rewardsEligibility/dtos/EvaluationReward.ts +7 -0
  61. package/src/rewardsEligibility/dtos/EvaluationTrigger.ts +15 -0
  62. package/src/rewardsEligibility/dtos/GrantPolicy.ts +13 -0
  63. package/src/rewardsEligibility/dtos/PopulationRef.ts +7 -0
  64. package/src/rewardsEligibility/enums/ApprovalModeEnum.ts +4 -0
  65. package/src/rewardsEligibility/enums/BatchPublishStateEnum.ts +7 -0
  66. package/src/rewardsEligibility/enums/CampaignPausedReasonEnum.ts +7 -0
  67. package/src/rewardsEligibility/enums/CampaignStatusEnum.ts +8 -0
  68. package/src/rewardsEligibility/enums/EvaluationStatusEnum.ts +6 -0
  69. package/src/rewardsEligibility/enums/GrantPeriodEnum.ts +5 -0
  70. package/src/rewardsEligibility/enums/GrantPolicyModeEnum.ts +11 -0
  71. package/src/rewardsEligibility/enums/LedgerStatusEnum.ts +5 -0
  72. package/src/rewardsEligibility/enums/QuotaExhaustedActionEnum.ts +7 -0
  73. package/src/rewardsEligibility/enums/QuotaPeriodEnum.ts +7 -0
  74. package/src/rewardsEligibility/enums/TraceOriginEnum.ts +5 -0
  75. package/src/rewardsEligibility/index.ts +24 -0
  76. package/src/rewardsEligibility/types/RewardInputRef.ts +4 -0
@@ -0,0 +1,32 @@
1
+ import 'reflect-metadata';
2
+ import { plainToInstance } from 'class-transformer';
3
+ import { validate } from 'class-validator';
4
+ import { GroupCreateRequest, GroupResponse, GroupStatus } from '../../../src/group';
5
+
6
+ const base = { id: 'TAXMA', name: 'Taxma', status: GroupStatus.ACTIVE };
7
+
8
+ describe('GroupCreateRequest.ownerDirectoryId', () => {
9
+ it('es opcional (la carga masiva por CSV no lo manda)', async () => {
10
+ expect(await validate(plainToInstance(GroupCreateRequest, base))).toEqual([]);
11
+ });
12
+ it('acepta un uuid v4', async () => {
13
+ const dto = plainToInstance(GroupCreateRequest, { ...base, ownerDirectoryId: 'b298ec6b-00b6-487b-b096-f4ac6ac8c91d' });
14
+ expect(await validate(dto)).toEqual([]);
15
+ });
16
+ it('rechaza lo que no es uuid v4', async () => {
17
+ const errors = await validate(plainToInstance(GroupCreateRequest, { ...base, ownerDirectoryId: 'no-es-uuid' }));
18
+ expect(errors[0].property).toBe('ownerDirectoryId');
19
+ expect(errors[0].constraints?.isUuid).toBeDefined();
20
+ });
21
+ });
22
+
23
+ describe('GroupResponse.owner', () => {
24
+ it('admite owner o null', () => {
25
+ const withOwner: Partial<GroupResponse> = {
26
+ owner: { agentId: 'AG-1', directoryId: 'DIR-1', name: null, email: null, status: 'ACTIVE' },
27
+ };
28
+ const withoutOwner: Partial<GroupResponse> = { owner: null };
29
+ expect(withOwner.owner?.agentId).toBe('AG-1');
30
+ expect(withoutOwner.owner).toBeNull();
31
+ });
32
+ });
@@ -0,0 +1,46 @@
1
+ import 'reflect-metadata';
2
+ import { plainToInstance } from 'class-transformer';
3
+ import { validate } from 'class-validator';
4
+ import {
5
+ GroupOwnersByGroupIdsRequest,
6
+ GROUP_OWNERS_BY_GROUP_IDS_MAX_BATCH,
7
+ } from '../../../src/referral-business';
8
+ import type { GroupOwnerItem, GroupOwnersByGroupIdsResponse } from '../../../src/referral-business';
9
+
10
+ describe('GroupOwnersByGroupIdsRequest', () => {
11
+ it('el tope del lote es 100', () => {
12
+ expect(GROUP_OWNERS_BY_GROUP_IDS_MAX_BATCH).toBe(100);
13
+ });
14
+ it('acepta una lista de groupIds', async () => {
15
+ const dto = plainToInstance(GroupOwnersByGroupIdsRequest, { groupIds: ['FIADO', 'TAXMA'] });
16
+ expect(await validate(dto)).toEqual([]);
17
+ });
18
+ it('acepta la lista vacía', async () => {
19
+ const dto = plainToInstance(GroupOwnersByGroupIdsRequest, { groupIds: [] });
20
+ expect(await validate(dto)).toEqual([]);
21
+ });
22
+ it('rechaza 101 ids con arrayMaxSize', async () => {
23
+ const ids = Array.from({ length: 101 }, (_, i) => `G${i}`);
24
+ const errors = await validate(plainToInstance(GroupOwnersByGroupIdsRequest, { groupIds: ids }));
25
+ expect(errors[0].property).toBe('groupIds');
26
+ expect(errors[0].constraints?.arrayMaxSize).toBeDefined();
27
+ });
28
+ it('rechaza si groupIds no es arreglo', async () => {
29
+ const errors = await validate(plainToInstance(GroupOwnersByGroupIdsRequest, { groupIds: 'FIADO' }));
30
+ expect(errors[0].constraints?.isArray).toBeDefined();
31
+ });
32
+ it('rechaza elementos que no son string', async () => {
33
+ const errors = await validate(plainToInstance(GroupOwnersByGroupIdsRequest, { groupIds: [1] }));
34
+ expect(errors[0].constraints?.isString).toBeDefined();
35
+ });
36
+ });
37
+
38
+ describe('GroupOwnersByGroupIdsResponse', () => {
39
+ it('es un mapa groupId → GroupOwnerItem', () => {
40
+ const owner: GroupOwnerItem = {
41
+ agentId: 'AG-1', directoryId: 'DIR-1', name: 'MARIA DAVALOS', email: 'm@taxma.com', status: 'ACTIVE',
42
+ };
43
+ const res: GroupOwnersByGroupIdsResponse = { TAXMA: owner };
44
+ expect(res.TAXMA.directoryId).toBe('DIR-1');
45
+ });
46
+ });
@@ -0,0 +1,40 @@
1
+ import 'reflect-metadata';
2
+ import {
3
+ ApprovalModeEnum,
4
+ CampaignAlerts,
5
+ CampaignQuota,
6
+ EvaluationReward,
7
+ EvaluationTrigger,
8
+ GrantPeriodEnum,
9
+ GrantPolicy,
10
+ GrantPolicyModeEnum,
11
+ QuotaPeriodEnum,
12
+ RewardInputRef,
13
+ TriggerTypeEnum,
14
+ } from '../../../src/rewardsEligibility';
15
+
16
+ // Son formas de lo que se guarda como JSON en las tablas: el compilador es el test principal (ts-jest falla si cambian).
17
+ describe('DTOs de configuracion de rewardsEligibility', () => {
18
+ it('modelan el caso phone-sales del spec B 5.1 (PER_REFERENCE + disparador EVENT + inputs const/input)', () => {
19
+ const policy: GrantPolicy = { mode: GrantPolicyModeEnum.PER_REFERENCE, referenceInput: 'saleId' };
20
+ const trigger: EvaluationTrigger = { type: TriggerTypeEnum.EVENT, eventKey: 'PHONE_SALES_CODE_REDEEMED', approval: ApprovalModeEnum.AUTO };
21
+ const fromConst: RewardInputRef = { const: true };
22
+ const fromInput: RewardInputRef = { input: 'saleId' };
23
+ const reward: EvaluationReward = { packageId: 'paquete-referido', inputs: { topup: { accountNumberMatchesOperator: fromConst, ref: fromInput } } };
24
+ expect(policy.referenceInput).toBe('saleId');
25
+ expect(trigger.eventKey).toBe('PHONE_SALES_CODE_REDEEMED');
26
+ expect(reward.inputs.topup?.ref).toEqual({ input: 'saleId' });
27
+ });
28
+
29
+ it('modelan el caso de los lunes (PER_PERIOD WEEK) y los cupos de campania', () => {
30
+ const policy: GrantPolicy = { mode: GrantPolicyModeEnum.PER_PERIOD, period: GrantPeriodEnum.WEEK };
31
+ const quotas: CampaignQuota[] = [
32
+ { id: 'primeros-500', limit: 500, period: QuotaPeriodEnum.TOTAL },
33
+ { id: 'semanal', limit: 100, period: QuotaPeriodEnum.WEEK },
34
+ ];
35
+ const alerts: CampaignAlerts = { thresholds: [0.8, 1] };
36
+ expect(policy.period).toBe('WEEK');
37
+ expect(quotas.map((q) => q.id)).toEqual(['primeros-500', 'semanal']);
38
+ expect(alerts.thresholds).toHaveLength(2);
39
+ });
40
+ });
@@ -0,0 +1,35 @@
1
+ import 'reflect-metadata';
2
+ import {
3
+ ApprovalModeEnum,
4
+ BatchPublishStateEnum,
5
+ CampaignPausedReasonEnum,
6
+ CampaignStatusEnum,
7
+ EvaluationStatusEnum,
8
+ GrantPeriodEnum,
9
+ GrantPolicyModeEnum,
10
+ LedgerStatusEnum,
11
+ QuotaExhaustedActionEnum,
12
+ QuotaPeriodEnum,
13
+ TraceOriginEnum,
14
+ } from '../../../src/rewardsEligibility';
15
+
16
+ // Los valores se guardan en DynamoDB y viajan por colas: cambiarlos rompe datos. Este test los fija.
17
+ describe('enums del dominio de rewardsEligibility (spec B 5.1, 5.5, 5.6, 5.8)', () => {
18
+ it.each<[string, Record<string, string>, string[]]>([
19
+ ['CampaignStatusEnum', CampaignStatusEnum, ['DRAFT', 'ACTIVE', 'PAUSED', 'ENDED', 'ARCHIVED']],
20
+ ['CampaignPausedReasonEnum', CampaignPausedReasonEnum, ['MANUAL', 'QUOTA_EXHAUSTED']],
21
+ ['EvaluationStatusEnum', EvaluationStatusEnum, ['DRAFT', 'ACTIVE', 'PAUSED', 'ARCHIVED']],
22
+ ['GrantPolicyModeEnum', GrantPolicyModeEnum, ['ONCE', 'PER_PERIOD', 'PER_REFERENCE', 'MAX_N']],
23
+ ['GrantPeriodEnum', GrantPeriodEnum, ['WEEK', 'MONTH']],
24
+ ['QuotaPeriodEnum', QuotaPeriodEnum, ['TOTAL', 'DAY', 'WEEK', 'MONTH']],
25
+ ['QuotaExhaustedActionEnum', QuotaExhaustedActionEnum, ['PAUSE_CAMPAIGN', 'RECORD_ONLY']],
26
+ ['ApprovalModeEnum', ApprovalModeEnum, ['AUTO', 'REQUIRED']],
27
+ ['LedgerStatusEnum', LedgerStatusEnum, ['RESERVED', 'RELEASED']],
28
+ ['BatchPublishStateEnum', BatchPublishStateEnum, ['PENDING_APPROVAL', 'PENDING', 'PUBLISHED', 'CANCELLED']],
29
+ ['TraceOriginEnum', TraceOriginEnum, ['PREFETCHED', 'RESOLVED']],
30
+ ])('%s tiene exactamente los valores del spec', (_name, enumObject, values) => {
31
+ expect(Object.values(enumObject).sort()).toEqual([...values].sort());
32
+ // cada miembro vale su propio nombre (el valor viaja como string)
33
+ for (const [key, value] of Object.entries(enumObject)) expect(value).toBe(key);
34
+ });
35
+ });
@@ -5,6 +5,7 @@ export declare class GroupCreateRequest {
5
5
  description: string;
6
6
  leaderEmail?: string | null;
7
7
  leaderDirectoryId?: string | null;
8
+ ownerDirectoryId?: string;
8
9
  status: GroupStatus;
9
10
  codeToRefer?: Array<string>;
10
11
  uniqueMainDirectory?: string;
@@ -44,6 +44,11 @@ __decorate([
44
44
  (0, class_transformer_1.Transform)(({ value }) => value ?? null),
45
45
  __metadata("design:type", String)
46
46
  ], GroupCreateRequest.prototype, "leaderDirectoryId", void 0);
47
+ __decorate([
48
+ (0, class_validator_1.IsOptional)(),
49
+ (0, class_validator_1.IsUUID)('4'),
50
+ __metadata("design:type", String)
51
+ ], GroupCreateRequest.prototype, "ownerDirectoryId", void 0);
47
52
  __decorate([
48
53
  (0, class_validator_1.IsEnum)(GroupStatus_1.GroupStatus),
49
54
  __metadata("design:type", String)
@@ -1,4 +1,5 @@
1
1
  import { GroupStatus } from "../enums/GroupStatus";
2
+ import type { GroupOwnerItem } from "../../referral-business/dtos/GroupOwnersByGroupIdsResponse";
2
3
  export declare class GroupResponse {
3
4
  id: string;
4
5
  name: string;
@@ -15,4 +16,5 @@ export declare class GroupResponse {
15
16
  imageUrl?: string | null;
16
17
  imageUrlSigned?: string | null;
17
18
  parentGroupId: string;
19
+ owner?: GroupOwnerItem | null;
18
20
  }
@@ -0,0 +1,4 @@
1
+ export declare const GROUP_OWNERS_BY_GROUP_IDS_MAX_BATCH = 100;
2
+ export declare class GroupOwnersByGroupIdsRequest {
3
+ groupIds: string[];
4
+ }
@@ -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.GroupOwnersByGroupIdsRequest = exports.GROUP_OWNERS_BY_GROUP_IDS_MAX_BATCH = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ // Tope de groupIds por request del endpoint batch de owners de grupo.
15
+ exports.GROUP_OWNERS_BY_GROUP_IDS_MAX_BATCH = 100;
16
+ // Body de POST /private/agents/owners/by-group-ids; la lista vacía es válida y responde {}.
17
+ class GroupOwnersByGroupIdsRequest {
18
+ }
19
+ exports.GroupOwnersByGroupIdsRequest = GroupOwnersByGroupIdsRequest;
20
+ __decorate([
21
+ (0, class_validator_1.IsArray)(),
22
+ (0, class_validator_1.ArrayMaxSize)(exports.GROUP_OWNERS_BY_GROUP_IDS_MAX_BATCH),
23
+ (0, class_validator_1.IsString)({ each: true }),
24
+ __metadata("design:type", Array)
25
+ ], GroupOwnersByGroupIdsRequest.prototype, "groupIds", void 0);
@@ -0,0 +1,8 @@
1
+ export interface GroupOwnerItem {
2
+ agentId: string;
3
+ directoryId: string;
4
+ name: string | null;
5
+ email: string | null;
6
+ status: string;
7
+ }
8
+ export type GroupOwnersByGroupIdsResponse = Record<string, GroupOwnerItem>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,3 +1,5 @@
1
1
  export * from './enums/AgentRoleEnum';
2
2
  export * from './dtos/AgentsByDirectoryIdsRequest';
3
3
  export * from './dtos/AgentsByDirectoryIdsResponse';
4
+ export * from './dtos/GroupOwnersByGroupIdsRequest';
5
+ export * from './dtos/GroupOwnersByGroupIdsResponse';
@@ -19,3 +19,5 @@ __exportStar(require("./enums/AgentRoleEnum"), exports);
19
19
  //dtos
20
20
  __exportStar(require("./dtos/AgentsByDirectoryIdsRequest"), exports);
21
21
  __exportStar(require("./dtos/AgentsByDirectoryIdsResponse"), exports);
22
+ __exportStar(require("./dtos/GroupOwnersByGroupIdsRequest"), exports);
23
+ __exportStar(require("./dtos/GroupOwnersByGroupIdsResponse"), exports);
@@ -0,0 +1,4 @@
1
+ /** Umbrales de consumo (0 a 1) que avisan a los operadores (spec B 5.6). */
2
+ export declare class CampaignAlerts {
3
+ thresholds: number[];
4
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CampaignAlerts = void 0;
4
+ /** Umbrales de consumo (0 a 1) que avisan a los operadores (spec B 5.6). */
5
+ class CampaignAlerts {
6
+ }
7
+ exports.CampaignAlerts = CampaignAlerts;
@@ -0,0 +1,8 @@
1
+ import { QuotaPeriodEnum } from '../enums/QuotaPeriodEnum';
2
+ /** Un cupo de campania: cantidad maxima de premios (no dinero) en un periodo (spec B 5.6). */
3
+ export declare class CampaignQuota {
4
+ /** Unico dentro de la campania (ej. `primeros-500`). Entra en la llave del consumo (`{id}#{periodo}`). */
5
+ id: string;
6
+ limit: number;
7
+ period: QuotaPeriodEnum;
8
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CampaignQuota = void 0;
4
+ /** Un cupo de campania: cantidad maxima de premios (no dinero) en un periodo (spec B 5.6). */
5
+ class CampaignQuota {
6
+ }
7
+ exports.CampaignQuota = CampaignQuota;
@@ -0,0 +1,6 @@
1
+ import { RewardInputRef } from '../types/RewardInputRef';
2
+ /** Que se pide a rewards-business al calificar: el paquete y sus inputs `itemKey -> inputKey -> valor`. */
3
+ export declare class EvaluationReward {
4
+ packageId: string;
5
+ inputs: Record<string, Record<string, RewardInputRef>>;
6
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EvaluationReward = void 0;
4
+ /** Que se pide a rewards-business al calificar: el paquete y sus inputs `itemKey -> inputKey -> valor`. */
5
+ class EvaluationReward {
6
+ }
7
+ exports.EvaluationReward = EvaluationReward;
@@ -0,0 +1,14 @@
1
+ import { ApprovalModeEnum } from '../enums/ApprovalModeEnum';
2
+ import { TriggerTypeEnum } from '../enums/TriggerTypeEnum';
3
+ import { PopulationRef } from './PopulationRef';
4
+ /** Disparador de una evaluacion (spec B 5.1). Una evaluacion tiene a lo sumo UN disparador `EVENT`. */
5
+ export declare class EvaluationTrigger {
6
+ type: TriggerTypeEnum;
7
+ approval: ApprovalModeEnum;
8
+ /** Solo `EVENT`. */
9
+ eventKey?: string;
10
+ /** Solo `CRON`: cron de 5 campos, granularidad de 15 minutos (fase 4). */
11
+ schedule?: string;
12
+ /** Solo `CRON` (fase 4). */
13
+ population?: PopulationRef;
14
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EvaluationTrigger = void 0;
4
+ /** Disparador de una evaluacion (spec B 5.1). Una evaluacion tiene a lo sumo UN disparador `EVENT`. */
5
+ class EvaluationTrigger {
6
+ }
7
+ exports.EvaluationTrigger = EvaluationTrigger;
@@ -0,0 +1,12 @@
1
+ import { GrantPeriodEnum } from '../enums/GrantPeriodEnum';
2
+ import { GrantPolicyModeEnum } from '../enums/GrantPolicyModeEnum';
3
+ /** Politica de frecuencia de una evaluacion (spec B 5.1). Cada modo exige su campo (lo valida el backoffice). */
4
+ export declare class GrantPolicy {
5
+ mode: GrantPolicyModeEnum;
6
+ /** Solo `PER_PERIOD`. */
7
+ period?: GrantPeriodEnum;
8
+ /** Solo `PER_REFERENCE`: la `key` de un input del contrato (ej. `saleId`). */
9
+ referenceInput?: string;
10
+ /** Solo `MAX_N`: tope de premios en total (>= 1). */
11
+ max?: number;
12
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GrantPolicy = void 0;
4
+ /** Politica de frecuencia de una evaluacion (spec B 5.1). Cada modo exige su campo (lo valida el backoffice). */
5
+ class GrantPolicy {
6
+ }
7
+ exports.GrantPolicy = GrantPolicy;
@@ -0,0 +1,6 @@
1
+ import { DynamicFormValue } from '../../dynamicForm/types/DynamicFormValue';
2
+ /** Fuente de poblacion de un disparador `CRON` (fase 4) con sus params. */
3
+ export declare class PopulationRef {
4
+ source: string;
5
+ params: Record<string, DynamicFormValue>;
6
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PopulationRef = void 0;
4
+ /** Fuente de poblacion de un disparador `CRON` (fase 4) con sus params. */
5
+ class PopulationRef {
6
+ }
7
+ exports.PopulationRef = PopulationRef;
@@ -0,0 +1,4 @@
1
+ export declare enum ApprovalModeEnum {
2
+ AUTO = "AUTO",
3
+ REQUIRED = "REQUIRED"
4
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApprovalModeEnum = void 0;
4
+ var ApprovalModeEnum;
5
+ (function (ApprovalModeEnum) {
6
+ ApprovalModeEnum["AUTO"] = "AUTO";
7
+ ApprovalModeEnum["REQUIRED"] = "REQUIRED";
8
+ })(ApprovalModeEnum || (exports.ApprovalModeEnum = ApprovalModeEnum = {}));
@@ -0,0 +1,7 @@
1
+ /** Estado de publicacion del registro de reserva de un lote (spec B 5.8). */
2
+ export declare enum BatchPublishStateEnum {
3
+ PENDING_APPROVAL = "PENDING_APPROVAL",
4
+ PENDING = "PENDING",
5
+ PUBLISHED = "PUBLISHED",
6
+ CANCELLED = "CANCELLED"
7
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BatchPublishStateEnum = void 0;
4
+ /** Estado de publicacion del registro de reserva de un lote (spec B 5.8). */
5
+ var BatchPublishStateEnum;
6
+ (function (BatchPublishStateEnum) {
7
+ BatchPublishStateEnum["PENDING_APPROVAL"] = "PENDING_APPROVAL";
8
+ BatchPublishStateEnum["PENDING"] = "PENDING";
9
+ BatchPublishStateEnum["PUBLISHED"] = "PUBLISHED";
10
+ BatchPublishStateEnum["CANCELLED"] = "CANCELLED";
11
+ })(BatchPublishStateEnum || (exports.BatchPublishStateEnum = BatchPublishStateEnum = {}));
@@ -0,0 +1,7 @@
1
+ /** Por que esta pausada una campania: decide si se siguen soltando sus lotes reservados (spec B 7.6). */
2
+ export declare enum CampaignPausedReasonEnum {
3
+ /** Lo pauso un operador: no se sueltan lotes. */
4
+ MANUAL = "MANUAL",
5
+ /** Se agoto un cupo con `PAUSE_CAMPAIGN`: lo reservado igual se suelta. */
6
+ QUOTA_EXHAUSTED = "QUOTA_EXHAUSTED"
7
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CampaignPausedReasonEnum = void 0;
4
+ /** Por que esta pausada una campania: decide si se siguen soltando sus lotes reservados (spec B 7.6). */
5
+ var CampaignPausedReasonEnum;
6
+ (function (CampaignPausedReasonEnum) {
7
+ /** Lo pauso un operador: no se sueltan lotes. */
8
+ CampaignPausedReasonEnum["MANUAL"] = "MANUAL";
9
+ /** Se agoto un cupo con `PAUSE_CAMPAIGN`: lo reservado igual se suelta. */
10
+ CampaignPausedReasonEnum["QUOTA_EXHAUSTED"] = "QUOTA_EXHAUSTED";
11
+ })(CampaignPausedReasonEnum || (exports.CampaignPausedReasonEnum = CampaignPausedReasonEnum = {}));
@@ -0,0 +1,8 @@
1
+ export declare enum CampaignStatusEnum {
2
+ DRAFT = "DRAFT",
3
+ ACTIVE = "ACTIVE",
4
+ PAUSED = "PAUSED",
5
+ /** Llego a `endsAt` (lo marca el tick, spec B 5.6). */
6
+ ENDED = "ENDED",
7
+ ARCHIVED = "ARCHIVED"
8
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CampaignStatusEnum = void 0;
4
+ var CampaignStatusEnum;
5
+ (function (CampaignStatusEnum) {
6
+ CampaignStatusEnum["DRAFT"] = "DRAFT";
7
+ CampaignStatusEnum["ACTIVE"] = "ACTIVE";
8
+ CampaignStatusEnum["PAUSED"] = "PAUSED";
9
+ /** Llego a `endsAt` (lo marca el tick, spec B 5.6). */
10
+ CampaignStatusEnum["ENDED"] = "ENDED";
11
+ CampaignStatusEnum["ARCHIVED"] = "ARCHIVED";
12
+ })(CampaignStatusEnum || (exports.CampaignStatusEnum = CampaignStatusEnum = {}));
@@ -0,0 +1,6 @@
1
+ export declare enum EvaluationStatusEnum {
2
+ DRAFT = "DRAFT",
3
+ ACTIVE = "ACTIVE",
4
+ PAUSED = "PAUSED",
5
+ ARCHIVED = "ARCHIVED"
6
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EvaluationStatusEnum = void 0;
4
+ var EvaluationStatusEnum;
5
+ (function (EvaluationStatusEnum) {
6
+ EvaluationStatusEnum["DRAFT"] = "DRAFT";
7
+ EvaluationStatusEnum["ACTIVE"] = "ACTIVE";
8
+ EvaluationStatusEnum["PAUSED"] = "PAUSED";
9
+ EvaluationStatusEnum["ARCHIVED"] = "ARCHIVED";
10
+ })(EvaluationStatusEnum || (exports.EvaluationStatusEnum = EvaluationStatusEnum = {}));
@@ -0,0 +1,5 @@
1
+ /** Periodos validos de `GrantPolicy.period` (modo `PER_PERIOD`). */
2
+ export declare enum GrantPeriodEnum {
3
+ WEEK = "WEEK",
4
+ MONTH = "MONTH"
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GrantPeriodEnum = void 0;
4
+ /** Periodos validos de `GrantPolicy.period` (modo `PER_PERIOD`). */
5
+ var GrantPeriodEnum;
6
+ (function (GrantPeriodEnum) {
7
+ GrantPeriodEnum["WEEK"] = "WEEK";
8
+ GrantPeriodEnum["MONTH"] = "MONTH";
9
+ })(GrantPeriodEnum || (exports.GrantPeriodEnum = GrantPeriodEnum = {}));
@@ -0,0 +1,11 @@
1
+ /** Politica de frecuencia de una evaluacion (spec B E5 y 5.5). */
2
+ export declare enum GrantPolicyModeEnum {
3
+ /** Una vez en la vida por evaluacion. */
4
+ ONCE = "ONCE",
5
+ /** Una por periodo (`GrantPeriodEnum`). */
6
+ PER_PERIOD = "PER_PERIOD",
7
+ /** Una por valor del `referenceInput` (ej. `saleId`). */
8
+ PER_REFERENCE = "PER_REFERENCE",
9
+ /** Hasta N en total (`max`), con un contador. */
10
+ MAX_N = "MAX_N"
11
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GrantPolicyModeEnum = void 0;
4
+ /** Politica de frecuencia de una evaluacion (spec B E5 y 5.5). */
5
+ var GrantPolicyModeEnum;
6
+ (function (GrantPolicyModeEnum) {
7
+ /** Una vez en la vida por evaluacion. */
8
+ GrantPolicyModeEnum["ONCE"] = "ONCE";
9
+ /** Una por periodo (`GrantPeriodEnum`). */
10
+ GrantPolicyModeEnum["PER_PERIOD"] = "PER_PERIOD";
11
+ /** Una por valor del `referenceInput` (ej. `saleId`). */
12
+ GrantPolicyModeEnum["PER_REFERENCE"] = "PER_REFERENCE";
13
+ /** Hasta N en total (`max`), con un contador. */
14
+ GrantPolicyModeEnum["MAX_N"] = "MAX_N";
15
+ })(GrantPolicyModeEnum || (exports.GrantPolicyModeEnum = GrantPolicyModeEnum = {}));
@@ -0,0 +1,5 @@
1
+ /** Estado de una reserva del ledger de frecuencia (spec B 5.5). */
2
+ export declare enum LedgerStatusEnum {
3
+ RESERVED = "RESERVED",
4
+ RELEASED = "RELEASED"
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LedgerStatusEnum = void 0;
4
+ /** Estado de una reserva del ledger de frecuencia (spec B 5.5). */
5
+ var LedgerStatusEnum;
6
+ (function (LedgerStatusEnum) {
7
+ LedgerStatusEnum["RESERVED"] = "RESERVED";
8
+ LedgerStatusEnum["RELEASED"] = "RELEASED";
9
+ })(LedgerStatusEnum || (exports.LedgerStatusEnum = LedgerStatusEnum = {}));
@@ -0,0 +1,7 @@
1
+ /** Que pasa al agotarse un cupo (`onExhausted`, spec B 5.6). */
2
+ export declare enum QuotaExhaustedActionEnum {
3
+ /** Pausa la campania; sus evaluaciones dejan de correr. */
4
+ PAUSE_CAMPAIGN = "PAUSE_CAMPAIGN",
5
+ /** Siguen corriendo y registrando, sin entregar (`QUOTA_EXHAUSTED`). */
6
+ RECORD_ONLY = "RECORD_ONLY"
7
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QuotaExhaustedActionEnum = void 0;
4
+ /** Que pasa al agotarse un cupo (`onExhausted`, spec B 5.6). */
5
+ var QuotaExhaustedActionEnum;
6
+ (function (QuotaExhaustedActionEnum) {
7
+ /** Pausa la campania; sus evaluaciones dejan de correr. */
8
+ QuotaExhaustedActionEnum["PAUSE_CAMPAIGN"] = "PAUSE_CAMPAIGN";
9
+ /** Siguen corriendo y registrando, sin entregar (`QUOTA_EXHAUSTED`). */
10
+ QuotaExhaustedActionEnum["RECORD_ONLY"] = "RECORD_ONLY";
11
+ })(QuotaExhaustedActionEnum || (exports.QuotaExhaustedActionEnum = QuotaExhaustedActionEnum = {}));
@@ -0,0 +1,7 @@
1
+ /** Periodo de un cupo de campania (spec B 5.6). `TOTAL` no se reinicia nunca. */
2
+ export declare enum QuotaPeriodEnum {
3
+ TOTAL = "TOTAL",
4
+ DAY = "DAY",
5
+ WEEK = "WEEK",
6
+ MONTH = "MONTH"
7
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QuotaPeriodEnum = void 0;
4
+ /** Periodo de un cupo de campania (spec B 5.6). `TOTAL` no se reinicia nunca. */
5
+ var QuotaPeriodEnum;
6
+ (function (QuotaPeriodEnum) {
7
+ QuotaPeriodEnum["TOTAL"] = "TOTAL";
8
+ QuotaPeriodEnum["DAY"] = "DAY";
9
+ QuotaPeriodEnum["WEEK"] = "WEEK";
10
+ QuotaPeriodEnum["MONTH"] = "MONTH";
11
+ })(QuotaPeriodEnum || (exports.QuotaPeriodEnum = QuotaPeriodEnum = {}));
@@ -0,0 +1,5 @@
1
+ /** De donde salio el dato con el que se decidio una condicion (spec B 7.4.1). */
2
+ export declare enum TraceOriginEnum {
3
+ PREFETCHED = "PREFETCHED",
4
+ RESOLVED = "RESOLVED"
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TraceOriginEnum = void 0;
4
+ /** De donde salio el dato con el que se decidio una condicion (spec B 7.4.1). */
5
+ var TraceOriginEnum;
6
+ (function (TraceOriginEnum) {
7
+ TraceOriginEnum["PREFETCHED"] = "PREFETCHED";
8
+ TraceOriginEnum["RESOLVED"] = "RESOLVED";
9
+ })(TraceOriginEnum || (exports.TraceOriginEnum = TraceOriginEnum = {}));
@@ -11,3 +11,21 @@ export * from './dtos/PostEventResponse';
11
11
  export * from './dtos/RunCounts';
12
12
  export * from './dtos/RunResultItem';
13
13
  export * from './dtos/GetRunResponse';
14
+ export * from './enums/CampaignStatusEnum';
15
+ export * from './enums/CampaignPausedReasonEnum';
16
+ export * from './enums/EvaluationStatusEnum';
17
+ export * from './enums/GrantPolicyModeEnum';
18
+ export * from './enums/GrantPeriodEnum';
19
+ export * from './enums/QuotaPeriodEnum';
20
+ export * from './enums/QuotaExhaustedActionEnum';
21
+ export * from './enums/ApprovalModeEnum';
22
+ export * from './enums/LedgerStatusEnum';
23
+ export * from './enums/BatchPublishStateEnum';
24
+ export * from './enums/TraceOriginEnum';
25
+ export * from './types/RewardInputRef';
26
+ export * from './dtos/GrantPolicy';
27
+ export * from './dtos/CampaignQuota';
28
+ export * from './dtos/CampaignAlerts';
29
+ export * from './dtos/PopulationRef';
30
+ export * from './dtos/EvaluationReward';
31
+ export * from './dtos/EvaluationTrigger';
@@ -29,3 +29,24 @@ __exportStar(require("./dtos/PostEventResponse"), exports);
29
29
  __exportStar(require("./dtos/RunCounts"), exports);
30
30
  __exportStar(require("./dtos/RunResultItem"), exports);
31
31
  __exportStar(require("./dtos/GetRunResponse"), exports);
32
+ //Enums del dominio (campanias, evaluaciones, ledger)
33
+ __exportStar(require("./enums/CampaignStatusEnum"), exports);
34
+ __exportStar(require("./enums/CampaignPausedReasonEnum"), exports);
35
+ __exportStar(require("./enums/EvaluationStatusEnum"), exports);
36
+ __exportStar(require("./enums/GrantPolicyModeEnum"), exports);
37
+ __exportStar(require("./enums/GrantPeriodEnum"), exports);
38
+ __exportStar(require("./enums/QuotaPeriodEnum"), exports);
39
+ __exportStar(require("./enums/QuotaExhaustedActionEnum"), exports);
40
+ __exportStar(require("./enums/ApprovalModeEnum"), exports);
41
+ __exportStar(require("./enums/LedgerStatusEnum"), exports);
42
+ __exportStar(require("./enums/BatchPublishStateEnum"), exports);
43
+ __exportStar(require("./enums/TraceOriginEnum"), exports);
44
+ //Types
45
+ __exportStar(require("./types/RewardInputRef"), exports);
46
+ //DTOs de configuracion (forma guardada de campanias y evaluaciones)
47
+ __exportStar(require("./dtos/GrantPolicy"), exports);
48
+ __exportStar(require("./dtos/CampaignQuota"), exports);
49
+ __exportStar(require("./dtos/CampaignAlerts"), exports);
50
+ __exportStar(require("./dtos/PopulationRef"), exports);
51
+ __exportStar(require("./dtos/EvaluationReward"), exports);
52
+ __exportStar(require("./dtos/EvaluationTrigger"), exports);
@@ -0,0 +1,7 @@
1
+ import { DynamicFormValue } from '../../dynamicForm/types/DynamicFormValue';
2
+ /** Valor de un input de `reward.inputs`: constante o tomado de un input de la evaluacion (spec B 5.1). */
3
+ export type RewardInputRef = {
4
+ const: DynamicFormValue;
5
+ } | {
6
+ input: string;
7
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.514.0",
3
+ "version": "3.516.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -1,4 +1,4 @@
1
- import {IsEnum, IsNotEmpty, IsOptional, IsString, Length} from "class-validator";
1
+ import {IsEnum, IsNotEmpty, IsOptional, IsString, IsUUID, Length} from "class-validator";
2
2
  import {Transform} from "class-transformer";
3
3
  import {GroupStatus} from "../enums/GroupStatus";
4
4
 
@@ -26,6 +26,12 @@ export class GroupCreateRequest {
26
26
  @Transform(({value}) => value ?? null)
27
27
  leaderDirectoryId?: string | null;
28
28
 
29
+ // Directorio que será el agente OWNER_<grupo>. Opcional en el DTO porque la carga por CSV no lo trae;
30
+ // el alta del backoffice lo exige en el controller de group-business.
31
+ @IsOptional()
32
+ @IsUUID('4')
33
+ ownerDirectoryId?: string;
34
+
29
35
  @IsEnum(GroupStatus)
30
36
  status: GroupStatus;
31
37
 
@@ -1,4 +1,5 @@
1
1
  import { GroupStatus } from "../enums/GroupStatus"
2
+ import type { GroupOwnerItem } from "../../referral-business/dtos/GroupOwnersByGroupIdsResponse"
2
3
 
3
4
 
4
5
  export class GroupResponse {
@@ -17,6 +18,9 @@ export class GroupResponse {
17
18
  imageUrl?: string | null
18
19
  imageUrlSigned?: string | null
19
20
  parentGroupId: string
21
+ // Agente OWNER_<grupo> resuelto en vivo desde referral-business. null = sin owner o no se pudo resolver;
22
+ // ausente = la lectura no lo pidió. Reemplaza a leaderNames/leaderEmail/leaderDirectoryId (ya no se escriben).
23
+ owner?: GroupOwnerItem | null
20
24
  }
21
25
 
22
26
 
@@ -0,0 +1,12 @@
1
+ import { ArrayMaxSize, IsArray, IsString } from "class-validator";
2
+
3
+ // Tope de groupIds por request del endpoint batch de owners de grupo.
4
+ export const GROUP_OWNERS_BY_GROUP_IDS_MAX_BATCH = 100;
5
+
6
+ // Body de POST /private/agents/owners/by-group-ids; la lista vacía es válida y responde {}.
7
+ export class GroupOwnersByGroupIdsRequest {
8
+ @IsArray()
9
+ @ArrayMaxSize(GROUP_OWNERS_BY_GROUP_IDS_MAX_BATCH)
10
+ @IsString({ each: true })
11
+ groupIds!: string[];
12
+ }
@@ -0,0 +1,11 @@
1
+ // Agente OWNER_<grupo> de Agents_GT (excluye DELETE; ACTIVE gana). name/email null si no se pudieron resolver.
2
+ export interface GroupOwnerItem {
3
+ agentId: string;
4
+ directoryId: string;
5
+ name: string | null;
6
+ email: string | null;
7
+ status: string;
8
+ }
9
+
10
+ // Respuesta de POST /private/agents/owners/by-group-ids; un grupo sin owner no aparece.
11
+ export type GroupOwnersByGroupIdsResponse = Record<string, GroupOwnerItem>;
@@ -4,3 +4,5 @@ export * from './enums/AgentRoleEnum';
4
4
  //dtos
5
5
  export * from './dtos/AgentsByDirectoryIdsRequest';
6
6
  export * from './dtos/AgentsByDirectoryIdsResponse';
7
+ export * from './dtos/GroupOwnersByGroupIdsRequest';
8
+ export * from './dtos/GroupOwnersByGroupIdsResponse';
@@ -0,0 +1,4 @@
1
+ /** Umbrales de consumo (0 a 1) que avisan a los operadores (spec B 5.6). */
2
+ export class CampaignAlerts {
3
+ thresholds: number[];
4
+ }
@@ -0,0 +1,9 @@
1
+ import { QuotaPeriodEnum } from '../enums/QuotaPeriodEnum';
2
+
3
+ /** Un cupo de campania: cantidad maxima de premios (no dinero) en un periodo (spec B 5.6). */
4
+ export class CampaignQuota {
5
+ /** Unico dentro de la campania (ej. `primeros-500`). Entra en la llave del consumo (`{id}#{periodo}`). */
6
+ id: string;
7
+ limit: number;
8
+ period: QuotaPeriodEnum;
9
+ }
@@ -0,0 +1,7 @@
1
+ import { RewardInputRef } from '../types/RewardInputRef';
2
+
3
+ /** Que se pide a rewards-business al calificar: el paquete y sus inputs `itemKey -> inputKey -> valor`. */
4
+ export class EvaluationReward {
5
+ packageId: string;
6
+ inputs: Record<string, Record<string, RewardInputRef>>;
7
+ }
@@ -0,0 +1,15 @@
1
+ import { ApprovalModeEnum } from '../enums/ApprovalModeEnum';
2
+ import { TriggerTypeEnum } from '../enums/TriggerTypeEnum';
3
+ import { PopulationRef } from './PopulationRef';
4
+
5
+ /** Disparador de una evaluacion (spec B 5.1). Una evaluacion tiene a lo sumo UN disparador `EVENT`. */
6
+ export class EvaluationTrigger {
7
+ type: TriggerTypeEnum;
8
+ approval: ApprovalModeEnum;
9
+ /** Solo `EVENT`. */
10
+ eventKey?: string;
11
+ /** Solo `CRON`: cron de 5 campos, granularidad de 15 minutos (fase 4). */
12
+ schedule?: string;
13
+ /** Solo `CRON` (fase 4). */
14
+ population?: PopulationRef;
15
+ }
@@ -0,0 +1,13 @@
1
+ import { GrantPeriodEnum } from '../enums/GrantPeriodEnum';
2
+ import { GrantPolicyModeEnum } from '../enums/GrantPolicyModeEnum';
3
+
4
+ /** Politica de frecuencia de una evaluacion (spec B 5.1). Cada modo exige su campo (lo valida el backoffice). */
5
+ export class GrantPolicy {
6
+ mode: GrantPolicyModeEnum;
7
+ /** Solo `PER_PERIOD`. */
8
+ period?: GrantPeriodEnum;
9
+ /** Solo `PER_REFERENCE`: la `key` de un input del contrato (ej. `saleId`). */
10
+ referenceInput?: string;
11
+ /** Solo `MAX_N`: tope de premios en total (>= 1). */
12
+ max?: number;
13
+ }
@@ -0,0 +1,7 @@
1
+ import { DynamicFormValue } from '../../dynamicForm/types/DynamicFormValue';
2
+
3
+ /** Fuente de poblacion de un disparador `CRON` (fase 4) con sus params. */
4
+ export class PopulationRef {
5
+ source: string;
6
+ params: Record<string, DynamicFormValue>;
7
+ }
@@ -0,0 +1,4 @@
1
+ export enum ApprovalModeEnum {
2
+ AUTO = 'AUTO',
3
+ REQUIRED = 'REQUIRED',
4
+ }
@@ -0,0 +1,7 @@
1
+ /** Estado de publicacion del registro de reserva de un lote (spec B 5.8). */
2
+ export enum BatchPublishStateEnum {
3
+ PENDING_APPROVAL = 'PENDING_APPROVAL',
4
+ PENDING = 'PENDING',
5
+ PUBLISHED = 'PUBLISHED',
6
+ CANCELLED = 'CANCELLED',
7
+ }
@@ -0,0 +1,7 @@
1
+ /** Por que esta pausada una campania: decide si se siguen soltando sus lotes reservados (spec B 7.6). */
2
+ export enum CampaignPausedReasonEnum {
3
+ /** Lo pauso un operador: no se sueltan lotes. */
4
+ MANUAL = 'MANUAL',
5
+ /** Se agoto un cupo con `PAUSE_CAMPAIGN`: lo reservado igual se suelta. */
6
+ QUOTA_EXHAUSTED = 'QUOTA_EXHAUSTED',
7
+ }
@@ -0,0 +1,8 @@
1
+ export enum CampaignStatusEnum {
2
+ DRAFT = 'DRAFT',
3
+ ACTIVE = 'ACTIVE',
4
+ PAUSED = 'PAUSED',
5
+ /** Llego a `endsAt` (lo marca el tick, spec B 5.6). */
6
+ ENDED = 'ENDED',
7
+ ARCHIVED = 'ARCHIVED',
8
+ }
@@ -0,0 +1,6 @@
1
+ export enum EvaluationStatusEnum {
2
+ DRAFT = 'DRAFT',
3
+ ACTIVE = 'ACTIVE',
4
+ PAUSED = 'PAUSED',
5
+ ARCHIVED = 'ARCHIVED',
6
+ }
@@ -0,0 +1,5 @@
1
+ /** Periodos validos de `GrantPolicy.period` (modo `PER_PERIOD`). */
2
+ export enum GrantPeriodEnum {
3
+ WEEK = 'WEEK',
4
+ MONTH = 'MONTH',
5
+ }
@@ -0,0 +1,11 @@
1
+ /** Politica de frecuencia de una evaluacion (spec B E5 y 5.5). */
2
+ export enum GrantPolicyModeEnum {
3
+ /** Una vez en la vida por evaluacion. */
4
+ ONCE = 'ONCE',
5
+ /** Una por periodo (`GrantPeriodEnum`). */
6
+ PER_PERIOD = 'PER_PERIOD',
7
+ /** Una por valor del `referenceInput` (ej. `saleId`). */
8
+ PER_REFERENCE = 'PER_REFERENCE',
9
+ /** Hasta N en total (`max`), con un contador. */
10
+ MAX_N = 'MAX_N',
11
+ }
@@ -0,0 +1,5 @@
1
+ /** Estado de una reserva del ledger de frecuencia (spec B 5.5). */
2
+ export enum LedgerStatusEnum {
3
+ RESERVED = 'RESERVED',
4
+ RELEASED = 'RELEASED',
5
+ }
@@ -0,0 +1,7 @@
1
+ /** Que pasa al agotarse un cupo (`onExhausted`, spec B 5.6). */
2
+ export enum QuotaExhaustedActionEnum {
3
+ /** Pausa la campania; sus evaluaciones dejan de correr. */
4
+ PAUSE_CAMPAIGN = 'PAUSE_CAMPAIGN',
5
+ /** Siguen corriendo y registrando, sin entregar (`QUOTA_EXHAUSTED`). */
6
+ RECORD_ONLY = 'RECORD_ONLY',
7
+ }
@@ -0,0 +1,7 @@
1
+ /** Periodo de un cupo de campania (spec B 5.6). `TOTAL` no se reinicia nunca. */
2
+ export enum QuotaPeriodEnum {
3
+ TOTAL = 'TOTAL',
4
+ DAY = 'DAY',
5
+ WEEK = 'WEEK',
6
+ MONTH = 'MONTH',
7
+ }
@@ -0,0 +1,5 @@
1
+ /** De donde salio el dato con el que se decidio una condicion (spec B 7.4.1). */
2
+ export enum TraceOriginEnum {
3
+ PREFETCHED = 'PREFETCHED',
4
+ RESOLVED = 'RESOLVED',
5
+ }
@@ -14,3 +14,27 @@ export * from './dtos/PostEventResponse';
14
14
  export * from './dtos/RunCounts';
15
15
  export * from './dtos/RunResultItem';
16
16
  export * from './dtos/GetRunResponse';
17
+
18
+ //Enums del dominio (campanias, evaluaciones, ledger)
19
+ export * from './enums/CampaignStatusEnum';
20
+ export * from './enums/CampaignPausedReasonEnum';
21
+ export * from './enums/EvaluationStatusEnum';
22
+ export * from './enums/GrantPolicyModeEnum';
23
+ export * from './enums/GrantPeriodEnum';
24
+ export * from './enums/QuotaPeriodEnum';
25
+ export * from './enums/QuotaExhaustedActionEnum';
26
+ export * from './enums/ApprovalModeEnum';
27
+ export * from './enums/LedgerStatusEnum';
28
+ export * from './enums/BatchPublishStateEnum';
29
+ export * from './enums/TraceOriginEnum';
30
+
31
+ //Types
32
+ export * from './types/RewardInputRef';
33
+
34
+ //DTOs de configuracion (forma guardada de campanias y evaluaciones)
35
+ export * from './dtos/GrantPolicy';
36
+ export * from './dtos/CampaignQuota';
37
+ export * from './dtos/CampaignAlerts';
38
+ export * from './dtos/PopulationRef';
39
+ export * from './dtos/EvaluationReward';
40
+ export * from './dtos/EvaluationTrigger';
@@ -0,0 +1,4 @@
1
+ import { DynamicFormValue } from '../../dynamicForm/types/DynamicFormValue';
2
+
3
+ /** Valor de un input de `reward.inputs`: constante o tomado de un input de la evaluacion (spec B 5.1). */
4
+ export type RewardInputRef = { const: DynamicFormValue } | { input: string };