omnichannel-frontend/src/modules/management/services/knowledgeService.js
Rafael Lopes f690c6d652 FEAT: melhora painel admin, templates e fluxos de atendimento
- adiciona flow builder visual, conteúdos da IA e disparo em massa com agenda
- melhora templates com categoria, variáveis e preview estilo WhatsApp
- ajusta abrir atendimento dentro do painel, com preview, tag e variáveis
- refina tela de chat com encerramento, status de fila e correções visuais
2026-05-26 09:08:08 -03:00

125 lines
3.0 KiB
JavaScript

import { API_BASE_URL } from '../../../shared/services/apiConfig';
async function request(path, options = {}) {
const response = await fetch(`${API_BASE_URL}${path}`, {
headers: {
'Content-Type': 'application/json',
...options.headers,
},
...options,
});
if (!response.ok) {
let message = 'Falha ao consultar base de conhecimento.';
try {
const payload = await response.json();
message = Array.isArray(payload?.message)
? payload.message.join(' ')
: payload?.message || payload?.error || message;
} catch {
// Mantem a mensagem padrao quando a API nao devolve JSON.
}
throw new Error(message);
}
return response.json();
}
export function listRoutingKeywords(areaId) {
const query = areaId ? `?areaId=${encodeURIComponent(areaId)}` : '';
return request(`/admin/knowledge/routing-keywords${query}`);
}
export function getBotFlow() {
return request('/admin/knowledge/bot-flow');
}
export function listBotFlowVersions() {
return request('/admin/knowledge/bot-flow/versions');
}
export function createBotFlowNode(payload) {
return request('/admin/knowledge/bot-flow/nodes', {
method: 'POST',
body: JSON.stringify(payload),
});
}
export function updateBotFlowNode(id, payload) {
return request(`/admin/knowledge/bot-flow/nodes/${id}`, {
method: 'PUT',
body: JSON.stringify(payload),
});
}
export function deleteBotFlowNode(id) {
return request(`/admin/knowledge/bot-flow/nodes/${id}`, {
method: 'DELETE',
});
}
export function publishBotFlow() {
return request('/admin/knowledge/bot-flow/publish', {
method: 'POST',
});
}
export function getTriageFlow() {
return request('/admin/knowledge/triage-flow');
}
export function updateTriageFlow(payload) {
return request('/admin/knowledge/triage-flow', {
method: 'PUT',
body: JSON.stringify(payload),
});
}
export function createTriageAudience(payload) {
return request('/admin/knowledge/triage-flow/audiences', {
method: 'POST',
body: JSON.stringify(payload),
});
}
export function updateTriageAudience(id, payload) {
return request(`/admin/knowledge/triage-flow/audiences/${id}`, {
method: 'PUT',
body: JSON.stringify(payload),
});
}
export function createTriageIntent(payload) {
return request('/admin/knowledge/triage-flow/intents', {
method: 'POST',
body: JSON.stringify(payload),
});
}
export function updateTriageIntent(id, payload) {
return request(`/admin/knowledge/triage-flow/intents/${id}`, {
method: 'PUT',
body: JSON.stringify(payload),
});
}
export function createRoutingKeyword(payload) {
return request('/admin/knowledge/routing-keywords', {
method: 'POST',
body: JSON.stringify(payload),
});
}
export function updateRoutingKeyword(id, payload) {
return request(`/admin/knowledge/routing-keywords/${id}`, {
method: 'PUT',
body: JSON.stringify(payload),
});
}
export function deleteRoutingKeyword(id) {
return request(`/admin/knowledge/routing-keywords/${id}`, {
method: 'DELETE',
});
}