@fiado/type-kit 3.194.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/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/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,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Emitido al cancelar una venta (flujo C). Se escribe al outbox transaccional; drena a la cola Central.
|
|
3
|
+
* SureKeep Fase 2 — pista Retail.
|
|
4
|
+
*/
|
|
5
|
+
export interface SaleCancelledV1 {
|
|
6
|
+
saleId: string;
|
|
7
|
+
folio: string;
|
|
8
|
+
retailCustomerId: string;
|
|
9
|
+
imei: string | null;
|
|
10
|
+
cancelReason: string;
|
|
11
|
+
cancelledAt: string;
|
|
12
|
+
occurredAt: string;
|
|
13
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Emitido al cerrar una venta (flujo 09). Se escribe al outbox transaccional en la MISMA
|
|
3
|
+
* `TransactWriteItems` del cierre; drena a la cola Central + datalake. Solo identificadores
|
|
4
|
+
* operacionales (nunca PII). SureKeep Fase 2 — pista Retail.
|
|
5
|
+
*/
|
|
6
|
+
export interface SaleCompletedV1 {
|
|
7
|
+
saleId: string;
|
|
8
|
+
folio: string;
|
|
9
|
+
retailerId: string;
|
|
10
|
+
storeId: string;
|
|
11
|
+
retailCustomerId: string;
|
|
12
|
+
sku: string;
|
|
13
|
+
imei: string | null;
|
|
14
|
+
amountCents: number;
|
|
15
|
+
soldAt: string;
|
|
16
|
+
occurredAt: string;
|
|
17
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Emitido cuando una sesión del wizard expira por inactividad (barrido del scheduler, TTL DDB ~24h).
|
|
3
|
+
* Libera la reserva del silo si la hubiera. SureKeep Fase 2 — pista Retail.
|
|
4
|
+
*/
|
|
5
|
+
export interface SessionExpiredV1 {
|
|
6
|
+
sessionId: string;
|
|
7
|
+
phone: string;
|
|
8
|
+
reservedImei: string | null;
|
|
9
|
+
occurredAt: string;
|
|
10
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export * from './enums/WizardStateEnum';
|
|
2
|
+
export * from './enums/WizardStepEnum';
|
|
3
|
+
export * from './enums/OtpPurposeEnum';
|
|
4
|
+
export * from './enums/FiadoPhoneStatusEnum';
|
|
5
|
+
export * from './enums/PaymentMethodEnum';
|
|
6
|
+
export * from './enums/ExternalProviderEnum';
|
|
7
|
+
export * from './enums/SaleTypeEnum';
|
|
8
|
+
export * from './enums/SalePaymentMethodEnum';
|
|
9
|
+
export * from './enums/SaleStatusEnum';
|
|
10
|
+
export * from './enums/CentralSyncStatusEnum';
|
|
11
|
+
export * from './enums/ProspectStatusEnum';
|
|
12
|
+
export * from './enums/PendingReasonEnum';
|
|
13
|
+
export * from './enums/OccupationEnum';
|
|
14
|
+
export * from './enums/BeneficiaryRelationEnum';
|
|
15
|
+
export * from './dtos/WizardConsents';
|
|
16
|
+
export * from './dtos/WizardPayment';
|
|
17
|
+
export * from './dtos/WizardWelcome';
|
|
18
|
+
export * from './dtos/SalePaymentDetail';
|
|
19
|
+
export * from './dtos/ProspectNewCustomer';
|
|
20
|
+
export * from './dtos/WizardBeneficiary';
|
|
21
|
+
export * from './dtos/WizardSession';
|
|
22
|
+
export * from './dtos/OtpVerification';
|
|
23
|
+
export * from './dtos/Sale';
|
|
24
|
+
export * from './dtos/Prospect';
|
|
25
|
+
export * from './dtos/PaginatedResult';
|
|
26
|
+
export * from './dtos/requests/StartSessionRequest';
|
|
27
|
+
export * from './dtos/requests/CancelSessionRequest';
|
|
28
|
+
export * from './dtos/requests/VerifyOtpRequest';
|
|
29
|
+
export * from './dtos/requests/ResendOtpRequest';
|
|
30
|
+
export * from './dtos/requests/SkipOtpRequest';
|
|
31
|
+
export * from './dtos/requests/ConsentsRequest';
|
|
32
|
+
export * from './dtos/requests/KycPrepareRequest';
|
|
33
|
+
export * from './dtos/requests/KycConfirmRequest';
|
|
34
|
+
export * from './dtos/requests/KycManualRequest';
|
|
35
|
+
export * from './dtos/requests/OccupationRequest';
|
|
36
|
+
export * from './dtos/requests/AddProductRequest';
|
|
37
|
+
export * from './dtos/requests/DeleteProductRequest';
|
|
38
|
+
export * from './dtos/requests/SetPaymentMethodRequest';
|
|
39
|
+
export * from './dtos/requests/ExternalReferralRequest';
|
|
40
|
+
export * from './dtos/requests/RegisterPaymentRequest';
|
|
41
|
+
export * from './dtos/requests/CompleteSaleRequest';
|
|
42
|
+
export * from './dtos/requests/AppInstallLinkRequest';
|
|
43
|
+
export * from './dtos/requests/MarkPcfCardDeliveredRequest';
|
|
44
|
+
export * from './dtos/requests/ConfirmAddressRequest';
|
|
45
|
+
export * from './dtos/requests/SaveBeneficiaryRequest';
|
|
46
|
+
export * from './dtos/requests/SignBeneficiaryAnnexRequest';
|
|
47
|
+
export * from './dtos/requests/WelcomeTopupRequest';
|
|
48
|
+
export * from './dtos/requests/CreateProspectRequest';
|
|
49
|
+
export * from './dtos/requests/UpdateProspectRequest';
|
|
50
|
+
export * from './dtos/requests/MarkProspectLostRequest';
|
|
51
|
+
export * from './dtos/requests/CancelSaleRequest';
|
|
52
|
+
export * from './events/SaleCompletedV1';
|
|
53
|
+
export * from './events/SaleCancelledV1';
|
|
54
|
+
export * from './events/SessionExpiredV1';
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
// Enums
|
|
18
|
+
__exportStar(require("./enums/WizardStateEnum"), exports);
|
|
19
|
+
__exportStar(require("./enums/WizardStepEnum"), exports);
|
|
20
|
+
__exportStar(require("./enums/OtpPurposeEnum"), exports);
|
|
21
|
+
__exportStar(require("./enums/FiadoPhoneStatusEnum"), exports);
|
|
22
|
+
__exportStar(require("./enums/PaymentMethodEnum"), exports);
|
|
23
|
+
__exportStar(require("./enums/ExternalProviderEnum"), exports);
|
|
24
|
+
__exportStar(require("./enums/SaleTypeEnum"), exports);
|
|
25
|
+
__exportStar(require("./enums/SalePaymentMethodEnum"), exports);
|
|
26
|
+
__exportStar(require("./enums/SaleStatusEnum"), exports);
|
|
27
|
+
__exportStar(require("./enums/CentralSyncStatusEnum"), exports);
|
|
28
|
+
__exportStar(require("./enums/ProspectStatusEnum"), exports);
|
|
29
|
+
__exportStar(require("./enums/PendingReasonEnum"), exports);
|
|
30
|
+
__exportStar(require("./enums/OccupationEnum"), exports);
|
|
31
|
+
__exportStar(require("./enums/BeneficiaryRelationEnum"), exports);
|
|
32
|
+
// DTOs anidados
|
|
33
|
+
__exportStar(require("./dtos/WizardConsents"), exports);
|
|
34
|
+
__exportStar(require("./dtos/WizardPayment"), exports);
|
|
35
|
+
__exportStar(require("./dtos/WizardWelcome"), exports);
|
|
36
|
+
__exportStar(require("./dtos/SalePaymentDetail"), exports);
|
|
37
|
+
__exportStar(require("./dtos/ProspectNewCustomer"), exports);
|
|
38
|
+
__exportStar(require("./dtos/WizardBeneficiary"), exports);
|
|
39
|
+
// Entidades principales (shapes de estado/persistencia — planas)
|
|
40
|
+
__exportStar(require("./dtos/WizardSession"), exports);
|
|
41
|
+
__exportStar(require("./dtos/OtpVerification"), exports);
|
|
42
|
+
__exportStar(require("./dtos/Sale"), exports);
|
|
43
|
+
__exportStar(require("./dtos/Prospect"), exports);
|
|
44
|
+
// Paginación genérica
|
|
45
|
+
__exportStar(require("./dtos/PaginatedResult"), exports);
|
|
46
|
+
// Request DTOs (input validado por endpoint)
|
|
47
|
+
__exportStar(require("./dtos/requests/StartSessionRequest"), exports);
|
|
48
|
+
__exportStar(require("./dtos/requests/CancelSessionRequest"), exports);
|
|
49
|
+
__exportStar(require("./dtos/requests/VerifyOtpRequest"), exports);
|
|
50
|
+
__exportStar(require("./dtos/requests/ResendOtpRequest"), exports);
|
|
51
|
+
__exportStar(require("./dtos/requests/SkipOtpRequest"), exports);
|
|
52
|
+
__exportStar(require("./dtos/requests/ConsentsRequest"), exports);
|
|
53
|
+
__exportStar(require("./dtos/requests/KycPrepareRequest"), exports);
|
|
54
|
+
__exportStar(require("./dtos/requests/KycConfirmRequest"), exports);
|
|
55
|
+
__exportStar(require("./dtos/requests/KycManualRequest"), exports);
|
|
56
|
+
__exportStar(require("./dtos/requests/OccupationRequest"), exports);
|
|
57
|
+
__exportStar(require("./dtos/requests/AddProductRequest"), exports);
|
|
58
|
+
__exportStar(require("./dtos/requests/DeleteProductRequest"), exports);
|
|
59
|
+
__exportStar(require("./dtos/requests/SetPaymentMethodRequest"), exports);
|
|
60
|
+
__exportStar(require("./dtos/requests/ExternalReferralRequest"), exports);
|
|
61
|
+
__exportStar(require("./dtos/requests/RegisterPaymentRequest"), exports);
|
|
62
|
+
__exportStar(require("./dtos/requests/CompleteSaleRequest"), exports);
|
|
63
|
+
__exportStar(require("./dtos/requests/AppInstallLinkRequest"), exports);
|
|
64
|
+
__exportStar(require("./dtos/requests/MarkPcfCardDeliveredRequest"), exports);
|
|
65
|
+
__exportStar(require("./dtos/requests/ConfirmAddressRequest"), exports);
|
|
66
|
+
__exportStar(require("./dtos/requests/SaveBeneficiaryRequest"), exports);
|
|
67
|
+
__exportStar(require("./dtos/requests/SignBeneficiaryAnnexRequest"), exports);
|
|
68
|
+
__exportStar(require("./dtos/requests/WelcomeTopupRequest"), exports);
|
|
69
|
+
__exportStar(require("./dtos/requests/CreateProspectRequest"), exports);
|
|
70
|
+
__exportStar(require("./dtos/requests/UpdateProspectRequest"), exports);
|
|
71
|
+
__exportStar(require("./dtos/requests/MarkProspectLostRequest"), exports);
|
|
72
|
+
__exportStar(require("./dtos/requests/CancelSaleRequest"), exports);
|
|
73
|
+
// Contratos de eventos (PascalCase + sufijo V1)
|
|
74
|
+
__exportStar(require("./events/SaleCompletedV1"), exports);
|
|
75
|
+
__exportStar(require("./events/SaleCancelledV1"), exports);
|
|
76
|
+
__exportStar(require("./events/SessionExpiredV1"), exports);
|
package/package.json
CHANGED
|
@@ -7,6 +7,22 @@ export const regexIso8601 = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|
|
|
|
7
7
|
// Expresión regular para validar un número de teléfono
|
|
8
8
|
export const regexPhoneNumber = /^\+1\d{10}$|^\+52\d{10}$/;
|
|
9
9
|
|
|
10
|
+
// Fecha ISO 8601 aceptando fecha sola (YYYY-MM-DD) o fecha-hora — p. ej. fecha de nacimiento del OCR,
|
|
11
|
+
// que puede venir sin hora. Complementa a `regexIso8601` (estricto date-time, usado en createdAt/updatedAt).
|
|
12
|
+
// Usado por los dominios retail F2 (retailCustomer). SureKeep Fase 2 — pista Retail.
|
|
13
|
+
export const regexIso8601Date =
|
|
14
|
+
/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d{1,3})?(Z|[+-]\d{2}:\d{2})?)?$/;
|
|
15
|
+
|
|
16
|
+
// CURP mexicano (18 chars): 4 letras + 6 dígitos de fecha + H/M + 5 letras entidad/consonantes + homoclave.
|
|
17
|
+
// Se aplica SIEMPRE sobre el CURP en MAYÚSCULAS (normalización previa en el boundary).
|
|
18
|
+
// Usado por retailCustomer (upsert-from-kyc). SureKeep Fase 2 — pista Retail.
|
|
19
|
+
export const regexCurp =
|
|
20
|
+
/^[A-Z][AEIOUX][A-Z]{2}\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])[HM][A-Z]{2}[B-DF-HJ-NP-TV-Z]{3}[A-Z\d]\d$/;
|
|
21
|
+
|
|
22
|
+
// Teléfono MX: exactamente 10 dígitos (se normalizan espacios/guiones antes de validar).
|
|
23
|
+
// Usado por retailCustomer y retailWizard. SureKeep Fase 2 — pista Retail.
|
|
24
|
+
export const regexPhoneMx = /^\d{10}$/;
|
|
25
|
+
|
|
10
26
|
|
|
11
27
|
|
|
12
28
|
|
package/src/index.ts
CHANGED
|
@@ -109,6 +109,12 @@ export * as RetailCatalog from './retailCatalog';
|
|
|
109
109
|
// RetailCards: DTOs/enums del lambda retail-cards-business (comp 06 — tarjetas físicas PCF:
|
|
110
110
|
// lotes, stock y asignación; SureKeep Fase 1 — pista Retail).
|
|
111
111
|
export * as RetailCards from './retailCards';
|
|
112
|
+
// RetailCustomer: DTOs/enums del lambda retail-customer-business (comp 03 — cliente comprador:
|
|
113
|
+
// identidad Fiado, cuenta PCF async, domicilio y ciclo KYC con revisión de Cumplimiento; SureKeep Fase 2 — pista Retail).
|
|
114
|
+
export * as RetailCustomer from './retailCustomer';
|
|
115
|
+
// RetailWizard: DTOs/enums del lambda retail-wizard-business (comp 04 — wizard de venta de contado:
|
|
116
|
+
// saga de sesión, OTP, KYC, venta y prospectos; SureKeep Fase 2 — pista Retail).
|
|
117
|
+
export * as RetailWizard from './retailWizard';
|
|
112
118
|
// LoanConfig: DTOs/enums del lambda loan-config-business (comp 09 — parámetros operativos del SOFOM).
|
|
113
119
|
export * as LoanConfig from './loanConfig';
|
|
114
120
|
// LoanOfferings: DTOs/enums del lambda loan-offerings-business (comp 07 — planes de crédito,
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsEnum, IsString, Matches } from 'class-validator';
|
|
3
|
+
import { regexIso8601 } from '../../helpers/constans/regex';
|
|
4
|
+
import { KycReviewResultEnum } from '../enums/KycReviewResultEnum';
|
|
5
|
+
import { RetailKycStatusEnum } from '../enums/RetailKycStatusEnum';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Aprobación/rechazo manual justificado del oficial de Cumplimiento (D21). Se persiste embebido en
|
|
9
|
+
* `RetailCustomer.kycReview` y se espeja a kyc-verifications (Fiado) + AuditTrail en la misma TX.
|
|
10
|
+
* SureKeep Fase 2 — pista Retail.
|
|
11
|
+
*/
|
|
12
|
+
export class KycReview {
|
|
13
|
+
@Expose()
|
|
14
|
+
@IsEnum(KycReviewResultEnum)
|
|
15
|
+
result!: KycReviewResultEnum;
|
|
16
|
+
|
|
17
|
+
/** Email del oficial (tomado del JWT). */
|
|
18
|
+
@Expose()
|
|
19
|
+
@IsString()
|
|
20
|
+
reviewedBy!: string;
|
|
21
|
+
|
|
22
|
+
@Expose()
|
|
23
|
+
@IsString()
|
|
24
|
+
@Matches(regexIso8601, { message: 'reviewedAt debe ser una fecha ISO 8601' })
|
|
25
|
+
reviewedAt!: string;
|
|
26
|
+
|
|
27
|
+
/** Justificación obligatoria de la decisión (queda en AuditTrail). */
|
|
28
|
+
@Expose()
|
|
29
|
+
@IsString()
|
|
30
|
+
justification!: string;
|
|
31
|
+
|
|
32
|
+
/** Correlación con la verificación de Metamap en kyc-verifications. */
|
|
33
|
+
@Expose()
|
|
34
|
+
@IsString()
|
|
35
|
+
metamapVerificationId!: string;
|
|
36
|
+
|
|
37
|
+
/** Estado de KYC previo a la resolución manual. */
|
|
38
|
+
@Expose()
|
|
39
|
+
@IsEnum(RetailKycStatusEnum)
|
|
40
|
+
previousStatus!: RetailKycStatusEnum;
|
|
41
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { Expose, Type } from 'class-transformer';
|
|
2
|
+
import { IsBoolean, IsEnum, IsIn, IsOptional, IsString, Matches, ValidateNested } from 'class-validator';
|
|
3
|
+
import { regexIso8601, regexIso8601Date } from '../../helpers/constans/regex';
|
|
4
|
+
import { AddressBase } from '../../address/dtos/AddressBase';
|
|
5
|
+
import { AccountStatusEnum } from '../enums/AccountStatusEnum';
|
|
6
|
+
import { KycModalityEnum } from '../enums/KycModalityEnum';
|
|
7
|
+
import { RetailKycStatusEnum } from '../enums/RetailKycStatusEnum';
|
|
8
|
+
import { KycReview } from './KycReview';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* RetailCustomer — el comprador de la pista Retail (owner: retail-customer-business). Nace en F1 §3.5
|
|
12
|
+
* y se amplía en F2: vínculo con la identidad Fiado, cuenta PCF (apertura async, D35), domicilio
|
|
13
|
+
* estructurado (copia operativa del silo), y el ciclo de KYC con revisión manual de Cumplimiento.
|
|
14
|
+
* SureKeep Fase 2 — pista Retail.
|
|
15
|
+
*/
|
|
16
|
+
export class RetailCustomer {
|
|
17
|
+
@Expose()
|
|
18
|
+
@IsString()
|
|
19
|
+
retailCustomerId!: string;
|
|
20
|
+
|
|
21
|
+
@Expose()
|
|
22
|
+
@IsString()
|
|
23
|
+
retailerId!: string;
|
|
24
|
+
|
|
25
|
+
@Expose()
|
|
26
|
+
@IsString()
|
|
27
|
+
name!: string;
|
|
28
|
+
|
|
29
|
+
@Expose()
|
|
30
|
+
@IsString()
|
|
31
|
+
phone!: string;
|
|
32
|
+
|
|
33
|
+
@Expose()
|
|
34
|
+
@IsString()
|
|
35
|
+
curp!: string;
|
|
36
|
+
|
|
37
|
+
/** Fecha de nacimiento (ISO 8601, admite fecha sola); se completa con el OCR del KYC. */
|
|
38
|
+
@Expose()
|
|
39
|
+
@IsOptional()
|
|
40
|
+
@IsString()
|
|
41
|
+
@Matches(regexIso8601Date, { message: 'birthDate debe ser una fecha ISO 8601' })
|
|
42
|
+
birthDate?: string;
|
|
43
|
+
|
|
44
|
+
@Expose()
|
|
45
|
+
@IsOptional()
|
|
46
|
+
@IsString()
|
|
47
|
+
fiadoDirectoryId!: string | null;
|
|
48
|
+
|
|
49
|
+
@Expose()
|
|
50
|
+
@IsOptional()
|
|
51
|
+
@IsString()
|
|
52
|
+
fiadoPeopleId!: string | null;
|
|
53
|
+
|
|
54
|
+
@Expose()
|
|
55
|
+
@IsOptional()
|
|
56
|
+
@IsString()
|
|
57
|
+
pcfAccountId!: string | null;
|
|
58
|
+
|
|
59
|
+
@Expose()
|
|
60
|
+
@IsOptional()
|
|
61
|
+
@IsString()
|
|
62
|
+
pcfClabe!: string | null;
|
|
63
|
+
|
|
64
|
+
@Expose()
|
|
65
|
+
@IsOptional()
|
|
66
|
+
@IsIn([1, 2])
|
|
67
|
+
pcfAccountLevel!: 1 | 2 | null;
|
|
68
|
+
|
|
69
|
+
@Expose()
|
|
70
|
+
@IsOptional()
|
|
71
|
+
@IsEnum(AccountStatusEnum)
|
|
72
|
+
accountStatus!: AccountStatusEnum | null;
|
|
73
|
+
|
|
74
|
+
@Expose()
|
|
75
|
+
@IsOptional()
|
|
76
|
+
@IsString()
|
|
77
|
+
failReason!: string | null;
|
|
78
|
+
|
|
79
|
+
@Expose()
|
|
80
|
+
@IsBoolean()
|
|
81
|
+
welcomeAccredited!: boolean;
|
|
82
|
+
|
|
83
|
+
// TD-ADDRESSBASE-OCR: por decisión de Andrés (2026-07) el domicilio reusa el `AddressBase` canónico
|
|
84
|
+
// de Fiado (`address/dtos/AddressBase`, espejo de Address_GT) tal cual manda el spec (componente 01 +
|
|
85
|
+
// modelo-datos F2). RIESGO detectado: `AddressBase` tiene ~12 campos requeridos (directoryId, tenantId,
|
|
86
|
+
// createdBy, typeOfAddressId, typeOfDirectoryId, provider, addressStatus, validFrom, isPrincipal,
|
|
87
|
+
// helpNeeded, countryId, country) que un domicilio de copia OCR-parcial puede NO llenar → con
|
|
88
|
+
// @ValidateNested esto puede RECHAZAR en runtime los payloads OCR de kyc/confirm y address/confirm.
|
|
89
|
+
// Se acepta ahora para apegarse al doc; ajustar después (posible tipo de dirección ligero para captura).
|
|
90
|
+
@Expose()
|
|
91
|
+
@IsOptional()
|
|
92
|
+
@ValidateNested()
|
|
93
|
+
@Type(() => AddressBase)
|
|
94
|
+
address!: AddressBase | null;
|
|
95
|
+
|
|
96
|
+
@Expose()
|
|
97
|
+
@IsBoolean()
|
|
98
|
+
addressConfirmed!: boolean;
|
|
99
|
+
|
|
100
|
+
@Expose()
|
|
101
|
+
@IsEnum(RetailKycStatusEnum)
|
|
102
|
+
kycStatus!: RetailKycStatusEnum;
|
|
103
|
+
|
|
104
|
+
@Expose()
|
|
105
|
+
@IsOptional()
|
|
106
|
+
@IsEnum(KycModalityEnum)
|
|
107
|
+
kycModality!: KycModalityEnum | null;
|
|
108
|
+
|
|
109
|
+
@Expose()
|
|
110
|
+
@IsOptional()
|
|
111
|
+
@ValidateNested()
|
|
112
|
+
@Type(() => KycReview)
|
|
113
|
+
kycReview!: KycReview | null;
|
|
114
|
+
|
|
115
|
+
@Expose()
|
|
116
|
+
@IsString()
|
|
117
|
+
@Matches(regexIso8601, { message: 'createdAt debe ser una fecha ISO 8601' })
|
|
118
|
+
createdAt!: string;
|
|
119
|
+
|
|
120
|
+
@Expose()
|
|
121
|
+
@IsString()
|
|
122
|
+
@Matches(regexIso8601, { message: 'updatedAt debe ser una fecha ISO 8601' })
|
|
123
|
+
updatedAt!: string;
|
|
124
|
+
|
|
125
|
+
@Expose()
|
|
126
|
+
@IsString()
|
|
127
|
+
createdBy!: string;
|
|
128
|
+
|
|
129
|
+
@Expose()
|
|
130
|
+
@IsString()
|
|
131
|
+
updatedBy!: string;
|
|
132
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsIn, IsNotEmpty, IsOptional, IsString, ValidateIf } from 'class-validator';
|
|
3
|
+
import { AccountStatusEnum } from '../../enums/AccountStatusEnum';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Resultado de la apertura de cuenta async (D35) — lo escribe el consumer `account-inbound` al
|
|
7
|
+
* aterrizar el evento `AccountIssuanceCompleted`. OPEN llega con `pcfClabe`/`pcfAccountLevel`;
|
|
8
|
+
* FAILED llega con `failReason`. El endpoint SOLO acepta el resultado terminal (OPEN/FAILED), nunca
|
|
9
|
+
* el estado intermedio OPENING (ese lo setea el server en el upsert). SureKeep Fase 2 — pista Retail.
|
|
10
|
+
*/
|
|
11
|
+
export class AccountResultRequest {
|
|
12
|
+
// OPENING NO es un resultado válido del endpoint D35; solo el estado terminal OPEN/FAILED.
|
|
13
|
+
@Expose()
|
|
14
|
+
@IsIn([AccountStatusEnum.OPEN, AccountStatusEnum.FAILED])
|
|
15
|
+
status!: AccountStatusEnum;
|
|
16
|
+
|
|
17
|
+
// OPEN ⇒ pcfClabe obligatorio (la cuenta abierta sin CLABE es inconsistente). Para FAILED se omite
|
|
18
|
+
// (@ValidateIf desactiva los validators cuando status ≠ OPEN → queda opcional).
|
|
19
|
+
@Expose()
|
|
20
|
+
@ValidateIf((o: AccountResultRequest) => o.status === AccountStatusEnum.OPEN)
|
|
21
|
+
@IsString()
|
|
22
|
+
@IsNotEmpty({ message: 'pcfClabe es obligatorio cuando status es OPEN' })
|
|
23
|
+
pcfClabe?: string;
|
|
24
|
+
|
|
25
|
+
@Expose()
|
|
26
|
+
@IsOptional()
|
|
27
|
+
@IsIn([1, 2])
|
|
28
|
+
pcfAccountLevel?: 1 | 2;
|
|
29
|
+
|
|
30
|
+
@Expose()
|
|
31
|
+
@IsOptional()
|
|
32
|
+
@IsString()
|
|
33
|
+
failReason?: string;
|
|
34
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsOptional, IsString, Matches } from 'class-validator';
|
|
3
|
+
import { regexIso8601Date } from '../../../helpers/constans/regex';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Alta básica de un cliente retail (identidad comercial mínima; el KYC la enriquece después).
|
|
7
|
+
* SureKeep Fase 2 — pista Retail.
|
|
8
|
+
*/
|
|
9
|
+
export class CreateCustomerRequest {
|
|
10
|
+
@Expose()
|
|
11
|
+
@IsString()
|
|
12
|
+
name!: string;
|
|
13
|
+
|
|
14
|
+
@Expose()
|
|
15
|
+
@IsString()
|
|
16
|
+
phone!: string;
|
|
17
|
+
|
|
18
|
+
@Expose()
|
|
19
|
+
@IsOptional()
|
|
20
|
+
@IsString()
|
|
21
|
+
curp?: string;
|
|
22
|
+
|
|
23
|
+
@Expose()
|
|
24
|
+
@IsOptional()
|
|
25
|
+
@IsString()
|
|
26
|
+
@Matches(regexIso8601Date, { message: 'birthDate debe ser una fecha ISO 8601' })
|
|
27
|
+
birthDate?: string;
|
|
28
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsEnum, IsString } from 'class-validator';
|
|
3
|
+
import { KycReviewResultEnum } from '../../enums/KycReviewResultEnum';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Resolución de la cola de Cumplimiento (D21): `POST /customers/:id/kyc-review`. La `justification`
|
|
7
|
+
* es OBLIGATORIA (queda en AuditTrail). `reviewedBy`/`reviewedAt` los pone el server.
|
|
8
|
+
* SureKeep Fase 2 — pista Retail.
|
|
9
|
+
*/
|
|
10
|
+
export class KycReviewRequest {
|
|
11
|
+
@Expose()
|
|
12
|
+
@IsEnum(KycReviewResultEnum)
|
|
13
|
+
result!: KycReviewResultEnum;
|
|
14
|
+
|
|
15
|
+
@Expose()
|
|
16
|
+
@IsString()
|
|
17
|
+
justification!: string;
|
|
18
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsOptional, IsString, Matches } from 'class-validator';
|
|
3
|
+
import { regexIso8601Date } from '../../../helpers/constans/regex';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Edición de datos de contacto/PII del cliente (Cliente 360 del BO). Toda escritura de PII va a
|
|
7
|
+
* AuditTrail + PiiAccessLog en el lambda. SureKeep Fase 2 — pista Retail.
|
|
8
|
+
*/
|
|
9
|
+
export class UpdateCustomerRequest {
|
|
10
|
+
@Expose()
|
|
11
|
+
@IsOptional()
|
|
12
|
+
@IsString()
|
|
13
|
+
name?: string;
|
|
14
|
+
|
|
15
|
+
@Expose()
|
|
16
|
+
@IsOptional()
|
|
17
|
+
@IsString()
|
|
18
|
+
phone?: string;
|
|
19
|
+
|
|
20
|
+
@Expose()
|
|
21
|
+
@IsOptional()
|
|
22
|
+
@IsString()
|
|
23
|
+
curp?: string;
|
|
24
|
+
|
|
25
|
+
@Expose()
|
|
26
|
+
@IsOptional()
|
|
27
|
+
@IsString()
|
|
28
|
+
@Matches(regexIso8601Date, { message: 'birthDate debe ser una fecha ISO 8601' })
|
|
29
|
+
birthDate?: string;
|
|
30
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Expose, Transform, Type } from 'class-transformer';
|
|
2
|
+
import { IsEnum, IsIn, IsOptional, IsString, Matches, ValidateNested } from 'class-validator';
|
|
3
|
+
import { regexCurp, regexIso8601Date, regexPhoneMx } from '../../../helpers/constans/regex';
|
|
4
|
+
import { AddressBase } from '../../../address/dtos/AddressBase';
|
|
5
|
+
import { KycModalityEnum } from '../../enums/KycModalityEnum';
|
|
6
|
+
import { RetailKycStatusEnum } from '../../enums/RetailKycStatusEnum';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Upsert idempotente del cliente tras el KYC (paso 02f). UNIQ#PHONE + UNIQ#CURP en la misma TX.
|
|
10
|
+
* El endpoint setea `accountStatus=OPENING` server-side (la apertura corre en background, D35).
|
|
11
|
+
* SureKeep Fase 2 — pista Retail.
|
|
12
|
+
*/
|
|
13
|
+
export class UpsertCustomerFromKycRequest {
|
|
14
|
+
@Expose()
|
|
15
|
+
@IsString()
|
|
16
|
+
name!: string;
|
|
17
|
+
|
|
18
|
+
// Normalización en el boundary: se strippean espacios/guiones para que centinela de unicidad,
|
|
19
|
+
// lookup y search del BO (que también strippea) usen el MISMO formato de teléfono.
|
|
20
|
+
@Expose()
|
|
21
|
+
@Transform(({ value }) => (typeof value === 'string' ? value.replace(/[\s-]/g, '') : value))
|
|
22
|
+
@IsString()
|
|
23
|
+
@Matches(regexPhoneMx, { message: 'phone debe ser 10 dígitos MX' })
|
|
24
|
+
phone!: string;
|
|
25
|
+
|
|
26
|
+
// Normalización en el boundary: el CURP se uppercasea para no evadir la unicidad transaccional
|
|
27
|
+
// (minúsculas vs mayúsculas) y para que el search del BO (que uppercasea) lo encuentre.
|
|
28
|
+
@Expose()
|
|
29
|
+
@Transform(({ value }) => (typeof value === 'string' ? value.toUpperCase() : value))
|
|
30
|
+
@IsString()
|
|
31
|
+
@Matches(regexCurp, { message: 'curp con formato inválido' })
|
|
32
|
+
curp!: string;
|
|
33
|
+
|
|
34
|
+
@Expose()
|
|
35
|
+
@IsOptional()
|
|
36
|
+
@IsString()
|
|
37
|
+
@Matches(regexIso8601Date, { message: 'birthDate debe ser una fecha ISO 8601' })
|
|
38
|
+
birthDate?: string;
|
|
39
|
+
|
|
40
|
+
@Expose()
|
|
41
|
+
@IsString()
|
|
42
|
+
fiadoDirectoryId!: string;
|
|
43
|
+
|
|
44
|
+
@Expose()
|
|
45
|
+
@IsString()
|
|
46
|
+
fiadoPeopleId!: string;
|
|
47
|
+
|
|
48
|
+
@Expose()
|
|
49
|
+
@IsOptional()
|
|
50
|
+
@IsString()
|
|
51
|
+
pcfAccountId?: string;
|
|
52
|
+
|
|
53
|
+
@Expose()
|
|
54
|
+
@IsOptional()
|
|
55
|
+
@IsString()
|
|
56
|
+
pcfClabe?: string;
|
|
57
|
+
|
|
58
|
+
@Expose()
|
|
59
|
+
@IsOptional()
|
|
60
|
+
@IsIn([1, 2])
|
|
61
|
+
pcfAccountLevel?: 1 | 2;
|
|
62
|
+
|
|
63
|
+
@Expose()
|
|
64
|
+
@IsEnum(RetailKycStatusEnum)
|
|
65
|
+
kycStatus!: RetailKycStatusEnum;
|
|
66
|
+
|
|
67
|
+
@Expose()
|
|
68
|
+
@IsEnum(KycModalityEnum)
|
|
69
|
+
kycModality!: KycModalityEnum;
|
|
70
|
+
|
|
71
|
+
// TD-ADDRESSBASE-OCR: reusa el `AddressBase` canónico por decisión de Andrés (apego al spec). El OCR
|
|
72
|
+
// (paso 02e) puede no traer los ~12 campos requeridos de AddressBase → posible rechazo en runtime con
|
|
73
|
+
// @ValidateNested. Se persiste en la MISMA TX del upsert. Ajustar después (ver RetailCustomer.address).
|
|
74
|
+
@Expose()
|
|
75
|
+
@IsOptional()
|
|
76
|
+
@ValidateNested()
|
|
77
|
+
@Type(() => AddressBase)
|
|
78
|
+
address?: AddressBase;
|
|
79
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { CustomerResponse } from './CustomerResponse';
|
|
2
|
+
|
|
3
|
+
/** Resumen de wallet (nivel N1/N2 + saldo) para el Cliente 360. */
|
|
4
|
+
export interface Customer360Wallet {
|
|
5
|
+
accountLevel: 1 | 2 | null;
|
|
6
|
+
clabe: string | null;
|
|
7
|
+
balanceCents: number;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/** Ítem de compra en el historial del Cliente 360 (del GSI customerId-soldAt). */
|
|
11
|
+
export interface Customer360Purchase {
|
|
12
|
+
saleId: string;
|
|
13
|
+
sku: string;
|
|
14
|
+
amountCents: number;
|
|
15
|
+
folio: string;
|
|
16
|
+
soldAt: string;
|
|
17
|
+
status: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Ítem de prospecto vinculado al cliente en el Cliente 360. */
|
|
21
|
+
export interface Customer360Prospect {
|
|
22
|
+
prospectId: string;
|
|
23
|
+
pendingReason: string;
|
|
24
|
+
status: string;
|
|
25
|
+
nextContactAt: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Ficha Cliente 360 (BO): compone KYC + wallet N1/N2 + compras + prospectos. Cada bloque se hidrata
|
|
30
|
+
* desde su owner (customer, transaction-processor, sale GSI, prospect GSI). SureKeep Fase 2 — pista Retail.
|
|
31
|
+
*/
|
|
32
|
+
export interface Customer360Response {
|
|
33
|
+
customer: CustomerResponse;
|
|
34
|
+
wallet: Customer360Wallet;
|
|
35
|
+
purchases: Customer360Purchase[];
|
|
36
|
+
prospects: Customer360Prospect[];
|
|
37
|
+
}
|