|
|
@@ -0,0 +1,102 @@
|
|
|
+import { fetchJson } from "./ixcIntegradorService.js";
|
|
|
+
|
|
|
+
|
|
|
+const BI_ALLOWED_PATHS = new Set([
|
|
|
+
|
|
|
+ "cancelamentos/resumo",
|
|
|
+ "cancelamentos/tendencia",
|
|
|
+ "cancelamentos/por-cidade",
|
|
|
+ "cancelamentos/por-bairro",
|
|
|
+ "cancelamentos/por-permanencia",
|
|
|
+ "cancelamentos/motivos",
|
|
|
+ "cancelamentos/vendedores",
|
|
|
+ "cancelamentos/produtos",
|
|
|
+ "cancelamentos/detalhe",
|
|
|
+ "cancelamentos-os/resumo",
|
|
|
+ "cancelamentos-os/motivos-vs-assuntos",
|
|
|
+ "cancelamentos-os/linha-tempo",
|
|
|
+ "cancelamentos-os/detalhe",
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ "score-risco",
|
|
|
+ "mudanca-pagamento",
|
|
|
+
|
|
|
+
|
|
|
+ "notas/resumo",
|
|
|
+ "notas/geradas-erradas",
|
|
|
+ "notas/nao-geradas-13",
|
|
|
+ "notas/clientes-sem-notas",
|
|
|
+ "notas/contratos-emitidas",
|
|
|
+
|
|
|
+
|
|
|
+ "ativacoes/por-mes",
|
|
|
+ "ativacoes/relatorio",
|
|
|
+
|
|
|
+
|
|
|
+ "indicadores/backbone/rompimentos",
|
|
|
+ "indicadores/backbone/rompimentos-por-cidade",
|
|
|
+ "indicadores/backbone/implantacao",
|
|
|
+ "indicadores/backbone/implantacao-por-cidade",
|
|
|
+ "indicadores/backbone/adequacao",
|
|
|
+ "indicadores/backbone/adequacao-por-cidade",
|
|
|
+ "indicadores/backbone/rompimento-cto",
|
|
|
+ "indicadores/backbone/rompimento-cto-por-cidade",
|
|
|
+ "indicadores/backbone/ocupacao-cto",
|
|
|
+ "indicadores/backbone/ocupacao-cto-por-projeto",
|
|
|
+
|
|
|
+
|
|
|
+ "indicadores/suporte/os-total",
|
|
|
+ "indicadores/suporte/os-interno",
|
|
|
+ "indicadores/suporte/os-externo",
|
|
|
+ "indicadores/suporte/os-sam-telecom",
|
|
|
+ "indicadores/suporte/os-alexandre",
|
|
|
+ "indicadores/suporte/os-servicos",
|
|
|
+ "indicadores/suporte/os-telefonia",
|
|
|
+ "indicadores/suporte/os-internet",
|
|
|
+ "indicadores/suporte/os-sem-contrato",
|
|
|
+ "indicadores/suporte/resolucao-interna",
|
|
|
+ "indicadores/suporte/resolucao-externa",
|
|
|
+ "indicadores/suporte/resolucao-sam-telecom",
|
|
|
+ "indicadores/suporte/resolucao-alexandre",
|
|
|
+ "indicadores/suporte/interacoes-interno",
|
|
|
+ "indicadores/suporte/interacoes-externo",
|
|
|
+ "indicadores/suporte/recorrencia-interna",
|
|
|
+ "indicadores/suporte/recorrencia-externa",
|
|
|
+ "indicadores/suporte/recorrencia-sam-telecom",
|
|
|
+ "indicadores/suporte/recorrencia-alexandre",
|
|
|
+ "indicadores/suporte/os-externa-sobre-clientes",
|
|
|
+ "indicadores/suporte/os-externa-sobre-contratos",
|
|
|
+ "indicadores/suporte/por-diagnostico",
|
|
|
+ "indicadores/suporte/retiradas-equipamentos",
|
|
|
+ "indicadores/suporte/tme",
|
|
|
+ "indicadores/suporte/sla-interno",
|
|
|
+ "indicadores/suporte/sla-externo",
|
|
|
+ "indicadores/suporte/produtos-retirados"
|
|
|
+]);
|
|
|
+
|
|
|
+function montarQueryString(query) {
|
|
|
+ const params = new URLSearchParams();
|
|
|
+ for (const [chave, valor] of Object.entries(query ?? {})) {
|
|
|
+ if (valor !== undefined && valor !== null && valor !== "") params.set(chave, valor);
|
|
|
+ }
|
|
|
+ const qs = params.toString();
|
|
|
+ return qs ? `?${qs}` : "";
|
|
|
+}
|
|
|
+
|
|
|
+export function biPathPermitido(subpath) {
|
|
|
+ return BI_ALLOWED_PATHS.has(subpath);
|
|
|
+}
|
|
|
+
|
|
|
+export function listarBiPaths() {
|
|
|
+ return [...BI_ALLOWED_PATHS].sort();
|
|
|
+}
|
|
|
+
|
|
|
+export async function buscarBi(subpath, query) {
|
|
|
+ if (!biPathPermitido(subpath)) {
|
|
|
+ const err = new Error("bi_endpoint_nao_permitido");
|
|
|
+ err.statusCode = 404;
|
|
|
+ throw err;
|
|
|
+ }
|
|
|
+ return fetchJson(`bi/${subpath}${montarQueryString(query)}`);
|
|
|
+}
|