From 071f8193418f0b86df454df91e9bf4a56e9c5d61 Mon Sep 17 00:00:00 2001 From: "Roberto.silva" Date: Thu, 29 Jan 2026 09:33:50 -0600 Subject: [PATCH] =?UTF-8?q?Redirecci=C3=B3n=20gobernada=20por=20la=20estru?= =?UTF-8?q?ctura=20fix=20#51?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/planes/$planId/_detalle/iaplan.tsx | 38 +++++++++++-------- src/routes/planes/$planId/_detalle/index.tsx | 12 ++++-- 2 files changed, 30 insertions(+), 20 deletions(-) diff --git a/src/routes/planes/$planId/_detalle/iaplan.tsx b/src/routes/planes/$planId/_detalle/iaplan.tsx index 96b8a41..3f0c8f7 100644 --- a/src/routes/planes/$planId/_detalle/iaplan.tsx +++ b/src/routes/planes/$planId/_detalle/iaplan.tsx @@ -87,27 +87,33 @@ function RouteComponent() { // 1. Transformar datos de la API para el menú de selección const availableFields = useMemo(() => { - if (!data?.datos) return [] - return Object.entries(data.datos).map(([key, value]) => ({ - key, - label: formatLabel(key), - value: String(value || ''), - })) + if (!data?.estructuras_plan?.definicion?.properties) return [] + return Object.entries(data.estructuras_plan.definicion.properties).map( + ([key, value]) => ({ + key, + label: value.title, + value: String(value.description || ''), + }), + ) }, [data]) // 2. Manejar el estado inicial si viene de "Datos Generales" useEffect(() => { const state = routerState.location.state as any - if (state?.prefill && availableFields.length > 0) { - // Intentamos encontrar qué campo es por su valor o si mandaste el fieldKey - const field = availableFields.find( - (f) => f.value === state.prefill || f.key === state.fieldKey, - ) - if (field && !selectedFields.find((sf) => sf.key === field.key)) { - setSelectedFields([field]) - } - setInput(`Mejora este campo: ${field?.label} `) + if (!state?.campo_edit || availableFields.length === 0) return + + const field = availableFields.find( + (f) => + f.value === state.campo_edit.label || f.key === state.campo_edit.clave, + ) + + if (field && !selectedFields.some((sf) => sf.key === field.key)) { + setSelectedFields([field]) } + + setInput((prev) => + injectFieldsIntoInput(prev || 'Mejora este campo:', field ? [field] : []), + ) }, [availableFields]) // 3. Lógica para el disparador ":" @@ -127,7 +133,7 @@ function RouteComponent() { ) => { const baseText = input.replace(/\[[^\]]+]/g, '').trim() - const tags = fields.map((f) => `[${f.label}]`).join(' ') + const tags = fields.map((f) => `${f.label}`).join(' ') return `${baseText} ${tags}`.trim() } diff --git a/src/routes/planes/$planId/_detalle/index.tsx b/src/routes/planes/$planId/_detalle/index.tsx index 1d89976..a7b303c 100644 --- a/src/routes/planes/$planId/_detalle/index.tsx +++ b/src/routes/planes/$planId/_detalle/index.tsx @@ -81,6 +81,7 @@ function DatosGeneralesPage() { const rawValue = valores[key] return { + clave: key, id: (index + 1).toString(), label: schema?.title || formatLabel(key), helperText: schema?.description || '', @@ -131,14 +132,16 @@ function DatosGeneralesPage() { // toast.success('Cambios guardados localmente') } - const handleIARequest = (descripcion: string) => { + const handleIARequest = (clave: string) => { + console.log(clave) + navigate({ to: '/planes/$planId/iaplan', params: { planId: planId, // o dinámico }, state: { - prefill: descripcion, + campo_edit: clave, } as any, }) } @@ -154,8 +157,9 @@ function DatosGeneralesPage() {
- {campos.map((campo) => { + {campos.map((campo, key) => { const isEditing = editingId === campo.id + console.log(campo) return (
handleIARequest(campo.value)} + onClick={() => handleIARequest(campo)} >