@fiado/type-kit 3.193.0 → 3.195.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/helpers/constans/regex.d.ts +3 -0
- package/bin/helpers/constans/regex.js +12 -1
- package/bin/index.d.ts +2 -0
- package/bin/index.js +7 -1
- package/bin/retailCustomer/dtos/KycReview.d.ts +19 -0
- package/bin/retailCustomer/dtos/KycReview.js +56 -0
- package/bin/retailCustomer/dtos/RetailCustomer.d.ts +37 -0
- package/bin/retailCustomer/dtos/RetailCustomer.js +160 -0
- package/bin/retailCustomer/dtos/requests/AccountResultRequest.d.ts +13 -0
- package/bin/retailCustomer/dtos/requests/AccountResultRequest.js +48 -0
- package/bin/retailCustomer/dtos/requests/CreateCustomerRequest.d.ts +10 -0
- package/bin/retailCustomer/dtos/requests/CreateCustomerRequest.js +45 -0
- package/bin/retailCustomer/dtos/requests/KycReviewRequest.d.ts +10 -0
- package/bin/retailCustomer/dtos/requests/KycReviewRequest.js +33 -0
- package/bin/retailCustomer/dtos/requests/UpdateCustomerRequest.d.ts +10 -0
- package/bin/retailCustomer/dtos/requests/UpdateCustomerRequest.js +47 -0
- package/bin/retailCustomer/dtos/requests/UpsertCustomerFromKycRequest.d.ts +22 -0
- package/bin/retailCustomer/dtos/requests/UpsertCustomerFromKycRequest.js +97 -0
- package/bin/retailCustomer/dtos/responses/Customer360Response.d.ts +33 -0
- package/bin/retailCustomer/dtos/responses/Customer360Response.js +2 -0
- package/bin/retailCustomer/dtos/responses/CustomerResponse.d.ts +30 -0
- package/bin/retailCustomer/dtos/responses/CustomerResponse.js +2 -0
- package/bin/retailCustomer/enums/AccountStatusEnum.d.ts +9 -0
- package/bin/retailCustomer/enums/AccountStatusEnum.js +13 -0
- package/bin/retailCustomer/enums/KycModalityEnum.d.ts +9 -0
- package/bin/retailCustomer/enums/KycModalityEnum.js +13 -0
- package/bin/retailCustomer/enums/KycReviewResultEnum.d.ts +8 -0
- package/bin/retailCustomer/enums/KycReviewResultEnum.js +12 -0
- package/bin/retailCustomer/enums/RetailKycStatusEnum.d.ts +13 -0
- package/bin/retailCustomer/enums/RetailKycStatusEnum.js +17 -0
- package/bin/retailCustomer/events/CustomerCreatedV1.d.ts +7 -0
- package/bin/retailCustomer/events/CustomerCreatedV1.js +2 -0
- package/bin/retailCustomer/events/CustomerKycVerifiedV1.d.ts +27 -0
- package/bin/retailCustomer/events/CustomerKycVerifiedV1.js +2 -0
- package/bin/retailCustomer/events/CustomerUpdatedV1.d.ts +9 -0
- package/bin/retailCustomer/events/CustomerUpdatedV1.js +2 -0
- package/bin/retailCustomer/events/KycApprovedByComplianceV1.d.ts +12 -0
- package/bin/retailCustomer/events/KycApprovedByComplianceV1.js +2 -0
- package/bin/retailCustomer/events/KycRejectedByComplianceV1.d.ts +12 -0
- package/bin/retailCustomer/events/KycRejectedByComplianceV1.js +2 -0
- package/bin/retailCustomer/index.d.ts +18 -0
- package/bin/retailCustomer/index.js +39 -0
- package/bin/retailOrg/dtos/requests/ProvisionRetailUserRequest.d.ts +38 -0
- package/bin/retailOrg/dtos/requests/ProvisionRetailUserRequest.js +95 -0
- package/bin/retailOrg/index.d.ts +1 -0
- package/bin/retailOrg/index.js +1 -0
- package/bin/retailWizard/dtos/OtpVerification.d.ts +24 -0
- package/bin/retailWizard/dtos/OtpVerification.js +2 -0
- package/bin/retailWizard/dtos/PaginatedResult.d.ts +6 -0
- package/bin/retailWizard/dtos/PaginatedResult.js +2 -0
- package/bin/retailWizard/dtos/Prospect.d.ts +32 -0
- package/bin/retailWizard/dtos/Prospect.js +2 -0
- package/bin/retailWizard/dtos/ProspectNewCustomer.d.ts +5 -0
- package/bin/retailWizard/dtos/ProspectNewCustomer.js +28 -0
- package/bin/retailWizard/dtos/Sale.d.ts +42 -0
- package/bin/retailWizard/dtos/Sale.js +2 -0
- package/bin/retailWizard/dtos/SalePaymentDetail.d.ts +11 -0
- package/bin/retailWizard/dtos/SalePaymentDetail.js +51 -0
- package/bin/retailWizard/dtos/WizardBeneficiary.d.ts +13 -0
- package/bin/retailWizard/dtos/WizardBeneficiary.js +47 -0
- package/bin/retailWizard/dtos/WizardConsents.d.ts +8 -0
- package/bin/retailWizard/dtos/WizardConsents.js +47 -0
- package/bin/retailWizard/dtos/WizardPayment.d.ts +8 -0
- package/bin/retailWizard/dtos/WizardPayment.js +43 -0
- package/bin/retailWizard/dtos/WizardSession.d.ts +65 -0
- package/bin/retailWizard/dtos/WizardSession.js +2 -0
- package/bin/retailWizard/dtos/WizardWelcome.d.ts +9 -0
- package/bin/retailWizard/dtos/WizardWelcome.js +50 -0
- package/bin/retailWizard/dtos/requests/AddProductRequest.d.ts +10 -0
- package/bin/retailWizard/dtos/requests/AddProductRequest.js +38 -0
- package/bin/retailWizard/dtos/requests/AppInstallLinkRequest.d.ts +4 -0
- package/bin/retailWizard/dtos/requests/AppInstallLinkRequest.js +24 -0
- package/bin/retailWizard/dtos/requests/CancelSaleRequest.d.ts +8 -0
- package/bin/retailWizard/dtos/requests/CancelSaleRequest.js +28 -0
- package/bin/retailWizard/dtos/requests/CancelSessionRequest.d.ts +4 -0
- package/bin/retailWizard/dtos/requests/CancelSessionRequest.js +24 -0
- package/bin/retailWizard/dtos/requests/CompleteSaleRequest.d.ts +9 -0
- package/bin/retailWizard/dtos/requests/CompleteSaleRequest.js +29 -0
- package/bin/retailWizard/dtos/requests/ConfirmAddressRequest.d.ts +9 -0
- package/bin/retailWizard/dtos/requests/ConfirmAddressRequest.js +34 -0
- package/bin/retailWizard/dtos/requests/ConsentsRequest.d.ts +11 -0
- package/bin/retailWizard/dtos/requests/ConsentsRequest.js +35 -0
- package/bin/retailWizard/dtos/requests/CreateProspectRequest.d.ts +15 -0
- package/bin/retailWizard/dtos/requests/CreateProspectRequest.js +67 -0
- package/bin/retailWizard/dtos/requests/DeleteProductRequest.d.ts +4 -0
- package/bin/retailWizard/dtos/requests/DeleteProductRequest.js +23 -0
- package/bin/retailWizard/dtos/requests/ExternalReferralRequest.d.ts +8 -0
- package/bin/retailWizard/dtos/requests/ExternalReferralRequest.js +27 -0
- package/bin/retailWizard/dtos/requests/KycConfirmRequest.d.ts +10 -0
- package/bin/retailWizard/dtos/requests/KycConfirmRequest.js +35 -0
- package/bin/retailWizard/dtos/requests/KycManualRequest.d.ts +8 -0
- package/bin/retailWizard/dtos/requests/KycManualRequest.js +28 -0
- package/bin/retailWizard/dtos/requests/KycPrepareRequest.d.ts +10 -0
- package/bin/retailWizard/dtos/requests/KycPrepareRequest.js +27 -0
- package/bin/retailWizard/dtos/requests/MarkPcfCardDeliveredRequest.d.ts +4 -0
- package/bin/retailWizard/dtos/requests/MarkPcfCardDeliveredRequest.js +23 -0
- package/bin/retailWizard/dtos/requests/MarkProspectLostRequest.d.ts +4 -0
- package/bin/retailWizard/dtos/requests/MarkProspectLostRequest.js +24 -0
- package/bin/retailWizard/dtos/requests/OccupationRequest.d.ts +10 -0
- package/bin/retailWizard/dtos/requests/OccupationRequest.js +35 -0
- package/bin/retailWizard/dtos/requests/RegisterPaymentRequest.d.ts +12 -0
- package/bin/retailWizard/dtos/requests/RegisterPaymentRequest.js +42 -0
- package/bin/retailWizard/dtos/requests/ResendOtpRequest.d.ts +8 -0
- package/bin/retailWizard/dtos/requests/ResendOtpRequest.js +28 -0
- package/bin/retailWizard/dtos/requests/SaveBeneficiaryRequest.d.ts +5 -0
- package/bin/retailWizard/dtos/requests/SaveBeneficiaryRequest.js +25 -0
- package/bin/retailWizard/dtos/requests/SetPaymentMethodRequest.d.ts +5 -0
- package/bin/retailWizard/dtos/requests/SetPaymentMethodRequest.js +24 -0
- package/bin/retailWizard/dtos/requests/SignBeneficiaryAnnexRequest.d.ts +4 -0
- package/bin/retailWizard/dtos/requests/SignBeneficiaryAnnexRequest.js +23 -0
- package/bin/retailWizard/dtos/requests/SkipOtpRequest.d.ts +4 -0
- package/bin/retailWizard/dtos/requests/SkipOtpRequest.js +24 -0
- package/bin/retailWizard/dtos/requests/StartSessionRequest.d.ts +10 -0
- package/bin/retailWizard/dtos/requests/StartSessionRequest.js +35 -0
- package/bin/retailWizard/dtos/requests/UpdateProspectRequest.d.ts +8 -0
- package/bin/retailWizard/dtos/requests/UpdateProspectRequest.js +45 -0
- package/bin/retailWizard/dtos/requests/VerifyOtpRequest.d.ts +4 -0
- package/bin/retailWizard/dtos/requests/VerifyOtpRequest.js +24 -0
- package/bin/retailWizard/dtos/requests/WelcomeTopupRequest.d.ts +7 -0
- package/bin/retailWizard/dtos/requests/WelcomeTopupRequest.js +27 -0
- package/bin/retailWizard/enums/BeneficiaryRelationEnum.d.ts +18 -0
- package/bin/retailWizard/enums/BeneficiaryRelationEnum.js +22 -0
- package/bin/retailWizard/enums/CentralSyncStatusEnum.d.ts +14 -0
- package/bin/retailWizard/enums/CentralSyncStatusEnum.js +18 -0
- package/bin/retailWizard/enums/ExternalProviderEnum.d.ts +7 -0
- package/bin/retailWizard/enums/ExternalProviderEnum.js +11 -0
- package/bin/retailWizard/enums/FiadoPhoneStatusEnum.d.ts +15 -0
- package/bin/retailWizard/enums/FiadoPhoneStatusEnum.js +19 -0
- package/bin/retailWizard/enums/OccupationEnum.d.ts +13 -0
- package/bin/retailWizard/enums/OccupationEnum.js +17 -0
- package/bin/retailWizard/enums/OtpPurposeEnum.d.ts +10 -0
- package/bin/retailWizard/enums/OtpPurposeEnum.js +14 -0
- package/bin/retailWizard/enums/PaymentMethodEnum.d.ts +12 -0
- package/bin/retailWizard/enums/PaymentMethodEnum.js +16 -0
- package/bin/retailWizard/enums/PendingReasonEnum.d.ts +21 -0
- package/bin/retailWizard/enums/PendingReasonEnum.js +25 -0
- package/bin/retailWizard/enums/ProspectStatusEnum.d.ts +16 -0
- package/bin/retailWizard/enums/ProspectStatusEnum.js +20 -0
- package/bin/retailWizard/enums/SalePaymentMethodEnum.d.ts +6 -0
- package/bin/retailWizard/enums/SalePaymentMethodEnum.js +10 -0
- package/bin/retailWizard/enums/SaleStatusEnum.d.ts +10 -0
- package/bin/retailWizard/enums/SaleStatusEnum.js +14 -0
- package/bin/retailWizard/enums/SaleTypeEnum.d.ts +13 -0
- package/bin/retailWizard/enums/SaleTypeEnum.js +17 -0
- package/bin/retailWizard/enums/WizardStateEnum.d.ts +18 -0
- package/bin/retailWizard/enums/WizardStateEnum.js +22 -0
- package/bin/retailWizard/enums/WizardStepEnum.d.ts +13 -0
- package/bin/retailWizard/enums/WizardStepEnum.js +17 -0
- package/bin/retailWizard/events/SaleCancelledV1.d.ts +13 -0
- package/bin/retailWizard/events/SaleCancelledV1.js +2 -0
- package/bin/retailWizard/events/SaleCompletedV1.d.ts +17 -0
- package/bin/retailWizard/events/SaleCompletedV1.js +2 -0
- package/bin/retailWizard/events/SessionExpiredV1.d.ts +10 -0
- package/bin/retailWizard/events/SessionExpiredV1.js +2 -0
- package/bin/retailWizard/index.d.ts +54 -0
- package/bin/retailWizard/index.js +76 -0
- package/package.json +1 -1
- package/src/helpers/constans/regex.ts +16 -0
- package/src/index.ts +6 -0
- package/src/retailCustomer/dtos/KycReview.ts +41 -0
- package/src/retailCustomer/dtos/RetailCustomer.ts +132 -0
- package/src/retailCustomer/dtos/requests/AccountResultRequest.ts +34 -0
- package/src/retailCustomer/dtos/requests/CreateCustomerRequest.ts +28 -0
- package/src/retailCustomer/dtos/requests/KycReviewRequest.ts +18 -0
- package/src/retailCustomer/dtos/requests/UpdateCustomerRequest.ts +30 -0
- package/src/retailCustomer/dtos/requests/UpsertCustomerFromKycRequest.ts +79 -0
- package/src/retailCustomer/dtos/responses/Customer360Response.ts +37 -0
- package/src/retailCustomer/dtos/responses/CustomerResponse.ts +31 -0
- package/src/retailCustomer/enums/AccountStatusEnum.ts +9 -0
- package/src/retailCustomer/enums/KycModalityEnum.ts +9 -0
- package/src/retailCustomer/enums/KycReviewResultEnum.ts +8 -0
- package/src/retailCustomer/enums/RetailKycStatusEnum.ts +13 -0
- package/src/retailCustomer/events/CustomerCreatedV1.ts +7 -0
- package/src/retailCustomer/events/CustomerKycVerifiedV1.ts +28 -0
- package/src/retailCustomer/events/CustomerUpdatedV1.ts +9 -0
- package/src/retailCustomer/events/KycApprovedByComplianceV1.ts +12 -0
- package/src/retailCustomer/events/KycRejectedByComplianceV1.ts +12 -0
- package/src/retailCustomer/index.ts +27 -0
- package/src/retailOrg/dtos/requests/ProvisionRetailUserRequest.ts +82 -0
- package/src/retailOrg/index.ts +1 -0
- package/src/retailWizard/dtos/OtpVerification.ts +25 -0
- package/src/retailWizard/dtos/PaginatedResult.ts +6 -0
- package/src/retailWizard/dtos/Prospect.ts +33 -0
- package/src/retailWizard/dtos/ProspectNewCustomer.ts +13 -0
- package/src/retailWizard/dtos/Sale.ts +43 -0
- package/src/retailWizard/dtos/SalePaymentDetail.ts +33 -0
- package/src/retailWizard/dtos/WizardBeneficiary.ts +31 -0
- package/src/retailWizard/dtos/WizardConsents.ts +29 -0
- package/src/retailWizard/dtos/WizardPayment.ts +26 -0
- package/src/retailWizard/dtos/WizardSession.ts +68 -0
- package/src/retailWizard/dtos/WizardWelcome.ts +31 -0
- package/src/retailWizard/dtos/requests/AddProductRequest.ts +22 -0
- package/src/retailWizard/dtos/requests/AppInstallLinkRequest.ts +10 -0
- package/src/retailWizard/dtos/requests/CancelSaleRequest.ts +14 -0
- package/src/retailWizard/dtos/requests/CancelSessionRequest.ts +10 -0
- package/src/retailWizard/dtos/requests/CompleteSaleRequest.ts +15 -0
- package/src/retailWizard/dtos/requests/ConfirmAddressRequest.ts +22 -0
- package/src/retailWizard/dtos/requests/ConsentsRequest.ts +21 -0
- package/src/retailWizard/dtos/requests/CreateProspectRequest.ts +47 -0
- package/src/retailWizard/dtos/requests/DeleteProductRequest.ts +9 -0
- package/src/retailWizard/dtos/requests/ExternalReferralRequest.ts +13 -0
- package/src/retailWizard/dtos/requests/KycConfirmRequest.ts +23 -0
- package/src/retailWizard/dtos/requests/KycManualRequest.ts +17 -0
- package/src/retailWizard/dtos/requests/KycPrepareRequest.ts +16 -0
- package/src/retailWizard/dtos/requests/MarkPcfCardDeliveredRequest.ts +9 -0
- package/src/retailWizard/dtos/requests/MarkProspectLostRequest.ts +10 -0
- package/src/retailWizard/dtos/requests/OccupationRequest.ts +20 -0
- package/src/retailWizard/dtos/requests/RegisterPaymentRequest.ts +26 -0
- package/src/retailWizard/dtos/requests/ResendOtpRequest.ts +14 -0
- package/src/retailWizard/dtos/requests/SaveBeneficiaryRequest.ts +11 -0
- package/src/retailWizard/dtos/requests/SetPaymentMethodRequest.ts +10 -0
- package/src/retailWizard/dtos/requests/SignBeneficiaryAnnexRequest.ts +9 -0
- package/src/retailWizard/dtos/requests/SkipOtpRequest.ts +10 -0
- package/src/retailWizard/dtos/requests/StartSessionRequest.ts +21 -0
- package/src/retailWizard/dtos/requests/UpdateProspectRequest.ts +28 -0
- package/src/retailWizard/dtos/requests/VerifyOtpRequest.ts +10 -0
- package/src/retailWizard/dtos/requests/WelcomeTopupRequest.ts +13 -0
- package/src/retailWizard/enums/BeneficiaryRelationEnum.ts +18 -0
- package/src/retailWizard/enums/CentralSyncStatusEnum.ts +14 -0
- package/src/retailWizard/enums/ExternalProviderEnum.ts +7 -0
- package/src/retailWizard/enums/FiadoPhoneStatusEnum.ts +15 -0
- package/src/retailWizard/enums/OccupationEnum.ts +13 -0
- package/src/retailWizard/enums/OtpPurposeEnum.ts +10 -0
- package/src/retailWizard/enums/PaymentMethodEnum.ts +12 -0
- package/src/retailWizard/enums/PendingReasonEnum.ts +21 -0
- package/src/retailWizard/enums/ProspectStatusEnum.ts +16 -0
- package/src/retailWizard/enums/SalePaymentMethodEnum.ts +6 -0
- package/src/retailWizard/enums/SaleStatusEnum.ts +10 -0
- package/src/retailWizard/enums/SaleTypeEnum.ts +13 -0
- package/src/retailWizard/enums/WizardStateEnum.ts +18 -0
- package/src/retailWizard/enums/WizardStepEnum.ts +13 -0
- package/src/retailWizard/events/SaleCancelledV1.ts +13 -0
- package/src/retailWizard/events/SaleCompletedV1.ts +17 -0
- package/src/retailWizard/events/SessionExpiredV1.ts +10 -0
- package/src/retailWizard/index.ts +65 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { WizardStateEnum } from '../enums/WizardStateEnum';
|
|
2
|
+
import type { WizardStepEnum } from '../enums/WizardStepEnum';
|
|
3
|
+
import type { FiadoPhoneStatusEnum } from '../enums/FiadoPhoneStatusEnum';
|
|
4
|
+
import type { PaymentMethodEnum } from '../enums/PaymentMethodEnum';
|
|
5
|
+
import type { ExternalProviderEnum } from '../enums/ExternalProviderEnum';
|
|
6
|
+
import type { OccupationEnum } from '../enums/OccupationEnum';
|
|
7
|
+
import type { WizardConsents } from './WizardConsents';
|
|
8
|
+
import type { WizardPayment } from './WizardPayment';
|
|
9
|
+
import type { WizardWelcome } from './WizardWelcome';
|
|
10
|
+
|
|
11
|
+
/** Modalidad de captura del KYC (M1 §213-329). */
|
|
12
|
+
export type KycModality = 'CUSTOMER_LINK' | 'STORE_DEVICE' | 'MANUAL';
|
|
13
|
+
|
|
14
|
+
/** Estado de la apertura de cuenta async (D35) — espejo de `RetailCustomer.accountStatus`. */
|
|
15
|
+
export type AccountStatus = 'OPENING' | 'OPEN' | 'FAILED';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Estado de la SAGA del wizard (modelo-datos §1). ES la tabla de estado: cada paso persiste su
|
|
19
|
+
* avance; reanudable. pk `SESSION#<sessionId>` · sk `META` · GSIs `phone-state-index`,
|
|
20
|
+
* `customerId-pk-index`. Los ítems `OTP#` viven en la MISMA partición (ver OtpVerification).
|
|
21
|
+
* SureKeep Fase 2 — pista Retail.
|
|
22
|
+
*/
|
|
23
|
+
export interface WizardSession {
|
|
24
|
+
sessionId: string;
|
|
25
|
+
retailerId: string;
|
|
26
|
+
storeId: string;
|
|
27
|
+
sellerRetailUserId: string;
|
|
28
|
+
/** Llave de la sesión; 1 ACTIVE por teléfono vía `UNIQ#ACTIVE-PHONE#<phone>`. */
|
|
29
|
+
phone: string;
|
|
30
|
+
retailCustomerId: string | null;
|
|
31
|
+
currentStep: WizardStepEnum;
|
|
32
|
+
state: WizardStateEnum;
|
|
33
|
+
otpVerified: boolean;
|
|
34
|
+
otpSkipped: boolean;
|
|
35
|
+
consents: WizardConsents | null;
|
|
36
|
+
/** Espejo del estado KYC (fuente = customer). */
|
|
37
|
+
kycStatus: string | null;
|
|
38
|
+
kycModality: KycModality | null;
|
|
39
|
+
metamapIdentityId: string | null;
|
|
40
|
+
occupation: OccupationEnum | null;
|
|
41
|
+
occupationOther: string | null;
|
|
42
|
+
/** Del gate `signInPhoneNumber` del 01a (D27). */
|
|
43
|
+
fiadoPhoneStatus: FiadoPhoneStatusEnum | null;
|
|
44
|
+
fiadoDirectoryId: string | null;
|
|
45
|
+
fiadoPeopleId: string | null;
|
|
46
|
+
pcfProvisioned: boolean;
|
|
47
|
+
accountOpened: boolean;
|
|
48
|
+
accountStatus: AccountStatus | null;
|
|
49
|
+
reservedSku: string | null;
|
|
50
|
+
reservedImei: string | null;
|
|
51
|
+
reservationExpiresAt: string | null;
|
|
52
|
+
paymentMethod: PaymentMethodEnum | null;
|
|
53
|
+
externalProvider: ExternalProviderEnum | null;
|
|
54
|
+
/** Folio de cobro server-side (D11), idempotente, sobrevive al volver atrás. */
|
|
55
|
+
folio: string | null;
|
|
56
|
+
payment: WizardPayment | null;
|
|
57
|
+
welcome: WizardWelcome | null;
|
|
58
|
+
saleId: string | null;
|
|
59
|
+
/** Prospecto vinculado (si la sesión se reanudó desde un prospecto): se cierra al cerrar la venta (D-prospecto). */
|
|
60
|
+
prospectId: string | null;
|
|
61
|
+
cancelReason: string | null;
|
|
62
|
+
/** TTL DDB ~24h de inactividad (D14). */
|
|
63
|
+
ttlEpoch: number;
|
|
64
|
+
createdBy: string;
|
|
65
|
+
updatedBy: string;
|
|
66
|
+
createdAt: number;
|
|
67
|
+
updatedAt: number;
|
|
68
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsBoolean, IsIn, IsOptional, IsString } from 'class-validator';
|
|
3
|
+
|
|
4
|
+
/** Estado del paso 10 (bienvenida N2) dentro de la sesión (`WizardSession.welcome`). SureKeep Fase 2 — pista Retail. */
|
|
5
|
+
export class WizardWelcome {
|
|
6
|
+
@Expose()
|
|
7
|
+
@IsBoolean()
|
|
8
|
+
addressConfirmed!: boolean;
|
|
9
|
+
|
|
10
|
+
@Expose()
|
|
11
|
+
@IsBoolean()
|
|
12
|
+
benefCaptured!: boolean;
|
|
13
|
+
|
|
14
|
+
@Expose()
|
|
15
|
+
@IsBoolean()
|
|
16
|
+
annexSigned!: boolean;
|
|
17
|
+
|
|
18
|
+
@Expose()
|
|
19
|
+
@IsOptional()
|
|
20
|
+
@IsString()
|
|
21
|
+
annexVersion?: string;
|
|
22
|
+
|
|
23
|
+
@Expose()
|
|
24
|
+
@IsBoolean()
|
|
25
|
+
topupApplied!: boolean;
|
|
26
|
+
|
|
27
|
+
@Expose()
|
|
28
|
+
@IsOptional()
|
|
29
|
+
@IsIn([1, 2])
|
|
30
|
+
accountLevel?: 1 | 2;
|
|
31
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsInt, IsString, Min } from 'class-validator';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* POST /wizard/sessions/:id/product — reserva un equipo del catálogo (paso 03). Reserva 30 min en
|
|
6
|
+
* RetailInventory F1 (condición atómica H2). El `cashPriceCents` de la reserva ancla el cobro
|
|
7
|
+
* (regla dura: `amountCents == cashPrice`). SureKeep Fase 2 — pista Retail.
|
|
8
|
+
*/
|
|
9
|
+
export class AddProductRequest {
|
|
10
|
+
@Expose()
|
|
11
|
+
@IsString()
|
|
12
|
+
sku!: string;
|
|
13
|
+
|
|
14
|
+
@Expose()
|
|
15
|
+
@IsString()
|
|
16
|
+
imei!: string;
|
|
17
|
+
|
|
18
|
+
@Expose()
|
|
19
|
+
@IsInt()
|
|
20
|
+
@Min(0)
|
|
21
|
+
cashPriceCents!: number;
|
|
22
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsOptional, IsString } from 'class-validator';
|
|
3
|
+
|
|
4
|
+
/** POST /wizard/sessions/:id/app/install-link — genera el shortlink de instalación de la app (QR, D9). SureKeep Fase 2 — pista Retail. */
|
|
5
|
+
export class AppInstallLinkRequest {
|
|
6
|
+
@Expose()
|
|
7
|
+
@IsOptional()
|
|
8
|
+
@IsString()
|
|
9
|
+
channel?: string;
|
|
10
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsString, MaxLength } from 'class-validator';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* POST /sales/:saleId/cancel — cancela una venta (flujo C, solo BO dentro de ventana param). `reason`
|
|
6
|
+
* OBLIGATORIO (AuditTrail). Retorna el IMEI al silo (`SOLD → AVAILABLE`) y emite `SaleCancelledV1`.
|
|
7
|
+
* SureKeep Fase 2 — pista Retail.
|
|
8
|
+
*/
|
|
9
|
+
export class CancelSaleRequest {
|
|
10
|
+
@Expose()
|
|
11
|
+
@IsString()
|
|
12
|
+
@MaxLength(200)
|
|
13
|
+
reason!: string;
|
|
14
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsString, MaxLength } from 'class-validator';
|
|
3
|
+
|
|
4
|
+
/** POST /wizard/sessions/:id/cancel — cancela la sesión (libera reserva + UNIQ#ACTIVE-PHONE). SureKeep Fase 2 — pista Retail. */
|
|
5
|
+
export class CancelSessionRequest {
|
|
6
|
+
@Expose()
|
|
7
|
+
@IsString()
|
|
8
|
+
@MaxLength(200)
|
|
9
|
+
reason!: string;
|
|
10
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsOptional, IsString } from 'class-validator';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* POST /wizard/sessions/:id/complete-sale — cierra la venta (saga de 2 pasos, flujo 09). Exige
|
|
6
|
+
* payment registrado (regla dura). Consume el IMEI del silo (SOLD), asigna la tarjeta PCF, persiste
|
|
7
|
+
* la Sale con `UNIQ#FOLIO` y emite el outbox `SaleCompletedV1` en la MISMA tx. Cierra el prospecto
|
|
8
|
+
* vinculado si lo hay. `cardNumber` = tarjeta física entregada en tienda (S7). SureKeep Fase 2 — pista Retail.
|
|
9
|
+
*/
|
|
10
|
+
export class CompleteSaleRequest {
|
|
11
|
+
@Expose()
|
|
12
|
+
@IsOptional()
|
|
13
|
+
@IsString()
|
|
14
|
+
cardNumber?: string;
|
|
15
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Expose, Type } from 'class-transformer';
|
|
2
|
+
import { IsBoolean, IsOptional, ValidateNested } from 'class-validator';
|
|
3
|
+
import { AddressBase } from '../../../address/dtos/AddressBase';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* POST /wizard/sessions/:id/address/confirm — el cliente ratifica/edita el domicilio en el paso 10
|
|
7
|
+
* (el `address` ya existía desde el 02e). Setea `addressConfirmed`. SureKeep Fase 2 — pista Retail.
|
|
8
|
+
*/
|
|
9
|
+
export class ConfirmAddressRequest {
|
|
10
|
+
// TD-ADDRESSBASE-OCR: reusa el `AddressBase` canónico por decisión de Andrés (apego al spec + modelo-datos).
|
|
11
|
+
// La dirección OCR/editada puede NO llenar los ~12 campos requeridos de AddressBase → posible rechazo en
|
|
12
|
+
// runtime con @ValidateNested. Ajustar después (ver RetailCustomer.address).
|
|
13
|
+
@Expose()
|
|
14
|
+
@IsOptional()
|
|
15
|
+
@Type(() => AddressBase)
|
|
16
|
+
@ValidateNested()
|
|
17
|
+
address?: AddressBase;
|
|
18
|
+
|
|
19
|
+
@Expose()
|
|
20
|
+
@IsBoolean()
|
|
21
|
+
confirmed!: boolean;
|
|
22
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Expose, Type } from 'class-transformer';
|
|
2
|
+
import { IsOptional, IsString, ValidateNested } from 'class-validator';
|
|
3
|
+
import { WizardConsents } from '../WizardConsents';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* POST /wizard/sessions/:id/consents — registra los consentimientos VL + contrato PCF. Dispara la
|
|
7
|
+
* tríada Fiado idempotente (D26): lookup directory por phone → reusa o crea onboarding+people+directory.
|
|
8
|
+
* Puede incluir el nombre del cliente (para el signUpProspect si no existe todavía). SureKeep Fase 2 — pista Retail.
|
|
9
|
+
*/
|
|
10
|
+
export class ConsentsRequest {
|
|
11
|
+
@Expose()
|
|
12
|
+
@Type(() => WizardConsents)
|
|
13
|
+
@ValidateNested()
|
|
14
|
+
consents!: WizardConsents;
|
|
15
|
+
|
|
16
|
+
/** Nombre del cliente (para la creación de identidad Fiado si aún no existe). */
|
|
17
|
+
@Expose()
|
|
18
|
+
@IsOptional()
|
|
19
|
+
@IsString()
|
|
20
|
+
customerName?: string;
|
|
21
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Expose, Type } from 'class-transformer';
|
|
2
|
+
import { IsEnum, IsOptional, IsString, MaxLength, ValidateNested } from 'class-validator';
|
|
3
|
+
import { PendingReasonEnum } from '../../enums/PendingReasonEnum';
|
|
4
|
+
import { ProspectNewCustomer } from '../ProspectNewCustomer';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* POST /prospects — crea un prospecto (seguimiento comercial). Identificado (`retailCustomerId`) vs
|
|
8
|
+
* captura manual (`newCustomer`). `freeReason` obligatorio si `pendingReason=OTHER`. SureKeep Fase 2 — pista Retail.
|
|
9
|
+
*/
|
|
10
|
+
export class CreateProspectRequest {
|
|
11
|
+
@Expose()
|
|
12
|
+
@IsOptional()
|
|
13
|
+
@IsString()
|
|
14
|
+
retailCustomerId?: string;
|
|
15
|
+
|
|
16
|
+
@Expose()
|
|
17
|
+
@IsOptional()
|
|
18
|
+
@Type(() => ProspectNewCustomer)
|
|
19
|
+
@ValidateNested()
|
|
20
|
+
newCustomer?: ProspectNewCustomer;
|
|
21
|
+
|
|
22
|
+
@Expose()
|
|
23
|
+
@IsOptional()
|
|
24
|
+
@IsString()
|
|
25
|
+
productSku?: string;
|
|
26
|
+
|
|
27
|
+
@Expose()
|
|
28
|
+
@IsEnum(PendingReasonEnum)
|
|
29
|
+
pendingReason!: PendingReasonEnum;
|
|
30
|
+
|
|
31
|
+
@Expose()
|
|
32
|
+
@IsOptional()
|
|
33
|
+
@IsString()
|
|
34
|
+
@MaxLength(200)
|
|
35
|
+
freeReason?: string;
|
|
36
|
+
|
|
37
|
+
@Expose()
|
|
38
|
+
@IsOptional()
|
|
39
|
+
@IsString()
|
|
40
|
+
nextContactAt?: string;
|
|
41
|
+
|
|
42
|
+
@Expose()
|
|
43
|
+
@IsOptional()
|
|
44
|
+
@IsString()
|
|
45
|
+
@MaxLength(200)
|
|
46
|
+
notes?: string;
|
|
47
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsString } from 'class-validator';
|
|
3
|
+
|
|
4
|
+
/** DELETE /wizard/sessions/:id/product — libera la reserva del equipo (vuelve al catálogo). SureKeep Fase 2 — pista Retail. */
|
|
5
|
+
export class DeleteProductRequest {
|
|
6
|
+
@Expose()
|
|
7
|
+
@IsString()
|
|
8
|
+
imei!: string;
|
|
9
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsEnum } from 'class-validator';
|
|
3
|
+
import { ExternalProviderEnum } from '../../enums/ExternalProviderEnum';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* POST /wizard/sessions/:id/external-referral — deriva a proveedor externo (pausa la sesión en
|
|
7
|
+
* PAUSED_EXTERNAL_REFERRAL). No consume IMEI del silo (D15). SureKeep Fase 2 — pista Retail.
|
|
8
|
+
*/
|
|
9
|
+
export class ExternalReferralRequest {
|
|
10
|
+
@Expose()
|
|
11
|
+
@IsEnum(ExternalProviderEnum)
|
|
12
|
+
provider!: ExternalProviderEnum;
|
|
13
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Expose, Type } from 'class-transformer';
|
|
2
|
+
import { IsOptional, IsString, ValidateNested } from 'class-validator';
|
|
3
|
+
import { AddressBase } from '../../../address/dtos/AddressBase';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* POST /wizard/sessions/:id/kyc/confirm — confirma el resultado KYC (server-side, idempotente por
|
|
7
|
+
* directoryId). Lo llama el consumer `kyc-inbound` (primario, D28) y opcionalmente el front (puente D25).
|
|
8
|
+
* Dispara el upsert customer (accountStatus=OPENING) + la apertura async (02f). SureKeep Fase 2 — pista Retail.
|
|
9
|
+
*/
|
|
10
|
+
export class KycConfirmRequest {
|
|
11
|
+
@Expose()
|
|
12
|
+
@IsString()
|
|
13
|
+
metamapIdentityId!: string;
|
|
14
|
+
|
|
15
|
+
// TD-ADDRESSBASE-OCR: reusa el `AddressBase` canónico por decisión de Andrés (apego al spec). Si el
|
|
16
|
+
// documento trae la dirección, el OCR puede NO llenar los ~12 campos requeridos de AddressBase →
|
|
17
|
+
// posible rechazo en runtime con @ValidateNested. Ajustar después (ver RetailCustomer.address).
|
|
18
|
+
@Expose()
|
|
19
|
+
@IsOptional()
|
|
20
|
+
@Type(() => AddressBase)
|
|
21
|
+
@ValidateNested()
|
|
22
|
+
address?: AddressBase;
|
|
23
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Expose, Type } from 'class-transformer';
|
|
2
|
+
import { ValidateNested } from 'class-validator';
|
|
3
|
+
import { AddressBase } from '../../../address/dtos/AddressBase';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* POST /wizard/sessions/:id/kyc/manual — captura manual del domicilio cuando el documento no lo trae
|
|
7
|
+
* (MANUAL degrada wallet pero NO bloquea la venta de contado — regla dura). SureKeep Fase 2 — pista Retail.
|
|
8
|
+
*/
|
|
9
|
+
export class KycManualRequest {
|
|
10
|
+
// TD-ADDRESSBASE-OCR: reusa el `AddressBase` canónico por decisión de Andrés (apego al spec). La
|
|
11
|
+
// captura manual puede NO llenar los ~12 campos requeridos de AddressBase → posible rechazo en runtime
|
|
12
|
+
// con @ValidateNested. Ajustar después (ver RetailCustomer.address).
|
|
13
|
+
@Expose()
|
|
14
|
+
@Type(() => AddressBase)
|
|
15
|
+
@ValidateNested()
|
|
16
|
+
address!: AddressBase;
|
|
17
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsIn } from 'class-validator';
|
|
3
|
+
|
|
4
|
+
/** Modalidad de captura KYC solicitada. */
|
|
5
|
+
export type KycModalityInput = 'CUSTOMER_LINK' | 'STORE_DEVICE';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* POST /wizard/sessions/:id/kyc/prepare — prepara el flujo KYC (getFlows) y devuelve el identityId
|
|
9
|
+
* de Metamap para que el SDK front lo arranque. `modality` = link al cliente o captura en tablet.
|
|
10
|
+
* SureKeep Fase 2 — pista Retail.
|
|
11
|
+
*/
|
|
12
|
+
export class KycPrepareRequest {
|
|
13
|
+
@Expose()
|
|
14
|
+
@IsIn(['CUSTOMER_LINK', 'STORE_DEVICE'])
|
|
15
|
+
modality!: KycModalityInput;
|
|
16
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsString } from 'class-validator';
|
|
3
|
+
|
|
4
|
+
/** POST /wizard/sessions/:id/pcf-card/mark-delivered — marca la tarjeta física PCF como entregada (S7). SureKeep Fase 2 — pista Retail. */
|
|
5
|
+
export class MarkPcfCardDeliveredRequest {
|
|
6
|
+
@Expose()
|
|
7
|
+
@IsString()
|
|
8
|
+
cardNumber!: string;
|
|
9
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsString, MaxLength } from 'class-validator';
|
|
3
|
+
|
|
4
|
+
/** POST /prospects/:id/mark-lost — marca el prospecto como LOST con motivo. SureKeep Fase 2 — pista Retail. */
|
|
5
|
+
export class MarkProspectLostRequest {
|
|
6
|
+
@Expose()
|
|
7
|
+
@IsString()
|
|
8
|
+
@MaxLength(200)
|
|
9
|
+
reason!: string;
|
|
10
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsEnum, IsOptional, IsString, MaxLength } from 'class-validator';
|
|
3
|
+
import { OccupationEnum } from '../../enums/OccupationEnum';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* POST /wizard/sessions/:id/occupation — registra la ocupación (dato del expediente PCF, vive en
|
|
7
|
+
* People de Fiado — D17). Sin ocupación NO se abre la cuenta (Manual v1.4 §8.13). `OTHER` abre texto ≤60.
|
|
8
|
+
* SureKeep Fase 2 — pista Retail.
|
|
9
|
+
*/
|
|
10
|
+
export class OccupationRequest {
|
|
11
|
+
@Expose()
|
|
12
|
+
@IsEnum(OccupationEnum)
|
|
13
|
+
occupation!: OccupationEnum;
|
|
14
|
+
|
|
15
|
+
@Expose()
|
|
16
|
+
@IsOptional()
|
|
17
|
+
@IsString()
|
|
18
|
+
@MaxLength(60)
|
|
19
|
+
occupationOther?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Expose, Type } from 'class-transformer';
|
|
2
|
+
import { IsEnum, IsInt, IsOptional, ValidateNested, Min } from 'class-validator';
|
|
3
|
+
import { SalePaymentMethodEnum } from '../../enums/SalePaymentMethodEnum';
|
|
4
|
+
import { SalePaymentDetail } from '../SalePaymentDetail';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* POST /wizard/sessions/:id/payment — registra el cobro de contado (idempotente por sesión). Regla
|
|
8
|
+
* dura: `amountCents == cashPrice` de la reserva. `POST /payment/folio` genera el folio server-side
|
|
9
|
+
* (D11) ANTES del registro; el folio no viaja en el body (lo posee el server). SureKeep Fase 2 — pista Retail.
|
|
10
|
+
*/
|
|
11
|
+
export class RegisterPaymentRequest {
|
|
12
|
+
@Expose()
|
|
13
|
+
@IsEnum(SalePaymentMethodEnum)
|
|
14
|
+
method!: SalePaymentMethodEnum;
|
|
15
|
+
|
|
16
|
+
@Expose()
|
|
17
|
+
@IsInt()
|
|
18
|
+
@Min(0)
|
|
19
|
+
amountCents!: number;
|
|
20
|
+
|
|
21
|
+
@Expose()
|
|
22
|
+
@IsOptional()
|
|
23
|
+
@Type(() => SalePaymentDetail)
|
|
24
|
+
@ValidateNested()
|
|
25
|
+
detail?: SalePaymentDetail;
|
|
26
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsOptional, IsString } from 'class-validator';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* POST /wizard/sessions/:id/otp/resend — reenvía OTP (resend 60s de cooldown). Body vacío: el destino
|
|
6
|
+
* es el teléfono de la sesión. Clase declarada para el contrato/validación (sin campos requeridos).
|
|
7
|
+
* SureKeep Fase 2 — pista Retail.
|
|
8
|
+
*/
|
|
9
|
+
export class ResendOtpRequest {
|
|
10
|
+
@Expose()
|
|
11
|
+
@IsOptional()
|
|
12
|
+
@IsString()
|
|
13
|
+
channel?: string;
|
|
14
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Expose, Type } from 'class-transformer';
|
|
2
|
+
import { ValidateNested } from 'class-validator';
|
|
3
|
+
import { WizardBeneficiary } from '../WizardBeneficiary';
|
|
4
|
+
|
|
5
|
+
/** POST /wizard/sessions/:id/beneficiary — captura el beneficiario (opcional en N1 simplificado). SureKeep Fase 2 — pista Retail. */
|
|
6
|
+
export class SaveBeneficiaryRequest {
|
|
7
|
+
@Expose()
|
|
8
|
+
@Type(() => WizardBeneficiary)
|
|
9
|
+
@ValidateNested()
|
|
10
|
+
beneficiary!: WizardBeneficiary;
|
|
11
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsEnum } from 'class-validator';
|
|
3
|
+
import { PaymentMethodEnum } from '../../enums/PaymentMethodEnum';
|
|
4
|
+
|
|
5
|
+
/** POST /wizard/sessions/:id/payment-method — router del paso 04 (contado / crédito / externo). SureKeep Fase 2 — pista Retail. */
|
|
6
|
+
export class SetPaymentMethodRequest {
|
|
7
|
+
@Expose()
|
|
8
|
+
@IsEnum(PaymentMethodEnum)
|
|
9
|
+
paymentMethod!: PaymentMethodEnum;
|
|
10
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsString } from 'class-validator';
|
|
3
|
+
|
|
4
|
+
/** POST /wizard/sessions/:id/beneficiary-annex/sign — firma el anexo de beneficiario (versión + OTP F3). SureKeep Fase 2 — pista Retail. */
|
|
5
|
+
export class SignBeneficiaryAnnexRequest {
|
|
6
|
+
@Expose()
|
|
7
|
+
@IsString()
|
|
8
|
+
annexVersion!: string;
|
|
9
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsString, MaxLength } from 'class-validator';
|
|
3
|
+
|
|
4
|
+
/** POST /wizard/sessions/:id/otp/skip — salta el OTP (M1 §184 `otp_no_verificado`; genera AuditTrail). SureKeep Fase 2 — pista Retail. */
|
|
5
|
+
export class SkipOtpRequest {
|
|
6
|
+
@Expose()
|
|
7
|
+
@IsString()
|
|
8
|
+
@MaxLength(200)
|
|
9
|
+
reason!: string;
|
|
10
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsOptional, IsString, Matches } from 'class-validator';
|
|
3
|
+
import { regexPhoneMx } from '../../../helpers/constans/regex';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* POST /wizard/sessions — arranca (o reanuda) la saga del wizard para un teléfono.
|
|
7
|
+
* `retailerId`/`storeId`/`sellerRetailUserId` NO viajan en el body: se derivan del JWT del vendedor.
|
|
8
|
+
* Regla dura: 1 sesión ACTIVE por teléfono (409 SESSION_ACTIVE vía UNIQ#ACTIVE-PHONE). SureKeep Fase 2 — pista Retail.
|
|
9
|
+
*/
|
|
10
|
+
export class StartSessionRequest {
|
|
11
|
+
@Expose()
|
|
12
|
+
@IsString()
|
|
13
|
+
@Matches(regexPhoneMx, { message: 'phone debe ser un teléfono MX de 10 dígitos' })
|
|
14
|
+
phone!: string;
|
|
15
|
+
|
|
16
|
+
/** Prospecto a reanudar (opcional): si viene, la sesión se vincula al prospecto. */
|
|
17
|
+
@Expose()
|
|
18
|
+
@IsOptional()
|
|
19
|
+
@IsString()
|
|
20
|
+
prospectId?: string;
|
|
21
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsEnum, IsOptional, IsString, MaxLength } from 'class-validator';
|
|
3
|
+
import { PendingReasonEnum } from '../../enums/PendingReasonEnum';
|
|
4
|
+
|
|
5
|
+
/** PUT /prospects/:id — edita agenda / notas / motivo de un prospecto. SureKeep Fase 2 — pista Retail. */
|
|
6
|
+
export class UpdateProspectRequest {
|
|
7
|
+
@Expose()
|
|
8
|
+
@IsOptional()
|
|
9
|
+
@IsEnum(PendingReasonEnum)
|
|
10
|
+
pendingReason?: PendingReasonEnum;
|
|
11
|
+
|
|
12
|
+
@Expose()
|
|
13
|
+
@IsOptional()
|
|
14
|
+
@IsString()
|
|
15
|
+
@MaxLength(200)
|
|
16
|
+
freeReason?: string;
|
|
17
|
+
|
|
18
|
+
@Expose()
|
|
19
|
+
@IsOptional()
|
|
20
|
+
@IsString()
|
|
21
|
+
nextContactAt?: string;
|
|
22
|
+
|
|
23
|
+
@Expose()
|
|
24
|
+
@IsOptional()
|
|
25
|
+
@IsString()
|
|
26
|
+
@MaxLength(200)
|
|
27
|
+
notes?: string;
|
|
28
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsString, Length } from 'class-validator';
|
|
3
|
+
|
|
4
|
+
/** POST /wizard/sessions/:id/otp/verify — verifica el código OTP (código validado en messages-business). SureKeep Fase 2 — pista Retail. */
|
|
5
|
+
export class VerifyOtpRequest {
|
|
6
|
+
@Expose()
|
|
7
|
+
@IsString()
|
|
8
|
+
@Length(4, 8)
|
|
9
|
+
code!: string;
|
|
10
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsBoolean, IsOptional } from 'class-validator';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* POST /wizard/sessions/:id/welcome-topup — acreditación de bienvenida (D33): una sola vez por cliente
|
|
6
|
+
* (idempotencia permanente por `welcomeAccredited`). Ni una segunda venta re-acredita. SureKeep Fase 2 — pista Retail.
|
|
7
|
+
*/
|
|
8
|
+
export class WelcomeTopupRequest {
|
|
9
|
+
@Expose()
|
|
10
|
+
@IsOptional()
|
|
11
|
+
@IsBoolean()
|
|
12
|
+
skip?: boolean;
|
|
13
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parentesco del beneficiario (catálogo de 9 valores Fiado; dropdown del paso 10).
|
|
3
|
+
* SureKeep Fase 2 — pista Retail.
|
|
4
|
+
*
|
|
5
|
+
* SPOUSE - Cónyuge · CHILD - Hijo(a) · PARENT - Padre/Madre · SIBLING - Hermano(a) ·
|
|
6
|
+
* GRANDPARENT - Abuelo(a) · GRANDCHILD - Nieto(a) · PARTNER - Concubino(a) · FRIEND - Amigo(a) · OTHER - Otro.
|
|
7
|
+
*/
|
|
8
|
+
export enum BeneficiaryRelationEnum {
|
|
9
|
+
SPOUSE = 'SPOUSE',
|
|
10
|
+
CHILD = 'CHILD',
|
|
11
|
+
PARENT = 'PARENT',
|
|
12
|
+
SIBLING = 'SIBLING',
|
|
13
|
+
GRANDPARENT = 'GRANDPARENT',
|
|
14
|
+
GRANDCHILD = 'GRANDCHILD',
|
|
15
|
+
PARTNER = 'PARTNER',
|
|
16
|
+
FRIEND = 'FRIEND',
|
|
17
|
+
OTHER = 'OTHER',
|
|
18
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Estado de sincronización de la venta con Central (local-first; badge en BO). SureKeep Fase 2 — pista Retail.
|
|
3
|
+
*
|
|
4
|
+
* PENDING - Aún no sincronizada.
|
|
5
|
+
* SENT - Enviada a Central.
|
|
6
|
+
* FAILED - Falló la sincronización.
|
|
7
|
+
* N_A - No aplica (p. ej. derivación externa).
|
|
8
|
+
*/
|
|
9
|
+
export enum CentralSyncStatusEnum {
|
|
10
|
+
PENDING = 'PENDING',
|
|
11
|
+
SENT = 'SENT',
|
|
12
|
+
FAILED = 'FAILED',
|
|
13
|
+
N_A = 'N_A',
|
|
14
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Estado del teléfono en el gate `signInPhoneNumber` del paso 01a (D27) — decide si el 01d crea o
|
|
3
|
+
* vincula la identidad Fiado y habilita el UX "Cliente reconocido". SureKeep Fase 2 — pista Retail.
|
|
4
|
+
*
|
|
5
|
+
* SIGN_UP - Teléfono nuevo (onboarding recién creado por el gate).
|
|
6
|
+
* PENDING_PASSWORD_CREATION - Cliente existente sin contraseña aún.
|
|
7
|
+
* ACTIVE - Cliente Fiado activo.
|
|
8
|
+
* USER_TEMP_BLOCKED - Bloqueo temporal.
|
|
9
|
+
*/
|
|
10
|
+
export enum FiadoPhoneStatusEnum {
|
|
11
|
+
SIGN_UP = 'SIGN_UP',
|
|
12
|
+
PENDING_PASSWORD_CREATION = 'PENDING_PASSWORD_CREATION',
|
|
13
|
+
ACTIVE = 'ACTIVE',
|
|
14
|
+
USER_TEMP_BLOCKED = 'USER_TEMP_BLOCKED',
|
|
15
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ocupación del cliente (micro-paso del 02; dropdown de 7 valores + OTHER abre texto libre ≤60).
|
|
3
|
+
* Sin ocupación NO se abre la cuenta (Manual v1.4 §8.13). SureKeep Fase 2 — pista Retail.
|
|
4
|
+
*/
|
|
5
|
+
export enum OccupationEnum {
|
|
6
|
+
EMPLOYED = 'EMPLOYED',
|
|
7
|
+
SELF_EMPLOYED = 'SELF_EMPLOYED',
|
|
8
|
+
STUDENT = 'STUDENT',
|
|
9
|
+
HOMEMAKER = 'HOMEMAKER',
|
|
10
|
+
RETIRED = 'RETIRED',
|
|
11
|
+
UNEMPLOYED = 'UNEMPLOYED',
|
|
12
|
+
OTHER = 'OTHER',
|
|
13
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Propósito de un OTP dentro del wizard (v0.1 `otp_purpose`). SureKeep Fase 2 — pista Retail.
|
|
3
|
+
*
|
|
4
|
+
* IDENTITY - OTP de verificación de identidad (teléfono).
|
|
5
|
+
* SIGNATURE - OTP de firma (F3).
|
|
6
|
+
*/
|
|
7
|
+
export enum OtpPurposeEnum {
|
|
8
|
+
IDENTITY = 'IDENTITY',
|
|
9
|
+
SIGNATURE = 'SIGNATURE',
|
|
10
|
+
}
|