@fiado/type-kit 3.604.0 → 3.606.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/retailIntegration/eventPayloadBounds.test.ts +2 -2
- package/_test_/unit/retailIntegration/eventPayloads.test.ts +43 -2
- package/bin/index.d.ts +1 -0
- package/bin/index.js +4 -1
- package/bin/meetings/constants/MeetingLimits.d.ts +11 -0
- package/bin/meetings/constants/MeetingLimits.js +14 -0
- package/bin/meetings/dtos/MeetingAttendanceResponse.d.ts +61 -0
- package/bin/meetings/dtos/MeetingAttendanceResponse.js +21 -0
- package/bin/meetings/dtos/MeetingFormResponse.d.ts +28 -0
- package/bin/meetings/dtos/MeetingFormResponse.js +13 -0
- package/bin/meetings/dtos/MeetingLeadResponse.d.ts +43 -0
- package/bin/meetings/dtos/MeetingLeadResponse.js +17 -0
- package/bin/meetings/dtos/MeetingPollRef.d.ts +5 -0
- package/bin/meetings/dtos/MeetingPollRef.js +8 -0
- package/bin/meetings/dtos/MeetingQuestionRef.d.ts +5 -0
- package/bin/meetings/dtos/MeetingQuestionRef.js +7 -0
- package/bin/meetings/dtos/MeetingQuestionResponse.d.ts +48 -0
- package/bin/meetings/dtos/MeetingQuestionResponse.js +20 -0
- package/bin/meetings/dtos/MeetingQueueEvents.d.ts +85 -0
- package/bin/meetings/dtos/MeetingQueueEvents.js +11 -0
- package/bin/meetings/dtos/MeetingResponse.d.ts +131 -0
- package/bin/meetings/dtos/MeetingResponse.js +20 -0
- package/bin/meetings/dtos/MeetingRuleResponse.d.ts +43 -0
- package/bin/meetings/dtos/MeetingRuleResponse.js +17 -0
- package/bin/meetings/dtos/MeetingSessionRef.d.ts +8 -0
- package/bin/meetings/dtos/MeetingSessionRef.js +7 -0
- package/bin/meetings/enums/MeetingAttendanceRoleEnum.d.ts +5 -0
- package/bin/meetings/enums/MeetingAttendanceRoleEnum.js +9 -0
- package/bin/meetings/enums/MeetingAttendanceSourceEnum.d.ts +5 -0
- package/bin/meetings/enums/MeetingAttendanceSourceEnum.js +9 -0
- package/bin/meetings/enums/MeetingAttendanceStatusEnum.d.ts +7 -0
- package/bin/meetings/enums/MeetingAttendanceStatusEnum.js +11 -0
- package/bin/meetings/enums/MeetingEventTypeEnum.d.ts +16 -0
- package/bin/meetings/enums/MeetingEventTypeEnum.js +20 -0
- package/bin/meetings/enums/MeetingLeadSourceEnum.d.ts +8 -0
- package/bin/meetings/enums/MeetingLeadSourceEnum.js +12 -0
- package/bin/meetings/enums/MeetingLeadTagEnum.d.ts +10 -0
- package/bin/meetings/enums/MeetingLeadTagEnum.js +14 -0
- package/bin/meetings/enums/MeetingModalityEnum.d.ts +6 -0
- package/bin/meetings/enums/MeetingModalityEnum.js +10 -0
- package/bin/meetings/enums/MeetingPlatformEnum.d.ts +7 -0
- package/bin/meetings/enums/MeetingPlatformEnum.js +11 -0
- package/bin/meetings/enums/MeetingQuestionDataTypeEnum.d.ts +12 -0
- package/bin/meetings/enums/MeetingQuestionDataTypeEnum.js +16 -0
- package/bin/meetings/enums/MeetingQuestionSurfaceEnum.d.ts +5 -0
- package/bin/meetings/enums/MeetingQuestionSurfaceEnum.js +9 -0
- package/bin/meetings/enums/MeetingQuestionTypeEnum.d.ts +6 -0
- package/bin/meetings/enums/MeetingQuestionTypeEnum.js +10 -0
- package/bin/meetings/enums/MeetingRuleActionTypeEnum.d.ts +5 -0
- package/bin/meetings/enums/MeetingRuleActionTypeEnum.js +9 -0
- package/bin/meetings/enums/MeetingRuleStatusEnum.d.ts +5 -0
- package/bin/meetings/enums/MeetingRuleStatusEnum.js +9 -0
- package/bin/meetings/enums/MeetingSourceEnum.d.ts +5 -0
- package/bin/meetings/enums/MeetingSourceEnum.js +9 -0
- package/bin/meetings/enums/MeetingStatusEnum.d.ts +5 -0
- package/bin/meetings/enums/MeetingStatusEnum.js +9 -0
- package/bin/meetings/enums/MeetingTypeEnum.d.ts +5 -0
- package/bin/meetings/enums/MeetingTypeEnum.js +9 -0
- package/bin/meetings/index.d.ts +27 -0
- package/bin/meetings/index.js +46 -0
- package/bin/retailIntegration/dtos/ProductEventPayload.d.ts +2 -0
- package/bin/retailIntegration/dtos/ProductEventPayload.js +8 -1
- package/bin/retailIntegration/enums/RetailProductTierEnum.d.ts +1 -1
- package/bin/retailIntegration/enums/RetailProductTierEnum.js +1 -1
- package/bin/usmarketgrowth-business/dtos/PromoterFromLead.d.ts +18 -0
- package/bin/usmarketgrowth-business/dtos/PromoterFromLead.js +7 -0
- package/bin/usmarketgrowth-business/index.d.ts +1 -0
- package/bin/usmarketgrowth-business/index.js +1 -0
- package/package.json +1 -1
- package/src/index.ts +4 -0
- package/src/meetings/constants/MeetingLimits.ts +11 -0
- package/src/meetings/dtos/MeetingAttendanceResponse.ts +66 -0
- package/src/meetings/dtos/MeetingFormResponse.ts +30 -0
- package/src/meetings/dtos/MeetingLeadResponse.ts +47 -0
- package/src/meetings/dtos/MeetingPollRef.ts +6 -0
- package/src/meetings/dtos/MeetingQuestionRef.ts +5 -0
- package/src/meetings/dtos/MeetingQuestionResponse.ts +53 -0
- package/src/meetings/dtos/MeetingQueueEvents.ts +102 -0
- package/src/meetings/dtos/MeetingResponse.ts +136 -0
- package/src/meetings/dtos/MeetingRuleResponse.ts +47 -0
- package/src/meetings/dtos/MeetingSessionRef.ts +8 -0
- package/src/meetings/enums/MeetingAttendanceRoleEnum.ts +5 -0
- package/src/meetings/enums/MeetingAttendanceSourceEnum.ts +5 -0
- package/src/meetings/enums/MeetingAttendanceStatusEnum.ts +7 -0
- package/src/meetings/enums/MeetingEventTypeEnum.ts +16 -0
- package/src/meetings/enums/MeetingLeadSourceEnum.ts +8 -0
- package/src/meetings/enums/MeetingLeadTagEnum.ts +10 -0
- package/src/meetings/enums/MeetingModalityEnum.ts +6 -0
- package/src/meetings/enums/MeetingPlatformEnum.ts +7 -0
- package/src/meetings/enums/MeetingQuestionDataTypeEnum.ts +12 -0
- package/src/meetings/enums/MeetingQuestionSurfaceEnum.ts +5 -0
- package/src/meetings/enums/MeetingQuestionTypeEnum.ts +6 -0
- package/src/meetings/enums/MeetingRuleActionTypeEnum.ts +5 -0
- package/src/meetings/enums/MeetingRuleStatusEnum.ts +5 -0
- package/src/meetings/enums/MeetingSourceEnum.ts +5 -0
- package/src/meetings/enums/MeetingStatusEnum.ts +5 -0
- package/src/meetings/enums/MeetingTypeEnum.ts +5 -0
- package/src/meetings/index.ts +32 -0
- package/src/retailIntegration/dtos/ProductEventPayload.ts +9 -4
- package/src/retailIntegration/enums/RetailProductTierEnum.ts +1 -1
- package/src/usmarketgrowth-business/dtos/PromoterFromLead.ts +20 -0
- package/src/usmarketgrowth-business/index.ts +1 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { JsonValue } from '../../common';
|
|
2
|
+
import { MeetingRuleActionTypeEnum } from '../enums/MeetingRuleActionTypeEnum';
|
|
3
|
+
import { MeetingRuleStatusEnum } from '../enums/MeetingRuleStatusEnum';
|
|
4
|
+
|
|
5
|
+
/** Qué se hace con quien cumple: TAG lleva la etiqueta; PROMOTE no necesita más datos. */
|
|
6
|
+
export class MeetingRuleAction {
|
|
7
|
+
type: MeetingRuleActionTypeEnum;
|
|
8
|
+
/** De MeetingLeadTagEnum; obligatoria con TAG. */
|
|
9
|
+
tag?: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/** Una regla de clasificación nuestra: rules-business no guarda nada y la recibe en cada llamada. */
|
|
13
|
+
export class MeetingRuleResponse {
|
|
14
|
+
id: string;
|
|
15
|
+
version: number;
|
|
16
|
+
name: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
/** La definición tal cual viaja al motor: tabla ancla, condiciones y grupos. */
|
|
19
|
+
definition: JsonValue;
|
|
20
|
+
/** El SQL de la última validación; el motor responde SchemaDriftError si el esquema del lago cambió. */
|
|
21
|
+
expectedSql?: string;
|
|
22
|
+
usedColumns?: string[];
|
|
23
|
+
definitionHash?: string;
|
|
24
|
+
humanSummary?: string;
|
|
25
|
+
actions: MeetingRuleAction[];
|
|
26
|
+
status: MeetingRuleStatusEnum;
|
|
27
|
+
lastTestAt?: string;
|
|
28
|
+
lastTestCount?: number;
|
|
29
|
+
tenantId?: string;
|
|
30
|
+
createdAt?: number;
|
|
31
|
+
updatedAt?: number;
|
|
32
|
+
createdBy?: string;
|
|
33
|
+
updatedBy?: string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export class MeetingRuleUpsertRequest {
|
|
37
|
+
name: string;
|
|
38
|
+
description?: string;
|
|
39
|
+
definition: JsonValue;
|
|
40
|
+
actions: MeetingRuleAction[];
|
|
41
|
+
status?: MeetingRuleStatusEnum;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export class MeetingRuleListResponse {
|
|
45
|
+
items: MeetingRuleResponse[];
|
|
46
|
+
index: string | null;
|
|
47
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Una sesión de la reunión en la plataforma: un reinicio el mismo día agrega otra. */
|
|
2
|
+
export class MeetingSessionRef {
|
|
3
|
+
/** Id de la sesión en la plataforma (en Zoom, el uuid). */
|
|
4
|
+
id: string;
|
|
5
|
+
/** ISO 8601 UTC. */
|
|
6
|
+
startedAt: string;
|
|
7
|
+
endedAt?: string;
|
|
8
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Eventos de MeetingsBusinessQueue. Productores: meeting-connector (los ocho de la plataforma,
|
|
3
|
+
* traducidos a eventos de Fiado sin nombrar al proveedor) y usmarketgrowth-business (PROMOTER_CREATED).
|
|
4
|
+
* Consumidor: meetings-business, de forma idempotente (los avisos llegan duplicados o fuera de orden).
|
|
5
|
+
*/
|
|
6
|
+
export enum MeetingEventTypeEnum {
|
|
7
|
+
MEETING_CREATED = 'MEETING_CREATED',
|
|
8
|
+
MEETING_UPDATED = 'MEETING_UPDATED',
|
|
9
|
+
MEETING_DELETED = 'MEETING_DELETED',
|
|
10
|
+
SESSION_STARTED = 'SESSION_STARTED',
|
|
11
|
+
PERSON_REGISTERED = 'PERSON_REGISTERED',
|
|
12
|
+
PARTICIPANT_JOINED = 'PARTICIPANT_JOINED',
|
|
13
|
+
PARTICIPANT_LEFT = 'PARTICIPANT_LEFT',
|
|
14
|
+
MEETING_ENDED = 'MEETING_ENDED',
|
|
15
|
+
PROMOTER_CREATED = 'PROMOTER_CREATED',
|
|
16
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** WEB existe desde el principio aunque la captación web sea fase 1B, para no migrar después. */
|
|
2
|
+
export enum MeetingLeadSourceEnum {
|
|
3
|
+
ZOOM = 'ZOOM',
|
|
4
|
+
MANUAL = 'MANUAL',
|
|
5
|
+
WEB = 'WEB',
|
|
6
|
+
/** F9: los promotores de UsGrowthPromoter_GT migrados al padrón una sola vez. */
|
|
7
|
+
MIGRATION = 'MIGRATION',
|
|
8
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Las etiquetas de lead de la fase 1: la lista blanca que comparten encuestas, reglas y back office.
|
|
3
|
+
* Sumar una requiere publicar type-kit y desplegar; a cambio, los reportes no se rompen con variantes.
|
|
4
|
+
* Cumplen el formato del lambda de tags (hasta 64 caracteres, sin espacios ni acentos).
|
|
5
|
+
*/
|
|
6
|
+
export enum MeetingLeadTagEnum {
|
|
7
|
+
PROMOTER_PROSPECT = 'PROMOTER_PROSPECT',
|
|
8
|
+
BUSINESS = 'BUSINESS',
|
|
9
|
+
AGENT = 'AGENT',
|
|
10
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tipo de dato de una pregunta abierta, propio y no de la plataforma (decidido el 22-10 con Yhon):
|
|
3
|
+
* cada connector manda lo que su proveedor soporta, y meetings-business valida al recibir. Lo que no
|
|
4
|
+
* cumple se guarda tal como llegó, marcado inválido, y un teléfono inválido no crea lead.
|
|
5
|
+
*/
|
|
6
|
+
export enum MeetingQuestionDataTypeEnum {
|
|
7
|
+
PHONE = 'PHONE',
|
|
8
|
+
EMAIL = 'EMAIL',
|
|
9
|
+
NUMBER = 'NUMBER',
|
|
10
|
+
ALPHANUMERIC = 'ALPHANUMERIC',
|
|
11
|
+
DATE = 'DATE',
|
|
12
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
//Enums
|
|
2
|
+
export * from './enums/MeetingTypeEnum';
|
|
3
|
+
export * from './enums/MeetingModalityEnum';
|
|
4
|
+
export * from './enums/MeetingPlatformEnum';
|
|
5
|
+
export * from './enums/MeetingStatusEnum';
|
|
6
|
+
export * from './enums/MeetingSourceEnum';
|
|
7
|
+
export * from './enums/MeetingAttendanceStatusEnum';
|
|
8
|
+
export * from './enums/MeetingAttendanceRoleEnum';
|
|
9
|
+
export * from './enums/MeetingAttendanceSourceEnum';
|
|
10
|
+
export * from './enums/MeetingLeadSourceEnum';
|
|
11
|
+
export * from './enums/MeetingLeadTagEnum';
|
|
12
|
+
export * from './enums/MeetingQuestionTypeEnum';
|
|
13
|
+
export * from './enums/MeetingQuestionSurfaceEnum';
|
|
14
|
+
export * from './enums/MeetingQuestionDataTypeEnum';
|
|
15
|
+
export * from './enums/MeetingRuleStatusEnum';
|
|
16
|
+
export * from './enums/MeetingRuleActionTypeEnum';
|
|
17
|
+
export * from './enums/MeetingEventTypeEnum';
|
|
18
|
+
|
|
19
|
+
//Constants
|
|
20
|
+
export * from './constants/MeetingLimits';
|
|
21
|
+
|
|
22
|
+
//DTOs
|
|
23
|
+
export * from './dtos/MeetingSessionRef';
|
|
24
|
+
export * from './dtos/MeetingQuestionRef';
|
|
25
|
+
export * from './dtos/MeetingPollRef';
|
|
26
|
+
export * from './dtos/MeetingResponse';
|
|
27
|
+
export * from './dtos/MeetingAttendanceResponse';
|
|
28
|
+
export * from './dtos/MeetingLeadResponse';
|
|
29
|
+
export * from './dtos/MeetingQuestionResponse';
|
|
30
|
+
export * from './dtos/MeetingFormResponse';
|
|
31
|
+
export * from './dtos/MeetingRuleResponse';
|
|
32
|
+
export * from './dtos/MeetingQueueEvents';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Type } from 'class-transformer';
|
|
2
|
-
import { ArrayMaxSize, IsArray, IsDefined, IsIn, IsObject, IsString, Matches, MaxLength, Validate, ValidateIf, ValidateNested } from 'class-validator';
|
|
1
|
+
import { Expose, Transform, Type } from 'class-transformer';
|
|
2
|
+
import { ArrayMaxSize, ArrayNotEmpty, ArrayUnique, IsArray, IsDefined, IsIn, IsObject, IsOptional, IsString, Matches, MaxLength, Validate, ValidateIf, ValidateNested } from 'class-validator';
|
|
3
3
|
import {
|
|
4
4
|
RETAIL_ELIGIBLE_FINANCIERS_MAX,
|
|
5
5
|
RETAIL_EVENT_DECIMAL_PATTERN,
|
|
@@ -49,10 +49,15 @@ export class ProductEventPayload implements RetailSystemProduct {
|
|
|
49
49
|
@ValidateIf(isNullOrValidated) @IsString() @MaxLength(RETAIL_LONG_TEXT_MAX_LENGTH) description!: string | null;
|
|
50
50
|
@IsIn(Object.values(RetailProductCategoryEnum)) category!: RetailProductCategory;
|
|
51
51
|
@IsIn(Object.values(RetailTrackingModeEnum)) trackingMode!: RetailTrackingMode;
|
|
52
|
-
|
|
52
|
+
/** Opcional en el evento: ausente se vuelve `null`. */
|
|
53
|
+
@Expose() @Transform(({ value }) => value ?? null)
|
|
54
|
+
@IsOptional() @IsIn(Object.values(RetailProductTierEnum)) tier!: RetailProductTier | null;
|
|
53
55
|
@IsIn(Object.values(RetailCurrencyEnum)) currencyId!: RetailCurrency;
|
|
54
56
|
@IsDefined() @IsObject() @ValidateNested() @Type(() => ProductEventPricePayload) price!: ProductEventPricePayload;
|
|
55
|
-
|
|
57
|
+
/** Opcional en el evento: ausente o `null` se vuelve la lista de todas las financieras. */
|
|
58
|
+
@Expose() @Transform(({ value }) => value ?? Object.values(RetailFinancierEnum))
|
|
59
|
+
@IsOptional() @IsArray() @ArrayNotEmpty() @ArrayUnique() @ArrayMaxSize(RETAIL_ELIGIBLE_FINANCIERS_MAX) @IsIn(Object.values(RetailFinancierEnum), { each: true })
|
|
60
|
+
eligibleFinanciers!: RetailFinancier[];
|
|
56
61
|
@ValidateIf(isNullOrValidated) @IsIn(Object.values(RetailMdmProviderEnum)) mdmProvider!: RetailMdmProvider | null;
|
|
57
62
|
@IsIn(Object.values(RetailProductStatusEnum)) status!: RetailProductStatus;
|
|
58
63
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 4.5 del plan de reuniones: alta de un promotor a partir de un lead de meetings-business.
|
|
3
|
+
* `POST /private/promoters/from-lead` de `usmarketgrowth-business`, idempotente por teléfono o correo:
|
|
4
|
+
* dos llamadas con el mismo contacto devuelven el mismo `promoterId`.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export interface CreatePromoterFromLeadRequest {
|
|
8
|
+
/** Nombre completo; obligatorio (DEC-024: nombre y un medio de contacto). */
|
|
9
|
+
name?: string;
|
|
10
|
+
phoneNumber?: string;
|
|
11
|
+
email?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface PostPromoterFromLeadResponse {
|
|
15
|
+
/** CREATED si nació aquí; EXISTING si ya había promotor con ese contacto (no se toca nada). */
|
|
16
|
+
status: 'CREATED' | 'EXISTING';
|
|
17
|
+
promoterId: string;
|
|
18
|
+
/** Lo que faltó de la aplicación: el promotor queda «por revisar» hasta completarla. */
|
|
19
|
+
reviewReasons: string[];
|
|
20
|
+
}
|