@credithub/harlan-components 1.37.6 → 1.38.0
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/assets/btn/btnSend.d.ts +3 -0
- package/dist/assets/btn/btnSend.js +37 -0
- package/dist/assets/btn/stopBtn.d.ts +3 -0
- package/dist/assets/btn/stopBtn.js +33 -0
- package/dist/assets/icones/credithub.d.ts +4 -0
- package/dist/assets/icones/credithub.js +17 -0
- package/dist/assets/icones/person.d.ts +4 -0
- package/dist/assets/icones/person.js +11 -0
- package/dist/components/dossie/dossie.js +4 -1
- package/dist/components/dossie/llama/dataUtils.d.ts +25 -0
- package/dist/components/dossie/llama/dataUtils.js +43 -0
- package/dist/components/dossie/llama/llama.js +213 -110
- package/dist/components/dossie/llama/queryUtils.d.ts +4 -0
- package/dist/components/dossie/llama/queryUtils.js +26 -0
- package/dist/components/dossie/llama/responseUtils.d.ts +18 -0
- package/dist/components/dossie/llama/responseUtils.js +23 -0
- package/dist/components/dossie/llama/styles.d.ts +4 -1
- package/dist/components/dossie/llama/styles.js +41 -15
- package/dist/components/imoveis/imoveisService.js +6 -2
- package/dist/components/refinBoaVista/refinBoaVista.js +11 -2
- package/dist/components/refinSerasa/refinSerasa.js +6 -4
- package/dist/components/score/scoreService.js +7 -5
- package/dist/components/scr/scr.js +7 -9
- package/dist/components/streamQuery.d.ts +7 -0
- package/dist/components/streamQuery.js +58 -0
- package/dist/components/veiculos/veiculos.js +6 -4
- package/dist/components/webservice.js +2 -2
- package/dist/styles/theme.d.ts +12 -0
- package/dist/styles/theme.js +12 -0
- package/lib/cjs/index.js +4649 -3301
- package/lib/esm/index.js +4643 -3302
- package/package.json +3 -2
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
+
var t = {};
|
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
+
t[p] = s[p];
|
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
+
t[p[i]] = s[p[i]];
|
|
20
|
+
}
|
|
21
|
+
return t;
|
|
22
|
+
};
|
|
23
|
+
import React from 'react';
|
|
24
|
+
import { useTheme } from 'styled-components';
|
|
25
|
+
function BtnSend(_a) {
|
|
26
|
+
var fill = _a.fill, rest = __rest(_a, ["fill"]);
|
|
27
|
+
var theme = useTheme();
|
|
28
|
+
var color = fill || theme.colors.azulCredithub;
|
|
29
|
+
return (React.createElement("svg", __assign({ width: "47", height: "47", viewBox: "0 0 47 47", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, rest),
|
|
30
|
+
React.createElement("circle", { cx: "23.5", cy: "23.5", r: "23.5", fill: "#72BBF3" }),
|
|
31
|
+
React.createElement("circle", { cx: "23.5", cy: "23.5", r: "15", fill: "white", stroke: color, strokeWidth: "5" }),
|
|
32
|
+
React.createElement("mask", { id: "mask0_437_6958", style: { maskType: 'alpha' }, maskUnits: "userSpaceOnUse", x: "14", y: "13", width: "20", height: "20" },
|
|
33
|
+
React.createElement("rect", { x: "14", y: "13", width: "20", height: "20", fill: "#D9D9D9" })),
|
|
34
|
+
React.createElement("g", { mask: "url(#mask0_437_6958)" },
|
|
35
|
+
React.createElement("path", { d: "M23.2503 19.875L19.5793 23.546C19.4294 23.6959 19.2538 23.7708 19.0524 23.7708C18.851 23.7708 18.6706 23.6944 18.5112 23.5417C18.365 23.3889 18.292 23.2118 18.292 23.0104C18.292 22.809 18.3671 22.6333 18.5174 22.4831L23.4776 17.5292C23.5528 17.4542 23.6341 17.3993 23.7218 17.3646C23.8094 17.3299 23.9034 17.3125 24.0037 17.3125C24.1038 17.3125 24.1978 17.3299 24.2855 17.3646C24.3732 17.3993 24.4517 17.4514 24.5212 17.5208L29.4795 22.4792C29.6323 22.6319 29.7087 22.8056 29.7087 23C29.7087 23.1944 29.6356 23.3681 29.4895 23.5208C29.33 23.6736 29.1485 23.75 28.9447 23.75C28.7411 23.75 28.5652 23.6736 28.417 23.5208L24.7503 19.875V28.2504C24.7503 28.4628 24.6789 28.6408 24.536 28.7846C24.393 28.9282 24.216 29 24.0047 29C23.7935 29 23.6149 28.9282 23.4691 28.7846C23.3232 28.6408 23.2503 28.4628 23.2503 28.2504V19.875Z", fill: color }))));
|
|
36
|
+
}
|
|
37
|
+
export default BtnSend;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
+
var t = {};
|
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
+
t[p] = s[p];
|
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
+
t[p[i]] = s[p[i]];
|
|
20
|
+
}
|
|
21
|
+
return t;
|
|
22
|
+
};
|
|
23
|
+
import React from 'react';
|
|
24
|
+
import { useTheme } from 'styled-components';
|
|
25
|
+
function StopButton(_a) {
|
|
26
|
+
var _b = _a.fill, fill = _b === void 0 ? '#FFFFFF' : _b, rest = __rest(_a, ["fill"]);
|
|
27
|
+
var theme = useTheme();
|
|
28
|
+
var background = theme.colors.azulCredithub;
|
|
29
|
+
return (React.createElement("svg", __assign({ width: "47", height: "47", viewBox: "0 0 47 47", xmlns: "http://www.w3.org/2000/svg" }, rest),
|
|
30
|
+
React.createElement("circle", { cx: "23.5", cy: "23.5", r: "23.5", fill: background }),
|
|
31
|
+
React.createElement("rect", { x: "16", y: "16", width: "15", height: "15", rx: "2", fill: fill })));
|
|
32
|
+
}
|
|
33
|
+
export default StopButton;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useTheme } from 'styled-components';
|
|
3
|
+
var Credithub = function (_a) {
|
|
4
|
+
var _b = _a.className, className = _b === void 0 ? '' : _b, _c = _a.size, size = _c === void 0 ? 18 : _c, circleFill = _a.circleFill;
|
|
5
|
+
var theme = useTheme();
|
|
6
|
+
var fill = circleFill || theme.colors.azulCredithub;
|
|
7
|
+
return (React.createElement("svg", { width: size, height: size, viewBox: "0 0 18 18", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: className },
|
|
8
|
+
React.createElement("g", { clipPath: "url(#clip0_437_7403)" },
|
|
9
|
+
React.createElement("path", { d: "M18 8.99947C18 4.0284 13.9695 0 8.99973 0C4.02997 0 0 4.0284 0 8.99947C0 13.9705 4.0289 18 8.99973 18C13.9706 18 18 13.9705 18 8.99947Z", fill: fill }),
|
|
10
|
+
React.createElement("path", { d: "M6.84842 12.0296V9.17235H3.70547V12.0296H2.57324V5.34473H3.70547V8.1072H6.84842V5.34473H7.99025V12.0296H6.84842Z", fill: "white" }),
|
|
11
|
+
React.createElement("path", { d: "M10.7182 12.1614C9.62326 12.1614 8.98145 11.3503 8.98145 10.3321V7.4375H10.0764V10.1339C10.0764 10.6995 10.3408 11.1804 11.0012 11.1804C11.6617 11.1804 11.9639 10.7565 11.9639 10.1531V7.4375H13.0589V11.1906C13.0589 11.5676 13.0871 11.86 13.1063 12.0299H12.0583C12.0396 11.9261 12.0204 11.7093 12.0204 11.5208C11.7939 11.9356 11.256 12.162 10.7182 12.162V12.1614Z", fill: "white" }),
|
|
12
|
+
React.createElement("path", { d: "M17.8837 7.55498C17.5954 7.40107 17.2531 7.31479 16.8587 7.31479C16.1508 7.31479 15.6225 7.64445 15.4146 8.00341V5.20312H14.3389V12.0297H15.4055V11.4167C15.6699 11.8598 16.1699 12.1426 16.8208 12.1426C17.0527 12.1426 17.2691 12.1106 17.4685 12.0515C17.8118 11.0987 17.9994 10.0714 17.9994 8.99986C17.9994 8.50776 17.9594 8.02524 17.8832 7.55498H17.8837ZM16.6422 11.1717C15.9434 11.1717 15.4061 10.6253 15.4061 9.7199C15.4061 8.81452 15.9439 8.28621 16.6422 8.28621C17.3406 8.28621 17.879 8.8044 17.879 9.7199C17.879 10.6354 17.3592 11.1717 16.6422 11.1717Z", fill: "white" })),
|
|
13
|
+
React.createElement("defs", null,
|
|
14
|
+
React.createElement("clipPath", { id: "clip0_437_7403" },
|
|
15
|
+
React.createElement("rect", { width: "18", height: "18", fill: "white" })))));
|
|
16
|
+
};
|
|
17
|
+
export default Credithub;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
var Person = function (_a) {
|
|
3
|
+
var _b = _a.className, className = _b === void 0 ? '' : _b, _c = _a.size, size = _c === void 0 ? 18 : _c;
|
|
4
|
+
return (React.createElement("svg", { width: size, height: size, viewBox: "0 0 18 18", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: className },
|
|
5
|
+
React.createElement("circle", { cx: "9", cy: "9", r: "9", fill: "#D1D1D1" }),
|
|
6
|
+
React.createElement("mask", { id: "mask0_437_7398", style: { maskType: 'alpha' }, maskUnits: "userSpaceOnUse", x: "2", y: "2", width: "14", height: "14" },
|
|
7
|
+
React.createElement("rect", { x: "2", y: "2", width: "14", height: "14", fill: "#D9D9D9" })),
|
|
8
|
+
React.createElement("g", { mask: "url(#mask0_437_7398)" },
|
|
9
|
+
React.createElement("path", { d: "M8.99883 8.9998C8.41549 8.9998 7.91966 8.79564 7.51133 8.3873C7.10299 7.97897 6.89883 7.48314 6.89883 6.8998C6.89883 6.31647 7.10299 5.82064 7.51133 5.4123C7.91966 5.00397 8.41549 4.7998 8.99883 4.7998C9.58216 4.7998 10.078 5.00397 10.4863 5.4123C10.8947 5.82064 11.0988 6.31647 11.0988 6.8998C11.0988 7.48314 10.8947 7.97897 10.4863 8.3873C10.078 8.79564 9.58216 8.9998 8.99883 8.9998ZM4.79883 12.1498V11.7998C4.79883 11.5762 4.85959 11.3647 4.98112 11.1654C5.10265 10.9661 5.27036 10.7984 5.48424 10.6623C6.01897 10.3512 6.58427 10.113 7.18014 9.94772C7.77602 9.78244 8.38122 9.6998 8.99577 9.6998C9.61031 9.6998 10.2165 9.78244 10.8145 9.94772C11.4124 10.113 11.9787 10.3512 12.5134 10.6623C12.7273 10.7887 12.895 10.954 13.0165 11.1581C13.1381 11.3623 13.1988 11.5762 13.1988 11.7998V12.1498C13.1988 12.4386 13.096 12.6857 12.8902 12.8914C12.6845 13.097 12.4372 13.1998 12.1482 13.1998H5.84474C5.5558 13.1998 5.30924 13.097 5.10508 12.8914C4.90091 12.6857 4.79883 12.4386 4.79883 12.1498ZM5.84883 12.1498H12.1488V11.7998C12.1488 11.7494 12.1341 11.7037 12.1046 11.6626C12.0753 11.6214 12.0365 11.5893 11.9884 11.5665C11.5412 11.2942 11.0648 11.0901 10.5592 10.954C10.0537 10.8179 9.53355 10.7498 8.99883 10.7498C8.46411 10.7498 7.94397 10.8179 7.43841 10.954C6.93286 11.0901 6.45647 11.2942 6.00924 11.5665C5.96063 11.6054 5.92174 11.6429 5.89258 11.6791C5.86341 11.7153 5.84883 11.7556 5.84883 11.7998V12.1498ZM9.00189 7.9498C9.29151 7.9498 9.53841 7.8467 9.74258 7.64049C9.94674 7.43428 10.0488 7.18637 10.0488 6.89674C10.0488 6.60712 9.94572 6.36022 9.73951 6.15605C9.53331 5.95189 9.28539 5.8498 8.99577 5.8498C8.70614 5.8498 8.45924 5.95291 8.25508 6.15912C8.05091 6.36533 7.94883 6.61324 7.94883 6.90287C7.94883 7.19249 8.05193 7.43939 8.25814 7.64355C8.46435 7.84772 8.71226 7.9498 9.00189 7.9498Z", fill: "#353535" }))));
|
|
10
|
+
};
|
|
11
|
+
export default Person;
|
|
@@ -24,6 +24,7 @@ import { Section } from '../section';
|
|
|
24
24
|
import { Queries, RequestStatus } from '../webservice';
|
|
25
25
|
import { Carrousel } from './carrousel/carrousel';
|
|
26
26
|
import { createDossieData } from './dossieData';
|
|
27
|
+
import Llama from './llama/llama';
|
|
27
28
|
import { Summary } from './summary/summary';
|
|
28
29
|
import { TransactionsTable } from './transactionTable/transactionTable';
|
|
29
30
|
var DossieContent = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: grid;\n grid-template-columns: 1fr 2fr;\n justify-items: center;\n align-items: flex-start;\n margin-bottom: 20px;\n gap: 20px;\n\n @media screen and (max-width: 992px) {\n grid-template-columns: 1fr;\n }\n"], ["\n display: grid;\n grid-template-columns: 1fr 2fr;\n justify-items: center;\n align-items: flex-start;\n margin-bottom: 20px;\n gap: 20px;\n\n @media screen and (max-width: 992px) {\n grid-template-columns: 1fr;\n }\n"])));
|
|
@@ -69,7 +70,9 @@ var Dossie = function (_a) {
|
|
|
69
70
|
React.createElement(DossieContent, null,
|
|
70
71
|
React.createElement(DossieCarrousel, null),
|
|
71
72
|
React.createElement(Summary, { finderResponse: data, rfbResponse: rfbResponse, document: document })),
|
|
72
|
-
React.createElement(TransactionsTable, { events: XPathUtils.select('//historico/consulta', data) || [] }))
|
|
73
|
+
React.createElement(TransactionsTable, { events: XPathUtils.select('//historico/consulta', data) || [] })),
|
|
74
|
+
React.createElement(LlamaContainer, null,
|
|
75
|
+
React.createElement(Llama, { documento: document }))));
|
|
73
76
|
};
|
|
74
77
|
return (React.createElement(Section, { ctx: ctx, hideHeader: true, minimized: false, isError: function (e) { return response(e); }, onSuccess: response }));
|
|
75
78
|
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare function flattenData(data: any): string;
|
|
2
|
+
export declare const selectRelevantData: (data: any, documento: string) => {
|
|
3
|
+
documento: string;
|
|
4
|
+
protestos: any;
|
|
5
|
+
ultimoRegistroCCF: any;
|
|
6
|
+
ccf: any;
|
|
7
|
+
dividasPublicas: any;
|
|
8
|
+
processosJuridicos: any;
|
|
9
|
+
bankAccounts: any;
|
|
10
|
+
ccfData: any;
|
|
11
|
+
divida: any;
|
|
12
|
+
dossie: any;
|
|
13
|
+
imoveis: any;
|
|
14
|
+
liminar: any;
|
|
15
|
+
partners: any;
|
|
16
|
+
pepData: any;
|
|
17
|
+
processosJuridicosData: any;
|
|
18
|
+
protestosData: any;
|
|
19
|
+
reclameAqui: any;
|
|
20
|
+
refinBoaVista: any;
|
|
21
|
+
refinSerasa: any;
|
|
22
|
+
scoreData: any;
|
|
23
|
+
scr: any;
|
|
24
|
+
veiculos: any;
|
|
25
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { safeStringify } from './responseUtils';
|
|
3
|
+
export function flattenData(data) {
|
|
4
|
+
var flattened = {};
|
|
5
|
+
for (var key in data) {
|
|
6
|
+
if (typeof data[key] === 'object' && !Array.isArray(data[key])) {
|
|
7
|
+
for (var innerKey in data[key]) {
|
|
8
|
+
flattened["".concat(key, "_").concat(innerKey)] = data[key][innerKey];
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
flattened[key] = data[key];
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return safeStringify(flattened);
|
|
16
|
+
}
|
|
17
|
+
export var selectRelevantData = function (data, documento) {
|
|
18
|
+
var protestos = data.protestos, ultimoRegistroCCF = data.ultimoRegistroCCF, ccf = data.ccf, dividasPublicas = data.dividasPublicas, processosJuridicos = data.processosJuridicos, bankAccounts = data.bankAccounts, ccfData = data.ccfData, divida = data.divida, dossie = data.dossie, imoveis = data.imoveis, liminar = data.liminar, partners = data.partners, pepData = data.pepData, processosJuridicosData = data.processosJuridicosData, protestosData = data.protestosData, reclameAqui = data.reclameAqui, refinBoaVista = data.refinBoaVista, refinSerasa = data.refinSerasa, scoreData = data.scoreData, scr = data.scr, veiculos = data.veiculos;
|
|
19
|
+
return {
|
|
20
|
+
documento: documento,
|
|
21
|
+
protestos: protestos,
|
|
22
|
+
ultimoRegistroCCF: ultimoRegistroCCF,
|
|
23
|
+
ccf: ccf,
|
|
24
|
+
dividasPublicas: dividasPublicas,
|
|
25
|
+
processosJuridicos: processosJuridicos,
|
|
26
|
+
bankAccounts: bankAccounts,
|
|
27
|
+
ccfData: ccfData,
|
|
28
|
+
divida: divida,
|
|
29
|
+
dossie: dossie,
|
|
30
|
+
imoveis: imoveis,
|
|
31
|
+
liminar: liminar,
|
|
32
|
+
partners: partners,
|
|
33
|
+
pepData: pepData,
|
|
34
|
+
processosJuridicosData: processosJuridicosData,
|
|
35
|
+
protestosData: protestosData,
|
|
36
|
+
reclameAqui: reclameAqui,
|
|
37
|
+
refinBoaVista: refinBoaVista,
|
|
38
|
+
refinSerasa: refinSerasa,
|
|
39
|
+
scoreData: scoreData,
|
|
40
|
+
scr: scr,
|
|
41
|
+
veiculos: veiculos
|
|
42
|
+
};
|
|
43
|
+
};
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
1
12
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
2
13
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
3
14
|
if (ar || !(i in from)) {
|
|
@@ -7,103 +18,120 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
7
18
|
}
|
|
8
19
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
9
20
|
};
|
|
10
|
-
|
|
21
|
+
import BtnSend from '../../../assets/btn/btnSend';
|
|
22
|
+
import BtnWrapper from '../../../assets/btn/btnWrapper';
|
|
23
|
+
import ChevronDown from '../../../assets/btn/chevronDown';
|
|
24
|
+
import ChevronUp from '../../../assets/btn/chevronUp';
|
|
25
|
+
import StopButton from '../../../assets/btn/stopBtn';
|
|
26
|
+
import Credithub from '../../../assets/icones/credithub';
|
|
27
|
+
import Person from '../../../assets/icones/person';
|
|
11
28
|
import StatusMessage from '../../../components/interface/statusMessage';
|
|
12
|
-
import {
|
|
29
|
+
import { useStreamQuery } from '../../../components/streamQuery';
|
|
13
30
|
import { useGlobalData } from '../../../contexts/globalDataContext';
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
var
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
31
|
+
import useToggle from '../../../hooks/useToggle';
|
|
32
|
+
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
33
|
+
import { flattenData, selectRelevantData } from './dataUtils';
|
|
34
|
+
import { createQueryAndMessages } from './queryUtils';
|
|
35
|
+
import { ChatInput, ChatInputContainer, Container, ContainerInput, Header, HeaderContent, InitialMessageBox, InitialMessageContent, LoadingDots, Message, MessageHistory, SendButton, Title } from './styles';
|
|
36
|
+
var Llama = function (_a) {
|
|
37
|
+
var _b, _c, _d;
|
|
38
|
+
var documento = _a.documento;
|
|
39
|
+
var globalData = useGlobalData().data;
|
|
40
|
+
var _e = useState('{}'), serializedData = _e[0], setSerializedData = _e[1];
|
|
41
|
+
var _f = useState(false), queryEnabled = _f[0], setQueryEnabled = _f[1];
|
|
42
|
+
var _g = useState(''), userInput = _g[0], setUserInput = _g[1];
|
|
43
|
+
var _h = useState([]), messageHistory = _h[0], setMessageHistory = _h[1];
|
|
44
|
+
var _j = useToggle(), isOpen = _j[0], toggleOpen = _j[1];
|
|
45
|
+
var messageHistoryRef = useRef(null);
|
|
46
|
+
var incrementalResponseRef = useRef('');
|
|
47
|
+
var abortControllerRef = useRef(null);
|
|
48
|
+
var _k = useState(false), hasMadeInitialRequest = _k[0], setHasMadeInitialRequest = _k[1];
|
|
49
|
+
var _l = useState(false), isProcessing = _l[0], setIsProcessing = _l[1];
|
|
50
|
+
var _m = useState(false), shouldStartTyping = _m[0], setShouldStartTyping = _m[1];
|
|
51
|
+
var _o = useState(''), typingMessage = _o[0], setTypingMessage = _o[1];
|
|
52
|
+
var _p = useState(false), isTyping = _p[0], setIsTyping = _p[1];
|
|
53
|
+
var _q = useState(0), currentMessageIndex = _q[0], setCurrentMessageIndex = _q[1];
|
|
54
|
+
var typingIntervalRef = useRef(null);
|
|
55
|
+
var simulateTyping = function (message, callback) {
|
|
56
|
+
setIsTyping(true);
|
|
57
|
+
var index = typingMessage.length - 1;
|
|
58
|
+
if (typingIntervalRef.current) {
|
|
59
|
+
clearInterval(typingIntervalRef.current);
|
|
60
|
+
}
|
|
61
|
+
typingIntervalRef.current = setInterval(function () {
|
|
62
|
+
if (index < message.length) {
|
|
63
|
+
setTypingMessage(function (prev) { return prev + message[index]; });
|
|
64
|
+
index++;
|
|
28
65
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
var selectRelevantData = function (data, documento) {
|
|
35
|
-
var protestos = data.protestos, ultimoRegistroCCF = data.ultimoRegistroCCF, ccf = data.ccf, dividasPublicas = data.dividasPublicas, processosJuridicos = data.processosJuridicos, bankAccounts = data.bankAccounts, ccfData = data.ccfData, divida = data.divida, dossie = data.dossie, imoveis = data.imoveis, liminar = data.liminar, partners = data.partners, pepData = data.pepData, processosJuridicosData = data.processosJuridicosData, protestosData = data.protestosData, reclameAqui = data.reclameAqui, refinBoaVista = data.refinBoaVista, refinSerasa = data.refinSerasa, scoreData = data.scoreData, scr = data.scr, veiculos = data.veiculos;
|
|
36
|
-
return {
|
|
37
|
-
documento: documento,
|
|
38
|
-
protestos: protestos,
|
|
39
|
-
ultimoRegistroCCF: ultimoRegistroCCF,
|
|
40
|
-
ccf: ccf,
|
|
41
|
-
dividasPublicas: dividasPublicas,
|
|
42
|
-
processosJuridicos: processosJuridicos,
|
|
43
|
-
bankAccounts: bankAccounts,
|
|
44
|
-
ccfData: ccfData,
|
|
45
|
-
divida: divida,
|
|
46
|
-
dossie: dossie,
|
|
47
|
-
imoveis: imoveis,
|
|
48
|
-
liminar: liminar,
|
|
49
|
-
partners: partners,
|
|
50
|
-
pepData: pepData,
|
|
51
|
-
processosJuridicosData: processosJuridicosData,
|
|
52
|
-
protestosData: protestosData,
|
|
53
|
-
reclameAqui: reclameAqui,
|
|
54
|
-
refinBoaVista: refinBoaVista,
|
|
55
|
-
refinSerasa: refinSerasa,
|
|
56
|
-
scoreData: scoreData,
|
|
57
|
-
scr: scr,
|
|
58
|
-
veiculos: veiculos
|
|
59
|
-
};
|
|
60
|
-
};
|
|
61
|
-
function flattenData(data) {
|
|
62
|
-
// Declara o tipo do objeto flattened como { [key: string]: any }
|
|
63
|
-
var flattened = {};
|
|
64
|
-
for (var key in data) {
|
|
65
|
-
if (typeof data[key] === 'object' && !Array.isArray(data[key])) {
|
|
66
|
-
for (var innerKey in data[key]) {
|
|
67
|
-
flattened["".concat(key, "_").concat(innerKey)] = data[key][innerKey];
|
|
66
|
+
else {
|
|
67
|
+
clearInterval(typingIntervalRef.current);
|
|
68
|
+
setIsTyping(false);
|
|
69
|
+
callback();
|
|
68
70
|
}
|
|
71
|
+
}, 25);
|
|
72
|
+
};
|
|
73
|
+
var stopTyping = function () {
|
|
74
|
+
if (typingIntervalRef.current) {
|
|
75
|
+
clearInterval(typingIntervalRef.current);
|
|
76
|
+
typingIntervalRef.current = null;
|
|
77
|
+
setMessageHistory(function (prevMessages) {
|
|
78
|
+
var updatedMessages = __spreadArray([], prevMessages, true);
|
|
79
|
+
if (updatedMessages.length > 0 &&
|
|
80
|
+
updatedMessages[updatedMessages.length - 1].role === 'assistant') {
|
|
81
|
+
updatedMessages[updatedMessages.length - 1] = __assign(__assign({}, updatedMessages[updatedMessages.length - 1]), { content: typingMessage });
|
|
82
|
+
}
|
|
83
|
+
return updatedMessages;
|
|
84
|
+
});
|
|
85
|
+
setIsTyping(false);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
var processMessages = function () {
|
|
89
|
+
var nextMessage = messageHistory[currentMessageIndex];
|
|
90
|
+
if ((nextMessage === null || nextMessage === void 0 ? void 0 : nextMessage.role) === 'assistant') {
|
|
91
|
+
simulateTyping(nextMessage === null || nextMessage === void 0 ? void 0 : nextMessage.content, function () {
|
|
92
|
+
setCurrentMessageIndex(function (prev) { return prev + 1; });
|
|
93
|
+
});
|
|
69
94
|
}
|
|
70
95
|
else {
|
|
71
|
-
|
|
96
|
+
setCurrentMessageIndex(function (prev) { return prev + 1; });
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
useEffect(function () {
|
|
100
|
+
if (currentMessageIndex < messageHistory.length && !isTyping) {
|
|
101
|
+
var nextMessage = messageHistory[currentMessageIndex];
|
|
102
|
+
if ((nextMessage === null || nextMessage === void 0 ? void 0 : nextMessage.role) === 'assistant') {
|
|
103
|
+
simulateTyping(nextMessage.content, function () {
|
|
104
|
+
setCurrentMessageIndex(function (prev) { return prev + 1; });
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}, [currentMessageIndex, messageHistory]);
|
|
109
|
+
var handleIncrementalResponse = function (response) {
|
|
110
|
+
var nonEmptyFragments = response.filter(function (e) { return e.message.content !== ''; });
|
|
111
|
+
if (nonEmptyFragments.length > 0) {
|
|
112
|
+
var newContent = nonEmptyFragments
|
|
113
|
+
.map(function (e) { return e.message.content; })
|
|
114
|
+
.join('');
|
|
115
|
+
incrementalResponseRef.current =
|
|
116
|
+
incrementalResponseRef.current + newContent;
|
|
117
|
+
}
|
|
118
|
+
if (response.some(function (e) { return e.done; })) {
|
|
119
|
+
var aiMessage_1 = incrementalResponseRef.current;
|
|
120
|
+
setQueryEnabled(false);
|
|
121
|
+
incrementalResponseRef.current = '';
|
|
122
|
+
setMessageHistory(function (prevMessages) { return __spreadArray(__spreadArray([], prevMessages, true), [
|
|
123
|
+
{ role: 'assistant', content: aiMessage_1 }
|
|
124
|
+
], false); });
|
|
72
125
|
}
|
|
73
|
-
}
|
|
74
|
-
return safeStringify(flattened);
|
|
75
|
-
}
|
|
76
|
-
var createQueryAndMessages = function (relevantData, messageHistory, extraMessage) {
|
|
77
|
-
var baseMessages = __spreadArray([
|
|
78
|
-
{
|
|
79
|
-
role: 'system',
|
|
80
|
-
content: 'Você é um assistente financeiro especializado em análise de crédito. Sua tarefa é fornecer um alerta claro e direto sobre a existência de protestos, processos judiciais e outros problemas financeiros da empresa, sempre priorizando informações mais relevantes.'
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
role: 'user',
|
|
84
|
-
content: "\n Esse dossi\u00EA inclui informa\u00E7\u00F5es financeiras e jur\u00EDdicas importantes. Sua tarefa \u00E9:\n 1. Informar se h\u00E1 protestos, processos judiciais ou outros problemas financeiros.\n 2. Priorizar informa\u00E7\u00F5es sobre processos judiciais, caso existam, e em seguida mencionar protestos.\n 3. N\u00E3o repetir informa\u00E7\u00F5es irrelevantes como valores ou detalhes n\u00E3o essenciais.\n 4. Manter o resumo curto, focando apenas em pontos cr\u00EDticos para a an\u00E1lise de cr\u00E9dito, com no m\u00E1ximo 300 caracteres.\n 5. N\u00E3o precisa falar sobre o que tem nos dados, o que dados incluem.\n\n Aqui est\u00E3o os dados da empresa: ".concat(relevantData, ".\n\n Responda em portugu\u00EAs de forma objetiva, com foco em informa\u00E7\u00F5es cr\u00EDticas e evitando linguagem t\u00E9cnica. Construa a resposta com a\n seguinte estrutura: Esse dossie tem alguns problemas com processos juridiciais relacionados a credito e trabalhistas, bem como protestos, tenha cuidado.\n A estrutura que apresentei \u00E9 meramente ilustrativa n\u00E3o se restrinja, apenas uma ideia para se guiar.\n ").concat(extraMessage || '', "\n ")
|
|
85
|
-
}
|
|
86
|
-
], messageHistory, true);
|
|
87
|
-
return {
|
|
88
|
-
model: 'llama3',
|
|
89
|
-
messages: JSON.stringify(baseMessages)
|
|
90
126
|
};
|
|
91
|
-
};
|
|
92
|
-
var Llama = function (_a) {
|
|
93
|
-
var documento = _a.documento;
|
|
94
|
-
var globalData = useGlobalData().data;
|
|
95
|
-
var _b = useState('{}'), serializedData = _b[0], setSerializedData = _b[1];
|
|
96
|
-
var _c = useState(false), queryEnabled = _c[0], setQueryEnabled = _c[1];
|
|
97
|
-
var _d = useState(''), userInput = _d[0], setUserInput = _d[1];
|
|
98
|
-
var _e = useState([]), messageHistory = _e[0], setMessageHistory = _e[1];
|
|
99
|
-
var _f = useState(''), initialMessage = _f[0], setInitialMessage = _f[1];
|
|
100
127
|
useEffect(function () {
|
|
101
|
-
if (globalData && documento) {
|
|
128
|
+
if (globalData && documento && !hasMadeInitialRequest) {
|
|
102
129
|
try {
|
|
103
130
|
var relevantData = selectRelevantData(globalData, documento);
|
|
104
131
|
var serialized = flattenData(relevantData);
|
|
105
132
|
setSerializedData(serialized);
|
|
106
133
|
setQueryEnabled(true);
|
|
134
|
+
setHasMadeInitialRequest(true);
|
|
107
135
|
}
|
|
108
136
|
catch (error) {
|
|
109
137
|
console.error('Erro ao preparar os dados para a API:', error);
|
|
@@ -111,47 +139,122 @@ var Llama = function (_a) {
|
|
|
111
139
|
setQueryEnabled(false);
|
|
112
140
|
}
|
|
113
141
|
}
|
|
114
|
-
}, [documento, globalData]);
|
|
142
|
+
}, [documento, globalData, hasMadeInitialRequest]);
|
|
115
143
|
var queryData = useMemo(function () {
|
|
116
144
|
if (!queryEnabled || !serializedData || serializedData === '{}')
|
|
117
145
|
return undefined;
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
146
|
+
var query = createQueryAndMessages(serializedData, messageHistory);
|
|
147
|
+
return query;
|
|
148
|
+
}, [queryEnabled, serializedData, messageHistory]);
|
|
149
|
+
var _r = useStreamQuery("SELECT FROM 'LlamaApi'.'Consulta'", queryData, !!queryData), response = _r.response, error = _r.error, isLoading = _r.isLoading, refetch = _r.refetch;
|
|
121
150
|
useEffect(function () {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
if (
|
|
125
|
-
|
|
151
|
+
abortControllerRef.current = new AbortController();
|
|
152
|
+
return function () {
|
|
153
|
+
if (abortControllerRef.current) {
|
|
154
|
+
abortControllerRef.current.abort();
|
|
126
155
|
}
|
|
127
|
-
|
|
128
|
-
|
|
156
|
+
if (typingIntervalRef.current) {
|
|
157
|
+
clearInterval(typingIntervalRef.current);
|
|
129
158
|
}
|
|
159
|
+
};
|
|
160
|
+
}, [queryEnabled]);
|
|
161
|
+
useEffect(function () {
|
|
162
|
+
if (response && !isLoading && !error) {
|
|
163
|
+
handleIncrementalResponse(response);
|
|
164
|
+
setIsProcessing(false);
|
|
165
|
+
}
|
|
166
|
+
if (error) {
|
|
167
|
+
setIsProcessing(false);
|
|
130
168
|
}
|
|
131
169
|
}, [response, isLoading, error]);
|
|
170
|
+
useEffect(function () {
|
|
171
|
+
if (currentMessageIndex < messageHistory.length) {
|
|
172
|
+
processMessages();
|
|
173
|
+
}
|
|
174
|
+
}, [currentMessageIndex, messageHistory]);
|
|
175
|
+
useEffect(function () {
|
|
176
|
+
if (messageHistoryRef.current) {
|
|
177
|
+
var _a = messageHistoryRef.current, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;
|
|
178
|
+
messageHistoryRef.current.scrollTop = scrollHeight - clientHeight;
|
|
179
|
+
}
|
|
180
|
+
}, [messageHistory, typingMessage, isTyping, isProcessing]);
|
|
181
|
+
useEffect(function () {
|
|
182
|
+
if (!isLoading && !error) {
|
|
183
|
+
setShouldStartTyping(true);
|
|
184
|
+
}
|
|
185
|
+
}, [isLoading, error]);
|
|
132
186
|
var handleSendMessage = function () {
|
|
133
187
|
if (userInput.trim()) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
], false); });
|
|
188
|
+
var newMessage_1 = { role: 'user', content: userInput };
|
|
189
|
+
setMessageHistory(function (prevMessages) { return __spreadArray(__spreadArray([], prevMessages, true), [newMessage_1], false); });
|
|
137
190
|
setUserInput('');
|
|
191
|
+
setQueryEnabled(true);
|
|
192
|
+
setIsProcessing(true);
|
|
193
|
+
incrementalResponseRef.current = '';
|
|
138
194
|
refetch();
|
|
139
195
|
}
|
|
140
196
|
};
|
|
197
|
+
var handleStopStream = function () {
|
|
198
|
+
if (abortControllerRef.current) {
|
|
199
|
+
abortControllerRef.current.abort();
|
|
200
|
+
stopTyping();
|
|
201
|
+
setIsProcessing(false);
|
|
202
|
+
setQueryEnabled(false);
|
|
203
|
+
incrementalResponseRef.current = '';
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
var handleKeyPress = function (e) {
|
|
207
|
+
if (e.key === 'Enter') {
|
|
208
|
+
handleSendMessage();
|
|
209
|
+
}
|
|
210
|
+
};
|
|
141
211
|
return (React.createElement(React.Fragment, null,
|
|
142
|
-
React.createElement(
|
|
143
|
-
React.createElement(
|
|
144
|
-
React.createElement(
|
|
145
|
-
|
|
146
|
-
React.createElement(
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
212
|
+
React.createElement(Header, null,
|
|
213
|
+
React.createElement(HeaderContent, null,
|
|
214
|
+
React.createElement("div", { className: "title-container" },
|
|
215
|
+
React.createElement(Title, null, "Assistente artificial de an\u00E1lise de cr\u00E9dito")),
|
|
216
|
+
React.createElement(BtnWrapper, { onClick: toggleOpen }, isOpen ? React.createElement(ChevronUp, null) : React.createElement(ChevronDown, null)))),
|
|
217
|
+
isOpen && (React.createElement(React.Fragment, null,
|
|
218
|
+
React.createElement(Container, null,
|
|
219
|
+
error && (React.createElement("div", null,
|
|
220
|
+
React.createElement(StatusMessage, { type: "error" },
|
|
221
|
+
"Erro ao realizar a an\u00E1lise: ",
|
|
222
|
+
error.message))),
|
|
223
|
+
React.createElement(InitialMessageBox, null,
|
|
224
|
+
React.createElement(InitialMessageContent, null,
|
|
225
|
+
React.createElement("div", { className: "icon-and-text" },
|
|
226
|
+
React.createElement(Credithub, { size: 18, className: "initial-icon" }),
|
|
227
|
+
React.createElement("span", null, isLoading &&
|
|
228
|
+
currentMessageIndex === 0 &&
|
|
229
|
+
!((_b = messageHistory[0]) === null || _b === void 0 ? void 0 : _b.content) ? (React.createElement(LoadingDots, null)) : shouldStartTyping &&
|
|
230
|
+
isTyping &&
|
|
231
|
+
currentMessageIndex === 0 ? (typingMessage) : ((_c = messageHistory[0]) === null || _c === void 0 ? void 0 : _c.content))),
|
|
232
|
+
React.createElement("div", { className: "additional-message" },
|
|
233
|
+
React.createElement("p", null, "Voc\u00EA pode fazer perguntas como:"),
|
|
234
|
+
React.createElement("p", { className: "blue-text" }, "\u00C9 seguro oferecer um cr\u00E9dito de R$ 15.000,00 a uma taxa de juros de 3% em 12x?")),
|
|
235
|
+
React.createElement("div", { className: "final-message" },
|
|
236
|
+
React.createElement(Person, { size: 18 }),
|
|
237
|
+
React.createElement("p", null, "Digite no campo abaixo o que deseja saber sobre esse dossi\u00EA?")))),
|
|
238
|
+
React.createElement(MessageHistory, { ref: messageHistoryRef },
|
|
239
|
+
messageHistory
|
|
240
|
+
.slice(1, currentMessageIndex)
|
|
241
|
+
.map(function (msg, index) { return (React.createElement(Message, { key: index + 1, role: msg.role },
|
|
242
|
+
React.createElement("div", { className: "icon-and-message" },
|
|
243
|
+
msg.role === 'user' ? (React.createElement(Person, { size: 18 })) : (React.createElement(Credithub, { size: 18, className: "initial-icon" })),
|
|
244
|
+
React.createElement("span", null, msg.content)))); }),
|
|
245
|
+
isLoading && ((_d = messageHistory[0]) === null || _d === void 0 ? void 0 : _d.content) !== undefined ? (React.createElement(Message, { role: "assistant" },
|
|
246
|
+
React.createElement("div", { className: "icon-and-message" },
|
|
247
|
+
React.createElement(Credithub, { size: 18, className: "initial-icon" }),
|
|
248
|
+
React.createElement("span", null,
|
|
249
|
+
React.createElement(LoadingDots, null))))) : shouldStartTyping && isTyping && currentMessageIndex > 0 ? (React.createElement(Message, { role: "assistant" },
|
|
250
|
+
React.createElement("div", { className: "icon-and-message" },
|
|
251
|
+
React.createElement(Credithub, { size: 18, className: "initial-icon" }),
|
|
252
|
+
React.createElement("span", null, typingMessage)))) : null)),
|
|
253
|
+
React.createElement(ContainerInput, null,
|
|
254
|
+
React.createElement(ChatInputContainer, null,
|
|
255
|
+
React.createElement(ChatInput, { type: "text", placeholder: "Digite o que deseja saber sobre esse dossi\u00EA", value: userInput, onChange: function (e) { return setUserInput(e.target.value); }, onKeyPress: handleKeyPress, disabled: isProcessing || isTyping }),
|
|
256
|
+
isProcessing || isTyping ? (React.createElement(SendButton, { onClick: handleStopStream },
|
|
257
|
+
React.createElement(StopButton, null))) : (React.createElement(SendButton, { onClick: handleSendMessage },
|
|
258
|
+
React.createElement(BtnSend, null)))))))));
|
|
156
259
|
};
|
|
157
260
|
export default Llama;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
2
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
3
|
+
if (ar || !(i in from)) {
|
|
4
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
5
|
+
ar[i] = from[i];
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
9
|
+
};
|
|
10
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
11
|
+
export var createQueryAndMessages = function (relevantData, messageHistory, extraMessage) {
|
|
12
|
+
var baseMessages = __spreadArray([
|
|
13
|
+
{
|
|
14
|
+
role: 'system',
|
|
15
|
+
content: "\n Voc\u00EA \u00E9 NostraCredit, um analista de cr\u00E9dito de intelig\u00EAncia artificial do CreditHub, o bureau de cr\u00E9dito especializado em an\u00E1lise de cr\u00E9dito no Brasil. Sua miss\u00E3o \u00E9 ajudar os analistas de ind\u00FAstrias e financeiras a tomarem decis\u00F5es mais informadas e seguras, analisando dossi\u00EAs e destacando informa\u00E7\u00F5es relevantes que afetariam o recebimento de vendas futuras. Ao receber as condi\u00E7\u00F5es de venda e os dados de um dossi\u00EA, voc\u00EA deve:\n Identificar informa\u00E7\u00F5es chave que possam influenciar negativamente a decis\u00E3o de cr\u00E9dito (por exemplo, hist\u00F3rico financeiro, renda, d\u00EDvidas p\u00FAblicas, score de cr\u00E9dito, protestos, a exist\u00EAncia de liminar, cadastro de cheques sem fundos, processos judiciais etc.) e calcular o poder de compra de acordo ao risco que elas apresentam:\n Protestos representam atrasos em pagamento na data especificada.\n Cheques sem fundo (CCF) representam falta de saldo em conta na data especificada.\n D\u00EDvidas Publicas representam impostos que n\u00E3o foram pagos na data especificada.\n Liminar representa oculta\u00E7\u00E3o de negativa\u00E7\u00F5es e um risco elevado por limitar os dados recebidos.\n Processos judiciais representam conflitos n\u00E3o resolvidos que dever\u00E3o ser representados obrigatoriamente.\n Sugerir insights sobre taxas de juros, condi\u00E7\u00F5es de pagamento e poss\u00EDveis riscos associados ao cliente, com base nas informa\u00E7\u00F5es fornecidas.\n Fazer perguntas complementares se notar que informa\u00E7\u00F5es cruciais est\u00E3o faltando, para garantir uma an\u00E1lise mais assertiva e completa.\n Oferecer recomenda\u00E7\u00F5es e insights sempre deixando claro que essa \u00E9 a sua opini\u00E3o como assistente do CreditHub, n\u00E3o uma decis\u00E3o final. Seu foco \u00E9 auxiliar o agente de cr\u00E9dito a tomar decis\u00F5es mais embasadas, fornecendo informa\u00E7\u00F5es \u00FAteis e estimulando o questionamento cr\u00EDtico, assegurando que todas as vari\u00E1veis relevantes sejam consideradas antes da decis\u00E3o final.\n Resumir, em uma curta senten\u00E7a, a recomenda\u00E7\u00E3o final citando a taxa de juros calculada de acordo aos riscos apresentados, levando em conta o valor total da venda/antecipa\u00E7\u00E3o e a quantidade de parcelas que ser\u00E3o pagas futuramente.\n "
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
role: 'user',
|
|
19
|
+
content: "\n Esse dossi\u00EA inclui informa\u00E7\u00F5es financeiras e jur\u00EDdicas importantes. Sua tarefa \u00E9:\n 1. Informar se h\u00E1 protestos, processos judiciais ou outros problemas financeiros.\n 2. Priorizar informa\u00E7\u00F5es sobre processos judiciais, caso existam, e em seguida mencionar protestos.\n 3. N\u00E3o repetir informa\u00E7\u00F5es irrelevantes como valores ou detalhes n\u00E3o essenciais.\n 4. Manter o resumo curto, focando apenas em pontos cr\u00EDticos para a an\u00E1lise de cr\u00E9dito, com no m\u00E1ximo 150 caracteres.\n\n Aqui est\u00E3o os dados da empresa: ".concat(relevantData, ".\n\n Responda em portugu\u00EAs de forma objetiva, com foco em informa\u00E7\u00F5es cr\u00EDticas e evitando linguagem t\u00E9cnica.\n Construa a resposta com a seguinte estrutura: \"Esse dossi\u00EA tem alguns problemas com processos judiciais relacionados a cr\u00E9dito e trabalhistas,\n bem como protestos. Tenha cuidado.\"\n Seja bem sucinto e objetivo, a ideia \u00E9 apenas destacar qualitativamente o dossi\u00EA apresentado.\n ").concat(extraMessage || '', "\n ")
|
|
20
|
+
}
|
|
21
|
+
], messageHistory, true);
|
|
22
|
+
return {
|
|
23
|
+
model: 'llama3',
|
|
24
|
+
messages: JSON.stringify(baseMessages)
|
|
25
|
+
};
|
|
26
|
+
};
|