Pular para o conteúdo principal

Logs de Execução

Consulta de logs de execução de decisões no Decision Engine.

Endpoints

MétodoEndpointDescriçãoPermissão
GET/api/v1/execution-logsListar todos os logsDECISION_LOGS_READ
GET/api/v1/execution-logs/:idObter log específicoDECISION_LOGS_READ
GET/api/v1/decisions/:id/execution-logsListar logs de uma decisãoDECISION_LOGS_READ

Listar Todos os Logs

GET /api/v1/execution-logs

Lista todos os logs de execução da organização.

Query Parameters

ParâmetroTipoDescrição
page[number]integerNúmero da página
page[size]integerItens por página
filter[versionId]stringFiltrar por versão
filter[startDate]stringData inicial (ISO 8601)
filter[endDate]stringData final (ISO 8601)
curl 'https://decision-engine.stg.catalisa.app/api/v1/execution-logs?filter[startDate]=2024-01-01T00:00:00Z&filter[endDate]=2024-01-31T23:59:59Z' \
-H 'Authorization: Bearer SEU_TOKEN'

Response (200 OK)

{
"data": [
{
"type": "execution-logs",
"id": "990e8400-e29b-41d4-a716-446655440010",
"attributes": {
"decisionId": "660e8400-e29b-41d4-a716-446655440001",
"versionId": "770e8400-e29b-41d4-a716-446655440002",
"versionNumber": "1.0.0",
"input": {
"score": 720,
"amount": 10000
},
"output": {
"decision": "approved",
"maxAmount": 15000
},
"executionTimeMs": 45,
"success": true,
"executedAt": "2024-01-15T10:30:00Z"
}
},
{
"type": "execution-logs",
"id": "990e8400-e29b-41d4-a716-446655440011",
"attributes": {
"decisionId": "660e8400-e29b-41d4-a716-446655440001",
"versionId": "770e8400-e29b-41d4-a716-446655440002",
"versionNumber": "1.0.0",
"input": {
"score": 450,
"amount": 5000
},
"output": {
"decision": "rejected",
"reason": "score_below_minimum"
},
"executionTimeMs": 38,
"success": true,
"executedAt": "2024-01-15T10:35:00Z"
}
}
],
"meta": {
"totalItems": 1250,
"totalPages": 25,
"currentPage": 1,
"itemsPerPage": 50
}
}

Obter Log Específico

GET /api/v1/execution-logs/:logId

Obtém detalhes de um log de execução específico.

curl 'https://decision-engine.stg.catalisa.app/api/v1/execution-logs/990e8400-e29b-41d4-a716-446655440010' \
-H 'Authorization: Bearer SEU_TOKEN'

Response (200 OK)

{
"data": {
"type": "execution-logs",
"id": "990e8400-e29b-41d4-a716-446655440010",
"attributes": {
"decisionId": "660e8400-e29b-41d4-a716-446655440001",
"decisionName": "Verificação de Score",
"versionId": "770e8400-e29b-41d4-a716-446655440002",
"versionNumber": "1.0.0",
"input": {
"score": 720,
"amount": 10000,
"employmentType": "CLT"
},
"output": {
"decision": "approved",
"maxAmount": 15000,
"interestRate": 0.0299
},
"executionTimeMs": 45,
"success": true,
"error": null,
"executedAt": "2024-01-15T10:30:00Z",
"executedBy": "user-uuid"
},
"links": {
"self": "/api/v1/execution-logs/990e8400-e29b-41d4-a716-446655440010"
}
}
}

Listar Logs de uma Decisão

GET /api/v1/decisions/:decisionId/execution-logs

Lista logs de execução de uma decisão específica.

curl 'https://decision-engine.stg.catalisa.app/api/v1/decisions/660e8400-e29b-41d4-a716-446655440001/execution-logs?page[size]=20' \
-H 'Authorization: Bearer SEU_TOKEN'

Estrutura do Log

CampoTipoDescrição
idstringID único do log
decisionIdstringID da decisão executada
decisionNamestringNome da decisão
versionIdstringID da versão executada
versionNumberstringNúmero da versão (semver)
inputobjectDados de entrada
outputobjectResultado da execução
executionTimeMsintegerTempo de execução em ms
successbooleanSe a execução foi bem-sucedida
errorstringMensagem de erro (se houver)
executedAtstringData/hora da execução
executedBystringID do usuário que executou

Exemplos de Uso

Analisar Performance

async function getAverageExecutionTime(decisionId, startDate, endDate) {
const params = new URLSearchParams({
'filter[startDate]': startDate,
'filter[endDate]': endDate,
'page[size]': '100',
});

let totalTime = 0;
let count = 0;
let page = 1;
let hasMore = true;

while (hasMore) {
params.set('page[number]', page.toString());

const response = await fetch(
`https://decision-engine.stg.catalisa.app/api/v1/decisions/${decisionId}/execution-logs?${params}`,
{
headers: {
'Authorization': `Bearer ${token}`,
},
}
);

const { data, meta } = await response.json();

data.forEach((log) => {
totalTime += log.attributes.executionTimeMs;
count++;
});

hasMore = meta.hasNextPage;
page++;
}

return count > 0 ? totalTime / count : 0;
}

const avgTime = await getAverageExecutionTime(
'decision-uuid',
'2024-01-01T00:00:00Z',
'2024-01-31T23:59:59Z'
);

console.log(`Tempo medio de execução: ${avgTime}ms`);

Contar Aprovacoes vs Rejeicoes

async function getDecisionStats(decisionId, startDate, endDate) {
// ... buscar todos os logs

const stats = {
approved: 0,
rejected: 0,
total: 0,
};

data.forEach((log) => {
stats.total++;
if (log.attributes.output.decision === 'approved') {
stats.approved++;
} else {
stats.rejected++;
}
});

return stats;
}

Erros Comuns

CódigoErroDescrição
404NOT_FOUNDLog ou decisão não encontrado
400VALIDATIONFiltro de data inválido