27 lines
1.5 KiB
Markdown
27 lines
1.5 KiB
Markdown
# F-121 — Quitar restricción "Guarda primero" en precio/stock/EAN
|
|
|
|
## Cambios
|
|
- `apps/admin/src/features/products/components/ProductEditor.tsx`:
|
|
- `ProductEditor` ahora maneja `productId` como state interno que se inicializa desde la prop.
|
|
- Tras `POST /products` exitoso, en lugar de `router.push('/products/${id}')` (navegación completa), se usa `setProductId(saved.id)` + `router.replace(...)`.
|
|
- El componente no se desmonta: react re-renderiza con `productId` real, lo que hace que los `useEffect` de `PriceStockSection` e `ImagesSection` se ejecuten y carguen los datos.
|
|
- El usuario no ve pantalla en blanco ni pierde el state del formulario.
|
|
|
|
## UX resultante
|
|
1. El usuario entra a `/products/new`.
|
|
2. Rellena nombre (slug se autogenéra).
|
|
3. Pulsa "Guardar cambios".
|
|
4. Aparece un toast verde y se desbloquean las secciones Precio/Stock/EAN/Peso/Imágenes.
|
|
5. El usuario sigue rellenando precio, stock, EAN, peso, etc.
|
|
6. Pulsa "Guardar cambios" otra vez — esta vez se hace `PATCH /products/:id` (no create).
|
|
|
|
## Evidencia
|
|
- `apps/admin tsc --noEmit` OK.
|
|
- `apps/admin build` OK.
|
|
- El nombre del producto se persiste en la creación (auto-crea la variante `SKU-MV-{id}`).
|
|
- `setProductId` cambia el prop reactivamente, lo que dispara el `useEffect` de `PriceStockSection`.
|
|
|
|
## Notas
|
|
- No se cambia nada del backend. El patrón de "crear variante con `SKU-MV-{id}`" ya existe.
|
|
- El usuario sigue el modelo de "una sola variante por producto". No se reintroducen múltiples.
|