evo360-types 1.3.501 → 1.3.505

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.
@@ -6,6 +6,27 @@ export interface INexFinopsBillingServiceItem {
6
6
  description: string;
7
7
  amount: number;
8
8
  }
9
+ /**
10
+ * Termos efetivamente enviados ao emissor do boleto.
11
+ *
12
+ * Todos os campos são obrigatórios de propósito: a distinção entre "multa 0, não
13
+ * cobra" e "não sabemos os termos deste boleto" é a PRESENÇA do objeto, nunca um
14
+ * campo interno ausente. Snapshot presente é sempre completo; ausente significa
15
+ * boleto emitido antes do snapshot existir, e o frontend mostra "—", nunca um
16
+ * valor estimado.
17
+ */
18
+ export interface INexFinopsBillingBoletoTerms {
19
+ /** Vencimento enviado ao Inter, data civil YYYY-MM-DD. */
20
+ due_date: string;
21
+ /** O numDiasAgenda efetivamente enviado. */
22
+ num_dias_agenda: number;
23
+ /** Data limite de pagamento (YYYY-MM-DD) = due_date + num_dias_agenda. */
24
+ payment_deadline: string;
25
+ /** Multa efetiva em % sobre o nominal. `0` = campo omitido do payload, não cobra. */
26
+ multa_taxa: number;
27
+ /** Mora efetiva em % ao mês. `0` = campo omitido do payload, não cobra. */
28
+ mora_taxa: number;
29
+ }
9
30
  export interface INexFinopsBillingPaymentOption {
10
31
  type: 'pix' | 'boleto' | 'payment_link';
11
32
  provider_id?: string | null;
@@ -15,6 +36,12 @@ export interface INexFinopsBillingPaymentOption {
15
36
  qr_code_payload?: string | null;
16
37
  expires_at?: string | null;
17
38
  status?: string | null;
39
+ boleto_terms?: INexFinopsBillingBoletoTerms | null;
40
+ /**
41
+ * Liga a option ao seu PDF (`boleto-inter-{nossoNumero}.pdf`). Sem ele, uma
42
+ * cobrança com dois boletos casa a linha digitável de um com o PDF do outro.
43
+ */
44
+ nosso_numero?: string | null;
18
45
  }
19
46
  export interface INexFinopsBillingCompetency {
20
47
  year: number;
@@ -19,6 +19,28 @@ export interface INexFinopsBillingServiceItem {
19
19
  amount: number;
20
20
  }
21
21
 
22
+ /**
23
+ * Termos efetivamente enviados ao emissor do boleto.
24
+ *
25
+ * Todos os campos são obrigatórios de propósito: a distinção entre "multa 0, não
26
+ * cobra" e "não sabemos os termos deste boleto" é a PRESENÇA do objeto, nunca um
27
+ * campo interno ausente. Snapshot presente é sempre completo; ausente significa
28
+ * boleto emitido antes do snapshot existir, e o frontend mostra "—", nunca um
29
+ * valor estimado.
30
+ */
31
+ export interface INexFinopsBillingBoletoTerms {
32
+ /** Vencimento enviado ao Inter, data civil YYYY-MM-DD. */
33
+ due_date: string;
34
+ /** O numDiasAgenda efetivamente enviado. */
35
+ num_dias_agenda: number;
36
+ /** Data limite de pagamento (YYYY-MM-DD) = due_date + num_dias_agenda. */
37
+ payment_deadline: string;
38
+ /** Multa efetiva em % sobre o nominal. `0` = campo omitido do payload, não cobra. */
39
+ multa_taxa: number;
40
+ /** Mora efetiva em % ao mês. `0` = campo omitido do payload, não cobra. */
41
+ mora_taxa: number;
42
+ }
43
+
22
44
  export interface INexFinopsBillingPaymentOption {
23
45
  type: 'pix' | 'boleto' | 'payment_link';
24
46
  provider_id?: string | null;
@@ -28,6 +50,12 @@ export interface INexFinopsBillingPaymentOption {
28
50
  qr_code_payload?: string | null;
29
51
  expires_at?: string | null;
30
52
  status?: string | null;
53
+ boleto_terms?: INexFinopsBillingBoletoTerms | null;
54
+ /**
55
+ * Liga a option ao seu PDF (`boleto-inter-{nossoNumero}.pdf`). Sem ele, uma
56
+ * cobrança com dois boletos casa a linha digitável de um com o PDF do outro.
57
+ */
58
+ nosso_numero?: string | null;
31
59
  }
32
60
 
33
61
  export interface INexFinopsBillingCompetency {
@@ -5,6 +5,23 @@ export interface IInterWebhookConfig {
5
5
  enabled: boolean;
6
6
  secret_hash?: string;
7
7
  }
8
+ /**
9
+ * Parâmetros comerciais do boleto. Ficam no Firestore de propósito: são
10
+ * parâmetro de negócio e mudam sem envolver engenharia nem deploy.
11
+ *
12
+ * Campo ausente cai no default do backend.
13
+ */
14
+ export interface IInterBoletoDefaults {
15
+ /**
16
+ * Dias corridos após o vencimento até o cancelamento automático no Inter —
17
+ * na prática, o prazo limite para pagar. O máximo aceito pela API é 60.
18
+ */
19
+ num_dias_agenda?: number;
20
+ /** Multa por atraso, em % sobre o valor nominal. `0` desliga (campo omitido do payload ao Inter). */
21
+ multa_taxa?: number;
22
+ /** Juros de mora, em % ao mês. `0` desliga (campo omitido do payload ao Inter). */
23
+ mora_taxa?: number;
24
+ }
8
25
  export interface IInterEnvAuthConfig {
9
26
  enabled: boolean;
10
27
  base_url?: string;
@@ -14,6 +31,7 @@ export interface IInterEnvAuthConfig {
14
31
  key_pem_secret_ref: GoogleSecretRef;
15
32
  conta_corrente?: string;
16
33
  timeout_ms?: number;
34
+ boleto_defaults?: IInterBoletoDefaults;
17
35
  webhook?: IInterWebhookConfig;
18
36
  }
19
37
  export interface IInterBoletoPIXCapabilities {
@@ -10,6 +10,26 @@ export interface IInterWebhookConfig {
10
10
  secret_hash?: string;
11
11
  }
12
12
 
13
+ // ── Boleto defaults ──
14
+
15
+ /**
16
+ * Parâmetros comerciais do boleto. Ficam no Firestore de propósito: são
17
+ * parâmetro de negócio e mudam sem envolver engenharia nem deploy.
18
+ *
19
+ * Campo ausente cai no default do backend.
20
+ */
21
+ export interface IInterBoletoDefaults {
22
+ /**
23
+ * Dias corridos após o vencimento até o cancelamento automático no Inter —
24
+ * na prática, o prazo limite para pagar. O máximo aceito pela API é 60.
25
+ */
26
+ num_dias_agenda?: number;
27
+ /** Multa por atraso, em % sobre o valor nominal. `0` desliga (campo omitido do payload ao Inter). */
28
+ multa_taxa?: number;
29
+ /** Juros de mora, em % ao mês. `0` desliga (campo omitido do payload ao Inter). */
30
+ mora_taxa?: number;
31
+ }
32
+
13
33
  // ── Auth ──
14
34
 
15
35
  export interface IInterEnvAuthConfig {
@@ -26,6 +46,8 @@ export interface IInterEnvAuthConfig {
26
46
 
27
47
  timeout_ms?: number;
28
48
 
49
+ boleto_defaults?: IInterBoletoDefaults;
50
+
29
51
  webhook?: IInterWebhookConfig;
30
52
  }
31
53
 
@@ -58,6 +58,7 @@ export declare const TaskAutoHandlerEnum: {
58
58
  readonly AppointmentConfirmation: "appointment_confirmation";
59
59
  readonly AppointmentPostConsultation: "appointment_post_consultation";
60
60
  readonly IntegrationsSyncRun: "evo-integrations.sync-run";
61
+ readonly LeadFormCapture: "lead_form_capture";
61
62
  readonly CampaignMaterialize: "campaign.materialize";
62
63
  readonly CampaignDispatchBatch: "campaign.dispatch_batch";
63
64
  };
@@ -117,6 +117,12 @@ exports.TaskAutoHandlerEnum = {
117
117
  // types/evo-integrations). Permite que o `/force` roteie pelo task-runner e
118
118
  // herde retry/backoff/DLQ, em vez de montar a mensagem PubSub na mão.
119
119
  IntegrationsSyncRun: "evo-integrations.sync-run",
120
+ // feat-121: captação de lead por FORMULÁRIO (site/landing). Resolve ou cria o lead
121
+ // pelo telefone, aplica o pipe que vier no payload (origem/qualificação/tags/campanha)
122
+ // e inicia a conversa no WhatsApp conforme o `mode` (`contato` | `agenda_demo`).
123
+ // Tópico do executor: `lead_form_capture.execute_requests` (functions-notifications).
124
+ // Espelhado à mão em `zTaskAutoHandlerSchema` — sem lá, o POST /tasks estoura ZodError.
125
+ LeadFormCapture: "lead_form_capture",
120
126
  // feat-081 F2: handlers do modulo de campanhas (padrao pontilhado da feat-078 —
121
127
  // `resolveHandlerTopic` monta `campaign.materialize.execute_requests`, topico que
122
128
  // a CF `campaign_materialize` ja escuta desde a F1, e
@@ -128,6 +128,12 @@ export const TaskAutoHandlerEnum = {
128
128
  // types/evo-integrations). Permite que o `/force` roteie pelo task-runner e
129
129
  // herde retry/backoff/DLQ, em vez de montar a mensagem PubSub na mão.
130
130
  IntegrationsSyncRun: "evo-integrations.sync-run",
131
+ // feat-121: captação de lead por FORMULÁRIO (site/landing). Resolve ou cria o lead
132
+ // pelo telefone, aplica o pipe que vier no payload (origem/qualificação/tags/campanha)
133
+ // e inicia a conversa no WhatsApp conforme o `mode` (`contato` | `agenda_demo`).
134
+ // Tópico do executor: `lead_form_capture.execute_requests` (functions-notifications).
135
+ // Espelhado à mão em `zTaskAutoHandlerSchema` — sem lá, o POST /tasks estoura ZodError.
136
+ LeadFormCapture: "lead_form_capture",
131
137
  // feat-081 F2: handlers do modulo de campanhas (padrao pontilhado da feat-078 —
132
138
  // `resolveHandlerTopic` monta `campaign.materialize.execute_requests`, topico que
133
139
  // a CF `campaign_materialize` ja escuta desde a F1, e
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "evo360-types",
3
- "version": "1.3.501",
3
+ "version": "1.3.505",
4
4
  "description": "HREVO360 Shared Types",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",