@fiado/type-kit 3.229.0 → 3.231.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.
Files changed (26) hide show
  1. package/bin/retailOrg/dtos/validation/RetailUserValidationDto.d.ts +6 -0
  2. package/bin/retailOrg/dtos/validation/StoreValidationDto.d.ts +6 -0
  3. package/bin/retailWizard/dtos/Sale.d.ts +22 -0
  4. package/bin/retailWizard/dtos/requests/CancelSaleRequest.d.ts +14 -0
  5. package/bin/retailWizard/dtos/requests/CancelSaleRequest.js +6 -0
  6. package/package.json +1 -1
  7. package/src/retailOrg/dtos/validation/RetailUserValidationDto.ts +6 -0
  8. package/src/retailOrg/dtos/validation/StoreValidationDto.ts +6 -0
  9. package/src/retailWizard/dtos/Sale.ts +22 -0
  10. package/src/retailWizard/dtos/requests/CancelSaleRequest.ts +19 -1
  11. package/bin/benefitCenter/enums/BenefitFlowEnum.d.ts +0 -11
  12. package/bin/benefitCenter/enums/BenefitFlowEnum.js +0 -15
  13. package/bin/identity/enums/SelfieSourceEnum.d.ts +0 -10
  14. package/bin/identity/enums/SelfieSourceEnum.js +0 -14
  15. package/bin/walletFunding/dtos/CancelFundingReferenceRequest.d.ts +0 -6
  16. package/bin/walletFunding/dtos/CancelFundingReferenceRequest.js +0 -31
  17. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.d.ts +0 -7
  18. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.js +0 -6
  19. package/bin/walletFunding/dtos/CancelFundingRequest.d.ts +0 -11
  20. package/bin/walletFunding/dtos/CancelFundingRequest.js +0 -33
  21. package/bin/walletFunding/dtos/CancelFundingResponse.d.ts +0 -14
  22. package/bin/walletFunding/dtos/CancelFundingResponse.js +0 -12
  23. package/bin/walletFunding/dtos/CancelWalletFundingRequest.d.ts +0 -3
  24. package/bin/walletFunding/dtos/CancelWalletFundingRequest.js +0 -21
  25. package/bin/walletFunding/dtos/CancelWalletFundingResponse.d.ts +0 -7
  26. package/bin/walletFunding/dtos/CancelWalletFundingResponse.js +0 -6
@@ -8,6 +8,12 @@ export interface RetailUserValidationDto {
8
8
  retailUserId: string;
9
9
  cognitoSub: string;
10
10
  retailerId: string;
11
+ /**
12
+ * Nombre de display del usuario retail (DEC-SKF1-021: etiqueta de conveniencia, la identidad real
13
+ * vive en RBAC). `null` si no se capturó. Lo consume el snapshot de venta del wizard para congelar
14
+ * quién vendió, sin tener que resolver el usuario en cada lectura del BO.
15
+ */
16
+ displayName: string | null;
11
17
  homeStoreId: string;
12
18
  employmentType: EmploymentTypeEnum;
13
19
  commissionTier: string;
@@ -7,6 +7,12 @@ export interface StoreValidationDto {
7
7
  storeId: string;
8
8
  retailerId: string;
9
9
  zoneId: string | null;
10
+ /**
11
+ * Nombre de la zona, resuelto por retail-org contra su propia tabla. `null` si la tienda no está
12
+ * acotada a una zona o si la zona ya no existe. Lo consume el snapshot de venta del wizard, que
13
+ * congela el contexto comercial y no puede resolver un `zoneId` de otro dominio.
14
+ */
15
+ zoneName: string | null;
10
16
  code: string;
11
17
  name: string;
12
18
  status: StoreStatusEnum;
@@ -35,6 +35,28 @@ export interface Sale {
35
35
  cancelledAt: string | null;
36
36
  /** Reason OBLIGATORIO en cancelación (AuditTrail) — flujo C. */
37
37
  cancelReason: string | null;
38
+ /**
39
+ * SNAPSHOT de identidad y contexto, congelado al cerrar la venta. NO se refresca: una venta es la
40
+ * fotografía de un hecho, no la caché de un perfil. Si el cliente corrige su nombre, la venta
41
+ * conserva el de ese día — eso es lo que la vuelve auditable.
42
+ * ⚠️ `customerName` y `customerCurp` son PII: esta tabla está en el catálogo PII. Nunca loguear.
43
+ * Ver la decisión 2026-07-28 (persistencia de nombre y CURP en el registro de venta).
44
+ * `null` cuando la resolución falló al cerrar (la venta NUNCA se cae por esto).
45
+ */
46
+ customerName: string | null;
47
+ customerCurp: string | null;
48
+ storeName: string | null;
49
+ zoneName: string | null;
50
+ sellerName: string | null;
51
+ productBrand: string | null;
52
+ productModel: string | null;
53
+ productCapacity: string | null;
54
+ /**
55
+ * Derivado: `[folio, customerName, customerCurp]` en MAYÚSCULAS, para búsqueda insensible a
56
+ * mayúsculas — `contains()` de DynamoDB es case-sensitive. No expone PII nueva: replica la que ya
57
+ * vive en la misma fila.
58
+ */
59
+ searchIndex: string | null;
38
60
  createdBy: string;
39
61
  updatedBy: string;
40
62
  createdAt: number;
@@ -5,4 +5,18 @@
5
5
  */
6
6
  export declare class CancelSaleRequest {
7
7
  reason: string;
8
+ /**
9
+ * Confirmación de que el equipo fue verificado físicamente en tienda antes de cancelar. El BO lo
10
+ * pide como checkbox obligatorio.
11
+ *
12
+ * **OPCIONAL en el DTO, obligatorio en el dominio — y es a propósito.** Marcarlo requerido volvería
13
+ * BREAKING este contrato: un caller que mande solo `reason` recibiría un `400` de validación. Como
14
+ * opcional, ese mismo caller recibe el **412 IMEI_NOT_RETURNABLE** que el manager lanza cuando el
15
+ * valor no es exactamente `true` — que es la respuesta semánticamente correcta ("no confirmaste el
16
+ * equipo") y no un error de forma. Ausente y `false` se tratan igual: fail-closed.
17
+ *
18
+ * `@IsBoolean()` estricto (el `validateRequest` del lambda NO usa `enableImplicitConversion`), así
19
+ * que el string `"false"` se rechaza en vez de colarse como truthy.
20
+ */
21
+ equipmentVerified?: boolean;
8
22
  }
@@ -26,3 +26,9 @@ __decorate([
26
26
  (0, class_validator_1.MaxLength)(200),
27
27
  __metadata("design:type", String)
28
28
  ], CancelSaleRequest.prototype, "reason", void 0);
29
+ __decorate([
30
+ (0, class_transformer_1.Expose)(),
31
+ (0, class_validator_1.IsOptional)(),
32
+ (0, class_validator_1.IsBoolean)(),
33
+ __metadata("design:type", Boolean)
34
+ ], CancelSaleRequest.prototype, "equipmentVerified", void 0);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.229.0",
3
+ "version": "3.231.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -9,6 +9,12 @@ export interface RetailUserValidationDto {
9
9
  retailUserId: string;
10
10
  cognitoSub: string;
11
11
  retailerId: string;
12
+ /**
13
+ * Nombre de display del usuario retail (DEC-SKF1-021: etiqueta de conveniencia, la identidad real
14
+ * vive en RBAC). `null` si no se capturó. Lo consume el snapshot de venta del wizard para congelar
15
+ * quién vendió, sin tener que resolver el usuario en cada lectura del BO.
16
+ */
17
+ displayName: string | null;
12
18
  homeStoreId: string;
13
19
  employmentType: EmploymentTypeEnum;
14
20
  commissionTier: string;
@@ -8,6 +8,12 @@ export interface StoreValidationDto {
8
8
  storeId: string;
9
9
  retailerId: string;
10
10
  zoneId: string | null;
11
+ /**
12
+ * Nombre de la zona, resuelto por retail-org contra su propia tabla. `null` si la tienda no está
13
+ * acotada a una zona o si la zona ya no existe. Lo consume el snapshot de venta del wizard, que
14
+ * congela el contexto comercial y no puede resolver un `zoneId` de otro dominio.
15
+ */
16
+ zoneName: string | null;
11
17
  code: string;
12
18
  name: string;
13
19
  status: StoreStatusEnum;
@@ -36,6 +36,28 @@ export interface Sale {
36
36
  cancelledAt: string | null;
37
37
  /** Reason OBLIGATORIO en cancelación (AuditTrail) — flujo C. */
38
38
  cancelReason: string | null;
39
+ /**
40
+ * SNAPSHOT de identidad y contexto, congelado al cerrar la venta. NO se refresca: una venta es la
41
+ * fotografía de un hecho, no la caché de un perfil. Si el cliente corrige su nombre, la venta
42
+ * conserva el de ese día — eso es lo que la vuelve auditable.
43
+ * ⚠️ `customerName` y `customerCurp` son PII: esta tabla está en el catálogo PII. Nunca loguear.
44
+ * Ver la decisión 2026-07-28 (persistencia de nombre y CURP en el registro de venta).
45
+ * `null` cuando la resolución falló al cerrar (la venta NUNCA se cae por esto).
46
+ */
47
+ customerName: string | null;
48
+ customerCurp: string | null;
49
+ storeName: string | null;
50
+ zoneName: string | null;
51
+ sellerName: string | null;
52
+ productBrand: string | null;
53
+ productModel: string | null;
54
+ productCapacity: string | null;
55
+ /**
56
+ * Derivado: `[folio, customerName, customerCurp]` en MAYÚSCULAS, para búsqueda insensible a
57
+ * mayúsculas — `contains()` de DynamoDB es case-sensitive. No expone PII nueva: replica la que ya
58
+ * vive en la misma fila.
59
+ */
60
+ searchIndex: string | null;
39
61
  createdBy: string;
40
62
  updatedBy: string;
41
63
  createdAt: number;
@@ -1,5 +1,5 @@
1
1
  import { Expose } from 'class-transformer';
2
- import { IsString, MaxLength } from 'class-validator';
2
+ import { IsBoolean, IsOptional, IsString, MaxLength } from 'class-validator';
3
3
 
4
4
  /**
5
5
  * POST /sales/:saleId/cancel — cancela una venta (flujo C, solo BO dentro de ventana param). `reason`
@@ -11,4 +11,22 @@ export class CancelSaleRequest {
11
11
  @IsString()
12
12
  @MaxLength(200)
13
13
  reason!: string;
14
+
15
+ /**
16
+ * Confirmación de que el equipo fue verificado físicamente en tienda antes de cancelar. El BO lo
17
+ * pide como checkbox obligatorio.
18
+ *
19
+ * **OPCIONAL en el DTO, obligatorio en el dominio — y es a propósito.** Marcarlo requerido volvería
20
+ * BREAKING este contrato: un caller que mande solo `reason` recibiría un `400` de validación. Como
21
+ * opcional, ese mismo caller recibe el **412 IMEI_NOT_RETURNABLE** que el manager lanza cuando el
22
+ * valor no es exactamente `true` — que es la respuesta semánticamente correcta ("no confirmaste el
23
+ * equipo") y no un error de forma. Ausente y `false` se tratan igual: fail-closed.
24
+ *
25
+ * `@IsBoolean()` estricto (el `validateRequest` del lambda NO usa `enableImplicitConversion`), así
26
+ * que el string `"false"` se rechaza en vez de colarse como truthy.
27
+ */
28
+ @Expose()
29
+ @IsOptional()
30
+ @IsBoolean()
31
+ equipmentVerified?: boolean;
14
32
  }
@@ -1,11 +0,0 @@
1
- export declare enum BenefitFlowEnum {
2
- TOPUPS = "TOPUPS",
3
- BILL_PAYMENT = "BILL_PAYMENT",
4
- CREDIT = "CREDIT",
5
- INSURANCE = "INSURANCE",
6
- DONATION = "DONATION",
7
- PHARMACY = "PHARMACY",
8
- REMITTANCE = "REMITTANCE",
9
- /** Fondeo de wallet PCF con efectivo via provider externo (Equality/Passport, OpenPay, …) — spec 13. */
10
- WALLET_FUNDING = "WALLET_FUNDING"
11
- }
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BenefitFlowEnum = void 0;
4
- var BenefitFlowEnum;
5
- (function (BenefitFlowEnum) {
6
- BenefitFlowEnum["TOPUPS"] = "TOPUPS";
7
- BenefitFlowEnum["BILL_PAYMENT"] = "BILL_PAYMENT";
8
- BenefitFlowEnum["CREDIT"] = "CREDIT";
9
- BenefitFlowEnum["INSURANCE"] = "INSURANCE";
10
- BenefitFlowEnum["DONATION"] = "DONATION";
11
- BenefitFlowEnum["PHARMACY"] = "PHARMACY";
12
- BenefitFlowEnum["REMITTANCE"] = "REMITTANCE";
13
- /** Fondeo de wallet PCF con efectivo via provider externo (Equality/Passport, OpenPay, …) — spec 13. */
14
- BenefitFlowEnum["WALLET_FUNDING"] = "WALLET_FUNDING";
15
- })(BenefitFlowEnum || (exports.BenefitFlowEnum = BenefitFlowEnum = {}));
@@ -1,10 +0,0 @@
1
- /**
2
- * Con qué criterio se resolvió cuál archivo de S3 es la selfie del usuario.
3
- * Le dice al consumidor qué tan confiable es el match antes de mandarla a un facematch.
4
- */
5
- export declare enum SelfieSourceEnum {
6
- /** Matcheó el verificationId de la verificación vigente en People. */
7
- VERIFICATION = "VERIFICATION",
8
- /** No hubo match por verificación: se tomó el archivo de selfie más reciente del bucket. */
9
- LATEST = "LATEST"
10
- }
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SelfieSourceEnum = void 0;
4
- /**
5
- * Con qué criterio se resolvió cuál archivo de S3 es la selfie del usuario.
6
- * Le dice al consumidor qué tan confiable es el match antes de mandarla a un facematch.
7
- */
8
- var SelfieSourceEnum;
9
- (function (SelfieSourceEnum) {
10
- /** Matcheó el verificationId de la verificación vigente en People. */
11
- SelfieSourceEnum["VERIFICATION"] = "VERIFICATION";
12
- /** No hubo match por verificación: se tomó el archivo de selfie más reciente del bucket. */
13
- SelfieSourceEnum["LATEST"] = "LATEST";
14
- })(SelfieSourceEnum || (exports.SelfieSourceEnum = SelfieSourceEnum = {}));
@@ -1,6 +0,0 @@
1
- export declare class CancelFundingReferenceRequest {
2
- /** Referencia Passport (PK de EqualityFundingReference_GT). */
3
- reference: string;
4
- directoryId: string;
5
- idempotencyKey: string;
6
- }
@@ -1,31 +0,0 @@
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.CancelFundingReferenceRequest = void 0;
13
- const class_validator_1 = require("class-validator");
14
- class CancelFundingReferenceRequest {
15
- }
16
- exports.CancelFundingReferenceRequest = CancelFundingReferenceRequest;
17
- __decorate([
18
- (0, class_validator_1.IsString)(),
19
- (0, class_validator_1.MaxLength)(64),
20
- __metadata("design:type", String)
21
- ], CancelFundingReferenceRequest.prototype, "reference", void 0);
22
- __decorate([
23
- (0, class_validator_1.IsString)(),
24
- (0, class_validator_1.MaxLength)(64),
25
- __metadata("design:type", String)
26
- ], CancelFundingReferenceRequest.prototype, "directoryId", void 0);
27
- __decorate([
28
- (0, class_validator_1.IsString)(),
29
- (0, class_validator_1.MaxLength)(64),
30
- __metadata("design:type", String)
31
- ], CancelFundingReferenceRequest.prototype, "idempotencyKey", void 0);
@@ -1,7 +0,0 @@
1
- import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
2
- import { WalletFundingErrorCodeEnum } from "../enums/WalletFundingErrorCodeEnum";
3
- export declare class CancelFundingReferenceResponse {
4
- reference: string;
5
- status: BenefitPaymentStatusEnum;
6
- errorCode?: WalletFundingErrorCodeEnum;
7
- }
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CancelFundingReferenceResponse = void 0;
4
- class CancelFundingReferenceResponse {
5
- }
6
- exports.CancelFundingReferenceResponse = CancelFundingReferenceResponse;
@@ -1,11 +0,0 @@
1
- /**
2
- * Request del cancel via Centro de Beneficios (spec 13 v2.0).
3
- * `reference` viaja en el path, `directoryId` se resuelve del JWT.
4
- * `providerModuleName` permite al marketplace rutear al publisher correcto
5
- * sin tener que persistir el mapping (el wallet-app sabe el moduleName
6
- * porque vino en la respuesta del authorize).
7
- */
8
- export declare class CancelFundingRequest {
9
- idempotencyKey: string;
10
- providerModuleName: string;
11
- }
@@ -1,33 +0,0 @@
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.CancelFundingRequest = void 0;
13
- const class_validator_1 = require("class-validator");
14
- /**
15
- * Request del cancel via Centro de Beneficios (spec 13 v2.0).
16
- * `reference` viaja en el path, `directoryId` se resuelve del JWT.
17
- * `providerModuleName` permite al marketplace rutear al publisher correcto
18
- * sin tener que persistir el mapping (el wallet-app sabe el moduleName
19
- * porque vino en la respuesta del authorize).
20
- */
21
- class CancelFundingRequest {
22
- }
23
- exports.CancelFundingRequest = CancelFundingRequest;
24
- __decorate([
25
- (0, class_validator_1.IsString)(),
26
- (0, class_validator_1.MaxLength)(64),
27
- __metadata("design:type", String)
28
- ], CancelFundingRequest.prototype, "idempotencyKey", void 0);
29
- __decorate([
30
- (0, class_validator_1.IsString)(),
31
- (0, class_validator_1.MaxLength)(128),
32
- __metadata("design:type", String)
33
- ], CancelFundingRequest.prototype, "providerModuleName", void 0);
@@ -1,14 +0,0 @@
1
- import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
2
- import { WalletFundingErrorCodeEnum } from "../enums/WalletFundingErrorCodeEnum";
3
- /**
4
- * Response del cancel via Centro de Beneficios (spec 13 v2.0).
5
- * `status` reusa `BenefitPaymentStatusEnum` (APPROVED = cancel aceptado;
6
- * REJECTED = no se pudo) para consistencia con `CancelFundingReferenceResponse`
7
- * (marketplace ↔ connector). Idempotente: re-cancelar devuelve APPROVED.
8
- */
9
- export declare class CancelFundingResponse {
10
- reference: string;
11
- status: BenefitPaymentStatusEnum;
12
- errorCode?: WalletFundingErrorCodeEnum;
13
- message?: string;
14
- }
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CancelFundingResponse = void 0;
4
- /**
5
- * Response del cancel via Centro de Beneficios (spec 13 v2.0).
6
- * `status` reusa `BenefitPaymentStatusEnum` (APPROVED = cancel aceptado;
7
- * REJECTED = no se pudo) para consistencia con `CancelFundingReferenceResponse`
8
- * (marketplace ↔ connector). Idempotente: re-cancelar devuelve APPROVED.
9
- */
10
- class CancelFundingResponse {
11
- }
12
- exports.CancelFundingResponse = CancelFundingResponse;
@@ -1,3 +0,0 @@
1
- export declare class CancelWalletFundingRequest {
2
- idempotencyKey: string;
3
- }
@@ -1,21 +0,0 @@
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.CancelWalletFundingRequest = void 0;
13
- const class_validator_1 = require("class-validator");
14
- class CancelWalletFundingRequest {
15
- }
16
- exports.CancelWalletFundingRequest = CancelWalletFundingRequest;
17
- __decorate([
18
- (0, class_validator_1.IsString)(),
19
- (0, class_validator_1.MaxLength)(64),
20
- __metadata("design:type", String)
21
- ], CancelWalletFundingRequest.prototype, "idempotencyKey", void 0);
@@ -1,7 +0,0 @@
1
- import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
2
- import { WalletFundingErrorCodeEnum } from "../enums/WalletFundingErrorCodeEnum";
3
- export declare class CancelWalletFundingResponse {
4
- status: BenefitPaymentStatusEnum;
5
- errorCode?: WalletFundingErrorCodeEnum;
6
- reference?: string;
7
- }
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CancelWalletFundingResponse = void 0;
4
- class CancelWalletFundingResponse {
5
- }
6
- exports.CancelWalletFundingResponse = CancelWalletFundingResponse;