Se quitan respuestas del asistente y se agrega boton de cerrar modal

This commit is contained in:
2025-11-25 15:21:32 -06:00
parent 93c79eee77
commit 29231206c0
3 changed files with 42 additions and 8 deletions

View File

@@ -258,9 +258,6 @@ export default function AIChatModal({ open, onClose, context, onAccept }) {
}
]
};
console.log("handleConversation -> payload:", payload);
const { data: invokeData, error } = await supabase.functions.invoke(
"modal-conversation",
{
@@ -295,9 +292,11 @@ export default function AIChatModal({ open, onClose, context, onAccept }) {
// 3) fallback
assistantText = assistantText || "Sin respuesta del modelo.";
console.log("💬 Respuesta detectada:", assistantText);
setMessages(prev => [
...prev,
{ role: "assistant", content: cleanAssistantResponse(assistantText) }
]);
setMessages(prev => [...prev, { role: "assistant", content: assistantText }]);
setAttachedFiles([]);
setAttachedPreviews([]);
@@ -406,10 +405,42 @@ export default function AIChatModal({ open, onClose, context, onAccept }) {
onClose();
}
};
const cleanAssistantResponse = (text) => {
if (!text) return text;
// Frases que quieres eliminar (puedes agregar más)
const patterns = [
/^claro[, ]*/i,
/^por supuesto[, ]*/i,
/^aquí tienes[, ]*/i,
/^con gusto[, ]*/i,
/^hola[, ]*/i,
/^perfecto[, ]*/i,
/^entendido[, ]*/i,
/^muy bien[, ]*/i,
/^ok[, ]*/i,
];
let cleaned = text.trim();
for (const p of patterns) {
cleaned = cleaned.replace(p, "").trim();
}
return cleaned;
};
return (
<Dialog open={open} onOpenChange={onClose}>
<DialogContent className="max-w-6xl w-[95vw] h-[85vh] p-6 flex flex-col">
<DialogContent className="max-w-6xl w-[95vw] h-[85vh] p-6 flex flex-col relative">
{/* Botón siempre visible */}
<button
onClick={onClose}
className="absolute top-3 right-3 text-gray-400 hover:text-gray-600 transition z-50"
>
</button>
<DialogHeader>
<DialogTitle>Asistente Inteligente</DialogTitle>
</DialogHeader>

View File

@@ -315,7 +315,10 @@ export function AcademicSections({ planId, color }: { planId: string; color?: st
section: iaContext?.title,
fieldKey: iaContext?.key,
originalText: iaContext?.content,
cont_conversation: `Eres un experto en craer planes de estudios basate en el id del plan ${planId} que se encuentra en la tabla plan_estudios con el mcp para realizar los cambios que se te soliciten`,
cont_conversation: `Eres un experto en craer planes de estudios basate en el id del plan ${planId} que se encuentra en la tabla plan_estudios con el mcp para realizar los cambios que se te soliciten Responde únicamente con la información solicitada.
No uses frases como “claro”, “por supuesto”, “aquí tienes”, “con gusto”, “hola”, “perfecto”.
No uses introducciones, despedidas ni texto de relleno.
Entrega solo el contenido útil.`,
}}
onAccept={(newText: string) => {
if (iaContext) {