# Ejemplo: JSON estructurado

Patrón del catálogo: "Ejemplo 3: JSON estructurado" — fuente `products.json`, adapter
`json-value` → `input: "value"`.

## Qué copiar

- `summary.mview/mview.json` — `source.adapter: "json-value"`, `source.input: "value"`.
- La forma del transform: siempre valida que `input.value` tenga la forma esperada antes de
  derivar nada (aquí, que exista un array `products`) y falla con un mensaje claro si no.

## Qué reemplazar

- `products.json` por la fuente real.
- La validación de forma y las métricas derivadas en `transform.mjs`.
- El diseño de `view.html`.

## Verificación

```bash
node --test test.mjs
```

Agrega un producto nuevo a una copia temporal de `products.json`, corre un refresh, y confirma
que `totalProducts` y `totalStockValue` cambiaron sin tocar el `products.json` real.
