@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
|
@@ -42,7 +42,7 @@ const price = { basePrice: '4299.00', listPrice: null, effectiveFrom: '2026-08-1
|
|
|
42
42
|
const product = {
|
|
43
43
|
sku: 'SAM-A17-128-NEG', externalId: '9001', brand: 'Samsung', model: 'A17', color: 'Negro', capacity: '128 GB', description: null,
|
|
44
44
|
category: 'PHONE', trackingMode: 'IMEI', tier: null, currencyId: 'MXN', price,
|
|
45
|
-
eligibleFinanciers: [], mdmProvider: null, status: 'ACTIVE',
|
|
45
|
+
eligibleFinanciers: ['SUREKEEP'], mdmProvider: null, status: 'ACTIVE',
|
|
46
46
|
};
|
|
47
47
|
const piece = { sku: 'SAM-A17-128-NEG', identifier: '356938035643809', storeId: '12', status: 'SOLD', reason: null };
|
|
48
48
|
const movement = { movementType: 'SALE', storeId: '12', targetStoreId: null, pieces: [piece], stock: [] };
|
|
@@ -105,7 +105,7 @@ describe('ProductEventPayload: topes', () => {
|
|
|
105
105
|
const atMax = {
|
|
106
106
|
...product, externalId: text(ID), brand: text(SHORT), model: text(SHORT), color: text(SHORT), capacity: text(SHORT), description: text(LONG),
|
|
107
107
|
price: { ...price, basePrice: '999999999999.99', listPrice: '999999999999.99' },
|
|
108
|
-
eligibleFinanciers:
|
|
108
|
+
eligibleFinanciers: ['SUREKEEP', 'PAYJOY', 'CREDIYA', 'LESPAGO', 'INNOVA'],
|
|
109
109
|
};
|
|
110
110
|
expect(await errorsOf(ProductEventPayload, atMax)).toEqual([]);
|
|
111
111
|
});
|
|
@@ -6,6 +6,8 @@ import { RetailUserEventPayload } from '../../../src/retailIntegration/dtos/Reta
|
|
|
6
6
|
import { ProductEventPayload } from '../../../src/retailIntegration/dtos/ProductEventPayload';
|
|
7
7
|
import { InventoryEventPayload } from '../../../src/retailIntegration/dtos/InventoryEventPayload';
|
|
8
8
|
import { RETAIL_EVENT_PIECES_MAX } from '../../../src/retailIntegration/constants/retailIntegrationLimits';
|
|
9
|
+
import { RetailProductTierEnum } from '../../../src/retailIntegration/enums';
|
|
10
|
+
import { ProductTierEnum } from '../../../src/retailCatalog/enums/ProductTierEnum';
|
|
9
11
|
|
|
10
12
|
function paths(errors: ValidationError[], prefix = ''): string[] {
|
|
11
13
|
return errors.flatMap((e) => {
|
|
@@ -78,7 +80,7 @@ const product = {
|
|
|
78
80
|
sku: 'SAM-A17-128-NEG', externalId: '9001', brand: 'Samsung', model: 'A17', color: 'Negro', capacity: '128 GB', description: null,
|
|
79
81
|
category: 'PHONE', trackingMode: 'IMEI', tier: null, currencyId: 'MXN',
|
|
80
82
|
price: { basePrice: '4299.00', listPrice: null, effectiveFrom: '2026-08-17T20:32:05Z' },
|
|
81
|
-
eligibleFinanciers: [], mdmProvider: null, status: 'ACTIVE',
|
|
83
|
+
eligibleFinanciers: ['SUREKEEP'], mdmProvider: null, status: 'ACTIVE',
|
|
82
84
|
};
|
|
83
85
|
|
|
84
86
|
const piece = { sku: 'SAM-A17-128-NEG', identifier: '356938035643809', storeId: '12', status: 'SOLD', reason: null };
|
|
@@ -93,6 +95,41 @@ describe('ProductEventPayload', () => {
|
|
|
93
95
|
expect(await errorsOf(ProductEventPayload, { ...product, mdmProvider })).toEqual([]);
|
|
94
96
|
});
|
|
95
97
|
|
|
98
|
+
it.each([
|
|
99
|
+
['ausente', undefined],
|
|
100
|
+
['null', null],
|
|
101
|
+
['de la gama', 'PREMIUM'],
|
|
102
|
+
])('acepta tier %s', async (_case, tier) => {
|
|
103
|
+
expect(await errorsOf(ProductEventPayload, { ...product, tier })).toEqual([]);
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
it.each([
|
|
107
|
+
['ausente', undefined],
|
|
108
|
+
['null', null],
|
|
109
|
+
['con financieras', ['SUREKEEP', 'PAYJOY']],
|
|
110
|
+
])('acepta eligibleFinanciers %s', async (_case, eligibleFinanciers) => {
|
|
111
|
+
expect(await errorsOf(ProductEventPayload, { ...product, eligibleFinanciers })).toEqual([]);
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
it('al transformar, tier ausente queda null y eligibleFinanciers ausente o null queda con todas', () => {
|
|
115
|
+
const { tier: _tier, eligibleFinanciers: _financiers, ...withoutKeys } = product;
|
|
116
|
+
const all = ['SUREKEEP', 'PAYJOY', 'CREDIYA', 'LESPAGO', 'INNOVA'];
|
|
117
|
+
const fromAbsent = plainToInstance(ProductEventPayload, withoutKeys);
|
|
118
|
+
expect(fromAbsent.tier).toBeNull();
|
|
119
|
+
expect(fromAbsent.eligibleFinanciers).toEqual(all);
|
|
120
|
+
expect(plainToInstance(ProductEventPayload, { ...product, eligibleFinanciers: null }).eligibleFinanciers).toEqual(all);
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
it('al transformar, conserva tier y eligibleFinanciers cuando vienen', () => {
|
|
124
|
+
const dto = plainToInstance(ProductEventPayload, { ...product, tier: 'MID', eligibleFinanciers: ['PAYJOY'] });
|
|
125
|
+
expect(dto.tier).toBe('MID');
|
|
126
|
+
expect(dto.eligibleFinanciers).toEqual(['PAYJOY']);
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
it('la gama de la integración trae los mismos valores que la de catálogo', () => {
|
|
130
|
+
expect(Object.values(RetailProductTierEnum)).toEqual(Object.values(ProductTierEnum));
|
|
131
|
+
});
|
|
132
|
+
|
|
96
133
|
it('rechaza un mdmProvider fuera del enum', async () => {
|
|
97
134
|
expect(await errorsOf(ProductEventPayload, { ...product, mdmProvider: 'KNOX' })).toContain('mdmProvider');
|
|
98
135
|
});
|
|
@@ -102,7 +139,11 @@ describe('ProductEventPayload', () => {
|
|
|
102
139
|
['price.basePrice', { price: { ...product.price, basePrice: '4299' } }],
|
|
103
140
|
['price.effectiveFrom', { price: { ...product.price, effectiveFrom: '2026-08-17T20:32:05' } }],
|
|
104
141
|
['eligibleFinanciers', { eligibleFinanciers: ['NADIE'] }],
|
|
105
|
-
['
|
|
142
|
+
['eligibleFinanciers', { eligibleFinanciers: [] }],
|
|
143
|
+
['eligibleFinanciers', { eligibleFinanciers: ['SUREKEEP', 'SUREKEEP'] }],
|
|
144
|
+
['eligibleFinanciers', { eligibleFinanciers: 'SUREKEEP' }],
|
|
145
|
+
['tier', { tier: 'ULTRA' }],
|
|
146
|
+
['tier', { tier: 'low' }],
|
|
106
147
|
['price.listPrice', { price: { basePrice: '4299.00', effectiveFrom: '2026-08-17T20:32:05Z' } }],
|
|
107
148
|
])('rechaza %s', async (path, over) => {
|
|
108
149
|
expect(await errorsOf(ProductEventPayload, { ...product, ...over })).toContain(path);
|
package/bin/index.d.ts
CHANGED
|
@@ -129,6 +129,7 @@ export * as RewardsEligibility from './rewardsEligibility';
|
|
|
129
129
|
export * as DatalakeReports from './datalakeReports';
|
|
130
130
|
export * as PdfRender from './pdfRender';
|
|
131
131
|
export * as Rules from './rules';
|
|
132
|
+
export * as Meetings from './meetings';
|
|
132
133
|
export * as LoanRetailAudit from './loanRetailAudit';
|
|
133
134
|
export * as TaskManager from './task-manager-business';
|
|
134
135
|
export * as CustomerMessages from './customerMessages';
|
package/bin/index.js
CHANGED
|
@@ -38,7 +38,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.CentralPayments = exports.Helpdesk = exports.FiadoApiResponse = exports.Auth = exports.LegalDocumentsBusiness = exports.Role = exports.STPAccount = exports.RiskProfile = exports.FraudPreventionEngine = exports.BBVARst = exports.Stp = exports.BenefitCenter = exports.FiadoIncFavorite = exports.BankAccount = exports.P2pContact = exports.CreditContract = exports.Contract = exports.ProductCatalog = exports.ContactInfo = exports.TransactionAnalytics = exports.Transaction = exports.TransactionProcessor = exports.GenericMessage = exports.EventBridgeMessage = exports.SessionActivity = exports.MessageMoments = exports.NotificationMessages = exports.ServicePayment = exports.Header = exports.Identity = exports.UserTags = exports.Group = exports.File = exports.ExchangeRate = exports.Directory = exports.Currency = exports.Country = exports.Card = exports.Authentication = exports.AppContent = exports.App = exports.Offices = exports.Places = exports.Address = exports.Beneficiary = exports.Activity = exports.Biometrics = exports.MetamapConnector = exports.Account = exports.Crypto = void 0;
|
|
40
40
|
exports.RetailCards = exports.RetailCatalog = exports.RetailCommission = exports.RetailOrg = exports.EmailVerification = exports.NetworkConnector = exports.Modelias = exports.TotpSecurity = exports.Passport = exports.WalletFunding = exports.Remittance = exports.PlatformRbac = exports.CognitoBackofficeConnector = exports.WhatsappConnector = exports.TwilioConnector = exports.MessagesConnector = exports.Mdm = exports.MilestoneBusiness = exports.CirculoCredito = exports.CreditStatements = exports.Sentry = exports.AiEngine = exports.Funnel = exports.TeamsConnector = exports.PlatformErrorEvents = exports.CustomerFile = exports.CreditBackoffice = exports.CreditDashboard = exports.CreditEngine = exports.Credit = exports.ComissionBusiness = exports.UsMarketGrowthBusiness = exports.ReferralBusiness = exports.ZendeskMessaging = exports.NotificationWS = exports.Event = exports.PayrollBusiness = exports.Cnbv = exports.DirectorySetting = exports.InvoiceCollector = exports.Collector = exports.Pricelist = exports.Company = exports.Services = exports.AccountIssuanceBusiness = exports.AppSelectionData = exports.Device = exports.Observations = exports.IssuanceBusiness = exports.Blacklist = void 0;
|
|
41
|
-
exports.CustomerMessages = exports.TaskManager = exports.LoanRetailAudit = exports.Rules = exports.PdfRender = exports.DatalakeReports = exports.RewardsEligibility = exports.Rewards = exports.DynamicForm = exports.FileStorage = exports.MoneyTransfer = exports.RetailLoan = exports.Membership = exports.WebhookBusiness = exports.PeopleBusiness = exports.UserConfirmations = exports.Collection = exports.Shipping = exports.PhoneSales = exports.Onboarding = exports.Kyc = exports.LoanScoring = exports.LoanCredit = exports.LoanCollectorAssignment = exports.LoanOfferings = exports.Shortlink = exports.LoanConfig = exports.DatalakeQuery = exports.RetailIntegration = exports.RetailPromotions = exports.RetailWizard = exports.RetailCustomer = void 0;
|
|
41
|
+
exports.CustomerMessages = exports.TaskManager = exports.LoanRetailAudit = exports.Meetings = exports.Rules = exports.PdfRender = exports.DatalakeReports = exports.RewardsEligibility = exports.Rewards = exports.DynamicForm = exports.FileStorage = exports.MoneyTransfer = exports.RetailLoan = exports.Membership = exports.WebhookBusiness = exports.PeopleBusiness = exports.UserConfirmations = exports.Collection = exports.Shipping = exports.PhoneSales = exports.Onboarding = exports.Kyc = exports.LoanScoring = exports.LoanCredit = exports.LoanCollectorAssignment = exports.LoanOfferings = exports.Shortlink = exports.LoanConfig = exports.DatalakeQuery = exports.RetailIntegration = exports.RetailPromotions = exports.RetailWizard = exports.RetailCustomer = void 0;
|
|
42
42
|
exports.Crypto = __importStar(require("./crypto"));
|
|
43
43
|
exports.Account = __importStar(require("./account"));
|
|
44
44
|
exports.MetamapConnector = __importStar(require("./metamapConnector"));
|
|
@@ -252,6 +252,9 @@ exports.DatalakeReports = __importStar(require("./datalakeReports"));
|
|
|
252
252
|
exports.PdfRender = __importStar(require("./pdfRender"));
|
|
253
253
|
// Rules: DTOs del lambda central rules-business (catálogo, validación, generación con IA y evaluación de reglas).
|
|
254
254
|
exports.Rules = __importStar(require("./rules"));
|
|
255
|
+
// Meetings: reuniones, eventos y leads (meetings-business y meeting-connector): el contrato de los
|
|
256
|
+
// endpoints del back office y los eventos de MeetingsBusinessQueue, sin nombrar al proveedor.
|
|
257
|
+
exports.Meetings = __importStar(require("./meetings"));
|
|
255
258
|
// LoanRetailAudit: contrato del lambda central loan-retail-audit-business (bitácora y accesos a PII
|
|
256
259
|
// de Loan y Retail): mensaje de su cola, POST /private/pii-access-logs y GET /private/audit-trail.
|
|
257
260
|
exports.LoanRetailAudit = __importStar(require("./loanRetailAudit"));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Título de una encuesta o pregunta: lo que ve el asistente en la plataforma. */
|
|
2
|
+
export declare const MEETING_QUESTION_TITLE_MAX_LENGTH = 64;
|
|
3
|
+
/** Una pregunta cerrada lleva entre 2 y 10 opciones; una abierta, ninguna. */
|
|
4
|
+
export declare const MEETING_QUESTION_OPTIONS_MIN = 2;
|
|
5
|
+
export declare const MEETING_QUESTION_OPTIONS_MAX = 10;
|
|
6
|
+
/** Tope de reuniones que crea una repetición semanal (la plataforma limita las creaciones por día). */
|
|
7
|
+
export declare const MEETING_REPEAT_MAX = 12;
|
|
8
|
+
/** Un evento se dimensiona para miles de asistentes, no decenas de miles: por encima se procesa en lotes. */
|
|
9
|
+
export declare const MEETING_EVENT_EXPECTED_MAX_ATTENDEES = 2000;
|
|
10
|
+
/** Entrada "pregunta:opción" de Lead_GT.answers: referencias estables, nunca el texto. */
|
|
11
|
+
export declare const MEETING_ANSWER_TOKEN_SEPARATOR = ":";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MEETING_ANSWER_TOKEN_SEPARATOR = exports.MEETING_EVENT_EXPECTED_MAX_ATTENDEES = exports.MEETING_REPEAT_MAX = exports.MEETING_QUESTION_OPTIONS_MAX = exports.MEETING_QUESTION_OPTIONS_MIN = exports.MEETING_QUESTION_TITLE_MAX_LENGTH = void 0;
|
|
4
|
+
/** Título de una encuesta o pregunta: lo que ve el asistente en la plataforma. */
|
|
5
|
+
exports.MEETING_QUESTION_TITLE_MAX_LENGTH = 64;
|
|
6
|
+
/** Una pregunta cerrada lleva entre 2 y 10 opciones; una abierta, ninguna. */
|
|
7
|
+
exports.MEETING_QUESTION_OPTIONS_MIN = 2;
|
|
8
|
+
exports.MEETING_QUESTION_OPTIONS_MAX = 10;
|
|
9
|
+
/** Tope de reuniones que crea una repetición semanal (la plataforma limita las creaciones por día). */
|
|
10
|
+
exports.MEETING_REPEAT_MAX = 12;
|
|
11
|
+
/** Un evento se dimensiona para miles de asistentes, no decenas de miles: por encima se procesa en lotes. */
|
|
12
|
+
exports.MEETING_EVENT_EXPECTED_MAX_ATTENDEES = 2000;
|
|
13
|
+
/** Entrada "pregunta:opción" de Lead_GT.answers: referencias estables, nunca el texto. */
|
|
14
|
+
exports.MEETING_ANSWER_TOKEN_SEPARATOR = ':';
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { MeetingAttendanceRoleEnum } from '../enums/MeetingAttendanceRoleEnum';
|
|
2
|
+
import { MeetingAttendanceSourceEnum } from '../enums/MeetingAttendanceSourceEnum';
|
|
3
|
+
import { MeetingAttendanceStatusEnum } from '../enums/MeetingAttendanceStatusEnum';
|
|
4
|
+
import { MeetingQuestionSurfaceEnum } from '../enums/MeetingQuestionSurfaceEnum';
|
|
5
|
+
/** Una respuesta guardada en el renglón de asistencia (del registro o de la encuesta en vivo). */
|
|
6
|
+
export declare class MeetingAnswer {
|
|
7
|
+
questionId: string;
|
|
8
|
+
version: number;
|
|
9
|
+
surface: MeetingQuestionSurfaceEnum;
|
|
10
|
+
/** El texto que vio la persona, como contexto; las reglas usan las referencias. */
|
|
11
|
+
question?: string;
|
|
12
|
+
answer: string;
|
|
13
|
+
/** Referencias estables de las opciones elegidas (las entradas de Lead_GT.answers salen de acá). */
|
|
14
|
+
optionRefs?: string[];
|
|
15
|
+
/** true = no cumple el dataType declarado; se guarda tal como llegó y no crea lead. */
|
|
16
|
+
invalid?: boolean;
|
|
17
|
+
respondedAt?: string;
|
|
18
|
+
}
|
|
19
|
+
/** Una persona en una reunión, desde que se la invita o se registra. Los anfitriones también. */
|
|
20
|
+
export declare class MeetingAttendanceResponse {
|
|
21
|
+
meetingId: string;
|
|
22
|
+
/** LEAD#<id>; EMAIL#<correo> si todavía no es lead; EXT#<id de participante> si no se pudo identificar. */
|
|
23
|
+
personKey: string;
|
|
24
|
+
role: MeetingAttendanceRoleEnum;
|
|
25
|
+
status: MeetingAttendanceStatusEnum;
|
|
26
|
+
leadId?: string;
|
|
27
|
+
promoterId?: string;
|
|
28
|
+
directoryId?: string;
|
|
29
|
+
meetingStartsAt?: string;
|
|
30
|
+
name?: string;
|
|
31
|
+
email?: string;
|
|
32
|
+
phoneNumber?: string;
|
|
33
|
+
externalRegistrantId?: string;
|
|
34
|
+
registeredAt?: string;
|
|
35
|
+
joinedAt?: string;
|
|
36
|
+
leftAt?: string;
|
|
37
|
+
/** Suma de tramos si se reconecta. */
|
|
38
|
+
durationMinutes?: number;
|
|
39
|
+
wasInvited?: boolean;
|
|
40
|
+
source: MeetingAttendanceSourceEnum;
|
|
41
|
+
markedBy?: string;
|
|
42
|
+
responses?: MeetingAnswer[];
|
|
43
|
+
createdAt?: number;
|
|
44
|
+
updatedAt?: number;
|
|
45
|
+
}
|
|
46
|
+
/** Marcar asistencia fuera de la plataforma: lo marcado queda ATTENDED y los invitados sin marcar, NO_SHOW. */
|
|
47
|
+
export declare class MeetingAttendanceMarkItem {
|
|
48
|
+
/** De un renglón existente; si falta, se crea uno nuevo con los datos de abajo. */
|
|
49
|
+
personKey?: string;
|
|
50
|
+
name?: string;
|
|
51
|
+
email?: string;
|
|
52
|
+
phoneNumber?: string;
|
|
53
|
+
attended: boolean;
|
|
54
|
+
}
|
|
55
|
+
export declare class MeetingAttendanceMarkRequest {
|
|
56
|
+
items: MeetingAttendanceMarkItem[];
|
|
57
|
+
}
|
|
58
|
+
export declare class MeetingAttendanceListResponse {
|
|
59
|
+
items: MeetingAttendanceResponse[];
|
|
60
|
+
index: string | null;
|
|
61
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MeetingAttendanceListResponse = exports.MeetingAttendanceMarkRequest = exports.MeetingAttendanceMarkItem = exports.MeetingAttendanceResponse = exports.MeetingAnswer = void 0;
|
|
4
|
+
/** Una respuesta guardada en el renglón de asistencia (del registro o de la encuesta en vivo). */
|
|
5
|
+
class MeetingAnswer {
|
|
6
|
+
}
|
|
7
|
+
exports.MeetingAnswer = MeetingAnswer;
|
|
8
|
+
/** Una persona en una reunión, desde que se la invita o se registra. Los anfitriones también. */
|
|
9
|
+
class MeetingAttendanceResponse {
|
|
10
|
+
}
|
|
11
|
+
exports.MeetingAttendanceResponse = MeetingAttendanceResponse;
|
|
12
|
+
/** Marcar asistencia fuera de la plataforma: lo marcado queda ATTENDED y los invitados sin marcar, NO_SHOW. */
|
|
13
|
+
class MeetingAttendanceMarkItem {
|
|
14
|
+
}
|
|
15
|
+
exports.MeetingAttendanceMarkItem = MeetingAttendanceMarkItem;
|
|
16
|
+
class MeetingAttendanceMarkRequest {
|
|
17
|
+
}
|
|
18
|
+
exports.MeetingAttendanceMarkRequest = MeetingAttendanceMarkRequest;
|
|
19
|
+
class MeetingAttendanceListResponse {
|
|
20
|
+
}
|
|
21
|
+
exports.MeetingAttendanceListResponse = MeetingAttendanceListResponse;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** Un formulario que se manda a los asistentes (el formId de la reunión). Los carga Silvia; no se borran. */
|
|
2
|
+
export declare class MeetingFormResponse {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
/** El link del formulario; hoy, Microsoft Forms. */
|
|
6
|
+
url: string;
|
|
7
|
+
/** Plantilla de messages-business con que se manda el correo. */
|
|
8
|
+
templateId: string;
|
|
9
|
+
/** No se le manda a quien ya es promotor (marcada en el de promotor). */
|
|
10
|
+
skipPromoters: boolean;
|
|
11
|
+
active: boolean;
|
|
12
|
+
tenantId?: string;
|
|
13
|
+
createdAt?: number;
|
|
14
|
+
updatedAt?: number;
|
|
15
|
+
createdBy?: string;
|
|
16
|
+
updatedBy?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare class MeetingFormUpsertRequest {
|
|
19
|
+
name: string;
|
|
20
|
+
url: string;
|
|
21
|
+
templateId: string;
|
|
22
|
+
skipPromoters?: boolean;
|
|
23
|
+
active?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare class MeetingFormListResponse {
|
|
26
|
+
items: MeetingFormResponse[];
|
|
27
|
+
index: string | null;
|
|
28
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MeetingFormListResponse = exports.MeetingFormUpsertRequest = exports.MeetingFormResponse = void 0;
|
|
4
|
+
/** Un formulario que se manda a los asistentes (el formId de la reunión). Los carga Silvia; no se borran. */
|
|
5
|
+
class MeetingFormResponse {
|
|
6
|
+
}
|
|
7
|
+
exports.MeetingFormResponse = MeetingFormResponse;
|
|
8
|
+
class MeetingFormUpsertRequest {
|
|
9
|
+
}
|
|
10
|
+
exports.MeetingFormUpsertRequest = MeetingFormUpsertRequest;
|
|
11
|
+
class MeetingFormListResponse {
|
|
12
|
+
}
|
|
13
|
+
exports.MeetingFormListResponse = MeetingFormListResponse;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { MeetingLeadSourceEnum } from '../enums/MeetingLeadSourceEnum';
|
|
2
|
+
/** Una persona del padrón, una sola vez. Promotor, directorio o cuenta son estados colgados de la fila. */
|
|
3
|
+
export declare class MeetingLeadResponse {
|
|
4
|
+
id: string;
|
|
5
|
+
name?: string;
|
|
6
|
+
email?: string;
|
|
7
|
+
/** Llave de identidad, normalizado (+1 o +52). */
|
|
8
|
+
phoneNumber?: string;
|
|
9
|
+
/** Derivados del reporte de identificación del lago; no se mantienen a mano. */
|
|
10
|
+
directoryId?: string;
|
|
11
|
+
peopleId?: string;
|
|
12
|
+
hasFiadoAccount?: boolean;
|
|
13
|
+
promoterId?: string;
|
|
14
|
+
source: MeetingLeadSourceEnum;
|
|
15
|
+
lastAttendedAt?: string;
|
|
16
|
+
/** «<ref de pregunta>:<ref de opción>» por opción elegida en una cerrada; lo lee el motor en el lago. */
|
|
17
|
+
answers?: string[];
|
|
18
|
+
/** Correo con el formulario de la reunión (formId). */
|
|
19
|
+
formSentAt?: string;
|
|
20
|
+
formReminderSentAt?: string;
|
|
21
|
+
/** Etiquetas de LeadTags_GT (las sirve el lambda de tags de onboarding-business). */
|
|
22
|
+
tags?: string[];
|
|
23
|
+
tenantId?: string;
|
|
24
|
+
createdAt?: number;
|
|
25
|
+
updatedAt?: number;
|
|
26
|
+
}
|
|
27
|
+
export declare class MeetingLeadListResponse {
|
|
28
|
+
items: MeetingLeadResponse[];
|
|
29
|
+
index: string | null;
|
|
30
|
+
}
|
|
31
|
+
export declare class MeetingLeadCreateRequest {
|
|
32
|
+
name?: string;
|
|
33
|
+
email?: string;
|
|
34
|
+
/** El lead nace cuando aparece el teléfono; a mano se exige. */
|
|
35
|
+
phoneNumber: string;
|
|
36
|
+
}
|
|
37
|
+
/** PUT /leads/{id}/tags: etiquetas a mano, contra la lista blanca de MeetingLeadTagEnum. */
|
|
38
|
+
export declare class MeetingLeadTagsRequest {
|
|
39
|
+
add?: string[];
|
|
40
|
+
remove?: string[];
|
|
41
|
+
/** En qué reunión se ganó, si aplica. */
|
|
42
|
+
meetingId?: string;
|
|
43
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MeetingLeadTagsRequest = exports.MeetingLeadCreateRequest = exports.MeetingLeadListResponse = exports.MeetingLeadResponse = void 0;
|
|
4
|
+
/** Una persona del padrón, una sola vez. Promotor, directorio o cuenta son estados colgados de la fila. */
|
|
5
|
+
class MeetingLeadResponse {
|
|
6
|
+
}
|
|
7
|
+
exports.MeetingLeadResponse = MeetingLeadResponse;
|
|
8
|
+
class MeetingLeadListResponse {
|
|
9
|
+
}
|
|
10
|
+
exports.MeetingLeadListResponse = MeetingLeadListResponse;
|
|
11
|
+
class MeetingLeadCreateRequest {
|
|
12
|
+
}
|
|
13
|
+
exports.MeetingLeadCreateRequest = MeetingLeadCreateRequest;
|
|
14
|
+
/** PUT /leads/{id}/tags: etiquetas a mano, contra la lista blanca de MeetingLeadTagEnum. */
|
|
15
|
+
class MeetingLeadTagsRequest {
|
|
16
|
+
}
|
|
17
|
+
exports.MeetingLeadTagsRequest = MeetingLeadTagsRequest;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MeetingPollRef = void 0;
|
|
4
|
+
const MeetingQuestionRef_1 = require("./MeetingQuestionRef");
|
|
5
|
+
/** Una encuesta precargada en la plataforma; externalPollId llega al crearla allá. */
|
|
6
|
+
class MeetingPollRef extends MeetingQuestionRef_1.MeetingQuestionRef {
|
|
7
|
+
}
|
|
8
|
+
exports.MeetingPollRef = MeetingPollRef;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MeetingQuestionRef = void 0;
|
|
4
|
+
/** Una pregunta del catálogo elegida para una reunión, con la versión congelada al elegirla. */
|
|
5
|
+
class MeetingQuestionRef {
|
|
6
|
+
}
|
|
7
|
+
exports.MeetingQuestionRef = MeetingQuestionRef;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { MeetingQuestionDataTypeEnum } from '../enums/MeetingQuestionDataTypeEnum';
|
|
2
|
+
import { MeetingQuestionSurfaceEnum } from '../enums/MeetingQuestionSurfaceEnum';
|
|
3
|
+
import { MeetingQuestionTypeEnum } from '../enums/MeetingQuestionTypeEnum';
|
|
4
|
+
/** Una opción de una pregunta cerrada. La referencia es estable; el texto puede cambiar. */
|
|
5
|
+
export declare class MeetingQuestionOption {
|
|
6
|
+
ref: string;
|
|
7
|
+
value: string;
|
|
8
|
+
/** Etiqueta que gana quien la elige, si la pregunta es clasificatoria. */
|
|
9
|
+
tag?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare class MeetingQuestionItem {
|
|
12
|
+
/** Referencia estable: las reglas se escriben contra ella, renombrar no rompe nada. */
|
|
13
|
+
ref: string;
|
|
14
|
+
text: string;
|
|
15
|
+
type: MeetingQuestionTypeEnum;
|
|
16
|
+
/** Sólo en abiertas (TEXT) y opcional: lo valida meetings-business al recibir. */
|
|
17
|
+
dataType?: MeetingQuestionDataTypeEnum;
|
|
18
|
+
surfaces: MeetingQuestionSurfaceEnum[];
|
|
19
|
+
/** Sólo aplica en el registro. */
|
|
20
|
+
required?: boolean;
|
|
21
|
+
/** Una abierta clasificatoria se rechaza al guardar: el motor compara valores, no lee texto. */
|
|
22
|
+
classifying?: boolean;
|
|
23
|
+
options?: MeetingQuestionOption[];
|
|
24
|
+
}
|
|
25
|
+
/** Una encuesta del catálogo, versionada: cada edición crea una versión nueva y conserva la vieja. */
|
|
26
|
+
export declare class MeetingQuestionCatalogResponse {
|
|
27
|
+
id: string;
|
|
28
|
+
version: number;
|
|
29
|
+
/** Hasta MEETING_QUESTION_TITLE_MAX_LENGTH caracteres. */
|
|
30
|
+
title: string;
|
|
31
|
+
questions: MeetingQuestionItem[];
|
|
32
|
+
/** Las inactivas no aparecen al crear reuniones. */
|
|
33
|
+
active: boolean;
|
|
34
|
+
tenantId?: string;
|
|
35
|
+
createdAt?: number;
|
|
36
|
+
updatedAt?: number;
|
|
37
|
+
createdBy?: string;
|
|
38
|
+
updatedBy?: string;
|
|
39
|
+
}
|
|
40
|
+
export declare class MeetingQuestionUpsertRequest {
|
|
41
|
+
title: string;
|
|
42
|
+
questions: MeetingQuestionItem[];
|
|
43
|
+
active?: boolean;
|
|
44
|
+
}
|
|
45
|
+
export declare class MeetingQuestionListResponse {
|
|
46
|
+
items: MeetingQuestionCatalogResponse[];
|
|
47
|
+
index: string | null;
|
|
48
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MeetingQuestionListResponse = exports.MeetingQuestionUpsertRequest = exports.MeetingQuestionCatalogResponse = exports.MeetingQuestionItem = exports.MeetingQuestionOption = void 0;
|
|
4
|
+
/** Una opción de una pregunta cerrada. La referencia es estable; el texto puede cambiar. */
|
|
5
|
+
class MeetingQuestionOption {
|
|
6
|
+
}
|
|
7
|
+
exports.MeetingQuestionOption = MeetingQuestionOption;
|
|
8
|
+
class MeetingQuestionItem {
|
|
9
|
+
}
|
|
10
|
+
exports.MeetingQuestionItem = MeetingQuestionItem;
|
|
11
|
+
/** Una encuesta del catálogo, versionada: cada edición crea una versión nueva y conserva la vieja. */
|
|
12
|
+
class MeetingQuestionCatalogResponse {
|
|
13
|
+
}
|
|
14
|
+
exports.MeetingQuestionCatalogResponse = MeetingQuestionCatalogResponse;
|
|
15
|
+
class MeetingQuestionUpsertRequest {
|
|
16
|
+
}
|
|
17
|
+
exports.MeetingQuestionUpsertRequest = MeetingQuestionUpsertRequest;
|
|
18
|
+
class MeetingQuestionListResponse {
|
|
19
|
+
}
|
|
20
|
+
exports.MeetingQuestionListResponse = MeetingQuestionListResponse;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { JsonValue } from '../../common';
|
|
2
|
+
import { MeetingEventTypeEnum } from '../enums/MeetingEventTypeEnum';
|
|
3
|
+
/** meeting.created: fechas vacías = reunión sin horario fijo (se guarda cuando empiece cada sesión). */
|
|
4
|
+
export interface MeetingCreatedPayload {
|
|
5
|
+
externalMeetingId: string;
|
|
6
|
+
hostEmail?: string;
|
|
7
|
+
/** Quién la creó en la plataforma, si no es el anfitrión. */
|
|
8
|
+
operator?: string;
|
|
9
|
+
title?: string;
|
|
10
|
+
/** ISO 8601 UTC, una por fecha fija. */
|
|
11
|
+
dates: string[];
|
|
12
|
+
timezone?: string;
|
|
13
|
+
durationMinutes?: number;
|
|
14
|
+
joinUrl?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface MeetingUpdatedPayload {
|
|
17
|
+
externalMeetingId: string;
|
|
18
|
+
/** Lo que cambió, tal como lo reportó la plataforma. */
|
|
19
|
+
changes: Record<string, JsonValue>;
|
|
20
|
+
}
|
|
21
|
+
export interface MeetingDeletedPayload {
|
|
22
|
+
externalMeetingId: string;
|
|
23
|
+
}
|
|
24
|
+
export interface SessionStartedPayload {
|
|
25
|
+
externalMeetingId: string;
|
|
26
|
+
sessionId: string;
|
|
27
|
+
startedAt: string;
|
|
28
|
+
}
|
|
29
|
+
/** El teléfono va tal como lo escribió la persona: lo normaliza meetings-business. */
|
|
30
|
+
export interface PersonRegisteredPayload {
|
|
31
|
+
externalMeetingId: string;
|
|
32
|
+
registrantId: string;
|
|
33
|
+
name?: string;
|
|
34
|
+
email?: string;
|
|
35
|
+
phoneNumber?: string;
|
|
36
|
+
answers?: Array<{
|
|
37
|
+
question: string;
|
|
38
|
+
answer: string;
|
|
39
|
+
}>;
|
|
40
|
+
}
|
|
41
|
+
export interface ParticipantJoinedPayload {
|
|
42
|
+
externalMeetingId: string;
|
|
43
|
+
sessionId: string;
|
|
44
|
+
participantId: string;
|
|
45
|
+
registrantId?: string;
|
|
46
|
+
name?: string;
|
|
47
|
+
email?: string;
|
|
48
|
+
joinedAt: string;
|
|
49
|
+
}
|
|
50
|
+
export interface ParticipantLeftPayload {
|
|
51
|
+
externalMeetingId: string;
|
|
52
|
+
sessionId: string;
|
|
53
|
+
participantId: string;
|
|
54
|
+
registrantId?: string;
|
|
55
|
+
name?: string;
|
|
56
|
+
email?: string;
|
|
57
|
+
leftAt: string;
|
|
58
|
+
}
|
|
59
|
+
export interface MeetingEndedPayload {
|
|
60
|
+
externalMeetingId: string;
|
|
61
|
+
sessionId: string;
|
|
62
|
+
startedAt?: string;
|
|
63
|
+
endedAt: string;
|
|
64
|
+
}
|
|
65
|
+
/** Lo publica usmarketgrowth-business al crear un promotor; el lead guarda su promoterId. */
|
|
66
|
+
export interface PromoterCreatedPayload {
|
|
67
|
+
promoterId: string;
|
|
68
|
+
phoneNumber?: string;
|
|
69
|
+
email?: string;
|
|
70
|
+
name?: string;
|
|
71
|
+
}
|
|
72
|
+
export type MeetingEventPayload = MeetingCreatedPayload | MeetingUpdatedPayload | MeetingDeletedPayload | SessionStartedPayload | PersonRegisteredPayload | ParticipantJoinedPayload | ParticipantLeftPayload | MeetingEndedPayload | PromoterCreatedPayload;
|
|
73
|
+
/**
|
|
74
|
+
* Sobre de todo mensaje de MeetingsBusinessQueue. El connector traduce los avisos de la plataforma a
|
|
75
|
+
* esto: nada nombra al proveedor (la reunión allá es externalMeetingId; una sesión, sessionId).
|
|
76
|
+
* El consumidor es idempotente: un eventId repetido o fuera de orden no duplica nada.
|
|
77
|
+
*/
|
|
78
|
+
export declare class MeetingQueueEvent<T = MeetingEventPayload> {
|
|
79
|
+
type: MeetingEventTypeEnum;
|
|
80
|
+
/** Identidad del aviso en el origen, para idempotencia. */
|
|
81
|
+
eventId: string;
|
|
82
|
+
/** Cuándo pasó, ISO 8601 UTC. */
|
|
83
|
+
occurredAt: string;
|
|
84
|
+
payload: T;
|
|
85
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MeetingQueueEvent = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Sobre de todo mensaje de MeetingsBusinessQueue. El connector traduce los avisos de la plataforma a
|
|
6
|
+
* esto: nada nombra al proveedor (la reunión allá es externalMeetingId; una sesión, sessionId).
|
|
7
|
+
* El consumidor es idempotente: un eventId repetido o fuera de orden no duplica nada.
|
|
8
|
+
*/
|
|
9
|
+
class MeetingQueueEvent {
|
|
10
|
+
}
|
|
11
|
+
exports.MeetingQueueEvent = MeetingQueueEvent;
|