xertica-ui 1.3.2 → 1.3.4

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.
@@ -121,6 +121,7 @@ interface AssistenteXerticaProps {
121
121
  }
122
122
 
123
123
  import type { Message, Conversa, SearchResult, SearchSource, SearchCommand, Sugestao, MockResponse } from '../contexts/AssistenteContext';
124
+ import { sugestoesPadrao, sugestoesRicas, gerarResposta } from './assistant-utils';
124
125
 
125
126
  // ... (existing code)
126
127
 
@@ -136,104 +137,13 @@ interface AssistenteXerticaProps {
136
137
  // ... (existing code)
137
138
 
138
139
 
139
- const sugestoesPadrao: Sugestao[] = [
140
- { id: '1', texto: 'O que posso pedir para você fazer?' },
141
- { id: '2', texto: 'O que você faz?' },
142
- { id: '3', texto: 'Com quais projetos devo me preocupar agora?' },
143
- { id: '4', texto: 'Qual meu próximo projeto?' },
144
- { id: '5', texto: 'Qual projetos está tendo o melhor desempenho?' }
145
- ];
146
140
 
147
- const sugestoesRicas: Sugestao[] = [
148
- { id: 'rich-1', texto: 'Ver exemplo de Gráfico', icon: <BarChart3 className="w-4 h-4 mr-2" /> },
149
- { id: 'rich-2', texto: 'Ver exemplo de Imagem', icon: <ImageIcon className="w-4 h-4 mr-2" /> },
150
- { id: 'rich-3', texto: 'Ver exemplo de Tabela', icon: <TableIcon className="w-4 h-4 mr-2" /> },
151
- { id: 'rich-4', texto: 'Ver exemplo de Documento', icon: <FileText className="w-4 h-4 mr-2" /> }
152
- ];
153
141
 
154
142
  // Respostas simuladas da IA
155
- const gerarResposta = (mensagemUsuario: string, customResponses?: MockResponse[]): string | Partial<Message> => {
156
- const mensagemLower = mensagemUsuario.toLowerCase();
157
143
 
158
- // 1. Verificar respostas customizadas primeiro
159
- if (customResponses && customResponses.length > 0) {
160
- for (const mock of customResponses) {
161
- const trigger = mock.trigger;
162
- let match = false;
163
144
 
164
- if (trigger instanceof RegExp) {
165
- match = trigger.test(mensagemUsuario);
166
- } else {
167
- match = mensagemLower.includes(trigger.toLowerCase());
168
- }
169
145
 
170
- if (match) {
171
- return mock.response;
172
- }
173
- }
174
- }
175
-
176
- const mensagemOriginal = mensagemUsuario;
177
-
178
- if (mensagemLower.includes('o que') && (mensagemLower.includes('fazer') || mensagemLower.includes('pedir'))) {
179
- return 'Posso ajudar você com diversas tarefas! Posso:\n\n• Analisar dados e métricas dos seus projetos\n• Responder perguntas sobre performance e resultados\n• Sugerir otimizações e melhorias\n• Gerar relatórios e documentação\n• Ajudar no planejamento de sprints\n• E muito mais!\n\nQual tarefa você gostaria de realizar primeiro?';
180
- }
181
- // ... (rest of the function)
182
-
183
- if (mensagemLower.includes('o que você faz') || mensagemLower.includes('quem é você')) {
184
- return 'Olá! Sou o Assistente Xertica, uma IA desenvolvida para ajudar você a gerenciar projetos, analisar dados e otimizar processos. Estou aqui 24/7 para responder suas perguntas e auxiliar nas suas tarefas diárias.\n\nPosso processar documentos, analisar áudios e imagens, além de fornecer insights baseados nos dados da plataforma.';
185
- }
186
-
187
- if (mensagemLower.includes('projeto') && (mensagemLower.includes('preocupar') || mensagemLower.includes('atenção'))) {
188
- return 'Com base na análise dos seus projetos ativos, recomendo focar nos seguintes:\n\n1. **Projeto Alpha** - 15% acima do prazo, requer atenção imediata\n2. **Sistema Beta** - Performance crítica, necessita otimização\n3. **Mobile Gamma** - Aguardando aprovações há 5 dias\n\nGostaria de mais detalhes sobre algum deles?';
189
- }
190
-
191
- if (mensagemLower.includes('próximo projeto') || mensagemLower.includes('próxima tarefa')) {
192
- return 'Seu próximo projeto prioritário é o **Sistema de Analytics V2**.\n\n📅 Início previsto: Próxima segunda-feira\n👥 Time: 5 desenvolvedores\n⏱️ Duração estimada: 3 sprints\n\nJá preparei um roadmap inicial. Gostaria de revisar?';
193
- }
194
-
195
- if (mensagemLower.includes('desempenho') || mensagemLower.includes('performance') || mensagemLower.includes('melhor')) {
196
- return 'Analisando os dados de performance dos últimos 30 dias:\n\n🏆 **Melhor Performance:**\n• Projeto Dashboard 2.0: +35% eficiência\n• Sistema CRM: -40% tempo de resposta\n• App Mobile: 4.8★ rating (+0.5)\n\n📊 Todos estão acima das metas estabelecidas. Parab��ns!\n\nQuer ver métricas detalhadas?';
197
- }
198
-
199
- if (mensagemLower.includes('olá') || mensagemLower.includes('oi') || mensagemLower.includes('bom dia') || mensagemLower.includes('boa tarde') || mensagemLower.includes('boa noite')) {
200
- return 'Olá! 👋 Como posso ajudar você hoje? Estou pronto para auxiliar com análises, relatórios ou responder suas dúvidas sobre os projetos.';
201
- }
202
-
203
- if (mensagemLower.includes('obrigado') || mensagemLower.includes('obrigada')) {
204
- return 'Por nada! Estou aqui sempre que precisar. 😊 Se tiver mais alguma dúvida ou precisar de ajuda, é só chamar!';
205
- }
206
-
207
- // Respostas para ações especiais
208
- if (mensagemLower.includes('criar documento')) {
209
- const tema = mensagemOriginal.replace(/📄 \[Criar documento\]/gi, '').trim();
210
- return `📝 Documento criado com sucesso!\\n\\nGerei um documento completo sobre "${tema}" com as seguintes seções:\\n\\n• Introdução e contexto\\n• Análise detalhada\\n• Dados e métricas relevantes\\n• Conclusões e recomendações\\n• Próximos passos\\n\\nO documento está pronto para revisão e pode ser editado conforme necessário. Gostaria de adicionar ou modificar alguma seção?`;
211
- }
212
-
213
- if (mensagemLower.includes('gerar podcast')) {
214
- const tema = mensagemOriginal.replace(/🎙️ \[Gerar podcast\]/gi, '').trim();
215
- return `🎙️ Preparando podcast sobre "${tema}"...\\n\\nEstou processando o conteúdo e gerando um roteiro de podcast profissional com:\\n\\n• Introdução envolvente\\n• Desenvolvimento do tema\\n• Exemplos práticos\\n• Conclusão e insights\\n\\nO áudio será gerado em instantes. Aguarde...`;
216
- }
217
-
218
- if (mensagemLower.includes('pesquisar')) {
219
- const termo = mensagemOriginal.replace(/🔍 \[Pesquisar\]/gi, '').trim();
220
- return `🔍 Resultados da pesquisa sobre "${termo}"\\n\\n**Encontrei as seguintes informações relevantes:**\\n\\n1. **Documentação interna** - 12 resultados\\n Guias e manuais relacionados ao tema\\n\\n2. **Projetos relacionados** - 8 projetos\\n Incluindo Analytics v2 e Dashboard Pro\\n\\n3. **Discussões em equipe** - 15 menções\\n Últimas conversas sobre o assunto\\n\\nGostaria de ver mais detalhes sobre algum desses resultados?`;
221
- }
222
-
223
- if (mensagemLower.includes('arquivo') || mensagemLower.includes('documento')) {
224
- return 'Entendi que você deseja trabalhar com arquivos. Posso analisar diversos tipos de documentos:\n\n📄 Documentos de texto (PDF, DOCX)\n📊 Planilhas (XLSX, CSV)\n📈 Relatórios e apresentações\n\nBasta enviá-los usando o botão de anexo (📎) e terei prazer em analisá-los para você!';
225
- }
226
-
227
- // Resposta genérica inteligente
228
- const respostasGenericas = [
229
- 'Entendo sua questão. Com base nos dados disponíveis na plataforma Xertica, posso fornecer análises detalhadas sobre esse tema. Poderia me dar mais contexto para que eu possa ajudá-lo melhor?',
230
- 'Interessante! Deixe-me processar isso... Com base no seu histórico e nos dados do sistema, recomendo que possamos explorar essa questão em mais detalhes. O que especificamente você gostaria de saber?',
231
- 'Ótima pergunta! Para te dar a melhor resposta possível, preciso entender melhor o contexto. Você pode me fornecer mais informações sobre o que está buscando?',
232
- 'Estou analisando sua solicitação. Baseado nos dados do sistema Xertica, posso te ajudar com isso. Você gostaria de uma análise rápida ou um relatório completo?'
233
- ];
234
-
235
- return respostasGenericas[Math.floor(Math.random() * respostasGenericas.length)];
236
- };
146
+
237
147
 
238
148
 
239
149
  export function AssistenteXertica({
@@ -2,15 +2,24 @@ import React from 'react';
2
2
  import { useLocation, useNavigate } from 'react-router';
3
3
  import { Sidebar } from './Sidebar';
4
4
  import { HomeContent } from './HomeContent';
5
- import { AssistenteXertica } from './AssistenteXertica';
5
+ import { XerticaAssistant } from './ui/xertica-assistant';
6
+ import { generateDemoResponse } from '../utils/demo-responses';
6
7
  import { routes } from '../routes';
8
+ import { useLayout } from '../contexts/LayoutContext';
7
9
 
8
- interface HomePageProps {
9
- user: { email: string } | null;
10
- onLogout: () => void;
11
- }
10
+ const richSuggestions = [
11
+ { id: 'chart-1', texto: 'Ver análise de performance' },
12
+ { id: 'table-1', texto: 'Gerar relatório de projetos' },
13
+ { id: 'doc-1', texto: 'Criar documento de requisitos' },
14
+ { id: 'pod-1', texto: 'Gerar podcast do resumo diário' }
15
+ ];
16
+
17
+ const feedbackOptions = [
18
+ 'Não era o que eu procurava',
19
+ 'Informação incorreta',
20
+ 'Resposta incompleta'
21
+ ];
12
22
 
13
- import { useLayout } from '../contexts/LayoutContext';
14
23
 
15
24
  interface HomePageProps {
16
25
  user: { email: string } | null;
@@ -34,10 +43,14 @@ export function HomePage({ user, onLogout }: HomePageProps) {
34
43
  routes={routes}
35
44
  />
36
45
  <HomeContent />
37
- <AssistenteXertica
46
+ <XerticaAssistant
38
47
  isExpanded={assistenteExpanded}
39
48
  onToggle={toggleAssistente}
40
- onToggleWithTab={toggleAssistenteWithTab}
49
+ defaultTab="chat"
50
+ demoMode={true}
51
+ responseGenerator={generateDemoResponse}
52
+ richSuggestions={richSuggestions}
53
+ feedbackOptions={feedbackOptions}
41
54
  />
42
55
  </div>
43
56
  );
@@ -0,0 +1,101 @@
1
+ import type { Message, MockResponse, Sugestao } from '../contexts/AssistenteContext';
2
+ import { BarChart3, ImageIcon, Table as TableIcon, FileText } from 'lucide-react';
3
+ import React from 'react';
4
+
5
+ export const sugestoesPadrao: Sugestao[] = [
6
+ { id: '1', texto: 'O que posso pedir para você fazer?' },
7
+ { id: '2', texto: 'O que você faz?' },
8
+ { id: '3', texto: 'Com quais projetos devo me preocupar agora?' },
9
+ { id: '4', texto: 'Qual meu próximo projeto?' },
10
+ { id: '5', texto: 'Qual projetos está tendo o melhor desempenho?' }
11
+ ];
12
+
13
+ export const sugestoesRicas: Sugestao[] = [
14
+ { id: 'rich-1', texto: 'Ver exemplo de Gráfico', icon: React.createElement(BarChart3, { className: "w-4 h-4 mr-2" }) },
15
+ { id: 'rich-2', texto: 'Ver exemplo de Imagem', icon: React.createElement(ImageIcon, { className: "w-4 h-4 mr-2" }) },
16
+ { id: 'rich-3', texto: 'Ver exemplo de Tabela', icon: React.createElement(TableIcon, { className: "w-4 h-4 mr-2" }) },
17
+ { id: 'rich-4', texto: 'Ver exemplo de Documento', icon: React.createElement(FileText, { className: "w-4 h-4 mr-2" }) }
18
+ ];
19
+
20
+ // Respostas simuladas da IA
21
+ export const gerarResposta = (mensagemUsuario: string, customResponses?: MockResponse[]): string | Partial<Message> => {
22
+ const mensagemLower = mensagemUsuario.toLowerCase();
23
+
24
+ // 1. Verificar respostas customizadas primeiro
25
+ if (customResponses && customResponses.length > 0) {
26
+ for (const mock of customResponses) {
27
+ const trigger = mock.trigger;
28
+ let match = false;
29
+
30
+ if (trigger instanceof RegExp) {
31
+ match = trigger.test(mensagemUsuario);
32
+ } else {
33
+ match = mensagemLower.includes(trigger.toLowerCase());
34
+ }
35
+
36
+ if (match) {
37
+ return mock.response;
38
+ }
39
+ }
40
+ }
41
+
42
+ const mensagemOriginal = mensagemUsuario;
43
+
44
+ if (mensagemLower.includes('o que') && (mensagemLower.includes('fazer') || mensagemLower.includes('pedir'))) {
45
+ return 'Posso ajudar você com diversas tarefas! Posso:\n\n• Analisar dados e métricas dos seus projetos\n• Responder perguntas sobre performance e resultados\n• Sugerir otimizações e melhorias\n• Gerar relatórios e documentação\n• Ajudar no planejamento de sprints\n• E muito mais!\n\nQual tarefa você gostaria de realizar primeiro?';
46
+ }
47
+
48
+ if (mensagemLower.includes('o que você faz') || mensagemLower.includes('quem é você')) {
49
+ return 'Olá! Sou o Assistente Xertica, uma IA desenvolvida para ajudar você a gerenciar projetos, analisar dados e otimizar processos. Estou aqui 24/7 para responder suas perguntas e auxiliar nas suas tarefas diárias.\n\nPosso processar documentos, analisar áudios e imagens, além de fornecer insights baseados nos dados da plataforma.';
50
+ }
51
+
52
+ if (mensagemLower.includes('projeto') && (mensagemLower.includes('preocupar') || mensagemLower.includes('atenção'))) {
53
+ return 'Com base na análise dos seus projetos ativos, recomendo focar nos seguintes:\n\n1. **Projeto Alpha** - 15% acima do prazo, requer atenção imediata\n2. **Sistema Beta** - Performance crítica, necessita otimização\n3. **Mobile Gamma** - Aguardando aprovações há 5 dias\n\nGostaria de mais detalhes sobre algum deles?';
54
+ }
55
+
56
+ if (mensagemLower.includes('próximo projeto') || mensagemLower.includes('próxima tarefa')) {
57
+ return 'Seu próximo projeto prioritário é o **Sistema de Analytics V2**.\n\n📅 Início previsto: Próxima segunda-feira\n👥 Time: 5 desenvolvedores\n⏱️ Duração estimada: 3 sprints\n\nJá preparei um roadmap inicial. Gostaria de revisar?';
58
+ }
59
+
60
+ if (mensagemLower.includes('desempenho') || mensagemLower.includes('performance') || mensagemLower.includes('melhor')) {
61
+ return 'Analisando os dados de performance dos últimos 30 dias:\n\n🏆 **Melhor Performance:**\n• Projeto Dashboard 2.0: +35% eficiência\n• Sistema CRM: -40% tempo de resposta\n• App Mobile: 4.8★ rating (+0.5)\n\n📊 Todos estão acima das metas estabelecidas. Parabéns!\n\nQuer ver métricas detalhadas?';
62
+ }
63
+
64
+ if (mensagemLower.includes('olá') || mensagemLower.includes('oi') || mensagemLower.includes('bom dia') || mensagemLower.includes('boa tarde') || mensagemLower.includes('boa noite')) {
65
+ return 'Olá! 👋 Como posso ajudar você hoje? Estou pronto para auxiliar com análises, relatórios ou responder suas dúvidas sobre os projetos.';
66
+ }
67
+
68
+ if (mensagemLower.includes('obrigado') || mensagemLower.includes('obrigada')) {
69
+ return 'Por nada! Estou aqui sempre que precisar. 😊 Se tiver mais alguma dúvida ou precisar de ajuda, é só chamar!';
70
+ }
71
+
72
+ // Respostas para ações especiais
73
+ if (mensagemLower.includes('criar documento')) {
74
+ const tema = mensagemOriginal.replace(/📄 \[Criar documento\]/gi, '').trim();
75
+ return `📝 Documento criado com sucesso!\\n\\nGerei um documento completo sobre "${tema}" com as seguintes seções:\\n\\n• Introdução e contexto\\n• Análise detalhada\\n• Dados e métricas relevantes\\n• Conclusões e recomendações\\n• Próximos passos\\n\\nO documento está pronto para revisão e pode ser editado conforme necessário. Gostaria de adicionar ou modificar alguma seção?`;
76
+ }
77
+
78
+ if (mensagemLower.includes('gerar podcast')) {
79
+ const tema = mensagemOriginal.replace(/🎙️ \[Gerar podcast\]/gi, '').trim();
80
+ return `🎙️ Preparando podcast sobre "${tema}"...\\n\\nEstou processando o conteúdo e gerando um roteiro de podcast profissional com:\\n\\n• Introdução envolvente\\n• Desenvolvimento do tema\\n• Exemplos práticos\\n• Conclusão e insights\\n\\nO áudio será gerado em instantes. Aguarde...`;
81
+ }
82
+
83
+ if (mensagemLower.includes('pesquisar')) {
84
+ const termo = mensagemOriginal.replace(/🔍 \[Pesquisar\]/gi, '').trim();
85
+ return `🔍 Resultados da pesquisa sobre "${termo}"\\n\\n**Encontrei as seguintes informações relevantes:**\\n\\n1. **Documentação interna** - 12 resultados\\n Guias e manuais relacionados ao tema\\n\\n2. **Projetos relacionados** - 8 projetos\\n Incluindo Analytics v2 e Dashboard Pro\\n\\n3. **Discussões em equipe** - 15 menções\\n Últimas conversas sobre o assunto\\n\\nGostaria de ver mais detalhes sobre algum desses resultados?`;
86
+ }
87
+
88
+ if (mensagemLower.includes('arquivo') || mensagemLower.includes('documento')) {
89
+ return 'Entendi que você deseja trabalhar com arquivos. Posso analisar diversos tipos de documentos:\n\n📄 Documentos de texto (PDF, DOCX)\n📊 Planilhas (XLSX, CSV)\n📈 Relatórios e apresentações\n\nBasta enviá-los usando o botão de anexo (📎) e terei prazer em analisá-los para você!';
90
+ }
91
+
92
+ // Resposta genérica inteligente
93
+ const respostasGenericas = [
94
+ 'Entendo sua questão. Com base nos dados disponíveis na plataforma Xertica, posso fornecer análises detalhadas sobre esse tema. Poderia me dar mais contexto para que eu possa ajudá-lo melhor?',
95
+ 'Interessante! Deixe-me processar isso... Com base no seu histórico e nos dados do sistema, recomendo que possamos explorar essa questão em mais detalhes. O que especificamente você gostaria de saber?',
96
+ 'Ótima pergunta! Para te dar a melhor resposta possível, preciso entender melhor o contexto. Você pode me fornecer mais informações sobre o que está buscando?',
97
+ 'Estou analisando sua solicitação. Baseado nos dados do sistema Xertica, posso te ajudar com isso. Você gostaria de uma análise rápida ou um relatório completo?'
98
+ ];
99
+
100
+ return respostasGenericas[Math.floor(Math.random() * respostasGenericas.length)];
101
+ };