From 751038be0f07b9dab6fb4f041dccf8ef43a43f12 Mon Sep 17 00:00:00 2001 From: Rafael Lopes Date: Tue, 26 May 2026 11:35:17 -0300 Subject: [PATCH] FEAT: Incrementa gestao do fluxo do bot --- .../components/KnowledgeBasePanel.jsx | 220 ++++++++++++++---- 1 file changed, 181 insertions(+), 39 deletions(-) diff --git a/src/modules/management/components/KnowledgeBasePanel.jsx b/src/modules/management/components/KnowledgeBasePanel.jsx index 6fa103f..acb81ee 100644 --- a/src/modules/management/components/KnowledgeBasePanel.jsx +++ b/src/modules/management/components/KnowledgeBasePanel.jsx @@ -78,6 +78,32 @@ function collectPublishWarnings(node, warnings = []) { return warnings; } +function getFlowNodeWidth(level) { + return level >= 2 ? 260 : 300; +} + +function getFlowChildGap(level) { + return level >= 2 ? 56 : 40; +} + +function getFlowSubtreeWidth(node, level = 0) { + if (!node) return getFlowNodeWidth(level); + const children = node.children || []; + const nodeWidth = getFlowNodeWidth(level); + const horizontalPadding = level >= 2 ? 56 : 72; + + if (!children.length) { + return nodeWidth + horizontalPadding; + } + + const gap = getFlowChildGap(level); + const childrenWidth = + children.reduce((total, child) => total + getFlowSubtreeWidth(child, level + 1), 0) + + Math.max(0, children.length - 1) * gap; + + return Math.max(nodeWidth + horizontalPadding, childrenWidth); +} + function WhatsAppPreview({ message }) { return (
= 2; + const nodeWidth = getFlowNodeWidth(level); + const visibleKeywordLimit = isDeep ? 4 : 8; + const childGap = getFlowChildGap(level); + const subtreeWidth = getFlowSubtreeWidth(node, level); + const firstChildWidth = node.children?.length ? getFlowSubtreeWidth(node.children[0], level + 1) : 0; + const lastChildWidth = node.children?.length + ? getFlowSubtreeWidth(node.children[node.children.length - 1], level + 1) + : 0; + const accentColor = isRoot + ? 'var(--color-primary)' + : isAgent + ? '#3260b3' + : isClose + ? '#0f8f77' + : 'var(--color-highlight)'; + const nodeMessage = node.message_text || (isAgent ? '' : 'Sem mensagem configurada.'); return ( -
+
- - {nodeTypeLabel(node.node_type)} - +
+ + {nodeTypeLabel(node.node_type)} + + + NĂ­vel {level + 1} + +
{node.title} + {!isRoot && parentTitle ? ( + + abaixo de: {parentTitle} + + ) : null}
{!isAgent && !isClose && onAdd ? (