@wrcb/cb-common 1.0.901 → 1.0.903

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.
@@ -1,3 +1,4 @@
1
+ import type { CrmCadenceStep, CrmStageMessage } from './crm';
1
2
  export declare enum ClinicaAppointmentStatus {
2
3
  AwaitingDeposit = "AwaitingDeposit",
3
4
  Confirmed = "Confirmed",
@@ -256,7 +257,15 @@ export declare enum ClinicaAssistantActionType {
256
257
  PauseCampaign = "PauseCampaign",
257
258
  ActivateCampaign = "ActivateCampaign",
258
259
  SetCampaignBudget = "SetCampaignBudget",
259
- CreateCampaignFromPost = "CreateCampaignFromPost"
260
+ CreateCampaignFromPost = "CreateCampaignFromPost",
261
+ SaveStage = "SaveStage",
262
+ SaveFollowUps = "SaveFollowUps",
263
+ SaveQuickReply = "SaveQuickReply",
264
+ DeleteQuickReply = "DeleteQuickReply",
265
+ EditScheduledMessage = "EditScheduledMessage",
266
+ DeleteScheduledMessage = "DeleteScheduledMessage",
267
+ SendScheduledMessageNow = "SendScheduledMessageNow",
268
+ SetAppointmentColor = "SetAppointmentColor"
260
269
  }
261
270
  export declare enum ClinicaAssistantPlanStatus {
262
271
  Proposed = "Proposed",
@@ -274,7 +283,7 @@ export declare enum ClinicaAssistantActionStatus {
274
283
  * Valor de parâmetro de uma ação do assistente. Listas: clínicas de uma
275
284
  * profissional, faixas da semana, lembretes, temas proibidos.
276
285
  */
277
- export type ClinicaAssistantParam = string | number | boolean | null | string[] | ClinicaWeeklySlot[] | ClinicaReminder[];
286
+ export type ClinicaAssistantParam = string | number | boolean | null | string[] | ClinicaWeeklySlot[] | ClinicaReminder[] | CrmStageMessage[] | CrmCadenceStep[];
278
287
  export interface ClinicaAssistantAction {
279
288
  type: ClinicaAssistantActionType;
280
289
  description: string;
@@ -282,3 +291,116 @@ export interface ClinicaAssistantAction {
282
291
  status: ClinicaAssistantActionStatus;
283
292
  error: string | null;
284
293
  }
294
+ export declare enum ClinicaTeamRole {
295
+ Owner = "Owner",
296
+ Agent = "Agent",
297
+ Viewer = "Viewer"
298
+ }
299
+ export interface ClinicaTeamMember {
300
+ id: string;
301
+ userId: string;
302
+ email: string | null;
303
+ role: ClinicaTeamRole;
304
+ signature: string;
305
+ createdAt: string;
306
+ }
307
+ /** Convite que a dona mandou e ainda não foi aceito. */
308
+ export interface ClinicaTeamInvite {
309
+ id: string;
310
+ email: string;
311
+ role: ClinicaTeamRole;
312
+ signature: string;
313
+ createdAt: string;
314
+ }
315
+ /** Convite visto por quem foi convidada. */
316
+ export interface ClinicaTeamInvitation {
317
+ id: string;
318
+ accountName: string;
319
+ role: ClinicaTeamRole;
320
+ signature: string;
321
+ }
322
+ /** A chave "em atendimento" de quem está logada. */
323
+ export interface ClinicaDutyStatus {
324
+ onDuty: boolean;
325
+ since: string | null;
326
+ canToggle: boolean;
327
+ }
328
+ /** Média de resposta de uma pessoa da equipe num período. */
329
+ export interface ClinicaResponseTimeStat {
330
+ userId: string;
331
+ signature: string;
332
+ onDuty: boolean;
333
+ averageSeconds: number | null;
334
+ replies: number;
335
+ }
336
+ export declare enum ClinicaColor {
337
+ Teal = "Teal",
338
+ Indigo = "Indigo",
339
+ Amber = "Amber",
340
+ Violet = "Violet",
341
+ Green = "Green",
342
+ Rose = "Rose",
343
+ Sky = "Sky",
344
+ Olive = "Olive",
345
+ Coral = "Coral",
346
+ Slate = "Slate"
347
+ }
348
+ export interface ClinicaQuickReply {
349
+ id: string;
350
+ title: string;
351
+ text: string;
352
+ createdAt: string;
353
+ }
354
+ export declare enum ClinicaOnboardingStepKey {
355
+ Whatsapp = "Whatsapp",
356
+ Clinic = "Clinic",
357
+ Professional = "Professional",
358
+ Services = "Services",
359
+ Schedule = "Schedule",
360
+ Pipeline = "Pipeline",
361
+ Team = "Team",
362
+ QuickReplies = "QuickReplies"
363
+ }
364
+ export interface ClinicaOnboardingStep {
365
+ key: ClinicaOnboardingStepKey;
366
+ done: boolean;
367
+ required: boolean;
368
+ pending: {
369
+ professionalId: string;
370
+ name: string;
371
+ }[];
372
+ }
373
+ export interface ClinicaOnboarding {
374
+ steps: ClinicaOnboardingStep[];
375
+ requiredDone: number;
376
+ requiredTotal: number;
377
+ complete: boolean;
378
+ canConfigure: boolean;
379
+ }
380
+ export declare enum ClinicaScheduledKind {
381
+ FollowUp = "FollowUp",
382
+ Recontact = "Recontact",
383
+ Reminder = "Reminder",
384
+ StageMessage = "StageMessage"
385
+ }
386
+ /** Por que não há follow-up previsto (os lembretes da consulta saem mesmo assim). */
387
+ export declare enum ClinicaFollowUpPause {
388
+ TeamInControl = "TeamInControl",
389
+ OptedOut = "OptedOut"
390
+ }
391
+ export interface ClinicaScheduledMessage {
392
+ id: string;
393
+ kind: ClinicaScheduledKind;
394
+ at: string;
395
+ content: string | null;
396
+ contentIsInstruction: boolean;
397
+ edited: boolean;
398
+ step: number | null;
399
+ totalSteps: number | null;
400
+ beforeMinutes: number | null;
401
+ appointmentStart: string | null;
402
+ }
403
+ export interface ClinicaScheduledInfo {
404
+ items: ClinicaScheduledMessage[];
405
+ followUpPaused: ClinicaFollowUpPause | null;
406
+ }
@@ -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.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.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,6 +134,19 @@ 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
138
+ // mensagens da etapa). Follow-ups: a lista inteira de passos da cadência.
139
+ ClinicaAssistantActionType["SaveStage"] = "SaveStage";
140
+ ClinicaAssistantActionType["SaveFollowUps"] = "SaveFollowUps";
141
+ // Respostas rápidas da conta.
142
+ ClinicaAssistantActionType["SaveQuickReply"] = "SaveQuickReply";
143
+ ClinicaAssistantActionType["DeleteQuickReply"] = "DeleteQuickReply";
144
+ // Mensagens automáticas previstas de um contato.
145
+ ClinicaAssistantActionType["EditScheduledMessage"] = "EditScheduledMessage";
146
+ ClinicaAssistantActionType["DeleteScheduledMessage"] = "DeleteScheduledMessage";
147
+ ClinicaAssistantActionType["SendScheduledMessageNow"] = "SendScheduledMessageNow";
148
+ // Cor de um horário na agenda (null = a do atendimento).
149
+ ClinicaAssistantActionType["SetAppointmentColor"] = "SetAppointmentColor";
137
150
  })(ClinicaAssistantActionType || (exports.ClinicaAssistantActionType = ClinicaAssistantActionType = {}));
138
151
  var ClinicaAssistantPlanStatus;
139
152
  (function (ClinicaAssistantPlanStatus) {
@@ -151,3 +164,70 @@ var ClinicaAssistantActionStatus;
151
164
  ClinicaAssistantActionStatus["Done"] = "Done";
152
165
  ClinicaAssistantActionStatus["Failed"] = "Failed";
153
166
  })(ClinicaAssistantActionStatus || (exports.ClinicaAssistantActionStatus = ClinicaAssistantActionStatus = {}));
167
+ // ---------------------------------------------------------------------------
168
+ // Equipe: quem trabalha na conta (dona, secretárias) e a assinatura com que
169
+ // cada uma aparece no WhatsApp.
170
+ // ---------------------------------------------------------------------------
171
+ var ClinicaTeamRole;
172
+ (function (ClinicaTeamRole) {
173
+ // Dona da conta: tudo, inclusive configuração e equipe.
174
+ ClinicaTeamRole["Owner"] = "Owner";
175
+ // Secretária: conversa com os pacientes e mexe na agenda; não muda regras.
176
+ ClinicaTeamRole["Agent"] = "Agent";
177
+ // Só acompanha: não responde nem muda nada.
178
+ ClinicaTeamRole["Viewer"] = "Viewer";
179
+ })(ClinicaTeamRole || (exports.ClinicaTeamRole = ClinicaTeamRole = {}));
180
+ // ---------------------------------------------------------------------------
181
+ // Cor na agenda. Paleta fixa (como a do Google Agenda), e não um hexadecimal
182
+ // livre: cada cor tem fundo claro + borda forte escolhidos para o texto
183
+ // continuar legível nos dois temas. O atendimento tem a cor padrão; o
184
+ // agendamento pode ter outra, escolhida na agenda.
185
+ // ---------------------------------------------------------------------------
186
+ var ClinicaColor;
187
+ (function (ClinicaColor) {
188
+ ClinicaColor["Teal"] = "Teal";
189
+ ClinicaColor["Indigo"] = "Indigo";
190
+ ClinicaColor["Amber"] = "Amber";
191
+ ClinicaColor["Violet"] = "Violet";
192
+ ClinicaColor["Green"] = "Green";
193
+ ClinicaColor["Rose"] = "Rose";
194
+ ClinicaColor["Sky"] = "Sky";
195
+ ClinicaColor["Olive"] = "Olive";
196
+ ClinicaColor["Coral"] = "Coral";
197
+ ClinicaColor["Slate"] = "Slate";
198
+ })(ClinicaColor || (exports.ClinicaColor = ClinicaColor = {}));
199
+ // ---------------------------------------------------------------------------
200
+ // Primeiros passos: o que falta para a clínica funcionar sozinha. Calculado
201
+ // dos dados de verdade a cada leitura (nada é marcado à mão), então apagar a
202
+ // clínica faz o passo voltar a aparecer.
203
+ // ---------------------------------------------------------------------------
204
+ var ClinicaOnboardingStepKey;
205
+ (function (ClinicaOnboardingStepKey) {
206
+ ClinicaOnboardingStepKey["Whatsapp"] = "Whatsapp";
207
+ ClinicaOnboardingStepKey["Clinic"] = "Clinic";
208
+ ClinicaOnboardingStepKey["Professional"] = "Professional";
209
+ ClinicaOnboardingStepKey["Services"] = "Services";
210
+ ClinicaOnboardingStepKey["Schedule"] = "Schedule";
211
+ ClinicaOnboardingStepKey["Pipeline"] = "Pipeline";
212
+ ClinicaOnboardingStepKey["Team"] = "Team";
213
+ ClinicaOnboardingStepKey["QuickReplies"] = "QuickReplies";
214
+ })(ClinicaOnboardingStepKey || (exports.ClinicaOnboardingStepKey = ClinicaOnboardingStepKey = {}));
215
+ // ---------------------------------------------------------------------------
216
+ // Mensagens automáticas previstas para um contato: o próximo follow-up da
217
+ // cadência, o recontato que a IA combinou e os lembretes da consulta. A
218
+ // equipe vê no card e na conversa, e pode editar, excluir ou mandar já.
219
+ // ---------------------------------------------------------------------------
220
+ var ClinicaScheduledKind;
221
+ (function (ClinicaScheduledKind) {
222
+ ClinicaScheduledKind["FollowUp"] = "FollowUp";
223
+ ClinicaScheduledKind["Recontact"] = "Recontact";
224
+ ClinicaScheduledKind["Reminder"] = "Reminder";
225
+ // Mensagem da sequência da etapa (ex.: pós-operatório).
226
+ ClinicaScheduledKind["StageMessage"] = "StageMessage";
227
+ })(ClinicaScheduledKind || (exports.ClinicaScheduledKind = ClinicaScheduledKind = {}));
228
+ /** Por que não há follow-up previsto (os lembretes da consulta saem mesmo assim). */
229
+ var ClinicaFollowUpPause;
230
+ (function (ClinicaFollowUpPause) {
231
+ ClinicaFollowUpPause["TeamInControl"] = "TeamInControl";
232
+ ClinicaFollowUpPause["OptedOut"] = "OptedOut";
233
+ })(ClinicaFollowUpPause || (exports.ClinicaFollowUpPause = ClinicaFollowUpPause = {}));
@@ -50,6 +50,19 @@ export interface CrmStage {
50
50
  isLost: boolean;
51
51
  slaMinutes: number | null;
52
52
  aggressiveness?: number | null;
53
+ messages?: CrmStageMessage[];
54
+ }
55
+ /**
56
+ * Uma mensagem da sequência de uma etapa. Conta a partir da entrada na
57
+ * etapa, sai na hora marcada (nunca sábado nem domingo) e não para se o
58
+ * contato responder — só se ele sair da etapa. Texto exato OU instrução para
59
+ * a IA escrever.
60
+ */
61
+ export interface CrmStageMessage {
62
+ afterDays: number;
63
+ hour: number;
64
+ text: string | null;
65
+ aiInstruction: string | null;
53
66
  }
54
67
  export declare enum CrmStageChangedBy {
55
68
  Ai = "Ai",
@@ -218,7 +231,8 @@ export declare enum CrmEventType {
218
231
  FirstContactSent = "FirstContactSent",
219
232
  ConnectionLost = "ConnectionLost",
220
233
  ConnectionRestored = "ConnectionRestored",
221
- MessageRecovered = "MessageRecovered"
234
+ MessageRecovered = "MessageRecovered",
235
+ ScheduledMessageChanged = "ScheduledMessageChanged"
222
236
  }
223
237
  export interface CrmLeadIntentPayload {
224
238
  agentId: string | null;
@@ -269,4 +269,7 @@ var CrmEventType;
269
269
  CrmEventType["ConnectionRestored"] = "ConnectionRestored";
270
270
  // Mensagem que chegou durante a queda e foi recuperada na sincronização.
271
271
  CrmEventType["MessageRecovered"] = "MessageRecovered";
272
+ // Alguém da equipe excluiu, editou ou mandou já uma mensagem automática
273
+ // prevista (follow-up, recontato, lembrete).
274
+ CrmEventType["ScheduledMessageChanged"] = "ScheduledMessageChanged";
272
275
  })(CrmEventType || (exports.CrmEventType = CrmEventType = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrcb/cb-common",
3
- "version": "1.0.901",
3
+ "version": "1.0.903",
4
4
  "description": "Common resources between services",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",