@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.
Files changed (102) hide show
  1. package/_test_/unit/retailIntegration/eventPayloadBounds.test.ts +2 -2
  2. package/_test_/unit/retailIntegration/eventPayloads.test.ts +43 -2
  3. package/bin/index.d.ts +1 -0
  4. package/bin/index.js +4 -1
  5. package/bin/meetings/constants/MeetingLimits.d.ts +11 -0
  6. package/bin/meetings/constants/MeetingLimits.js +14 -0
  7. package/bin/meetings/dtos/MeetingAttendanceResponse.d.ts +61 -0
  8. package/bin/meetings/dtos/MeetingAttendanceResponse.js +21 -0
  9. package/bin/meetings/dtos/MeetingFormResponse.d.ts +28 -0
  10. package/bin/meetings/dtos/MeetingFormResponse.js +13 -0
  11. package/bin/meetings/dtos/MeetingLeadResponse.d.ts +43 -0
  12. package/bin/meetings/dtos/MeetingLeadResponse.js +17 -0
  13. package/bin/meetings/dtos/MeetingPollRef.d.ts +5 -0
  14. package/bin/meetings/dtos/MeetingPollRef.js +8 -0
  15. package/bin/meetings/dtos/MeetingQuestionRef.d.ts +5 -0
  16. package/bin/meetings/dtos/MeetingQuestionRef.js +7 -0
  17. package/bin/meetings/dtos/MeetingQuestionResponse.d.ts +48 -0
  18. package/bin/meetings/dtos/MeetingQuestionResponse.js +20 -0
  19. package/bin/meetings/dtos/MeetingQueueEvents.d.ts +85 -0
  20. package/bin/meetings/dtos/MeetingQueueEvents.js +11 -0
  21. package/bin/meetings/dtos/MeetingResponse.d.ts +131 -0
  22. package/bin/meetings/dtos/MeetingResponse.js +20 -0
  23. package/bin/meetings/dtos/MeetingRuleResponse.d.ts +43 -0
  24. package/bin/meetings/dtos/MeetingRuleResponse.js +17 -0
  25. package/bin/meetings/dtos/MeetingSessionRef.d.ts +8 -0
  26. package/bin/meetings/dtos/MeetingSessionRef.js +7 -0
  27. package/bin/meetings/enums/MeetingAttendanceRoleEnum.d.ts +5 -0
  28. package/bin/meetings/enums/MeetingAttendanceRoleEnum.js +9 -0
  29. package/bin/meetings/enums/MeetingAttendanceSourceEnum.d.ts +5 -0
  30. package/bin/meetings/enums/MeetingAttendanceSourceEnum.js +9 -0
  31. package/bin/meetings/enums/MeetingAttendanceStatusEnum.d.ts +7 -0
  32. package/bin/meetings/enums/MeetingAttendanceStatusEnum.js +11 -0
  33. package/bin/meetings/enums/MeetingEventTypeEnum.d.ts +16 -0
  34. package/bin/meetings/enums/MeetingEventTypeEnum.js +20 -0
  35. package/bin/meetings/enums/MeetingLeadSourceEnum.d.ts +8 -0
  36. package/bin/meetings/enums/MeetingLeadSourceEnum.js +12 -0
  37. package/bin/meetings/enums/MeetingLeadTagEnum.d.ts +10 -0
  38. package/bin/meetings/enums/MeetingLeadTagEnum.js +14 -0
  39. package/bin/meetings/enums/MeetingModalityEnum.d.ts +6 -0
  40. package/bin/meetings/enums/MeetingModalityEnum.js +10 -0
  41. package/bin/meetings/enums/MeetingPlatformEnum.d.ts +7 -0
  42. package/bin/meetings/enums/MeetingPlatformEnum.js +11 -0
  43. package/bin/meetings/enums/MeetingQuestionDataTypeEnum.d.ts +12 -0
  44. package/bin/meetings/enums/MeetingQuestionDataTypeEnum.js +16 -0
  45. package/bin/meetings/enums/MeetingQuestionSurfaceEnum.d.ts +5 -0
  46. package/bin/meetings/enums/MeetingQuestionSurfaceEnum.js +9 -0
  47. package/bin/meetings/enums/MeetingQuestionTypeEnum.d.ts +6 -0
  48. package/bin/meetings/enums/MeetingQuestionTypeEnum.js +10 -0
  49. package/bin/meetings/enums/MeetingRuleActionTypeEnum.d.ts +5 -0
  50. package/bin/meetings/enums/MeetingRuleActionTypeEnum.js +9 -0
  51. package/bin/meetings/enums/MeetingRuleStatusEnum.d.ts +5 -0
  52. package/bin/meetings/enums/MeetingRuleStatusEnum.js +9 -0
  53. package/bin/meetings/enums/MeetingSourceEnum.d.ts +5 -0
  54. package/bin/meetings/enums/MeetingSourceEnum.js +9 -0
  55. package/bin/meetings/enums/MeetingStatusEnum.d.ts +5 -0
  56. package/bin/meetings/enums/MeetingStatusEnum.js +9 -0
  57. package/bin/meetings/enums/MeetingTypeEnum.d.ts +5 -0
  58. package/bin/meetings/enums/MeetingTypeEnum.js +9 -0
  59. package/bin/meetings/index.d.ts +27 -0
  60. package/bin/meetings/index.js +46 -0
  61. package/bin/retailIntegration/dtos/ProductEventPayload.d.ts +2 -0
  62. package/bin/retailIntegration/dtos/ProductEventPayload.js +8 -1
  63. package/bin/retailIntegration/enums/RetailProductTierEnum.d.ts +1 -1
  64. package/bin/retailIntegration/enums/RetailProductTierEnum.js +1 -1
  65. package/bin/usmarketgrowth-business/dtos/PromoterFromLead.d.ts +18 -0
  66. package/bin/usmarketgrowth-business/dtos/PromoterFromLead.js +7 -0
  67. package/bin/usmarketgrowth-business/index.d.ts +1 -0
  68. package/bin/usmarketgrowth-business/index.js +1 -0
  69. package/package.json +1 -1
  70. package/src/index.ts +4 -0
  71. package/src/meetings/constants/MeetingLimits.ts +11 -0
  72. package/src/meetings/dtos/MeetingAttendanceResponse.ts +66 -0
  73. package/src/meetings/dtos/MeetingFormResponse.ts +30 -0
  74. package/src/meetings/dtos/MeetingLeadResponse.ts +47 -0
  75. package/src/meetings/dtos/MeetingPollRef.ts +6 -0
  76. package/src/meetings/dtos/MeetingQuestionRef.ts +5 -0
  77. package/src/meetings/dtos/MeetingQuestionResponse.ts +53 -0
  78. package/src/meetings/dtos/MeetingQueueEvents.ts +102 -0
  79. package/src/meetings/dtos/MeetingResponse.ts +136 -0
  80. package/src/meetings/dtos/MeetingRuleResponse.ts +47 -0
  81. package/src/meetings/dtos/MeetingSessionRef.ts +8 -0
  82. package/src/meetings/enums/MeetingAttendanceRoleEnum.ts +5 -0
  83. package/src/meetings/enums/MeetingAttendanceSourceEnum.ts +5 -0
  84. package/src/meetings/enums/MeetingAttendanceStatusEnum.ts +7 -0
  85. package/src/meetings/enums/MeetingEventTypeEnum.ts +16 -0
  86. package/src/meetings/enums/MeetingLeadSourceEnum.ts +8 -0
  87. package/src/meetings/enums/MeetingLeadTagEnum.ts +10 -0
  88. package/src/meetings/enums/MeetingModalityEnum.ts +6 -0
  89. package/src/meetings/enums/MeetingPlatformEnum.ts +7 -0
  90. package/src/meetings/enums/MeetingQuestionDataTypeEnum.ts +12 -0
  91. package/src/meetings/enums/MeetingQuestionSurfaceEnum.ts +5 -0
  92. package/src/meetings/enums/MeetingQuestionTypeEnum.ts +6 -0
  93. package/src/meetings/enums/MeetingRuleActionTypeEnum.ts +5 -0
  94. package/src/meetings/enums/MeetingRuleStatusEnum.ts +5 -0
  95. package/src/meetings/enums/MeetingSourceEnum.ts +5 -0
  96. package/src/meetings/enums/MeetingStatusEnum.ts +5 -0
  97. package/src/meetings/enums/MeetingTypeEnum.ts +5 -0
  98. package/src/meetings/index.ts +32 -0
  99. package/src/retailIntegration/dtos/ProductEventPayload.ts +9 -4
  100. package/src/retailIntegration/enums/RetailProductTierEnum.ts +1 -1
  101. package/src/usmarketgrowth-business/dtos/PromoterFromLead.ts +20 -0
  102. 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,5 @@
1
+ /** Todo anfitrión lleva su renglón de asistencia, incluido el responsable (hostEmail). Nunca pasa a NO_SHOW. */
2
+ export enum MeetingAttendanceRoleEnum {
3
+ HOST = 'HOST',
4
+ PARTICIPANT = 'PARTICIPANT',
5
+ }
@@ -0,0 +1,5 @@
1
+ /** ZOOM = lo marcó un aviso de la plataforma; MANUAL = lo marcó el anfitrión (markedBy). */
2
+ export enum MeetingAttendanceSourceEnum {
3
+ ZOOM = 'ZOOM',
4
+ MANUAL = 'MANUAL',
5
+ }
@@ -0,0 +1,7 @@
1
+ /** INVITED es el precargado al crear la reunión (invitado o anfitrión); REGISTERED, quien llenó el registro. */
2
+ export enum MeetingAttendanceStatusEnum {
3
+ INVITED = 'INVITED',
4
+ REGISTERED = 'REGISTERED',
5
+ ATTENDED = 'ATTENDED',
6
+ NO_SHOW = 'NO_SHOW',
7
+ }
@@ -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,6 @@
1
+ /** Cómo se encuentra la gente. En la fase 1, lo creado desde el back office para Zoom es VIRTUAL. */
2
+ export enum MeetingModalityEnum {
3
+ VIRTUAL = 'VIRTUAL',
4
+ IN_PERSON = 'IN_PERSON',
5
+ PHONE = 'PHONE',
6
+ }
@@ -0,0 +1,7 @@
1
+ /** Proveedor de la reunión virtual. El agnosticismo vive acá: ningún campo se llama como el proveedor. */
2
+ export enum MeetingPlatformEnum {
3
+ ZOOM = 'ZOOM',
4
+ TEAMS = 'TEAMS',
5
+ MEET = 'MEET',
6
+ OTHER = 'OTHER',
7
+ }
@@ -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,5 @@
1
+ /** Dónde se puede usar la pregunta: el formulario de registro o la encuesta en vivo. */
2
+ export enum MeetingQuestionSurfaceEnum {
3
+ REGISTRATION = 'REGISTRATION',
4
+ POLL = 'POLL',
5
+ }
@@ -0,0 +1,6 @@
1
+ /** Cerradas (SINGLE, MULTIPLE) o abierta (TEXT). Sólo las cerradas pueden clasificar. */
2
+ export enum MeetingQuestionTypeEnum {
3
+ SINGLE = 'SINGLE',
4
+ MULTIPLE = 'MULTIPLE',
5
+ TEXT = 'TEXT',
6
+ }
@@ -0,0 +1,5 @@
1
+ /** Qué se hace con quien cumple una regla: etiquetar (contra el lambda de tags) o promover a promotor. */
2
+ export enum MeetingRuleActionTypeEnum {
3
+ TAG = 'TAG',
4
+ PROMOTE = 'PROMOTE',
5
+ }
@@ -0,0 +1,5 @@
1
+ export enum MeetingRuleStatusEnum {
2
+ DRAFT = 'DRAFT',
3
+ ACTIVE = 'ACTIVE',
4
+ RETIRED = 'RETIRED',
5
+ }
@@ -0,0 +1,5 @@
1
+ /** De dónde nació la fila: del back office, o capturada de una reunión creada directo en la plataforma. */
2
+ export enum MeetingSourceEnum {
3
+ BACKOFFICE = 'BACKOFFICE',
4
+ ZOOM_DIRECT = 'ZOOM_DIRECT',
5
+ }
@@ -0,0 +1,5 @@
1
+ export enum MeetingStatusEnum {
2
+ SCHEDULED = 'SCHEDULED',
3
+ HELD = 'HELD',
4
+ CANCELLED = 'CANCELLED',
5
+ }
@@ -0,0 +1,5 @@
1
+ /** Cita (invitados conocidos de antemano) o evento masivo. Lo demás es idéntico entre los dos. */
2
+ export enum MeetingTypeEnum {
3
+ APPOINTMENT = 'APPOINTMENT',
4
+ EVENT = 'EVENT',
5
+ }
@@ -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
- @ValidateIf(isNullOrValidated) @IsIn(Object.values(RetailProductTierEnum)) tier!: RetailProductTier | null;
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
- @IsArray() @ArrayMaxSize(RETAIL_ELIGIBLE_FINANCIERS_MAX) @IsIn(Object.values(RetailFinancierEnum), { each: true }) eligibleFinanciers!: RetailFinancier[];
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
  }
@@ -1,4 +1,4 @@
1
- /** Gama de un producto. */
1
+ /** Gama de un producto; mismos valores que `ProductTierEnum` de retailCatalog. */
2
2
  export enum RetailProductTierEnum {
3
3
  LOW = 'LOW',
4
4
  MID = 'MID',
@@ -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
+ }
@@ -1,2 +1,3 @@
1
1
  //dtos
2
2
  export * from './dtos/PromoterByDirectoryIdResponse';
3
+ export * from './dtos/PromoterFromLead';