@credithub/harlan-components 1.40.1 → 1.40.2
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/components/chart/hooks/useCategoryProtestos.js +30 -24
- package/dist/components/dossie/llama/dataUtils.d.ts +1 -0
- package/dist/components/dossie/llama/dataUtils.js +25 -10
- package/dist/components/dossie/llama/queryUtils.js +0 -4
- package/lib/cjs/index.js +56 -39
- package/lib/esm/index.js +56 -39
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useMemo } from 'react';
|
|
2
2
|
export var useCategoryProtestos = function (dataInput) {
|
|
3
|
-
var
|
|
3
|
+
var _a = useMemo(function () {
|
|
4
4
|
var safeDataInput = dataInput || [];
|
|
5
5
|
var categoryCounts = {
|
|
6
6
|
'Protestos de Crédito': 0,
|
|
@@ -8,38 +8,25 @@ export var useCategoryProtestos = function (dataInput) {
|
|
|
8
8
|
'Protestos Gerais': 0
|
|
9
9
|
};
|
|
10
10
|
safeDataInput.forEach(function (item) {
|
|
11
|
-
|
|
11
|
+
if (item.categoria in categoryCounts) {
|
|
12
|
+
categoryCounts[item.categoria] += item.quantidade;
|
|
13
|
+
}
|
|
12
14
|
});
|
|
13
|
-
var labels = Object.keys(categoryCounts);
|
|
14
|
-
var dataValues = Object.values(categoryCounts);
|
|
15
15
|
return {
|
|
16
|
-
labels:
|
|
17
|
-
|
|
18
|
-
{
|
|
19
|
-
data: dataValues,
|
|
20
|
-
backgroundColor: [
|
|
21
|
-
'rgba(255, 99, 132, 0.2)',
|
|
22
|
-
'rgba(255, 159, 64, 0.2)',
|
|
23
|
-
'rgba(54, 162, 235, 0.2)'
|
|
24
|
-
],
|
|
25
|
-
borderColor: [
|
|
26
|
-
'rgba(255, 99, 132, 1)',
|
|
27
|
-
'rgba(255, 159, 64, 1)',
|
|
28
|
-
'rgba(54, 162, 235, 1)'
|
|
29
|
-
],
|
|
30
|
-
borderWidth: 1
|
|
31
|
-
}
|
|
32
|
-
]
|
|
16
|
+
labels: Object.keys(categoryCounts),
|
|
17
|
+
dataValues: Object.values(categoryCounts)
|
|
33
18
|
};
|
|
34
|
-
}, [dataInput]);
|
|
19
|
+
}, [dataInput]), labels = _a.labels, dataValues = _a.dataValues;
|
|
35
20
|
var options = useMemo(function () {
|
|
21
|
+
var maxValue = Math.max.apply(Math, dataValues);
|
|
22
|
+
var stepSize = Math.ceil(maxValue / 10);
|
|
36
23
|
return {
|
|
37
24
|
scales: {
|
|
38
25
|
y: {
|
|
39
26
|
beginAtZero: true,
|
|
40
27
|
ticks: {
|
|
41
28
|
precision: 0,
|
|
42
|
-
stepSize: 1,
|
|
29
|
+
stepSize: stepSize > 1 ? stepSize : 1,
|
|
43
30
|
suggestedMin: 0,
|
|
44
31
|
callback: function (value) {
|
|
45
32
|
return Number.isInteger(value) ? value : null;
|
|
@@ -66,6 +53,25 @@ export var useCategoryProtestos = function (dataInput) {
|
|
|
66
53
|
}
|
|
67
54
|
}
|
|
68
55
|
};
|
|
69
|
-
}, []);
|
|
56
|
+
}, [dataValues]);
|
|
57
|
+
var data = useMemo(function () { return ({
|
|
58
|
+
labels: labels,
|
|
59
|
+
datasets: [
|
|
60
|
+
{
|
|
61
|
+
data: dataValues,
|
|
62
|
+
backgroundColor: [
|
|
63
|
+
'rgba(255, 99, 132, 0.2)',
|
|
64
|
+
'rgba(255, 159, 64, 0.2)',
|
|
65
|
+
'rgba(54, 162, 235, 0.2)'
|
|
66
|
+
],
|
|
67
|
+
borderColor: [
|
|
68
|
+
'rgba(255, 99, 132, 1)',
|
|
69
|
+
'rgba(255, 159, 64, 1)',
|
|
70
|
+
'rgba(54, 162, 235, 1)'
|
|
71
|
+
],
|
|
72
|
+
borderWidth: 1
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
}); }, [labels, dataValues]);
|
|
70
76
|
return { data: data, options: options };
|
|
71
77
|
};
|
|
@@ -14,29 +14,44 @@ export function flattenData(data) {
|
|
|
14
14
|
}
|
|
15
15
|
return safeStringify(flattened);
|
|
16
16
|
}
|
|
17
|
+
export function limitDataSize(items, maxItems) {
|
|
18
|
+
if (!Array.isArray(items))
|
|
19
|
+
return [];
|
|
20
|
+
return items.slice(0, maxItems).map(function (item) {
|
|
21
|
+
if (typeof item === 'object') {
|
|
22
|
+
return Object.keys(item).reduce(function (limitedItem, key, index) {
|
|
23
|
+
if (index < maxItems) {
|
|
24
|
+
limitedItem[key] = item[key];
|
|
25
|
+
}
|
|
26
|
+
return limitedItem;
|
|
27
|
+
}, {});
|
|
28
|
+
}
|
|
29
|
+
return item;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
17
32
|
export var selectRelevantData = function (data, documento) {
|
|
18
|
-
var _a = data || {}, protestosDeCredito = _a.protestos, chequesSemFundo = _a.ccf, dividasPublicas = _a.dividasPublicas, processosJuridicos = _a.processosJuridicos, contasBancarias = _a.bankAccounts, dadosDeChequesSemFundo = _a.ccfData, dividas = _a.divida, _b = _a.dossie,
|
|
19
|
-
var
|
|
20
|
-
? 'Liminar para esconder protestos'
|
|
21
|
-
: liminar
|
|
22
|
-
? 'NÃO TEM LIMINAR'
|
|
23
|
-
: undefined;
|
|
33
|
+
var _a = data || {}, protestosDeCredito = _a.protestos, chequesSemFundo = _a.ccf, dividasPublicas = _a.dividasPublicas, processosJuridicos = _a.processosJuridicos, contasBancarias = _a.bankAccounts, dadosDeChequesSemFundo = _a.ccfData, dividas = _a.divida, _b = _a.dossie, dossie = _b === void 0 ? {} : _b, liminar = _a.liminar, socios = _a.partners, dadosPessoasExpostasPoliticamente = _a.pepData, detalhesProcessosJuridicos = _a.processosJuridicosData, detalhesDosProtestos = _a.protestosData, dadosReclameAqui = _a.reclameAqui, relatoriosRefinBoaVista = _a.refinBoaVista, relatoriosRefinSerasa = _a.refinSerasa, dadosScore = _a.scoreData, relatoriosSCR = _a.scr, registrosDeVeiculos = _a.veiculos;
|
|
34
|
+
var perfilDaEmpresa = dossie.carousel, resumoDaEmpresa = dossie.summary;
|
|
24
35
|
var dadosOrganizados = {
|
|
25
36
|
documento: documento || undefined,
|
|
26
37
|
protestosDeCredito: protestosDeCredito,
|
|
38
|
+
detalhesDosProtestos: limitDataSize(detalhesDosProtestos, 100000),
|
|
39
|
+
processosJuridicos: processosJuridicos,
|
|
40
|
+
detalhesProcessosJuridicos: detalhesProcessosJuridicos,
|
|
27
41
|
chequesSemFundo: chequesSemFundo,
|
|
28
42
|
dividasPublicas: dividasPublicas,
|
|
29
|
-
processosJuridicos: processosJuridicos,
|
|
30
43
|
contasBancarias: contasBancarias,
|
|
31
44
|
dadosDeChequesSemFundo: dadosDeChequesSemFundo,
|
|
32
45
|
dividas: dividas,
|
|
33
46
|
perfilDaEmpresa: perfilDaEmpresa,
|
|
34
47
|
resumoDaEmpresa: resumoDaEmpresa,
|
|
35
|
-
liminar:
|
|
48
|
+
liminar: liminar
|
|
49
|
+
? liminar.totalProtestos === 'NADA CONSTA'
|
|
50
|
+
? 'Liminar para esconder protestos'
|
|
51
|
+
: 'NÃO TEM LIMINAR'
|
|
52
|
+
: undefined,
|
|
36
53
|
socios: socios,
|
|
37
54
|
dadosPessoasExpostasPoliticamente: dadosPessoasExpostasPoliticamente,
|
|
38
|
-
detalhesProcessosJuridicos: detalhesProcessosJuridicos,
|
|
39
|
-
detalhesDosProtestos: detalhesDosProtestos,
|
|
40
55
|
dadosReclameAqui: dadosReclameAqui,
|
|
41
56
|
relatoriosRefinBoaVista: relatoriosRefinBoaVista,
|
|
42
57
|
relatoriosRefinSerasa: relatoriosRefinSerasa,
|
|
@@ -11,10 +11,6 @@ import { stringify } from 'yaml';
|
|
|
11
11
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
12
12
|
export var createQueryAndMessages = function (relevantData, messageHistory, extraMessage) {
|
|
13
13
|
var baseMessages = __spreadArray([
|
|
14
|
-
{
|
|
15
|
-
role: 'system',
|
|
16
|
-
content: "\n Voc\u00EA \u00E9 NostraCredit, um assistente de an\u00E1lise de cr\u00E9dito do CreditHub, especializado em fornecer insights para decis\u00F5es de cr\u00E9dito no Brasil. Sua fun\u00E7\u00E3o \u00E9 analisar dossi\u00EAs de cr\u00E9dito e destacar informa\u00E7\u00F5es que possam influenciar negativamente a concess\u00E3o de cr\u00E9dito, como:\n\n - Protestos (atrasos em pagamentos).\n - Cheques sem fundo (CCF).\n - D\u00EDvidas p\u00FAblicas (impostos n\u00E3o pagos).\n - Liminares (que ocultam informa\u00E7\u00F5es de risco).\n - Processos judiciais (conflitos pendentes).\n\n Sua resposta deve incluir:\n 1. Uma an\u00E1lise clara dos principais fatores de risco, priorizando processos judiciais e protestos.\n 2. Sugest\u00F5es sobre taxas de juros e condi\u00E7\u00F5es de pagamento, conforme o risco identificado.\n 3. Recomenda\u00E7\u00E3o final resumida, incluindo uma taxa de juros com base no risco.\n\n **Mantenha suas respostas diretas, objetivas e formatadas em portugu\u00EAs simples, sem jarg\u00F5es t\u00E9cnicos, nomes de chaves do YAML ou men\u00E7\u00E3o a IDs ou identificadores de qualquer tipo (ex.: n\u00FAmeros de documentos ou chaves t\u00E9cnicas). Evite qualquer refer\u00EAncia a valores booleanos ou irrelevantes. Use descri\u00E7\u00F5es amig\u00E1veis e compreens\u00EDveis.**\n Caso informa\u00E7\u00F5es essenciais estejam faltando, fa\u00E7a perguntas para garantir uma an\u00E1lise completa. Responda como um especialista acess\u00EDvel, auxiliando na tomada de decis\u00E3o de cr\u00E9dito.\n "
|
|
17
|
-
},
|
|
18
14
|
{
|
|
19
15
|
role: 'user',
|
|
20
16
|
content: "\n Analisar o dossi\u00EA da seguinte empresa:\n```yaml\n".concat(stringify(JSON.parse(relevantData)), "\n```\n\n 1. Identifique os protestos, processos judiciais e outros problemas financeiros da empresa, e os descreva com termos claros, como \"valor financeiro\" ou \"pend\u00EAncia judicial\", sem mencionar nomes t\u00E9cnicos, IDs, chaves ou valores booleanos.\n 2. Descreva os processos judiciais e protestos em termos simples, utilizando frases como \"protesto registrado\" ou \"processo judicial ativo\", garantindo que a linguagem seja compreens\u00EDvel para um usu\u00E1rio comum.\n 3. Resuma os pontos cr\u00EDticos de forma objetiva, explicando como esses fatores podem impactar a decis\u00E3o de cr\u00E9dito. Enfatize o risco que eles representam para a empresa.\n 4. Responda com uma recomenda\u00E7\u00E3o final objetiva, propondo uma taxa de juros ou condi\u00E7\u00F5es espec\u00EDficas com base no risco identificado, como garantias adicionais ou prazos diferenciados.\n\n **Responda sempre em portugu\u00EAs claro e evite mencionar qualquer nome de campo do YAML, IDs ou n\u00FAmeros de documentos nas suas respostas. Certifique-se de eliminar qualquer dado n\u00E3o intelig\u00EDvel ou irrelevante, como valores booleanos.**\n\n ").concat(extraMessage || '', "\n ")
|