evo360-types 1.3.387 → 1.3.390
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/apps/evo-crm/lead/zod-schemas.d.ts +52 -0
- package/dist/apps/evo-crm/lead/zod-schemas.js +10 -1
- package/dist/apps/evo-crm/lead/zod-schemas.ts +10 -0
- package/dist/apps/evo-hub-ia/v1/zod-schemas.d.ts +262 -63
- package/dist/apps/evo-hub-ia/v1/zod-schemas.js +57 -4
- package/dist/apps/evo-hub-ia/v1/zod-schemas.ts +60 -3
- package/dist/apps/evo-task/zod-schemas.d.ts +52 -52
- package/dist/apps/evo-task/zod-schemas.js +2 -0
- package/dist/apps/evo-task/zod-schemas.ts +2 -0
- package/dist/types/evo-crm/lead/index.d.ts +42 -0
- package/dist/types/evo-crm/lead/index.ts +56 -0
- package/dist/types/evo-hub-ia/v1/index.d.ts +52 -11
- package/dist/types/evo-hub-ia/v1/index.ts +54 -11
- package/dist/types/evo-task/index.d.ts +1 -0
- package/dist/types/evo-task/index.js +4 -0
- package/dist/types/evo-task/index.ts +4 -0
- package/package.json +1 -1
|
@@ -29,6 +29,42 @@ export interface ILeadDistChannel {
|
|
|
29
29
|
ref?: FirestoreDocumentReference;
|
|
30
30
|
updated_at?: Date | null;
|
|
31
31
|
}
|
|
32
|
+
/** Origem de aquisição do lead (feat-038) — base expansível p/ múltiplas
|
|
33
|
+
* plataformas. v1 implementa só `type:'ctwa'` (Click-to-WhatsApp da Meta);
|
|
34
|
+
* Google Ads / Instagram Direct / TikTok / site ficam para fast-follow. */
|
|
35
|
+
export type LeadReferralType = "ctwa" | "instagram_direct" | "google_ads" | "tiktok" | "site" | "other";
|
|
36
|
+
export interface ILeadReferralBase {
|
|
37
|
+
type: LeadReferralType;
|
|
38
|
+
captured_at?: Date | string | null;
|
|
39
|
+
source_url?: string | null;
|
|
40
|
+
label?: string | null;
|
|
41
|
+
raw?: Record<string, unknown> | null;
|
|
42
|
+
}
|
|
43
|
+
export interface ILeadReferralCTWA extends ILeadReferralBase {
|
|
44
|
+
type: "ctwa";
|
|
45
|
+
ad_id?: string | null;
|
|
46
|
+
source_type?: string | null;
|
|
47
|
+
headline?: string | null;
|
|
48
|
+
body?: string | null;
|
|
49
|
+
media_type?: string | null;
|
|
50
|
+
ctwa_clid?: string | null;
|
|
51
|
+
}
|
|
52
|
+
export type ILeadReferral = ILeadReferralCTWA;
|
|
53
|
+
/** Estado da régua de reativação de lead (feat-037).
|
|
54
|
+
* Mantido pelo subscriber `ticket_closed` (streak) e pela task
|
|
55
|
+
* `lead_reactivation` (último disparo). Semântica do streak alinhada ao
|
|
56
|
+
* `seminter_streak` do feat-018: incrementa a cada fechamento "sem interação"
|
|
57
|
+
* consecutivo e zera em fechamento não-seminter / resposta do lead. */
|
|
58
|
+
export interface ILeadReactivation {
|
|
59
|
+
/** Fechamentos "sem interação" (`seminter`) consecutivos sem reengajamento.
|
|
60
|
+
* Usado como teto anti-spam na condição da regra
|
|
61
|
+
* (`lead.reactivation.no_interaction_streak < N`). */
|
|
62
|
+
no_interaction_streak?: number;
|
|
63
|
+
/** Quando ocorreu o último fechamento "sem interação" que incrementou o streak. */
|
|
64
|
+
last_no_interaction_close_at?: Date | null;
|
|
65
|
+
/** Quando a última mensagem de reativação foi efetivamente enviada. */
|
|
66
|
+
last_reactivation_at?: Date | null;
|
|
67
|
+
}
|
|
32
68
|
export interface ILead extends IProfile {
|
|
33
69
|
external_id?: string | null;
|
|
34
70
|
social_id?: string | null;
|
|
@@ -42,6 +78,10 @@ export interface ILead extends IProfile {
|
|
|
42
78
|
tags?: ITag[] | null;
|
|
43
79
|
userRef?: FirestoreDocumentReference;
|
|
44
80
|
ctwa_clid?: string | null;
|
|
81
|
+
/**
|
|
82
|
+
* @deprecated A ESCRITA foi substituída por `acquisition_sources[]` (feat-038).
|
|
83
|
+
* Tipo mantido para leitura de leads antigos; sem backfill.
|
|
84
|
+
*/
|
|
45
85
|
ctwa_referral?: {
|
|
46
86
|
source_type?: string;
|
|
47
87
|
source_id?: string;
|
|
@@ -51,5 +91,7 @@ export interface ILead extends IProfile {
|
|
|
51
91
|
media_type?: string;
|
|
52
92
|
captured_at?: Date | string | null;
|
|
53
93
|
} | null;
|
|
94
|
+
acquisition_sources?: ILeadReferral[] | null;
|
|
95
|
+
reactivation?: ILeadReactivation | null;
|
|
54
96
|
[key: string]: unknown;
|
|
55
97
|
}
|
|
@@ -44,6 +44,53 @@ export interface ILeadDistChannel {
|
|
|
44
44
|
updated_at?: Date | null;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
/** Origem de aquisição do lead (feat-038) — base expansível p/ múltiplas
|
|
48
|
+
* plataformas. v1 implementa só `type:'ctwa'` (Click-to-WhatsApp da Meta);
|
|
49
|
+
* Google Ads / Instagram Direct / TikTok / site ficam para fast-follow. */
|
|
50
|
+
export type LeadReferralType =
|
|
51
|
+
| "ctwa" // Click-to-WhatsApp (Meta FB/IG → WhatsApp) ← v1
|
|
52
|
+
| "instagram_direct" // ig.me ?ref= ← futuro
|
|
53
|
+
| "google_ads" // gclid / token em ?text= ← futuro
|
|
54
|
+
| "tiktok"
|
|
55
|
+
| "site"
|
|
56
|
+
| "other"; // ← futuro
|
|
57
|
+
|
|
58
|
+
export interface ILeadReferralBase {
|
|
59
|
+
type: LeadReferralType; // discriminador p/ o parser
|
|
60
|
+
captured_at?: Date | string | null; // 1º toque desta origem (idioma do repo)
|
|
61
|
+
source_url?: string | null; // link clicável
|
|
62
|
+
label?: string | null; // rótulo de exibição (headline || ad_id || domínio)
|
|
63
|
+
raw?: Record<string, unknown> | null; // payload original lossless → re-parse futuro sem backfill
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface ILeadReferralCTWA extends ILeadReferralBase {
|
|
67
|
+
type: "ctwa";
|
|
68
|
+
ad_id?: string | null; // referral.source_id
|
|
69
|
+
source_type?: string | null; // 'ad' | 'post'
|
|
70
|
+
headline?: string | null;
|
|
71
|
+
body?: string | null;
|
|
72
|
+
media_type?: string | null;
|
|
73
|
+
ctwa_clid?: string | null; // espelho; o de topo (CAPI/feat-034) permanece na raiz
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export type ILeadReferral = ILeadReferralCTWA; // | ILeadReferralGoogleAds | ...
|
|
77
|
+
|
|
78
|
+
/** Estado da régua de reativação de lead (feat-037).
|
|
79
|
+
* Mantido pelo subscriber `ticket_closed` (streak) e pela task
|
|
80
|
+
* `lead_reactivation` (último disparo). Semântica do streak alinhada ao
|
|
81
|
+
* `seminter_streak` do feat-018: incrementa a cada fechamento "sem interação"
|
|
82
|
+
* consecutivo e zera em fechamento não-seminter / resposta do lead. */
|
|
83
|
+
export interface ILeadReactivation {
|
|
84
|
+
/** Fechamentos "sem interação" (`seminter`) consecutivos sem reengajamento.
|
|
85
|
+
* Usado como teto anti-spam na condição da regra
|
|
86
|
+
* (`lead.reactivation.no_interaction_streak < N`). */
|
|
87
|
+
no_interaction_streak?: number;
|
|
88
|
+
/** Quando ocorreu o último fechamento "sem interação" que incrementou o streak. */
|
|
89
|
+
last_no_interaction_close_at?: Date | null;
|
|
90
|
+
/** Quando a última mensagem de reativação foi efetivamente enviada. */
|
|
91
|
+
last_reactivation_at?: Date | null;
|
|
92
|
+
}
|
|
93
|
+
|
|
47
94
|
export interface ILead extends IProfile {
|
|
48
95
|
external_id?: string | null; // ID externo do paciente
|
|
49
96
|
social_id?: string | null; //CPF
|
|
@@ -58,6 +105,10 @@ export interface ILead extends IProfile {
|
|
|
58
105
|
userRef?: FirestoreDocumentReference;
|
|
59
106
|
// CTWA attribution (feat-034) — capturado do referral do 1º inbound vindo de anúncio Click-to-WhatsApp.
|
|
60
107
|
ctwa_clid?: string | null;
|
|
108
|
+
/**
|
|
109
|
+
* @deprecated A ESCRITA foi substituída por `acquisition_sources[]` (feat-038).
|
|
110
|
+
* Tipo mantido para leitura de leads antigos; sem backfill.
|
|
111
|
+
*/
|
|
61
112
|
ctwa_referral?: {
|
|
62
113
|
source_type?: string;
|
|
63
114
|
source_id?: string;
|
|
@@ -67,5 +118,10 @@ export interface ILead extends IProfile {
|
|
|
67
118
|
media_type?: string;
|
|
68
119
|
captured_at?: Date | string | null;
|
|
69
120
|
} | null;
|
|
121
|
+
// Origens de aquisição multi-touch (feat-038) — união discriminada por `type`.
|
|
122
|
+
// Substitui a escrita de `ctwa_referral`; `ctwa_clid` de topo permanece (CAPI).
|
|
123
|
+
acquisition_sources?: ILeadReferral[] | null;
|
|
124
|
+
// Régua de reativação (feat-037) — mantida pelo subscriber ticket_closed + task lead_reactivation.
|
|
125
|
+
reactivation?: ILeadReactivation | null;
|
|
70
126
|
[key: string]: unknown; // index signature
|
|
71
127
|
}
|
|
@@ -1,18 +1,25 @@
|
|
|
1
|
+
import type { IExternalLink } from "../../shared";
|
|
1
2
|
/** Fase de avaliação.
|
|
2
|
-
* - `pre_llm`
|
|
3
|
-
* - `post_llm`
|
|
4
|
-
*
|
|
3
|
+
* - `pre_llm` (v1.0) : avalia antes do orchestrator LLM.
|
|
4
|
+
* - `post_llm` (v1.1) : avalia depois do orchestrator e antes do envio
|
|
5
|
+
* outbound (safety/governance).
|
|
6
|
+
* - `ticket_closed` (feat-037) : avalia quando um atendimento é fechado
|
|
7
|
+
* (v1: ATTENDANCE_CLOSED do Chatbee). Side-effects
|
|
8
|
+
* only — não há mensagem em trânsito; a regra
|
|
9
|
+
* apenas executa actions (ex: `create_task`).
|
|
5
10
|
* Ortogonal ao `when` (trigger): regras outbound (feat-027) usam
|
|
6
11
|
* `when=outbound_message + phase=pre_llm`. O par
|
|
7
|
-
* `outbound_message + post_llm` fica reservado p/ LLM-em-outbound futuro.
|
|
8
|
-
|
|
12
|
+
* `outbound_message + post_llm` fica reservado p/ LLM-em-outbound futuro.
|
|
13
|
+
* `ticket_closed` é a única phase em que phase e when andam juntos. */
|
|
14
|
+
export type IHubiaRulePhase = "pre_llm" | "post_llm" | "ticket_closed";
|
|
9
15
|
/** Gatilho que dispara a avaliação. Combinações válidas com `phase`
|
|
10
16
|
* (validado pelo superRefine de `zHubiaRuleSchema`):
|
|
11
|
-
* - `inbound_message` + pre_llm
|
|
12
|
-
* - `llm_completed` + post_llm
|
|
13
|
-
* - `outbound_message` + pre_llm
|
|
14
|
-
*
|
|
15
|
-
|
|
17
|
+
* - `inbound_message` + pre_llm : mensagem do paciente (v1.0).
|
|
18
|
+
* - `llm_completed` + post_llm : turno do LLM concluído (feat-026).
|
|
19
|
+
* - `outbound_message` + pre_llm : mensagem enviada ao paciente, reativo
|
|
20
|
+
* pós-fato (feat-027).
|
|
21
|
+
* - `ticket_closed` + ticket_closed : atendimento fechado (feat-037). */
|
|
22
|
+
export type IHubiaRuleTrigger = "inbound_message" | "llm_completed" | "outbound_message" | "ticket_closed";
|
|
16
23
|
/** Desfecho do turno após a regra disparar:
|
|
17
24
|
* - `stop` — finaliza turno; em pre_llm pula o LLM,
|
|
18
25
|
* em post_llm bloqueia o envio outbound, em
|
|
@@ -102,10 +109,44 @@ export interface IHubiaRuleScope {
|
|
|
102
109
|
* `{{fact.path}}` resolvido em runtime pelo facts provider. */
|
|
103
110
|
export interface IHubiaRuleAction {
|
|
104
111
|
/** Nome de uma tool `category: 'action'` do evo-hubia-tools
|
|
105
|
-
* (transfer_to_department, close_attendance, handoff_to_human, update_lead_tags,
|
|
112
|
+
* (transfer_to_department, close_attendance, handoff_to_human, update_lead_tags,
|
|
113
|
+
* create_task, …). */
|
|
106
114
|
tool: string;
|
|
107
115
|
input?: Record<string, unknown>;
|
|
108
116
|
}
|
|
117
|
+
/** Input da action `create_task` (feat-037) — genérica: cria qualquer
|
|
118
|
+
* `IAutoTask` (a reativação de lead é o 1º caso de uso). Disponível apenas na
|
|
119
|
+
* phase `ticket_closed`. Todos os campos string/record aceitam templating
|
|
120
|
+
* `{{fact.path}}` resolvido em runtime pelo facts provider.
|
|
121
|
+
*
|
|
122
|
+
* Mapeamento p/ `IAutoTask` (no executor do cloud-functions):
|
|
123
|
+
* - `handler`/`kind`/`payload` → `auto.{handler,kind,payload}`.
|
|
124
|
+
* - `delay_hours` → `schedule.execute_at = now + delay_hours`.
|
|
125
|
+
* - `send_window` (opcional) → adia `execute_at` p/ a próxima abertura da
|
|
126
|
+
* janela (via `isInsideSchedule`/`nowInTz`).
|
|
127
|
+
* - `external_links` (opcional) → `externalLinks[]` (além do `crm_lead`
|
|
128
|
+
* derivado automaticamente do fact `lead.id`).
|
|
129
|
+
* - `idempotency_key` (opcional) → `idempotency_key` (dedup de criação). */
|
|
130
|
+
export interface ICreateTaskActionInput {
|
|
131
|
+
/** Handler lógico que processará a task (`TaskAutoHandler`). Define o tópico
|
|
132
|
+
* PubSub do executor (`{handler}.execute_requests`). Ex: `lead_reactivation`. */
|
|
133
|
+
handler: string;
|
|
134
|
+
/** Sub-tipo do trabalho dentro do handler (`auto.kind`). Ex: `reactivate.send`. */
|
|
135
|
+
kind: string;
|
|
136
|
+
/** Payload específico do handler (`auto.payload`). Forma livre. */
|
|
137
|
+
payload?: Record<string, unknown>;
|
|
138
|
+
/** Atraso, em horas, a partir de agora para o `execute_at` da task. */
|
|
139
|
+
delay_hours: number;
|
|
140
|
+
/** Janela de horário opcional (por-regra). Quando presente, o `execute_at`
|
|
141
|
+
* é adiado para a próxima abertura da janela. Reusa `IHubiaSchedule`
|
|
142
|
+
* (mesma estrutura/editor das condições `in_schedule`). */
|
|
143
|
+
send_window?: IHubiaSchedule;
|
|
144
|
+
/** Links externos adicionais p/ a task (além do `crm_lead` automático). */
|
|
145
|
+
external_links?: IExternalLink[];
|
|
146
|
+
/** Chave de idempotência para a criação da task (evita duplicação em
|
|
147
|
+
* entrega at-least-once do gatilho). */
|
|
148
|
+
idempotency_key?: string;
|
|
149
|
+
}
|
|
109
150
|
/** Uma regra completa. Mora em `binding.rules[]`. Avaliada pelo motor
|
|
110
151
|
* `evo-hubia-rules`. Reusa ToolRegistry para executar actions, herdando
|
|
111
152
|
* as policies já existentes (mode, requiresLinkedLead, etc.). */
|
|
@@ -5,24 +5,32 @@
|
|
|
5
5
|
//
|
|
6
6
|
// Ver docs em cloud-functions/docs/evo-hubia-rules/.
|
|
7
7
|
|
|
8
|
+
import type { IExternalLink } from "../../shared";
|
|
9
|
+
|
|
8
10
|
// ── Enums / Literals ──
|
|
9
11
|
|
|
10
12
|
/** Fase de avaliação.
|
|
11
|
-
* - `pre_llm`
|
|
12
|
-
* - `post_llm`
|
|
13
|
-
*
|
|
13
|
+
* - `pre_llm` (v1.0) : avalia antes do orchestrator LLM.
|
|
14
|
+
* - `post_llm` (v1.1) : avalia depois do orchestrator e antes do envio
|
|
15
|
+
* outbound (safety/governance).
|
|
16
|
+
* - `ticket_closed` (feat-037) : avalia quando um atendimento é fechado
|
|
17
|
+
* (v1: ATTENDANCE_CLOSED do Chatbee). Side-effects
|
|
18
|
+
* only — não há mensagem em trânsito; a regra
|
|
19
|
+
* apenas executa actions (ex: `create_task`).
|
|
14
20
|
* Ortogonal ao `when` (trigger): regras outbound (feat-027) usam
|
|
15
21
|
* `when=outbound_message + phase=pre_llm`. O par
|
|
16
|
-
* `outbound_message + post_llm` fica reservado p/ LLM-em-outbound futuro.
|
|
17
|
-
|
|
22
|
+
* `outbound_message + post_llm` fica reservado p/ LLM-em-outbound futuro.
|
|
23
|
+
* `ticket_closed` é a única phase em que phase e when andam juntos. */
|
|
24
|
+
export type IHubiaRulePhase = "pre_llm" | "post_llm" | "ticket_closed";
|
|
18
25
|
|
|
19
26
|
/** Gatilho que dispara a avaliação. Combinações válidas com `phase`
|
|
20
27
|
* (validado pelo superRefine de `zHubiaRuleSchema`):
|
|
21
|
-
* - `inbound_message` + pre_llm
|
|
22
|
-
* - `llm_completed` + post_llm
|
|
23
|
-
* - `outbound_message` + pre_llm
|
|
24
|
-
*
|
|
25
|
-
|
|
28
|
+
* - `inbound_message` + pre_llm : mensagem do paciente (v1.0).
|
|
29
|
+
* - `llm_completed` + post_llm : turno do LLM concluído (feat-026).
|
|
30
|
+
* - `outbound_message` + pre_llm : mensagem enviada ao paciente, reativo
|
|
31
|
+
* pós-fato (feat-027).
|
|
32
|
+
* - `ticket_closed` + ticket_closed : atendimento fechado (feat-037). */
|
|
33
|
+
export type IHubiaRuleTrigger = "inbound_message" | "llm_completed" | "outbound_message" | "ticket_closed";
|
|
26
34
|
|
|
27
35
|
/** Desfecho do turno após a regra disparar:
|
|
28
36
|
* - `stop` — finaliza turno; em pre_llm pula o LLM,
|
|
@@ -142,11 +150,46 @@ export interface IHubiaRuleScope {
|
|
|
142
150
|
* `{{fact.path}}` resolvido em runtime pelo facts provider. */
|
|
143
151
|
export interface IHubiaRuleAction {
|
|
144
152
|
/** Nome de uma tool `category: 'action'` do evo-hubia-tools
|
|
145
|
-
* (transfer_to_department, close_attendance, handoff_to_human, update_lead_tags,
|
|
153
|
+
* (transfer_to_department, close_attendance, handoff_to_human, update_lead_tags,
|
|
154
|
+
* create_task, …). */
|
|
146
155
|
tool: string;
|
|
147
156
|
input?: Record<string, unknown>;
|
|
148
157
|
}
|
|
149
158
|
|
|
159
|
+
/** Input da action `create_task` (feat-037) — genérica: cria qualquer
|
|
160
|
+
* `IAutoTask` (a reativação de lead é o 1º caso de uso). Disponível apenas na
|
|
161
|
+
* phase `ticket_closed`. Todos os campos string/record aceitam templating
|
|
162
|
+
* `{{fact.path}}` resolvido em runtime pelo facts provider.
|
|
163
|
+
*
|
|
164
|
+
* Mapeamento p/ `IAutoTask` (no executor do cloud-functions):
|
|
165
|
+
* - `handler`/`kind`/`payload` → `auto.{handler,kind,payload}`.
|
|
166
|
+
* - `delay_hours` → `schedule.execute_at = now + delay_hours`.
|
|
167
|
+
* - `send_window` (opcional) → adia `execute_at` p/ a próxima abertura da
|
|
168
|
+
* janela (via `isInsideSchedule`/`nowInTz`).
|
|
169
|
+
* - `external_links` (opcional) → `externalLinks[]` (além do `crm_lead`
|
|
170
|
+
* derivado automaticamente do fact `lead.id`).
|
|
171
|
+
* - `idempotency_key` (opcional) → `idempotency_key` (dedup de criação). */
|
|
172
|
+
export interface ICreateTaskActionInput {
|
|
173
|
+
/** Handler lógico que processará a task (`TaskAutoHandler`). Define o tópico
|
|
174
|
+
* PubSub do executor (`{handler}.execute_requests`). Ex: `lead_reactivation`. */
|
|
175
|
+
handler: string;
|
|
176
|
+
/** Sub-tipo do trabalho dentro do handler (`auto.kind`). Ex: `reactivate.send`. */
|
|
177
|
+
kind: string;
|
|
178
|
+
/** Payload específico do handler (`auto.payload`). Forma livre. */
|
|
179
|
+
payload?: Record<string, unknown>;
|
|
180
|
+
/** Atraso, em horas, a partir de agora para o `execute_at` da task. */
|
|
181
|
+
delay_hours: number;
|
|
182
|
+
/** Janela de horário opcional (por-regra). Quando presente, o `execute_at`
|
|
183
|
+
* é adiado para a próxima abertura da janela. Reusa `IHubiaSchedule`
|
|
184
|
+
* (mesma estrutura/editor das condições `in_schedule`). */
|
|
185
|
+
send_window?: IHubiaSchedule;
|
|
186
|
+
/** Links externos adicionais p/ a task (além do `crm_lead` automático). */
|
|
187
|
+
external_links?: IExternalLink[];
|
|
188
|
+
/** Chave de idempotência para a criação da task (evita duplicação em
|
|
189
|
+
* entrega at-least-once do gatilho). */
|
|
190
|
+
idempotency_key?: string;
|
|
191
|
+
}
|
|
192
|
+
|
|
150
193
|
// ── Main ──
|
|
151
194
|
|
|
152
195
|
/** Uma regra completa. Mora em `binding.rules[]`. Avaliada pelo motor
|
|
@@ -52,6 +52,7 @@ export declare const TaskAutoHandlerEnum: {
|
|
|
52
52
|
readonly Invoices: "invoices";
|
|
53
53
|
readonly Webhook: "webhook";
|
|
54
54
|
readonly Custom: "custom";
|
|
55
|
+
readonly LeadReactivation: "lead_reactivation";
|
|
55
56
|
};
|
|
56
57
|
export type TaskAutoHandler = (typeof TaskAutoHandlerEnum)[keyof typeof TaskAutoHandlerEnum];
|
|
57
58
|
export declare const TaskRetryStrategyEnum: {
|
|
@@ -83,6 +83,10 @@ exports.TaskAutoHandlerEnum = {
|
|
|
83
83
|
Invoices: "invoices",
|
|
84
84
|
Webhook: "webhook",
|
|
85
85
|
Custom: "custom",
|
|
86
|
+
// feat-037: handler que processa a régua de reativação de lead
|
|
87
|
+
// (gerado pela action `create_task` da phase `ticket_closed`).
|
|
88
|
+
// Tópico PubSub do executor: `lead_reactivation.execute_requests`.
|
|
89
|
+
LeadReactivation: "lead_reactivation",
|
|
86
90
|
};
|
|
87
91
|
// ----- Retry policy
|
|
88
92
|
exports.TaskRetryStrategyEnum = {
|
|
@@ -94,6 +94,10 @@ export const TaskAutoHandlerEnum = {
|
|
|
94
94
|
Invoices: "invoices",
|
|
95
95
|
Webhook: "webhook",
|
|
96
96
|
Custom: "custom",
|
|
97
|
+
// feat-037: handler que processa a régua de reativação de lead
|
|
98
|
+
// (gerado pela action `create_task` da phase `ticket_closed`).
|
|
99
|
+
// Tópico PubSub do executor: `lead_reactivation.execute_requests`.
|
|
100
|
+
LeadReactivation: "lead_reactivation",
|
|
97
101
|
} as const;
|
|
98
102
|
|
|
99
103
|
export type TaskAutoHandler =
|