feat(F-121): completed feature
This commit is contained in:
26
work/artifacts/F-121/implementer.md
Normal file
26
work/artifacts/F-121/implementer.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user