@fiado/type-kit 3.259.0 → 3.261.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 (115) hide show
  1. package/_test_/unit/platformRbac/PasswordPolicyInput.test.ts +58 -0
  2. package/_test_/unit/retailWizard/saleFinancier.test.ts +68 -0
  3. package/bin/helpdesk/dtos/ZendeskInternalAlertRequest.d.ts +18 -0
  4. package/bin/{walletFunding/dtos/CancelFundingReferenceRequest.js → helpdesk/dtos/ZendeskInternalAlertRequest.js} +18 -16
  5. package/bin/helpdesk/enums/InternalAlertChannelEnum.d.ts +7 -0
  6. package/bin/helpdesk/enums/InternalAlertChannelEnum.js +11 -0
  7. package/bin/helpdesk/enums/ZendeskAlertKindEnum.d.ts +7 -0
  8. package/bin/helpdesk/enums/ZendeskAlertKindEnum.js +11 -0
  9. package/bin/helpdesk/index.d.ts +4 -0
  10. package/bin/helpdesk/index.js +5 -0
  11. package/bin/helpdesk/interfaces/IZendeskAlertMessage.d.ts +6 -0
  12. package/bin/helpdesk/interfaces/IZendeskAlertMessage.js +2 -0
  13. package/bin/loanConfig/enums/ModifiableByRoleEnum.d.ts +11 -0
  14. package/bin/loanConfig/enums/ModifiableByRoleEnum.js +15 -0
  15. package/bin/platformRbac/application/Application.d.ts +17 -0
  16. package/bin/platformRbac/dtos/CreateTenantRequest.d.ts +12 -0
  17. package/bin/platformRbac/dtos/CreateTenantRequest.js +8 -0
  18. package/bin/platformRbac/dtos/PasswordPolicyInput.d.ts +30 -0
  19. package/bin/platformRbac/dtos/PasswordPolicyInput.js +72 -0
  20. package/bin/platformRbac/dtos/ResendOtpRequest.d.ts +22 -0
  21. package/bin/platformRbac/dtos/{CompleteMyProfileRequest.js → ResendOtpRequest.js} +14 -12
  22. package/bin/platformRbac/dtos/ResendSelfRegisterOtpRequest.d.ts +11 -0
  23. package/bin/platformRbac/dtos/ResendSelfRegisterOtpRequest.js +36 -0
  24. package/bin/platformRbac/index.d.ts +1 -0
  25. package/bin/platformRbac/index.js +3 -0
  26. package/bin/retailWizard/dtos/SaleException.d.ts +54 -0
  27. package/bin/retailWizard/dtos/SaleException.js +2 -0
  28. package/bin/retailWizard/dtos/SaleExceptionEvent.d.ts +18 -0
  29. package/bin/retailWizard/dtos/SaleExceptionEvent.js +2 -0
  30. package/bin/retailWizard/dtos/SaleExceptionPayload.d.ts +19 -0
  31. package/bin/retailWizard/dtos/SaleExceptionPayload.js +2 -0
  32. package/bin/retailWizard/dtos/SaleLogEntry.d.ts +29 -0
  33. package/bin/retailWizard/dtos/SaleLogEntry.js +2 -0
  34. package/bin/retailWizard/dtos/SalesReportDefinition.d.ts +20 -0
  35. package/bin/retailWizard/dtos/SalesReportDefinition.js +2 -0
  36. package/bin/retailWizard/dtos/SalesReportRun.d.ts +39 -0
  37. package/bin/retailWizard/dtos/SalesReportRun.js +2 -0
  38. package/bin/retailWizard/dtos/requests/BackofficeCancelSaleRequest.d.ts +26 -0
  39. package/bin/retailWizard/dtos/requests/BackofficeCancelSaleRequest.js +48 -0
  40. package/bin/retailWizard/dtos/requests/CreateSaleExceptionRequest.d.ts +28 -0
  41. package/bin/retailWizard/dtos/requests/CreateSaleExceptionRequest.js +96 -0
  42. package/bin/retailWizard/dtos/requests/ResolveSaleExceptionRequest.d.ts +15 -0
  43. package/bin/retailWizard/dtos/requests/ResolveSaleExceptionRequest.js +40 -0
  44. package/bin/retailWizard/dtos/requests/RunSalesReportRequest.d.ts +18 -0
  45. package/bin/retailWizard/dtos/requests/RunSalesReportRequest.js +45 -0
  46. package/bin/retailWizard/dtos/responses/BackofficeReportsResponse.d.ts +14 -0
  47. package/bin/retailWizard/dtos/responses/BackofficeReportsResponse.js +2 -0
  48. package/bin/retailWizard/dtos/responses/BackofficeSalesKpisResponse.d.ts +32 -0
  49. package/bin/retailWizard/dtos/responses/BackofficeSalesKpisResponse.js +2 -0
  50. package/bin/retailWizard/dtos/responses/BackofficeSalesStatsResponse.d.ts +26 -0
  51. package/bin/retailWizard/dtos/responses/BackofficeSalesStatsResponse.js +2 -0
  52. package/bin/retailWizard/enums/ReportFormatEnum.d.ts +5 -0
  53. package/bin/retailWizard/enums/ReportFormatEnum.js +9 -0
  54. package/bin/retailWizard/enums/ReportPeriodicityEnum.d.ts +9 -0
  55. package/bin/retailWizard/enums/ReportPeriodicityEnum.js +13 -0
  56. package/bin/retailWizard/enums/ReportRunStatusEnum.d.ts +18 -0
  57. package/bin/retailWizard/enums/ReportRunStatusEnum.js +22 -0
  58. package/bin/retailWizard/enums/SaleExceptionDecisionEnum.d.ts +10 -0
  59. package/bin/retailWizard/enums/SaleExceptionDecisionEnum.js +14 -0
  60. package/bin/retailWizard/enums/SaleExceptionEventKindEnum.d.ts +17 -0
  61. package/bin/retailWizard/enums/SaleExceptionEventKindEnum.js +21 -0
  62. package/bin/retailWizard/enums/SaleExceptionStatusEnum.d.ts +19 -0
  63. package/bin/retailWizard/enums/SaleExceptionStatusEnum.js +23 -0
  64. package/bin/retailWizard/enums/SaleExceptionTypeEnum.d.ts +19 -0
  65. package/bin/retailWizard/enums/SaleExceptionTypeEnum.js +23 -0
  66. package/bin/retailWizard/enums/SaleFinancierEnum.d.ts +18 -0
  67. package/bin/retailWizard/enums/SaleFinancierEnum.js +22 -0
  68. package/bin/retailWizard/enums/SalesReportIdEnum.d.ts +19 -0
  69. package/bin/retailWizard/enums/SalesReportIdEnum.js +23 -0
  70. package/bin/retailWizard/helpers/saleFinancier.d.ts +21 -0
  71. package/bin/retailWizard/helpers/saleFinancier.js +44 -0
  72. package/bin/retailWizard/index.d.ts +23 -0
  73. package/bin/retailWizard/index.js +29 -0
  74. package/package.json +1 -1
  75. package/src/helpdesk/dtos/ZendeskInternalAlertRequest.ts +31 -0
  76. package/src/helpdesk/enums/InternalAlertChannelEnum.ts +7 -0
  77. package/src/helpdesk/enums/ZendeskAlertKindEnum.ts +7 -0
  78. package/src/helpdesk/index.ts +7 -1
  79. package/src/helpdesk/interfaces/IZendeskAlertMessage.ts +7 -0
  80. package/src/platformRbac/application/Application.ts +17 -0
  81. package/src/platformRbac/dtos/CreateTenantRequest.ts +13 -0
  82. package/src/platformRbac/dtos/PasswordPolicyInput.ts +42 -0
  83. package/src/platformRbac/index.ts +3 -0
  84. package/src/retailWizard/dtos/SaleException.ts +55 -0
  85. package/src/retailWizard/dtos/SaleExceptionEvent.ts +19 -0
  86. package/src/retailWizard/dtos/SaleExceptionPayload.ts +19 -0
  87. package/src/retailWizard/dtos/SaleLogEntry.ts +30 -0
  88. package/src/retailWizard/dtos/SalesReportDefinition.ts +21 -0
  89. package/src/retailWizard/dtos/SalesReportRun.ts +40 -0
  90. package/src/retailWizard/dtos/requests/BackofficeCancelSaleRequest.ts +42 -0
  91. package/src/retailWizard/dtos/requests/CreateSaleExceptionRequest.ts +84 -0
  92. package/src/retailWizard/dtos/requests/ResolveSaleExceptionRequest.ts +25 -0
  93. package/src/retailWizard/dtos/requests/RunSalesReportRequest.ts +31 -0
  94. package/src/retailWizard/dtos/responses/BackofficeReportsResponse.ts +15 -0
  95. package/src/retailWizard/dtos/responses/BackofficeSalesKpisResponse.ts +34 -0
  96. package/src/retailWizard/dtos/responses/BackofficeSalesStatsResponse.ts +26 -0
  97. package/src/retailWizard/enums/ReportFormatEnum.ts +5 -0
  98. package/src/retailWizard/enums/ReportPeriodicityEnum.ts +9 -0
  99. package/src/retailWizard/enums/ReportRunStatusEnum.ts +18 -0
  100. package/src/retailWizard/enums/SaleExceptionDecisionEnum.ts +10 -0
  101. package/src/retailWizard/enums/SaleExceptionEventKindEnum.ts +17 -0
  102. package/src/retailWizard/enums/SaleExceptionStatusEnum.ts +19 -0
  103. package/src/retailWizard/enums/SaleExceptionTypeEnum.ts +19 -0
  104. package/src/retailWizard/enums/SaleFinancierEnum.ts +18 -0
  105. package/src/retailWizard/enums/SalesReportIdEnum.ts +19 -0
  106. package/src/retailWizard/helpers/saleFinancier.ts +48 -0
  107. package/src/retailWizard/index.ts +34 -0
  108. package/bin/platformRbac/dtos/CompleteMyProfileRequest.d.ts +0 -9
  109. package/bin/walletFunding/dtos/CancelFundingReferenceRequest.d.ts +0 -14
  110. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.d.ts +0 -15
  111. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.js +0 -13
  112. package/bin/walletFunding/dtos/CancelWalletFundingRequest.d.ts +0 -3
  113. package/bin/walletFunding/dtos/CancelWalletFundingRequest.js +0 -21
  114. package/bin/walletFunding/dtos/CancelWalletFundingResponse.d.ts +0 -7
  115. package/bin/walletFunding/dtos/CancelWalletFundingResponse.js +0 -6
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Periodicidad de un reporte del Admin VL. Los diarios y semanales corren por cron; los mensuales
3
+ * requieren corrida manual (M6 §5.1). SureKeep Fase 3 — pista Retail.
4
+ */
5
+ export declare enum ReportPeriodicityEnum {
6
+ DAILY = "DAILY",
7
+ WEEKLY = "WEEKLY",
8
+ MONTHLY = "MONTHLY"
9
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReportPeriodicityEnum = void 0;
4
+ /**
5
+ * Periodicidad de un reporte del Admin VL. Los diarios y semanales corren por cron; los mensuales
6
+ * requieren corrida manual (M6 §5.1). SureKeep Fase 3 — pista Retail.
7
+ */
8
+ var ReportPeriodicityEnum;
9
+ (function (ReportPeriodicityEnum) {
10
+ ReportPeriodicityEnum["DAILY"] = "DAILY";
11
+ ReportPeriodicityEnum["WEEKLY"] = "WEEKLY";
12
+ ReportPeriodicityEnum["MONTHLY"] = "MONTHLY";
13
+ })(ReportPeriodicityEnum || (exports.ReportPeriodicityEnum = ReportPeriodicityEnum = {}));
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Estado de una corrida de reporte. La generación es ASÍNCRONA: el `POST .../run` devuelve `QUEUED` y
3
+ * el front poletea el listado. SureKeep Fase 3 — pista Retail.
4
+ *
5
+ * Es async desde el día uno por el límite de 29 s de API Gateway: un reporte de red completa no entra
6
+ * en una respuesta síncrona. Mismo error que ya se corrigió en el cierre de corte de comisiones.
7
+ *
8
+ * QUEUED - Encolada, sin arrancar.
9
+ * RUNNING - Generándose.
10
+ * READY - Lista para descargar (`downloadUrl` presente).
11
+ * FAILED - Falló; `failureReason` explica por qué.
12
+ */
13
+ export declare enum ReportRunStatusEnum {
14
+ QUEUED = "QUEUED",
15
+ RUNNING = "RUNNING",
16
+ READY = "READY",
17
+ FAILED = "FAILED"
18
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReportRunStatusEnum = void 0;
4
+ /**
5
+ * Estado de una corrida de reporte. La generación es ASÍNCRONA: el `POST .../run` devuelve `QUEUED` y
6
+ * el front poletea el listado. SureKeep Fase 3 — pista Retail.
7
+ *
8
+ * Es async desde el día uno por el límite de 29 s de API Gateway: un reporte de red completa no entra
9
+ * en una respuesta síncrona. Mismo error que ya se corrigió en el cierre de corte de comisiones.
10
+ *
11
+ * QUEUED - Encolada, sin arrancar.
12
+ * RUNNING - Generándose.
13
+ * READY - Lista para descargar (`downloadUrl` presente).
14
+ * FAILED - Falló; `failureReason` explica por qué.
15
+ */
16
+ var ReportRunStatusEnum;
17
+ (function (ReportRunStatusEnum) {
18
+ ReportRunStatusEnum["QUEUED"] = "QUEUED";
19
+ ReportRunStatusEnum["RUNNING"] = "RUNNING";
20
+ ReportRunStatusEnum["READY"] = "READY";
21
+ ReportRunStatusEnum["FAILED"] = "FAILED";
22
+ })(ReportRunStatusEnum || (exports.ReportRunStatusEnum = ReportRunStatusEnum = {}));
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Veredicto del Admin VL al resolver una excepción. Es un enum PROPIO y no un subconjunto de
3
+ * `SaleExceptionStatusEnum`: el request expresa una DECISIÓN («apruébala»), no un estado destino, y
4
+ * mezclarlos dejaría al caller mandar `APPLIED` o `NEW` en un endpoint que no los admite.
5
+ * SureKeep Fase 3 — pista Retail.
6
+ */
7
+ export declare enum SaleExceptionDecisionEnum {
8
+ APPROVE = "APPROVE",
9
+ REJECT = "REJECT"
10
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SaleExceptionDecisionEnum = void 0;
4
+ /**
5
+ * Veredicto del Admin VL al resolver una excepción. Es un enum PROPIO y no un subconjunto de
6
+ * `SaleExceptionStatusEnum`: el request expresa una DECISIÓN («apruébala»), no un estado destino, y
7
+ * mezclarlos dejaría al caller mandar `APPLIED` o `NEW` en un endpoint que no los admite.
8
+ * SureKeep Fase 3 — pista Retail.
9
+ */
10
+ var SaleExceptionDecisionEnum;
11
+ (function (SaleExceptionDecisionEnum) {
12
+ SaleExceptionDecisionEnum["APPROVE"] = "APPROVE";
13
+ SaleExceptionDecisionEnum["REJECT"] = "REJECT";
14
+ })(SaleExceptionDecisionEnum || (exports.SaleExceptionDecisionEnum = SaleExceptionDecisionEnum = {}));
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Tipo de entrada del timeline de una excepción (la conversación que la pantalla de Excepciones
3
+ * dibuja bajo la ficha). SureKeep Fase 3 — pista Retail.
4
+ *
5
+ * REQUEST - El alta: quién la levantó y por qué.
6
+ * NOTE - Nota de seguimiento (pide evidencia, deja contexto).
7
+ * APPROVAL - Queda aprobada.
8
+ * REJECTION - Queda rechazada.
9
+ * APPLIED - El cambio ya se aplicó al sistema.
10
+ */
11
+ export declare enum SaleExceptionEventKindEnum {
12
+ REQUEST = "REQUEST",
13
+ NOTE = "NOTE",
14
+ APPROVAL = "APPROVAL",
15
+ REJECTION = "REJECTION",
16
+ APPLIED = "APPLIED"
17
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SaleExceptionEventKindEnum = void 0;
4
+ /**
5
+ * Tipo de entrada del timeline de una excepción (la conversación que la pantalla de Excepciones
6
+ * dibuja bajo la ficha). SureKeep Fase 3 — pista Retail.
7
+ *
8
+ * REQUEST - El alta: quién la levantó y por qué.
9
+ * NOTE - Nota de seguimiento (pide evidencia, deja contexto).
10
+ * APPROVAL - Queda aprobada.
11
+ * REJECTION - Queda rechazada.
12
+ * APPLIED - El cambio ya se aplicó al sistema.
13
+ */
14
+ var SaleExceptionEventKindEnum;
15
+ (function (SaleExceptionEventKindEnum) {
16
+ SaleExceptionEventKindEnum["REQUEST"] = "REQUEST";
17
+ SaleExceptionEventKindEnum["NOTE"] = "NOTE";
18
+ SaleExceptionEventKindEnum["APPROVAL"] = "APPROVAL";
19
+ SaleExceptionEventKindEnum["REJECTION"] = "REJECTION";
20
+ SaleExceptionEventKindEnum["APPLIED"] = "APPLIED";
21
+ })(SaleExceptionEventKindEnum || (exports.SaleExceptionEventKindEnum = SaleExceptionEventKindEnum = {}));
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Estado de una excepción de venta. SureKeep Fase 3 — pista Retail.
3
+ *
4
+ * NEW - Levantada por el vendedor, sin tomar.
5
+ * IN_REVIEW - El Admin VL la está revisando.
6
+ * APPROVED - Aprobada; falta aplicar el cambio a la venta.
7
+ * APPLIED - Aprobada Y aplicada.
8
+ * REJECTED - Rechazada, con resolución obligatoria.
9
+ *
10
+ * ⚠️ El estado NO va en el sort key de `RetailSaleException_GT`: el sk es inmutable en DynamoDB y esto
11
+ * cambia en todo el ciclo. El filtro por estado se hace en memoria (son eventos raros).
12
+ */
13
+ export declare enum SaleExceptionStatusEnum {
14
+ NEW = "NEW",
15
+ IN_REVIEW = "IN_REVIEW",
16
+ APPROVED = "APPROVED",
17
+ APPLIED = "APPLIED",
18
+ REJECTED = "REJECTED"
19
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SaleExceptionStatusEnum = void 0;
4
+ /**
5
+ * Estado de una excepción de venta. SureKeep Fase 3 — pista Retail.
6
+ *
7
+ * NEW - Levantada por el vendedor, sin tomar.
8
+ * IN_REVIEW - El Admin VL la está revisando.
9
+ * APPROVED - Aprobada; falta aplicar el cambio a la venta.
10
+ * APPLIED - Aprobada Y aplicada.
11
+ * REJECTED - Rechazada, con resolución obligatoria.
12
+ *
13
+ * ⚠️ El estado NO va en el sort key de `RetailSaleException_GT`: el sk es inmutable en DynamoDB y esto
14
+ * cambia en todo el ciclo. El filtro por estado se hace en memoria (son eventos raros).
15
+ */
16
+ var SaleExceptionStatusEnum;
17
+ (function (SaleExceptionStatusEnum) {
18
+ SaleExceptionStatusEnum["NEW"] = "NEW";
19
+ SaleExceptionStatusEnum["IN_REVIEW"] = "IN_REVIEW";
20
+ SaleExceptionStatusEnum["APPROVED"] = "APPROVED";
21
+ SaleExceptionStatusEnum["APPLIED"] = "APPLIED";
22
+ SaleExceptionStatusEnum["REJECTED"] = "REJECTED";
23
+ })(SaleExceptionStatusEnum || (exports.SaleExceptionStatusEnum = SaleExceptionStatusEnum = {}));
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Tipo de excepción de venta (bandeja del Admin VL, M6 §5). SureKeep Fase 3 — pista Retail.
3
+ *
4
+ * CAPTURE_FIX - Corrección de captura: el POS registró un modelo/SKU distinto al vendido.
5
+ * LATE_CANCEL - Cancelación fuera de la ventana de 7 días.
6
+ * BACKDATING - Venta física ejecutada antes de su captura; se pide la fecha real.
7
+ * PRICE_OVERRIDE - Descuento o precio fuera de lista, autorizado por el Admin VL.
8
+ * EXTENDED_WARRANTY - Reemplazo de equipo bajo garantía extendida contratada en la venta.
9
+ *
10
+ * ⚠️ NO existe `AUTHORIZATION_CAP` (el `autorizacion_tope` del mockup): su dato es de conciliación,
11
+ * que es cobranza (D1), no retail. La fila del mockup no tiene backend en F3.
12
+ */
13
+ export declare enum SaleExceptionTypeEnum {
14
+ CAPTURE_FIX = "CAPTURE_FIX",
15
+ LATE_CANCEL = "LATE_CANCEL",
16
+ BACKDATING = "BACKDATING",
17
+ PRICE_OVERRIDE = "PRICE_OVERRIDE",
18
+ EXTENDED_WARRANTY = "EXTENDED_WARRANTY"
19
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SaleExceptionTypeEnum = void 0;
4
+ /**
5
+ * Tipo de excepción de venta (bandeja del Admin VL, M6 §5). SureKeep Fase 3 — pista Retail.
6
+ *
7
+ * CAPTURE_FIX - Corrección de captura: el POS registró un modelo/SKU distinto al vendido.
8
+ * LATE_CANCEL - Cancelación fuera de la ventana de 7 días.
9
+ * BACKDATING - Venta física ejecutada antes de su captura; se pide la fecha real.
10
+ * PRICE_OVERRIDE - Descuento o precio fuera de lista, autorizado por el Admin VL.
11
+ * EXTENDED_WARRANTY - Reemplazo de equipo bajo garantía extendida contratada en la venta.
12
+ *
13
+ * ⚠️ NO existe `AUTHORIZATION_CAP` (el `autorizacion_tope` del mockup): su dato es de conciliación,
14
+ * que es cobranza (D1), no retail. La fila del mockup no tiene backend en F3.
15
+ */
16
+ var SaleExceptionTypeEnum;
17
+ (function (SaleExceptionTypeEnum) {
18
+ SaleExceptionTypeEnum["CAPTURE_FIX"] = "CAPTURE_FIX";
19
+ SaleExceptionTypeEnum["LATE_CANCEL"] = "LATE_CANCEL";
20
+ SaleExceptionTypeEnum["BACKDATING"] = "BACKDATING";
21
+ SaleExceptionTypeEnum["PRICE_OVERRIDE"] = "PRICE_OVERRIDE";
22
+ SaleExceptionTypeEnum["EXTENDED_WARRANTY"] = "EXTENDED_WARRANTY";
23
+ })(SaleExceptionTypeEnum || (exports.SaleExceptionTypeEnum = SaleExceptionTypeEnum = {}));
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Financiera de la venta, DERIVADA — no es un campo de `RetailSale_GT`. Sale de `type` +
3
+ * `externalProvider` (ver `helpers/saleFinancier`). Existe porque las pantallas del Admin VL agrupan
4
+ * por financiera y el front, este lambda y el motor de comisiones tienen que derivarla IGUAL.
5
+ * SureKeep Fase 3 — pista Retail.
6
+ *
7
+ * NONE - Venta de contado: no hay financiera.
8
+ * SUREKEEP - Crédito propio de la SOFOM.
9
+ * PAYJOY / CREDIYA / LESPAGO / INNOVA - Derivada a un proveedor externo.
10
+ */
11
+ export declare enum SaleFinancierEnum {
12
+ NONE = "NONE",
13
+ SUREKEEP = "SUREKEEP",
14
+ PAYJOY = "PAYJOY",
15
+ CREDIYA = "CREDIYA",
16
+ LESPAGO = "LESPAGO",
17
+ INNOVA = "INNOVA"
18
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SaleFinancierEnum = void 0;
4
+ /**
5
+ * Financiera de la venta, DERIVADA — no es un campo de `RetailSale_GT`. Sale de `type` +
6
+ * `externalProvider` (ver `helpers/saleFinancier`). Existe porque las pantallas del Admin VL agrupan
7
+ * por financiera y el front, este lambda y el motor de comisiones tienen que derivarla IGUAL.
8
+ * SureKeep Fase 3 — pista Retail.
9
+ *
10
+ * NONE - Venta de contado: no hay financiera.
11
+ * SUREKEEP - Crédito propio de la SOFOM.
12
+ * PAYJOY / CREDIYA / LESPAGO / INNOVA - Derivada a un proveedor externo.
13
+ */
14
+ var SaleFinancierEnum;
15
+ (function (SaleFinancierEnum) {
16
+ SaleFinancierEnum["NONE"] = "NONE";
17
+ SaleFinancierEnum["SUREKEEP"] = "SUREKEEP";
18
+ SaleFinancierEnum["PAYJOY"] = "PAYJOY";
19
+ SaleFinancierEnum["CREDIYA"] = "CREDIYA";
20
+ SaleFinancierEnum["LESPAGO"] = "LESPAGO";
21
+ SaleFinancierEnum["INNOVA"] = "INNOVA";
22
+ })(SaleFinancierEnum || (exports.SaleFinancierEnum = SaleFinancierEnum = {}));
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Catálogo de reportes de ventas del Admin VL (M6 §5.1). Los ids son los del mockup — el front los usa
3
+ * como llave de ruta y de traducción. SureKeep Fase 3 — pista Retail.
4
+ *
5
+ * RVL_01 - Ventas por período (diaria).
6
+ * RVL_02 - Ventas por negocio · tienda (semanal).
7
+ * RVL_03 - Ventas por vendedor (semanal).
8
+ * RVL_04 - Ventas por producto (mensual).
9
+ * RVL_05 - Ventas por financiera (mensual).
10
+ *
11
+ * ⚠️ FUERA de F3: `RVL-06` (cross-border, es M5) y `RVL-07` (conciliación, backend de cobranza).
12
+ */
13
+ export declare enum SalesReportIdEnum {
14
+ RVL_01 = "RVL-01",
15
+ RVL_02 = "RVL-02",
16
+ RVL_03 = "RVL-03",
17
+ RVL_04 = "RVL-04",
18
+ RVL_05 = "RVL-05"
19
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SalesReportIdEnum = void 0;
4
+ /**
5
+ * Catálogo de reportes de ventas del Admin VL (M6 §5.1). Los ids son los del mockup — el front los usa
6
+ * como llave de ruta y de traducción. SureKeep Fase 3 — pista Retail.
7
+ *
8
+ * RVL_01 - Ventas por período (diaria).
9
+ * RVL_02 - Ventas por negocio · tienda (semanal).
10
+ * RVL_03 - Ventas por vendedor (semanal).
11
+ * RVL_04 - Ventas por producto (mensual).
12
+ * RVL_05 - Ventas por financiera (mensual).
13
+ *
14
+ * ⚠️ FUERA de F3: `RVL-06` (cross-border, es M5) y `RVL-07` (conciliación, backend de cobranza).
15
+ */
16
+ var SalesReportIdEnum;
17
+ (function (SalesReportIdEnum) {
18
+ SalesReportIdEnum["RVL_01"] = "RVL-01";
19
+ SalesReportIdEnum["RVL_02"] = "RVL-02";
20
+ SalesReportIdEnum["RVL_03"] = "RVL-03";
21
+ SalesReportIdEnum["RVL_04"] = "RVL-04";
22
+ SalesReportIdEnum["RVL_05"] = "RVL-05";
23
+ })(SalesReportIdEnum || (exports.SalesReportIdEnum = SalesReportIdEnum = {}));
@@ -0,0 +1,21 @@
1
+ import { SaleTypeEnum } from '../enums/SaleTypeEnum';
2
+ import { ExternalProviderEnum } from '../enums/ExternalProviderEnum';
3
+ import { SaleFinancierEnum } from '../enums/SaleFinancierEnum';
4
+ /** Lo mínimo de una venta para derivar su financiera. */
5
+ export interface SaleFinancierSource {
6
+ type: SaleTypeEnum;
7
+ externalProvider: ExternalProviderEnum | null;
8
+ }
9
+ /**
10
+ * Deriva la financiera de una venta. Vive acá —y no en el lambda— porque el Admin VL agrupa por
11
+ * financiera en tres pantallas distintas (Ventas, Reportes, Análisis) y el front tiene que llegar al
12
+ * MISMO número que el backend; dos implementaciones paralelas divergen al primer tipo nuevo.
13
+ *
14
+ * `EXTERNAL_REFERRAL` sin `externalProvider` cae en `NONE` en vez de reventar: hay ventas viejas sin
15
+ * el campo y un contador no es lugar para tirar una excepción.
16
+ */
17
+ export declare function financierOfSale(sale: SaleFinancierSource): SaleFinancierEnum;
18
+ /** ¿La financió SureKeep? (pill «SureKeep» de los contadores del Admin VL). */
19
+ export declare function isSureKeepFinanced(sale: SaleFinancierSource): boolean;
20
+ /** ¿La financió un tercero? (pill «Externas»). Contado NO cuenta: no tiene financiera. */
21
+ export declare function isExternallyFinanced(sale: SaleFinancierSource): boolean;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.financierOfSale = financierOfSale;
4
+ exports.isSureKeepFinanced = isSureKeepFinanced;
5
+ exports.isExternallyFinanced = isExternallyFinanced;
6
+ const SaleTypeEnum_1 = require("../enums/SaleTypeEnum");
7
+ const ExternalProviderEnum_1 = require("../enums/ExternalProviderEnum");
8
+ const SaleFinancierEnum_1 = require("../enums/SaleFinancierEnum");
9
+ /**
10
+ * Mapa explícito proveedor → financiera. Es un `Record` COMPLETO a propósito: agregar un proveedor a
11
+ * `ExternalProviderEnum` sin agregarlo acá es error de compilación, que es exactamente el recordatorio
12
+ * que queremos. Un cast desde el enum de proveedor se vería más corto y perdería esa garantía.
13
+ */
14
+ const FINANCIER_BY_PROVIDER = {
15
+ [ExternalProviderEnum_1.ExternalProviderEnum.PAYJOY]: SaleFinancierEnum_1.SaleFinancierEnum.PAYJOY,
16
+ [ExternalProviderEnum_1.ExternalProviderEnum.CREDIYA]: SaleFinancierEnum_1.SaleFinancierEnum.CREDIYA,
17
+ [ExternalProviderEnum_1.ExternalProviderEnum.LESPAGO]: SaleFinancierEnum_1.SaleFinancierEnum.LESPAGO,
18
+ [ExternalProviderEnum_1.ExternalProviderEnum.INNOVA]: SaleFinancierEnum_1.SaleFinancierEnum.INNOVA,
19
+ };
20
+ /**
21
+ * Deriva la financiera de una venta. Vive acá —y no en el lambda— porque el Admin VL agrupa por
22
+ * financiera en tres pantallas distintas (Ventas, Reportes, Análisis) y el front tiene que llegar al
23
+ * MISMO número que el backend; dos implementaciones paralelas divergen al primer tipo nuevo.
24
+ *
25
+ * `EXTERNAL_REFERRAL` sin `externalProvider` cae en `NONE` en vez de reventar: hay ventas viejas sin
26
+ * el campo y un contador no es lugar para tirar una excepción.
27
+ */
28
+ function financierOfSale(sale) {
29
+ if (sale.type === SaleTypeEnum_1.SaleTypeEnum.CREDIT)
30
+ return SaleFinancierEnum_1.SaleFinancierEnum.SUREKEEP;
31
+ if (sale.type === SaleTypeEnum_1.SaleTypeEnum.EXTERNAL_REFERRAL && sale.externalProvider) {
32
+ return FINANCIER_BY_PROVIDER[sale.externalProvider] ?? SaleFinancierEnum_1.SaleFinancierEnum.NONE;
33
+ }
34
+ return SaleFinancierEnum_1.SaleFinancierEnum.NONE;
35
+ }
36
+ /** ¿La financió SureKeep? (pill «SureKeep» de los contadores del Admin VL). */
37
+ function isSureKeepFinanced(sale) {
38
+ return financierOfSale(sale) === SaleFinancierEnum_1.SaleFinancierEnum.SUREKEEP;
39
+ }
40
+ /** ¿La financió un tercero? (pill «Externas»). Contado NO cuenta: no tiene financiera. */
41
+ function isExternallyFinanced(sale) {
42
+ const financier = financierOfSale(sale);
43
+ return financier !== SaleFinancierEnum_1.SaleFinancierEnum.SUREKEEP && financier !== SaleFinancierEnum_1.SaleFinancierEnum.NONE;
44
+ }
@@ -67,6 +67,29 @@ export * from './dtos/responses/ContractPreviewResponse';
67
67
  export * from './dtos/responses/SignatureSendOtpResponse';
68
68
  export * from './dtos/responses/SignatureSignResponse';
69
69
  export * from './dtos/responses/RegisterDeviceResponse';
70
+ export * from './enums/SaleFinancierEnum';
71
+ export * from './enums/SaleExceptionTypeEnum';
72
+ export * from './enums/SaleExceptionStatusEnum';
73
+ export * from './enums/SaleExceptionEventKindEnum';
74
+ export * from './enums/SaleExceptionDecisionEnum';
75
+ export * from './enums/SalesReportIdEnum';
76
+ export * from './enums/ReportPeriodicityEnum';
77
+ export * from './enums/ReportFormatEnum';
78
+ export * from './enums/ReportRunStatusEnum';
79
+ export * from './helpers/saleFinancier';
80
+ export * from './dtos/SaleLogEntry';
81
+ export * from './dtos/SaleExceptionPayload';
82
+ export * from './dtos/SaleExceptionEvent';
83
+ export * from './dtos/SaleException';
84
+ export * from './dtos/SalesReportDefinition';
85
+ export * from './dtos/SalesReportRun';
86
+ export * from './dtos/requests/CreateSaleExceptionRequest';
87
+ export * from './dtos/requests/ResolveSaleExceptionRequest';
88
+ export * from './dtos/requests/RunSalesReportRequest';
89
+ export * from './dtos/requests/BackofficeCancelSaleRequest';
90
+ export * from './dtos/responses/BackofficeSalesStatsResponse';
91
+ export * from './dtos/responses/BackofficeSalesKpisResponse';
92
+ export * from './dtos/responses/BackofficeReportsResponse';
70
93
  export * from './events/SaleCompletedV1';
71
94
  export * from './events/SaleCancelledV1';
72
95
  export * from './events/SessionExpiredV1';
@@ -89,6 +89,35 @@ __exportStar(require("./dtos/responses/ContractPreviewResponse"), exports);
89
89
  __exportStar(require("./dtos/responses/SignatureSendOtpResponse"), exports);
90
90
  __exportStar(require("./dtos/responses/SignatureSignResponse"), exports);
91
91
  __exportStar(require("./dtos/responses/RegisterDeviceResponse"), exports);
92
+ // ── F3 · Backoffice VentasLuga ────────────────────────────────────────────────
93
+ // Enums
94
+ __exportStar(require("./enums/SaleFinancierEnum"), exports);
95
+ __exportStar(require("./enums/SaleExceptionTypeEnum"), exports);
96
+ __exportStar(require("./enums/SaleExceptionStatusEnum"), exports);
97
+ __exportStar(require("./enums/SaleExceptionEventKindEnum"), exports);
98
+ __exportStar(require("./enums/SaleExceptionDecisionEnum"), exports);
99
+ __exportStar(require("./enums/SalesReportIdEnum"), exports);
100
+ __exportStar(require("./enums/ReportPeriodicityEnum"), exports);
101
+ __exportStar(require("./enums/ReportFormatEnum"), exports);
102
+ __exportStar(require("./enums/ReportRunStatusEnum"), exports);
103
+ // Helpers puros (compartidos con el front y el motor de comisiones)
104
+ __exportStar(require("./helpers/saleFinancier"), exports);
105
+ // DTOs
106
+ __exportStar(require("./dtos/SaleLogEntry"), exports);
107
+ __exportStar(require("./dtos/SaleExceptionPayload"), exports);
108
+ __exportStar(require("./dtos/SaleExceptionEvent"), exports);
109
+ __exportStar(require("./dtos/SaleException"), exports);
110
+ __exportStar(require("./dtos/SalesReportDefinition"), exports);
111
+ __exportStar(require("./dtos/SalesReportRun"), exports);
112
+ // Requests
113
+ __exportStar(require("./dtos/requests/CreateSaleExceptionRequest"), exports);
114
+ __exportStar(require("./dtos/requests/ResolveSaleExceptionRequest"), exports);
115
+ __exportStar(require("./dtos/requests/RunSalesReportRequest"), exports);
116
+ __exportStar(require("./dtos/requests/BackofficeCancelSaleRequest"), exports);
117
+ // Responses
118
+ __exportStar(require("./dtos/responses/BackofficeSalesStatsResponse"), exports);
119
+ __exportStar(require("./dtos/responses/BackofficeSalesKpisResponse"), exports);
120
+ __exportStar(require("./dtos/responses/BackofficeReportsResponse"), exports);
92
121
  // Contratos de eventos (PascalCase + sufijo V1)
93
122
  __exportStar(require("./events/SaleCompletedV1"), exports);
94
123
  __exportStar(require("./events/SaleCancelledV1"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.259.0",
3
+ "version": "3.261.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -0,0 +1,31 @@
1
+ import { IsEnum, IsNotEmpty, IsOptional, IsString } from "class-validator";
2
+ import { InternalAlertChannel } from "../enums/InternalAlertChannelEnum";
3
+
4
+ /**
5
+ * Alerta interna sobre un usuario. Se publica en la cola de alertamiento y zendesk-business
6
+ * la convierte en una nota interna de Zendesk: solo la ven los agentes, el usuario nunca.
7
+ *
8
+ * El asunto del ticket lo genera zendesk-business — es el único campo que el usuario podría
9
+ * llegar a ver, así que no lo escribe el caller.
10
+ */
11
+ export class ZendeskInternalAlertRequest {
12
+
13
+ /** Usuario sobre el que se alerta. */
14
+ @IsNotEmpty()
15
+ @IsString()
16
+ directoryId: string;
17
+
18
+ /** Detalle del problema. Acá va lo sensible: es lo que se escribe como nota interna. */
19
+ @IsNotEmpty()
20
+ @IsString()
21
+ note: string;
22
+
23
+ /** Decide el ruteo en Zendesk (tag, vista y equipo). */
24
+ @IsEnum(InternalAlertChannel)
25
+ channel: InternalAlertChannel;
26
+
27
+ /** Id del evento origen, para rastrear la alerta de vuelta. */
28
+ @IsString()
29
+ @IsOptional()
30
+ reference?: string;
31
+ }
@@ -0,0 +1,7 @@
1
+ /** Canal de una alerta interna: decide el ruteo dentro de Zendesk (tag, vista y equipo). */
2
+ export enum InternalAlertChannel {
3
+ /** Alertas operativas que resuelve el equipo interno sin involucrar al usuario. */
4
+ INTERNAL = 'INTERNAL',
5
+ /** Alertas de cumplimiento regulatorio. El usuario no puede enterarse. */
6
+ COMPLIANCE = 'COMPLIANCE'
7
+ }
@@ -0,0 +1,7 @@
1
+ /** Discrimina qué transporta un mensaje de la cola de alertamiento de Zendesk. */
2
+ export enum ZendeskAlertKind {
3
+ /** Nota interna en un ticket: solo la ven los agentes. */
4
+ INTERNAL_NOTE = 'INTERNAL_NOTE',
5
+ /** Mensaje proactivo al chat del usuario. */
6
+ PROACTIVE_MESSAGE = 'PROACTIVE_MESSAGE'
7
+ }
@@ -1,2 +1,8 @@
1
1
  export * from './dtos/HelpdeskCreateUserRequest';
2
- export * from './dtos/HelpdeskCreateTicketRequest';
2
+ export * from './dtos/HelpdeskCreateTicketRequest';
3
+
4
+ // Alertamiento interno (cola de Zendesk)
5
+ export * from './dtos/ZendeskInternalAlertRequest';
6
+ export * from './enums/InternalAlertChannelEnum';
7
+ export * from './enums/ZendeskAlertKindEnum';
8
+ export * from './interfaces/IZendeskAlertMessage';
@@ -0,0 +1,7 @@
1
+ import { ZendeskAlertKind } from "../enums/ZendeskAlertKindEnum";
2
+
3
+ /** Sobre de un mensaje de la cola de alertamiento: `kind` decide cómo interpretar `payload`. */
4
+ export interface IZendeskAlertMessage<TPayload = unknown> {
5
+ kind: ZendeskAlertKind;
6
+ payload: TPayload;
7
+ }
@@ -55,6 +55,23 @@ export interface ApplicationDefaults {
55
55
  * UsernameAttributes del pool): true ⇒ pool con ['email','phone_number']. Heredado al tenant.
56
56
  */
57
57
  allowSecondary?: boolean;
58
+ /**
59
+ * DEC-RBAC-111: política de contraseña que heredan los tenants creados desde esta aplicación.
60
+ *
61
+ * TOP-LEVEL (hermano de `autoregister`), NO dentro de `securityPolicy`: en la ficha del tenant
62
+ * ese sub-objeto lo reescribe entero el PUT de security-policy, y acá se mantiene la simetría.
63
+ *
64
+ * La herencia ocurre UNA sola vez, en el onboarding: cambiar este default después NO re-escribe
65
+ * la policy de los tenants ya creados, solo aplica a los futuros. Los 5 campos son opcionales;
66
+ * `tempValidityDays` no es per-tenant y por eso no está.
67
+ */
68
+ passwordPolicy?: {
69
+ minLength?: number;
70
+ requireUppercase?: boolean;
71
+ requireLowercase?: boolean;
72
+ requireNumber?: boolean;
73
+ requireSymbol?: boolean;
74
+ };
58
75
  }
59
76
 
60
77
  export interface SeedRole {
@@ -11,6 +11,7 @@ import {
11
11
  ValidateNested,
12
12
  } from 'class-validator';
13
13
  import { TokenValidationMode } from '../enums/TokenValidationMode';
14
+ import { PasswordPolicyInput } from './PasswordPolicyInput';
14
15
 
15
16
  /**
16
17
  * Punto inicial de la política 2FA elegido en el alta del tenant (DEC-RBAC-064). Para el CREATE
@@ -69,4 +70,16 @@ export class CreateTenantRequest {
69
70
  */
70
71
  @Expose() @IsOptional() @ValidateNested() @Type(() => CreateTenantSecurityPolicy)
71
72
  securityPolicy?: CreateTenantSecurityPolicy;
73
+ /**
74
+ * DEC-RBAC-111: política de contraseña del tenant. Opcional: ausente ⇒ hereda
75
+ * `app.defaults.passwordPolicy` y, si tampoco está, la policy global del lambda.
76
+ *
77
+ * TOP-LEVEL a propósito, NO dentro de `securityPolicy`: ese sub-objeto lo reescribe entero el
78
+ * PUT de security-policy desde una lectura cacheada, y se llevaría puesta la passwordPolicy.
79
+ *
80
+ * INMUTABLE después del alta: alimenta la política nativa del user pool de Cognito, y no existe
81
+ * un update de pool (ver TD-RBAC-138 del platform-rbac-business).
82
+ */
83
+ @Expose() @IsOptional() @ValidateNested() @Type(() => PasswordPolicyInput)
84
+ passwordPolicy?: PasswordPolicyInput;
72
85
  }
@@ -0,0 +1,42 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsBoolean, IsInt, IsOptional, Max, Min } from 'class-validator';
3
+
4
+ /**
5
+ * DEC-RBAC-111: política de complejidad de contraseña de un tenant.
6
+ *
7
+ * Los 5 campos son OPCIONALES: un campo ausente cae a la plantilla de la aplicación
8
+ * (`ApplicationDefaults.passwordPolicy`) y, de ahí, a la policy global del lambda.
9
+ *
10
+ * Se usa en dos lugares, siempre TOP-LEVEL (nunca dentro de `securityPolicy`):
11
+ * - `CreateTenantRequest.passwordPolicy` — override al crear el tenant.
12
+ * - `ApplicationDefaults.passwordPolicy` — default de la plantilla que el tenant hereda.
13
+ *
14
+ * `tempValidityDays` NO está acá a propósito: la validez de la contraseña temporal no es per-tenant
15
+ * (es el único campo de la policy que no afecta la fuerza de la contraseña). Sale siempre de la
16
+ * env var global del lambda.
17
+ *
18
+ * El rango 6..99 de `minLength` es el que admite `PasswordPolicy.MinimumLength` de Cognito. Se valida
19
+ * ACÁ para que un valor fuera de rango se rechace en el borde: si llegara a `CreateUserPool`, la
20
+ * `InvalidParameterException` caería con la ficha del tenant ya escrita en estado 'provisioning',
21
+ * o sea dentro de la rama de compensación de la saga de onboarding.
22
+ *
23
+ * OJO: acá NO se valida el PISO (que la policy no sea más débil que la global). Ese piso depende de
24
+ * env vars del lambda; declararlo también en el type-kit sería una segunda fuente de verdad, en otro
25
+ * repo, que driftea en cuanto alguien cambia la env var. Lo decide el lambda.
26
+ */
27
+ export class PasswordPolicyInput {
28
+ @Expose() @IsOptional() @IsInt() @Min(6) @Max(99)
29
+ minLength?: number;
30
+
31
+ @Expose() @IsOptional() @IsBoolean()
32
+ requireUppercase?: boolean;
33
+
34
+ @Expose() @IsOptional() @IsBoolean()
35
+ requireLowercase?: boolean;
36
+
37
+ @Expose() @IsOptional() @IsBoolean()
38
+ requireNumber?: boolean;
39
+
40
+ @Expose() @IsOptional() @IsBoolean()
41
+ requireSymbol?: boolean;
42
+ }
@@ -53,6 +53,9 @@ export * from './dtos/AuthorizeResponse';
53
53
  // decoradores class-validator → export de valor; CreateTenantResponse es interface → type-only.
54
54
  export * from './dtos/CreateTenantRequest';
55
55
  export type { CreateTenantResponse } from './dtos/CreateTenantResponse';
56
+ // DEC-RBAC-111: policy de contraseña per-tenant. Lleva decoradores class-validator → export de valor.
57
+ // La consumen CreateTenantRequest (override del alta) y ApplicationDefaults (default de la plantilla).
58
+ export * from './dtos/PasswordPolicyInput';
56
59
  // DEC-RBAC-058/059 (aditivo) — tenant pending-infra + verify-infra
57
60
  export type { TenantStatus } from './dtos/TenantStatus';
58
61
  export type { VerifyTenantInfraResponse } from './dtos/VerifyTenantInfraResponse';