@fiado/type-kit 3.604.0 → 3.605.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/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/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/usmarketgrowth-business/dtos/PromoterFromLead.ts +20 -0
- package/src/usmarketgrowth-business/index.ts +1 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { MeetingLeadSourceEnum } from '../enums/MeetingLeadSourceEnum';
|
|
2
|
+
|
|
3
|
+
/** Una persona del padrón, una sola vez. Promotor, directorio o cuenta son estados colgados de la fila. */
|
|
4
|
+
export class MeetingLeadResponse {
|
|
5
|
+
id: string;
|
|
6
|
+
name?: string;
|
|
7
|
+
email?: string;
|
|
8
|
+
/** Llave de identidad, normalizado (+1 o +52). */
|
|
9
|
+
phoneNumber?: string;
|
|
10
|
+
/** Derivados del reporte de identificación del lago; no se mantienen a mano. */
|
|
11
|
+
directoryId?: string;
|
|
12
|
+
peopleId?: string;
|
|
13
|
+
hasFiadoAccount?: boolean;
|
|
14
|
+
promoterId?: string;
|
|
15
|
+
source: MeetingLeadSourceEnum;
|
|
16
|
+
lastAttendedAt?: string;
|
|
17
|
+
/** «<ref de pregunta>:<ref de opción>» por opción elegida en una cerrada; lo lee el motor en el lago. */
|
|
18
|
+
answers?: string[];
|
|
19
|
+
/** Correo con el formulario de la reunión (formId). */
|
|
20
|
+
formSentAt?: string;
|
|
21
|
+
formReminderSentAt?: string;
|
|
22
|
+
/** Etiquetas de LeadTags_GT (las sirve el lambda de tags de onboarding-business). */
|
|
23
|
+
tags?: string[];
|
|
24
|
+
tenantId?: string;
|
|
25
|
+
createdAt?: number;
|
|
26
|
+
updatedAt?: number;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export class MeetingLeadListResponse {
|
|
30
|
+
items: MeetingLeadResponse[];
|
|
31
|
+
index: string | null;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export class MeetingLeadCreateRequest {
|
|
35
|
+
name?: string;
|
|
36
|
+
email?: string;
|
|
37
|
+
/** El lead nace cuando aparece el teléfono; a mano se exige. */
|
|
38
|
+
phoneNumber: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** PUT /leads/{id}/tags: etiquetas a mano, contra la lista blanca de MeetingLeadTagEnum. */
|
|
42
|
+
export class MeetingLeadTagsRequest {
|
|
43
|
+
add?: string[];
|
|
44
|
+
remove?: string[];
|
|
45
|
+
/** En qué reunión se ganó, si aplica. */
|
|
46
|
+
meetingId?: string;
|
|
47
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { MeetingQuestionDataTypeEnum } from '../enums/MeetingQuestionDataTypeEnum';
|
|
2
|
+
import { MeetingQuestionSurfaceEnum } from '../enums/MeetingQuestionSurfaceEnum';
|
|
3
|
+
import { MeetingQuestionTypeEnum } from '../enums/MeetingQuestionTypeEnum';
|
|
4
|
+
|
|
5
|
+
/** Una opción de una pregunta cerrada. La referencia es estable; el texto puede cambiar. */
|
|
6
|
+
export class MeetingQuestionOption {
|
|
7
|
+
ref: string;
|
|
8
|
+
value: string;
|
|
9
|
+
/** Etiqueta que gana quien la elige, si la pregunta es clasificatoria. */
|
|
10
|
+
tag?: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export class MeetingQuestionItem {
|
|
14
|
+
/** Referencia estable: las reglas se escriben contra ella, renombrar no rompe nada. */
|
|
15
|
+
ref: string;
|
|
16
|
+
text: string;
|
|
17
|
+
type: MeetingQuestionTypeEnum;
|
|
18
|
+
/** Sólo en abiertas (TEXT) y opcional: lo valida meetings-business al recibir. */
|
|
19
|
+
dataType?: MeetingQuestionDataTypeEnum;
|
|
20
|
+
surfaces: MeetingQuestionSurfaceEnum[];
|
|
21
|
+
/** Sólo aplica en el registro. */
|
|
22
|
+
required?: boolean;
|
|
23
|
+
/** Una abierta clasificatoria se rechaza al guardar: el motor compara valores, no lee texto. */
|
|
24
|
+
classifying?: boolean;
|
|
25
|
+
options?: MeetingQuestionOption[];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Una encuesta del catálogo, versionada: cada edición crea una versión nueva y conserva la vieja. */
|
|
29
|
+
export class MeetingQuestionCatalogResponse {
|
|
30
|
+
id: string;
|
|
31
|
+
version: number;
|
|
32
|
+
/** Hasta MEETING_QUESTION_TITLE_MAX_LENGTH caracteres. */
|
|
33
|
+
title: string;
|
|
34
|
+
questions: MeetingQuestionItem[];
|
|
35
|
+
/** Las inactivas no aparecen al crear reuniones. */
|
|
36
|
+
active: boolean;
|
|
37
|
+
tenantId?: string;
|
|
38
|
+
createdAt?: number;
|
|
39
|
+
updatedAt?: number;
|
|
40
|
+
createdBy?: string;
|
|
41
|
+
updatedBy?: string;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export class MeetingQuestionUpsertRequest {
|
|
45
|
+
title: string;
|
|
46
|
+
questions: MeetingQuestionItem[];
|
|
47
|
+
active?: boolean;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export class MeetingQuestionListResponse {
|
|
51
|
+
items: MeetingQuestionCatalogResponse[];
|
|
52
|
+
index: string | null;
|
|
53
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { JsonValue } from '../../common';
|
|
2
|
+
import { MeetingEventTypeEnum } from '../enums/MeetingEventTypeEnum';
|
|
3
|
+
|
|
4
|
+
/** meeting.created: fechas vacías = reunión sin horario fijo (se guarda cuando empiece cada sesión). */
|
|
5
|
+
export interface MeetingCreatedPayload {
|
|
6
|
+
externalMeetingId: string;
|
|
7
|
+
hostEmail?: string;
|
|
8
|
+
/** Quién la creó en la plataforma, si no es el anfitrión. */
|
|
9
|
+
operator?: string;
|
|
10
|
+
title?: string;
|
|
11
|
+
/** ISO 8601 UTC, una por fecha fija. */
|
|
12
|
+
dates: string[];
|
|
13
|
+
timezone?: string;
|
|
14
|
+
durationMinutes?: number;
|
|
15
|
+
joinUrl?: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface MeetingUpdatedPayload {
|
|
19
|
+
externalMeetingId: string;
|
|
20
|
+
/** Lo que cambió, tal como lo reportó la plataforma. */
|
|
21
|
+
changes: Record<string, JsonValue>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface MeetingDeletedPayload {
|
|
25
|
+
externalMeetingId: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface SessionStartedPayload {
|
|
29
|
+
externalMeetingId: string;
|
|
30
|
+
sessionId: string;
|
|
31
|
+
startedAt: string;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** El teléfono va tal como lo escribió la persona: lo normaliza meetings-business. */
|
|
35
|
+
export interface PersonRegisteredPayload {
|
|
36
|
+
externalMeetingId: string;
|
|
37
|
+
registrantId: string;
|
|
38
|
+
name?: string;
|
|
39
|
+
email?: string;
|
|
40
|
+
phoneNumber?: string;
|
|
41
|
+
answers?: Array<{ question: string; answer: string }>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface ParticipantJoinedPayload {
|
|
45
|
+
externalMeetingId: string;
|
|
46
|
+
sessionId: string;
|
|
47
|
+
participantId: string;
|
|
48
|
+
registrantId?: string;
|
|
49
|
+
name?: string;
|
|
50
|
+
email?: string;
|
|
51
|
+
joinedAt: string;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface ParticipantLeftPayload {
|
|
55
|
+
externalMeetingId: string;
|
|
56
|
+
sessionId: string;
|
|
57
|
+
participantId: string;
|
|
58
|
+
registrantId?: string;
|
|
59
|
+
name?: string;
|
|
60
|
+
email?: string;
|
|
61
|
+
leftAt: string;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface MeetingEndedPayload {
|
|
65
|
+
externalMeetingId: string;
|
|
66
|
+
sessionId: string;
|
|
67
|
+
startedAt?: string;
|
|
68
|
+
endedAt: string;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/** Lo publica usmarketgrowth-business al crear un promotor; el lead guarda su promoterId. */
|
|
72
|
+
export interface PromoterCreatedPayload {
|
|
73
|
+
promoterId: string;
|
|
74
|
+
phoneNumber?: string;
|
|
75
|
+
email?: string;
|
|
76
|
+
name?: string;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export type MeetingEventPayload =
|
|
80
|
+
| MeetingCreatedPayload
|
|
81
|
+
| MeetingUpdatedPayload
|
|
82
|
+
| MeetingDeletedPayload
|
|
83
|
+
| SessionStartedPayload
|
|
84
|
+
| PersonRegisteredPayload
|
|
85
|
+
| ParticipantJoinedPayload
|
|
86
|
+
| ParticipantLeftPayload
|
|
87
|
+
| MeetingEndedPayload
|
|
88
|
+
| PromoterCreatedPayload;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Sobre de todo mensaje de MeetingsBusinessQueue. El connector traduce los avisos de la plataforma a
|
|
92
|
+
* esto: nada nombra al proveedor (la reunión allá es externalMeetingId; una sesión, sessionId).
|
|
93
|
+
* El consumidor es idempotente: un eventId repetido o fuera de orden no duplica nada.
|
|
94
|
+
*/
|
|
95
|
+
export class MeetingQueueEvent<T = MeetingEventPayload> {
|
|
96
|
+
type: MeetingEventTypeEnum;
|
|
97
|
+
/** Identidad del aviso en el origen, para idempotencia. */
|
|
98
|
+
eventId: string;
|
|
99
|
+
/** Cuándo pasó, ISO 8601 UTC. */
|
|
100
|
+
occurredAt: string;
|
|
101
|
+
payload: T;
|
|
102
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { MeetingAttendanceRoleEnum } from '../enums/MeetingAttendanceRoleEnum';
|
|
2
|
+
import { MeetingModalityEnum } from '../enums/MeetingModalityEnum';
|
|
3
|
+
import { MeetingPlatformEnum } from '../enums/MeetingPlatformEnum';
|
|
4
|
+
import { MeetingSourceEnum } from '../enums/MeetingSourceEnum';
|
|
5
|
+
import { MeetingStatusEnum } from '../enums/MeetingStatusEnum';
|
|
6
|
+
import { MeetingTypeEnum } from '../enums/MeetingTypeEnum';
|
|
7
|
+
import { MeetingPollRef } from './MeetingPollRef';
|
|
8
|
+
import { MeetingQuestionRef } from './MeetingQuestionRef';
|
|
9
|
+
import { MeetingSessionRef } from './MeetingSessionRef';
|
|
10
|
+
|
|
11
|
+
/** Una reunión (cita o evento) de una fecha. Una clase que se repite son varias filas. */
|
|
12
|
+
export class MeetingResponse {
|
|
13
|
+
id: string;
|
|
14
|
+
type: MeetingTypeEnum;
|
|
15
|
+
title: string;
|
|
16
|
+
/** El mensaje de la reunión; va a la plataforma como agenda. */
|
|
17
|
+
description?: string;
|
|
18
|
+
/** Tipo de clase, sólo en eventos; texto con autocompletado, no un enum (decidido el 22-10). */
|
|
19
|
+
classType?: string;
|
|
20
|
+
/** Referencia opcional a una campaña de otro servicio. */
|
|
21
|
+
campaignId?: string;
|
|
22
|
+
/** ISO 8601 UTC. Puede faltar en reuniones capturadas sin fecha. */
|
|
23
|
+
startsAt?: string;
|
|
24
|
+
durationMinutes?: number;
|
|
25
|
+
/** Zona de la reunión, p. ej. America/Los_Angeles. */
|
|
26
|
+
timezone?: string;
|
|
27
|
+
/** AAAA-MM-DD en esa zona; con externalMeetingId identifica la fila de una sesión. */
|
|
28
|
+
localDate?: string;
|
|
29
|
+
/** AAAA-MM en UTC, para el índice de «Todas». */
|
|
30
|
+
month: string;
|
|
31
|
+
/** El responsable único. Los co-anfitriones son renglones de asistencia con role HOST. */
|
|
32
|
+
hostEmail: string;
|
|
33
|
+
hostName?: string;
|
|
34
|
+
modality: MeetingModalityEnum;
|
|
35
|
+
platform?: MeetingPlatformEnum;
|
|
36
|
+
/** En Zoom, el link de registro: lo que se publica por WhatsApp y lleva el QR. */
|
|
37
|
+
meetingUrl?: string;
|
|
38
|
+
address?: string;
|
|
39
|
+
phoneNumber?: string;
|
|
40
|
+
registrationRequired: boolean;
|
|
41
|
+
phoneRequired: boolean;
|
|
42
|
+
/** El formulario que se manda a los asistentes (MeetingForm_GT); vacío = no se manda nada. */
|
|
43
|
+
formId?: string;
|
|
44
|
+
status: MeetingStatusEnum;
|
|
45
|
+
/** Id de la reunión en la plataforma, como texto (en Zoom puede pasar de 10 dígitos). */
|
|
46
|
+
externalMeetingId?: string;
|
|
47
|
+
externalSessions?: MeetingSessionRef[];
|
|
48
|
+
polls?: MeetingPollRef[];
|
|
49
|
+
registrationQuestions?: MeetingQuestionRef[];
|
|
50
|
+
source: MeetingSourceEnum;
|
|
51
|
+
/** Sólo en citas capturadas de la plataforma: pendiente de clasificar en el back office. */
|
|
52
|
+
pendingClassification?: boolean;
|
|
53
|
+
/** Todos los participantes eran del equipo interno: no ensucia reportes, no se borra. */
|
|
54
|
+
internal?: boolean;
|
|
55
|
+
/** Cuántos renglones de asistencia PARTICIPANT tiene (registrados o que entraron). Lo mantiene
|
|
56
|
+
* meetings-business en la fila al cambiar la asistencia; el back office lo muestra sin recalcular. */
|
|
57
|
+
registeredCount?: number;
|
|
58
|
+
/** Cuántos de esos PARTICIPANT quedaron ATTENDED. Mismo mantenimiento que registeredCount. */
|
|
59
|
+
attendedCount?: number;
|
|
60
|
+
tenantId?: string;
|
|
61
|
+
/** Epoch ms, como el resto de la flota. */
|
|
62
|
+
createdAt?: number;
|
|
63
|
+
updatedAt?: number;
|
|
64
|
+
createdBy?: string;
|
|
65
|
+
updatedBy?: string;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** Un invitado o co-anfitrión al crear o editar: nace como renglón de asistencia INVITED. */
|
|
69
|
+
export class MeetingInviteeRequest {
|
|
70
|
+
role: MeetingAttendanceRoleEnum;
|
|
71
|
+
name?: string;
|
|
72
|
+
/** Obligatorio si la reunión es virtual: es por donde se avisa. */
|
|
73
|
+
email?: string;
|
|
74
|
+
/** Obligatorio si la reunión es por teléfono. */
|
|
75
|
+
phoneNumber?: string;
|
|
76
|
+
leadId?: string;
|
|
77
|
+
promoterId?: string;
|
|
78
|
+
directoryId?: string;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export class MeetingCreateRequest {
|
|
82
|
+
type: MeetingTypeEnum;
|
|
83
|
+
title: string;
|
|
84
|
+
description?: string;
|
|
85
|
+
classType?: string;
|
|
86
|
+
campaignId?: string;
|
|
87
|
+
startsAt: string;
|
|
88
|
+
durationMinutes: number;
|
|
89
|
+
timezone: string;
|
|
90
|
+
hostEmail: string;
|
|
91
|
+
hostName?: string;
|
|
92
|
+
modality: MeetingModalityEnum;
|
|
93
|
+
platform?: MeetingPlatformEnum;
|
|
94
|
+
/** Link cargado a mano cuando no se crea en la plataforma. */
|
|
95
|
+
meetingUrl?: string;
|
|
96
|
+
address?: string;
|
|
97
|
+
phoneNumber?: string;
|
|
98
|
+
/** Marcadas por defecto en el back office. */
|
|
99
|
+
registrationRequired?: boolean;
|
|
100
|
+
phoneRequired?: boolean;
|
|
101
|
+
formId?: string;
|
|
102
|
+
invitees?: MeetingInviteeRequest[];
|
|
103
|
+
registrationQuestions?: MeetingQuestionRef[];
|
|
104
|
+
polls?: MeetingQuestionRef[];
|
|
105
|
+
/** true = pedirle al connector que la cree en la plataforma (botón «Crear en Zoom»). */
|
|
106
|
+
createInPlatform?: boolean;
|
|
107
|
+
/** Repetición semanal: cuántas reuniones independientes crear (tope MEETING_REPEAT_MAX). */
|
|
108
|
+
repeatWeeks?: number;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export class MeetingUpdateRequest {
|
|
112
|
+
title?: string;
|
|
113
|
+
description?: string;
|
|
114
|
+
classType?: string;
|
|
115
|
+
campaignId?: string;
|
|
116
|
+
startsAt?: string;
|
|
117
|
+
durationMinutes?: number;
|
|
118
|
+
timezone?: string;
|
|
119
|
+
hostEmail?: string;
|
|
120
|
+
hostName?: string;
|
|
121
|
+
modality?: MeetingModalityEnum;
|
|
122
|
+
platform?: MeetingPlatformEnum;
|
|
123
|
+
meetingUrl?: string;
|
|
124
|
+
address?: string;
|
|
125
|
+
phoneNumber?: string;
|
|
126
|
+
registrationRequired?: boolean;
|
|
127
|
+
phoneRequired?: boolean;
|
|
128
|
+
formId?: string;
|
|
129
|
+
status?: MeetingStatusEnum;
|
|
130
|
+
invitees?: MeetingInviteeRequest[];
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export class MeetingListResponse {
|
|
134
|
+
items: MeetingResponse[];
|
|
135
|
+
index: string | null;
|
|
136
|
+
}
|
|
@@ -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';
|
|
@@ -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
|
+
}
|