From 0e710f96370b80dafc732be24ac3731a4cdd53c0 Mon Sep 17 00:00:00 2001 From: "Roberto.silva" Date: Wed, 25 Mar 2026 09:38:09 -0600 Subject: [PATCH] =?UTF-8?q?Que=20sirvan=20la=20redirecci=C3=B3n=20de=20la?= =?UTF-8?q?=20IA=20fix=20#192?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../detalle/AsignaturaDetailPage.tsx | 47 ++++++++++++------- .../asignaturas/detalle/IAAsignaturaTab.tsx | 28 ++++++++++- 2 files changed, 56 insertions(+), 19 deletions(-) diff --git a/src/components/asignaturas/detalle/AsignaturaDetailPage.tsx b/src/components/asignaturas/detalle/AsignaturaDetailPage.tsx index 9205bdb..cf97662 100644 --- a/src/components/asignaturas/detalle/AsignaturaDetailPage.tsx +++ b/src/components/asignaturas/detalle/AsignaturaDetailPage.tsx @@ -318,6 +318,7 @@ function DatosGenerales({
{/* Tarjeta de Requisitos */} { - console.log(placeholder) + console.log(campoClave) + + let targetClave = campoClave + if (type === 'evaluation' && !targetClave) { + targetClave = 'criterios_de_evaluacion' + } + + if (targetClave === 'contenido') { + targetClave = 'contenido_tematico' + } + console.log(targetClave) + console.log(asignaturaId) - // Añadimos un timestamp a la state para forzar que la navegación - // genere una nueva ubicación incluso si la ruta y los params son iguales. navigate({ to: '/planes/$planId/asignaturas/$asignaturaId/iaasignatura', params: { planId, asignaturaId: asignaturaId! }, state: { activeTab: 'ia', - prefillCampo: campoClave, + prefillCampo: targetClave, prefillContenido: data, _ts: Date.now(), } as any, @@ -581,19 +592,21 @@ function InfoCard({ {!isEditing && (
- - - - - Mejorar con IA - + {type !== 'requirements' && ( + + + + + Mejorar con IA + + )} diff --git a/src/components/asignaturas/detalle/IAAsignaturaTab.tsx b/src/components/asignaturas/detalle/IAAsignaturaTab.tsx index 807bb69..8bc30a6 100644 --- a/src/components/asignaturas/detalle/IAAsignaturaTab.tsx +++ b/src/components/asignaturas/detalle/IAAsignaturaTab.tsx @@ -1,5 +1,5 @@ import { useQueryClient } from '@tanstack/react-query' -import { useParams } from '@tanstack/react-router' +import { useLocation, useParams } from '@tanstack/react-router' import { Sparkles, Send, @@ -58,7 +58,7 @@ export function IAAsignaturaTab() { const { asignaturaId } = useParams({ from: '/planes/$planId/asignaturas/$asignaturaId', }) - + const location = useLocation() // --- ESTADOS --- const [activeChatId, setActiveChatId] = useState( undefined, @@ -269,6 +269,30 @@ export function IAAsignaturaTab() { ) }, [availableFields, input, showSuggestions]) + useEffect(() => { + const state = location.state as any + + // Verificamos si existe el timestamp (_ts) para saber que es una acción nueva + if (state?.activeTab === 'ia' && state?._ts) { + // Si el campo no está ya seleccionado, lo agregamos + if (state.prefillCampo) { + const fieldToSelect = availableFields.find( + (f) => f.key === state.prefillCampo, + ) + + if (fieldToSelect) { + setSelectedFields([fieldToSelect]) // Reemplaza o añade según prefieras + + // Generamos un prompt inicial automático + const autoPrompt = `Mejora el contenido de: ${fieldToSelect.label}` + setInput(autoPrompt) + + // Opcional: Si quieres que dispare la IA inmediatamente al llegar: + // handleSend(autoPrompt) + } + } + } + }, [location.state, availableFields]) // 2. Efecto para cerrar con ESC useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { -- 2.52.0