evo360-types 1.3.550 → 1.3.552
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.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.ts +1 -0
- package/dist/types/evo-reports/index.d.ts +100 -0
- package/dist/types/evo-reports/index.js +8 -0
- package/dist/types/evo-reports/index.ts +122 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ export * from "./types/nex-vendas";
|
|
|
33
33
|
export * from "./types/nexus-webhooks";
|
|
34
34
|
export * from "./types/evo-hub-ia";
|
|
35
35
|
export * from "./types/evo-mcp";
|
|
36
|
+
export * from "./types/evo-reports";
|
|
36
37
|
export * from "./apps/shared/zod-schemas";
|
|
37
38
|
export * from "./apps/evo-core/zod-schemas";
|
|
38
39
|
export * from "./apps/evo-tenant/zod-schemas";
|
package/dist/index.js
CHANGED
|
@@ -50,6 +50,7 @@ __exportStar(require("./types/nex-vendas"), exports);
|
|
|
50
50
|
__exportStar(require("./types/nexus-webhooks"), exports);
|
|
51
51
|
__exportStar(require("./types/evo-hub-ia"), exports);
|
|
52
52
|
__exportStar(require("./types/evo-mcp"), exports);
|
|
53
|
+
__exportStar(require("./types/evo-reports"), exports);
|
|
53
54
|
// zod schemas
|
|
54
55
|
__exportStar(require("./apps/shared/zod-schemas"), exports);
|
|
55
56
|
__exportStar(require("./apps/evo-core/zod-schemas"), exports);
|
package/dist/index.ts
CHANGED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
export declare const EvoReportsPermissions: {
|
|
2
|
+
readonly Read: "evo_reports_read";
|
|
3
|
+
};
|
|
4
|
+
export type EvoReportsPermissions = (typeof EvoReportsPermissions)[keyof typeof EvoReportsPermissions];
|
|
5
|
+
/**
|
|
6
|
+
* Quais séries o tenant pode exibir na janela consultada.
|
|
7
|
+
*
|
|
8
|
+
* `true` quando existe canal ativo OU houve uso no período — desligar o canal
|
|
9
|
+
* em outubro não pode apagar as barras de agosto.
|
|
10
|
+
*
|
|
11
|
+
* Consequência no resto do contrato: capability ligada e mês sem linha vale
|
|
12
|
+
* `0`; só capability desligada vale `null`.
|
|
13
|
+
*/
|
|
14
|
+
export interface IUsageCapabilities {
|
|
15
|
+
sms: boolean;
|
|
16
|
+
email: boolean;
|
|
17
|
+
llm: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Data (YYYY-MM-DD) a partir da qual existe medição de LLM — o publisher não
|
|
20
|
+
* tem backfill. `null` antes do deploy dele. A série de IA não é desenhada
|
|
21
|
+
* antes dessa data: ausência de medição não é consumo zero.
|
|
22
|
+
*/
|
|
23
|
+
llm_since: string | null;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Uma linha da abertura por departamento dentro de um mês.
|
|
27
|
+
*
|
|
28
|
+
* `department_id` vive em DOIS espaços de id: `fonte: 'chatbee'` usa o id
|
|
29
|
+
* numérico do Chatbee e `fonte: 'evo_chat'` usa o id do Firestore. Os dois
|
|
30
|
+
* espaços não se cruzam, por isso `fonte` faz parte da chave da linha — agrupar
|
|
31
|
+
* só por `department_id` mistura departamentos diferentes.
|
|
32
|
+
*/
|
|
33
|
+
export interface IUsageDepartmentRow {
|
|
34
|
+
fonte: "chatbee" | "evo_chat";
|
|
35
|
+
department_id: string | null;
|
|
36
|
+
department_name: string | null;
|
|
37
|
+
atendidos: number;
|
|
38
|
+
ativados: number;
|
|
39
|
+
}
|
|
40
|
+
export interface IUsageContacts {
|
|
41
|
+
/** Contatos únicos no tenant no mês (dedup por pessoa, tenant-wide). */
|
|
42
|
+
atendidos: number;
|
|
43
|
+
/** Contatos únicos ativados no tenant no mês. */
|
|
44
|
+
ativados: number;
|
|
45
|
+
/**
|
|
46
|
+
* Abertura por departamento, com contatos únicos DENTRO de cada departamento.
|
|
47
|
+
*
|
|
48
|
+
* A soma destas linhas PODE exceder `atendidos`/`ativados` do tenant: a mesma
|
|
49
|
+
* pessoa pode ser atendida em mais de um departamento no mesmo mês (medido:
|
|
50
|
+
* até 21%). São dois números diferentes de propósito — não é bug e não deve
|
|
51
|
+
* ser "corrigido" batendo um contra o outro.
|
|
52
|
+
*/
|
|
53
|
+
por_departamento: IUsageDepartmentRow[];
|
|
54
|
+
/** Contatos por `contact_type` (ex.: `waba`, `instagram`). */
|
|
55
|
+
por_contact_type: Record<string, number>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Notificações enviadas no mês.
|
|
59
|
+
*
|
|
60
|
+
* `null` = capability desligada, a série não é desenhada. `0` = capability
|
|
61
|
+
* ligada e sem envio no mês. Os dois significam coisas diferentes e não podem
|
|
62
|
+
* ser tratados como equivalentes na tela.
|
|
63
|
+
*
|
|
64
|
+
* `sms_enviados` conta MENSAGENS, não partes/segmentos — SMS longo é cobrado em
|
|
65
|
+
* 2+ partes pela Infobip. O rótulo é "SMS enviados", nunca "SMS cobrados".
|
|
66
|
+
*/
|
|
67
|
+
export interface IUsageNotifications {
|
|
68
|
+
sms_enviados: number | null;
|
|
69
|
+
emails_enviados: number | null;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Uso de LLM no mês. O bloco inteiro é `null` quando a capability está
|
|
73
|
+
* desligada; com ela ligada e sem uso no mês, os campos vêm zerados.
|
|
74
|
+
*
|
|
75
|
+
* `turnos` é a quantidade de executions que chamaram o LLM (não a soma de
|
|
76
|
+
* rounds do orchestrator). `tokens_total` = input + output + cache_write +
|
|
77
|
+
* cache_read.
|
|
78
|
+
*/
|
|
79
|
+
export interface IUsageLlm {
|
|
80
|
+
turnos: number;
|
|
81
|
+
tokens_total: number;
|
|
82
|
+
tokens_input: number;
|
|
83
|
+
tokens_output: number;
|
|
84
|
+
tokens_cache_write: number;
|
|
85
|
+
tokens_cache_read: number;
|
|
86
|
+
}
|
|
87
|
+
export interface IMonthlyUsageRow {
|
|
88
|
+
/** Primeiro dia do mês em UTC, `YYYY-MM-DD`. */
|
|
89
|
+
mes: string;
|
|
90
|
+
/** `true` apenas no mês corrente, que ainda não fechou. */
|
|
91
|
+
partial: boolean;
|
|
92
|
+
contatos: IUsageContacts;
|
|
93
|
+
notificacoes: IUsageNotifications;
|
|
94
|
+
ia: IUsageLlm | null;
|
|
95
|
+
}
|
|
96
|
+
export interface IMonthlyUsageResponse {
|
|
97
|
+
ok: true;
|
|
98
|
+
capabilities: IUsageCapabilities;
|
|
99
|
+
months: IMonthlyUsageRow[];
|
|
100
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EvoReportsPermissions = void 0;
|
|
4
|
+
// Permissão de leitura dos relatórios tenant-scoped: o relatório de atendimento
|
|
5
|
+
// servido pela CF `evo_reports` e o registro de uso exibido no portal.
|
|
6
|
+
exports.EvoReportsPermissions = {
|
|
7
|
+
Read: "evo_reports_read",
|
|
8
|
+
};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// Permissão de leitura dos relatórios tenant-scoped: o relatório de atendimento
|
|
2
|
+
// servido pela CF `evo_reports` e o registro de uso exibido no portal.
|
|
3
|
+
export const EvoReportsPermissions = {
|
|
4
|
+
Read: "evo_reports_read",
|
|
5
|
+
} as const;
|
|
6
|
+
|
|
7
|
+
export type EvoReportsPermissions =
|
|
8
|
+
(typeof EvoReportsPermissions)[keyof typeof EvoReportsPermissions];
|
|
9
|
+
|
|
10
|
+
// ======================================================
|
|
11
|
+
// evo-reports — contrato do registro de uso mensal
|
|
12
|
+
//
|
|
13
|
+
// Resposta de `GET /me/usage?months=N` (CF `evo_billing`).
|
|
14
|
+
//
|
|
15
|
+
// Este contrato é REGISTRO DE USO, não memória de cálculo de fatura: os números
|
|
16
|
+
// saem das fontes operacionais (views de atendimento em BQ, eventos de
|
|
17
|
+
// notificação e eventos de uso de LLM) e não são conciliados com o valor
|
|
18
|
+
// cobrado. A ligação entre uso e cobrança é escopo da feat-150.
|
|
19
|
+
// ======================================================
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Quais séries o tenant pode exibir na janela consultada.
|
|
23
|
+
*
|
|
24
|
+
* `true` quando existe canal ativo OU houve uso no período — desligar o canal
|
|
25
|
+
* em outubro não pode apagar as barras de agosto.
|
|
26
|
+
*
|
|
27
|
+
* Consequência no resto do contrato: capability ligada e mês sem linha vale
|
|
28
|
+
* `0`; só capability desligada vale `null`.
|
|
29
|
+
*/
|
|
30
|
+
export interface IUsageCapabilities {
|
|
31
|
+
sms: boolean;
|
|
32
|
+
email: boolean;
|
|
33
|
+
llm: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Data (YYYY-MM-DD) a partir da qual existe medição de LLM — o publisher não
|
|
36
|
+
* tem backfill. `null` antes do deploy dele. A série de IA não é desenhada
|
|
37
|
+
* antes dessa data: ausência de medição não é consumo zero.
|
|
38
|
+
*/
|
|
39
|
+
llm_since: string | null;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Uma linha da abertura por departamento dentro de um mês.
|
|
44
|
+
*
|
|
45
|
+
* `department_id` vive em DOIS espaços de id: `fonte: 'chatbee'` usa o id
|
|
46
|
+
* numérico do Chatbee e `fonte: 'evo_chat'` usa o id do Firestore. Os dois
|
|
47
|
+
* espaços não se cruzam, por isso `fonte` faz parte da chave da linha — agrupar
|
|
48
|
+
* só por `department_id` mistura departamentos diferentes.
|
|
49
|
+
*/
|
|
50
|
+
export interface IUsageDepartmentRow {
|
|
51
|
+
fonte: "chatbee" | "evo_chat";
|
|
52
|
+
department_id: string | null;
|
|
53
|
+
department_name: string | null;
|
|
54
|
+
atendidos: number;
|
|
55
|
+
ativados: number;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export interface IUsageContacts {
|
|
59
|
+
/** Contatos únicos no tenant no mês (dedup por pessoa, tenant-wide). */
|
|
60
|
+
atendidos: number;
|
|
61
|
+
/** Contatos únicos ativados no tenant no mês. */
|
|
62
|
+
ativados: number;
|
|
63
|
+
/**
|
|
64
|
+
* Abertura por departamento, com contatos únicos DENTRO de cada departamento.
|
|
65
|
+
*
|
|
66
|
+
* A soma destas linhas PODE exceder `atendidos`/`ativados` do tenant: a mesma
|
|
67
|
+
* pessoa pode ser atendida em mais de um departamento no mesmo mês (medido:
|
|
68
|
+
* até 21%). São dois números diferentes de propósito — não é bug e não deve
|
|
69
|
+
* ser "corrigido" batendo um contra o outro.
|
|
70
|
+
*/
|
|
71
|
+
por_departamento: IUsageDepartmentRow[];
|
|
72
|
+
/** Contatos por `contact_type` (ex.: `waba`, `instagram`). */
|
|
73
|
+
por_contact_type: Record<string, number>;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Notificações enviadas no mês.
|
|
78
|
+
*
|
|
79
|
+
* `null` = capability desligada, a série não é desenhada. `0` = capability
|
|
80
|
+
* ligada e sem envio no mês. Os dois significam coisas diferentes e não podem
|
|
81
|
+
* ser tratados como equivalentes na tela.
|
|
82
|
+
*
|
|
83
|
+
* `sms_enviados` conta MENSAGENS, não partes/segmentos — SMS longo é cobrado em
|
|
84
|
+
* 2+ partes pela Infobip. O rótulo é "SMS enviados", nunca "SMS cobrados".
|
|
85
|
+
*/
|
|
86
|
+
export interface IUsageNotifications {
|
|
87
|
+
sms_enviados: number | null;
|
|
88
|
+
emails_enviados: number | null;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Uso de LLM no mês. O bloco inteiro é `null` quando a capability está
|
|
93
|
+
* desligada; com ela ligada e sem uso no mês, os campos vêm zerados.
|
|
94
|
+
*
|
|
95
|
+
* `turnos` é a quantidade de executions que chamaram o LLM (não a soma de
|
|
96
|
+
* rounds do orchestrator). `tokens_total` = input + output + cache_write +
|
|
97
|
+
* cache_read.
|
|
98
|
+
*/
|
|
99
|
+
export interface IUsageLlm {
|
|
100
|
+
turnos: number;
|
|
101
|
+
tokens_total: number;
|
|
102
|
+
tokens_input: number;
|
|
103
|
+
tokens_output: number;
|
|
104
|
+
tokens_cache_write: number;
|
|
105
|
+
tokens_cache_read: number;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export interface IMonthlyUsageRow {
|
|
109
|
+
/** Primeiro dia do mês em UTC, `YYYY-MM-DD`. */
|
|
110
|
+
mes: string;
|
|
111
|
+
/** `true` apenas no mês corrente, que ainda não fechou. */
|
|
112
|
+
partial: boolean;
|
|
113
|
+
contatos: IUsageContacts;
|
|
114
|
+
notificacoes: IUsageNotifications;
|
|
115
|
+
ia: IUsageLlm | null;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export interface IMonthlyUsageResponse {
|
|
119
|
+
ok: true;
|
|
120
|
+
capabilities: IUsageCapabilities;
|
|
121
|
+
months: IMonthlyUsageRow[];
|
|
122
|
+
}
|