@fiado/type-kit 3.267.0 → 3.268.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/benefitCenter/enums/BenefitFlowEnum.d.ts +11 -0
- package/bin/benefitCenter/enums/BenefitFlowEnum.js +15 -0
- package/bin/loanConfig/enums/ModifiableByRoleEnum.d.ts +11 -0
- package/bin/loanConfig/enums/ModifiableByRoleEnum.js +15 -0
- package/bin/places/dtos/CashInFeeDto.d.ts +17 -0
- package/bin/places/dtos/CashInFeeDto.js +12 -0
- package/bin/platformRbac/dtos/ResendOtpRequest.d.ts +22 -0
- package/bin/platformRbac/dtos/ResendOtpRequest.js +36 -0
- package/bin/platformRbac/dtos/ResendSelfRegisterOtpRequest.d.ts +11 -0
- package/bin/platformRbac/dtos/ResendSelfRegisterOtpRequest.js +36 -0
- package/bin/retailWizard/dtos/responses/RunSalesReportResponse.d.ts +25 -0
- package/bin/retailWizard/dtos/responses/RunSalesReportResponse.js +2 -0
- package/bin/retailWizard/enums/ReportRunStatusEnum.d.ts +14 -7
- package/bin/retailWizard/enums/ReportRunStatusEnum.js +14 -7
- package/bin/retailWizard/index.d.ts +1 -0
- package/bin/retailWizard/index.js +1 -0
- package/package.json +1 -1
- package/src/retailWizard/dtos/responses/RunSalesReportResponse.ts +26 -0
- package/src/retailWizard/enums/ReportRunStatusEnum.ts +14 -7
- package/src/retailWizard/index.ts +1 -0
- package/bin/identity/enums/SelfieSourceEnum.d.ts +0 -10
- package/bin/identity/enums/SelfieSourceEnum.js +0 -14
|
@@ -0,0 +1,11 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
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 = {}));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rol RBAC mínimo que puede modificar un parámetro (RBAC a nivel de parámetro, modelo-datos §8).
|
|
3
|
+
* `retailer_admin` = "Admin VentasLuga" de M6 §8. Valores = identificadores de rol de RBAC F0.
|
|
4
|
+
* TD-004: confirmar mapeo super_admin ↔ platform_super_admin con el naming real de F0.
|
|
5
|
+
* @enum {string}
|
|
6
|
+
*/
|
|
7
|
+
export declare enum ModifiableByRoleEnum {
|
|
8
|
+
SUPER_ADMIN = "super_admin",
|
|
9
|
+
SOFOM_ADMIN = "sofom_admin",
|
|
10
|
+
RETAILER_ADMIN = "retailer_admin"
|
|
11
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModifiableByRoleEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Rol RBAC mínimo que puede modificar un parámetro (RBAC a nivel de parámetro, modelo-datos §8).
|
|
6
|
+
* `retailer_admin` = "Admin VentasLuga" de M6 §8. Valores = identificadores de rol de RBAC F0.
|
|
7
|
+
* TD-004: confirmar mapeo super_admin ↔ platform_super_admin con el naming real de F0.
|
|
8
|
+
* @enum {string}
|
|
9
|
+
*/
|
|
10
|
+
var ModifiableByRoleEnum;
|
|
11
|
+
(function (ModifiableByRoleEnum) {
|
|
12
|
+
ModifiableByRoleEnum["SUPER_ADMIN"] = "super_admin";
|
|
13
|
+
ModifiableByRoleEnum["SOFOM_ADMIN"] = "sofom_admin";
|
|
14
|
+
ModifiableByRoleEnum["RETAILER_ADMIN"] = "retailer_admin";
|
|
15
|
+
})(ModifiableByRoleEnum || (exports.ModifiableByRoleEnum = ModifiableByRoleEnum = {}));
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CurrencyId } from '../../currency/enums/CurrencyId';
|
|
2
|
+
/**
|
|
3
|
+
* Comisión que cobra un punto de cash-in (lo que el lambda MUESTRA, no cobra).
|
|
4
|
+
* - GreenDot (US): representativo por cadena → `fixed` + `cap` (cada tienda cobra hasta el tope).
|
|
5
|
+
* - Passport (MX): por red → `fixed` + `percentage`.
|
|
6
|
+
* Response DTO — sin decoradores de validación.
|
|
7
|
+
*/
|
|
8
|
+
export declare class CashInFeeDto {
|
|
9
|
+
/** Comisión fija, en la moneda del país. */
|
|
10
|
+
fixed?: number;
|
|
11
|
+
/** Porcentaje del monto depositado (0–100). */
|
|
12
|
+
percentage?: number;
|
|
13
|
+
/** Tope máximo de comisión (GreenDot: el asociado cobra hasta este cap). */
|
|
14
|
+
cap?: number;
|
|
15
|
+
/** Moneda del fee: USD (GreenDot) | MXN (Passport). */
|
|
16
|
+
currency: CurrencyId;
|
|
17
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CashInFeeDto = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Comisión que cobra un punto de cash-in (lo que el lambda MUESTRA, no cobra).
|
|
6
|
+
* - GreenDot (US): representativo por cadena → `fixed` + `cap` (cada tienda cobra hasta el tope).
|
|
7
|
+
* - Passport (MX): por red → `fixed` + `percentage`.
|
|
8
|
+
* Response DTO — sin decoradores de validación.
|
|
9
|
+
*/
|
|
10
|
+
class CashInFeeDto {
|
|
11
|
+
}
|
|
12
|
+
exports.CashInFeeDto = CashInFeeDto;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { MfaMethodEnum } from '../enums/MfaMethodEnum';
|
|
2
|
+
/**
|
|
3
|
+
* Body del POST /auth/resend-otp (público, anónimo). DEC-RBAC-054.
|
|
4
|
+
* Reenvía el OTP del login re-disparando el challenge real CUSTOM_AUTH (EMAIL_OTP) para la
|
|
5
|
+
* identidad SIN password. `tenantId` obligatorio (DEC-064 — el picker ya lo resolvió, NO "solo email").
|
|
6
|
+
* El email se normaliza lowercase server-side. Postura anti-enumeración: respuesta 200 genérica
|
|
7
|
+
* siempre, sin filtrar existencia (ver AuthLoginManager.resendChallengeOtp).
|
|
8
|
+
*/
|
|
9
|
+
export declare class ResendOtpRequest {
|
|
10
|
+
email: string;
|
|
11
|
+
tenantId: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Respuesta del resend-otp. `session`/`mfaMethod` frescos del nuevo challenge CUSTOM_AUTH.
|
|
15
|
+
* Plain sin validators (no validamos lo que mandamos al cliente — fiado-validation-and-dtos § 7).
|
|
16
|
+
* Ambos opcionales: en los caminos de rechazo silencioso (anti-enumeración) o ramas sin CUSTOM_AUTH
|
|
17
|
+
* el server responde 200 genérico sin session ni método.
|
|
18
|
+
*/
|
|
19
|
+
export interface ResendOtpResponse {
|
|
20
|
+
session?: string;
|
|
21
|
+
mfaMethod?: MfaMethodEnum;
|
|
22
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
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.ResendOtpRequest = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
/**
|
|
16
|
+
* Body del POST /auth/resend-otp (público, anónimo). DEC-RBAC-054.
|
|
17
|
+
* Reenvía el OTP del login re-disparando el challenge real CUSTOM_AUTH (EMAIL_OTP) para la
|
|
18
|
+
* identidad SIN password. `tenantId` obligatorio (DEC-064 — el picker ya lo resolvió, NO "solo email").
|
|
19
|
+
* El email se normaliza lowercase server-side. Postura anti-enumeración: respuesta 200 genérica
|
|
20
|
+
* siempre, sin filtrar existencia (ver AuthLoginManager.resendChallengeOtp).
|
|
21
|
+
*/
|
|
22
|
+
class ResendOtpRequest {
|
|
23
|
+
}
|
|
24
|
+
exports.ResendOtpRequest = ResendOtpRequest;
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, class_transformer_1.Expose)(),
|
|
27
|
+
(0, class_validator_1.IsEmail)(),
|
|
28
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
29
|
+
__metadata("design:type", String)
|
|
30
|
+
], ResendOtpRequest.prototype, "email", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, class_transformer_1.Expose)(),
|
|
33
|
+
(0, class_validator_1.IsString)(),
|
|
34
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], ResendOtpRequest.prototype, "tenantId", void 0);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Body del POST /self-register/resend-otp (público, anónimo). DEC-RBAC-054.
|
|
3
|
+
* Re-envía el OTP del autoregistro (mecanismo messages-business, NO Cognito) tras validar un
|
|
4
|
+
* `pending` existente. Misma postura anti-enumeración del start. El email se normaliza lowercase
|
|
5
|
+
* server-side. DTO propio por endpoint (NO reusa SelfRegisterStartRequest, que exige roleId/scope/
|
|
6
|
+
* scopeRef, ni SelfRegisterVerifyOtpRequest, que exige otp).
|
|
7
|
+
*/
|
|
8
|
+
export declare class ResendSelfRegisterOtpRequest {
|
|
9
|
+
tenantId: string;
|
|
10
|
+
email: string;
|
|
11
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
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.ResendSelfRegisterOtpRequest = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
/**
|
|
16
|
+
* Body del POST /self-register/resend-otp (público, anónimo). DEC-RBAC-054.
|
|
17
|
+
* Re-envía el OTP del autoregistro (mecanismo messages-business, NO Cognito) tras validar un
|
|
18
|
+
* `pending` existente. Misma postura anti-enumeración del start. El email se normaliza lowercase
|
|
19
|
+
* server-side. DTO propio por endpoint (NO reusa SelfRegisterStartRequest, que exige roleId/scope/
|
|
20
|
+
* scopeRef, ni SelfRegisterVerifyOtpRequest, que exige otp).
|
|
21
|
+
*/
|
|
22
|
+
class ResendSelfRegisterOtpRequest {
|
|
23
|
+
}
|
|
24
|
+
exports.ResendSelfRegisterOtpRequest = ResendSelfRegisterOtpRequest;
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, class_transformer_1.Expose)(),
|
|
27
|
+
(0, class_validator_1.IsString)(),
|
|
28
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
29
|
+
__metadata("design:type", String)
|
|
30
|
+
], ResendSelfRegisterOtpRequest.prototype, "tenantId", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, class_transformer_1.Expose)(),
|
|
33
|
+
(0, class_validator_1.IsEmail)(),
|
|
34
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], ResendSelfRegisterOtpRequest.prototype, "email", void 0);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { SalesReportRun } from '../SalesReportRun';
|
|
2
|
+
/**
|
|
3
|
+
* POST /backoffice/reports/{reportId}/run — el reporte generado, SÍNCRONO.
|
|
4
|
+
* SureKeep Fase 3 — pista Retail.
|
|
5
|
+
*
|
|
6
|
+
* El archivo viaja **en la respuesta**, no por una URL de descarga: el más grande del catálogo son
|
|
7
|
+
* ~96 KB, muy por debajo del límite de 6 MB de payload de Lambda. Eso evita bucket, URL prefirmada y
|
|
8
|
+
* endpoint de descarga para algo que se arma en milisegundos.
|
|
9
|
+
*
|
|
10
|
+
* ⚠️ El contenido puede traer **PII** (nombre del cliente en el reporte por período). Su lectura queda
|
|
11
|
+
* registrada en `PiiAccessLog` igual que las demás pantallas del BO. **Nunca loguear `content`.**
|
|
12
|
+
*
|
|
13
|
+
* Si algún reporte creciera hasta no entrar en la respuesta, el camino es S3 + `downloadUrl` (que ya
|
|
14
|
+
* está en `SalesReportRun`) + estado `QUEUED`: el contrato NO hay que romperlo, ya lo contempla.
|
|
15
|
+
*/
|
|
16
|
+
export interface RunSalesReportResponse {
|
|
17
|
+
/** La corrida registrada en el log, con su estado final y el conteo de filas. */
|
|
18
|
+
run: SalesReportRun;
|
|
19
|
+
/** Nombre sugerido del archivo, ej. `RVL-01_2026-08-03.csv`. */
|
|
20
|
+
filename: string;
|
|
21
|
+
/** Tipo MIME, ej. `text/csv`. */
|
|
22
|
+
contentType: string;
|
|
23
|
+
/** El archivo completo. El front lo baja con un `Blob`. */
|
|
24
|
+
content: string;
|
|
25
|
+
}
|
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Estado de una corrida de reporte.
|
|
3
|
-
* el front poletea el listado. SureKeep Fase 3 — pista Retail.
|
|
2
|
+
* Estado de una corrida de reporte. SureKeep Fase 3 — pista Retail.
|
|
4
3
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* El ciclo real es **`RUNNING → READY | FAILED`, todo dentro de la MISMA llamada**: la generación es
|
|
5
|
+
* SÍNCRONA. Es el mismo patrón del reporte SIC de `credit-worker-business`, que abre la fila en
|
|
6
|
+
* `RUNNING` antes de procesar (`createMetadata`) y la cierra al terminar (`finalizeMetadata`).
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* Es síncrono porque los volúmenes lo permiten: el reporte más grande del catálogo son **320 filas
|
|
9
|
+
* (~96 KB)** — el propio mockup lo declara. Encolarlo sería infraestructura (worker + cola + bucket)
|
|
10
|
+
* para un archivo que se arma en milisegundos.
|
|
11
|
+
*
|
|
12
|
+
* RUNNING - Generándose. La fila se escribe ANTES de procesar, para que una corrida que muera a
|
|
13
|
+
* mitad deje rastro en vez de desaparecer.
|
|
14
|
+
* READY - Terminó bien. `rowCount` trae las filas generadas.
|
|
11
15
|
* FAILED - Falló; `failureReason` explica por qué.
|
|
16
|
+
* QUEUED - **RESERVADO, hoy no se emite.** Existe para poder volver a asíncrono si algún reporte
|
|
17
|
+
* crece de verdad, **sin romper el contrato del front**: la pantalla ya sabe que un estado
|
|
18
|
+
* intermedio es posible. Sacarlo del enum ahora obligaría a versionar el DTO después.
|
|
12
19
|
*/
|
|
13
20
|
export declare enum ReportRunStatusEnum {
|
|
14
21
|
QUEUED = "QUEUED",
|
|
@@ -2,16 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ReportRunStatusEnum = void 0;
|
|
4
4
|
/**
|
|
5
|
-
* Estado de una corrida de reporte.
|
|
6
|
-
* el front poletea el listado. SureKeep Fase 3 — pista Retail.
|
|
5
|
+
* Estado de una corrida de reporte. SureKeep Fase 3 — pista Retail.
|
|
7
6
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* El ciclo real es **`RUNNING → READY | FAILED`, todo dentro de la MISMA llamada**: la generación es
|
|
8
|
+
* SÍNCRONA. Es el mismo patrón del reporte SIC de `credit-worker-business`, que abre la fila en
|
|
9
|
+
* `RUNNING` antes de procesar (`createMetadata`) y la cierra al terminar (`finalizeMetadata`).
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* Es síncrono porque los volúmenes lo permiten: el reporte más grande del catálogo son **320 filas
|
|
12
|
+
* (~96 KB)** — el propio mockup lo declara. Encolarlo sería infraestructura (worker + cola + bucket)
|
|
13
|
+
* para un archivo que se arma en milisegundos.
|
|
14
|
+
*
|
|
15
|
+
* RUNNING - Generándose. La fila se escribe ANTES de procesar, para que una corrida que muera a
|
|
16
|
+
* mitad deje rastro en vez de desaparecer.
|
|
17
|
+
* READY - Terminó bien. `rowCount` trae las filas generadas.
|
|
14
18
|
* FAILED - Falló; `failureReason` explica por qué.
|
|
19
|
+
* QUEUED - **RESERVADO, hoy no se emite.** Existe para poder volver a asíncrono si algún reporte
|
|
20
|
+
* crece de verdad, **sin romper el contrato del front**: la pantalla ya sabe que un estado
|
|
21
|
+
* intermedio es posible. Sacarlo del enum ahora obligaría a versionar el DTO después.
|
|
15
22
|
*/
|
|
16
23
|
var ReportRunStatusEnum;
|
|
17
24
|
(function (ReportRunStatusEnum) {
|
|
@@ -90,6 +90,7 @@ export * from './dtos/requests/BackofficeCancelSaleRequest';
|
|
|
90
90
|
export * from './dtos/responses/BackofficeSalesStatsResponse';
|
|
91
91
|
export * from './dtos/responses/BackofficeSalesKpisResponse';
|
|
92
92
|
export * from './dtos/responses/BackofficeReportsResponse';
|
|
93
|
+
export * from './dtos/responses/RunSalesReportResponse';
|
|
93
94
|
export * from './dtos/RetailCustomerListItem';
|
|
94
95
|
export * from './dtos/responses/BackofficeCustomersResponse';
|
|
95
96
|
export * from './dtos/responses/BackofficeCustomerPurchasesResponse';
|
|
@@ -118,6 +118,7 @@ __exportStar(require("./dtos/requests/BackofficeCancelSaleRequest"), exports);
|
|
|
118
118
|
__exportStar(require("./dtos/responses/BackofficeSalesStatsResponse"), exports);
|
|
119
119
|
__exportStar(require("./dtos/responses/BackofficeSalesKpisResponse"), exports);
|
|
120
120
|
__exportStar(require("./dtos/responses/BackofficeReportsResponse"), exports);
|
|
121
|
+
__exportStar(require("./dtos/responses/RunSalesReportResponse"), exports);
|
|
121
122
|
// A1-A4 · agregados del portal (D17)
|
|
122
123
|
__exportStar(require("./dtos/RetailCustomerListItem"), exports);
|
|
123
124
|
__exportStar(require("./dtos/responses/BackofficeCustomersResponse"), exports);
|
package/package.json
CHANGED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { SalesReportRun } from '../SalesReportRun';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* POST /backoffice/reports/{reportId}/run — el reporte generado, SÍNCRONO.
|
|
5
|
+
* SureKeep Fase 3 — pista Retail.
|
|
6
|
+
*
|
|
7
|
+
* El archivo viaja **en la respuesta**, no por una URL de descarga: el más grande del catálogo son
|
|
8
|
+
* ~96 KB, muy por debajo del límite de 6 MB de payload de Lambda. Eso evita bucket, URL prefirmada y
|
|
9
|
+
* endpoint de descarga para algo que se arma en milisegundos.
|
|
10
|
+
*
|
|
11
|
+
* ⚠️ El contenido puede traer **PII** (nombre del cliente en el reporte por período). Su lectura queda
|
|
12
|
+
* registrada en `PiiAccessLog` igual que las demás pantallas del BO. **Nunca loguear `content`.**
|
|
13
|
+
*
|
|
14
|
+
* Si algún reporte creciera hasta no entrar en la respuesta, el camino es S3 + `downloadUrl` (que ya
|
|
15
|
+
* está en `SalesReportRun`) + estado `QUEUED`: el contrato NO hay que romperlo, ya lo contempla.
|
|
16
|
+
*/
|
|
17
|
+
export interface RunSalesReportResponse {
|
|
18
|
+
/** La corrida registrada en el log, con su estado final y el conteo de filas. */
|
|
19
|
+
run: SalesReportRun;
|
|
20
|
+
/** Nombre sugerido del archivo, ej. `RVL-01_2026-08-03.csv`. */
|
|
21
|
+
filename: string;
|
|
22
|
+
/** Tipo MIME, ej. `text/csv`. */
|
|
23
|
+
contentType: string;
|
|
24
|
+
/** El archivo completo. El front lo baja con un `Blob`. */
|
|
25
|
+
content: string;
|
|
26
|
+
}
|
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Estado de una corrida de reporte.
|
|
3
|
-
* el front poletea el listado. SureKeep Fase 3 — pista Retail.
|
|
2
|
+
* Estado de una corrida de reporte. SureKeep Fase 3 — pista Retail.
|
|
4
3
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* El ciclo real es **`RUNNING → READY | FAILED`, todo dentro de la MISMA llamada**: la generación es
|
|
5
|
+
* SÍNCRONA. Es el mismo patrón del reporte SIC de `credit-worker-business`, que abre la fila en
|
|
6
|
+
* `RUNNING` antes de procesar (`createMetadata`) y la cierra al terminar (`finalizeMetadata`).
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* Es síncrono porque los volúmenes lo permiten: el reporte más grande del catálogo son **320 filas
|
|
9
|
+
* (~96 KB)** — el propio mockup lo declara. Encolarlo sería infraestructura (worker + cola + bucket)
|
|
10
|
+
* para un archivo que se arma en milisegundos.
|
|
11
|
+
*
|
|
12
|
+
* RUNNING - Generándose. La fila se escribe ANTES de procesar, para que una corrida que muera a
|
|
13
|
+
* mitad deje rastro en vez de desaparecer.
|
|
14
|
+
* READY - Terminó bien. `rowCount` trae las filas generadas.
|
|
11
15
|
* FAILED - Falló; `failureReason` explica por qué.
|
|
16
|
+
* QUEUED - **RESERVADO, hoy no se emite.** Existe para poder volver a asíncrono si algún reporte
|
|
17
|
+
* crece de verdad, **sin romper el contrato del front**: la pantalla ya sabe que un estado
|
|
18
|
+
* intermedio es posible. Sacarlo del enum ahora obligaría a versionar el DTO después.
|
|
12
19
|
*/
|
|
13
20
|
export enum ReportRunStatusEnum {
|
|
14
21
|
QUEUED = 'QUEUED',
|
|
@@ -112,6 +112,7 @@ export * from './dtos/requests/BackofficeCancelSaleRequest';
|
|
|
112
112
|
export * from './dtos/responses/BackofficeSalesStatsResponse';
|
|
113
113
|
export * from './dtos/responses/BackofficeSalesKpisResponse';
|
|
114
114
|
export * from './dtos/responses/BackofficeReportsResponse';
|
|
115
|
+
export * from './dtos/responses/RunSalesReportResponse';
|
|
115
116
|
// A1-A4 · agregados del portal (D17)
|
|
116
117
|
export * from './dtos/RetailCustomerListItem';
|
|
117
118
|
export * from './dtos/responses/BackofficeCustomersResponse';
|
|
@@ -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 = {}));
|