@wrcb/cb-common 1.0.903 → 1.0.905

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.
@@ -29,4 +29,6 @@ export declare class RedisService {
29
29
  static clinicaRoundLockKey(tenant: Tenant, worker: string): string;
30
30
  /** Cache das leituras da Meta (campanhas, posts) de uma conta. */
31
31
  static clinicaMetaCacheKey(tenant: Tenant, ownerId: string, what: string): string;
32
+ /** Cache das métricas de uma conta (`what` separa funil, período e quem vê). */
33
+ static clinicaMetricsKey(tenant: Tenant, ownerId: string, what: string): string;
32
34
  }
@@ -85,5 +85,9 @@ class RedisService {
85
85
  static clinicaMetaCacheKey(tenant, ownerId, what) {
86
86
  return `${tenant}:clinica:meta:${ownerId}:${what}`;
87
87
  }
88
+ /** Cache das métricas de uma conta (`what` separa funil, período e quem vê). */
89
+ static clinicaMetricsKey(tenant, ownerId, what) {
90
+ return `${tenant}:clinica:metrics:${ownerId}:${what}`;
91
+ }
88
92
  }
89
93
  exports.RedisService = RedisService;
@@ -82,8 +82,6 @@ export interface ClinicaProfessionalRules {
82
82
  reminders: ClinicaReminder[];
83
83
  photosEnabled: boolean;
84
84
  }
85
- /** 1 = só informa, 3 = equilibrada (padrão), 5 = máxima. */
86
- export type ClinicaAggressiveness = 1 | 2 | 3 | 4 | 5;
87
85
  /** Foto de resultado de um atendimento do catálogo. */
88
86
  export interface ClinicaServicePhoto {
89
87
  id: string;
@@ -381,7 +379,15 @@ export declare enum ClinicaScheduledKind {
381
379
  FollowUp = "FollowUp",
382
380
  Recontact = "Recontact",
383
381
  Reminder = "Reminder",
384
- StageMessage = "StageMessage"
382
+ StageMessage = "StageMessage",
383
+ Manual = "Manual"
384
+ }
385
+ /** Vida de uma mensagem programada à mão pela equipe. */
386
+ export declare enum ClinicaManualMessageStatus {
387
+ Pending = "Pending",
388
+ Sending = "Sending",
389
+ Sent = "Sent",
390
+ Failed = "Failed"
385
391
  }
386
392
  /** Por que não há follow-up previsto (os lembretes da consulta saem mesmo assim). */
387
393
  export declare enum ClinicaFollowUpPause {
@@ -399,8 +405,38 @@ export interface ClinicaScheduledMessage {
399
405
  totalSteps: number | null;
400
406
  beforeMinutes: number | null;
401
407
  appointmentStart: string | null;
408
+ createdByName: string | null;
409
+ failed: boolean;
402
410
  }
403
411
  export interface ClinicaScheduledInfo {
404
412
  items: ClinicaScheduledMessage[];
405
413
  followUpPaused: ClinicaFollowUpPause | null;
406
414
  }
415
+ export interface ClinicaCreateScheduledMessageInput {
416
+ content: string;
417
+ at: string;
418
+ }
419
+ /** Enviadas pela equipe numa hora do dia, somando todos os dias do período. */
420
+ export interface ClinicaSentByHour {
421
+ hour: number;
422
+ browser: number;
423
+ phone: number;
424
+ }
425
+ /** Recebidas dos pacientes numa hora do dia, somando todos os dias do período. */
426
+ export interface ClinicaReceivedByHour {
427
+ hour: number;
428
+ total: number;
429
+ }
430
+ export interface ClinicaSentMessagesMetrics {
431
+ timezone: string;
432
+ browser: number;
433
+ phone: number;
434
+ ai: number;
435
+ automatic: number;
436
+ byHour: ClinicaSentByHour[];
437
+ responseTime: {
438
+ averageSeconds: number | null;
439
+ replies: number;
440
+ onlyMine: boolean;
441
+ };
442
+ }
@@ -3,7 +3,7 @@
3
3
  // Pix, áudio e assistente de comandos. O núcleo de CRM (funil, conversa,
4
4
  // follow-up) continua em ./crm.ts.
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ClinicaFollowUpPause = exports.ClinicaScheduledKind = exports.ClinicaOnboardingStepKey = exports.ClinicaColor = exports.ClinicaTeamRole = exports.ClinicaAssistantActionStatus = exports.ClinicaAssistantPlanStatus = exports.ClinicaAssistantActionType = exports.ClinicaCampaignActionStatus = exports.ClinicaCampaignActionOrigin = exports.ClinicaCampaignActionType = exports.ClinicaCampaignAutomationMode = exports.ClinicaCommentPlatform = exports.ClinicaMetaStatus = exports.ClinicaAvailabilityMode = exports.ClinicaDepositStatus = exports.ClinicaCancelReason = exports.ClinicaAppointmentSource = exports.ClinicaAppointmentStatus = void 0;
6
+ exports.ClinicaFollowUpPause = exports.ClinicaManualMessageStatus = exports.ClinicaScheduledKind = exports.ClinicaOnboardingStepKey = exports.ClinicaColor = exports.ClinicaTeamRole = exports.ClinicaAssistantActionStatus = exports.ClinicaAssistantPlanStatus = exports.ClinicaAssistantActionType = exports.ClinicaCampaignActionStatus = exports.ClinicaCampaignActionOrigin = exports.ClinicaCampaignActionType = exports.ClinicaCampaignAutomationMode = exports.ClinicaCommentPlatform = exports.ClinicaMetaStatus = exports.ClinicaAvailabilityMode = exports.ClinicaDepositStatus = exports.ClinicaCancelReason = exports.ClinicaAppointmentSource = exports.ClinicaAppointmentStatus = void 0;
7
7
  // ============================================
8
8
  // AGENDA
9
9
  // ============================================
@@ -134,7 +134,7 @@ var ClinicaAssistantActionType;
134
134
  ClinicaAssistantActionType["ActivateCampaign"] = "ActivateCampaign";
135
135
  ClinicaAssistantActionType["SetCampaignBudget"] = "SetCampaignBudget";
136
136
  ClinicaAssistantActionType["CreateCampaignFromPost"] = "CreateCampaignFromPost";
137
- // Funil: cria ou muda uma etapa (nome, descrição, IA, insistência e as
137
+ // Funil: cria ou muda uma etapa (nome, descrição, IA, como agir e as
138
138
  // mensagens da etapa). Follow-ups: a lista inteira de passos da cadência.
139
139
  ClinicaAssistantActionType["SaveStage"] = "SaveStage";
140
140
  ClinicaAssistantActionType["SaveFollowUps"] = "SaveFollowUps";
@@ -224,7 +224,18 @@ var ClinicaScheduledKind;
224
224
  ClinicaScheduledKind["Reminder"] = "Reminder";
225
225
  // Mensagem da sequência da etapa (ex.: pós-operatório).
226
226
  ClinicaScheduledKind["StageMessage"] = "StageMessage";
227
+ // Escrita por alguém da equipe para sair em dia e hora escolhidos.
228
+ ClinicaScheduledKind["Manual"] = "Manual";
227
229
  })(ClinicaScheduledKind || (exports.ClinicaScheduledKind = ClinicaScheduledKind = {}));
230
+ /** Vida de uma mensagem programada à mão pela equipe. */
231
+ var ClinicaManualMessageStatus;
232
+ (function (ClinicaManualMessageStatus) {
233
+ ClinicaManualMessageStatus["Pending"] = "Pending";
234
+ // Reservada por um worker: é o que impede dois pods de mandarem a mesma.
235
+ ClinicaManualMessageStatus["Sending"] = "Sending";
236
+ ClinicaManualMessageStatus["Sent"] = "Sent";
237
+ ClinicaManualMessageStatus["Failed"] = "Failed";
238
+ })(ClinicaManualMessageStatus || (exports.ClinicaManualMessageStatus = ClinicaManualMessageStatus = {}));
228
239
  /** Por que não há follow-up previsto (os lembretes da consulta saem mesmo assim). */
229
240
  var ClinicaFollowUpPause;
230
241
  (function (ClinicaFollowUpPause) {
@@ -49,7 +49,7 @@ export interface CrmStage {
49
49
  isWon: boolean;
50
50
  isLost: boolean;
51
51
  slaMinutes: number | null;
52
- aggressiveness?: number | null;
52
+ aiInstructions?: string | null;
53
53
  messages?: CrmStageMessage[];
54
54
  }
55
55
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrcb/cb-common",
3
- "version": "1.0.903",
3
+ "version": "1.0.905",
4
4
  "description": "Common resources between services",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",