@fiado/type-kit 3.235.0 → 3.237.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/retailWizard/dtos/requests/ConfirmAddressRequest.d.ts +12 -4
- package/bin/retailWizard/dtos/requests/ConfirmAddressRequest.js +13 -5
- package/bin/retailWizard/dtos/requests/ProfileQuestionsRequest.d.ts +35 -0
- package/bin/retailWizard/dtos/requests/ProfileQuestionsRequest.js +75 -0
- package/bin/retailWizard/index.d.ts +1 -0
- package/bin/retailWizard/index.js +1 -0
- package/package.json +1 -1
- package/src/retailWizard/dtos/requests/ConfirmAddressRequest.ts +13 -8
- package/src/retailWizard/dtos/requests/ProfileQuestionsRequest.ts +63 -0
- package/src/retailWizard/index.ts +1 -0
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RetailAddress } from '../../../retailCustomer/dtos/RetailAddress';
|
|
2
2
|
/**
|
|
3
|
-
* POST /wizard/sessions/:id/address/confirm — el cliente ratifica
|
|
4
|
-
*
|
|
3
|
+
* POST /wizard/sessions/:id/address/confirm — el cliente ratifica el domicilio del INE o captura uno
|
|
4
|
+
* nuevo en el paso 10. Setea `addressConfirmed` y lo persiste en `fiado-address-lambda`.
|
|
5
|
+
* SureKeep Fase 2 — pista Retail.
|
|
6
|
+
*
|
|
7
|
+
* `address` usa el espejo ligero `RetailAddress` (todos los campos opcionales), NO el `AddressBase`
|
|
8
|
+
* canónico: cierra TD-ADDRESSBASE-OCR en este boundary. `AddressBase` exige ~12 campos (`tenantId`,
|
|
9
|
+
* `provider`, `validFrom`, `addressStatus`, `countryId`, `typeOfAddressId`…) que ni el OCR del INE ni
|
|
10
|
+
* el vendedor tienen, así que con `@ValidateNested` un domicilio perfectamente válido se rechazaba en
|
|
11
|
+
* runtime con 400. Es la MISMA deuda que ya había vaciado el domicilio en el upsert-from-kyc, y el
|
|
12
|
+
* único consumidor de este DTO es SureKeep.
|
|
5
13
|
*/
|
|
6
14
|
export declare class ConfirmAddressRequest {
|
|
7
|
-
address?:
|
|
15
|
+
address?: RetailAddress;
|
|
8
16
|
confirmed: boolean;
|
|
9
17
|
}
|
|
@@ -12,10 +12,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.ConfirmAddressRequest = void 0;
|
|
13
13
|
const class_transformer_1 = require("class-transformer");
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
|
-
const
|
|
15
|
+
const RetailAddress_1 = require("../../../retailCustomer/dtos/RetailAddress");
|
|
16
16
|
/**
|
|
17
|
-
* POST /wizard/sessions/:id/address/confirm — el cliente ratifica
|
|
18
|
-
*
|
|
17
|
+
* POST /wizard/sessions/:id/address/confirm — el cliente ratifica el domicilio del INE o captura uno
|
|
18
|
+
* nuevo en el paso 10. Setea `addressConfirmed` y lo persiste en `fiado-address-lambda`.
|
|
19
|
+
* SureKeep Fase 2 — pista Retail.
|
|
20
|
+
*
|
|
21
|
+
* `address` usa el espejo ligero `RetailAddress` (todos los campos opcionales), NO el `AddressBase`
|
|
22
|
+
* canónico: cierra TD-ADDRESSBASE-OCR en este boundary. `AddressBase` exige ~12 campos (`tenantId`,
|
|
23
|
+
* `provider`, `validFrom`, `addressStatus`, `countryId`, `typeOfAddressId`…) que ni el OCR del INE ni
|
|
24
|
+
* el vendedor tienen, así que con `@ValidateNested` un domicilio perfectamente válido se rechazaba en
|
|
25
|
+
* runtime con 400. Es la MISMA deuda que ya había vaciado el domicilio en el upsert-from-kyc, y el
|
|
26
|
+
* único consumidor de este DTO es SureKeep.
|
|
19
27
|
*/
|
|
20
28
|
class ConfirmAddressRequest {
|
|
21
29
|
}
|
|
@@ -23,9 +31,9 @@ exports.ConfirmAddressRequest = ConfirmAddressRequest;
|
|
|
23
31
|
__decorate([
|
|
24
32
|
(0, class_transformer_1.Expose)(),
|
|
25
33
|
(0, class_validator_1.IsOptional)(),
|
|
26
|
-
(0, class_transformer_1.Type)(() =>
|
|
34
|
+
(0, class_transformer_1.Type)(() => RetailAddress_1.RetailAddress),
|
|
27
35
|
(0, class_validator_1.ValidateNested)(),
|
|
28
|
-
__metadata("design:type",
|
|
36
|
+
__metadata("design:type", RetailAddress_1.RetailAddress)
|
|
29
37
|
], ConfirmAddressRequest.prototype, "address", void 0);
|
|
30
38
|
__decorate([
|
|
31
39
|
(0, class_transformer_1.Expose)(),
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* POST /wizard/sessions/:id/profile-questions — el perfil transaccional del cliente (paso 10).
|
|
3
|
+
*
|
|
4
|
+
* Son las preguntas de PLD que el expediente PagoConFiado exige para el Nivel 2: de dónde sale su
|
|
5
|
+
* dinero, cuánto mueve y si actúa por cuenta propia. Viven en People de Fiado, igual que la ocupación
|
|
6
|
+
* (D17); SureKeep no las duplica.
|
|
7
|
+
*
|
|
8
|
+
* Los valores NO son libres: salen del catálogo de Fiado (`AppSelectionData_GT`), el mismo que
|
|
9
|
+
* alimenta los dropdowns de la app del cliente. El wizard los expone al front por su proxy de
|
|
10
|
+
* catálogos — mandar un valor fuera de catálogo deja un expediente que ningún backoffice sabe pintar,
|
|
11
|
+
* y nadie lo rechaza en runtime porque del otro lado son strings libres.
|
|
12
|
+
*
|
|
13
|
+
* ⚠️ `beneficialOwner` debe ser `SELF` para que la cuenta pueda abrir: `fiado-card-business` valida
|
|
14
|
+
* exactamente ese valor. `OTHER` ("viene de otra persona") es una respuesta legítima del cliente que
|
|
15
|
+
* BLOQUEA la apertura — la pantalla tiene que advertirlo antes, no descubrirlo después.
|
|
16
|
+
*
|
|
17
|
+
* SureKeep Fase 2 — pista Retail.
|
|
18
|
+
*/
|
|
19
|
+
/** `dataType=MonthlyIncomeMXN` — ingreso mensual declarado. */
|
|
20
|
+
export declare const MONTHLY_INCOME_VALUES: readonly ["0", "10000", "20000", "50000", "100000", "150000"];
|
|
21
|
+
/** `dataType=ExtraSupport` — apoyo económico extra mensual. */
|
|
22
|
+
export declare const EXTRA_SUPPORT_VALUES: readonly ["0", "2000", "10000", "20000", "50000", "60000"];
|
|
23
|
+
/** `dataType=MoneyUsageCategories` — para qué usará el dinero. */
|
|
24
|
+
export declare const USAGE_MONTHLY_VALUES: readonly ["DAILY_EXPENSES", "SAVINGS", "OTHER"];
|
|
25
|
+
/** `dataType=PurchaseAmountMaxMXN` — monto máximo por operación. */
|
|
26
|
+
export declare const MAXIMUM_TX_VALUES: readonly ["10000", "100000", "300000"];
|
|
27
|
+
/** `dataType=BeneficialOwnerMXN` — de quién es el dinero. */
|
|
28
|
+
export declare const BENEFICIAL_OWNER_VALUES: readonly ["SELF", "OTHER"];
|
|
29
|
+
export declare class ProfileQuestionsRequest {
|
|
30
|
+
monthlyIncome: string;
|
|
31
|
+
monthlyExtraSupport: string;
|
|
32
|
+
usageMonthly: string;
|
|
33
|
+
maximumTx: string;
|
|
34
|
+
beneficialOwner: string;
|
|
35
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ProfileQuestionsRequest = exports.BENEFICIAL_OWNER_VALUES = exports.MAXIMUM_TX_VALUES = exports.USAGE_MONTHLY_VALUES = exports.EXTRA_SUPPORT_VALUES = exports.MONTHLY_INCOME_VALUES = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
/**
|
|
16
|
+
* POST /wizard/sessions/:id/profile-questions — el perfil transaccional del cliente (paso 10).
|
|
17
|
+
*
|
|
18
|
+
* Son las preguntas de PLD que el expediente PagoConFiado exige para el Nivel 2: de dónde sale su
|
|
19
|
+
* dinero, cuánto mueve y si actúa por cuenta propia. Viven en People de Fiado, igual que la ocupación
|
|
20
|
+
* (D17); SureKeep no las duplica.
|
|
21
|
+
*
|
|
22
|
+
* Los valores NO son libres: salen del catálogo de Fiado (`AppSelectionData_GT`), el mismo que
|
|
23
|
+
* alimenta los dropdowns de la app del cliente. El wizard los expone al front por su proxy de
|
|
24
|
+
* catálogos — mandar un valor fuera de catálogo deja un expediente que ningún backoffice sabe pintar,
|
|
25
|
+
* y nadie lo rechaza en runtime porque del otro lado son strings libres.
|
|
26
|
+
*
|
|
27
|
+
* ⚠️ `beneficialOwner` debe ser `SELF` para que la cuenta pueda abrir: `fiado-card-business` valida
|
|
28
|
+
* exactamente ese valor. `OTHER` ("viene de otra persona") es una respuesta legítima del cliente que
|
|
29
|
+
* BLOQUEA la apertura — la pantalla tiene que advertirlo antes, no descubrirlo después.
|
|
30
|
+
*
|
|
31
|
+
* SureKeep Fase 2 — pista Retail.
|
|
32
|
+
*/
|
|
33
|
+
/** `dataType=MonthlyIncomeMXN` — ingreso mensual declarado. */
|
|
34
|
+
exports.MONTHLY_INCOME_VALUES = ['0', '10000', '20000', '50000', '100000', '150000'];
|
|
35
|
+
/** `dataType=ExtraSupport` — apoyo económico extra mensual. */
|
|
36
|
+
exports.EXTRA_SUPPORT_VALUES = ['0', '2000', '10000', '20000', '50000', '60000'];
|
|
37
|
+
/** `dataType=MoneyUsageCategories` — para qué usará el dinero. */
|
|
38
|
+
exports.USAGE_MONTHLY_VALUES = ['DAILY_EXPENSES', 'SAVINGS', 'OTHER'];
|
|
39
|
+
/** `dataType=PurchaseAmountMaxMXN` — monto máximo por operación. */
|
|
40
|
+
exports.MAXIMUM_TX_VALUES = ['10000', '100000', '300000'];
|
|
41
|
+
/** `dataType=BeneficialOwnerMXN` — de quién es el dinero. */
|
|
42
|
+
exports.BENEFICIAL_OWNER_VALUES = ['SELF', 'OTHER'];
|
|
43
|
+
class ProfileQuestionsRequest {
|
|
44
|
+
}
|
|
45
|
+
exports.ProfileQuestionsRequest = ProfileQuestionsRequest;
|
|
46
|
+
__decorate([
|
|
47
|
+
(0, class_transformer_1.Expose)(),
|
|
48
|
+
(0, class_validator_1.IsString)(),
|
|
49
|
+
(0, class_validator_1.IsIn)(exports.MONTHLY_INCOME_VALUES),
|
|
50
|
+
__metadata("design:type", String)
|
|
51
|
+
], ProfileQuestionsRequest.prototype, "monthlyIncome", void 0);
|
|
52
|
+
__decorate([
|
|
53
|
+
(0, class_transformer_1.Expose)(),
|
|
54
|
+
(0, class_validator_1.IsString)(),
|
|
55
|
+
(0, class_validator_1.IsIn)(exports.EXTRA_SUPPORT_VALUES),
|
|
56
|
+
__metadata("design:type", String)
|
|
57
|
+
], ProfileQuestionsRequest.prototype, "monthlyExtraSupport", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
(0, class_transformer_1.Expose)(),
|
|
60
|
+
(0, class_validator_1.IsString)(),
|
|
61
|
+
(0, class_validator_1.IsIn)(exports.USAGE_MONTHLY_VALUES),
|
|
62
|
+
__metadata("design:type", String)
|
|
63
|
+
], ProfileQuestionsRequest.prototype, "usageMonthly", void 0);
|
|
64
|
+
__decorate([
|
|
65
|
+
(0, class_transformer_1.Expose)(),
|
|
66
|
+
(0, class_validator_1.IsString)(),
|
|
67
|
+
(0, class_validator_1.IsIn)(exports.MAXIMUM_TX_VALUES),
|
|
68
|
+
__metadata("design:type", String)
|
|
69
|
+
], ProfileQuestionsRequest.prototype, "maximumTx", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
(0, class_transformer_1.Expose)(),
|
|
72
|
+
(0, class_validator_1.IsString)(),
|
|
73
|
+
(0, class_validator_1.IsIn)(exports.BENEFICIAL_OWNER_VALUES),
|
|
74
|
+
__metadata("design:type", String)
|
|
75
|
+
], ProfileQuestionsRequest.prototype, "beneficialOwner", void 0);
|
|
@@ -45,6 +45,7 @@ export * from './dtos/requests/CompleteSaleRequest';
|
|
|
45
45
|
export * from './dtos/requests/AppInstallLinkRequest';
|
|
46
46
|
export * from './dtos/requests/MarkPcfCardDeliveredRequest';
|
|
47
47
|
export * from './dtos/requests/ConfirmAddressRequest';
|
|
48
|
+
export * from './dtos/requests/ProfileQuestionsRequest';
|
|
48
49
|
export * from './dtos/requests/SaveBeneficiaryRequest';
|
|
49
50
|
export * from './dtos/requests/SignBeneficiaryAnnexRequest';
|
|
50
51
|
export * from './dtos/requests/WelcomeTopupRequest';
|
|
@@ -66,6 +66,7 @@ __exportStar(require("./dtos/requests/CompleteSaleRequest"), exports);
|
|
|
66
66
|
__exportStar(require("./dtos/requests/AppInstallLinkRequest"), exports);
|
|
67
67
|
__exportStar(require("./dtos/requests/MarkPcfCardDeliveredRequest"), exports);
|
|
68
68
|
__exportStar(require("./dtos/requests/ConfirmAddressRequest"), exports);
|
|
69
|
+
__exportStar(require("./dtos/requests/ProfileQuestionsRequest"), exports);
|
|
69
70
|
__exportStar(require("./dtos/requests/SaveBeneficiaryRequest"), exports);
|
|
70
71
|
__exportStar(require("./dtos/requests/SignBeneficiaryAnnexRequest"), exports);
|
|
71
72
|
__exportStar(require("./dtos/requests/WelcomeTopupRequest"), exports);
|
package/package.json
CHANGED
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
import { Expose, Type } from 'class-transformer';
|
|
2
2
|
import { IsBoolean, IsOptional, ValidateNested } from 'class-validator';
|
|
3
|
-
import {
|
|
3
|
+
import { RetailAddress } from '../../../retailCustomer/dtos/RetailAddress';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* POST /wizard/sessions/:id/address/confirm — el cliente ratifica
|
|
7
|
-
*
|
|
6
|
+
* POST /wizard/sessions/:id/address/confirm — el cliente ratifica el domicilio del INE o captura uno
|
|
7
|
+
* nuevo en el paso 10. Setea `addressConfirmed` y lo persiste en `fiado-address-lambda`.
|
|
8
|
+
* SureKeep Fase 2 — pista Retail.
|
|
9
|
+
*
|
|
10
|
+
* `address` usa el espejo ligero `RetailAddress` (todos los campos opcionales), NO el `AddressBase`
|
|
11
|
+
* canónico: cierra TD-ADDRESSBASE-OCR en este boundary. `AddressBase` exige ~12 campos (`tenantId`,
|
|
12
|
+
* `provider`, `validFrom`, `addressStatus`, `countryId`, `typeOfAddressId`…) que ni el OCR del INE ni
|
|
13
|
+
* el vendedor tienen, así que con `@ValidateNested` un domicilio perfectamente válido se rechazaba en
|
|
14
|
+
* runtime con 400. Es la MISMA deuda que ya había vaciado el domicilio en el upsert-from-kyc, y el
|
|
15
|
+
* único consumidor de este DTO es SureKeep.
|
|
8
16
|
*/
|
|
9
17
|
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
18
|
@Expose()
|
|
14
19
|
@IsOptional()
|
|
15
|
-
@Type(() =>
|
|
20
|
+
@Type(() => RetailAddress)
|
|
16
21
|
@ValidateNested()
|
|
17
|
-
address?:
|
|
22
|
+
address?: RetailAddress;
|
|
18
23
|
|
|
19
24
|
@Expose()
|
|
20
25
|
@IsBoolean()
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Expose } from 'class-transformer';
|
|
2
|
+
import { IsIn, IsString } from 'class-validator';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* POST /wizard/sessions/:id/profile-questions — el perfil transaccional del cliente (paso 10).
|
|
6
|
+
*
|
|
7
|
+
* Son las preguntas de PLD que el expediente PagoConFiado exige para el Nivel 2: de dónde sale su
|
|
8
|
+
* dinero, cuánto mueve y si actúa por cuenta propia. Viven en People de Fiado, igual que la ocupación
|
|
9
|
+
* (D17); SureKeep no las duplica.
|
|
10
|
+
*
|
|
11
|
+
* Los valores NO son libres: salen del catálogo de Fiado (`AppSelectionData_GT`), el mismo que
|
|
12
|
+
* alimenta los dropdowns de la app del cliente. El wizard los expone al front por su proxy de
|
|
13
|
+
* catálogos — mandar un valor fuera de catálogo deja un expediente que ningún backoffice sabe pintar,
|
|
14
|
+
* y nadie lo rechaza en runtime porque del otro lado son strings libres.
|
|
15
|
+
*
|
|
16
|
+
* ⚠️ `beneficialOwner` debe ser `SELF` para que la cuenta pueda abrir: `fiado-card-business` valida
|
|
17
|
+
* exactamente ese valor. `OTHER` ("viene de otra persona") es una respuesta legítima del cliente que
|
|
18
|
+
* BLOQUEA la apertura — la pantalla tiene que advertirlo antes, no descubrirlo después.
|
|
19
|
+
*
|
|
20
|
+
* SureKeep Fase 2 — pista Retail.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/** `dataType=MonthlyIncomeMXN` — ingreso mensual declarado. */
|
|
24
|
+
export const MONTHLY_INCOME_VALUES = ['0', '10000', '20000', '50000', '100000', '150000'] as const;
|
|
25
|
+
|
|
26
|
+
/** `dataType=ExtraSupport` — apoyo económico extra mensual. */
|
|
27
|
+
export const EXTRA_SUPPORT_VALUES = ['0', '2000', '10000', '20000', '50000', '60000'] as const;
|
|
28
|
+
|
|
29
|
+
/** `dataType=MoneyUsageCategories` — para qué usará el dinero. */
|
|
30
|
+
export const USAGE_MONTHLY_VALUES = ['DAILY_EXPENSES', 'SAVINGS', 'OTHER'] as const;
|
|
31
|
+
|
|
32
|
+
/** `dataType=PurchaseAmountMaxMXN` — monto máximo por operación. */
|
|
33
|
+
export const MAXIMUM_TX_VALUES = ['10000', '100000', '300000'] as const;
|
|
34
|
+
|
|
35
|
+
/** `dataType=BeneficialOwnerMXN` — de quién es el dinero. */
|
|
36
|
+
export const BENEFICIAL_OWNER_VALUES = ['SELF', 'OTHER'] as const;
|
|
37
|
+
|
|
38
|
+
export class ProfileQuestionsRequest {
|
|
39
|
+
@Expose()
|
|
40
|
+
@IsString()
|
|
41
|
+
@IsIn(MONTHLY_INCOME_VALUES as unknown as string[])
|
|
42
|
+
monthlyIncome!: string;
|
|
43
|
+
|
|
44
|
+
@Expose()
|
|
45
|
+
@IsString()
|
|
46
|
+
@IsIn(EXTRA_SUPPORT_VALUES as unknown as string[])
|
|
47
|
+
monthlyExtraSupport!: string;
|
|
48
|
+
|
|
49
|
+
@Expose()
|
|
50
|
+
@IsString()
|
|
51
|
+
@IsIn(USAGE_MONTHLY_VALUES as unknown as string[])
|
|
52
|
+
usageMonthly!: string;
|
|
53
|
+
|
|
54
|
+
@Expose()
|
|
55
|
+
@IsString()
|
|
56
|
+
@IsIn(MAXIMUM_TX_VALUES as unknown as string[])
|
|
57
|
+
maximumTx!: string;
|
|
58
|
+
|
|
59
|
+
@Expose()
|
|
60
|
+
@IsString()
|
|
61
|
+
@IsIn(BENEFICIAL_OWNER_VALUES as unknown as string[])
|
|
62
|
+
beneficialOwner!: string;
|
|
63
|
+
}
|
|
@@ -54,6 +54,7 @@ export * from './dtos/requests/CompleteSaleRequest';
|
|
|
54
54
|
export * from './dtos/requests/AppInstallLinkRequest';
|
|
55
55
|
export * from './dtos/requests/MarkPcfCardDeliveredRequest';
|
|
56
56
|
export * from './dtos/requests/ConfirmAddressRequest';
|
|
57
|
+
export * from './dtos/requests/ProfileQuestionsRequest';
|
|
57
58
|
export * from './dtos/requests/SaveBeneficiaryRequest';
|
|
58
59
|
export * from './dtos/requests/SignBeneficiaryAnnexRequest';
|
|
59
60
|
export * from './dtos/requests/WelcomeTopupRequest';
|