@gymspace/shared 1.2.4 → 1.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +795 -0
- package/dist/index.d.ts +795 -0
- package/dist/index.js +281 -24
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +266 -25
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/constants/template-codes.constants.ts +131 -0
- package/src/constants.ts +31 -40
- package/src/enums.ts +2 -1
- package/src/events/index.ts +1 -0
- package/src/events/whatsapp.events.ts +31 -0
- package/src/index.ts +4 -1
- package/src/interfaces.ts +3 -6
- package/src/schemas/ai-template.schema.ts +23 -0
- package/src/schemas/index.ts +1 -0
- package/src/types/whatsapp-templates.types.ts +174 -0
- package/src/types.ts +147 -1
- package/src/utils/roleHelpers.ts +104 -0
- package/dist/.tsbuildinfo +0 -1
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
// src/types/whatsapp-templates.types.ts
|
|
4
|
+
var TemplateCode = {
|
|
5
|
+
WELCOME: "WELCOME",
|
|
6
|
+
MEMBERSHIP_PURCHASE: "MEMBERSHIP_PURCHASE",
|
|
7
|
+
MEMBERSHIP_RENEWAL: "MEMBERSHIP_RENEWAL",
|
|
8
|
+
MEMBERSHIP_EXPIRING: "MEMBERSHIP_EXPIRING",
|
|
9
|
+
PAYMENT_REMINDER: "PAYMENT_REMINDER",
|
|
10
|
+
BIRTHDAY: "BIRTHDAY",
|
|
11
|
+
PAYMENT_RECEIPT: "PAYMENT_RECEIPT"
|
|
12
|
+
};
|
|
13
|
+
var TemplateType = {
|
|
14
|
+
STATIC: "STATIC",
|
|
15
|
+
PROMPT: "PROMPT"
|
|
16
|
+
};
|
|
17
|
+
|
|
1
18
|
// src/enums.ts
|
|
2
19
|
var UserType = /* @__PURE__ */ ((UserType2) => {
|
|
3
20
|
UserType2["OWNER"] = "owner";
|
|
@@ -21,6 +38,7 @@ var CollaboratorStatus = /* @__PURE__ */ ((CollaboratorStatus2) => {
|
|
|
21
38
|
var InvitationStatus = /* @__PURE__ */ ((InvitationStatus2) => {
|
|
22
39
|
InvitationStatus2["PENDING"] = "pending";
|
|
23
40
|
InvitationStatus2["ACCEPTED"] = "accepted";
|
|
41
|
+
InvitationStatus2["CANCELLED"] = "cancelled";
|
|
24
42
|
InvitationStatus2["EXPIRED"] = "expired";
|
|
25
43
|
return InvitationStatus2;
|
|
26
44
|
})(InvitationStatus || {});
|
|
@@ -114,6 +132,126 @@ var LeadStatus = /* @__PURE__ */ ((LeadStatus2) => {
|
|
|
114
132
|
return LeadStatus2;
|
|
115
133
|
})(LeadStatus || {});
|
|
116
134
|
|
|
135
|
+
// src/constants/template-codes.constants.ts
|
|
136
|
+
var TEMPLATE_CODES = {
|
|
137
|
+
WELCOME: TemplateCode.WELCOME,
|
|
138
|
+
MEMBERSHIP_PURCHASE: TemplateCode.MEMBERSHIP_PURCHASE,
|
|
139
|
+
MEMBERSHIP_RENEWAL: TemplateCode.MEMBERSHIP_RENEWAL,
|
|
140
|
+
MEMBERSHIP_EXPIRING: TemplateCode.MEMBERSHIP_EXPIRING,
|
|
141
|
+
PAYMENT_REMINDER: TemplateCode.PAYMENT_REMINDER,
|
|
142
|
+
BIRTHDAY: TemplateCode.BIRTHDAY,
|
|
143
|
+
PAYMENT_RECEIPT: TemplateCode.PAYMENT_RECEIPT
|
|
144
|
+
};
|
|
145
|
+
var WHATSAPP_TEMPLATE_EVENTS = {
|
|
146
|
+
SEND_TEMPLATE: "whatsapp/template.send",
|
|
147
|
+
TEMPLATE_SENT: "whatsapp/template.sent",
|
|
148
|
+
TEMPLATE_FAILED: "whatsapp/template.failed"
|
|
149
|
+
};
|
|
150
|
+
var TEMPLATE_METADATA = {
|
|
151
|
+
[TemplateCode.WELCOME]: {
|
|
152
|
+
code: TemplateCode.WELCOME,
|
|
153
|
+
title: "Mensaje de Bienvenida",
|
|
154
|
+
description: "Mensaje para nuevos clientes",
|
|
155
|
+
icon: "UserPlus",
|
|
156
|
+
variables: ["clientName", "gymName", "registrationDate"],
|
|
157
|
+
exampleValues: {
|
|
158
|
+
clientName: "Juan P\xE9rez",
|
|
159
|
+
gymName: "GymSpace",
|
|
160
|
+
registrationDate: "15/01/2024"
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
[TemplateCode.MEMBERSHIP_PURCHASE]: {
|
|
164
|
+
code: TemplateCode.MEMBERSHIP_PURCHASE,
|
|
165
|
+
title: "Compra de Membres\xEDa",
|
|
166
|
+
description: "Confirmaci\xF3n de nueva membres\xEDa",
|
|
167
|
+
icon: "ShoppingCart",
|
|
168
|
+
variables: ["clientName", "planName", "startDate", "endDate", "amount", "paymentFrequency"],
|
|
169
|
+
exampleValues: {
|
|
170
|
+
clientName: "Mar\xEDa L\xF3pez",
|
|
171
|
+
planName: "Premium",
|
|
172
|
+
startDate: "01/02/2024",
|
|
173
|
+
endDate: "01/03/2024",
|
|
174
|
+
amount: "$50.00",
|
|
175
|
+
paymentFrequency: "mensual"
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
[TemplateCode.MEMBERSHIP_RENEWAL]: {
|
|
179
|
+
code: TemplateCode.MEMBERSHIP_RENEWAL,
|
|
180
|
+
title: "Renovaci\xF3n de Membres\xEDa",
|
|
181
|
+
description: "Confirmaci\xF3n de renovaci\xF3n",
|
|
182
|
+
icon: "RefreshCw",
|
|
183
|
+
variables: ["clientName", "planName", "newEndDate", "amount"],
|
|
184
|
+
exampleValues: {
|
|
185
|
+
clientName: "Carlos Ruiz",
|
|
186
|
+
planName: "B\xE1sico",
|
|
187
|
+
newEndDate: "15/04/2024",
|
|
188
|
+
amount: "$30.00"
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
[TemplateCode.MEMBERSHIP_EXPIRING]: {
|
|
192
|
+
code: TemplateCode.MEMBERSHIP_EXPIRING,
|
|
193
|
+
title: "Membres\xEDa Por Vencer",
|
|
194
|
+
description: "Recordatorio de expiraci\xF3n pr\xF3xima",
|
|
195
|
+
icon: "AlertCircle",
|
|
196
|
+
variables: ["clientName", "planName", "expirationDate", "daysRemaining"],
|
|
197
|
+
exampleValues: {
|
|
198
|
+
clientName: "Ana Garc\xEDa",
|
|
199
|
+
planName: "Premium",
|
|
200
|
+
expirationDate: "20/02/2024",
|
|
201
|
+
daysRemaining: "3"
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
[TemplateCode.PAYMENT_REMINDER]: {
|
|
205
|
+
code: TemplateCode.PAYMENT_REMINDER,
|
|
206
|
+
title: "Recordatorio de Pago",
|
|
207
|
+
description: "Recordatorio de pago pendiente",
|
|
208
|
+
icon: "DollarSign",
|
|
209
|
+
variables: ["clientName", "amount", "dueDate", "planName"],
|
|
210
|
+
exampleValues: {
|
|
211
|
+
clientName: "Pedro S\xE1nchez",
|
|
212
|
+
amount: "$40.00",
|
|
213
|
+
dueDate: "25/02/2024",
|
|
214
|
+
planName: "Est\xE1ndar"
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
[TemplateCode.BIRTHDAY]: {
|
|
218
|
+
code: TemplateCode.BIRTHDAY,
|
|
219
|
+
title: "Cumplea\xF1os",
|
|
220
|
+
description: "Felicitaci\xF3n de cumplea\xF1os",
|
|
221
|
+
icon: "Cake",
|
|
222
|
+
variables: ["clientName", "gymName", "age"],
|
|
223
|
+
exampleValues: {
|
|
224
|
+
clientName: "Laura Mart\xEDnez",
|
|
225
|
+
gymName: "GymSpace",
|
|
226
|
+
age: "28"
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
[TemplateCode.PAYMENT_RECEIPT]: {
|
|
230
|
+
code: TemplateCode.PAYMENT_RECEIPT,
|
|
231
|
+
title: "Comprobante de Pago",
|
|
232
|
+
description: "Comprobante de venta pagada",
|
|
233
|
+
icon: "Receipt",
|
|
234
|
+
variables: [
|
|
235
|
+
"gymName",
|
|
236
|
+
"receiptNumber",
|
|
237
|
+
"date",
|
|
238
|
+
"clientName",
|
|
239
|
+
"items",
|
|
240
|
+
"amount",
|
|
241
|
+
"paymentMethod"
|
|
242
|
+
],
|
|
243
|
+
exampleValues: {
|
|
244
|
+
gymName: "GymSpace",
|
|
245
|
+
receiptNumber: "V-001",
|
|
246
|
+
date: "15/01/2024",
|
|
247
|
+
clientName: "Juan P\xE9rez",
|
|
248
|
+
items: "\u2022 Prote\xEDna x2 = Q100.00\n\u2022 Creatina x1 = Q50.00",
|
|
249
|
+
amount: "Q150.00",
|
|
250
|
+
paymentMethod: "Efectivo"
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
|
|
117
255
|
// src/constants.ts
|
|
118
256
|
var PERMISSIONS = {
|
|
119
257
|
// Organizations
|
|
@@ -193,11 +331,17 @@ var PERMISSIONS = {
|
|
|
193
331
|
PAYMENT_METHODS_READ: "PAYMENT_METHODS_READ",
|
|
194
332
|
PAYMENT_METHODS_UPDATE: "PAYMENT_METHODS_UPDATE",
|
|
195
333
|
PAYMENT_METHODS_DELETE: "PAYMENT_METHODS_DELETE",
|
|
196
|
-
//
|
|
197
|
-
|
|
334
|
+
// WhatsApp
|
|
335
|
+
WHATSAPP_READ: "WHATSAPP_READ",
|
|
336
|
+
WHATSAPP_SEND: "WHATSAPP_SEND",
|
|
337
|
+
WHATSAPP_MANAGE: "WHATSAPP_MANAGE",
|
|
338
|
+
// Special permissions
|
|
339
|
+
SUPER_ADMIN: "SUPER_ADMIN",
|
|
340
|
+
OWNER: "OWNER",
|
|
341
|
+
All: "ALL"
|
|
198
342
|
};
|
|
199
343
|
var ROLE_PERMISSIONS = {
|
|
200
|
-
|
|
344
|
+
ADMIN: Object.values(PERMISSIONS),
|
|
201
345
|
MANAGER: [
|
|
202
346
|
PERMISSIONS.GYMS_READ,
|
|
203
347
|
PERMISSIONS.COLLABORATORS_READ,
|
|
@@ -237,26 +381,6 @@ var ROLE_PERMISSIONS = {
|
|
|
237
381
|
PERMISSIONS.PAYMENT_METHODS_READ,
|
|
238
382
|
PERMISSIONS.PAYMENT_METHODS_UPDATE,
|
|
239
383
|
PERMISSIONS.PAYMENT_METHODS_DELETE
|
|
240
|
-
],
|
|
241
|
-
STAFF: [
|
|
242
|
-
PERMISSIONS.CLIENTS_READ,
|
|
243
|
-
PERMISSIONS.CHECKINS_CREATE,
|
|
244
|
-
PERMISSIONS.CHECKINS_READ,
|
|
245
|
-
PERMISSIONS.PRODUCTS_READ,
|
|
246
|
-
PERMISSIONS.PRODUCT_CATEGORIES_READ,
|
|
247
|
-
PERMISSIONS.SALES_CREATE,
|
|
248
|
-
PERMISSIONS.SALES_READ,
|
|
249
|
-
PERMISSIONS.PAYMENT_METHODS_READ
|
|
250
|
-
],
|
|
251
|
-
ADVISOR: [
|
|
252
|
-
PERMISSIONS.CLIENTS_READ,
|
|
253
|
-
PERMISSIONS.EVALUATIONS_CREATE,
|
|
254
|
-
PERMISSIONS.EVALUATIONS_READ,
|
|
255
|
-
PERMISSIONS.EVALUATIONS_UPDATE,
|
|
256
|
-
PERMISSIONS.ASSETS_CREATE,
|
|
257
|
-
PERMISSIONS.ASSETS_READ,
|
|
258
|
-
PERMISSIONS.FILES_CREATE,
|
|
259
|
-
PERMISSIONS.FILES_READ
|
|
260
384
|
]
|
|
261
385
|
};
|
|
262
386
|
var CACHE_TTL = {
|
|
@@ -268,8 +392,10 @@ var CACHE_TTL = {
|
|
|
268
392
|
// 60 minutes
|
|
269
393
|
REPORTS: 300,
|
|
270
394
|
// 5 minutes
|
|
271
|
-
DASHBOARD: 180
|
|
395
|
+
DASHBOARD: 180,
|
|
272
396
|
// 3 minutes
|
|
397
|
+
WHATSAPP_MESSAGE_STATUS: 300
|
|
398
|
+
// 5 minutes
|
|
273
399
|
};
|
|
274
400
|
var FILE_LIMITS = {
|
|
275
401
|
MAX_FILE_SIZE: 10 * 1024 * 1024,
|
|
@@ -294,6 +420,121 @@ var HEADERS = {
|
|
|
294
420
|
REQUEST_ID: "X-Request-Id"
|
|
295
421
|
};
|
|
296
422
|
|
|
297
|
-
|
|
423
|
+
// src/utils/roleHelpers.ts
|
|
424
|
+
var RoleNames = /* @__PURE__ */ ((RoleNames2) => {
|
|
425
|
+
RoleNames2["ADMIN"] = "Admin";
|
|
426
|
+
RoleNames2["ENCARGADO"] = "Encargado";
|
|
427
|
+
RoleNames2["OWNER"] = "OWNER";
|
|
428
|
+
return RoleNames2;
|
|
429
|
+
})(RoleNames || {});
|
|
430
|
+
var ROLE_NAMES = RoleNames;
|
|
431
|
+
function isAdminRole(roleName) {
|
|
432
|
+
return roleName === "Admin" /* ADMIN */;
|
|
433
|
+
}
|
|
434
|
+
function isEncargadoRole(roleName) {
|
|
435
|
+
return roleName === "Encargado" /* ENCARGADO */;
|
|
436
|
+
}
|
|
437
|
+
function canAccessFeature(userRole, allowedRoles) {
|
|
438
|
+
if (!userRole) return false;
|
|
439
|
+
if (userRole === "OWNER" /* OWNER */) return true;
|
|
440
|
+
return allowedRoles.includes(userRole);
|
|
441
|
+
}
|
|
442
|
+
function getRoleDisplayName(roleName) {
|
|
443
|
+
if (!roleName) return "";
|
|
444
|
+
switch (roleName) {
|
|
445
|
+
case "Admin" /* ADMIN */:
|
|
446
|
+
return "Administrador";
|
|
447
|
+
case "Encargado" /* ENCARGADO */:
|
|
448
|
+
return "Encargado";
|
|
449
|
+
case "OWNER" /* OWNER */:
|
|
450
|
+
return "Propietario";
|
|
451
|
+
default:
|
|
452
|
+
return roleName;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
function getRoleDescription(roleName) {
|
|
456
|
+
if (!roleName) return "";
|
|
457
|
+
switch (roleName) {
|
|
458
|
+
case "Admin" /* ADMIN */:
|
|
459
|
+
return "Acceso completo a todas las funcionalidades del gimnasio, gesti\xF3n de colaboradores y configuraci\xF3n";
|
|
460
|
+
case "Encargado" /* ENCARGADO */:
|
|
461
|
+
return "Gesti\xF3n diaria del gimnasio: clientes, contratos, check-ins y reportes";
|
|
462
|
+
case "OWNER" /* OWNER */:
|
|
463
|
+
return "Acceso completo a todas las funcionalidades, organizaci\xF3n y suscripci\xF3n";
|
|
464
|
+
default:
|
|
465
|
+
return "";
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
function getRoleCapabilities(roleName) {
|
|
469
|
+
if (!roleName) return [];
|
|
470
|
+
switch (roleName) {
|
|
471
|
+
case "OWNER" /* OWNER */:
|
|
472
|
+
return [
|
|
473
|
+
"Acceso completo a todas las funcionalidades",
|
|
474
|
+
"Gesti\xF3n de organizaci\xF3n",
|
|
475
|
+
"Gesti\xF3n de suscripci\xF3n y facturaci\xF3n",
|
|
476
|
+
"Gesti\xF3n completa de clientes",
|
|
477
|
+
"Gesti\xF3n completa de contratos",
|
|
478
|
+
"Gesti\xF3n de colaboradores",
|
|
479
|
+
"Configuraci\xF3n del gimnasio",
|
|
480
|
+
"Gesti\xF3n de planes",
|
|
481
|
+
"Gesti\xF3n de proveedores",
|
|
482
|
+
"Gesti\xF3n de m\xE9todos de pago",
|
|
483
|
+
"Reportes y estad\xEDsticas",
|
|
484
|
+
"Gesti\xF3n de inventario",
|
|
485
|
+
"Check-ins"
|
|
486
|
+
];
|
|
487
|
+
case "Admin" /* ADMIN */:
|
|
488
|
+
return [
|
|
489
|
+
"Gesti\xF3n completa de clientes",
|
|
490
|
+
"Gesti\xF3n completa de contratos",
|
|
491
|
+
"Gesti\xF3n de colaboradores",
|
|
492
|
+
"Configuraci\xF3n del gimnasio",
|
|
493
|
+
"Gesti\xF3n de planes",
|
|
494
|
+
"Gesti\xF3n de proveedores",
|
|
495
|
+
"Gesti\xF3n de m\xE9todos de pago",
|
|
496
|
+
"Reportes y estad\xEDsticas",
|
|
497
|
+
"Gesti\xF3n de inventario",
|
|
498
|
+
"Check-ins"
|
|
499
|
+
];
|
|
500
|
+
case "Encargado" /* ENCARGADO */:
|
|
501
|
+
return [
|
|
502
|
+
"Gesti\xF3n de clientes (ver, crear, editar)",
|
|
503
|
+
"Creaci\xF3n y renovaci\xF3n de contratos",
|
|
504
|
+
"Check-ins",
|
|
505
|
+
"Ver reportes",
|
|
506
|
+
"Gesti\xF3n de inventario",
|
|
507
|
+
"Ventas"
|
|
508
|
+
];
|
|
509
|
+
default:
|
|
510
|
+
return [];
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
// src/events/whatsapp.events.ts
|
|
515
|
+
var WHATSAPP_EVENTS = {
|
|
516
|
+
MESSAGE_SEND: "whatsapp/message.send",
|
|
517
|
+
MESSAGE_RECEIVED: "whatsapp/message.received",
|
|
518
|
+
CONNECTION_UPDATE: "whatsapp/connection.update"
|
|
519
|
+
};
|
|
520
|
+
var templateGenerationRequestSchema = z.object({
|
|
521
|
+
templateCode: z.string(),
|
|
522
|
+
templateMetadata: z.object({
|
|
523
|
+
title: z.string(),
|
|
524
|
+
description: z.string(),
|
|
525
|
+
variables: z.array(z.string()),
|
|
526
|
+
exampleValues: z.record(z.string())
|
|
527
|
+
}),
|
|
528
|
+
userPrompt: z.string().optional(),
|
|
529
|
+
language: z.string().default("es")
|
|
530
|
+
});
|
|
531
|
+
var aiGeneratedTemplateSchema = z.object({
|
|
532
|
+
message: z.string().describe("Mensaje generado con variables en formato {{variable}}"),
|
|
533
|
+
tone: z.enum(["professional", "friendly", "casual", "urgent"]).describe("Tono del mensaje"),
|
|
534
|
+
usedVariables: z.array(z.string()).describe("Variables utilizadas en el mensaje"),
|
|
535
|
+
suggestions: z.array(z.string()).optional().describe("Sugerencias adicionales")
|
|
536
|
+
});
|
|
537
|
+
|
|
538
|
+
export { AssetCategory, AssetStatus, CACHE_TTL, ClientStatus, CollaboratorStatus, CommentType, ContractAssetType, ContractStatus, DATE_FORMATS, EvaluationAssetCategory, EvaluationAssetStage, EvaluationStatus, EvaluationType, FILE_LIMITS, HEADERS, InvitationStatus, LeadStatus, PAGINATION_DEFAULTS, PERMISSIONS, PaymentFrequency, PlanStatus, ROLE_NAMES, ROLE_PERMISSIONS, RoleNames, SubscriptionStatus, TEMPLATE_CODES, TEMPLATE_METADATA, TemplateCode, TemplateType, UserType, WHATSAPP_EVENTS, WHATSAPP_TEMPLATE_EVENTS, aiGeneratedTemplateSchema, canAccessFeature, getRoleCapabilities, getRoleDescription, getRoleDisplayName, isAdminRole, isEncargadoRole, templateGenerationRequestSchema };
|
|
298
539
|
//# sourceMappingURL=index.mjs.map
|
|
299
540
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/enums.ts","../src/constants.ts"],"names":["UserType","SubscriptionStatus","CollaboratorStatus","InvitationStatus","ClientStatus","PlanStatus","ContractStatus","PaymentFrequency","AssetStatus","EvaluationType","EvaluationStatus","CommentType","AssetCategory","ContractAssetType","EvaluationAssetStage","EvaluationAssetCategory","LeadStatus"],"mappings":"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","file":"index.mjs","sourcesContent":["export enum UserType {\n OWNER = 'owner',\n COLLABORATOR = 'collaborator',\n}\n\nexport enum SubscriptionStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n EXPIRED = 'expired',\n PAUSED = 'paused',\n PENDING_UPGRADE = 'pending_upgrade',\n}\n\nexport enum CollaboratorStatus {\n PENDING = 'pending',\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n}\n\nexport enum InvitationStatus {\n PENDING = 'pending',\n ACCEPTED = 'accepted',\n EXPIRED = 'expired',\n}\n\nexport enum ClientStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n}\n\nexport enum PlanStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n ARCHIVED = 'archived',\n}\n\nexport enum ContractStatus {\n PENDING = 'pending',\n ACTIVE = 'active',\n EXPIRING_SOON = 'expiring_soon',\n EXPIRED = 'expired',\n CANCELLED = 'cancelled',\n FOR_RENEW = 'for_renew',\n}\n\nexport enum PaymentFrequency {\n MONTHLY = 'monthly',\n QUARTERLY = 'quarterly',\n ANNUAL = 'annual',\n}\n\nexport enum AssetStatus {\n ACTIVE = 'active',\n DELETED = 'deleted',\n}\n\nexport enum EvaluationType {\n INITIAL = 'initial',\n PROGRESS = 'progress',\n FINAL = 'final',\n}\n\nexport enum EvaluationStatus {\n OPEN = 'open',\n IN_PROGRESS = 'in_progress',\n COMPLETED = 'completed',\n CANCELLED = 'cancelled',\n}\n\nexport enum CommentType {\n PROGRESS_NOTE = 'progress_note',\n PHONE_CALL = 'phone_call',\n MEETING = 'meeting',\n REMINDER = 'reminder',\n OTHER = 'other',\n}\n\nexport enum AssetCategory {\n MEDICAL_DOCUMENT = 'medical_document',\n IDENTIFICATION = 'identification',\n INSURANCE = 'insurance',\n CONTRACT_COPY = 'contract_copy',\n OTHER = 'other',\n}\n\nexport enum ContractAssetType {\n PAYMENT_RECEIPT = 'payment_receipt',\n CONTRACT_DOCUMENT = 'contract_document',\n IDENTIFICATION = 'identification',\n OTHER = 'other',\n}\n\nexport enum EvaluationAssetStage {\n INITIAL = 'initial',\n PROGRESS = 'progress',\n FINAL = 'final',\n}\n\nexport enum EvaluationAssetCategory {\n BODY_PHOTO = 'body_photo',\n MEASUREMENT_PHOTO = 'measurement_photo',\n DOCUMENT = 'document',\n REPORT = 'report',\n OTHER = 'other',\n}\n\nexport enum LeadStatus {\n NEW = 'NEW',\n CONTACTED = 'CONTACTED',\n INTERESTED = 'INTERESTED',\n CONVERTED = 'CONVERTED',\n LOST = 'LOST',\n}","// Permission constants\nexport const PERMISSIONS = {\n // Organizations\n ORGANIZATIONS_CREATE: 'ORGANIZATIONS_CREATE',\n ORGANIZATIONS_READ: 'ORGANIZATIONS_READ',\n ORGANIZATIONS_UPDATE: 'ORGANIZATIONS_UPDATE',\n ORGANIZATIONS_DELETE: 'ORGANIZATIONS_DELETE',\n \n // Gyms\n GYMS_CREATE: 'GYMS_CREATE',\n GYMS_READ: 'GYMS_READ',\n GYMS_UPDATE: 'GYMS_UPDATE',\n GYMS_DELETE: 'GYMS_DELETE',\n \n // Collaborators\n COLLABORATORS_CREATE: 'COLLABORATORS_CREATE',\n COLLABORATORS_READ: 'COLLABORATORS_READ',\n COLLABORATORS_UPDATE: 'COLLABORATORS_UPDATE',\n COLLABORATORS_DELETE: 'COLLABORATORS_DELETE',\n \n // Clients\n CLIENTS_CREATE: 'CLIENTS_CREATE',\n CLIENTS_READ: 'CLIENTS_READ',\n CLIENTS_UPDATE: 'CLIENTS_UPDATE',\n CLIENTS_DELETE: 'CLIENTS_DELETE',\n \n // Contracts\n CONTRACTS_CREATE: 'CONTRACTS_CREATE',\n CONTRACTS_READ: 'CONTRACTS_READ',\n CONTRACTS_UPDATE: 'CONTRACTS_UPDATE',\n CONTRACTS_APPROVE: 'CONTRACTS_APPROVE',\n CONTRACTS_CANCEL: 'CONTRACTS_CANCEL',\n \n // Evaluations\n EVALUATIONS_CREATE: 'EVALUATIONS_CREATE',\n EVALUATIONS_READ: 'EVALUATIONS_READ',\n EVALUATIONS_UPDATE: 'EVALUATIONS_UPDATE',\n EVALUATIONS_DELETE: 'EVALUATIONS_DELETE',\n \n // Check-ins\n CHECKINS_CREATE: 'CHECKINS_CREATE',\n CHECKINS_READ: 'CHECKINS_READ',\n \n // Leads\n LEADS_CREATE: 'LEADS_CREATE',\n LEADS_READ: 'LEADS_READ',\n LEADS_UPDATE: 'LEADS_UPDATE',\n LEADS_DELETE: 'LEADS_DELETE',\n \n // Reports\n REPORTS_VIEW: 'REPORTS_VIEW',\n REPORTS_FINANCIAL: 'REPORTS_FINANCIAL',\n \n // Settings\n SETTINGS_UPDATE: 'SETTINGS_UPDATE',\n \n // Assets\n ASSETS_CREATE: 'ASSETS_CREATE',\n ASSETS_READ: 'ASSETS_READ',\n ASSETS_DELETE: 'ASSETS_DELETE',\n \n // Files\n FILES_CREATE: 'FILES_CREATE',\n FILES_READ: 'FILES_READ',\n FILES_DELETE: 'FILES_DELETE',\n \n // Products\n PRODUCTS_CREATE: 'PRODUCTS_CREATE',\n PRODUCTS_READ: 'PRODUCTS_READ',\n PRODUCTS_UPDATE: 'PRODUCTS_UPDATE',\n PRODUCTS_DELETE: 'PRODUCTS_DELETE',\n \n // Product Categories\n PRODUCT_CATEGORIES_CREATE: 'PRODUCT_CATEGORIES_CREATE',\n PRODUCT_CATEGORIES_READ: 'PRODUCT_CATEGORIES_READ',\n PRODUCT_CATEGORIES_UPDATE: 'PRODUCT_CATEGORIES_UPDATE',\n PRODUCT_CATEGORIES_DELETE: 'PRODUCT_CATEGORIES_DELETE',\n \n // Sales\n SALES_CREATE: 'SALES_CREATE',\n SALES_READ: 'SALES_READ',\n SALES_UPDATE: 'SALES_UPDATE',\n SALES_DELETE: 'SALES_DELETE',\n \n // Suppliers\n SUPPLIERS_CREATE: 'SUPPLIERS_CREATE',\n SUPPLIERS_READ: 'SUPPLIERS_READ',\n SUPPLIERS_UPDATE: 'SUPPLIERS_UPDATE',\n SUPPLIERS_DELETE: 'SUPPLIERS_DELETE',\n \n // Payment Methods\n PAYMENT_METHODS_CREATE: 'PAYMENT_METHODS_CREATE',\n PAYMENT_METHODS_READ: 'PAYMENT_METHODS_READ',\n PAYMENT_METHODS_UPDATE: 'PAYMENT_METHODS_UPDATE',\n PAYMENT_METHODS_DELETE: 'PAYMENT_METHODS_DELETE',\n \n // Super Admin\n SUPER_ADMIN: 'SUPER_ADMIN',\n} as const;\n\n// Role definitions\nexport const ROLE_PERMISSIONS = {\n OWNER: Object.values(PERMISSIONS),\n MANAGER: [\n PERMISSIONS.GYMS_READ,\n PERMISSIONS.COLLABORATORS_READ,\n PERMISSIONS.CLIENTS_CREATE,\n PERMISSIONS.CLIENTS_READ,\n PERMISSIONS.CLIENTS_UPDATE,\n PERMISSIONS.CONTRACTS_CREATE,\n PERMISSIONS.CONTRACTS_READ,\n PERMISSIONS.EVALUATIONS_CREATE,\n PERMISSIONS.EVALUATIONS_READ,\n PERMISSIONS.EVALUATIONS_UPDATE,\n PERMISSIONS.CHECKINS_CREATE,\n PERMISSIONS.CHECKINS_READ,\n PERMISSIONS.REPORTS_VIEW,\n PERMISSIONS.ASSETS_CREATE,\n PERMISSIONS.ASSETS_READ,\n PERMISSIONS.ASSETS_DELETE,\n PERMISSIONS.FILES_CREATE,\n PERMISSIONS.FILES_READ,\n PERMISSIONS.FILES_DELETE,\n PERMISSIONS.PRODUCTS_CREATE,\n PERMISSIONS.PRODUCTS_READ,\n PERMISSIONS.PRODUCTS_UPDATE,\n PERMISSIONS.PRODUCTS_DELETE,\n PERMISSIONS.PRODUCT_CATEGORIES_CREATE,\n PERMISSIONS.PRODUCT_CATEGORIES_READ,\n PERMISSIONS.PRODUCT_CATEGORIES_UPDATE,\n PERMISSIONS.PRODUCT_CATEGORIES_DELETE,\n PERMISSIONS.SALES_CREATE,\n PERMISSIONS.SALES_READ,\n PERMISSIONS.SALES_UPDATE,\n PERMISSIONS.SUPPLIERS_CREATE,\n PERMISSIONS.SUPPLIERS_READ,\n PERMISSIONS.SUPPLIERS_UPDATE,\n PERMISSIONS.SUPPLIERS_DELETE,\n PERMISSIONS.PAYMENT_METHODS_CREATE,\n PERMISSIONS.PAYMENT_METHODS_READ,\n PERMISSIONS.PAYMENT_METHODS_UPDATE,\n PERMISSIONS.PAYMENT_METHODS_DELETE,\n ],\n STAFF: [\n PERMISSIONS.CLIENTS_READ,\n PERMISSIONS.CHECKINS_CREATE,\n PERMISSIONS.CHECKINS_READ,\n PERMISSIONS.PRODUCTS_READ,\n PERMISSIONS.PRODUCT_CATEGORIES_READ,\n PERMISSIONS.SALES_CREATE,\n PERMISSIONS.SALES_READ,\n PERMISSIONS.PAYMENT_METHODS_READ,\n ],\n ADVISOR: [\n PERMISSIONS.CLIENTS_READ,\n PERMISSIONS.EVALUATIONS_CREATE,\n PERMISSIONS.EVALUATIONS_READ,\n PERMISSIONS.EVALUATIONS_UPDATE,\n PERMISSIONS.ASSETS_CREATE,\n PERMISSIONS.ASSETS_READ,\n PERMISSIONS.FILES_CREATE,\n PERMISSIONS.FILES_READ,\n ],\n} as const;\n\n// Cache TTL values (in seconds)\nexport const CACHE_TTL = {\n USER_PERMISSIONS: 900, // 15 minutes\n GYM_DATA: 1800, // 30 minutes\n STATIC_DATA: 3600, // 60 minutes\n REPORTS: 300, // 5 minutes\n DASHBOARD: 180, // 3 minutes\n} as const;\n\n// File size limits (in bytes)\nexport const FILE_LIMITS = {\n MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB\n MAX_IMAGE_SIZE: 5 * 1024 * 1024, // 5MB\n MAX_DOCUMENT_SIZE: 10 * 1024 * 1024, // 10MB\n} as const;\n\n// Pagination defaults\nexport const PAGINATION_DEFAULTS = {\n PAGE: 1,\n LIMIT: 20,\n MAX_LIMIT: 100,\n} as const;\n\n// Date formats\nexport const DATE_FORMATS = {\n DATE_ONLY: 'YYYY-MM-DD',\n DATETIME: 'YYYY-MM-DD HH:mm:ss',\n TIME_ONLY: 'HH:mm:ss',\n} as const;\n\n// Headers\nexport const HEADERS = {\n GYM_ID: 'X-Gym-Id',\n REQUEST_ID: 'X-Request-Id',\n} as const;"]}
|
|
1
|
+
{"version":3,"sources":["../src/types/whatsapp-templates.types.ts","../src/enums.ts","../src/constants/template-codes.constants.ts","../src/constants.ts","../src/utils/roleHelpers.ts","../src/events/whatsapp.events.ts","../src/schemas/ai-template.schema.ts"],"names":["UserType","SubscriptionStatus","CollaboratorStatus","InvitationStatus","ClientStatus","PlanStatus","ContractStatus","PaymentFrequency","AssetStatus","EvaluationType","EvaluationStatus","CommentType","AssetCategory","ContractAssetType","EvaluationAssetStage","EvaluationAssetCategory","LeadStatus","RoleNames"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Template codes for WhatsApp messages\n */\nexport const TemplateCode = {\n WELCOME: 'WELCOME',\n MEMBERSHIP_PURCHASE: 'MEMBERSHIP_PURCHASE',\n MEMBERSHIP_RENEWAL: 'MEMBERSHIP_RENEWAL',\n MEMBERSHIP_EXPIRING: 'MEMBERSHIP_EXPIRING',\n PAYMENT_REMINDER: 'PAYMENT_REMINDER',\n BIRTHDAY: 'BIRTHDAY',\n PAYMENT_RECEIPT: 'PAYMENT_RECEIPT',\n} as const;\n\nexport type TemplateCodeValue = (typeof TemplateCode)[keyof typeof TemplateCode];\nexport type TemplateCode = TemplateCodeValue;\n\n/**\n * Template types\n */\nexport const TemplateType = {\n STATIC: 'STATIC',\n PROMPT: 'PROMPT',\n} as const;\n\nexport type TemplateTypeValue = (typeof TemplateType)[keyof typeof TemplateType];\nexport type TemplateType = TemplateTypeValue;\n\n/**\n * Base interface for WhatsApp template data\n */\nexport interface WhatsAppTemplateData {\n gymId: string;\n clientId: string;\n phoneNumber: string;\n templateCode: TemplateCode;\n variables: Record<string, any>;\n metadata?: {\n contractId?: string;\n userId?: string;\n source?: string;\n instanceName?: string;\n };\n}\n\n/**\n * Welcome message template data\n */\nexport interface WelcomeTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.WELCOME;\n variables: {\n clientName: string;\n gymName: string;\n registrationDate: string;\n };\n}\n\n/**\n * Membership purchase template data\n */\nexport interface MembershipPurchaseTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.MEMBERSHIP_PURCHASE;\n variables: {\n clientName: string;\n planName: string;\n startDate: string;\n endDate: string;\n amount: string;\n paymentFrequency: string;\n };\n}\n\n/**\n * Membership renewal template data\n */\nexport interface MembershipRenewalTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.MEMBERSHIP_RENEWAL;\n variables: {\n clientName: string;\n planName: string;\n newEndDate: string;\n amount: string;\n };\n}\n\n/**\n * Membership expiring template data\n */\nexport interface MembershipExpiringTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.MEMBERSHIP_EXPIRING;\n variables: {\n clientName: string;\n planName: string;\n expirationDate: string;\n daysRemaining: string;\n };\n}\n\n/**\n * Payment reminder template data\n */\nexport interface PaymentReminderTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.PAYMENT_REMINDER;\n variables: {\n clientName: string;\n amount: string;\n dueDate: string;\n planName: string;\n };\n}\n\n/**\n * Birthday template data\n */\nexport interface BirthdayTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.BIRTHDAY;\n variables: {\n clientName: string;\n gymName: string;\n age: string;\n };\n}\n\n/**\n * Payment receipt template data\n */\nexport interface PaymentReceiptTemplateData\n extends Omit<WhatsAppTemplateData, 'templateCode' | 'variables'> {\n templateCode: typeof TemplateCode.PAYMENT_RECEIPT;\n variables: {\n gymName: string;\n receiptNumber: string;\n date: string;\n clientName: string;\n items: string;\n amount: string;\n paymentMethod: string;\n };\n metadata?: {\n saleId?: string;\n userId?: string;\n source?: string;\n instanceName?: string;\n };\n}\n\n/**\n * Union type for all template data types\n */\nexport type WhatsAppTemplateEventData =\n | WelcomeTemplateData\n | MembershipPurchaseTemplateData\n | MembershipRenewalTemplateData\n | MembershipExpiringTemplateData\n | PaymentReminderTemplateData\n | BirthdayTemplateData\n | PaymentReceiptTemplateData;\n\n/**\n * Template metadata interface\n */\nexport interface TemplateMetadata {\n code: TemplateCode;\n title: string;\n description: string;\n icon: string;\n variables: string[];\n exampleValues: Record<string, string>;\n}\n","export enum UserType {\n OWNER = 'owner',\n COLLABORATOR = 'collaborator',\n}\n\nexport enum SubscriptionStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n EXPIRED = 'expired',\n PAUSED = 'paused',\n PENDING_UPGRADE = 'pending_upgrade',\n}\n\nexport enum CollaboratorStatus {\n PENDING = 'pending',\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n}\n\nexport enum InvitationStatus {\n PENDING = 'pending',\n ACCEPTED = 'accepted',\n CANCELLED = 'cancelled',\n EXPIRED = 'expired',\n}\n\nexport enum ClientStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n}\n\nexport enum PlanStatus {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n ARCHIVED = 'archived',\n}\n\nexport enum ContractStatus {\n PENDING = 'pending',\n ACTIVE = 'active',\n EXPIRING_SOON = 'expiring_soon',\n EXPIRED = 'expired',\n CANCELLED = 'cancelled',\n FOR_RENEW = 'for_renew',\n}\n\nexport enum PaymentFrequency {\n MONTHLY = 'monthly',\n QUARTERLY = 'quarterly',\n ANNUAL = 'annual',\n}\n\nexport enum AssetStatus {\n ACTIVE = 'active',\n DELETED = 'deleted',\n}\n\nexport enum EvaluationType {\n INITIAL = 'initial',\n PROGRESS = 'progress',\n FINAL = 'final',\n}\n\nexport enum EvaluationStatus {\n OPEN = 'open',\n IN_PROGRESS = 'in_progress',\n COMPLETED = 'completed',\n CANCELLED = 'cancelled',\n}\n\nexport enum CommentType {\n PROGRESS_NOTE = 'progress_note',\n PHONE_CALL = 'phone_call',\n MEETING = 'meeting',\n REMINDER = 'reminder',\n OTHER = 'other',\n}\n\nexport enum AssetCategory {\n MEDICAL_DOCUMENT = 'medical_document',\n IDENTIFICATION = 'identification',\n INSURANCE = 'insurance',\n CONTRACT_COPY = 'contract_copy',\n OTHER = 'other',\n}\n\nexport enum ContractAssetType {\n PAYMENT_RECEIPT = 'payment_receipt',\n CONTRACT_DOCUMENT = 'contract_document',\n IDENTIFICATION = 'identification',\n OTHER = 'other',\n}\n\nexport enum EvaluationAssetStage {\n INITIAL = 'initial',\n PROGRESS = 'progress',\n FINAL = 'final',\n}\n\nexport enum EvaluationAssetCategory {\n BODY_PHOTO = 'body_photo',\n MEASUREMENT_PHOTO = 'measurement_photo',\n DOCUMENT = 'document',\n REPORT = 'report',\n OTHER = 'other',\n}\n\nexport enum LeadStatus {\n NEW = 'NEW',\n CONTACTED = 'CONTACTED',\n INTERESTED = 'INTERESTED',\n CONVERTED = 'CONVERTED',\n LOST = 'LOST',\n}\n","import { TemplateCode } from '../types/whatsapp-templates.types';\n\n/**\n * Template code constants\n */\nexport const TEMPLATE_CODES = {\n WELCOME: TemplateCode.WELCOME,\n MEMBERSHIP_PURCHASE: TemplateCode.MEMBERSHIP_PURCHASE,\n MEMBERSHIP_RENEWAL: TemplateCode.MEMBERSHIP_RENEWAL,\n MEMBERSHIP_EXPIRING: TemplateCode.MEMBERSHIP_EXPIRING,\n PAYMENT_REMINDER: TemplateCode.PAYMENT_REMINDER,\n BIRTHDAY: TemplateCode.BIRTHDAY,\n PAYMENT_RECEIPT: TemplateCode.PAYMENT_RECEIPT,\n} as const;\n\n/**\n * Event names for WhatsApp template events\n */\nexport const WHATSAPP_TEMPLATE_EVENTS = {\n SEND_TEMPLATE: 'whatsapp/template.send',\n TEMPLATE_SENT: 'whatsapp/template.sent',\n TEMPLATE_FAILED: 'whatsapp/template.failed',\n} as const;\n\n/**\n * Template metadata mapping\n */\nexport const TEMPLATE_METADATA = {\n [TemplateCode.WELCOME]: {\n code: TemplateCode.WELCOME,\n title: 'Mensaje de Bienvenida',\n description: 'Mensaje para nuevos clientes',\n icon: 'UserPlus',\n variables: ['clientName', 'gymName', 'registrationDate'],\n exampleValues: {\n clientName: 'Juan Pérez',\n gymName: 'GymSpace',\n registrationDate: '15/01/2024',\n },\n },\n [TemplateCode.MEMBERSHIP_PURCHASE]: {\n code: TemplateCode.MEMBERSHIP_PURCHASE,\n title: 'Compra de Membresía',\n description: 'Confirmación de nueva membresía',\n icon: 'ShoppingCart',\n variables: ['clientName', 'planName', 'startDate', 'endDate', 'amount', 'paymentFrequency'],\n exampleValues: {\n clientName: 'María López',\n planName: 'Premium',\n startDate: '01/02/2024',\n endDate: '01/03/2024',\n amount: '$50.00',\n paymentFrequency: 'mensual',\n },\n },\n [TemplateCode.MEMBERSHIP_RENEWAL]: {\n code: TemplateCode.MEMBERSHIP_RENEWAL,\n title: 'Renovación de Membresía',\n description: 'Confirmación de renovación',\n icon: 'RefreshCw',\n variables: ['clientName', 'planName', 'newEndDate', 'amount'],\n exampleValues: {\n clientName: 'Carlos Ruiz',\n planName: 'Básico',\n newEndDate: '15/04/2024',\n amount: '$30.00',\n },\n },\n [TemplateCode.MEMBERSHIP_EXPIRING]: {\n code: TemplateCode.MEMBERSHIP_EXPIRING,\n title: 'Membresía Por Vencer',\n description: 'Recordatorio de expiración próxima',\n icon: 'AlertCircle',\n variables: ['clientName', 'planName', 'expirationDate', 'daysRemaining'],\n exampleValues: {\n clientName: 'Ana García',\n planName: 'Premium',\n expirationDate: '20/02/2024',\n daysRemaining: '3',\n },\n },\n [TemplateCode.PAYMENT_REMINDER]: {\n code: TemplateCode.PAYMENT_REMINDER,\n title: 'Recordatorio de Pago',\n description: 'Recordatorio de pago pendiente',\n icon: 'DollarSign',\n variables: ['clientName', 'amount', 'dueDate', 'planName'],\n exampleValues: {\n clientName: 'Pedro Sánchez',\n amount: '$40.00',\n dueDate: '25/02/2024',\n planName: 'Estándar',\n },\n },\n [TemplateCode.BIRTHDAY]: {\n code: TemplateCode.BIRTHDAY,\n title: 'Cumpleaños',\n description: 'Felicitación de cumpleaños',\n icon: 'Cake',\n variables: ['clientName', 'gymName', 'age'],\n exampleValues: {\n clientName: 'Laura Martínez',\n gymName: 'GymSpace',\n age: '28',\n },\n },\n [TemplateCode.PAYMENT_RECEIPT]: {\n code: TemplateCode.PAYMENT_RECEIPT,\n title: 'Comprobante de Pago',\n description: 'Comprobante de venta pagada',\n icon: 'Receipt',\n variables: [\n 'gymName',\n 'receiptNumber',\n 'date',\n 'clientName',\n 'items',\n 'amount',\n 'paymentMethod',\n ],\n exampleValues: {\n gymName: 'GymSpace',\n receiptNumber: 'V-001',\n date: '15/01/2024',\n clientName: 'Juan Pérez',\n items: '• Proteína x2 = Q100.00\\n• Creatina x1 = Q50.00',\n amount: 'Q150.00',\n paymentMethod: 'Efectivo',\n },\n },\n} as const;\n","// Permission constants\nexport const PERMISSIONS = {\n // Organizations\n ORGANIZATIONS_CREATE: 'ORGANIZATIONS_CREATE',\n ORGANIZATIONS_READ: 'ORGANIZATIONS_READ',\n ORGANIZATIONS_UPDATE: 'ORGANIZATIONS_UPDATE',\n ORGANIZATIONS_DELETE: 'ORGANIZATIONS_DELETE',\n\n // Gyms\n GYMS_CREATE: 'GYMS_CREATE',\n GYMS_READ: 'GYMS_READ',\n GYMS_UPDATE: 'GYMS_UPDATE',\n GYMS_DELETE: 'GYMS_DELETE',\n\n // Collaborators\n COLLABORATORS_CREATE: 'COLLABORATORS_CREATE',\n COLLABORATORS_READ: 'COLLABORATORS_READ',\n COLLABORATORS_UPDATE: 'COLLABORATORS_UPDATE',\n COLLABORATORS_DELETE: 'COLLABORATORS_DELETE',\n\n // Clients\n CLIENTS_CREATE: 'CLIENTS_CREATE',\n CLIENTS_READ: 'CLIENTS_READ',\n CLIENTS_UPDATE: 'CLIENTS_UPDATE',\n CLIENTS_DELETE: 'CLIENTS_DELETE',\n\n // Contracts\n CONTRACTS_CREATE: 'CONTRACTS_CREATE',\n CONTRACTS_READ: 'CONTRACTS_READ',\n CONTRACTS_UPDATE: 'CONTRACTS_UPDATE',\n CONTRACTS_APPROVE: 'CONTRACTS_APPROVE',\n CONTRACTS_CANCEL: 'CONTRACTS_CANCEL',\n\n // Evaluations\n EVALUATIONS_CREATE: 'EVALUATIONS_CREATE',\n EVALUATIONS_READ: 'EVALUATIONS_READ',\n EVALUATIONS_UPDATE: 'EVALUATIONS_UPDATE',\n EVALUATIONS_DELETE: 'EVALUATIONS_DELETE',\n\n // Check-ins\n CHECKINS_CREATE: 'CHECKINS_CREATE',\n CHECKINS_READ: 'CHECKINS_READ',\n\n // Leads\n LEADS_CREATE: 'LEADS_CREATE',\n LEADS_READ: 'LEADS_READ',\n LEADS_UPDATE: 'LEADS_UPDATE',\n LEADS_DELETE: 'LEADS_DELETE',\n\n // Reports\n REPORTS_VIEW: 'REPORTS_VIEW',\n REPORTS_FINANCIAL: 'REPORTS_FINANCIAL',\n\n // Settings\n SETTINGS_UPDATE: 'SETTINGS_UPDATE',\n\n // Assets\n ASSETS_CREATE: 'ASSETS_CREATE',\n ASSETS_READ: 'ASSETS_READ',\n ASSETS_DELETE: 'ASSETS_DELETE',\n\n // Files\n FILES_CREATE: 'FILES_CREATE',\n FILES_READ: 'FILES_READ',\n FILES_DELETE: 'FILES_DELETE',\n\n // Products\n PRODUCTS_CREATE: 'PRODUCTS_CREATE',\n PRODUCTS_READ: 'PRODUCTS_READ',\n PRODUCTS_UPDATE: 'PRODUCTS_UPDATE',\n PRODUCTS_DELETE: 'PRODUCTS_DELETE',\n\n // Product Categories\n PRODUCT_CATEGORIES_CREATE: 'PRODUCT_CATEGORIES_CREATE',\n PRODUCT_CATEGORIES_READ: 'PRODUCT_CATEGORIES_READ',\n PRODUCT_CATEGORIES_UPDATE: 'PRODUCT_CATEGORIES_UPDATE',\n PRODUCT_CATEGORIES_DELETE: 'PRODUCT_CATEGORIES_DELETE',\n\n // Sales\n SALES_CREATE: 'SALES_CREATE',\n SALES_READ: 'SALES_READ',\n SALES_UPDATE: 'SALES_UPDATE',\n SALES_DELETE: 'SALES_DELETE',\n\n // Suppliers\n SUPPLIERS_CREATE: 'SUPPLIERS_CREATE',\n SUPPLIERS_READ: 'SUPPLIERS_READ',\n SUPPLIERS_UPDATE: 'SUPPLIERS_UPDATE',\n SUPPLIERS_DELETE: 'SUPPLIERS_DELETE',\n\n // Payment Methods\n PAYMENT_METHODS_CREATE: 'PAYMENT_METHODS_CREATE',\n PAYMENT_METHODS_READ: 'PAYMENT_METHODS_READ',\n PAYMENT_METHODS_UPDATE: 'PAYMENT_METHODS_UPDATE',\n PAYMENT_METHODS_DELETE: 'PAYMENT_METHODS_DELETE',\n\n // WhatsApp\n WHATSAPP_READ: 'WHATSAPP_READ',\n WHATSAPP_SEND: 'WHATSAPP_SEND',\n WHATSAPP_MANAGE: 'WHATSAPP_MANAGE',\n\n // Special permissions\n SUPER_ADMIN: 'SUPER_ADMIN',\n OWNER: 'OWNER',\n All: 'ALL',\n} as const;\n\n// Role definitions\nexport const ROLE_PERMISSIONS = {\n ADMIN: Object.values(PERMISSIONS),\n MANAGER: [\n PERMISSIONS.GYMS_READ,\n PERMISSIONS.COLLABORATORS_READ,\n PERMISSIONS.CLIENTS_CREATE,\n PERMISSIONS.CLIENTS_READ,\n PERMISSIONS.CLIENTS_UPDATE,\n PERMISSIONS.CONTRACTS_CREATE,\n PERMISSIONS.CONTRACTS_READ,\n PERMISSIONS.EVALUATIONS_CREATE,\n PERMISSIONS.EVALUATIONS_READ,\n PERMISSIONS.EVALUATIONS_UPDATE,\n PERMISSIONS.CHECKINS_CREATE,\n PERMISSIONS.CHECKINS_READ,\n PERMISSIONS.REPORTS_VIEW,\n PERMISSIONS.ASSETS_CREATE,\n PERMISSIONS.ASSETS_READ,\n PERMISSIONS.ASSETS_DELETE,\n PERMISSIONS.FILES_CREATE,\n PERMISSIONS.FILES_READ,\n PERMISSIONS.FILES_DELETE,\n PERMISSIONS.PRODUCTS_CREATE,\n PERMISSIONS.PRODUCTS_READ,\n PERMISSIONS.PRODUCTS_UPDATE,\n PERMISSIONS.PRODUCTS_DELETE,\n PERMISSIONS.PRODUCT_CATEGORIES_CREATE,\n PERMISSIONS.PRODUCT_CATEGORIES_READ,\n PERMISSIONS.PRODUCT_CATEGORIES_UPDATE,\n PERMISSIONS.PRODUCT_CATEGORIES_DELETE,\n PERMISSIONS.SALES_CREATE,\n PERMISSIONS.SALES_READ,\n PERMISSIONS.SALES_UPDATE,\n PERMISSIONS.SUPPLIERS_CREATE,\n PERMISSIONS.SUPPLIERS_READ,\n PERMISSIONS.SUPPLIERS_UPDATE,\n PERMISSIONS.SUPPLIERS_DELETE,\n PERMISSIONS.PAYMENT_METHODS_CREATE,\n PERMISSIONS.PAYMENT_METHODS_READ,\n PERMISSIONS.PAYMENT_METHODS_UPDATE,\n PERMISSIONS.PAYMENT_METHODS_DELETE,\n ],\n} as const;\n\n// Cache TTL values (in seconds)\nexport const CACHE_TTL = {\n USER_PERMISSIONS: 900, // 15 minutes\n GYM_DATA: 1800, // 30 minutes\n STATIC_DATA: 3600, // 60 minutes\n REPORTS: 300, // 5 minutes\n DASHBOARD: 180, // 3 minutes\n WHATSAPP_MESSAGE_STATUS: 300, // 5 minutes\n} as const;\n\n// File size limits (in bytes)\nexport const FILE_LIMITS = {\n MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB\n MAX_IMAGE_SIZE: 5 * 1024 * 1024, // 5MB\n MAX_DOCUMENT_SIZE: 10 * 1024 * 1024, // 10MB\n} as const;\n\n// Pagination defaults\nexport const PAGINATION_DEFAULTS = {\n PAGE: 1,\n LIMIT: 20,\n MAX_LIMIT: 100,\n} as const;\n\n// Date formats\nexport const DATE_FORMATS = {\n DATE_ONLY: 'YYYY-MM-DD',\n DATETIME: 'YYYY-MM-DD HH:mm:ss',\n TIME_ONLY: 'HH:mm:ss',\n} as const;\n\n// Headers\nexport const HEADERS = {\n GYM_ID: 'X-Gym-Id',\n REQUEST_ID: 'X-Request-Id',\n} as const;\n\n// Re-export template constants\nexport * from './constants/template-codes.constants';\n","export enum RoleNames {\n ADMIN = 'Admin',\n ENCARGADO = 'Encargado',\n OWNER = 'OWNER', // Pseudo-role for gym owners\n}\n\nexport const ROLE_NAMES = RoleNames;\n\nexport type RoleName = RoleNames;\n\nexport function isAdminRole(roleName: string | null | undefined): boolean {\n return roleName === RoleNames.ADMIN;\n}\n\nexport function isEncargadoRole(roleName: string | null | undefined): boolean {\n return roleName === RoleNames.ENCARGADO;\n}\n\nexport function canAccessFeature(\n userRole: string | null | undefined,\n allowedRoles: string[] | RoleNames[]\n): boolean {\n if (!userRole) return false;\n // OWNER pseudo-role has access to everything\n if (userRole === RoleNames.OWNER) return true;\n return allowedRoles.includes(userRole as any);\n}\n\nexport function getRoleDisplayName(roleName: string | null | undefined): string {\n if (!roleName) return '';\n\n switch (roleName) {\n case RoleNames.ADMIN:\n return 'Administrador';\n case RoleNames.ENCARGADO:\n return 'Encargado';\n case RoleNames.OWNER:\n return 'Propietario';\n default:\n return roleName;\n }\n}\n\nexport function getRoleDescription(roleName: string | null | undefined): string {\n if (!roleName) return '';\n\n switch (roleName) {\n case RoleNames.ADMIN:\n return 'Acceso completo a todas las funcionalidades del gimnasio, gestión de colaboradores y configuración';\n case RoleNames.ENCARGADO:\n return 'Gestión diaria del gimnasio: clientes, contratos, check-ins y reportes';\n case RoleNames.OWNER:\n return 'Acceso completo a todas las funcionalidades, organización y suscripción';\n default:\n return '';\n }\n}\n\nexport function getRoleCapabilities(roleName: string | null | undefined): string[] {\n if (!roleName) return [];\n\n switch (roleName) {\n case RoleNames.OWNER:\n return [\n 'Acceso completo a todas las funcionalidades',\n 'Gestión de organización',\n 'Gestión de suscripción y facturación',\n 'Gestión completa de clientes',\n 'Gestión completa de contratos',\n 'Gestión de colaboradores',\n 'Configuración del gimnasio',\n 'Gestión de planes',\n 'Gestión de proveedores',\n 'Gestión de métodos de pago',\n 'Reportes y estadísticas',\n 'Gestión de inventario',\n 'Check-ins',\n ];\n case RoleNames.ADMIN:\n return [\n 'Gestión completa de clientes',\n 'Gestión completa de contratos',\n 'Gestión de colaboradores',\n 'Configuración del gimnasio',\n 'Gestión de planes',\n 'Gestión de proveedores',\n 'Gestión de métodos de pago',\n 'Reportes y estadísticas',\n 'Gestión de inventario',\n 'Check-ins',\n ];\n case RoleNames.ENCARGADO:\n return [\n 'Gestión de clientes (ver, crear, editar)',\n 'Creación y renovación de contratos',\n 'Check-ins',\n 'Ver reportes',\n 'Gestión de inventario',\n 'Ventas',\n ];\n default:\n return [];\n }\n}","/**\n * Evento para enviar un mensaje de WhatsApp\n */\nexport interface WhatsAppMessageSendEventData {\n // Identificadores\n gymId: string;\n instanceName: string; // Nombre de la instancia de Evolution API\n\n // Destinatario\n phoneNumber: string;\n\n // Contenido\n content: string;\n\n // Metadata opcional\n clientId?: string;\n templateId?: string;\n variables?: Record<string, any>;\n\n // Usuario que generó el envío\n userId?: string;\n}\n\n/**\n * Nombres de eventos de WhatsApp\n */\nexport const WHATSAPP_EVENTS = {\n MESSAGE_SEND: 'whatsapp/message.send',\n MESSAGE_RECEIVED: 'whatsapp/message.received',\n CONNECTION_UPDATE: 'whatsapp/connection.update',\n} as const;\n","import { z } from 'zod';\n\nexport const templateGenerationRequestSchema = z.object({\n templateCode: z.string(),\n templateMetadata: z.object({\n title: z.string(),\n description: z.string(),\n variables: z.array(z.string()),\n exampleValues: z.record(z.string()),\n }),\n userPrompt: z.string().optional(),\n language: z.string().default('es'),\n});\n\nexport const aiGeneratedTemplateSchema = z.object({\n message: z.string().describe('Mensaje generado con variables en formato {{variable}}'),\n tone: z.enum(['professional', 'friendly', 'casual', 'urgent']).describe('Tono del mensaje'),\n usedVariables: z.array(z.string()).describe('Variables utilizadas en el mensaje'),\n suggestions: z.array(z.string()).optional().describe('Sugerencias adicionales'),\n});\n\nexport type TemplateGenerationRequest = z.infer<typeof templateGenerationRequestSchema>;\nexport type AIGeneratedTemplate = z.infer<typeof aiGeneratedTemplateSchema>;\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gymspace/shared",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.8",
|
|
4
4
|
"description": "Shared types and interfaces for GymSpace",
|
|
5
5
|
"author": "GymSpace Team",
|
|
6
6
|
"license": "MIT",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
32
|
"scripts": {
|
|
33
|
-
"build": "tsup
|
|
33
|
+
"build": "tsup",
|
|
34
34
|
"dev": "tsup --watch",
|
|
35
35
|
"clean": "rimraf dist",
|
|
36
36
|
"typecheck": "tsc --noEmit"
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { TemplateCode } from '../types/whatsapp-templates.types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Template code constants
|
|
5
|
+
*/
|
|
6
|
+
export const TEMPLATE_CODES = {
|
|
7
|
+
WELCOME: TemplateCode.WELCOME,
|
|
8
|
+
MEMBERSHIP_PURCHASE: TemplateCode.MEMBERSHIP_PURCHASE,
|
|
9
|
+
MEMBERSHIP_RENEWAL: TemplateCode.MEMBERSHIP_RENEWAL,
|
|
10
|
+
MEMBERSHIP_EXPIRING: TemplateCode.MEMBERSHIP_EXPIRING,
|
|
11
|
+
PAYMENT_REMINDER: TemplateCode.PAYMENT_REMINDER,
|
|
12
|
+
BIRTHDAY: TemplateCode.BIRTHDAY,
|
|
13
|
+
PAYMENT_RECEIPT: TemplateCode.PAYMENT_RECEIPT,
|
|
14
|
+
} as const;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Event names for WhatsApp template events
|
|
18
|
+
*/
|
|
19
|
+
export const WHATSAPP_TEMPLATE_EVENTS = {
|
|
20
|
+
SEND_TEMPLATE: 'whatsapp/template.send',
|
|
21
|
+
TEMPLATE_SENT: 'whatsapp/template.sent',
|
|
22
|
+
TEMPLATE_FAILED: 'whatsapp/template.failed',
|
|
23
|
+
} as const;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Template metadata mapping
|
|
27
|
+
*/
|
|
28
|
+
export const TEMPLATE_METADATA = {
|
|
29
|
+
[TemplateCode.WELCOME]: {
|
|
30
|
+
code: TemplateCode.WELCOME,
|
|
31
|
+
title: 'Mensaje de Bienvenida',
|
|
32
|
+
description: 'Mensaje para nuevos clientes',
|
|
33
|
+
icon: 'UserPlus',
|
|
34
|
+
variables: ['clientName', 'gymName', 'registrationDate'],
|
|
35
|
+
exampleValues: {
|
|
36
|
+
clientName: 'Juan Pérez',
|
|
37
|
+
gymName: 'GymSpace',
|
|
38
|
+
registrationDate: '15/01/2024',
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
[TemplateCode.MEMBERSHIP_PURCHASE]: {
|
|
42
|
+
code: TemplateCode.MEMBERSHIP_PURCHASE,
|
|
43
|
+
title: 'Compra de Membresía',
|
|
44
|
+
description: 'Confirmación de nueva membresía',
|
|
45
|
+
icon: 'ShoppingCart',
|
|
46
|
+
variables: ['clientName', 'planName', 'startDate', 'endDate', 'amount', 'paymentFrequency'],
|
|
47
|
+
exampleValues: {
|
|
48
|
+
clientName: 'María López',
|
|
49
|
+
planName: 'Premium',
|
|
50
|
+
startDate: '01/02/2024',
|
|
51
|
+
endDate: '01/03/2024',
|
|
52
|
+
amount: '$50.00',
|
|
53
|
+
paymentFrequency: 'mensual',
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
[TemplateCode.MEMBERSHIP_RENEWAL]: {
|
|
57
|
+
code: TemplateCode.MEMBERSHIP_RENEWAL,
|
|
58
|
+
title: 'Renovación de Membresía',
|
|
59
|
+
description: 'Confirmación de renovación',
|
|
60
|
+
icon: 'RefreshCw',
|
|
61
|
+
variables: ['clientName', 'planName', 'newEndDate', 'amount'],
|
|
62
|
+
exampleValues: {
|
|
63
|
+
clientName: 'Carlos Ruiz',
|
|
64
|
+
planName: 'Básico',
|
|
65
|
+
newEndDate: '15/04/2024',
|
|
66
|
+
amount: '$30.00',
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
[TemplateCode.MEMBERSHIP_EXPIRING]: {
|
|
70
|
+
code: TemplateCode.MEMBERSHIP_EXPIRING,
|
|
71
|
+
title: 'Membresía Por Vencer',
|
|
72
|
+
description: 'Recordatorio de expiración próxima',
|
|
73
|
+
icon: 'AlertCircle',
|
|
74
|
+
variables: ['clientName', 'planName', 'expirationDate', 'daysRemaining'],
|
|
75
|
+
exampleValues: {
|
|
76
|
+
clientName: 'Ana García',
|
|
77
|
+
planName: 'Premium',
|
|
78
|
+
expirationDate: '20/02/2024',
|
|
79
|
+
daysRemaining: '3',
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
[TemplateCode.PAYMENT_REMINDER]: {
|
|
83
|
+
code: TemplateCode.PAYMENT_REMINDER,
|
|
84
|
+
title: 'Recordatorio de Pago',
|
|
85
|
+
description: 'Recordatorio de pago pendiente',
|
|
86
|
+
icon: 'DollarSign',
|
|
87
|
+
variables: ['clientName', 'amount', 'dueDate', 'planName'],
|
|
88
|
+
exampleValues: {
|
|
89
|
+
clientName: 'Pedro Sánchez',
|
|
90
|
+
amount: '$40.00',
|
|
91
|
+
dueDate: '25/02/2024',
|
|
92
|
+
planName: 'Estándar',
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
[TemplateCode.BIRTHDAY]: {
|
|
96
|
+
code: TemplateCode.BIRTHDAY,
|
|
97
|
+
title: 'Cumpleaños',
|
|
98
|
+
description: 'Felicitación de cumpleaños',
|
|
99
|
+
icon: 'Cake',
|
|
100
|
+
variables: ['clientName', 'gymName', 'age'],
|
|
101
|
+
exampleValues: {
|
|
102
|
+
clientName: 'Laura Martínez',
|
|
103
|
+
gymName: 'GymSpace',
|
|
104
|
+
age: '28',
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
[TemplateCode.PAYMENT_RECEIPT]: {
|
|
108
|
+
code: TemplateCode.PAYMENT_RECEIPT,
|
|
109
|
+
title: 'Comprobante de Pago',
|
|
110
|
+
description: 'Comprobante de venta pagada',
|
|
111
|
+
icon: 'Receipt',
|
|
112
|
+
variables: [
|
|
113
|
+
'gymName',
|
|
114
|
+
'receiptNumber',
|
|
115
|
+
'date',
|
|
116
|
+
'clientName',
|
|
117
|
+
'items',
|
|
118
|
+
'amount',
|
|
119
|
+
'paymentMethod',
|
|
120
|
+
],
|
|
121
|
+
exampleValues: {
|
|
122
|
+
gymName: 'GymSpace',
|
|
123
|
+
receiptNumber: 'V-001',
|
|
124
|
+
date: '15/01/2024',
|
|
125
|
+
clientName: 'Juan Pérez',
|
|
126
|
+
items: '• Proteína x2 = Q100.00\n• Creatina x1 = Q50.00',
|
|
127
|
+
amount: 'Q150.00',
|
|
128
|
+
paymentMethod: 'Efectivo',
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
} as const;
|