termo_core 0.1.6 → 0.1.8
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/servicos.d.ts +1 -0
- package/dist/base/servicos.js +9 -0
- package/dist/flow/rotas.d.ts +2 -2
- package/dist/flow/rotas.js +2 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/miro/index.d.ts +6 -0
- package/dist/miro/index.js +7 -0
- package/dist/miro/rotas.d.ts +108 -0
- package/dist/miro/rotas.js +168 -0
- package/dist/miro/tipos.d.ts +103 -0
- package/dist/miro/tipos.js +2 -0
- package/dist/portal/rotas.d.ts +6 -6
- package/dist/portal/rotas.js +6 -6
- package/dist/portal/tipos.d.ts +9 -2
- package/dist/support/rotas.d.ts +21 -6
- package/dist/support/rotas.js +5 -5
- package/dist/support/tipos.d.ts +13 -0
- package/dist/tracing/rotas.d.ts +31 -55
- package/dist/tracing/rotas.js +31 -81
- package/dist/tracing/tipos.d.ts +4 -13
- package/package.json +1 -1
package/dist/base/servicos.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export declare const TERMO_FLOW: ServicoTermotubos;
|
|
|
6
6
|
export declare const TERMO_INTRANET: ServicoTermotubos;
|
|
7
7
|
export declare const TERMO_LEADS: ServicoTermotubos;
|
|
8
8
|
export declare const TERMO_MCP: ServicoTermotubos;
|
|
9
|
+
export declare const TERMO_MIRO: ServicoTermotubos;
|
|
9
10
|
export declare const TERMO_PORTAL: ServicoTermotubos;
|
|
10
11
|
export declare const TERMO_QUALITY: ServicoTermotubos;
|
|
11
12
|
export declare const TERMO_STATUS: ServicoTermotubos;
|
package/dist/base/servicos.js
CHANGED
|
@@ -55,6 +55,14 @@ export const TERMO_MCP = {
|
|
|
55
55
|
endereco_em_production: "https://api-mcp.termotubos.com.br",
|
|
56
56
|
ativo: false,
|
|
57
57
|
};
|
|
58
|
+
export const TERMO_MIRO = {
|
|
59
|
+
nome_do_servico: "TermoMiro",
|
|
60
|
+
nome_do_modulo: "miro",
|
|
61
|
+
endereco_no_localhost: "http://localhost:51141",
|
|
62
|
+
endereco_no_sandbox: "https://sandbox-api-miro.termotubos.com.br",
|
|
63
|
+
endereco_em_production: "https://api-miro.termotubos.com.br",
|
|
64
|
+
ativo: true,
|
|
65
|
+
};
|
|
58
66
|
export const TERMO_PORTAL = {
|
|
59
67
|
nome_do_servico: "TermoPortal",
|
|
60
68
|
nome_do_modulo: "portal",
|
|
@@ -127,6 +135,7 @@ export const TODOS_OS_SERVICOS = [
|
|
|
127
135
|
TERMO_INTRANET,
|
|
128
136
|
TERMO_LEADS,
|
|
129
137
|
TERMO_MCP,
|
|
138
|
+
TERMO_MIRO,
|
|
130
139
|
TERMO_PORTAL,
|
|
131
140
|
TERMO_QUALITY,
|
|
132
141
|
TERMO_STATUS,
|
package/dist/flow/rotas.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { type OpcoesDaChamada } from "../base/requisicao.js";
|
|
|
4
4
|
/**
|
|
5
5
|
* Cadastra um robô de atendimento
|
|
6
6
|
*
|
|
7
|
-
* Exige a permissão `criar` da área `
|
|
7
|
+
* Exige a permissão `criar` da área `robos`. `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
8
|
*
|
|
9
9
|
* `POST /robo`
|
|
10
10
|
*/
|
|
@@ -12,7 +12,7 @@ export declare function criar_robo(credencial_de_acesso: CredencialDeAcesso, cor
|
|
|
12
12
|
/**
|
|
13
13
|
* Atualiza um robô pelo id
|
|
14
14
|
*
|
|
15
|
-
* Exige a permissão `editar` da área `
|
|
15
|
+
* Exige a permissão `editar` da área `robos`. 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
16
|
*
|
|
17
17
|
* `PATCH /robo/{id}`
|
|
18
18
|
*/
|
package/dist/flow/rotas.js
CHANGED
|
@@ -4,7 +4,7 @@ import { TERMO_FLOW as SERVICO_DESTA_API } from "../base/servicos.js";
|
|
|
4
4
|
/**
|
|
5
5
|
* Cadastra um robô de atendimento
|
|
6
6
|
*
|
|
7
|
-
* Exige a permissão `criar` da área `
|
|
7
|
+
* Exige a permissão `criar` da área `robos`. `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
8
|
*
|
|
9
9
|
* `POST /robo`
|
|
10
10
|
*/
|
|
@@ -21,7 +21,7 @@ export function criar_robo(credencial_de_acesso, corpo_da_requisicao, opcoes_da_
|
|
|
21
21
|
/**
|
|
22
22
|
* Atualiza um robô pelo id
|
|
23
23
|
*
|
|
24
|
-
* Exige a permissão `editar` da área `
|
|
24
|
+
* Exige a permissão `editar` da área `robos`. 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
25
|
*
|
|
26
26
|
* `PATCH /robo/{id}`
|
|
27
27
|
*/
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export * as flow from "./flow/index.js";
|
|
|
6
6
|
export * as intranet from "./intranet/index.js";
|
|
7
7
|
export * as leads from "./leads/index.js";
|
|
8
8
|
export * as mcp from "./mcp/index.js";
|
|
9
|
+
export * as miro from "./miro/index.js";
|
|
9
10
|
export * as portal from "./portal/index.js";
|
|
10
11
|
export * as quality from "./quality/index.js";
|
|
11
12
|
export * as status from "./status/index.js";
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ export * as flow from "./flow/index.js";
|
|
|
7
7
|
export * as intranet from "./intranet/index.js";
|
|
8
8
|
export * as leads from "./leads/index.js";
|
|
9
9
|
export * as mcp from "./mcp/index.js";
|
|
10
|
+
export * as miro from "./miro/index.js";
|
|
10
11
|
export * as portal from "./portal/index.js";
|
|
11
12
|
export * as quality from "./quality/index.js";
|
|
12
13
|
export * as status from "./status/index.js";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Gerado pelo gerador do TermoCore (`cargo run -p gerador`). Não edite à mão: a próxima geração sobrescreve.
|
|
2
|
+
/**
|
|
3
|
+
* Cliente tipado da API do TermoMiro, gerado a partir do `openapi.json` do serviço.
|
|
4
|
+
*/
|
|
5
|
+
export * from "./tipos.js";
|
|
6
|
+
export * from "./rotas.js";
|
|
7
|
+
export { CredencialDeAcesso, ErroAoChamarServico } from "../base/index.js";
|
|
@@ -0,0 +1,108 @@
|
|
|
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
|
+
* Parâmetros de consulta e de cabeçalho de `/board`.
|
|
6
|
+
*/
|
|
7
|
+
export interface ParametrosDeBuscarPaginadorBoard {
|
|
8
|
+
pagina?: number;
|
|
9
|
+
tamanho?: number;
|
|
10
|
+
nome?: string;
|
|
11
|
+
favoritos?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Parâmetros de consulta e de cabeçalho de `/board/autocomplete`.
|
|
15
|
+
*/
|
|
16
|
+
export interface ParametrosDeBuscarAutoCompleteBoard {
|
|
17
|
+
busca?: string;
|
|
18
|
+
pagina?: number;
|
|
19
|
+
tamanho?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Parâmetros de consulta e de cabeçalho de `/board/filtro`.
|
|
23
|
+
*/
|
|
24
|
+
export interface ParametrosDeBuscarPeloFiltroBoard {
|
|
25
|
+
nome?: string;
|
|
26
|
+
favoritos?: boolean;
|
|
27
|
+
dono_id?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Lista os boards paginados
|
|
31
|
+
*
|
|
32
|
+
* Os boards que a pessoa enxerga, do mais recente para o mais antigo, sempre 50 por página: `tamanho` é ignorado. `pagina` começa em 1; aceita `nome` e `favoritos` como no filtro.
|
|
33
|
+
*
|
|
34
|
+
* `GET /board`
|
|
35
|
+
*/
|
|
36
|
+
export declare function buscar_paginador_board(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarPaginadorBoard, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.PaginaBoard>;
|
|
37
|
+
/**
|
|
38
|
+
* Cria um board
|
|
39
|
+
*
|
|
40
|
+
* Livre para todo colaborador logado; quem cria é o dono. `nome` é obrigatório (até 120 caracteres), `descricao` vai até 500, `cor` segue o formato `#00397c` (padrão `#00397c`) e `visibilidade` é `ORGANIZACAO` (padrão, todos veem e editam) ou `MEMBROS` (só o dono e os `membro_ids`). O canvas nasce vazio e é editado em tempo real em `GET /board/ws/{id}?token=<JWT>` (WebSocket no protocolo do Yjs).
|
|
41
|
+
*
|
|
42
|
+
* `POST /board`
|
|
43
|
+
*/
|
|
44
|
+
export declare function criar_board(credencial_de_acesso: CredencialDeAcesso, corpo_da_requisicao: tipos.BoardCriar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Board>;
|
|
45
|
+
/**
|
|
46
|
+
* Lista básica de boards para seleção
|
|
47
|
+
*
|
|
48
|
+
* Id, nome e cor dos boards que a pessoa enxerga, em ordem alfabética. `busca` procura o trecho no nome. `pagina` começa em 1 e `tamanho` tem padrão 10.
|
|
49
|
+
*
|
|
50
|
+
* `GET /board/autocomplete`
|
|
51
|
+
*/
|
|
52
|
+
export declare function buscar_auto_complete_board(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarAutoCompleteBoard, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.PaginaBoardAutoComplete>;
|
|
53
|
+
/**
|
|
54
|
+
* Busca boards por filtro
|
|
55
|
+
*
|
|
56
|
+
* Todos os boards que a pessoa enxerga, do mais recente para o mais antigo. `nome` procura o trecho no nome sem diferenciar maiúsculas, `favoritos=true` traz só os favoritos de quem pediu e `dono_id` só os de um dono.
|
|
57
|
+
*
|
|
58
|
+
* `GET /board/filtro`
|
|
59
|
+
*/
|
|
60
|
+
export declare function buscar_pelo_filtro_board(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarPeloFiltroBoard, opcoes_da_chamada?: OpcoesDaChamada): Promise<Array<tipos.Board>>;
|
|
61
|
+
/**
|
|
62
|
+
* Baixa uma imagem do canvas guardada no banco
|
|
63
|
+
*
|
|
64
|
+
* Pública (o `<img>` do canvas não manda token): devolve os bytes da imagem que ficou no banco porque o TermoBucket falhou, com cache longo.
|
|
65
|
+
*
|
|
66
|
+
* `GET /board/imagem/{id}`
|
|
67
|
+
*/
|
|
68
|
+
export declare function buscar_imagem_board(id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Busca um board pelo id
|
|
71
|
+
*
|
|
72
|
+
* Devolve o board com o dono, os membros, se é favorito de quem pediu e se essa pessoa pode gerenciá-lo (`pode_gerenciar`: dono ou master do TermoAuth). Board `MEMBROS` de que a pessoa não participa responde `404`, como se não existisse.
|
|
73
|
+
*
|
|
74
|
+
* `GET /board/{id}`
|
|
75
|
+
*/
|
|
76
|
+
export declare function buscar_pelo_id_board(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Board>;
|
|
77
|
+
/**
|
|
78
|
+
* Atualiza um board pelo id
|
|
79
|
+
*
|
|
80
|
+
* Atualização parcial. `nome`, `descricao` (`null` apaga) e `cor` valem para quem enxerga o board; `visibilidade` e `membro_ids` (a lista inteira) só para o dono ou o master do TermoAuth. `favorito` marca ou desmarca o board como favorito de quem pediu, e `miniatura` é o SVG (até 200 KB) da prévia mostrada na lista; esses dois não mudam a ordem de recentes.
|
|
81
|
+
*
|
|
82
|
+
* `PATCH /board/{id}`
|
|
83
|
+
*/
|
|
84
|
+
export declare function atualizar_pelo_id_board(credencial_de_acesso: CredencialDeAcesso, id: string, corpo_da_requisicao: tipos.BoardAtualizar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Board>;
|
|
85
|
+
/**
|
|
86
|
+
* Exclui um board pelo id
|
|
87
|
+
*
|
|
88
|
+
* Só o dono ou o master do TermoAuth. Exclusão lógica: o board some das listas e quem estava com ele aberto é desconectado.
|
|
89
|
+
*
|
|
90
|
+
* `DELETE /board/{id}`
|
|
91
|
+
*/
|
|
92
|
+
export declare function deletar_pelo_id_board(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Duplica um board
|
|
95
|
+
*
|
|
96
|
+
* Cria "Cópia de <nome>" com todo o conteúdo do canvas. Quem pediu vira o dono da cópia, que mantém a visibilidade do original, sem membros e sem favoritos.
|
|
97
|
+
*
|
|
98
|
+
* `POST /board/{id}/duplicar`
|
|
99
|
+
*/
|
|
100
|
+
export declare function duplicar_board(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Board>;
|
|
101
|
+
/**
|
|
102
|
+
* Envia uma imagem para o canvas
|
|
103
|
+
*
|
|
104
|
+
* Guarda uma imagem PNG, JPG, GIF ou WEBP de até 10 MB (`arquivo_base64`, cru com `tipo` ou como data URL) e devolve o endereço público para o elemento de imagem do canvas. A imagem vai ao TermoBucket como arquivo público; se o bucket falhar, fica no banco e o endereço é relativo à API (`/board/imagem/{id}`).
|
|
105
|
+
*
|
|
106
|
+
* `POST /board/{id}/imagem`
|
|
107
|
+
*/
|
|
108
|
+
export declare function guardar_imagem_board(credencial_de_acesso: CredencialDeAcesso, id: string, corpo_da_requisicao: tipos.ImagemEnviar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.ImagemGuardada>;
|
|
@@ -0,0 +1,168 @@
|
|
|
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_MIRO as SERVICO_DESTA_API } from "../base/servicos.js";
|
|
4
|
+
/**
|
|
5
|
+
* Lista os boards paginados
|
|
6
|
+
*
|
|
7
|
+
* Os boards que a pessoa enxerga, do mais recente para o mais antigo, sempre 50 por página: `tamanho` é ignorado. `pagina` começa em 1; aceita `nome` e `favoritos` como no filtro.
|
|
8
|
+
*
|
|
9
|
+
* `GET /board`
|
|
10
|
+
*/
|
|
11
|
+
export function buscar_paginador_board(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
|
|
12
|
+
return chamar_servico({
|
|
13
|
+
servico: SERVICO_DESTA_API,
|
|
14
|
+
metodo_http: "GET",
|
|
15
|
+
caminho_da_rota: "/board",
|
|
16
|
+
credencial_de_acesso,
|
|
17
|
+
parametros_de_consulta: parametros,
|
|
18
|
+
formato_da_resposta: "json",
|
|
19
|
+
}, opcoes_da_chamada);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Cria um board
|
|
23
|
+
*
|
|
24
|
+
* Livre para todo colaborador logado; quem cria é o dono. `nome` é obrigatório (até 120 caracteres), `descricao` vai até 500, `cor` segue o formato `#00397c` (padrão `#00397c`) e `visibilidade` é `ORGANIZACAO` (padrão, todos veem e editam) ou `MEMBROS` (só o dono e os `membro_ids`). O canvas nasce vazio e é editado em tempo real em `GET /board/ws/{id}?token=<JWT>` (WebSocket no protocolo do Yjs).
|
|
25
|
+
*
|
|
26
|
+
* `POST /board`
|
|
27
|
+
*/
|
|
28
|
+
export function criar_board(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
|
|
29
|
+
return chamar_servico({
|
|
30
|
+
servico: SERVICO_DESTA_API,
|
|
31
|
+
metodo_http: "POST",
|
|
32
|
+
caminho_da_rota: "/board",
|
|
33
|
+
credencial_de_acesso,
|
|
34
|
+
corpo_json: corpo_da_requisicao,
|
|
35
|
+
formato_da_resposta: "json",
|
|
36
|
+
}, opcoes_da_chamada);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Lista básica de boards para seleção
|
|
40
|
+
*
|
|
41
|
+
* Id, nome e cor dos boards que a pessoa enxerga, em ordem alfabética. `busca` procura o trecho no nome. `pagina` começa em 1 e `tamanho` tem padrão 10.
|
|
42
|
+
*
|
|
43
|
+
* `GET /board/autocomplete`
|
|
44
|
+
*/
|
|
45
|
+
export function buscar_auto_complete_board(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
|
|
46
|
+
return chamar_servico({
|
|
47
|
+
servico: SERVICO_DESTA_API,
|
|
48
|
+
metodo_http: "GET",
|
|
49
|
+
caminho_da_rota: "/board/autocomplete",
|
|
50
|
+
credencial_de_acesso,
|
|
51
|
+
parametros_de_consulta: parametros,
|
|
52
|
+
formato_da_resposta: "json",
|
|
53
|
+
}, opcoes_da_chamada);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Busca boards por filtro
|
|
57
|
+
*
|
|
58
|
+
* Todos os boards que a pessoa enxerga, do mais recente para o mais antigo. `nome` procura o trecho no nome sem diferenciar maiúsculas, `favoritos=true` traz só os favoritos de quem pediu e `dono_id` só os de um dono.
|
|
59
|
+
*
|
|
60
|
+
* `GET /board/filtro`
|
|
61
|
+
*/
|
|
62
|
+
export function buscar_pelo_filtro_board(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
|
|
63
|
+
return chamar_servico({
|
|
64
|
+
servico: SERVICO_DESTA_API,
|
|
65
|
+
metodo_http: "GET",
|
|
66
|
+
caminho_da_rota: "/board/filtro",
|
|
67
|
+
credencial_de_acesso,
|
|
68
|
+
parametros_de_consulta: parametros,
|
|
69
|
+
formato_da_resposta: "json",
|
|
70
|
+
}, opcoes_da_chamada);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Baixa uma imagem do canvas guardada no banco
|
|
74
|
+
*
|
|
75
|
+
* Pública (o `<img>` do canvas não manda token): devolve os bytes da imagem que ficou no banco porque o TermoBucket falhou, com cache longo.
|
|
76
|
+
*
|
|
77
|
+
* `GET /board/imagem/{id}`
|
|
78
|
+
*/
|
|
79
|
+
export function buscar_imagem_board(id, opcoes_da_chamada) {
|
|
80
|
+
return chamar_servico({
|
|
81
|
+
servico: SERVICO_DESTA_API,
|
|
82
|
+
metodo_http: "GET",
|
|
83
|
+
caminho_da_rota: `/board/imagem/${codificar_parametro_de_caminho(id)}`,
|
|
84
|
+
formato_da_resposta: "sem_conteudo",
|
|
85
|
+
}, opcoes_da_chamada);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Busca um board pelo id
|
|
89
|
+
*
|
|
90
|
+
* Devolve o board com o dono, os membros, se é favorito de quem pediu e se essa pessoa pode gerenciá-lo (`pode_gerenciar`: dono ou master do TermoAuth). Board `MEMBROS` de que a pessoa não participa responde `404`, como se não existisse.
|
|
91
|
+
*
|
|
92
|
+
* `GET /board/{id}`
|
|
93
|
+
*/
|
|
94
|
+
export function buscar_pelo_id_board(credencial_de_acesso, id, opcoes_da_chamada) {
|
|
95
|
+
return chamar_servico({
|
|
96
|
+
servico: SERVICO_DESTA_API,
|
|
97
|
+
metodo_http: "GET",
|
|
98
|
+
caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}`,
|
|
99
|
+
credencial_de_acesso,
|
|
100
|
+
formato_da_resposta: "json",
|
|
101
|
+
}, opcoes_da_chamada);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Atualiza um board pelo id
|
|
105
|
+
*
|
|
106
|
+
* Atualização parcial. `nome`, `descricao` (`null` apaga) e `cor` valem para quem enxerga o board; `visibilidade` e `membro_ids` (a lista inteira) só para o dono ou o master do TermoAuth. `favorito` marca ou desmarca o board como favorito de quem pediu, e `miniatura` é o SVG (até 200 KB) da prévia mostrada na lista; esses dois não mudam a ordem de recentes.
|
|
107
|
+
*
|
|
108
|
+
* `PATCH /board/{id}`
|
|
109
|
+
*/
|
|
110
|
+
export function atualizar_pelo_id_board(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
|
|
111
|
+
return chamar_servico({
|
|
112
|
+
servico: SERVICO_DESTA_API,
|
|
113
|
+
metodo_http: "PATCH",
|
|
114
|
+
caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}`,
|
|
115
|
+
credencial_de_acesso,
|
|
116
|
+
corpo_json: corpo_da_requisicao,
|
|
117
|
+
formato_da_resposta: "json",
|
|
118
|
+
}, opcoes_da_chamada);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Exclui um board pelo id
|
|
122
|
+
*
|
|
123
|
+
* Só o dono ou o master do TermoAuth. Exclusão lógica: o board some das listas e quem estava com ele aberto é desconectado.
|
|
124
|
+
*
|
|
125
|
+
* `DELETE /board/{id}`
|
|
126
|
+
*/
|
|
127
|
+
export function deletar_pelo_id_board(credencial_de_acesso, id, opcoes_da_chamada) {
|
|
128
|
+
return chamar_servico({
|
|
129
|
+
servico: SERVICO_DESTA_API,
|
|
130
|
+
metodo_http: "DELETE",
|
|
131
|
+
caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}`,
|
|
132
|
+
credencial_de_acesso,
|
|
133
|
+
formato_da_resposta: "sem_conteudo",
|
|
134
|
+
}, opcoes_da_chamada);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Duplica um board
|
|
138
|
+
*
|
|
139
|
+
* Cria "Cópia de <nome>" com todo o conteúdo do canvas. Quem pediu vira o dono da cópia, que mantém a visibilidade do original, sem membros e sem favoritos.
|
|
140
|
+
*
|
|
141
|
+
* `POST /board/{id}/duplicar`
|
|
142
|
+
*/
|
|
143
|
+
export function duplicar_board(credencial_de_acesso, id, opcoes_da_chamada) {
|
|
144
|
+
return chamar_servico({
|
|
145
|
+
servico: SERVICO_DESTA_API,
|
|
146
|
+
metodo_http: "POST",
|
|
147
|
+
caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}/duplicar`,
|
|
148
|
+
credencial_de_acesso,
|
|
149
|
+
formato_da_resposta: "json",
|
|
150
|
+
}, opcoes_da_chamada);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Envia uma imagem para o canvas
|
|
154
|
+
*
|
|
155
|
+
* Guarda uma imagem PNG, JPG, GIF ou WEBP de até 10 MB (`arquivo_base64`, cru com `tipo` ou como data URL) e devolve o endereço público para o elemento de imagem do canvas. A imagem vai ao TermoBucket como arquivo público; se o bucket falhar, fica no banco e o endereço é relativo à API (`/board/imagem/{id}`).
|
|
156
|
+
*
|
|
157
|
+
* `POST /board/{id}/imagem`
|
|
158
|
+
*/
|
|
159
|
+
export function guardar_imagem_board(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
|
|
160
|
+
return chamar_servico({
|
|
161
|
+
servico: SERVICO_DESTA_API,
|
|
162
|
+
metodo_http: "POST",
|
|
163
|
+
caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}/imagem`,
|
|
164
|
+
credencial_de_acesso,
|
|
165
|
+
corpo_json: corpo_da_requisicao,
|
|
166
|
+
formato_da_resposta: "json",
|
|
167
|
+
}, opcoes_da_chamada);
|
|
168
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Board com tudo o que a tela precisa: o dono e os membros com nome, e o que vale para quem está
|
|
3
|
+
* olhando (`favorito` e `pode_gerenciar`). O conteúdo do canvas não vem aqui: ele chega pelo
|
|
4
|
+
* tempo real (`/board/ws/{id}`).
|
|
5
|
+
*/
|
|
6
|
+
export interface Board {
|
|
7
|
+
atualizado_em: string;
|
|
8
|
+
cor: string;
|
|
9
|
+
criado_em: string;
|
|
10
|
+
descricao?: string | null;
|
|
11
|
+
dono: ColaboradorResumo;
|
|
12
|
+
favorito: boolean;
|
|
13
|
+
id: string;
|
|
14
|
+
membros: Array<ColaboradorResumo>;
|
|
15
|
+
miniatura?: string | null;
|
|
16
|
+
nome: string;
|
|
17
|
+
pode_gerenciar: boolean;
|
|
18
|
+
visibilidade: string;
|
|
19
|
+
}
|
|
20
|
+
export interface BoardAtualizar {
|
|
21
|
+
cor?: string | null;
|
|
22
|
+
descricao?: string | null;
|
|
23
|
+
favorito?: boolean | null;
|
|
24
|
+
membro_ids?: Array<string> | null;
|
|
25
|
+
miniatura?: string | null;
|
|
26
|
+
nome?: string | null;
|
|
27
|
+
visibilidade?: string | null;
|
|
28
|
+
}
|
|
29
|
+
export interface BoardAutoComplete {
|
|
30
|
+
cor: string;
|
|
31
|
+
id: string;
|
|
32
|
+
nome: string;
|
|
33
|
+
}
|
|
34
|
+
export interface BoardCriar {
|
|
35
|
+
cor?: string | null;
|
|
36
|
+
descricao?: string | null;
|
|
37
|
+
membro_ids?: Array<string> | null;
|
|
38
|
+
nome: string;
|
|
39
|
+
visibilidade?: string | null;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Resumo do colaborador (id e nome) para mostrar autoria.
|
|
43
|
+
*/
|
|
44
|
+
export interface ColaboradorResumo {
|
|
45
|
+
id: string;
|
|
46
|
+
nome: string;
|
|
47
|
+
}
|
|
48
|
+
export interface ImagemEnviar {
|
|
49
|
+
/**
|
|
50
|
+
* O arquivo em base64 (pode vir como data URL: `data:image/png;base64,...`).
|
|
51
|
+
*/
|
|
52
|
+
arquivo_base64: string;
|
|
53
|
+
nome?: string | null;
|
|
54
|
+
/**
|
|
55
|
+
* Tipo da imagem quando o base64 não é data URL (ex.: `image/png`).
|
|
56
|
+
*/
|
|
57
|
+
tipo?: string | null;
|
|
58
|
+
}
|
|
59
|
+
export interface ImagemGuardada {
|
|
60
|
+
/**
|
|
61
|
+
* Endereço público da imagem; quando começa com `/`, é relativo à API.
|
|
62
|
+
*/
|
|
63
|
+
url: string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Board com tudo o que a tela precisa: o dono e os membros com nome, e o que vale para quem está
|
|
67
|
+
* olhando (`favorito` e `pode_gerenciar`). O conteúdo do canvas não vem aqui: ele chega pelo
|
|
68
|
+
* tempo real (`/board/ws/{id}`).
|
|
69
|
+
*/
|
|
70
|
+
export interface PaginaBoardItensItem {
|
|
71
|
+
atualizado_em: string;
|
|
72
|
+
cor: string;
|
|
73
|
+
criado_em: string;
|
|
74
|
+
descricao?: string | null;
|
|
75
|
+
dono: ColaboradorResumo;
|
|
76
|
+
favorito: boolean;
|
|
77
|
+
id: string;
|
|
78
|
+
membros: Array<ColaboradorResumo>;
|
|
79
|
+
miniatura?: string | null;
|
|
80
|
+
nome: string;
|
|
81
|
+
pode_gerenciar: boolean;
|
|
82
|
+
visibilidade: string;
|
|
83
|
+
}
|
|
84
|
+
export interface PaginaBoard {
|
|
85
|
+
itens: Array<PaginaBoardItensItem>;
|
|
86
|
+
pagina: number;
|
|
87
|
+
tamanho: number;
|
|
88
|
+
total: number;
|
|
89
|
+
}
|
|
90
|
+
export interface PaginaBoardAutoCompleteItensItem {
|
|
91
|
+
cor: string;
|
|
92
|
+
id: string;
|
|
93
|
+
nome: string;
|
|
94
|
+
}
|
|
95
|
+
export interface PaginaBoardAutoComplete {
|
|
96
|
+
itens: Array<PaginaBoardAutoCompleteItensItem>;
|
|
97
|
+
pagina: number;
|
|
98
|
+
tamanho: number;
|
|
99
|
+
total: number;
|
|
100
|
+
}
|
|
101
|
+
export interface RespostaDeErro {
|
|
102
|
+
erro: string;
|
|
103
|
+
}
|
package/dist/portal/rotas.d.ts
CHANGED
|
@@ -975,7 +975,7 @@ export declare function deletar_pelo_id_contato(credencial_de_acesso: Credencial
|
|
|
975
975
|
/**
|
|
976
976
|
* Lista uma página de cotações
|
|
977
977
|
*
|
|
978
|
-
* 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` (
|
|
978
|
+
* 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` (`esperando_aprovacao`, `aguardando_importacao_tiny`, `no_tiny`, `concluido`, `nao_aprovado`; outro valor dá 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.
|
|
979
979
|
*
|
|
980
980
|
* `GET /cotacao`
|
|
981
981
|
*/
|
|
@@ -999,7 +999,7 @@ export declare function buscar_auto_complete_cotacao(credencial_de_acesso: Crede
|
|
|
999
999
|
/**
|
|
1000
1000
|
* Busca cotações por filtro
|
|
1001
1001
|
*
|
|
1002
|
-
* 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` (`
|
|
1002
|
+
* 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` (`esperando_aprovacao`, `aguardando_importacao_tiny`, `no_tiny`, `concluido`, `nao_aprovado`) são exatos.
|
|
1003
1003
|
*
|
|
1004
1004
|
* `GET /cotacao/filtro`
|
|
1005
1005
|
*/
|
|
@@ -1007,7 +1007,7 @@ export declare function buscar_pelo_filtro_cotacao(credencial_de_acesso: Credenc
|
|
|
1007
1007
|
/**
|
|
1008
1008
|
* Total, páginas e contagens das cotações
|
|
1009
1009
|
*
|
|
1010
|
-
* Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Recebe os mesmos filtros de `GET /cotacao` (o `cursor` é ignorado) e devolve `total` (cotações que casam), `paginas`, `tamanho` (50) e `contagens` por situação (`todas`, `esperando_aprovacao`, `
|
|
1010
|
+
* Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Recebe os mesmos filtros de `GET /cotacao` (o `cursor` é ignorado) e devolve `total` (cotações que casam), `paginas`, `tamanho` (50) e `contagens` por situação (`todas`, `esperando_aprovacao`, `aguardando_importacao_tiny`, `no_tiny`, `concluido`, `nao_aprovado`), que usam os outros filtros e ignoram o `status`. Mesma regra de unidade da lista.
|
|
1011
1011
|
*
|
|
1012
1012
|
* `GET /cotacao/paginador`
|
|
1013
1013
|
*/
|
|
@@ -1015,15 +1015,15 @@ export declare function buscar_informacoes_paginador_cotacao(credencial_de_acess
|
|
|
1015
1015
|
/**
|
|
1016
1016
|
* Busca uma cotação pelo id
|
|
1017
1017
|
*
|
|
1018
|
-
* Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Cotação excluída, ou de unidade fora da sessão, responde 404. Traz itens e
|
|
1018
|
+
* Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Cotação excluída, ou de unidade fora da sessão, responde 404. Traz itens (com `produto_id_tiny`, o ID do produto no Tiny quando a cotação foi gerada), totais e o caminho até o Tiny: `xls_gerado_em` (quando o XLS de proposta foi gerado) e a proposta achada no Tiny (`proposta_tiny_id`, `proposta_tiny_numero`, `proposta_tiny_situacao`, `proposta_tiny_conferida_em`), nulos enquanto não houver. `criado_por_colaborador_nome` é o colaborador da Termotubos que gerou a cotação pelo cliente (nulo quando foi o próprio cliente).
|
|
1019
1019
|
*
|
|
1020
1020
|
* `GET /cotacao/{id}`
|
|
1021
1021
|
*/
|
|
1022
1022
|
export declare function buscar_pelo_id_cotacao(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Cotacao>;
|
|
1023
1023
|
/**
|
|
1024
|
-
* Muda
|
|
1024
|
+
* Muda a situação de uma cotação
|
|
1025
1025
|
*
|
|
1026
|
-
* Exige a permissão `editar` no módulo `Cotacoes`
|
|
1026
|
+
* Exige a permissão `editar` no módulo `Cotacoes` e ser colaborador interno: o cliente não muda a situação (403). Campo: `status` (`esperando_aprovacao`, `aguardando_importacao_tiny`, `no_tiny`, `concluido`, `nao_aprovado`). À mão só valem três passagens: `esperando_aprovacao` → `nao_aprovado` (recusar), `aguardando_importacao_tiny` → `esperando_aprovacao` (desfazer o XLS, que limpa `xls_gerado_em`) e `nao_aprovado` → `esperando_aprovacao` (reabrir, só se a cotação não tem proposta no Tiny). Ir para `aguardando_importacao_tiny` é pela geração do XLS e `no_tiny`, `concluido` e `nao_aprovado` vindos do Tiny são do próprio portal, lendo a proposta; qualquer outra passagem responde 409 `passagem_nao_permitida`. Pedir a situação atual devolve a cotação sem mudar nada. Se a situação mudou entre a leitura e a gravação, responde 409 `situacao_mudou`. Cotação de unidade fora da sessão responde 404. Campo ausente mantém o valor atual.
|
|
1027
1027
|
*
|
|
1028
1028
|
* `PATCH /cotacao/{id}`
|
|
1029
1029
|
*/
|
package/dist/portal/rotas.js
CHANGED
|
@@ -723,7 +723,7 @@ export function deletar_pelo_id_contato(credencial_de_acesso, id, opcoes_da_cham
|
|
|
723
723
|
/**
|
|
724
724
|
* Lista uma página de cotações
|
|
725
725
|
*
|
|
726
|
-
* 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` (
|
|
726
|
+
* 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` (`esperando_aprovacao`, `aguardando_importacao_tiny`, `no_tiny`, `concluido`, `nao_aprovado`; outro valor dá 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.
|
|
727
727
|
*
|
|
728
728
|
* `GET /cotacao`
|
|
729
729
|
*/
|
|
@@ -774,7 +774,7 @@ export function buscar_auto_complete_cotacao(credencial_de_acesso, parametros =
|
|
|
774
774
|
/**
|
|
775
775
|
* Busca cotações por filtro
|
|
776
776
|
*
|
|
777
|
-
* 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` (`
|
|
777
|
+
* 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` (`esperando_aprovacao`, `aguardando_importacao_tiny`, `no_tiny`, `concluido`, `nao_aprovado`) são exatos.
|
|
778
778
|
*
|
|
779
779
|
* `GET /cotacao/filtro`
|
|
780
780
|
*/
|
|
@@ -791,7 +791,7 @@ export function buscar_pelo_filtro_cotacao(credencial_de_acesso, parametros = {}
|
|
|
791
791
|
/**
|
|
792
792
|
* Total, páginas e contagens das cotações
|
|
793
793
|
*
|
|
794
|
-
* Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Recebe os mesmos filtros de `GET /cotacao` (o `cursor` é ignorado) e devolve `total` (cotações que casam), `paginas`, `tamanho` (50) e `contagens` por situação (`todas`, `esperando_aprovacao`, `
|
|
794
|
+
* Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Recebe os mesmos filtros de `GET /cotacao` (o `cursor` é ignorado) e devolve `total` (cotações que casam), `paginas`, `tamanho` (50) e `contagens` por situação (`todas`, `esperando_aprovacao`, `aguardando_importacao_tiny`, `no_tiny`, `concluido`, `nao_aprovado`), que usam os outros filtros e ignoram o `status`. Mesma regra de unidade da lista.
|
|
795
795
|
*
|
|
796
796
|
* `GET /cotacao/paginador`
|
|
797
797
|
*/
|
|
@@ -808,7 +808,7 @@ export function buscar_informacoes_paginador_cotacao(credencial_de_acesso, param
|
|
|
808
808
|
/**
|
|
809
809
|
* Busca uma cotação pelo id
|
|
810
810
|
*
|
|
811
|
-
* Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Cotação excluída, ou de unidade fora da sessão, responde 404. Traz itens e
|
|
811
|
+
* Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Cotação excluída, ou de unidade fora da sessão, responde 404. Traz itens (com `produto_id_tiny`, o ID do produto no Tiny quando a cotação foi gerada), totais e o caminho até o Tiny: `xls_gerado_em` (quando o XLS de proposta foi gerado) e a proposta achada no Tiny (`proposta_tiny_id`, `proposta_tiny_numero`, `proposta_tiny_situacao`, `proposta_tiny_conferida_em`), nulos enquanto não houver. `criado_por_colaborador_nome` é o colaborador da Termotubos que gerou a cotação pelo cliente (nulo quando foi o próprio cliente).
|
|
812
812
|
*
|
|
813
813
|
* `GET /cotacao/{id}`
|
|
814
814
|
*/
|
|
@@ -822,9 +822,9 @@ export function buscar_pelo_id_cotacao(credencial_de_acesso, id, opcoes_da_chama
|
|
|
822
822
|
}, opcoes_da_chamada);
|
|
823
823
|
}
|
|
824
824
|
/**
|
|
825
|
-
* Muda
|
|
825
|
+
* Muda a situação de uma cotação
|
|
826
826
|
*
|
|
827
|
-
* Exige a permissão `editar` no módulo `Cotacoes`
|
|
827
|
+
* Exige a permissão `editar` no módulo `Cotacoes` e ser colaborador interno: o cliente não muda a situação (403). Campo: `status` (`esperando_aprovacao`, `aguardando_importacao_tiny`, `no_tiny`, `concluido`, `nao_aprovado`). À mão só valem três passagens: `esperando_aprovacao` → `nao_aprovado` (recusar), `aguardando_importacao_tiny` → `esperando_aprovacao` (desfazer o XLS, que limpa `xls_gerado_em`) e `nao_aprovado` → `esperando_aprovacao` (reabrir, só se a cotação não tem proposta no Tiny). Ir para `aguardando_importacao_tiny` é pela geração do XLS e `no_tiny`, `concluido` e `nao_aprovado` vindos do Tiny são do próprio portal, lendo a proposta; qualquer outra passagem responde 409 `passagem_nao_permitida`. Pedir a situação atual devolve a cotação sem mudar nada. Se a situação mudou entre a leitura e a gravação, responde 409 `situacao_mudou`. Cotação de unidade fora da sessão responde 404. Campo ausente mantém o valor atual.
|
|
828
828
|
*
|
|
829
829
|
* `PATCH /cotacao/{id}`
|
|
830
830
|
*/
|