@fiado/type-kit 3.266.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/phoneSales/DeviceVariantImageUploadUrlResponseDto.d.ts +6 -0
- package/bin/phoneSales/SaleResponseDto.d.ts +8 -0
- package/bin/phoneSales/UpdateDeviceVariantRequestDto.d.ts +6 -0
- package/bin/phoneSales/UpdateDeviceVariantRequestDto.js +37 -0
- package/bin/phoneSales/index.d.ts +1 -0
- package/bin/phoneSales/index.js +1 -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/phoneSales/DeviceVariantImageUploadUrlResponseDto.ts +6 -0
- package/src/phoneSales/SaleResponseDto.ts +13 -0
- package/src/phoneSales/UpdateDeviceVariantRequestDto.ts +20 -0
- package/src/phoneSales/index.ts +1 -0
- package/src/retailWizard/dtos/responses/RunSalesReportResponse.ts +26 -0
- package/src/retailWizard/enums/ReportRunStatusEnum.ts +14 -7
- package/src/retailWizard/index.ts +1 -0
|
@@ -2,4 +2,10 @@ export interface DeviceVariantImageUploadUrlResponseDto {
|
|
|
2
2
|
uploadUrl: string;
|
|
3
3
|
imageUrl: string;
|
|
4
4
|
expiresIn: number;
|
|
5
|
+
/**
|
|
6
|
+
* Tamaño máximo permitido para la imagen, en bytes. Fuente de verdad del límite de producto
|
|
7
|
+
* (hoy 5MB, ver MAX_IMAGE_SIZE_BYTES en DeviceVariantImageService del lambda fiado-phone-sales) —
|
|
8
|
+
* antes solo vivía hardcodeado en el front.
|
|
9
|
+
*/
|
|
10
|
+
maxSizeBytes: number;
|
|
5
11
|
}
|
|
@@ -8,4 +8,12 @@ export declare class SaleResponseDto {
|
|
|
8
8
|
trackingCode: string | null;
|
|
9
9
|
providerStatus: string | null;
|
|
10
10
|
status: string;
|
|
11
|
+
/**
|
|
12
|
+
* Modelo de la variante (resuelto server-side por `variantId`, incluyendo variantes con
|
|
13
|
+
* stock=0). `null` si la resolución falló (variante borrada o error de infraestructura) — ver
|
|
14
|
+
* GET /sales (backoffice) en cell-phone-sales-business.
|
|
15
|
+
*/
|
|
16
|
+
variantModel: string | null;
|
|
17
|
+
/** Color de la variante — mismo criterio de resolución/degradación que `variantModel`. */
|
|
18
|
+
variantColor: string | null;
|
|
11
19
|
}
|
|
@@ -0,0 +1,37 @@
|
|
|
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.UpdateDeviceVariantRequestDto = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
class UpdateDeviceVariantRequestDto {
|
|
15
|
+
}
|
|
16
|
+
exports.UpdateDeviceVariantRequestDto = UpdateDeviceVariantRequestDto;
|
|
17
|
+
__decorate([
|
|
18
|
+
(0, class_validator_1.IsOptional)(),
|
|
19
|
+
(0, class_validator_1.IsString)(),
|
|
20
|
+
__metadata("design:type", String)
|
|
21
|
+
], UpdateDeviceVariantRequestDto.prototype, "model", void 0);
|
|
22
|
+
__decorate([
|
|
23
|
+
(0, class_validator_1.IsOptional)(),
|
|
24
|
+
(0, class_validator_1.IsString)(),
|
|
25
|
+
__metadata("design:type", String)
|
|
26
|
+
], UpdateDeviceVariantRequestDto.prototype, "color", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, class_validator_1.IsOptional)(),
|
|
29
|
+
(0, class_validator_1.IsString)(),
|
|
30
|
+
__metadata("design:type", String)
|
|
31
|
+
], UpdateDeviceVariantRequestDto.prototype, "storage", void 0);
|
|
32
|
+
__decorate([
|
|
33
|
+
(0, class_validator_1.IsOptional)(),
|
|
34
|
+
(0, class_validator_1.IsNumber)(),
|
|
35
|
+
(0, class_validator_1.Min)(0),
|
|
36
|
+
__metadata("design:type", Number)
|
|
37
|
+
], UpdateDeviceVariantRequestDto.prototype, "price", void 0);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './DeviceVariantResponseDto';
|
|
2
2
|
export * from './CreateDeviceVariantRequestDto';
|
|
3
|
+
export * from './UpdateDeviceVariantRequestDto';
|
|
3
4
|
export * from './CreateSaleRequestDto';
|
|
4
5
|
export * from './SaleResponseDto';
|
|
5
6
|
export * from './RedeemSaleCodeRequestDto';
|
package/bin/phoneSales/index.js
CHANGED
|
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./DeviceVariantResponseDto"), exports);
|
|
18
18
|
__exportStar(require("./CreateDeviceVariantRequestDto"), exports);
|
|
19
|
+
__exportStar(require("./UpdateDeviceVariantRequestDto"), exports);
|
|
19
20
|
__exportStar(require("./CreateSaleRequestDto"), exports);
|
|
20
21
|
__exportStar(require("./SaleResponseDto"), exports);
|
|
21
22
|
__exportStar(require("./RedeemSaleCodeRequestDto"), exports);
|
|
@@ -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
|
@@ -2,4 +2,10 @@ export interface DeviceVariantImageUploadUrlResponseDto {
|
|
|
2
2
|
uploadUrl: string;
|
|
3
3
|
imageUrl: string;
|
|
4
4
|
expiresIn: number;
|
|
5
|
+
/**
|
|
6
|
+
* Tamaño máximo permitido para la imagen, en bytes. Fuente de verdad del límite de producto
|
|
7
|
+
* (hoy 5MB, ver MAX_IMAGE_SIZE_BYTES en DeviceVariantImageService del lambda fiado-phone-sales) —
|
|
8
|
+
* antes solo vivía hardcodeado en el front.
|
|
9
|
+
*/
|
|
10
|
+
maxSizeBytes: number;
|
|
5
11
|
}
|
|
@@ -8,4 +8,17 @@ export class SaleResponseDto {
|
|
|
8
8
|
trackingCode!: string | null;
|
|
9
9
|
providerStatus!: string | null;
|
|
10
10
|
status!: string;
|
|
11
|
+
/**
|
|
12
|
+
* Modelo de la variante (resuelto server-side por `variantId`, incluyendo variantes con
|
|
13
|
+
* stock=0). `null` si la resolución falló (variante borrada o error de infraestructura) — ver
|
|
14
|
+
* GET /sales (backoffice) en cell-phone-sales-business.
|
|
15
|
+
*/
|
|
16
|
+
variantModel!: string | null;
|
|
17
|
+
/** Color de la variante — mismo criterio de resolución/degradación que `variantModel`. */
|
|
18
|
+
variantColor!: string | null;
|
|
19
|
+
// Nota (v1, 2026-08-03): `buyerDirectorId` (arriba) sigue siendo el ID crudo del comprador a
|
|
20
|
+
// propósito. Se evaluó agregar `buyerName` resuelto server-side (vía servicio de directorios,
|
|
21
|
+
// @fiado/api-invoker IDirectoriesApi) pero requería wiring de infra pendiente
|
|
22
|
+
// (DIRECTORIES_LAMBDA_URL) — el líder de producto confirmó que para v1 alcanza con el ID
|
|
23
|
+
// crudo. Pospuesto a v2.
|
|
11
24
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IsString, IsNumber, IsOptional, Min } from 'class-validator';
|
|
2
|
+
|
|
3
|
+
export class UpdateDeviceVariantRequestDto {
|
|
4
|
+
@IsOptional()
|
|
5
|
+
@IsString()
|
|
6
|
+
model?: string;
|
|
7
|
+
|
|
8
|
+
@IsOptional()
|
|
9
|
+
@IsString()
|
|
10
|
+
color?: string;
|
|
11
|
+
|
|
12
|
+
@IsOptional()
|
|
13
|
+
@IsString()
|
|
14
|
+
storage?: string;
|
|
15
|
+
|
|
16
|
+
@IsOptional()
|
|
17
|
+
@IsNumber()
|
|
18
|
+
@Min(0)
|
|
19
|
+
price?: number;
|
|
20
|
+
}
|
package/src/phoneSales/index.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './DeviceVariantResponseDto';
|
|
2
2
|
export * from './CreateDeviceVariantRequestDto';
|
|
3
|
+
export * from './UpdateDeviceVariantRequestDto';
|
|
3
4
|
export * from './CreateSaleRequestDto';
|
|
4
5
|
export * from './SaleResponseDto';
|
|
5
6
|
export * from './RedeemSaleCodeRequestDto';
|
|
@@ -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';
|