diff --git a/frontend/src/pages/guide/Guide.tsx b/frontend/src/pages/guide/Guide.tsx
index 737597e..35c9190 100644
--- a/frontend/src/pages/guide/Guide.tsx
+++ b/frontend/src/pages/guide/Guide.tsx
@@ -1,6 +1,7 @@
import { useState, useEffect, useRef } from "react";
import { Input } from "../../components/ui/input";
import { Button } from "../../components/ui/button";
+import { Send, Bot, Sparkles } from "lucide-react"; // Ícones para melhor UX
const topics = [
"o que é cuidar",
@@ -36,7 +37,7 @@ const topics = [
"exercícios de mobilização passiva",
];
-function getRandomSuggestions(num: number = 6): string[] {
+function getRandomSuggestions(num: number = 5): string[] {
const shuffled = [...topics].sort(() => 0.5 - Math.random());
return shuffled.slice(0, num);
}
@@ -45,7 +46,7 @@ export default function Guide() {
const [messages, setMessages] = useState<{ text: string; isUser: boolean }[]>(
[
{
- text: 'Olá! Sou seu assistente virtual para tirar dúvidas sobre cuidados com idosos. Posso ajudar com informações baseadas no manual "Amar é Cuidar" da PUC Minas. Como posso ajudar você hoje?',
+ text: 'Olá! Sou seu assistente virtual D-Care. Tire suas dúvidas sobre cuidados com idosos baseadas no manual "Amar é Cuidar".',
isUser: false,
},
]
@@ -59,10 +60,6 @@ export default function Guide() {
(import.meta.env.REACT_APP_CHATBOT_BACKEND_URL as string) ||
"http://localhost:8888/query";
- /* const backendUrl =
- process.env.REACT_APP_CHATBOT_BACKEND_URL ||
- "http://chatbot_backend_dcare:8000/query"; */
-
useEffect(() => {
setSuggestions(getRandomSuggestions());
}, []);
@@ -76,15 +73,16 @@ export default function Guide() {
const sendMessage = async (question: string) => {
if (!question.trim()) return;
- setMessages((prev) => [...prev, { text: question, isUser: true }]);
- setInput("");
+ const currentInput = question;
+ setInput(""); // Limpa imediatamente para UX fluida
+ setMessages((prev) => [...prev, { text: currentInput, isUser: true }]);
setIsTyping(true);
try {
const response = await fetch(backendUrl, {
method: "POST",
headers: { "Content-Type": "application/json" },
- body: JSON.stringify({ question, top_k: 3 }),
+ body: JSON.stringify({ question: currentInput, top_k: 3 }),
});
if (!response.ok) throw new Error("Erro na resposta");
@@ -94,32 +92,42 @@ export default function Guide() {
let botResponse = "";
results.forEach((res: any) => {
- botResponse += `${res.topic} (${
+ // Formatação mais limpa
+ botResponse += `
`;
+ botResponse += `
${
+ res.topic
+ } (${
res.module || "Geral"
- })
`;
- botResponse += `${res.content}
`;
+ })
`;
+ botResponse += `
${res.content}
`;
+
if (res.confidence) {
- botResponse += `
Confiança: ${(res.confidence * 100).toFixed(
- 2
- )}%`;
- } else if (res.score) {
- botResponse += `
Score: ${res.score.toFixed(2)}`;
+ // Opcional: mostrar confiança apenas se for relevante para debug
+ // botResponse += `
Confiança: ${(res.confidence * 100).toFixed(0)}%`;
}
- botResponse += `
Fonte: Manual "Amar é Cuidar" - PUC Minas`;
+ botResponse += `
`;
});
+ if (!botResponse)
+ botResponse =
+ "Desculpe, não encontrei informações relevantes para essa dúvida.";
+ else
+ botResponse += `Fonte: Manual "Amar é Cuidar" - PUC Minas
`;
+
setMessages((prev) => [
...prev,
{
- text:
- botResponse || "Desculpe, não encontrei informações relevantes.",
+ text: botResponse,
isUser: false,
},
]);
} catch (error) {
setMessages((prev) => [
...prev,
- { text: "Desculpe, ocorreu um erro. Tente novamente.", isUser: false },
+ {
+ text: "Desculpe, ocorreu um erro de conexão. Tente novamente.",
+ isUser: false,
+ },
]);
} finally {
setIsTyping(false);
@@ -133,67 +141,98 @@ export default function Guide() {
};
return (
-
-
-
-
👵🏻👴🏻 ChatBot D-Care
-
- Baseado no manual "Amar é Cuidar" - PUC Minas
+ // Mudança 1: h-screen para mobile (h-[100dvh]) e bg ajustado
+
+ {/* Container Principal: Removemos bordas arredondadas no mobile para parecer app nativo */}
+
+ {/* HEADER: Mais compacto */}
+
+
+
+
+
+
ChatBot D-Care
+
+ Assistente Virtual
+
+
+ {/* AREA DE MENSAGENS */}
{messages.map((msg, index) => (
- ))}
-
- Digitando...
-
-
-
- {suggestions.map((sug, index) => (
-
sendMessage(sug)}
>
- {sug}
+
))}
+
+ {isTyping && (
+
+ )}
-
- setInput(e.target.value)}
- onKeyPress={handleKeyPress}
- placeholder="Digite sua dúvida sobre cuidados com idosos..."
- className="flex-1 p-3 border border-[#ccc] rounded-[25px] text-base outline-none mr-[10px]"
- />
-
-
-
- Baseado no manual "Amar é Cuidar" - PUC Minas Betim | Solução com
- embeddings locais
+
+ {/* SUGESTÕES E INPUT */}
+
+ {/* SUGESTÕES: Scroll Horizontal (Carousel) para economizar altura */}
+ {suggestions.length > 0 && (
+
+
+ Dicas:
+
+ {suggestions.map((sug, index) => (
+
+ ))}
+
+ )}
+
+ {/* INPUT AREA */}
+
+ setInput(e.target.value)}
+ onKeyPress={handleKeyPress}
+ placeholder="Digite sua dúvida..."
+ className="flex-1 bg-gray-50 border-gray-200 rounded-full px-4 focus-visible:ring-[#2c6fb5] focus-visible:ring-1"
+ />
+
+