@fiado/type-kit 3.144.0 → 3.146.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 (43) hide show
  1. package/bin/group/dtos/GroupCountsResponse.d.ts +11 -0
  2. package/bin/group/dtos/GroupCountsResponse.js +11 -0
  3. package/bin/group/index.d.ts +1 -0
  4. package/bin/group/index.js +2 -0
  5. package/bin/index.d.ts +1 -0
  6. package/bin/index.js +3 -2
  7. package/bin/platformRbac/enums/PermissionScope.d.ts +8 -1
  8. package/bin/platformRbac/enums/PermissionScope.js +8 -1
  9. package/bin/remittance/dtos/RemittanceSegment.d.ts +80 -0
  10. package/bin/remittance/dtos/RemittanceSegment.js +122 -0
  11. package/bin/remittance/dtos/index.d.ts +1 -0
  12. package/bin/remittance/dtos/index.js +1 -0
  13. package/bin/remittance/dtos/internal/RemittanceSegmentMetrics.d.ts +17 -0
  14. package/bin/remittance/dtos/internal/RemittanceSegmentMetrics.js +31 -0
  15. package/bin/remittance/enums/SegmentMemberType.d.ts +8 -0
  16. package/bin/remittance/enums/SegmentMemberType.js +12 -0
  17. package/bin/remittance/enums/index.d.ts +1 -0
  18. package/bin/remittance/enums/index.js +1 -0
  19. package/bin/remittance/index.d.ts +1 -0
  20. package/bin/remittance/index.js +1 -0
  21. package/bin/userTags/dtos/TagsByDirectoriesRequest.d.ts +4 -0
  22. package/bin/userTags/dtos/TagsByDirectoriesRequest.js +22 -0
  23. package/bin/userTags/dtos/TagsByDirectoriesResponse.d.ts +7 -0
  24. package/bin/userTags/dtos/TagsByDirectoriesResponse.js +10 -0
  25. package/bin/userTags/dtos/TagsSummaryResponse.d.ts +9 -0
  26. package/bin/userTags/dtos/TagsSummaryResponse.js +11 -0
  27. package/bin/userTags/index.d.ts +3 -0
  28. package/bin/userTags/index.js +20 -0
  29. package/package.json +1 -1
  30. package/src/group/dtos/GroupCountsResponse.ts +12 -0
  31. package/src/group/index.ts +3 -0
  32. package/src/index.ts +1 -0
  33. package/src/platformRbac/enums/PermissionScope.ts +8 -1
  34. package/src/remittance/dtos/RemittanceSegment.ts +132 -0
  35. package/src/remittance/dtos/index.ts +1 -0
  36. package/src/remittance/dtos/internal/RemittanceSegmentMetrics.ts +22 -0
  37. package/src/remittance/enums/SegmentMemberType.ts +8 -0
  38. package/src/remittance/enums/index.ts +1 -0
  39. package/src/remittance/index.ts +1 -0
  40. package/src/userTags/dtos/TagsByDirectoriesRequest.ts +8 -0
  41. package/src/userTags/dtos/TagsByDirectoriesResponse.ts +7 -0
  42. package/src/userTags/dtos/TagsSummaryResponse.ts +10 -0
  43. package/src/userTags/index.ts +4 -0
@@ -0,0 +1,11 @@
1
+ /** Grupo con su # de miembros (relaciones DIRECTORY en GroupDirectoryRelations_GT). */
2
+ export declare class GroupCountItem {
3
+ id: string;
4
+ name: string;
5
+ status: string;
6
+ memberCount: number;
7
+ }
8
+ /** Response de GET groups/counts (privado, fiado-group-business). */
9
+ export declare class GroupCountsResponse {
10
+ items: GroupCountItem[];
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GroupCountsResponse = exports.GroupCountItem = void 0;
4
+ /** Grupo con su # de miembros (relaciones DIRECTORY en GroupDirectoryRelations_GT). */
5
+ class GroupCountItem {
6
+ }
7
+ exports.GroupCountItem = GroupCountItem;
8
+ /** Response de GET groups/counts (privado, fiado-group-business). */
9
+ class GroupCountsResponse {
10
+ }
11
+ exports.GroupCountsResponse = GroupCountsResponse;
@@ -8,3 +8,4 @@ export * from './enums/GroupStatus';
8
8
  export * from './enums/RelationType';
9
9
  export * from './enums/RelationStatus';
10
10
  export * from './enums/GroupAction';
11
+ export * from './dtos/GroupCountsResponse';
@@ -26,3 +26,5 @@ __exportStar(require("./enums/GroupStatus"), exports);
26
26
  __exportStar(require("./enums/RelationType"), exports);
27
27
  __exportStar(require("./enums/RelationStatus"), exports);
28
28
  __exportStar(require("./enums/GroupAction"), exports);
29
+ //dtos
30
+ __exportStar(require("./dtos/GroupCountsResponse"), exports);
package/bin/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export * as Directory from './directory';
14
14
  export * as ExchangeRate from './exchangeRate';
15
15
  export * as File from './identity';
16
16
  export * as Group from './group';
17
+ export * as UserTags from './userTags';
17
18
  export * as Identity from './provider';
18
19
  export * as Header from './header';
19
20
  export * as ServicePayment from './servicePayment';
package/bin/index.js CHANGED
@@ -36,8 +36,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
36
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.AccountIssuanceBusiness = exports.AppSelectionData = exports.Device = exports.Observations = exports.IssuanceBusiness = exports.Blacklist = exports.CentralPayments = exports.Helpdesk = exports.FiadoApiResponse = exports.Auth = exports.LegalDocumentsBusiness = exports.Role = exports.STPAccount = exports.RiskProfile = exports.FraudPreventionEngine = exports.BBVARst = exports.Stp = exports.BenefitCenter = exports.BankAccount = exports.P2pContact = exports.CreditContract = exports.Contract = exports.ProductCatalog = exports.ContactInfo = exports.TransactionAnalytics = exports.Transaction = exports.TransactionProcessor = exports.GenericMessage = exports.EventBridgeMessage = exports.SessionActivity = exports.NotificationMessages = exports.ServicePayment = exports.Header = exports.Identity = exports.Group = exports.File = exports.ExchangeRate = exports.Directory = exports.Currency = exports.Country = exports.Card = exports.Authentication = exports.App = exports.Offices = exports.Places = exports.Address = exports.Beneficiary = exports.Activity = exports.Account = exports.Crypto = void 0;
40
- exports.EmailVerification = exports.NetworkConnector = exports.TotpSecurity = exports.WalletFunding = exports.Remittance = exports.PlatformRbac = exports.CognitoBackofficeConnector = exports.TwilioConnector = exports.MessagesConnector = exports.Mdm = exports.MilestoneBusiness = exports.CirculoCredito = exports.CreditStatements = exports.Sentry = exports.AiEngine = exports.Funnel = exports.TeamsConnector = exports.PlatformErrorEvents = exports.CustomerFile = exports.CreditBackoffice = exports.CreditDashboard = exports.CreditEngine = exports.Credit = exports.ComissionBusiness = exports.ReferralBusiness = exports.ZendeskMessaging = exports.NotificationWS = exports.Event = exports.PayrollBusiness = exports.Cnbv = exports.DirectorySetting = exports.InvoiceCollector = exports.Collector = exports.Pricelist = exports.Company = exports.Services = void 0;
39
+ exports.AppSelectionData = exports.Device = exports.Observations = exports.IssuanceBusiness = exports.Blacklist = exports.CentralPayments = exports.Helpdesk = exports.FiadoApiResponse = exports.Auth = exports.LegalDocumentsBusiness = exports.Role = exports.STPAccount = exports.RiskProfile = exports.FraudPreventionEngine = exports.BBVARst = exports.Stp = exports.BenefitCenter = exports.BankAccount = exports.P2pContact = exports.CreditContract = exports.Contract = exports.ProductCatalog = exports.ContactInfo = exports.TransactionAnalytics = exports.Transaction = exports.TransactionProcessor = exports.GenericMessage = exports.EventBridgeMessage = exports.SessionActivity = exports.NotificationMessages = exports.ServicePayment = exports.Header = exports.Identity = exports.UserTags = exports.Group = exports.File = exports.ExchangeRate = exports.Directory = exports.Currency = exports.Country = exports.Card = exports.Authentication = exports.App = exports.Offices = exports.Places = exports.Address = exports.Beneficiary = exports.Activity = exports.Account = exports.Crypto = void 0;
40
+ exports.EmailVerification = exports.NetworkConnector = exports.TotpSecurity = exports.WalletFunding = exports.Remittance = exports.PlatformRbac = exports.CognitoBackofficeConnector = exports.TwilioConnector = exports.MessagesConnector = exports.Mdm = exports.MilestoneBusiness = exports.CirculoCredito = exports.CreditStatements = exports.Sentry = exports.AiEngine = exports.Funnel = exports.TeamsConnector = exports.PlatformErrorEvents = exports.CustomerFile = exports.CreditBackoffice = exports.CreditDashboard = exports.CreditEngine = exports.Credit = exports.ComissionBusiness = exports.ReferralBusiness = exports.ZendeskMessaging = exports.NotificationWS = exports.Event = exports.PayrollBusiness = exports.Cnbv = exports.DirectorySetting = exports.InvoiceCollector = exports.Collector = exports.Pricelist = exports.Company = exports.Services = exports.AccountIssuanceBusiness = void 0;
41
41
  exports.Crypto = __importStar(require("./crypto"));
42
42
  exports.Account = __importStar(require("./account"));
43
43
  exports.Activity = __importStar(require("./activity"));
@@ -54,6 +54,7 @@ exports.Directory = __importStar(require("./directory"));
54
54
  exports.ExchangeRate = __importStar(require("./exchangeRate"));
55
55
  exports.File = __importStar(require("./identity"));
56
56
  exports.Group = __importStar(require("./group"));
57
+ exports.UserTags = __importStar(require("./userTags"));
57
58
  exports.Identity = __importStar(require("./provider"));
58
59
  exports.Header = __importStar(require("./header"));
59
60
  exports.ServicePayment = __importStar(require("./servicePayment"));
@@ -7,13 +7,20 @@
7
7
  * (RETAILER/STORE/GROUP, atados a tenant-types concretos), una aplicación define
8
8
  * su jerarquía DEBAJO de TENANT con niveles genéricos LEVEL_1 > LEVEL_2 > LEVEL_3,
9
9
  * cuyo `displayName` lo decide cada aplicación (ver LevelDef en application/Application).
10
- * Los niveles legacy se conservan para no romper retail/agents existentes.
10
+ *
11
+ * DEC-RBAC-091 (Fase 1): RETAILER/STORE/GROUP quedan `@deprecated` — el modelo correcto es
12
+ * LEVEL_N (DEC-RBAC-090, funcionando E2E). Se conservan por ahora para no romper a los consumidores
13
+ * (platform-rbac-business, gateway-adapter, jwt-inyector-trigger, referral-business, webapps) que se
14
+ * migran por fases; se REMUEVEN en Fase 5 (bump MAJOR) cuando ninguno los use.
11
15
  */
12
16
  export declare enum PermissionScope {
13
17
  PLATFORM = "PLATFORM",
14
18
  TENANT = "TENANT",
19
+ /** @deprecated DEC-RBAC-091: usar LEVEL_N. Se remueve en Fase 5 (MAJOR). */
15
20
  RETAILER = "RETAILER",
21
+ /** @deprecated DEC-RBAC-091: usar LEVEL_N. Se remueve en Fase 5 (MAJOR). */
16
22
  STORE = "STORE",
23
+ /** @deprecated DEC-RBAC-091: usar LEVEL_N. Se remueve en Fase 5 (MAJOR). */
17
24
  GROUP = "GROUP",
18
25
  LEVEL_1 = "LEVEL_1",
19
26
  LEVEL_2 = "LEVEL_2",
@@ -10,14 +10,21 @@ exports.PermissionScope = void 0;
10
10
  * (RETAILER/STORE/GROUP, atados a tenant-types concretos), una aplicación define
11
11
  * su jerarquía DEBAJO de TENANT con niveles genéricos LEVEL_1 > LEVEL_2 > LEVEL_3,
12
12
  * cuyo `displayName` lo decide cada aplicación (ver LevelDef en application/Application).
13
- * Los niveles legacy se conservan para no romper retail/agents existentes.
13
+ *
14
+ * DEC-RBAC-091 (Fase 1): RETAILER/STORE/GROUP quedan `@deprecated` — el modelo correcto es
15
+ * LEVEL_N (DEC-RBAC-090, funcionando E2E). Se conservan por ahora para no romper a los consumidores
16
+ * (platform-rbac-business, gateway-adapter, jwt-inyector-trigger, referral-business, webapps) que se
17
+ * migran por fases; se REMUEVEN en Fase 5 (bump MAJOR) cuando ninguno los use.
14
18
  */
15
19
  var PermissionScope;
16
20
  (function (PermissionScope) {
17
21
  PermissionScope["PLATFORM"] = "PLATFORM";
18
22
  PermissionScope["TENANT"] = "TENANT";
23
+ /** @deprecated DEC-RBAC-091: usar LEVEL_N. Se remueve en Fase 5 (MAJOR). */
19
24
  PermissionScope["RETAILER"] = "RETAILER";
25
+ /** @deprecated DEC-RBAC-091: usar LEVEL_N. Se remueve en Fase 5 (MAJOR). */
20
26
  PermissionScope["STORE"] = "STORE";
27
+ /** @deprecated DEC-RBAC-091: usar LEVEL_N. Se remueve en Fase 5 (MAJOR). */
21
28
  PermissionScope["GROUP"] = "GROUP";
22
29
  PermissionScope["LEVEL_1"] = "LEVEL_1";
23
30
  PermissionScope["LEVEL_2"] = "LEVEL_2";
@@ -0,0 +1,80 @@
1
+ import { SegmentMemberType } from "../enums/SegmentMemberType";
2
+ /**
3
+ * DTOs de Segmentos (Dashboard Ops · Configuración §2, EP-22..25 + catalog + search).
4
+ *
5
+ * Un segmento es una colección EXPLÍCITA de clientes: referencias a grupos
6
+ * (Group_GT) y tags (UserTags_GT) por id + individuos (override por cliente).
7
+ * Dueño de la tabla: remittance-business (RemittanceSegments_GT).
8
+ *
9
+ * "Clientes" del segmento = intersección con RemittanceUsers_GT (usuarios de
10
+ * remesas que caen en el segmento), NO la membresía Fiado-wide del picker.
11
+ */
12
+ /** Referencia de composición: un grupo (Group_GT.id) o un tag (UserTags_GT.tag). */
13
+ export declare class SegmentMember {
14
+ type: SegmentMemberType;
15
+ /** Group_GT.id (p. ej. "CELULARES") o el tag (p. ej. "VIPS"). */
16
+ id: string;
17
+ }
18
+ /** Individuo agregado explícitamente (la llave es directoryId; peopleId informativo). */
19
+ export declare class SegmentIndividual {
20
+ directoryId: string;
21
+ peopleId?: string;
22
+ /** Snapshot de display (se pinta sin lookup). */
23
+ name: string;
24
+ }
25
+ /** Body de EP-23 POST /backoffice/config/segments. */
26
+ export declare class CreateSegmentRequest {
27
+ name: string;
28
+ members: SegmentMember[];
29
+ individuals: SegmentIndividual[];
30
+ }
31
+ /** Body de EP-24 PUT /backoffice/config/segments/{id} (reemplazo completo). */
32
+ export declare class UpdateSegmentRequest {
33
+ name: string;
34
+ members: SegmentMember[];
35
+ individuals: SegmentIndividual[];
36
+ }
37
+ /** Segmento completo (response). Métricas null = nunca calculadas. */
38
+ export declare class Segment {
39
+ id: string;
40
+ name: string;
41
+ /** true solo en ESTANDAR (catch-all: composición bloqueada, no eliminable). */
42
+ isDefault: boolean;
43
+ members: SegmentMember[];
44
+ individuals: SegmentIndividual[];
45
+ /** # de RemittanceUsers en el segmento (intersección con remesas). */
46
+ clientCount: number | null;
47
+ /** Σ amountUSD del mes calendario de esos users (sin CANCELLED/REFUND). */
48
+ volMonthUSD: number | null;
49
+ lastCalculatedAt: string | null;
50
+ createdAt: string;
51
+ updatedAt: string;
52
+ createdBy: string;
53
+ updatedBy: string;
54
+ }
55
+ /** Response de EP-22 GET /backoffice/config/segments. */
56
+ export declare class SegmentListResponse {
57
+ items: Segment[];
58
+ }
59
+ /** Response de POST /backoffice/config/segments/{id}/recalcular. */
60
+ export declare class RecalculateSegmentResponse {
61
+ id: string;
62
+ clientCount: number;
63
+ volMonthUSD: number;
64
+ lastCalculatedAt: string;
65
+ }
66
+ /** Item del picker DISPONIBLES (EP-32 catalog). `count` = membresía Fiado-wide. */
67
+ export declare class SegmentCatalogItem {
68
+ type: SegmentMemberType;
69
+ id: string;
70
+ name: string;
71
+ count: number;
72
+ }
73
+ /** Response de GET /backoffice/config/segments/catalog. */
74
+ export declare class SegmentCatalogResponse {
75
+ items: SegmentCatalogItem[];
76
+ }
77
+ /** Response de GET /backoffice/config/segments/search-individual?q= (cap 20). */
78
+ export declare class SearchIndividualResponse {
79
+ items: SegmentIndividual[];
80
+ }
@@ -0,0 +1,122 @@
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.SearchIndividualResponse = exports.SegmentCatalogResponse = exports.SegmentCatalogItem = exports.RecalculateSegmentResponse = exports.SegmentListResponse = exports.Segment = exports.UpdateSegmentRequest = exports.CreateSegmentRequest = exports.SegmentIndividual = exports.SegmentMember = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const SegmentMemberType_1 = require("../enums/SegmentMemberType");
16
+ /**
17
+ * DTOs de Segmentos (Dashboard Ops · Configuración §2, EP-22..25 + catalog + search).
18
+ *
19
+ * Un segmento es una colección EXPLÍCITA de clientes: referencias a grupos
20
+ * (Group_GT) y tags (UserTags_GT) por id + individuos (override por cliente).
21
+ * Dueño de la tabla: remittance-business (RemittanceSegments_GT).
22
+ *
23
+ * "Clientes" del segmento = intersección con RemittanceUsers_GT (usuarios de
24
+ * remesas que caen en el segmento), NO la membresía Fiado-wide del picker.
25
+ */
26
+ /** Referencia de composición: un grupo (Group_GT.id) o un tag (UserTags_GT.tag). */
27
+ class SegmentMember {
28
+ }
29
+ exports.SegmentMember = SegmentMember;
30
+ __decorate([
31
+ (0, class_validator_1.IsEnum)(SegmentMemberType_1.SegmentMemberType),
32
+ __metadata("design:type", String)
33
+ ], SegmentMember.prototype, "type", void 0);
34
+ __decorate([
35
+ (0, class_validator_1.IsString)(),
36
+ (0, class_validator_1.Length)(1, 100),
37
+ __metadata("design:type", String)
38
+ ], SegmentMember.prototype, "id", void 0);
39
+ /** Individuo agregado explícitamente (la llave es directoryId; peopleId informativo). */
40
+ class SegmentIndividual {
41
+ }
42
+ exports.SegmentIndividual = SegmentIndividual;
43
+ __decorate([
44
+ (0, class_validator_1.IsUUID)("4"),
45
+ __metadata("design:type", String)
46
+ ], SegmentIndividual.prototype, "directoryId", void 0);
47
+ __decorate([
48
+ (0, class_validator_1.IsOptional)(),
49
+ (0, class_validator_1.IsUUID)("4"),
50
+ __metadata("design:type", String)
51
+ ], SegmentIndividual.prototype, "peopleId", void 0);
52
+ __decorate([
53
+ (0, class_validator_1.IsString)(),
54
+ (0, class_validator_1.Length)(1, 200),
55
+ __metadata("design:type", String)
56
+ ], SegmentIndividual.prototype, "name", void 0);
57
+ /** Body de EP-23 POST /backoffice/config/segments. */
58
+ class CreateSegmentRequest {
59
+ }
60
+ exports.CreateSegmentRequest = CreateSegmentRequest;
61
+ __decorate([
62
+ (0, class_validator_1.IsString)(),
63
+ (0, class_validator_1.Length)(3, 100),
64
+ __metadata("design:type", String)
65
+ ], CreateSegmentRequest.prototype, "name", void 0);
66
+ __decorate([
67
+ (0, class_validator_1.IsArray)(),
68
+ (0, class_validator_1.ValidateNested)({ each: true }),
69
+ (0, class_transformer_1.Type)(() => SegmentMember),
70
+ __metadata("design:type", Array)
71
+ ], CreateSegmentRequest.prototype, "members", void 0);
72
+ __decorate([
73
+ (0, class_validator_1.IsArray)(),
74
+ (0, class_validator_1.ValidateNested)({ each: true }),
75
+ (0, class_transformer_1.Type)(() => SegmentIndividual),
76
+ __metadata("design:type", Array)
77
+ ], CreateSegmentRequest.prototype, "individuals", void 0);
78
+ /** Body de EP-24 PUT /backoffice/config/segments/{id} (reemplazo completo). */
79
+ class UpdateSegmentRequest {
80
+ }
81
+ exports.UpdateSegmentRequest = UpdateSegmentRequest;
82
+ __decorate([
83
+ (0, class_validator_1.IsString)(),
84
+ (0, class_validator_1.Length)(3, 100),
85
+ __metadata("design:type", String)
86
+ ], UpdateSegmentRequest.prototype, "name", void 0);
87
+ __decorate([
88
+ (0, class_validator_1.IsArray)(),
89
+ (0, class_validator_1.ValidateNested)({ each: true }),
90
+ (0, class_transformer_1.Type)(() => SegmentMember),
91
+ __metadata("design:type", Array)
92
+ ], UpdateSegmentRequest.prototype, "members", void 0);
93
+ __decorate([
94
+ (0, class_validator_1.IsArray)(),
95
+ (0, class_validator_1.ValidateNested)({ each: true }),
96
+ (0, class_transformer_1.Type)(() => SegmentIndividual),
97
+ __metadata("design:type", Array)
98
+ ], UpdateSegmentRequest.prototype, "individuals", void 0);
99
+ /** Segmento completo (response). Métricas null = nunca calculadas. */
100
+ class Segment {
101
+ }
102
+ exports.Segment = Segment;
103
+ /** Response de EP-22 GET /backoffice/config/segments. */
104
+ class SegmentListResponse {
105
+ }
106
+ exports.SegmentListResponse = SegmentListResponse;
107
+ /** Response de POST /backoffice/config/segments/{id}/recalcular. */
108
+ class RecalculateSegmentResponse {
109
+ }
110
+ exports.RecalculateSegmentResponse = RecalculateSegmentResponse;
111
+ /** Item del picker DISPONIBLES (EP-32 catalog). `count` = membresía Fiado-wide. */
112
+ class SegmentCatalogItem {
113
+ }
114
+ exports.SegmentCatalogItem = SegmentCatalogItem;
115
+ /** Response de GET /backoffice/config/segments/catalog. */
116
+ class SegmentCatalogResponse {
117
+ }
118
+ exports.SegmentCatalogResponse = SegmentCatalogResponse;
119
+ /** Response de GET /backoffice/config/segments/search-individual?q= (cap 20). */
120
+ class SearchIndividualResponse {
121
+ }
122
+ exports.SearchIndividualResponse = SearchIndividualResponse;
@@ -38,3 +38,4 @@ export * from "./RemittanceUserLimits";
38
38
  export * from "./RemittanceKyc";
39
39
  export * from "./RemittanceCohort";
40
40
  export * from "./RemittanceAuditLog";
41
+ export * from "./RemittanceSegment";
@@ -54,3 +54,4 @@ __exportStar(require("./RemittanceUserLimits"), exports);
54
54
  __exportStar(require("./RemittanceKyc"), exports);
55
55
  __exportStar(require("./RemittanceCohort"), exports);
56
56
  __exportStar(require("./RemittanceAuditLog"), exports);
57
+ __exportStar(require("./RemittanceSegment"), exports);
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Contrato interno de métricas de un segmento (puente Opción A):
3
+ * remittance-business resuelve la membresía (subconjunto de RemittanceUsers que
4
+ * caen en el segmento) y el uniteller-connector (dueño de las tx) devuelve el
5
+ * conteo validado + volumen del mes. Vía api-invoker →
6
+ * POST /backoffice/config/segments/metrics (privado).
7
+ */
8
+ export declare class SegmentMetricsRequest {
9
+ /** Subconjunto ya resuelto por rb. `[]` → { clientCount: 0, volMonthUSD: 0 }. */
10
+ directoryIds: string[];
11
+ }
12
+ export declare class SegmentMetricsResponse {
13
+ /** ids del request que SÍ existen en RemittanceUsers_GT. */
14
+ clientCount: number;
15
+ /** Σ amountUSD del mes calendario corriente (UTC) de esos users, sin CANCELLED/REFUND. */
16
+ volMonthUSD: number;
17
+ }
@@ -0,0 +1,31 @@
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.SegmentMetricsResponse = exports.SegmentMetricsRequest = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ /**
15
+ * Contrato interno de métricas de un segmento (puente Opción A):
16
+ * remittance-business resuelve la membresía (subconjunto de RemittanceUsers que
17
+ * caen en el segmento) y el uniteller-connector (dueño de las tx) devuelve el
18
+ * conteo validado + volumen del mes. Vía api-invoker →
19
+ * POST /backoffice/config/segments/metrics (privado).
20
+ */
21
+ class SegmentMetricsRequest {
22
+ }
23
+ exports.SegmentMetricsRequest = SegmentMetricsRequest;
24
+ __decorate([
25
+ (0, class_validator_1.IsArray)(),
26
+ (0, class_validator_1.IsUUID)("4", { each: true }),
27
+ __metadata("design:type", Array)
28
+ ], SegmentMetricsRequest.prototype, "directoryIds", void 0);
29
+ class SegmentMetricsResponse {
30
+ }
31
+ exports.SegmentMetricsResponse = SegmentMetricsResponse;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Tipo de miembro de la composición de un segmento (Dashboard Ops · Configuración §2).
3
+ * Los valores son los del mockup (pills GRUPO/TAG del dual-list).
4
+ */
5
+ export declare enum SegmentMemberType {
6
+ GROUP = "group",
7
+ TAG = "tag"
8
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SegmentMemberType = void 0;
4
+ /**
5
+ * Tipo de miembro de la composición de un segmento (Dashboard Ops · Configuración §2).
6
+ * Los valores son los del mockup (pills GRUPO/TAG del dual-list).
7
+ */
8
+ var SegmentMemberType;
9
+ (function (SegmentMemberType) {
10
+ SegmentMemberType["GROUP"] = "group";
11
+ SegmentMemberType["TAG"] = "tag";
12
+ })(SegmentMemberType || (exports.SegmentMemberType = SegmentMemberType = {}));
@@ -10,3 +10,4 @@ export * from "./CohortOperator";
10
10
  export * from "./CohortRefresh";
11
11
  export * from "./AuditAction";
12
12
  export * from "./AuditEntityType";
13
+ export * from "./SegmentMemberType";
@@ -26,3 +26,4 @@ __exportStar(require("./CohortOperator"), exports);
26
26
  __exportStar(require("./CohortRefresh"), exports);
27
27
  __exportStar(require("./AuditAction"), exports);
28
28
  __exportStar(require("./AuditEntityType"), exports);
29
+ __exportStar(require("./SegmentMemberType"), exports);
@@ -3,3 +3,4 @@ export * from "./dtos";
3
3
  export * from "./dtos/internal/RemittanceCreditBackRequest";
4
4
  export * from "./dtos/internal/RemittanceCreditBackResponse";
5
5
  export * from "./dtos/internal/RemittanceCohortCount";
6
+ export * from "./dtos/internal/RemittanceSegmentMetrics";
@@ -21,3 +21,4 @@ __exportStar(require("./dtos"), exports);
21
21
  __exportStar(require("./dtos/internal/RemittanceCreditBackRequest"), exports);
22
22
  __exportStar(require("./dtos/internal/RemittanceCreditBackResponse"), exports);
23
23
  __exportStar(require("./dtos/internal/RemittanceCohortCount"), exports);
24
+ __exportStar(require("./dtos/internal/RemittanceSegmentMetrics"), exports);
@@ -0,0 +1,4 @@
1
+ /** Request de POST tags/by-directories (privado, onboarding-business). */
2
+ export declare class TagsByDirectoriesRequest {
3
+ directoryIds: string[];
4
+ }
@@ -0,0 +1,22 @@
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.TagsByDirectoriesRequest = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ /** Request de POST tags/by-directories (privado, onboarding-business). */
15
+ class TagsByDirectoriesRequest {
16
+ }
17
+ exports.TagsByDirectoriesRequest = TagsByDirectoriesRequest;
18
+ __decorate([
19
+ (0, class_validator_1.IsArray)(),
20
+ (0, class_validator_1.IsUUID)("4", { each: true }),
21
+ __metadata("design:type", Array)
22
+ ], TagsByDirectoriesRequest.prototype, "directoryIds", void 0);
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tags por usuario para un batch de directoryIds. Ids sin tags → `[]`
3
+ * (siempre presentes en el mapa, para que el consumidor no distinga ausencia).
4
+ */
5
+ export declare class TagsByDirectoriesResponse {
6
+ tagsByDirectory: Record<string, string[]>;
7
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TagsByDirectoriesResponse = void 0;
4
+ /**
5
+ * Tags por usuario para un batch de directoryIds. Ids sin tags → `[]`
6
+ * (siempre presentes en el mapa, para que el consumidor no distinga ausencia).
7
+ */
8
+ class TagsByDirectoriesResponse {
9
+ }
10
+ exports.TagsByDirectoriesResponse = TagsByDirectoriesResponse;
@@ -0,0 +1,9 @@
1
+ /** Un tag operativo con su # de asignaciones en UserTags_GT (membresía Fiado-wide). */
2
+ export declare class TagSummaryItem {
3
+ tag: string;
4
+ count: number;
5
+ }
6
+ /** Response de GET tags/summary (privado, onboarding-business). Orden: count desc. */
7
+ export declare class TagsSummaryResponse {
8
+ items: TagSummaryItem[];
9
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TagsSummaryResponse = exports.TagSummaryItem = void 0;
4
+ /** Un tag operativo con su # de asignaciones en UserTags_GT (membresía Fiado-wide). */
5
+ class TagSummaryItem {
6
+ }
7
+ exports.TagSummaryItem = TagSummaryItem;
8
+ /** Response de GET tags/summary (privado, onboarding-business). Orden: count desc. */
9
+ class TagsSummaryResponse {
10
+ }
11
+ exports.TagsSummaryResponse = TagsSummaryResponse;
@@ -0,0 +1,3 @@
1
+ export * from './dtos/TagsSummaryResponse';
2
+ export * from './dtos/TagsByDirectoriesRequest';
3
+ export * from './dtos/TagsByDirectoriesResponse';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ //dtos
18
+ __exportStar(require("./dtos/TagsSummaryResponse"), exports);
19
+ __exportStar(require("./dtos/TagsByDirectoriesRequest"), exports);
20
+ __exportStar(require("./dtos/TagsByDirectoriesResponse"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.144.0",
3
+ "version": "3.146.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -0,0 +1,12 @@
1
+ /** Grupo con su # de miembros (relaciones DIRECTORY en GroupDirectoryRelations_GT). */
2
+ export class GroupCountItem {
3
+ id!: string;
4
+ name!: string;
5
+ status!: string;
6
+ memberCount!: number;
7
+ }
8
+
9
+ /** Response de GET groups/counts (privado, fiado-group-business). */
10
+ export class GroupCountsResponse {
11
+ items!: GroupCountItem[];
12
+ }
@@ -16,3 +16,6 @@ export * from './enums/RelationStatus';
16
16
  export * from './enums/GroupAction';
17
17
 
18
18
 
19
+
20
+ //dtos
21
+ export * from './dtos/GroupCountsResponse';
package/src/index.ts CHANGED
@@ -14,6 +14,7 @@ export * as Directory from './directory';
14
14
  export * as ExchangeRate from './exchangeRate';
15
15
  export * as File from './identity';
16
16
  export * as Group from './group';
17
+ export * as UserTags from './userTags';
17
18
  export * as Identity from './provider';
18
19
  export * as Header from './header';
19
20
  export * as ServicePayment from './servicePayment';
@@ -7,13 +7,20 @@
7
7
  * (RETAILER/STORE/GROUP, atados a tenant-types concretos), una aplicación define
8
8
  * su jerarquía DEBAJO de TENANT con niveles genéricos LEVEL_1 > LEVEL_2 > LEVEL_3,
9
9
  * cuyo `displayName` lo decide cada aplicación (ver LevelDef en application/Application).
10
- * Los niveles legacy se conservan para no romper retail/agents existentes.
10
+ *
11
+ * DEC-RBAC-091 (Fase 1): RETAILER/STORE/GROUP quedan `@deprecated` — el modelo correcto es
12
+ * LEVEL_N (DEC-RBAC-090, funcionando E2E). Se conservan por ahora para no romper a los consumidores
13
+ * (platform-rbac-business, gateway-adapter, jwt-inyector-trigger, referral-business, webapps) que se
14
+ * migran por fases; se REMUEVEN en Fase 5 (bump MAJOR) cuando ninguno los use.
11
15
  */
12
16
  export enum PermissionScope {
13
17
  PLATFORM = 'PLATFORM',
14
18
  TENANT = 'TENANT',
19
+ /** @deprecated DEC-RBAC-091: usar LEVEL_N. Se remueve en Fase 5 (MAJOR). */
15
20
  RETAILER = 'RETAILER',
21
+ /** @deprecated DEC-RBAC-091: usar LEVEL_N. Se remueve en Fase 5 (MAJOR). */
16
22
  STORE = 'STORE',
23
+ /** @deprecated DEC-RBAC-091: usar LEVEL_N. Se remueve en Fase 5 (MAJOR). */
17
24
  GROUP = 'GROUP',
18
25
  LEVEL_1 = 'LEVEL_1',
19
26
  LEVEL_2 = 'LEVEL_2',
@@ -0,0 +1,132 @@
1
+ import { Type } from "class-transformer";
2
+ import {
3
+ IsArray,
4
+ IsEnum,
5
+ IsOptional,
6
+ IsString,
7
+ IsUUID,
8
+ Length,
9
+ ValidateNested,
10
+ } from "class-validator";
11
+ import { SegmentMemberType } from "../enums/SegmentMemberType";
12
+
13
+ /**
14
+ * DTOs de Segmentos (Dashboard Ops · Configuración §2, EP-22..25 + catalog + search).
15
+ *
16
+ * Un segmento es una colección EXPLÍCITA de clientes: referencias a grupos
17
+ * (Group_GT) y tags (UserTags_GT) por id + individuos (override por cliente).
18
+ * Dueño de la tabla: remittance-business (RemittanceSegments_GT).
19
+ *
20
+ * "Clientes" del segmento = intersección con RemittanceUsers_GT (usuarios de
21
+ * remesas que caen en el segmento), NO la membresía Fiado-wide del picker.
22
+ */
23
+
24
+ /** Referencia de composición: un grupo (Group_GT.id) o un tag (UserTags_GT.tag). */
25
+ export class SegmentMember {
26
+ @IsEnum(SegmentMemberType)
27
+ type!: SegmentMemberType;
28
+
29
+ /** Group_GT.id (p. ej. "CELULARES") o el tag (p. ej. "VIPS"). */
30
+ @IsString()
31
+ @Length(1, 100)
32
+ id!: string;
33
+ }
34
+
35
+ /** Individuo agregado explícitamente (la llave es directoryId; peopleId informativo). */
36
+ export class SegmentIndividual {
37
+ @IsUUID("4")
38
+ directoryId!: string;
39
+
40
+ @IsOptional()
41
+ @IsUUID("4")
42
+ peopleId?: string;
43
+
44
+ /** Snapshot de display (se pinta sin lookup). */
45
+ @IsString()
46
+ @Length(1, 200)
47
+ name!: string;
48
+ }
49
+
50
+ /** Body de EP-23 POST /backoffice/config/segments. */
51
+ export class CreateSegmentRequest {
52
+ @IsString()
53
+ @Length(3, 100)
54
+ name!: string;
55
+
56
+ @IsArray()
57
+ @ValidateNested({ each: true })
58
+ @Type(() => SegmentMember)
59
+ members!: SegmentMember[];
60
+
61
+ @IsArray()
62
+ @ValidateNested({ each: true })
63
+ @Type(() => SegmentIndividual)
64
+ individuals!: SegmentIndividual[];
65
+ }
66
+
67
+ /** Body de EP-24 PUT /backoffice/config/segments/{id} (reemplazo completo). */
68
+ export class UpdateSegmentRequest {
69
+ @IsString()
70
+ @Length(3, 100)
71
+ name!: string;
72
+
73
+ @IsArray()
74
+ @ValidateNested({ each: true })
75
+ @Type(() => SegmentMember)
76
+ members!: SegmentMember[];
77
+
78
+ @IsArray()
79
+ @ValidateNested({ each: true })
80
+ @Type(() => SegmentIndividual)
81
+ individuals!: SegmentIndividual[];
82
+ }
83
+
84
+ /** Segmento completo (response). Métricas null = nunca calculadas. */
85
+ export class Segment {
86
+ id!: string;
87
+ name!: string;
88
+ /** true solo en ESTANDAR (catch-all: composición bloqueada, no eliminable). */
89
+ isDefault!: boolean;
90
+ members!: SegmentMember[];
91
+ individuals!: SegmentIndividual[];
92
+ /** # de RemittanceUsers en el segmento (intersección con remesas). */
93
+ clientCount!: number | null;
94
+ /** Σ amountUSD del mes calendario de esos users (sin CANCELLED/REFUND). */
95
+ volMonthUSD!: number | null;
96
+ lastCalculatedAt!: string | null;
97
+ createdAt!: string;
98
+ updatedAt!: string;
99
+ createdBy!: string;
100
+ updatedBy!: string;
101
+ }
102
+
103
+ /** Response de EP-22 GET /backoffice/config/segments. */
104
+ export class SegmentListResponse {
105
+ items!: Segment[];
106
+ }
107
+
108
+ /** Response de POST /backoffice/config/segments/{id}/recalcular. */
109
+ export class RecalculateSegmentResponse {
110
+ id!: string;
111
+ clientCount!: number;
112
+ volMonthUSD!: number;
113
+ lastCalculatedAt!: string;
114
+ }
115
+
116
+ /** Item del picker DISPONIBLES (EP-32 catalog). `count` = membresía Fiado-wide. */
117
+ export class SegmentCatalogItem {
118
+ type!: SegmentMemberType;
119
+ id!: string;
120
+ name!: string;
121
+ count!: number;
122
+ }
123
+
124
+ /** Response de GET /backoffice/config/segments/catalog. */
125
+ export class SegmentCatalogResponse {
126
+ items!: SegmentCatalogItem[];
127
+ }
128
+
129
+ /** Response de GET /backoffice/config/segments/search-individual?q= (cap 20). */
130
+ export class SearchIndividualResponse {
131
+ items!: SegmentIndividual[];
132
+ }
@@ -38,3 +38,4 @@ export * from "./RemittanceUserLimits";
38
38
  export * from "./RemittanceKyc";
39
39
  export * from "./RemittanceCohort";
40
40
  export * from "./RemittanceAuditLog";
41
+ export * from "./RemittanceSegment";
@@ -0,0 +1,22 @@
1
+ import { IsArray, IsUUID } from "class-validator";
2
+
3
+ /**
4
+ * Contrato interno de métricas de un segmento (puente Opción A):
5
+ * remittance-business resuelve la membresía (subconjunto de RemittanceUsers que
6
+ * caen en el segmento) y el uniteller-connector (dueño de las tx) devuelve el
7
+ * conteo validado + volumen del mes. Vía api-invoker →
8
+ * POST /backoffice/config/segments/metrics (privado).
9
+ */
10
+ export class SegmentMetricsRequest {
11
+ /** Subconjunto ya resuelto por rb. `[]` → { clientCount: 0, volMonthUSD: 0 }. */
12
+ @IsArray()
13
+ @IsUUID("4", { each: true })
14
+ directoryIds!: string[];
15
+ }
16
+
17
+ export class SegmentMetricsResponse {
18
+ /** ids del request que SÍ existen en RemittanceUsers_GT. */
19
+ clientCount!: number;
20
+ /** Σ amountUSD del mes calendario corriente (UTC) de esos users, sin CANCELLED/REFUND. */
21
+ volMonthUSD!: number;
22
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Tipo de miembro de la composición de un segmento (Dashboard Ops · Configuración §2).
3
+ * Los valores son los del mockup (pills GRUPO/TAG del dual-list).
4
+ */
5
+ export enum SegmentMemberType {
6
+ GROUP = "group",
7
+ TAG = "tag",
8
+ }
@@ -10,3 +10,4 @@ export * from "./CohortOperator";
10
10
  export * from "./CohortRefresh";
11
11
  export * from "./AuditAction";
12
12
  export * from "./AuditEntityType";
13
+ export * from "./SegmentMemberType";
@@ -5,3 +5,4 @@ export * from "./dtos";
5
5
  export * from "./dtos/internal/RemittanceCreditBackRequest";
6
6
  export * from "./dtos/internal/RemittanceCreditBackResponse";
7
7
  export * from "./dtos/internal/RemittanceCohortCount";
8
+ export * from "./dtos/internal/RemittanceSegmentMetrics";
@@ -0,0 +1,8 @@
1
+ import { IsArray, IsUUID } from "class-validator";
2
+
3
+ /** Request de POST tags/by-directories (privado, onboarding-business). */
4
+ export class TagsByDirectoriesRequest {
5
+ @IsArray()
6
+ @IsUUID("4", { each: true })
7
+ directoryIds!: string[];
8
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tags por usuario para un batch de directoryIds. Ids sin tags → `[]`
3
+ * (siempre presentes en el mapa, para que el consumidor no distinga ausencia).
4
+ */
5
+ export class TagsByDirectoriesResponse {
6
+ tagsByDirectory!: Record<string, string[]>;
7
+ }
@@ -0,0 +1,10 @@
1
+ /** Un tag operativo con su # de asignaciones en UserTags_GT (membresía Fiado-wide). */
2
+ export class TagSummaryItem {
3
+ tag!: string;
4
+ count!: number;
5
+ }
6
+
7
+ /** Response de GET tags/summary (privado, onboarding-business). Orden: count desc. */
8
+ export class TagsSummaryResponse {
9
+ items!: TagSummaryItem[];
10
+ }
@@ -0,0 +1,4 @@
1
+ //dtos
2
+ export * from './dtos/TagsSummaryResponse';
3
+ export * from './dtos/TagsByDirectoriesRequest';
4
+ export * from './dtos/TagsByDirectoriesResponse';