@fiado/type-kit 3.140.0 → 3.142.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 (75) hide show
  1. package/_test_/unit/platformRbac/dtos/CreateTenantRequest.test.ts +6 -5
  2. package/_test_/unit/platformRbac/enums/__snapshots__/permissionBits.test.ts.snap +1 -73
  3. package/_test_/unit/platformRbac/tenantTypes.test.ts +5 -40
  4. package/bin/platformRbac/dtos/CreateTenantRequest.d.ts +5 -4
  5. package/bin/platformRbac/dtos/CreateTenantRequest.js +1 -2
  6. package/bin/platformRbac/dtos/ResendOtpRequest.d.ts +22 -0
  7. package/bin/{walletFunding/dtos/CancelFundingRequest.js → platformRbac/dtos/ResendOtpRequest.js} +16 -13
  8. package/bin/platformRbac/dtos/ResendSelfRegisterOtpRequest.d.ts +11 -0
  9. package/bin/{cognitoBackofficeConnector/dtos/MfaPoolConfig.js → platformRbac/dtos/ResendSelfRegisterOtpRequest.js} +18 -18
  10. package/bin/platformRbac/enums/Permission.d.ts +0 -77
  11. package/bin/platformRbac/enums/Permission.js +8 -186
  12. package/bin/platformRbac/enums/PermissionCategory.d.ts +0 -7
  13. package/bin/platformRbac/enums/PermissionCategory.js +4 -9
  14. package/bin/platformRbac/tenantTypes.d.ts +18 -13
  15. package/bin/platformRbac/tenantTypes.js +20 -30
  16. package/bin/remittance/dtos/RemittanceAuditLog.d.ts +42 -0
  17. package/bin/remittance/dtos/RemittanceAuditLog.js +62 -0
  18. package/bin/remittance/dtos/RemittanceCohort.d.ts +62 -0
  19. package/bin/remittance/dtos/RemittanceCohort.js +105 -0
  20. package/bin/remittance/dtos/index.d.ts +2 -0
  21. package/bin/remittance/dtos/index.js +2 -0
  22. package/bin/remittance/dtos/internal/RemittanceCohortCount.d.ts +16 -0
  23. package/bin/remittance/dtos/internal/RemittanceCohortCount.js +34 -0
  24. package/bin/remittance/enums/AuditAction.d.ts +12 -0
  25. package/bin/remittance/enums/AuditAction.js +16 -0
  26. package/bin/remittance/enums/AuditEntityType.d.ts +12 -0
  27. package/bin/remittance/enums/AuditEntityType.js +16 -0
  28. package/bin/remittance/enums/CohortField.d.ts +23 -0
  29. package/bin/remittance/enums/CohortField.js +27 -0
  30. package/bin/remittance/enums/CohortOperator.d.ts +11 -0
  31. package/bin/remittance/enums/CohortOperator.js +15 -0
  32. package/bin/remittance/enums/CohortRefresh.d.ts +9 -0
  33. package/bin/remittance/enums/CohortRefresh.js +13 -0
  34. package/bin/remittance/enums/index.d.ts +5 -0
  35. package/bin/remittance/enums/index.js +5 -0
  36. package/bin/remittance/index.d.ts +1 -0
  37. package/bin/remittance/index.js +1 -0
  38. package/package.json +1 -1
  39. package/src/platformRbac/dtos/CreateTenantRequest.ts +5 -4
  40. package/src/platformRbac/enums/Permission.ts +8 -191
  41. package/src/platformRbac/enums/PermissionCategory.ts +4 -9
  42. package/src/platformRbac/tenantTypes.ts +21 -32
  43. package/src/remittance/dtos/RemittanceAuditLog.ts +60 -0
  44. package/src/remittance/dtos/RemittanceCohort.ts +112 -0
  45. package/src/remittance/dtos/index.ts +2 -0
  46. package/src/remittance/dtos/internal/RemittanceCohortCount.ts +24 -0
  47. package/src/remittance/enums/AuditAction.ts +12 -0
  48. package/src/remittance/enums/AuditEntityType.ts +12 -0
  49. package/src/remittance/enums/CohortField.ts +23 -0
  50. package/src/remittance/enums/CohortOperator.ts +11 -0
  51. package/src/remittance/enums/CohortRefresh.ts +9 -0
  52. package/src/remittance/enums/index.ts +5 -0
  53. package/src/remittance/index.ts +1 -0
  54. package/bin/cognitoBackofficeConnector/dtos/MfaPoolConfig.d.ts +0 -7
  55. package/bin/cognitoBackofficeConnector/dtos/PoolConfigResponse.d.ts +0 -20
  56. package/bin/cognitoBackofficeConnector/dtos/PoolConfigResponse.js +0 -11
  57. package/bin/cognitoBackofficeConnector/dtos/PoolsListResponse.d.ts +0 -4
  58. package/bin/cognitoBackofficeConnector/dtos/PoolsListResponse.js +0 -6
  59. package/bin/cognitoBackofficeConnector/validators/MfaTypesRequiresOne.d.ts +0 -17
  60. package/bin/cognitoBackofficeConnector/validators/MfaTypesRequiresOne.js +0 -39
  61. package/bin/rbac/enums/PoolKind.d.ts +0 -16
  62. package/bin/rbac/enums/PoolKind.js +0 -20
  63. package/bin/rbac/index.d.ts +0 -1
  64. package/bin/rbac/index.js +0 -17
  65. package/bin/walletFunding/dtos/CancelFundingReferenceRequest.d.ts +0 -5
  66. package/bin/walletFunding/dtos/CancelFundingReferenceRequest.js +0 -31
  67. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.d.ts +0 -7
  68. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.js +0 -6
  69. package/bin/walletFunding/dtos/CancelFundingRequest.d.ts +0 -11
  70. package/bin/walletFunding/dtos/CancelFundingResponse.d.ts +0 -14
  71. package/bin/walletFunding/dtos/CancelFundingResponse.js +0 -12
  72. package/bin/walletFunding/dtos/CancelWalletFundingRequest.d.ts +0 -3
  73. package/bin/walletFunding/dtos/CancelWalletFundingRequest.js +0 -21
  74. package/bin/walletFunding/dtos/CancelWalletFundingResponse.d.ts +0 -7
  75. package/bin/walletFunding/dtos/CancelWalletFundingResponse.js +0 -6
@@ -36,3 +36,5 @@ export * from "./RemittanceBackofficeTxListResponse";
36
36
  export * from "./RemittanceBackofficeStats";
37
37
  export * from "./RemittanceUserLimits";
38
38
  export * from "./RemittanceKyc";
39
+ export * from "./RemittanceCohort";
40
+ export * from "./RemittanceAuditLog";
@@ -52,3 +52,5 @@ __exportStar(require("./RemittanceBackofficeTxListResponse"), exports);
52
52
  __exportStar(require("./RemittanceBackofficeStats"), exports);
53
53
  __exportStar(require("./RemittanceUserLimits"), exports);
54
54
  __exportStar(require("./RemittanceKyc"), exports);
55
+ __exportStar(require("./RemittanceCohort"), exports);
56
+ __exportStar(require("./RemittanceAuditLog"), exports);
@@ -0,0 +1,16 @@
1
+ import { CohortCondition } from "../RemittanceCohort";
2
+ /**
3
+ * Contrato interno del puente de recálculo de Cohorts (Opción A):
4
+ * remittance-business pide al uniteller-connector (dueño de RemittanceUsers_GT /
5
+ * RemittanceTransactions_GT) cuántos usuarios cumplen las condiciones, vía
6
+ * api-invoker → POST /backoffice/config/cohorts/count (privado).
7
+ */
8
+ export declare class CohortCountRequest {
9
+ conditions: CohortCondition[];
10
+ }
11
+ export declare class CohortCountResponse {
12
+ /** Usuarios que cumplen TODAS las condiciones (AND). */
13
+ count: number;
14
+ /** Universo total de RemittanceUsers (denominador del % — todos, no solo ACTIVE). */
15
+ total: number;
16
+ }
@@ -0,0 +1,34 @@
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.CohortCountResponse = exports.CohortCountRequest = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const RemittanceCohort_1 = require("../RemittanceCohort");
16
+ /**
17
+ * Contrato interno del puente de recálculo de Cohorts (Opción A):
18
+ * remittance-business pide al uniteller-connector (dueño de RemittanceUsers_GT /
19
+ * RemittanceTransactions_GT) cuántos usuarios cumplen las condiciones, vía
20
+ * api-invoker → POST /backoffice/config/cohorts/count (privado).
21
+ */
22
+ class CohortCountRequest {
23
+ }
24
+ exports.CohortCountRequest = CohortCountRequest;
25
+ __decorate([
26
+ (0, class_validator_1.IsArray)(),
27
+ (0, class_validator_1.ArrayMinSize)(1),
28
+ (0, class_validator_1.ValidateNested)({ each: true }),
29
+ (0, class_transformer_1.Type)(() => RemittanceCohort_1.CohortCondition),
30
+ __metadata("design:type", Array)
31
+ ], CohortCountRequest.prototype, "conditions", void 0);
32
+ class CohortCountResponse {
33
+ }
34
+ exports.CohortCountResponse = CohortCountResponse;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Acción registrada en el audit trail del backoffice de remesas (RemittanceAuditLog_GT).
3
+ * SUSPEND/REACTIVATE quedan listos para el flujo futuro de Operación (EP-02/03).
4
+ */
5
+ export declare enum AuditAction {
6
+ CREATE = "CREATE",
7
+ UPDATE = "UPDATE",
8
+ DELETE = "DELETE",
9
+ RECALCULATE = "RECALCULATE",
10
+ SUSPEND = "SUSPEND",
11
+ REACTIVATE = "REACTIVATE"
12
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuditAction = void 0;
4
+ /**
5
+ * Acción registrada en el audit trail del backoffice de remesas (RemittanceAuditLog_GT).
6
+ * SUSPEND/REACTIVATE quedan listos para el flujo futuro de Operación (EP-02/03).
7
+ */
8
+ var AuditAction;
9
+ (function (AuditAction) {
10
+ AuditAction["CREATE"] = "CREATE";
11
+ AuditAction["UPDATE"] = "UPDATE";
12
+ AuditAction["DELETE"] = "DELETE";
13
+ AuditAction["RECALCULATE"] = "RECALCULATE";
14
+ AuditAction["SUSPEND"] = "SUSPEND";
15
+ AuditAction["REACTIVATE"] = "REACTIVATE";
16
+ })(AuditAction || (exports.AuditAction = AuditAction = {}));
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Módulo/dominio afectado por una entrada del audit trail (PK de RemittanceAuditLog_GT).
3
+ */
4
+ export declare enum AuditEntityType {
5
+ COHORT = "COHORT",
6
+ COMMITTEE = "COMMITTEE",
7
+ SEGMENT = "SEGMENT",
8
+ PRICING = "PRICING",
9
+ PROMOTION = "PROMOTION",
10
+ RULE = "RULE",
11
+ USER = "USER"
12
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuditEntityType = void 0;
4
+ /**
5
+ * Módulo/dominio afectado por una entrada del audit trail (PK de RemittanceAuditLog_GT).
6
+ */
7
+ var AuditEntityType;
8
+ (function (AuditEntityType) {
9
+ AuditEntityType["COHORT"] = "COHORT";
10
+ AuditEntityType["COMMITTEE"] = "COMMITTEE";
11
+ AuditEntityType["SEGMENT"] = "SEGMENT";
12
+ AuditEntityType["PRICING"] = "PRICING";
13
+ AuditEntityType["PROMOTION"] = "PROMOTION";
14
+ AuditEntityType["RULE"] = "RULE";
15
+ AuditEntityType["USER"] = "USER";
16
+ })(AuditEntityType || (exports.AuditEntityType = AuditEntityType = {}));
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Campos conductuales del rule builder de Cohorts (Dashboard Ops · Configuración §3).
3
+ * Los valores son los del mockup (snake_case) para que el front no traduzca.
4
+ *
5
+ * MVP soporta 6 campos; TX_POST_REACTIVACION está DIFERIDO (el backend lo rechaza
6
+ * hasta que exista el contador denormalizado `txSinceReactivation` en el connector).
7
+ */
8
+ export declare enum CohortField {
9
+ /** # de tx totales (RemittanceUsers_GT.txCount). */
10
+ TX_TOTALES = "tx_totales",
11
+ /** Días desde el signup (now − (unirSignupDate ?? createdAt)). */
12
+ DIAS_DESDE_SIGNUP = "dias_desde_signup",
13
+ /** Días desde la última tx (now − lastTxAt). */
14
+ DIAS_DESDE_ULTIMA_TX = "dias_desde_ultima_tx",
15
+ /** Días sin actividad — sinónimo de DIAS_DESDE_ULTIMA_TX. */
16
+ DIAS_SIN_TX = "dias_sin_tx",
17
+ /** Monto total histórico en USD (RemittanceUsers_GT.totalSentUSD). */
18
+ MONTO_TOTAL_HISTORICO = "monto_total_historico",
19
+ /** Tx en los últimos 30 días (query nivel-tx por usuario). */
20
+ TX_ULTIMOS_30_DIAS = "tx_ultimos_30_dias",
21
+ /** # de tx tras reactivación — DIFERIDO (no-MVP, el backend lo rechaza). */
22
+ TX_POST_REACTIVACION = "tx_post_reactivacion"
23
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CohortField = void 0;
4
+ /**
5
+ * Campos conductuales del rule builder de Cohorts (Dashboard Ops · Configuración §3).
6
+ * Los valores son los del mockup (snake_case) para que el front no traduzca.
7
+ *
8
+ * MVP soporta 6 campos; TX_POST_REACTIVACION está DIFERIDO (el backend lo rechaza
9
+ * hasta que exista el contador denormalizado `txSinceReactivation` en el connector).
10
+ */
11
+ var CohortField;
12
+ (function (CohortField) {
13
+ /** # de tx totales (RemittanceUsers_GT.txCount). */
14
+ CohortField["TX_TOTALES"] = "tx_totales";
15
+ /** Días desde el signup (now − (unirSignupDate ?? createdAt)). */
16
+ CohortField["DIAS_DESDE_SIGNUP"] = "dias_desde_signup";
17
+ /** Días desde la última tx (now − lastTxAt). */
18
+ CohortField["DIAS_DESDE_ULTIMA_TX"] = "dias_desde_ultima_tx";
19
+ /** Días sin actividad — sinónimo de DIAS_DESDE_ULTIMA_TX. */
20
+ CohortField["DIAS_SIN_TX"] = "dias_sin_tx";
21
+ /** Monto total histórico en USD (RemittanceUsers_GT.totalSentUSD). */
22
+ CohortField["MONTO_TOTAL_HISTORICO"] = "monto_total_historico";
23
+ /** Tx en los últimos 30 días (query nivel-tx por usuario). */
24
+ CohortField["TX_ULTIMOS_30_DIAS"] = "tx_ultimos_30_dias";
25
+ /** # de tx tras reactivación — DIFERIDO (no-MVP, el backend lo rechaza). */
26
+ CohortField["TX_POST_REACTIVACION"] = "tx_post_reactivacion";
27
+ })(CohortField || (exports.CohortField = CohortField = {}));
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Operadores de comparación del rule builder de Cohorts. Los valores son los
3
+ * símbolos que renderiza el mockup; todas las condiciones se evalúan en AND.
4
+ */
5
+ export declare enum CohortOperator {
6
+ LT = "<",
7
+ LTE = "<=",
8
+ EQ = "==",
9
+ GTE = ">=",
10
+ GT = ">"
11
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CohortOperator = void 0;
4
+ /**
5
+ * Operadores de comparación del rule builder de Cohorts. Los valores son los
6
+ * símbolos que renderiza el mockup; todas las condiciones se evalúan en AND.
7
+ */
8
+ var CohortOperator;
9
+ (function (CohortOperator) {
10
+ CohortOperator["LT"] = "<";
11
+ CohortOperator["LTE"] = "<=";
12
+ CohortOperator["EQ"] = "==";
13
+ CohortOperator["GTE"] = ">=";
14
+ CohortOperator["GT"] = ">";
15
+ })(CohortOperator || (exports.CohortOperator = CohortOperator = {}));
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Frecuencia de recálculo de un cohort. Un solo cron horario en remittance-business
3
+ * honra las 3 frecuencias respetando `nextCalculationAt` (+1h / +1d / +7d).
4
+ */
5
+ export declare enum CohortRefresh {
6
+ HORARIO = "horario",
7
+ DIARIO = "diario",
8
+ SEMANAL = "semanal"
9
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CohortRefresh = void 0;
4
+ /**
5
+ * Frecuencia de recálculo de un cohort. Un solo cron horario en remittance-business
6
+ * honra las 3 frecuencias respetando `nextCalculationAt` (+1h / +1d / +7d).
7
+ */
8
+ var CohortRefresh;
9
+ (function (CohortRefresh) {
10
+ CohortRefresh["HORARIO"] = "horario";
11
+ CohortRefresh["DIARIO"] = "diario";
12
+ CohortRefresh["SEMANAL"] = "semanal";
13
+ })(CohortRefresh || (exports.CohortRefresh = CohortRefresh = {}));
@@ -5,3 +5,8 @@ export * from "./RemittanceUserState";
5
5
  export * from "./RemittanceCancelledByEnum";
6
6
  export * from "./RemittanceCancelOutcomeEnum";
7
7
  export * from "./FeeAbsorbedByEnum";
8
+ export * from "./CohortField";
9
+ export * from "./CohortOperator";
10
+ export * from "./CohortRefresh";
11
+ export * from "./AuditAction";
12
+ export * from "./AuditEntityType";
@@ -21,3 +21,8 @@ __exportStar(require("./RemittanceUserState"), exports);
21
21
  __exportStar(require("./RemittanceCancelledByEnum"), exports);
22
22
  __exportStar(require("./RemittanceCancelOutcomeEnum"), exports);
23
23
  __exportStar(require("./FeeAbsorbedByEnum"), exports);
24
+ __exportStar(require("./CohortField"), exports);
25
+ __exportStar(require("./CohortOperator"), exports);
26
+ __exportStar(require("./CohortRefresh"), exports);
27
+ __exportStar(require("./AuditAction"), exports);
28
+ __exportStar(require("./AuditEntityType"), exports);
@@ -2,3 +2,4 @@ export * from "./enums";
2
2
  export * from "./dtos";
3
3
  export * from "./dtos/internal/RemittanceCreditBackRequest";
4
4
  export * from "./dtos/internal/RemittanceCreditBackResponse";
5
+ export * from "./dtos/internal/RemittanceCohortCount";
@@ -20,3 +20,4 @@ __exportStar(require("./enums"), exports);
20
20
  __exportStar(require("./dtos"), exports);
21
21
  __exportStar(require("./dtos/internal/RemittanceCreditBackRequest"), exports);
22
22
  __exportStar(require("./dtos/internal/RemittanceCreditBackResponse"), exports);
23
+ __exportStar(require("./dtos/internal/RemittanceCohortCount"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.140.0",
3
+ "version": "3.142.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -11,7 +11,6 @@ import {
11
11
  ValidateNested,
12
12
  } from 'class-validator';
13
13
  import { TokenValidationMode } from '../enums/TokenValidationMode';
14
- import { TenantType } from '../tenantTypes';
15
14
 
16
15
  /**
17
16
  * Punto inicial de la política 2FA elegido en el alta del tenant (DEC-RBAC-064). Para el CREATE
@@ -55,10 +54,12 @@ export class CreateTenantRequest {
55
54
  // enforce Cognito (política nativa del pool), ya no es per-tenant en el create.
56
55
  @Expose() @IsOptional() @IsEnum(TokenValidationMode) tokenValidationMode?: TokenValidationMode;
57
56
  /**
58
- * Tipo de tenant a crear. Si se omite, el onboarding aplica su default (hoy: retail).
59
- * @deprecated DEC-RBAC-062/063: el alta se hace por `applicationId`; `tenantType` se elimina al consolidar niveles. Migración pendiente; no usar en código nuevo.
57
+ * Tipo de tenant a crear (legacy). El alta se hace por `applicationId`.
58
+ * @deprecated DEC-RBAC-062/063: los tenant-types de dominio fueron purgados (v4.0.0, BREAKING).
59
+ * El alta se hace por `applicationId`; `tenantType` queda como string libre solo por back-compat
60
+ * del shape del body. No usar en código nuevo.
60
61
  */
61
- @Expose() @IsOptional() @IsEnum(TenantType) tenantType?: TenantType;
62
+ @Expose() @IsOptional() @IsString() tenantType?: string;
62
63
  /** DEC-RBAC-034: aplicación (plantilla) de la que se crea el tenant; opcional, fallback a tenantType (back-compat). */
63
64
  @Expose() @IsOptional() @IsString() applicationId?: string;
64
65
  /**
@@ -104,117 +104,11 @@ export enum Permission {
104
104
  TENANT_LEVEL_MANAGE = 'tenant.level.manage',
105
105
 
106
106
  // ====================================================
107
- // RETAILcatálogo + inventario + ventas
108
- // ====================================================
109
- // RETAIL user-management espejo de tenant.user.* a nivel RETAILER. Los KEYS existen para que el
110
- // catálogo + el picker los ofrezcan; sus endpoints/handlers los implementa el agente de retailer
111
- // user-management (rbac TD-RBAC-049). create.lateral gobierna create + assign + update (igual que tenant).
112
- RETAIL_USER_CREATE = 'retail.user.create',
113
- RETAIL_USER_CREATE_LATERAL = 'retail.user.create.lateral',
114
- RETAIL_USER_READ = 'retail.user.read',
115
- RETAIL_USER_UPDATE = 'retail.user.update',
116
- RETAIL_USER_STATUS = 'retail.user.status',
117
- RETAIL_USER_DELETE = 'retail.user.delete',
118
- RETAIL_USER_PASSWORD_RESET = 'retail.user.password.reset',
119
- RETAIL_USER_MFA_RESET = 'retail.user.mfa.reset',
120
- RETAIL_PRODUCT_CREATE = 'retail.product.create',
121
- RETAIL_PRODUCT_LIST = 'retail.product.list',
122
- RETAIL_PRODUCT_VIEW = 'retail.product.view',
123
- RETAIL_PRODUCT_UPDATE = 'retail.product.update',
124
- RETAIL_PRODUCT_DELETE = 'retail.product.delete',
125
- /** @deprecated DEC-RBAC-061: se renombrará a 'retail.product.mdm.config' (naming con puntos). Migración de datos coordinada por backend pendiente; no usar en código nuevo. */
126
- RETAIL_PRODUCT_MDM_CONFIG = 'retail.product.mdm_config',
127
- RETAIL_INVENTORY_LIST = 'retail.inventory.list',
128
- RETAIL_INVENTORY_VIEW = 'retail.inventory.view',
129
- RETAIL_INVENTORY_UPDATE = 'retail.inventory.update',
130
- RETAIL_SALE_CREATE = 'retail.sale.create',
131
- RETAIL_SALE_LIST = 'retail.sale.list',
132
- RETAIL_SALE_CANCEL = 'retail.sale.cancel',
133
- RETAIL_STORE_MANAGE = 'retail.store.manage',
134
- RETAIL_RETAILER_MANAGE = 'retail.retailer.manage',
135
-
136
- // ====================================================
137
- // LEND — créditos + cobranza
138
- // ====================================================
139
- LEND_CREDIT_CREATE = 'lend.credit.create',
140
- LEND_CREDIT_LIST = 'lend.credit.list',
141
- LEND_CREDIT_VIEW = 'lend.credit.view',
142
- LEND_CREDIT_UPDATE = 'lend.credit.update',
143
- LEND_CREDIT_LIQUIDATE = 'lend.credit.liquidate',
144
- LEND_CREDIT_RESTRUCTURE = 'lend.credit.restructure',
145
- LEND_PAYMENT_APPLY = 'lend.payment.apply',
146
- LEND_PAYMENT_LIST = 'lend.payment.list',
147
- LEND_PAYMENT_REVERSE = 'lend.payment.reverse',
148
- LEND_INSTALLMENT_VIEW = 'lend.installment.view',
149
-
150
- // ====================================================
151
- // MDM — device management (subset especializado de LEND)
152
- // ====================================================
153
- MDM_DEVICE_ENROLL = 'mdm.device.enroll',
154
- MDM_DEVICE_RELEASE = 'mdm.device.release',
155
- MDM_DEVICE_ARCHIVE = 'mdm.device.archive',
156
- MDM_DEVICE_DEACTIVATE = 'mdm.device.deactivate',
157
- MDM_DEVICE_LOCK_MANUAL = 'mdm.device.lock.manual',
158
- MDM_DEVICE_UNLOCK_MANUAL = 'mdm.device.unlock.manual',
159
- /** @deprecated DEC-RBAC-061: se renombrará a 'mdm.device.pin.unlock' (naming con puntos). Migración de datos coordinada por backend pendiente; no usar en código nuevo. */
160
- MDM_DEVICE_PIN_UNLOCK = 'mdm.device.pin_unlock',
161
- /** @deprecated DEC-RBAC-061: se renombrará a 'mdm.device.extend.validity' (naming con puntos). Migración de datos coordinada por backend pendiente; no usar en código nuevo. */
162
- MDM_DEVICE_EXTEND_VALIDITY = 'mdm.device.extend_validity',
163
- MDM_DEVICE_NOTIFY = 'mdm.device.notify',
164
- MDM_DEVICE_STATUS_VIEW = 'mdm.device.status.view',
165
- /** @deprecated DEC-RBAC-061: se renombrará a 'mdm.operation.log.view' (naming con puntos). Migración de datos coordinada por backend pendiente; no usar en código nuevo. */
166
- MDM_OPERATION_LOG_VIEW = 'mdm.operation_log.view',
167
- MDM_TEST = 'mdm.test',
168
-
169
- // ====================================================
170
- // PAY — futuro FiadoPay (placeholder, no usado en MVP)
171
- // ====================================================
172
- PAY_TRANSACTION_VIEW = 'pay.transaction.view',
173
-
174
- // ====================================================
175
- // AGENTS — Fiado Agents (tenant type AGENTS, roles scope GROUP).
176
- // Permisos de DOMINIO derivados de los endpoints/pantallas reales del webapp de agents
177
- // (ver fiado-agents-webapp/docs/rbac/RBAC-agents.md §5.2). El aislamiento entre orgs lo da el
178
- // scope GROUP del roleAssignment (scopeRef = Group_GT.id), no un permiso aparte.
179
- // ====================================================
180
- // Gate de ACCESO a la app web de Agents (gobernanza). Sin este permiso el usuario no
181
- // entra a la app. Lo otorgan los 5 roles GROUP de agents (en su propio repo, no acá).
182
- AGENTS_APP_ACCESS = 'agents.app.access',
183
- AGENTS_AGENT_LIST = 'agents.agent.list',
184
- AGENTS_AGENT_CREATE = 'agents.agent.create',
185
- /** @deprecated DEC-RBAC-061: se renombrará a 'agents.agent.create.bulk' (naming con puntos). Migración de datos coordinada por backend pendiente; no usar en código nuevo. */
186
- AGENTS_AGENT_CREATE_BULK = 'agents.agent.create_bulk',
187
- AGENTS_AGENT_MOVE = 'agents.agent.move',
188
- AGENTS_AGENT_DELETE = 'agents.agent.delete',
189
- AGENTS_REFERRAL_VIEW = 'agents.referral.view',
190
- AGENTS_RANKING_VIEW = 'agents.ranking.view',
191
- AGENTS_PRODUCTION_VIEW = 'agents.production.view',
192
- AGENTS_PERSON_SEARCH = 'agents.person.search',
193
- AGENTS_PERSON_VIEW = 'agents.person.view',
194
- AGENTS_PERSON_UPDATE = 'agents.person.update',
195
- AGENTS_PERSON_CREATE = 'agents.person.create',
196
- AGENTS_DOCUMENT_VIEW = 'agents.document.view',
197
- AGENTS_DOCUMENT_UPLOAD = 'agents.document.upload',
198
- AGENTS_ADDRESS_VIEW = 'agents.address.view',
199
- AGENTS_ADDRESS_MANAGE = 'agents.address.manage',
200
- AGENTS_BENEFICIARY_VIEW = 'agents.beneficiary.view',
201
- AGENTS_BENEFICIARY_MANAGE = 'agents.beneficiary.manage',
202
- AGENTS_CARD_ISSUE = 'agents.card.issue',
203
- AGENTS_CHAT_VIEW = 'agents.chat.view',
204
- AGENTS_CHAT_SEND = 'agents.chat.send',
205
- AGENTS_NOTIFICATION_SEND = 'agents.notification.send',
206
- AGENTS_EXPORT_RUN = 'agents.export.run',
207
- AGENTS_CATALOG_VIEW = 'agents.catalog.view',
208
- // Gestión de grupos del tenant AGENTS (scope TENANT — el operador). Espejo de retail.retailer.manage.
209
- AGENTS_GROUP_MANAGE = 'agents.group.manage',
210
- // Gestión de usuarios DENTRO de un grupo (scope GROUP — el group_owner/admin sobre su grupo; el
211
- // operador la cubre por TENANT). Crea usuarios + asigna roles group_* acotado al groupId. DEC-102.
212
- AGENTS_GROUP_USER_MANAGE = 'agents.group.user.manage',
213
-
214
- // ====================================================
215
- // LEVEL{1,2,3} — primitivas RBAC genéricas por nivel (DEC-RBAC-063, ADITIVO)
216
- // Permisos básicos auto-sembrables por nivel genérico (data-driven). Coexisten con los
217
- // legacy retail.*/agents.* (categorías @deprecated), NO los reemplazan en la línea 3.x.
107
+ // LEVEL{1,2,3}primitivas RBAC genéricas por nivel (DEC-RBAC-063)
108
+ // Permisos básicos auto-sembrables por nivel genérico (data-driven). Los permisos de
109
+ // DOMINIO (retail.*/lend.*/mdm.*/pay.*/agents.*) fueron purgados del catálogo (v4.0.0,
110
+ // BREAKING): el type-kit contiene SOLO el vocabulario del sistema RBAC; los permisos de
111
+ // dominio viven como data (catálogo por aplicación), no hardcodeados acá.
218
112
  // ====================================================
219
113
  LEVEL1_USER_CREATE = 'level1.user.create',
220
114
  LEVEL1_USER_READ = 'level1.user.read',
@@ -311,87 +205,10 @@ export const PERMISSION_BIT_ORDER: readonly Permission[] = [
311
205
  Permission.TENANT_SECURITY_POLICY_MANAGE,
312
206
  Permission.TENANT_BRANDING_MANAGE,
313
207
  Permission.TENANT_AUDIT_VIEW,
314
- Permission.RETAIL_USER_CREATE,
315
- Permission.RETAIL_USER_CREATE_LATERAL,
316
- Permission.RETAIL_USER_READ,
317
- Permission.RETAIL_USER_UPDATE,
318
- Permission.RETAIL_USER_STATUS,
319
- Permission.RETAIL_USER_DELETE,
320
- Permission.RETAIL_USER_PASSWORD_RESET,
321
- Permission.RETAIL_USER_MFA_RESET,
322
- Permission.RETAIL_PRODUCT_CREATE,
323
- Permission.RETAIL_PRODUCT_LIST,
324
- Permission.RETAIL_PRODUCT_VIEW,
325
- Permission.RETAIL_PRODUCT_UPDATE,
326
- Permission.RETAIL_PRODUCT_DELETE,
327
- Permission.RETAIL_PRODUCT_MDM_CONFIG,
328
- Permission.RETAIL_INVENTORY_LIST,
329
- Permission.RETAIL_INVENTORY_VIEW,
330
- Permission.RETAIL_INVENTORY_UPDATE,
331
- Permission.RETAIL_SALE_CREATE,
332
- Permission.RETAIL_SALE_LIST,
333
- Permission.RETAIL_SALE_CANCEL,
334
- Permission.RETAIL_STORE_MANAGE,
335
- Permission.RETAIL_RETAILER_MANAGE,
336
- Permission.LEND_CREDIT_CREATE,
337
- Permission.LEND_CREDIT_LIST,
338
- Permission.LEND_CREDIT_VIEW,
339
- Permission.LEND_CREDIT_UPDATE,
340
- Permission.LEND_CREDIT_LIQUIDATE,
341
- Permission.LEND_CREDIT_RESTRUCTURE,
342
- Permission.LEND_PAYMENT_APPLY,
343
- Permission.LEND_PAYMENT_LIST,
344
- Permission.LEND_PAYMENT_REVERSE,
345
- Permission.LEND_INSTALLMENT_VIEW,
346
- Permission.MDM_DEVICE_ENROLL,
347
- Permission.MDM_DEVICE_RELEASE,
348
- Permission.MDM_DEVICE_ARCHIVE,
349
- Permission.MDM_DEVICE_DEACTIVATE,
350
- Permission.MDM_DEVICE_LOCK_MANUAL,
351
- Permission.MDM_DEVICE_UNLOCK_MANUAL,
352
- Permission.MDM_DEVICE_PIN_UNLOCK,
353
- Permission.MDM_DEVICE_EXTEND_VALIDITY,
354
- Permission.MDM_DEVICE_NOTIFY,
355
- Permission.MDM_DEVICE_STATUS_VIEW,
356
- Permission.MDM_OPERATION_LOG_VIEW,
357
- Permission.MDM_TEST,
358
- Permission.PAY_TRANSACTION_VIEW,
359
- // AGENTS (append-only) — Fiado Agents domain perms.
360
- Permission.AGENTS_AGENT_LIST,
361
- Permission.AGENTS_AGENT_CREATE,
362
- Permission.AGENTS_AGENT_CREATE_BULK,
363
- Permission.AGENTS_AGENT_MOVE,
364
- Permission.AGENTS_AGENT_DELETE,
365
- Permission.AGENTS_REFERRAL_VIEW,
366
- Permission.AGENTS_RANKING_VIEW,
367
- Permission.AGENTS_PRODUCTION_VIEW,
368
- Permission.AGENTS_PERSON_SEARCH,
369
- Permission.AGENTS_PERSON_VIEW,
370
- Permission.AGENTS_PERSON_UPDATE,
371
- Permission.AGENTS_DOCUMENT_VIEW,
372
- Permission.AGENTS_DOCUMENT_UPLOAD,
373
- Permission.AGENTS_ADDRESS_VIEW,
374
- Permission.AGENTS_ADDRESS_MANAGE,
375
- Permission.AGENTS_BENEFICIARY_VIEW,
376
- Permission.AGENTS_BENEFICIARY_MANAGE,
377
- Permission.AGENTS_CARD_ISSUE,
378
- Permission.AGENTS_CHAT_VIEW,
379
- Permission.AGENTS_CHAT_SEND,
380
- Permission.AGENTS_NOTIFICATION_SEND,
381
- Permission.AGENTS_EXPORT_RUN,
382
- Permission.AGENTS_CATALOG_VIEW,
383
- Permission.AGENTS_GROUP_MANAGE,
384
- Permission.AGENTS_GROUP_USER_MANAGE,
385
- // Append-only: nuevo permiso agregado 2026-06-18 (DEC-A2-02). Va al FINAL para no correr los bits
386
- // existentes (PERMS_VERSION cambia, pero los índices previos se conservan).
387
- Permission.AGENTS_PERSON_CREATE,
388
- // Append-only 2026-06-18 (DEC-RBAC-017): catálogo de campos personalizados por tenant. Al FINAL para
389
- // no correr bits existentes. (El bitset está deprecado por token-flaco, pero el orden se mantiene
390
- // sincronizado con el enum para que el test de bits no rompa.)
208
+ // Append-only 2026-06-18 (DEC-RBAC-017): catálogo de campos personalizados por tenant.
209
+ // (El bitset está deprecado por token-flaco, pero el orden se mantiene sincronizado con el
210
+ // enum para que el test de bits no rompa.)
391
211
  Permission.PLATFORM_TENANT_USERFIELDS_MANAGE,
392
- // Append-only 2026-06-21: gate de acceso a la app web de Agents (gobernanza). Al FINAL para no
393
- // correr bits existentes (PERMS_VERSION cambia, pero los índices previos se conservan).
394
- Permission.AGENTS_APP_ACCESS,
395
212
  // Append-only 2026-06-19: lateral platform (platform_super_admin asigna roles scope PLATFORM).
396
213
  // Al FINAL para no correr bits existentes (PERMS_VERSION cambia, índices previos se conservan).
397
214
  Permission.PLATFORM_USER_CREATE_LATERAL,
@@ -6,16 +6,11 @@ export enum PermissionCategory {
6
6
  RBAC = 'rbac',
7
7
  PLATFORM = 'platform',
8
8
  TENANT = 'tenant',
9
- /** @deprecated DEC-RBAC-062/063: se consolida en niveles genéricos (LEVEL_n) data-driven. Migración de tenants pendiente; no usar en código nuevo. */
10
- RETAIL = 'retail',
11
- LEND = 'lend',
12
- MDM = 'mdm',
13
9
  AUDIT = 'audit',
14
- PAY = 'pay',
15
- /** @deprecated DEC-RBAC-062/063: se consolida en niveles genéricos (LEVEL_n) data-driven. Migración de tenants pendiente; no usar en código nuevo. */
16
- AGENTS = 'agents',
17
- // DEC-RBAC-063 (aditivo): categorías de las primitivas RBAC por nivel genérico.
18
- // Coexisten con RETAIL/AGENTS (@deprecated), no los reemplazan en la línea 3.x.
10
+ // DEC-RBAC-063: categorías de las primitivas RBAC por nivel genérico.
11
+ // Las categorías de DOMINIO (retail/lend/mdm/pay/agents) fueron purgadas del catálogo
12
+ // (v4.0.0, BREAKING): el type-kit contiene SOLO el vocabulario del sistema RBAC; el dominio
13
+ // vive como data (catálogo por aplicación), no hardcodeado acá.
19
14
  LEVEL1 = 'level1',
20
15
  LEVEL2 = 'level2',
21
16
  LEVEL3 = 'level3',
@@ -1,16 +1,19 @@
1
1
  import { PermissionScope } from './enums/PermissionScope';
2
2
 
3
3
  /**
4
- * Tipos de tenant soportados por el rbac-business. Cada tipo define su propia
5
- * jerarquía de niveles DEBAJO de TENANT (data-driven). Hoy solo existe `retail`.
4
+ * Tipos de tenant de DOMINIO (retail/agents) PURGADOS (v4.0.0, BREAKING).
6
5
  *
7
- * @deprecated DEC-RBAC-062/063: el modelo de tipos de tenant se consolida en niveles genéricos
8
- * (LEVEL_1..n) data-driven. Migración de tenants pendiente; no usar en código nuevo.
6
+ * El modelo de tipos de tenant de dominio se consolidó en niveles genéricos (LEVEL_1..n)
7
+ * data-driven (DEC-RBAC-062/063). El type-kit contiene SOLO el vocabulario del sistema RBAC;
8
+ * la jerarquía de niveles de cada aplicación vive como data (catálogo por aplicación,
9
+ * ver `LevelDef` en `application/Application`), no hardcodeada acá.
10
+ *
11
+ * El enum queda SIN miembros de dominio a propósito. La maquinaria genérica
12
+ * (`TENANT_TYPES`, `levelsOf`, `tableSuffixForLevel`, `scopeRankOrder`) se conserva para no
13
+ * romper a los consumidores (ej. `ScopeValidationService._rank` vía `scopeRankOrder`), pero
14
+ * ya no aporta niveles legacy: el orden queda definido por los niveles genéricos.
9
15
  */
10
- export enum TenantType {
11
- RETAIL = 'retail',
12
- AGENTS = 'agents',
13
- }
16
+ export enum TenantType {}
14
17
 
15
18
  interface TenantTypeDef {
16
19
  displayName: string;
@@ -20,46 +23,32 @@ interface TenantTypeDef {
20
23
  tableSuffix: Partial<Record<PermissionScope, string>>;
21
24
  }
22
25
 
23
- /** @deprecated DEC-RBAC-062/063: se consolida en niveles genéricos (LEVEL_n) data-driven. Migración de tenants pendiente; no usar en código nuevo. */
24
- export const TENANT_TYPES: Record<TenantType, TenantTypeDef> = {
25
- [TenantType.RETAIL]: {
26
- displayName: 'Retail',
27
- levels: [PermissionScope.RETAILER, PermissionScope.STORE],
28
- tableSuffix: {
29
- [PermissionScope.RETAILER]: 'SharedRetailer',
30
- [PermissionScope.STORE]: 'SharedStore',
31
- },
32
- },
33
- // Fiado Agents — un único nivel GROUP debajo de TENANT.
34
- [TenantType.AGENTS]: {
35
- displayName: 'Agents',
36
- levels: [PermissionScope.GROUP],
37
- tableSuffix: { [PermissionScope.GROUP]: 'SharedGroup' },
38
- },
39
- };
26
+ /**
27
+ * Registro de tipos de tenant de dominio — VACÍO tras la purga (v4.0.0). Las jerarquías de
28
+ * niveles se definen como data por aplicación (LEVEL_n), no acá.
29
+ */
30
+ export const TENANT_TYPES: Record<TenantType, TenantTypeDef> = {};
40
31
 
41
- /** @deprecated DEC-RBAC-062/063: se consolida en niveles genéricos (LEVEL_n) data-driven. Migración de tenants pendiente; no usar en código nuevo. */
42
32
  export function levelsOf(type: TenantType): PermissionScope[] {
43
33
  return TENANT_TYPES[type].levels;
44
34
  }
45
35
 
46
- /** @deprecated DEC-RBAC-062/063: se consolida en niveles genéricos (LEVEL_n) data-driven. Migración de tenants pendiente; no usar en código nuevo. */
47
36
  export function tableSuffixForLevel(type: TenantType, level: PermissionScope): string | undefined {
48
37
  return TENANT_TYPES[type].tableSuffix[level];
49
38
  }
50
39
 
51
40
  /**
52
- * Orden global de scopes para ORDENAR (ej. UI): PLATFORM, TENANT + niveles de cada tipo.
53
- * ⚠️ NO usar para COBERTURA de autorización: es un orden total que cruzaría ramas
54
- * (sugeriría falsamente que RETAILER cubre GROUP). La cobertura se decide con una relación
55
- * explícita por niveles — ver `canAccess`/`scopeCovers` en @fiado/gateway-adapter (DEC-RBAC-010).
41
+ * Orden global de scopes para ORDENAR (ej. UI): PLATFORM, TENANT + niveles genéricos.
42
+ * ⚠️ NO usar para COBERTURA de autorización: es un orden total que cruzaría ramas.
43
+ * La cobertura se decide con una relación explícita por niveles — ver `canAccess`/`scopeCovers`
44
+ * en @fiado/gateway-adapter (DEC-RBAC-010).
56
45
  */
57
46
  export function scopeRankOrder(): PermissionScope[] {
58
47
  const order: PermissionScope[] = [PermissionScope.PLATFORM, PermissionScope.TENANT];
59
48
  for (const def of Object.values(TENANT_TYPES)) {
60
49
  for (const lvl of def.levels) if (!order.includes(lvl)) order.push(lvl);
61
50
  }
62
- // DEC-RBAC-032: niveles genéricos al final del orden total (UI/ranking). Append-only, después de los legacy.
51
+ // DEC-RBAC-032: niveles genéricos al final del orden total (UI/ranking). Append-only.
63
52
  for (const lvl of [PermissionScope.LEVEL_1, PermissionScope.LEVEL_2, PermissionScope.LEVEL_3]) {
64
53
  if (!order.includes(lvl)) order.push(lvl);
65
54
  }