El formulario de la landing ahora crea un lead real en BD y redirige a
/solicitud/[id]/fotos, donde el cliente sube fotos y datos de la reforma.
El orquestador simula los pasos de IA (pre-llamada, llamada, render) y
calcula el presupuesto DE VERDAD con el catálogo del reformista, dejando
el lead listo en el panel con render y desglose.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
La sección Presupuesto (PDF) usaba lead.pdfUrl, que nunca se rellena en el
MVP, así que siempre mostraba "Aún no generado". Ahora apunta a la ruta
on-demand /panel/[id]/presupuesto cuando existe desglose, con un parámetro
?download=1 que fuerza Content-Disposition: attachment.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Las filas del catálogo, la configuración general y el formulario de alta
no estaban pensados para móvil (input de precio descolgado, etiquetas que
desalineaban la cuadrícula, campos sueltos). Ahora las filas apilan
nombre + metadatos + controles de forma limpia en móvil y mantienen la
fila única en escritorio; la cuadrícula usa etiquetas legibles y alinea
los inputs; el alta es una cuadrícula de 2 columnas en móvil.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Las filas del catálogo y la cabecera CSV se desbordaban horizontalmente
en móvil (botones Guardar/Borrar fuera de pantalla), y ese overflow
horizontal desestabilizaba la barra de navegación fija. Las filas ahora
hacen wrap y el bloque <code> rompe palabra.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
El body usaba overflow-x:hidden, lo que forzaba overflow-y a auto y creaba
un contenedor de scroll ambiguo que rompía position:fixed (la barra
aparecía tarde y no se anclaba abajo, sobre todo en iOS Safari). Se cambia
a overflow-x:clip, que recorta el desbordamiento horizontal sin crear
contenedor de scroll.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Sustituye el menú hamburguesa por una barra fija inferior con iconos y
etiquetas (thumb-friendly, siempre visible), manteniendo la nav horizontal
en escritorio.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Extrae un AppNav reutilizable con menú hamburguesa desplegable en móvil
y resaltado del enlace activo. Antes la marca y los enlaces se apretaban
en una sola fila en pantallas pequeñas; ahora el nombre de empresa se
oculta en móvil y los enlaces pasan a un desplegable.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Adelanta de F1.5 a F2 la validación pre-envío: el panel permite elegir
modo de envío (automático/revisión), editar los conceptos del
presupuesto y enviar al cliente por WhatsApp (simulado).
Añade datos de empresa y logo configurables en /panel/empresa y genera
el presupuesto como PDF real descargable con esa marca vía
@react-pdf/renderer, sustituyendo la vista HTML imprimible.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Calcula y persiste el desglose de Roberto Salas con computeBudget para
que el detalle muestre un presupuesto generado real al abrir el panel.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Guard euro/altura inputs in precios actions so empty or non-numeric
form values return a Spanish error instead of writing NaN and throwing
a 500. Remove the now-unused formatEuros import flagged by ESLint.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Modela el funnel del lead en dos dimensiones (pipeline_stage técnico
de 7 pasos + estado comercial de 6 estados) y siembra 11 leads demo,
uno por cada momento del funnel, para analizar el siguiente paso.
Incluye panel /panel (lista + detalle RF-D-01/02) y wiring de deploy
(Dockerfile multi-stage + entrypoint migrate+seed).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>