@fiado/type-kit 3.205.0 → 3.207.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/loanCredit/dtos/LoanContract.d.ts +3 -1
- package/bin/loanCredit/dtos/LoanContract.js +6 -0
- package/bin/loanCredit/dtos/requests/SignLoanCreditRequest.d.ts +7 -0
- package/bin/loanCredit/dtos/requests/SignLoanCreditRequest.js +6 -0
- package/bin/loanCredit/dtos/responses/LoanContractResponse.d.ts +1 -0
- package/bin/retailWizard/dtos/responses/KycPrepareResponse.d.ts +59 -0
- package/bin/retailWizard/dtos/responses/KycPrepareResponse.js +2 -0
- package/bin/retailWizard/index.d.ts +1 -0
- package/bin/retailWizard/index.js +2 -0
- package/package.json +1 -1
- package/src/loanCredit/dtos/LoanContract.ts +7 -1
- package/src/loanCredit/dtos/requests/SignLoanCreditRequest.ts +12 -1
- package/src/loanCredit/dtos/responses/LoanContractResponse.ts +1 -0
- package/src/retailWizard/dtos/responses/KycPrepareResponse.ts +61 -0
- package/src/retailWizard/index.ts +3 -0
|
@@ -11,7 +11,9 @@ export declare class LoanContract {
|
|
|
11
11
|
contractId: string;
|
|
12
12
|
creditId: string;
|
|
13
13
|
type: ContractTypeEnum;
|
|
14
|
-
/**
|
|
14
|
+
/** Id del documento en document-generator (para getDocumentUrl). Ausente hasta generar. */
|
|
15
|
+
documentId?: string;
|
|
16
|
+
/** Key del PDF en el storage de document-generator. Ausente hasta generar. */
|
|
15
17
|
pdfS3Key?: string;
|
|
16
18
|
/** Hash SHA-256 del PDF firmado (trazabilidad FES — M2 §4.4). Ausente hasta generar. */
|
|
17
19
|
sha256?: string;
|
|
@@ -40,6 +40,12 @@ __decorate([
|
|
|
40
40
|
(0, class_validator_1.IsEnum)(ContractTypeEnum_1.ContractTypeEnum),
|
|
41
41
|
__metadata("design:type", String)
|
|
42
42
|
], LoanContract.prototype, "type", void 0);
|
|
43
|
+
__decorate([
|
|
44
|
+
(0, class_transformer_1.Expose)(),
|
|
45
|
+
(0, class_validator_1.IsOptional)(),
|
|
46
|
+
(0, class_validator_1.IsString)(),
|
|
47
|
+
__metadata("design:type", String)
|
|
48
|
+
], LoanContract.prototype, "documentId", void 0);
|
|
43
49
|
__decorate([
|
|
44
50
|
(0, class_transformer_1.Expose)(),
|
|
45
51
|
(0, class_validator_1.IsOptional)(),
|
|
@@ -20,6 +20,13 @@ export declare class SignLoanCreditRequest {
|
|
|
20
20
|
* hidratado en el borrower). El OTP se genera/verifica keyeado a este id (D5).
|
|
21
21
|
*/
|
|
22
22
|
otpDirectoryId?: string;
|
|
23
|
+
/**
|
|
24
|
+
* SOLO en el inicio de firma (tiempo 1): variables del TEMPLATE del contrato que el motor no
|
|
25
|
+
* posee (PII TRANSITORIA del cliente — nombreAcreditado, curp, domicilio, lugar de firma...).
|
|
26
|
+
* Las aporta el WIZARD (dueño del dato); el motor las mezcla con las financieras (monto,
|
|
27
|
+
* pagos, tasa) y las pasa a document-generator. NO se persisten ni loggean (silo PII-zero).
|
|
28
|
+
*/
|
|
29
|
+
contractData?: Record<string, string>;
|
|
23
30
|
/**
|
|
24
31
|
* SOLO en el inicio de firma (tiempo 1) con el OTP REAL: el teléfono destino del SMS (E.164).
|
|
25
32
|
* PII TRANSITORIA: el motor la pasa a messages-business y NO la persiste ni loggea (silo
|
|
@@ -41,6 +41,12 @@ __decorate([
|
|
|
41
41
|
(0, class_validator_1.IsString)(),
|
|
42
42
|
__metadata("design:type", String)
|
|
43
43
|
], SignLoanCreditRequest.prototype, "otpDirectoryId", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, class_transformer_1.Expose)(),
|
|
46
|
+
(0, class_validator_1.IsOptional)(),
|
|
47
|
+
(0, class_validator_1.IsObject)(),
|
|
48
|
+
__metadata("design:type", Object)
|
|
49
|
+
], SignLoanCreditRequest.prototype, "contractData", void 0);
|
|
44
50
|
__decorate([
|
|
45
51
|
(0, class_transformer_1.Expose)(),
|
|
46
52
|
(0, class_validator_1.IsOptional)(),
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { KycModalityEnum } from '../../../retailCustomer/enums/KycModalityEnum';
|
|
2
|
+
/**
|
|
3
|
+
* Metadata que el wizard entrega al SDK de Metamap para que la verificación quede correlacionada
|
|
4
|
+
* con la identidad Fiado. Viaja base64 dentro de `KycPrepareResponse.metadata`.
|
|
5
|
+
*
|
|
6
|
+
* **La arma el wizard, no el front** (`loan-backoffice-webapp/.env.example`): el front no conoce
|
|
7
|
+
* `peopleId` ni `typeOfDirectoryId` — los resuelve el wizard al crear/reusar la identidad.
|
|
8
|
+
*
|
|
9
|
+
* Espeja `kyc-verifications-business/src/core/entities/Metadata.ts`. Es la ÚNICA correlación entre
|
|
10
|
+
* la verificación de Metamap y el cliente Fiado: el webhook crea la fila desde acá (D18/D19).
|
|
11
|
+
*
|
|
12
|
+
* ⚠️ `typeOfDocumentId` e `isPartial` van OPCIONALES a propósito: el tipo del productor los declara
|
|
13
|
+
* requeridos, pero están ausentes en el 100% de los 311 bloques de metadata observados en dev
|
|
14
|
+
* (spec KYC F2 §14.1). Todo indica que los completa el SDK/backend de Metamap. Marcarlos requeridos
|
|
15
|
+
* acá obligaría al wizard a inventar valores. Se cierra cuando el dueño del SDK lo confirme.
|
|
16
|
+
*/
|
|
17
|
+
export interface KycSdkMetadata {
|
|
18
|
+
directoryId: string;
|
|
19
|
+
typeOfDirectoryId: string;
|
|
20
|
+
peopleId: string;
|
|
21
|
+
countryId: string;
|
|
22
|
+
phoneNumber: string;
|
|
23
|
+
typeOfDocumentId?: string;
|
|
24
|
+
isPartial?: boolean;
|
|
25
|
+
customInput?: boolean;
|
|
26
|
+
userPhotoLink?: string;
|
|
27
|
+
userPhotoLinkHash?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* POST /wizard/sessions/:id/kyc/prepare — respuesta.
|
|
31
|
+
*
|
|
32
|
+
* **Bifurca por modalidad**, por eso todo es opcional salvo `modality`:
|
|
33
|
+
* - `STORE_DEVICE` → `clientId` + `flowId` + `metadata` para que el front monte el
|
|
34
|
+
* `<metamap-button>` en la tablet. Única excepción a la regla puente (D25): el widget es un SDK
|
|
35
|
+
* de un SaaS de terceros que corre en el dispositivo del cliente y habla con Metamap, no con Fiado.
|
|
36
|
+
* - `CUSTOMER_LINK` → `shortUrl` para el QR / SMS al teléfono del cliente.
|
|
37
|
+
*
|
|
38
|
+
* `alreadyVerified` corta el flujo antes de cualquiera de las dos: cuando la consolidación del spec
|
|
39
|
+
* KYC F2 §8.2 ya da `VERIFIED` para ese directorio, no hay identidad que capturar.
|
|
40
|
+
*
|
|
41
|
+
* SureKeep Fase 2 — pista Retail.
|
|
42
|
+
*/
|
|
43
|
+
export interface KycPrepareResponse {
|
|
44
|
+
/**
|
|
45
|
+
* `MANUAL` NO es una modalidad de `prepare`: la captura manual es su propio endpoint
|
|
46
|
+
* (`KycManualRequest`). Por eso el tipo se estrecha a las dos que el SDK puede ejecutar.
|
|
47
|
+
*/
|
|
48
|
+
modality: KycModalityEnum.CUSTOMER_LINK | KycModalityEnum.STORE_DEVICE;
|
|
49
|
+
/** STORE_DEVICE — clientId de la cuenta Metamap (mismo valor en prod y dev). */
|
|
50
|
+
clientId?: string;
|
|
51
|
+
/** STORE_DEVICE — flow de Metamap por país; sale de la configuración del wizard. */
|
|
52
|
+
flowId?: string;
|
|
53
|
+
/** STORE_DEVICE — `KycSdkMetadata` serializada en base64. */
|
|
54
|
+
metadata?: string;
|
|
55
|
+
/** CUSTOMER_LINK — link corto para el QR o el SMS. */
|
|
56
|
+
shortUrl?: string;
|
|
57
|
+
/** El cliente ya tiene una identidad verificada vigente: no hay nada que capturar. */
|
|
58
|
+
alreadyVerified?: boolean;
|
|
59
|
+
}
|
|
@@ -49,6 +49,7 @@ export * from './dtos/requests/CreateProspectRequest';
|
|
|
49
49
|
export * from './dtos/requests/UpdateProspectRequest';
|
|
50
50
|
export * from './dtos/requests/MarkProspectLostRequest';
|
|
51
51
|
export * from './dtos/requests/CancelSaleRequest';
|
|
52
|
+
export * from './dtos/responses/KycPrepareResponse';
|
|
52
53
|
export * from './events/SaleCompletedV1';
|
|
53
54
|
export * from './events/SaleCancelledV1';
|
|
54
55
|
export * from './events/SessionExpiredV1';
|
|
@@ -70,6 +70,8 @@ __exportStar(require("./dtos/requests/CreateProspectRequest"), exports);
|
|
|
70
70
|
__exportStar(require("./dtos/requests/UpdateProspectRequest"), exports);
|
|
71
71
|
__exportStar(require("./dtos/requests/MarkProspectLostRequest"), exports);
|
|
72
72
|
__exportStar(require("./dtos/requests/CancelSaleRequest"), exports);
|
|
73
|
+
// Response DTOs (output tipado por endpoint)
|
|
74
|
+
__exportStar(require("./dtos/responses/KycPrepareResponse"), exports);
|
|
73
75
|
// Contratos de eventos (PascalCase + sufijo V1)
|
|
74
76
|
__exportStar(require("./events/SaleCompletedV1"), exports);
|
|
75
77
|
__exportStar(require("./events/SaleCancelledV1"), exports);
|
package/package.json
CHANGED
|
@@ -24,7 +24,13 @@ export class LoanContract {
|
|
|
24
24
|
@IsEnum(ContractTypeEnum)
|
|
25
25
|
type!: ContractTypeEnum;
|
|
26
26
|
|
|
27
|
-
/**
|
|
27
|
+
/** Id del documento en document-generator (para getDocumentUrl). Ausente hasta generar. */
|
|
28
|
+
@Expose()
|
|
29
|
+
@IsOptional()
|
|
30
|
+
@IsString()
|
|
31
|
+
documentId?: string;
|
|
32
|
+
|
|
33
|
+
/** Key del PDF en el storage de document-generator. Ausente hasta generar. */
|
|
28
34
|
@Expose()
|
|
29
35
|
@IsOptional()
|
|
30
36
|
@IsString()
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Expose } from 'class-transformer';
|
|
2
|
-
import { IsOptional, IsString, Length } from 'class-validator';
|
|
2
|
+
import { IsObject, IsOptional, IsString, Length } from 'class-validator';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Body de `POST /private/credits/:creditId/sign` (loan-credit-business — wizard paso 08, firma FES
|
|
@@ -32,6 +32,17 @@ export class SignLoanCreditRequest {
|
|
|
32
32
|
@IsString()
|
|
33
33
|
otpDirectoryId?: string;
|
|
34
34
|
|
|
35
|
+
/**
|
|
36
|
+
* SOLO en el inicio de firma (tiempo 1): variables del TEMPLATE del contrato que el motor no
|
|
37
|
+
* posee (PII TRANSITORIA del cliente — nombreAcreditado, curp, domicilio, lugar de firma...).
|
|
38
|
+
* Las aporta el WIZARD (dueño del dato); el motor las mezcla con las financieras (monto,
|
|
39
|
+
* pagos, tasa) y las pasa a document-generator. NO se persisten ni loggean (silo PII-zero).
|
|
40
|
+
*/
|
|
41
|
+
@Expose()
|
|
42
|
+
@IsOptional()
|
|
43
|
+
@IsObject()
|
|
44
|
+
contractData?: Record<string, string>;
|
|
45
|
+
|
|
35
46
|
/**
|
|
36
47
|
* SOLO en el inicio de firma (tiempo 1) con el OTP REAL: el teléfono destino del SMS (E.164).
|
|
37
48
|
* PII TRANSITORIA: el motor la pasa a messages-business y NO la persiste ni loggea (silo
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { KycModalityEnum } from '../../../retailCustomer/enums/KycModalityEnum';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Metadata que el wizard entrega al SDK de Metamap para que la verificación quede correlacionada
|
|
5
|
+
* con la identidad Fiado. Viaja base64 dentro de `KycPrepareResponse.metadata`.
|
|
6
|
+
*
|
|
7
|
+
* **La arma el wizard, no el front** (`loan-backoffice-webapp/.env.example`): el front no conoce
|
|
8
|
+
* `peopleId` ni `typeOfDirectoryId` — los resuelve el wizard al crear/reusar la identidad.
|
|
9
|
+
*
|
|
10
|
+
* Espeja `kyc-verifications-business/src/core/entities/Metadata.ts`. Es la ÚNICA correlación entre
|
|
11
|
+
* la verificación de Metamap y el cliente Fiado: el webhook crea la fila desde acá (D18/D19).
|
|
12
|
+
*
|
|
13
|
+
* ⚠️ `typeOfDocumentId` e `isPartial` van OPCIONALES a propósito: el tipo del productor los declara
|
|
14
|
+
* requeridos, pero están ausentes en el 100% de los 311 bloques de metadata observados en dev
|
|
15
|
+
* (spec KYC F2 §14.1). Todo indica que los completa el SDK/backend de Metamap. Marcarlos requeridos
|
|
16
|
+
* acá obligaría al wizard a inventar valores. Se cierra cuando el dueño del SDK lo confirme.
|
|
17
|
+
*/
|
|
18
|
+
export interface KycSdkMetadata {
|
|
19
|
+
directoryId: string;
|
|
20
|
+
typeOfDirectoryId: string;
|
|
21
|
+
peopleId: string;
|
|
22
|
+
countryId: string;
|
|
23
|
+
phoneNumber: string;
|
|
24
|
+
typeOfDocumentId?: string;
|
|
25
|
+
isPartial?: boolean;
|
|
26
|
+
customInput?: boolean;
|
|
27
|
+
userPhotoLink?: string;
|
|
28
|
+
userPhotoLinkHash?: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* POST /wizard/sessions/:id/kyc/prepare — respuesta.
|
|
33
|
+
*
|
|
34
|
+
* **Bifurca por modalidad**, por eso todo es opcional salvo `modality`:
|
|
35
|
+
* - `STORE_DEVICE` → `clientId` + `flowId` + `metadata` para que el front monte el
|
|
36
|
+
* `<metamap-button>` en la tablet. Única excepción a la regla puente (D25): el widget es un SDK
|
|
37
|
+
* de un SaaS de terceros que corre en el dispositivo del cliente y habla con Metamap, no con Fiado.
|
|
38
|
+
* - `CUSTOMER_LINK` → `shortUrl` para el QR / SMS al teléfono del cliente.
|
|
39
|
+
*
|
|
40
|
+
* `alreadyVerified` corta el flujo antes de cualquiera de las dos: cuando la consolidación del spec
|
|
41
|
+
* KYC F2 §8.2 ya da `VERIFIED` para ese directorio, no hay identidad que capturar.
|
|
42
|
+
*
|
|
43
|
+
* SureKeep Fase 2 — pista Retail.
|
|
44
|
+
*/
|
|
45
|
+
export interface KycPrepareResponse {
|
|
46
|
+
/**
|
|
47
|
+
* `MANUAL` NO es una modalidad de `prepare`: la captura manual es su propio endpoint
|
|
48
|
+
* (`KycManualRequest`). Por eso el tipo se estrecha a las dos que el SDK puede ejecutar.
|
|
49
|
+
*/
|
|
50
|
+
modality: KycModalityEnum.CUSTOMER_LINK | KycModalityEnum.STORE_DEVICE;
|
|
51
|
+
/** STORE_DEVICE — clientId de la cuenta Metamap (mismo valor en prod y dev). */
|
|
52
|
+
clientId?: string;
|
|
53
|
+
/** STORE_DEVICE — flow de Metamap por país; sale de la configuración del wizard. */
|
|
54
|
+
flowId?: string;
|
|
55
|
+
/** STORE_DEVICE — `KycSdkMetadata` serializada en base64. */
|
|
56
|
+
metadata?: string;
|
|
57
|
+
/** CUSTOMER_LINK — link corto para el QR o el SMS. */
|
|
58
|
+
shortUrl?: string;
|
|
59
|
+
/** El cliente ya tiene una identidad verificada vigente: no hay nada que capturar. */
|
|
60
|
+
alreadyVerified?: boolean;
|
|
61
|
+
}
|
|
@@ -59,6 +59,9 @@ export * from './dtos/requests/UpdateProspectRequest';
|
|
|
59
59
|
export * from './dtos/requests/MarkProspectLostRequest';
|
|
60
60
|
export * from './dtos/requests/CancelSaleRequest';
|
|
61
61
|
|
|
62
|
+
// Response DTOs (output tipado por endpoint)
|
|
63
|
+
export * from './dtos/responses/KycPrepareResponse';
|
|
64
|
+
|
|
62
65
|
// Contratos de eventos (PascalCase + sufijo V1)
|
|
63
66
|
export * from './events/SaleCompletedV1';
|
|
64
67
|
export * from './events/SaleCancelledV1';
|