@fiado/type-kit 3.204.0 → 3.206.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.
@@ -32,6 +32,8 @@ export declare class LoanCredit {
32
32
  totalToPayCents: number;
33
33
  /** CAT decimal (`3.85` = 385%) — lo calcula el simulador de loan-offerings (C3/AS-01). */
34
34
  catAnnual?: number;
35
+ /** Id de la evaluación SCI referenciada al originar (snapshot en LoanSciEvaluation_GT). */
36
+ sciEvaluationId?: string;
35
37
  /** Sesión del wizard que originó — clave de idempotencia del originate (AS-07). */
36
38
  wizardSessionId?: string;
37
39
  /** IMEI del equipo financiado (se fija en el enrolamiento MDM). */
@@ -109,6 +109,12 @@ __decorate([
109
109
  (0, class_validator_1.Min)(0),
110
110
  __metadata("design:type", Number)
111
111
  ], LoanCredit.prototype, "catAnnual", void 0);
112
+ __decorate([
113
+ (0, class_transformer_1.Expose)(),
114
+ (0, class_validator_1.IsOptional)(),
115
+ (0, class_validator_1.IsString)(),
116
+ __metadata("design:type", String)
117
+ ], LoanCredit.prototype, "sciEvaluationId", void 0);
112
118
  __decorate([
113
119
  (0, class_transformer_1.Expose)(),
114
120
  (0, class_validator_1.IsOptional)(),
@@ -17,7 +17,13 @@ export declare class OriginateLoanCreditRequest {
17
17
  termWeeks: number;
18
18
  equipmentPriceCents: number;
19
19
  downPaymentCents: number;
20
- /** SCI del cliente al originar (snapshot de la evaluación del paso 05). */
20
+ /**
21
+ * Id de la evaluación SCI del paso 05 (snapshot inmutable en loan-scoring). Si viene, el
22
+ * motor LEE el snapshot (getSciEvaluation), valida la decisión (REJECTED → 422
23
+ * SCORE_ADVERSE) y persiste score/nivel DESDE el snapshot — ignora los campos sueltos.
24
+ */
25
+ sciEvaluationId?: string;
26
+ /** SCI del cliente al originar (fallback informativo si NO viene sciEvaluationId). */
21
27
  sciAtOrigination?: number;
22
28
  clientLevelAtOrigination?: ClientLevelEnum;
23
29
  /** IMEI del equipo si ya se conoce (también puede fijarse en el paso 09 vía activate-check). */
@@ -63,6 +63,12 @@ __decorate([
63
63
  (0, class_validator_1.Min)(0),
64
64
  __metadata("design:type", Number)
65
65
  ], OriginateLoanCreditRequest.prototype, "downPaymentCents", void 0);
66
+ __decorate([
67
+ (0, class_transformer_1.Expose)(),
68
+ (0, class_validator_1.IsOptional)(),
69
+ (0, class_validator_1.IsString)(),
70
+ __metadata("design:type", String)
71
+ ], OriginateLoanCreditRequest.prototype, "sciEvaluationId", void 0);
66
72
  __decorate([
67
73
  (0, class_transformer_1.Expose)(),
68
74
  (0, class_validator_1.IsOptional)(),
@@ -25,6 +25,7 @@ export interface LoanCreditResponse {
25
25
  imeiEnrolled: boolean;
26
26
  lockVerified: boolean;
27
27
  };
28
+ sciEvaluationId?: string;
28
29
  sciAtOrigination?: number;
29
30
  clientLevelAtOrigination?: ClientLevelEnum;
30
31
  activatedAt?: string;
@@ -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
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.204.0",
3
+ "version": "3.206.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -98,6 +98,12 @@ export class LoanCredit {
98
98
  @Min(0)
99
99
  catAnnual?: number;
100
100
 
101
+ /** Id de la evaluación SCI referenciada al originar (snapshot en LoanSciEvaluation_GT). */
102
+ @Expose()
103
+ @IsOptional()
104
+ @IsString()
105
+ sciEvaluationId?: string;
106
+
101
107
  /** Sesión del wizard que originó — clave de idempotencia del originate (AS-07). */
102
108
  @Expose()
103
109
  @IsOptional()
@@ -53,7 +53,17 @@ export class OriginateLoanCreditRequest {
53
53
  @Min(0)
54
54
  downPaymentCents!: number;
55
55
 
56
- /** SCI del cliente al originar (snapshot de la evaluación del paso 05). */
56
+ /**
57
+ * Id de la evaluación SCI del paso 05 (snapshot inmutable en loan-scoring). Si viene, el
58
+ * motor LEE el snapshot (getSciEvaluation), valida la decisión (REJECTED → 422
59
+ * SCORE_ADVERSE) y persiste score/nivel DESDE el snapshot — ignora los campos sueltos.
60
+ */
61
+ @Expose()
62
+ @IsOptional()
63
+ @IsString()
64
+ sciEvaluationId?: string;
65
+
66
+ /** SCI del cliente al originar (fallback informativo si NO viene sciEvaluationId). */
57
67
  @Expose()
58
68
  @IsOptional()
59
69
  @IsInt()
@@ -26,6 +26,7 @@ export interface LoanCreditResponse {
26
26
  imeiEnrolled: boolean;
27
27
  lockVerified: boolean;
28
28
  };
29
+ sciEvaluationId?: string;
29
30
  sciAtOrigination?: number;
30
31
  clientLevelAtOrigination?: ClientLevelEnum;
31
32
  activatedAt?: string;
@@ -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';