termo_core 0.1.2 → 0.1.4
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/base/servico_termotubos.d.ts +2 -0
- package/dist/base/servicos.d.ts +1 -1
- package/dist/base/servicos.js +23 -8
- package/dist/{sell → flow}/index.d.ts +1 -1
- package/dist/{sell → flow}/index.js +1 -1
- package/dist/flow/rotas.d.ts +19 -0
- package/dist/flow/rotas.js +37 -0
- package/dist/flow/tipos.d.ts +69 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/portal/rotas.d.ts +54 -20
- package/dist/portal/rotas.js +86 -36
- package/dist/portal/tipos.d.ts +53 -24
- package/package.json +1 -1
- package/dist/sell/rotas.d.ts +0 -868
- package/dist/sell/rotas.js +0 -1215
- package/dist/sell/tipos.d.ts +0 -757
- /package/dist/{sell → flow}/tipos.js +0 -0
|
@@ -7,6 +7,8 @@ export interface ServicoTermotubos {
|
|
|
7
7
|
readonly endereco_no_localhost: string | null;
|
|
8
8
|
readonly endereco_no_sandbox: string;
|
|
9
9
|
readonly endereco_em_production: string;
|
|
10
|
+
/** `false` para um serviço que ainda não publicou o `openapi.json` (o gerador não baixa o contrato dele). */
|
|
11
|
+
readonly ativo: boolean;
|
|
10
12
|
}
|
|
11
13
|
export declare function endereco_no_ambiente(servico: ServicoTermotubos, ambiente: Ambiente): string;
|
|
12
14
|
/**
|
package/dist/base/servicos.d.ts
CHANGED
|
@@ -2,12 +2,12 @@ import type { ServicoTermotubos } from "./servico_termotubos.js";
|
|
|
2
2
|
export declare const TERMO_AI: ServicoTermotubos;
|
|
3
3
|
export declare const TERMO_AUTH: ServicoTermotubos;
|
|
4
4
|
export declare const TERMO_BUCKET: ServicoTermotubos;
|
|
5
|
+
export declare const TERMO_FLOW: ServicoTermotubos;
|
|
5
6
|
export declare const TERMO_INTRANET: ServicoTermotubos;
|
|
6
7
|
export declare const TERMO_LEADS: ServicoTermotubos;
|
|
7
8
|
export declare const TERMO_MCP: ServicoTermotubos;
|
|
8
9
|
export declare const TERMO_PORTAL: ServicoTermotubos;
|
|
9
10
|
export declare const TERMO_QUALITY: ServicoTermotubos;
|
|
10
|
-
export declare const TERMO_SELL: ServicoTermotubos;
|
|
11
11
|
export declare const TERMO_STATUS: ServicoTermotubos;
|
|
12
12
|
export declare const TERMO_STUDIO: ServicoTermotubos;
|
|
13
13
|
export declare const TERMO_SUPPORT: ServicoTermotubos;
|
package/dist/base/servicos.js
CHANGED
|
@@ -5,6 +5,7 @@ export const TERMO_AI = {
|
|
|
5
5
|
endereco_no_localhost: null,
|
|
6
6
|
endereco_no_sandbox: "https://sandbox-api-ai.termotubos.com.br",
|
|
7
7
|
endereco_em_production: "https://api-ai.termotubos.com.br",
|
|
8
|
+
ativo: true,
|
|
8
9
|
};
|
|
9
10
|
export const TERMO_AUTH = {
|
|
10
11
|
nome_do_servico: "TermoAuth",
|
|
@@ -12,6 +13,7 @@ export const TERMO_AUTH = {
|
|
|
12
13
|
endereco_no_localhost: "http://localhost:51001",
|
|
13
14
|
endereco_no_sandbox: "https://sandbox-api-auth.termotubos.com.br",
|
|
14
15
|
endereco_em_production: "https://api-auth.termotubos.com.br",
|
|
16
|
+
ativo: true,
|
|
15
17
|
};
|
|
16
18
|
export const TERMO_BUCKET = {
|
|
17
19
|
nome_do_servico: "TermoBucket",
|
|
@@ -19,6 +21,15 @@ export const TERMO_BUCKET = {
|
|
|
19
21
|
endereco_no_localhost: "http://localhost:51121",
|
|
20
22
|
endereco_no_sandbox: "https://sandbox-api-bucket.termotubos.com.br",
|
|
21
23
|
endereco_em_production: "https://api-bucket.termotubos.com.br",
|
|
24
|
+
ativo: true,
|
|
25
|
+
};
|
|
26
|
+
export const TERMO_FLOW = {
|
|
27
|
+
nome_do_servico: "TermoFlow",
|
|
28
|
+
nome_do_modulo: "flow",
|
|
29
|
+
endereco_no_localhost: "http://localhost:51021",
|
|
30
|
+
endereco_no_sandbox: "https://sandbox-api-flow.termotubos.com.br",
|
|
31
|
+
endereco_em_production: "https://api-flow.termotubos.com.br",
|
|
32
|
+
ativo: true,
|
|
22
33
|
};
|
|
23
34
|
export const TERMO_INTRANET = {
|
|
24
35
|
nome_do_servico: "TermoIntranetAPI",
|
|
@@ -26,6 +37,7 @@ export const TERMO_INTRANET = {
|
|
|
26
37
|
endereco_no_localhost: "http://localhost:51091",
|
|
27
38
|
endereco_no_sandbox: "https://sandbox-api-intranet.termotubos.com.br",
|
|
28
39
|
endereco_em_production: "https://api-intranet.termotubos.com.br",
|
|
40
|
+
ativo: true,
|
|
29
41
|
};
|
|
30
42
|
export const TERMO_LEADS = {
|
|
31
43
|
nome_do_servico: "TermoLeads",
|
|
@@ -33,6 +45,7 @@ export const TERMO_LEADS = {
|
|
|
33
45
|
endereco_no_localhost: "http://localhost:51031",
|
|
34
46
|
endereco_no_sandbox: "https://sandbox-api-leads.termotubos.com.br",
|
|
35
47
|
endereco_em_production: "https://api-leads.termotubos.com.br",
|
|
48
|
+
ativo: true,
|
|
36
49
|
};
|
|
37
50
|
export const TERMO_MCP = {
|
|
38
51
|
nome_do_servico: "TermoMCP",
|
|
@@ -40,6 +53,7 @@ export const TERMO_MCP = {
|
|
|
40
53
|
endereco_no_localhost: "http://localhost:51061",
|
|
41
54
|
endereco_no_sandbox: "https://sandbox-api-mcp.termotubos.com.br",
|
|
42
55
|
endereco_em_production: "https://api-mcp.termotubos.com.br",
|
|
56
|
+
ativo: false,
|
|
43
57
|
};
|
|
44
58
|
export const TERMO_PORTAL = {
|
|
45
59
|
nome_do_servico: "TermoPortal",
|
|
@@ -47,6 +61,7 @@ export const TERMO_PORTAL = {
|
|
|
47
61
|
endereco_no_localhost: "http://localhost:51011",
|
|
48
62
|
endereco_no_sandbox: "https://sandbox-api-portal.termotubos.com.br",
|
|
49
63
|
endereco_em_production: "https://api-portal.termotubos.com.br",
|
|
64
|
+
ativo: true,
|
|
50
65
|
};
|
|
51
66
|
export const TERMO_QUALITY = {
|
|
52
67
|
nome_do_servico: "TermoQuality",
|
|
@@ -54,13 +69,7 @@ export const TERMO_QUALITY = {
|
|
|
54
69
|
endereco_no_localhost: "http://localhost:51071",
|
|
55
70
|
endereco_no_sandbox: "https://sandbox-api-quality.termotubos.com.br",
|
|
56
71
|
endereco_em_production: "https://api-quality.termotubos.com.br",
|
|
57
|
-
|
|
58
|
-
export const TERMO_SELL = {
|
|
59
|
-
nome_do_servico: "TermoSell",
|
|
60
|
-
nome_do_modulo: "sell",
|
|
61
|
-
endereco_no_localhost: "http://localhost:51021",
|
|
62
|
-
endereco_no_sandbox: "https://sandbox-api-sell.termotubos.com.br",
|
|
63
|
-
endereco_em_production: "https://api-sell.termotubos.com.br",
|
|
72
|
+
ativo: false,
|
|
64
73
|
};
|
|
65
74
|
export const TERMO_STATUS = {
|
|
66
75
|
nome_do_servico: "TermoStatus",
|
|
@@ -68,6 +77,7 @@ export const TERMO_STATUS = {
|
|
|
68
77
|
endereco_no_localhost: "http://localhost:51131",
|
|
69
78
|
endereco_no_sandbox: "https://sandbox-api-status.termotubos.com.br",
|
|
70
79
|
endereco_em_production: "https://api-status.termotubos.com.br",
|
|
80
|
+
ativo: false,
|
|
71
81
|
};
|
|
72
82
|
export const TERMO_STUDIO = {
|
|
73
83
|
nome_do_servico: "TermoStudio",
|
|
@@ -75,6 +85,7 @@ export const TERMO_STUDIO = {
|
|
|
75
85
|
endereco_no_localhost: null,
|
|
76
86
|
endereco_no_sandbox: "https://sandbox-api-studio.termotubos.com.br",
|
|
77
87
|
endereco_em_production: "https://api-studio.termotubos.com.br",
|
|
88
|
+
ativo: false,
|
|
78
89
|
};
|
|
79
90
|
export const TERMO_SUPPORT = {
|
|
80
91
|
nome_do_servico: "TermoSupport",
|
|
@@ -82,6 +93,7 @@ export const TERMO_SUPPORT = {
|
|
|
82
93
|
endereco_no_localhost: "http://localhost:51051",
|
|
83
94
|
endereco_no_sandbox: "https://sandbox-api-support.termotubos.com.br",
|
|
84
95
|
endereco_em_production: "https://api-support.termotubos.com.br",
|
|
96
|
+
ativo: true,
|
|
85
97
|
};
|
|
86
98
|
export const TERMO_TRACING = {
|
|
87
99
|
nome_do_servico: "TermoTracing",
|
|
@@ -89,6 +101,7 @@ export const TERMO_TRACING = {
|
|
|
89
101
|
endereco_no_localhost: "http://localhost:51111",
|
|
90
102
|
endereco_no_sandbox: "https://sandbox-api-tracing.termotubos.com.br",
|
|
91
103
|
endereco_em_production: "https://api-tracing.termotubos.com.br",
|
|
104
|
+
ativo: true,
|
|
92
105
|
};
|
|
93
106
|
export const TERMO_WEBHOOK = {
|
|
94
107
|
nome_do_servico: "TermoWebhook",
|
|
@@ -96,6 +109,7 @@ export const TERMO_WEBHOOK = {
|
|
|
96
109
|
endereco_no_localhost: "http://localhost:51081",
|
|
97
110
|
endereco_no_sandbox: "https://sandbox-api-webhook.termotubos.com.br",
|
|
98
111
|
endereco_em_production: "https://api-webhook.termotubos.com.br",
|
|
112
|
+
ativo: true,
|
|
99
113
|
};
|
|
100
114
|
export const TERMO_WMS = {
|
|
101
115
|
nome_do_servico: "TermoWMS",
|
|
@@ -103,17 +117,18 @@ export const TERMO_WMS = {
|
|
|
103
117
|
endereco_no_localhost: null,
|
|
104
118
|
endereco_no_sandbox: "https://sandbox-api-wms.termotubos.com.br",
|
|
105
119
|
endereco_em_production: "https://api-wms.termotubos.com.br",
|
|
120
|
+
ativo: false,
|
|
106
121
|
};
|
|
107
122
|
export const TODOS_OS_SERVICOS = [
|
|
108
123
|
TERMO_AI,
|
|
109
124
|
TERMO_AUTH,
|
|
110
125
|
TERMO_BUCKET,
|
|
126
|
+
TERMO_FLOW,
|
|
111
127
|
TERMO_INTRANET,
|
|
112
128
|
TERMO_LEADS,
|
|
113
129
|
TERMO_MCP,
|
|
114
130
|
TERMO_PORTAL,
|
|
115
131
|
TERMO_QUALITY,
|
|
116
|
-
TERMO_SELL,
|
|
117
132
|
TERMO_STATUS,
|
|
118
133
|
TERMO_STUDIO,
|
|
119
134
|
TERMO_SUPPORT,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Gerado pelo gerador do TermoCore (`cargo run -p gerador`). Não edite à mão: a próxima geração sobrescreve.
|
|
2
2
|
/**
|
|
3
|
-
* Cliente tipado da API do
|
|
3
|
+
* Cliente tipado da API do TermoFlow, gerado a partir do `openapi.json` do serviço.
|
|
4
4
|
*/
|
|
5
5
|
export * from "./tipos.js";
|
|
6
6
|
export * from "./rotas.js";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type * as tipos from "./tipos.js";
|
|
2
|
+
import type { CredencialDeAcesso } from "../base/credencial.js";
|
|
3
|
+
import { type OpcoesDaChamada } from "../base/requisicao.js";
|
|
4
|
+
/**
|
|
5
|
+
* Cadastra um robô de atendimento
|
|
6
|
+
*
|
|
7
|
+
* Exige a permissão `criar` da área `configuracoes`. `nome` é obrigatório (até 80 caracteres, único entre os robôs); `modelo` é a IA preferida do gateway do TermoAI, um `provedor` de `GET /robo/modelos` (opcional, até 80; vazio deixa o TermoAI escolher); `descricao` vai até 200 e `prompt_base` até 4000 (padrão vazio). Sem `fluxo`, o robô nasce só com a etapa de início. O robô nasce ativo, na versão 1. `fluxo` é o caminho do atendimento: `nos` (até 40 etapas, exatamente uma do tipo `inicio`; os outros tipos são `inicio_contato_novo`, `instrucao`, `mensagem`, `botoes`, `atendimento` e `gatilho`) e `ligacoes` (`origem`, `destino` e `origem_saida`, que é o id do botão ou da regra de onde a ligação sai, `null` no início e na mensagem). Cada etapa fora o início precisa de `nome` (até 60 caracteres); `objetivo` vai até 200, `instrucao` até 2000 e `mensagem` até 1000; `ferramentas` lista até 20 ids de ferramentas do robô. A `instrucao` precisa de 1 a 10 `regras` de saída (`condicao` até 200 caracteres); `botoes` precisa de 1 a 10 botões (`rotulo` até 20 caracteres) e de texto fixo em `mensagem` ou, com `mensagem_por_ia`, da `instrucao` para a IA escrever; `mensagem` também exige texto fixo ou `mensagem_por_ia`; `atendimento` encerra o robô, passa a conversa para a equipe do Chatwoot em `equipe_id` (opcional, de `GET /robo/equipes`) e não tem saída; `gatilho` (no máximo um, sem ligação de entrada nem de saída) é o gatilho de cliente sem resposta: `minutos_sem_resposta` (1 a 1440) e `equipe_id` opcional, e uma varredura a cada minuto passa para essa equipe toda conversa com o robô em que o cliente ficou esse tempo sem responder. Ids de etapas, botões e regras são únicos; nenhuma ligação volta ao início nem liga a etapa nela mesma, e cada saída tem no máximo uma próxima etapa. `inicio_contato_novo` (no máximo um, sem ligação de entrada) é o início de quem não está na lista de clientes: só vale com `atender_contatos_novos` ligado e, sem ele ou sem ligação, o contato novo sai pelo `inicio`. O texto fixo aceita marcadores como `{{cliente.nome}}` e `{{ultimo_pedido.itens}}`.
|
|
8
|
+
*
|
|
9
|
+
* `POST /robo`
|
|
10
|
+
*/
|
|
11
|
+
export declare function criar_robo(credencial_de_acesso: CredencialDeAcesso, corpo_da_requisicao: tipos.RoboCriar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Robo>;
|
|
12
|
+
/**
|
|
13
|
+
* Atualiza um robô pelo id
|
|
14
|
+
*
|
|
15
|
+
* Exige a permissão `editar` da área `configuracoes`. Atualização parcial: só os campos enviados mudam, com os mesmos limites do cadastro; `descricao` vazia apaga o valor `ativo` liga ou desliga o robô e `atender_contatos_novos` decide se o robô atende quem não está na lista de clientes (cliente cadastrado com o atendente desligado continua indo para a equipe). `fluxo`, quando enviado, substitui o fluxo inteiro. Enviar `prompt_base` ou `fluxo` sobe a `versao` em 1. `fluxo` é o caminho do atendimento: `nos` (até 40 etapas, exatamente uma do tipo `inicio`; os outros tipos são `inicio_contato_novo`, `instrucao`, `mensagem`, `botoes`, `atendimento` e `gatilho`) e `ligacoes` (`origem`, `destino` e `origem_saida`, que é o id do botão ou da regra de onde a ligação sai, `null` no início e na mensagem). Cada etapa fora o início precisa de `nome` (até 60 caracteres); `objetivo` vai até 200, `instrucao` até 2000 e `mensagem` até 1000; `ferramentas` lista até 20 ids de ferramentas do robô. A `instrucao` precisa de 1 a 10 `regras` de saída (`condicao` até 200 caracteres); `botoes` precisa de 1 a 10 botões (`rotulo` até 20 caracteres) e de texto fixo em `mensagem` ou, com `mensagem_por_ia`, da `instrucao` para a IA escrever; `mensagem` também exige texto fixo ou `mensagem_por_ia`; `atendimento` encerra o robô, passa a conversa para a equipe do Chatwoot em `equipe_id` (opcional, de `GET /robo/equipes`) e não tem saída; `gatilho` (no máximo um, sem ligação de entrada nem de saída) é o gatilho de cliente sem resposta: `minutos_sem_resposta` (1 a 1440) e `equipe_id` opcional, e uma varredura a cada minuto passa para essa equipe toda conversa com o robô em que o cliente ficou esse tempo sem responder. Ids de etapas, botões e regras são únicos; nenhuma ligação volta ao início nem liga a etapa nela mesma, e cada saída tem no máximo uma próxima etapa. `inicio_contato_novo` (no máximo um, sem ligação de entrada) é o início de quem não está na lista de clientes: só vale com `atender_contatos_novos` ligado e, sem ele ou sem ligação, o contato novo sai pelo `inicio`. O texto fixo aceita marcadores como `{{cliente.nome}}` e `{{ultimo_pedido.itens}}`.
|
|
16
|
+
*
|
|
17
|
+
* `PATCH /robo/{id}`
|
|
18
|
+
*/
|
|
19
|
+
export declare function atualizar_pelo_id_robo(credencial_de_acesso: CredencialDeAcesso, id: string, corpo_da_requisicao: tipos.RoboAtualizar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Robo>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Gerado pelo gerador do TermoCore (`cargo run -p gerador`). Não edite à mão: a próxima geração sobrescreve.
|
|
2
|
+
import { chamar_servico, codificar_parametro_de_caminho } from "../base/requisicao.js";
|
|
3
|
+
import { TERMO_FLOW as SERVICO_DESTA_API } from "../base/servicos.js";
|
|
4
|
+
/**
|
|
5
|
+
* Cadastra um robô de atendimento
|
|
6
|
+
*
|
|
7
|
+
* Exige a permissão `criar` da área `configuracoes`. `nome` é obrigatório (até 80 caracteres, único entre os robôs); `modelo` é a IA preferida do gateway do TermoAI, um `provedor` de `GET /robo/modelos` (opcional, até 80; vazio deixa o TermoAI escolher); `descricao` vai até 200 e `prompt_base` até 4000 (padrão vazio). Sem `fluxo`, o robô nasce só com a etapa de início. O robô nasce ativo, na versão 1. `fluxo` é o caminho do atendimento: `nos` (até 40 etapas, exatamente uma do tipo `inicio`; os outros tipos são `inicio_contato_novo`, `instrucao`, `mensagem`, `botoes`, `atendimento` e `gatilho`) e `ligacoes` (`origem`, `destino` e `origem_saida`, que é o id do botão ou da regra de onde a ligação sai, `null` no início e na mensagem). Cada etapa fora o início precisa de `nome` (até 60 caracteres); `objetivo` vai até 200, `instrucao` até 2000 e `mensagem` até 1000; `ferramentas` lista até 20 ids de ferramentas do robô. A `instrucao` precisa de 1 a 10 `regras` de saída (`condicao` até 200 caracteres); `botoes` precisa de 1 a 10 botões (`rotulo` até 20 caracteres) e de texto fixo em `mensagem` ou, com `mensagem_por_ia`, da `instrucao` para a IA escrever; `mensagem` também exige texto fixo ou `mensagem_por_ia`; `atendimento` encerra o robô, passa a conversa para a equipe do Chatwoot em `equipe_id` (opcional, de `GET /robo/equipes`) e não tem saída; `gatilho` (no máximo um, sem ligação de entrada nem de saída) é o gatilho de cliente sem resposta: `minutos_sem_resposta` (1 a 1440) e `equipe_id` opcional, e uma varredura a cada minuto passa para essa equipe toda conversa com o robô em que o cliente ficou esse tempo sem responder. Ids de etapas, botões e regras são únicos; nenhuma ligação volta ao início nem liga a etapa nela mesma, e cada saída tem no máximo uma próxima etapa. `inicio_contato_novo` (no máximo um, sem ligação de entrada) é o início de quem não está na lista de clientes: só vale com `atender_contatos_novos` ligado e, sem ele ou sem ligação, o contato novo sai pelo `inicio`. O texto fixo aceita marcadores como `{{cliente.nome}}` e `{{ultimo_pedido.itens}}`.
|
|
8
|
+
*
|
|
9
|
+
* `POST /robo`
|
|
10
|
+
*/
|
|
11
|
+
export function criar_robo(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
|
|
12
|
+
return chamar_servico({
|
|
13
|
+
servico: SERVICO_DESTA_API,
|
|
14
|
+
metodo_http: "POST",
|
|
15
|
+
caminho_da_rota: "/robo",
|
|
16
|
+
credencial_de_acesso,
|
|
17
|
+
corpo_json: corpo_da_requisicao,
|
|
18
|
+
formato_da_resposta: "json",
|
|
19
|
+
}, opcoes_da_chamada);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Atualiza um robô pelo id
|
|
23
|
+
*
|
|
24
|
+
* Exige a permissão `editar` da área `configuracoes`. Atualização parcial: só os campos enviados mudam, com os mesmos limites do cadastro; `descricao` vazia apaga o valor `ativo` liga ou desliga o robô e `atender_contatos_novos` decide se o robô atende quem não está na lista de clientes (cliente cadastrado com o atendente desligado continua indo para a equipe). `fluxo`, quando enviado, substitui o fluxo inteiro. Enviar `prompt_base` ou `fluxo` sobe a `versao` em 1. `fluxo` é o caminho do atendimento: `nos` (até 40 etapas, exatamente uma do tipo `inicio`; os outros tipos são `inicio_contato_novo`, `instrucao`, `mensagem`, `botoes`, `atendimento` e `gatilho`) e `ligacoes` (`origem`, `destino` e `origem_saida`, que é o id do botão ou da regra de onde a ligação sai, `null` no início e na mensagem). Cada etapa fora o início precisa de `nome` (até 60 caracteres); `objetivo` vai até 200, `instrucao` até 2000 e `mensagem` até 1000; `ferramentas` lista até 20 ids de ferramentas do robô. A `instrucao` precisa de 1 a 10 `regras` de saída (`condicao` até 200 caracteres); `botoes` precisa de 1 a 10 botões (`rotulo` até 20 caracteres) e de texto fixo em `mensagem` ou, com `mensagem_por_ia`, da `instrucao` para a IA escrever; `mensagem` também exige texto fixo ou `mensagem_por_ia`; `atendimento` encerra o robô, passa a conversa para a equipe do Chatwoot em `equipe_id` (opcional, de `GET /robo/equipes`) e não tem saída; `gatilho` (no máximo um, sem ligação de entrada nem de saída) é o gatilho de cliente sem resposta: `minutos_sem_resposta` (1 a 1440) e `equipe_id` opcional, e uma varredura a cada minuto passa para essa equipe toda conversa com o robô em que o cliente ficou esse tempo sem responder. Ids de etapas, botões e regras são únicos; nenhuma ligação volta ao início nem liga a etapa nela mesma, e cada saída tem no máximo uma próxima etapa. `inicio_contato_novo` (no máximo um, sem ligação de entrada) é o início de quem não está na lista de clientes: só vale com `atender_contatos_novos` ligado e, sem ele ou sem ligação, o contato novo sai pelo `inicio`. O texto fixo aceita marcadores como `{{cliente.nome}}` e `{{ultimo_pedido.itens}}`.
|
|
25
|
+
*
|
|
26
|
+
* `PATCH /robo/{id}`
|
|
27
|
+
*/
|
|
28
|
+
export function atualizar_pelo_id_robo(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
|
|
29
|
+
return chamar_servico({
|
|
30
|
+
servico: SERVICO_DESTA_API,
|
|
31
|
+
metodo_http: "PATCH",
|
|
32
|
+
caminho_da_rota: `/robo/${codificar_parametro_de_caminho(id)}`,
|
|
33
|
+
credencial_de_acesso,
|
|
34
|
+
corpo_json: corpo_da_requisicao,
|
|
35
|
+
formato_da_resposta: "json",
|
|
36
|
+
}, opcoes_da_chamada);
|
|
37
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export interface RespostaDeErro {
|
|
2
|
+
erro: string;
|
|
3
|
+
}
|
|
4
|
+
export interface Robo {
|
|
5
|
+
atender_contatos_novos: boolean;
|
|
6
|
+
ativo: boolean;
|
|
7
|
+
atualizado_em: string;
|
|
8
|
+
criado_em: string;
|
|
9
|
+
descricao?: string | null;
|
|
10
|
+
fluxo: RoboFluxo;
|
|
11
|
+
id: string;
|
|
12
|
+
modelo: string;
|
|
13
|
+
nome: string;
|
|
14
|
+
prompt_base: string;
|
|
15
|
+
versao: number;
|
|
16
|
+
}
|
|
17
|
+
export interface RoboAtualizar {
|
|
18
|
+
atender_contatos_novos?: boolean | null;
|
|
19
|
+
ativo?: boolean | null;
|
|
20
|
+
descricao?: string | null;
|
|
21
|
+
fluxo?: RoboFluxo | null;
|
|
22
|
+
modelo?: string | null;
|
|
23
|
+
nome?: string | null;
|
|
24
|
+
prompt_base?: string | null;
|
|
25
|
+
}
|
|
26
|
+
export interface RoboBotao {
|
|
27
|
+
id: string;
|
|
28
|
+
rotulo: string;
|
|
29
|
+
}
|
|
30
|
+
export interface RoboCriar {
|
|
31
|
+
descricao?: string | null;
|
|
32
|
+
fluxo?: RoboFluxo | null;
|
|
33
|
+
modelo?: string;
|
|
34
|
+
nome: string;
|
|
35
|
+
prompt_base?: string | null;
|
|
36
|
+
}
|
|
37
|
+
export interface RoboFluxo {
|
|
38
|
+
ligacoes?: Array<RoboLigacao>;
|
|
39
|
+
nos?: Array<RoboNo>;
|
|
40
|
+
}
|
|
41
|
+
export interface RoboLigacao {
|
|
42
|
+
destino: string;
|
|
43
|
+
id: string;
|
|
44
|
+
origem: string;
|
|
45
|
+
origem_saida?: string | null;
|
|
46
|
+
}
|
|
47
|
+
export interface RoboNo {
|
|
48
|
+
botoes?: Array<RoboBotao>;
|
|
49
|
+
equipe_id?: number | null;
|
|
50
|
+
ferramentas?: Array<string>;
|
|
51
|
+
id: string;
|
|
52
|
+
instrucao?: string;
|
|
53
|
+
mensagem?: string;
|
|
54
|
+
mensagem_por_ia?: boolean;
|
|
55
|
+
minutos_sem_resposta?: number | null;
|
|
56
|
+
nome?: string;
|
|
57
|
+
objetivo?: string;
|
|
58
|
+
posicao: RoboPosicao;
|
|
59
|
+
regras?: Array<RoboRegra>;
|
|
60
|
+
tipo: string;
|
|
61
|
+
}
|
|
62
|
+
export interface RoboPosicao {
|
|
63
|
+
x?: number;
|
|
64
|
+
y?: number;
|
|
65
|
+
}
|
|
66
|
+
export interface RoboRegra {
|
|
67
|
+
condicao: string;
|
|
68
|
+
id: string;
|
|
69
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,12 +2,12 @@ export * from "./base/index.js";
|
|
|
2
2
|
export * as ai from "./ai/index.js";
|
|
3
3
|
export * as auth from "./auth/index.js";
|
|
4
4
|
export * as bucket from "./bucket/index.js";
|
|
5
|
+
export * as flow from "./flow/index.js";
|
|
5
6
|
export * as intranet from "./intranet/index.js";
|
|
6
7
|
export * as leads from "./leads/index.js";
|
|
7
8
|
export * as mcp from "./mcp/index.js";
|
|
8
9
|
export * as portal from "./portal/index.js";
|
|
9
10
|
export * as quality from "./quality/index.js";
|
|
10
|
-
export * as sell from "./sell/index.js";
|
|
11
11
|
export * as status from "./status/index.js";
|
|
12
12
|
export * as studio from "./studio/index.js";
|
|
13
13
|
export * as support from "./support/index.js";
|
package/dist/index.js
CHANGED
|
@@ -3,12 +3,12 @@ export * from "./base/index.js";
|
|
|
3
3
|
export * as ai from "./ai/index.js";
|
|
4
4
|
export * as auth from "./auth/index.js";
|
|
5
5
|
export * as bucket from "./bucket/index.js";
|
|
6
|
+
export * as flow from "./flow/index.js";
|
|
6
7
|
export * as intranet from "./intranet/index.js";
|
|
7
8
|
export * as leads from "./leads/index.js";
|
|
8
9
|
export * as mcp from "./mcp/index.js";
|
|
9
10
|
export * as portal from "./portal/index.js";
|
|
10
11
|
export * as quality from "./quality/index.js";
|
|
11
|
-
export * as sell from "./sell/index.js";
|
|
12
12
|
export * as status from "./status/index.js";
|
|
13
13
|
export * as studio from "./studio/index.js";
|
|
14
14
|
export * as support from "./support/index.js";
|
package/dist/portal/rotas.d.ts
CHANGED
|
@@ -187,6 +187,7 @@ export interface ParametrosDeBuscarPeloFiltroContato {
|
|
|
187
187
|
export interface ParametrosDeBuscarPaginadorCotacao {
|
|
188
188
|
unidade_id?: string;
|
|
189
189
|
status?: string;
|
|
190
|
+
origem?: string;
|
|
190
191
|
busca?: string;
|
|
191
192
|
inicio?: string;
|
|
192
193
|
fim?: string;
|
|
@@ -206,8 +207,8 @@ export interface ParametrosDeBuscarAutoCompleteCotacao {
|
|
|
206
207
|
*/
|
|
207
208
|
export interface ParametrosDeBuscarPeloFiltroCotacao {
|
|
208
209
|
unidade_id?: string;
|
|
209
|
-
autor_cliente_id?: string;
|
|
210
210
|
status?: string;
|
|
211
|
+
origem?: string;
|
|
211
212
|
pagina?: number;
|
|
212
213
|
}
|
|
213
214
|
/**
|
|
@@ -216,6 +217,7 @@ export interface ParametrosDeBuscarPeloFiltroCotacao {
|
|
|
216
217
|
export interface ParametrosDeBuscarInformacoesPaginadorCotacao {
|
|
217
218
|
unidade_id?: string;
|
|
218
219
|
status?: string;
|
|
220
|
+
origem?: string;
|
|
219
221
|
busca?: string;
|
|
220
222
|
inicio?: string;
|
|
221
223
|
fim?: string;
|
|
@@ -420,6 +422,14 @@ export interface ParametrosDeBuscarPeloFiltroPedido {
|
|
|
420
422
|
entregue?: boolean;
|
|
421
423
|
pagina?: number;
|
|
422
424
|
}
|
|
425
|
+
/**
|
|
426
|
+
* Parâmetros de consulta e de cabeçalho de `/pedido_inteligente/filtro`.
|
|
427
|
+
*/
|
|
428
|
+
export interface ParametrosDeBuscarPeloFiltroPedidoInteligente {
|
|
429
|
+
unidade_id?: string;
|
|
430
|
+
status?: string;
|
|
431
|
+
pagina?: number;
|
|
432
|
+
}
|
|
423
433
|
/**
|
|
424
434
|
* Parâmetros de consulta e de cabeçalho de `/pedido_venda`.
|
|
425
435
|
*/
|
|
@@ -1116,7 +1126,7 @@ export declare function deletar_pelo_id_contato(credencial_de_acesso: Credencial
|
|
|
1116
1126
|
/**
|
|
1117
1127
|
* Lista uma página de cotações
|
|
1118
1128
|
*
|
|
1119
|
-
* Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Devolve só o array da página, até 50 cotações, das mais novas para as mais antigas; o total, as páginas e as contagens por situação vêm de `GET /cotacao/paginador`, com os mesmos filtros. Quem não é colaborador interno precisa informar `unidade_id` de uma unidade da própria sessão; colaborador interno pode omitir e vê todas. Filtros opcionais: `status` (um dos 5 valores, senão 400 `Status inválido`); `busca` procura o número (C-1048 ou 1048), o SKU ou o nome de um item e a razão social da unidade; `inicio`/`fim` são datas AAAA-MM-DD do envio, em Brasília, inclusivas; `cursor` é o id da última cotação da página anterior.
|
|
1129
|
+
* Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Devolve só o array da página, até 50 cotações, das mais novas para as mais antigas; o total, as páginas e as contagens por situação vêm de `GET /cotacao/paginador`, com os mesmos filtros. Quem não é colaborador interno precisa informar `unidade_id` de uma unidade da própria sessão; colaborador interno pode omitir e vê todas. Filtros opcionais: `status` (um dos 5 valores, senão 400 `Status inválido`); `busca` procura o número (C-1048 ou 1048), o SKU ou o nome de um item e a razão social da unidade; `inicio`/`fim` são datas AAAA-MM-DD do envio, em Brasília, inclusivas; `origem` (`carrinho`, `pedido_inteligente`) é exata; `cursor` é o id da última cotação da página anterior.
|
|
1120
1130
|
*
|
|
1121
1131
|
* `GET /cotacao`
|
|
1122
1132
|
*/
|
|
@@ -1124,7 +1134,7 @@ export declare function buscar_paginador_cotacao(credencial_de_acesso: Credencia
|
|
|
1124
1134
|
/**
|
|
1125
1135
|
* Cria uma cotação (carrinho enviado)
|
|
1126
1136
|
*
|
|
1127
|
-
* Exige a permissão `criar` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Monta a cotação no servidor a partir dos itens (`produto_id`, `quantidade` acima de zero e até 9999, `embalagem_fechada`, `preco_unitario` visto pelo cliente), com 1 a 200 itens e sem produto repetido. Recalcula preços por faixa, confere `total_esperado` e grava com o status inicial. A unidade precisa ser da sessão (colaborador interno acessa todas) e, para quem não é colaborador interno, o autor é sempre quem chama. `acima_do_limite` indica que a cotação passa o limite de faturamento da unidade. Campos: `unidade_id` (uuid) é a unidade compradora, da sessão
|
|
1137
|
+
* Exige a permissão `criar` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Monta a cotação no servidor a partir dos itens (`produto_id`, `quantidade` acima de zero e até 9999, `embalagem_fechada`, `preco_unitario` visto pelo cliente), com 1 a 200 itens e sem produto repetido. Recalcula preços por faixa, confere `total_esperado` e grava com o status inicial. A unidade precisa ser da sessão (colaborador interno acessa todas) e, para quem não é colaborador interno, o autor é sempre quem chama. `acima_do_limite` indica que a cotação passa o limite de faturamento da unidade. Campos: `unidade_id` (uuid) é a unidade compradora, da sessão, e o cliente da cotação é sempre o cliente dessa unidade (o nome dele fica em `autor_nome`); `itens` é a lista de 1 a 200 itens, cada um com `produto_id`, `quantidade`, `embalagem_fechada` e `preco_unitario`; `economia_tier` é a economia do grupo de cliente vista no carrinho (decimal, informativo); `carrinho_id` (opcional) é o carrinho aberto da unidade de onde os itens saíram: todo item precisa estar nele, o carrinho fecha junto com a cotação e os itens que não foram cotados seguem num carrinho novo; `pedido_inteligente_id` (opcional, nunca junto com `carrinho_id`) é o pedido inteligente revisado de onde os itens saíram: ele precisa estar `pronto`, todo item precisa ser um produto confirmado na revisão, a cotação sai com `origem` `pedido_inteligente` e o pedido vira `cotado`; sem ele, `origem` é `carrinho`; `endereco_id` (opcional) é um endereço de entrega da unidade, copiado para `endereco_entrega`; `observacao` (opcional) tem até 1000 caracteres. A cotação nasce com `numero` sequencial (exibido como C-1001) e `valida_ate` = hoje em Brasília + `cotacao_validade_dias` de Configurações (15 sem a chave).
|
|
1128
1138
|
*
|
|
1129
1139
|
* `POST /cotacao`
|
|
1130
1140
|
*/
|
|
@@ -1140,7 +1150,7 @@ export declare function buscar_auto_complete_cotacao(credencial_de_acesso: Crede
|
|
|
1140
1150
|
/**
|
|
1141
1151
|
* Busca cotações por filtro
|
|
1142
1152
|
*
|
|
1143
|
-
* Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Devolve as cotações não excluídas que casam com o filtro, até 50 por página (`pagina`, a partir de 1, padrão 1), das mais novas para as mais antigas. Quem não é colaborador interno precisa informar `unidade_id` de uma unidade da própria sessão; colaborador interno pode omitir e vê todas. `
|
|
1153
|
+
* Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Devolve as cotações não excluídas que casam com o filtro, até 50 por página (`pagina`, a partir de 1, padrão 1), das mais novas para as mais antigas. Quem não é colaborador interno precisa informar `unidade_id` de uma unidade da própria sessão; colaborador interno pode omitir e vê todas. `origem` (`carrinho`, `pedido_inteligente`) e `status` (`rascunho`, `esperando_aprovacao`, `concluido`, `nao_aprovado`, `em_transporte`) são exatos.
|
|
1144
1154
|
*
|
|
1145
1155
|
* `GET /cotacao/filtro`
|
|
1146
1156
|
*/
|
|
@@ -1337,22 +1347,6 @@ export declare function buscar_pelo_filtro_indicador_compra(credencial_de_acesso
|
|
|
1337
1347
|
* `GET /indicador_venda/filtro`
|
|
1338
1348
|
*/
|
|
1339
1349
|
export declare function buscar_pelo_filtro_indicador_venda(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarPeloFiltroIndicadorVenda, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.IndicadoresDeVenda>;
|
|
1340
|
-
/**
|
|
1341
|
-
* Gera um link de envio de imagem para o produto do SKU
|
|
1342
|
-
*
|
|
1343
|
-
* Exige colaborador interno com a permissão `editar` no módulo `Configuracoes`. Serve para enviar a imagem de um arquivo local (ex.: uma pasta do computador) sem passar o conteúdo pela ferramenta: gere um link por imagem e envie o arquivo direto para a `url_envio` com `curl -X PATCH -F "arquivo=@<caminho do arquivo>" <url_envio>` (sem token: o link já autoriza). O envio grava a imagem no TermoBucket e já a acrescenta ao fim das `imagens` do produto (a primeira continua a principal); a resposta traz a `url` da imagem e a lista de `imagens` do produto. O link é de uso único e vence em 15 minutos (`expira_em`). Campos: `sku` do produto, sem diferenciar maiúsculas. Na resposta, `imagens_no_produto` e `vagas_de_imagem` dizem quantas imagens ele já tem e quantas ainda cabem (até 15). Imagem PNG, JPG, WEBP ou GIF até 5 MB. Dica: com o nome do arquivo começando pelo SKU (`<SKU>.png`, `<SKU>_2.png`), dá para enviar uma pasta inteira descobrindo o produto pelo nome.
|
|
1344
|
-
*
|
|
1345
|
-
* `POST /link_envio_imagem`
|
|
1346
|
-
*/
|
|
1347
|
-
export declare function criar_link_envio_imagem(credencial_de_acesso: CredencialDeAcesso, corpo_da_requisicao: tipos.LinkEnvioImagemCriar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.LinkEnvioImagem>;
|
|
1348
|
-
/**
|
|
1349
|
-
* Envia a imagem pelo link e a acrescenta ao produto
|
|
1350
|
-
*
|
|
1351
|
-
* Rota pública: quem autoriza é o próprio link (`id` de uso único gerado pelo `POST /link_envio_imagem`, válido por 15 minutos). Formulário `multipart/form-data` com o campo `arquivo` (PNG, JPG, WEBP ou GIF até 5 MB; o tipo sai dos bytes). Grava a imagem no TermoBucket e a acrescenta ao fim das `imagens` do produto. Se o envio falha (formato, tamanho, TermoBucket fora do ar), o link continua valendo até vencer.
|
|
1352
|
-
*
|
|
1353
|
-
* `PATCH /link_envio_imagem/{id}`
|
|
1354
|
-
*/
|
|
1355
|
-
export declare function atualizar_pelo_id_link_envio_imagem(id: string, formulario: FormData, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.ImagemEnviada>;
|
|
1356
1350
|
/**
|
|
1357
1351
|
* Uma página das notas fiscais, por cursor
|
|
1358
1352
|
*
|
|
@@ -1473,6 +1467,46 @@ export declare function atualizar_pelo_id_pedido(credencial_de_acesso: Credencia
|
|
|
1473
1467
|
* `DELETE /pedido/{id}`
|
|
1474
1468
|
*/
|
|
1475
1469
|
export declare function deletar_pelo_id_pedido(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<void>;
|
|
1470
|
+
/**
|
|
1471
|
+
* Envia um pedido para a IA montar
|
|
1472
|
+
*
|
|
1473
|
+
* Exige a permissão `criar` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Formulário `multipart/form-data` com `unidade_id` (uma unidade da sessão), `texto` (opcional, até 4000 caracteres) e até 5 campos `arquivo` (áudio MP3, M4A, OGG, OPUS, WAV ou WEBM; PDF; foto PNG, JPG ou WEBP; planilha XLSX ou CSV), cada um com até 20 MB e o envio inteiro com até 25 MB; é preciso mandar o texto ou ao menos um anexo. Grava o pedido com `status` `analisando` e responde na hora; a análise roda no servidor: os anexos vão para o TermoBucket (privados), tudo vira texto (PDF e planilha no próprio Portal, foto, PDF escaneado e áudio pelo TermoAI) e a IA de texto escolhida em Provedores procura cada item no catálogo e no boletim técnico. Acompanhe por `GET /pedido_inteligente/{id}` até `status` virar `pronto` (com os `itens` para revisar) ou `erro` (com o motivo em `erro`). Cada unidade manda no máximo 20 pedidos por hora.
|
|
1474
|
+
*
|
|
1475
|
+
* `POST /pedido_inteligente`
|
|
1476
|
+
*/
|
|
1477
|
+
export declare function criar_pedido_inteligente(credencial_de_acesso: CredencialDeAcesso, formulario: FormData, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.PedidoInteligente>;
|
|
1478
|
+
/**
|
|
1479
|
+
* Busca pedidos inteligentes por filtro
|
|
1480
|
+
*
|
|
1481
|
+
* Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Devolve os pedidos não excluídos, até 50 por página (`pagina`, a partir de 1, padrão 1), dos mais novos para os mais antigos. Quem não é colaborador interno precisa informar `unidade_id` de uma unidade da própria sessão; colaborador interno pode omitir e vê todos. `status` (`analisando`, `pronto`, `cotado`, `erro`) é exato; uma análise parada há mais de 10 minutos conta como `erro`.
|
|
1482
|
+
*
|
|
1483
|
+
* `GET /pedido_inteligente/filtro`
|
|
1484
|
+
*/
|
|
1485
|
+
export declare function buscar_pelo_filtro_pedido_inteligente(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarPeloFiltroPedidoInteligente, opcoes_da_chamada?: OpcoesDaChamada): Promise<Array<tipos.PedidoInteligente>>;
|
|
1486
|
+
/**
|
|
1487
|
+
* Busca um pedido inteligente pelo id
|
|
1488
|
+
*
|
|
1489
|
+
* Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Pedido de uma unidade fora da sessão responde 404, como se não existisse. Depois da análise, cada anexo guardado traz `url`, um link de download do TermoBucket que vale 15 minutos. Cada item traz `pedido_do_cliente` (o trecho que o cliente escreveu), `situacao` (`encontrado`, `escolher`, `indisponivel` ou `nao_encontrado`), `quantidade`, `escolhido`, `opcoes` e `observacao` (como a IA entendeu o item); `cotacao_id` aparece quando o pedido já virou cotação.
|
|
1490
|
+
*
|
|
1491
|
+
* `GET /pedido_inteligente/{id}`
|
|
1492
|
+
*/
|
|
1493
|
+
export declare function buscar_pelo_id_pedido_inteligente(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.PedidoInteligente>;
|
|
1494
|
+
/**
|
|
1495
|
+
* Grava a revisão do cliente
|
|
1496
|
+
*
|
|
1497
|
+
* Exige a permissão `editar` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Só vale com `status` `pronto`. `itens` tem uma escolha por item do pedido, na mesma ordem: `produto_id` é o produto escolhido, entre o `escolhido` e as `opcoes` daquele item (nulo tira o item da cotação), e `quantidade` vai de 0 a 9999 (acima de zero).
|
|
1498
|
+
*
|
|
1499
|
+
* `PATCH /pedido_inteligente/{id}`
|
|
1500
|
+
*/
|
|
1501
|
+
export declare function atualizar_pelo_id_pedido_inteligente(credencial_de_acesso: CredencialDeAcesso, id: string, corpo_da_requisicao: tipos.PedidoInteligenteAtualizar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.PedidoInteligente>;
|
|
1502
|
+
/**
|
|
1503
|
+
* Cancela um pedido inteligente
|
|
1504
|
+
*
|
|
1505
|
+
* Exige a permissão `excluir` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Exclusão lógica; uma análise em andamento para de gravar. O pedido que já virou cotação não sai (409).
|
|
1506
|
+
*
|
|
1507
|
+
* `DELETE /pedido_inteligente/{id}`
|
|
1508
|
+
*/
|
|
1509
|
+
export declare function deletar_pelo_id_pedido_inteligente(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<void>;
|
|
1476
1510
|
/**
|
|
1477
1511
|
* Lista os pedidos de venda do ERP
|
|
1478
1512
|
*
|