Saltar a contenido

RF-001 — Banners: piezas gráficas reutilizables

Estado Implementado
Tipo Colección propia
Ubicación src/collections/Banners.ts · slug banners
Depende de RF-000 · destinos — RF-005 · medios — RF-006

Requisito

Administrar piezas gráficas promocionales como entidad independiente y reutilizable, con versión de escritorio y versión móvil, destino de clic configurable y botón de acción opcional posicionable sobre la imagen; y permitir su uso desde varias páginas manteniendo un único punto de edición.

Solución adoptada

Modelar el banner como colección propia de lectura pública, y no como contenido embebido en la página. El bloque hero referencia un banner en lugar de definir su contenido, de modo que la modificación de la pieza se propaga a todas las páginas que la utilizan.

flowchart LR
    B[(banners)]
    P1[Página A · bloque hero] --> B
    P2[Página B · bloque hero] --> B
    B --> M[(media)]
    B --> L[linkConfig · destino del clic]
    B --> C[ctaButton · botón opcional]
    SF([Storefront]) -->|REST · GraphQL| B

Modelo de datos

Campo Tipo Regla
titulo texto Requerido. Identifica la pieza en el listado del panel
imagen upload → media Requerido. Versión de escritorio
imagenMobile upload → media Opcional. Versión móvil
link grupo linkConfig Destino del clic sobre la pieza, sin etiqueta visible
cta grupo ctaButton Botón opcional; posición por defecto bottom-center
enlace texto [Obsoleto] — oculto, conservado por compatibilidad con filas anteriores

Reglas de negocio

  • Exponer la colección con lectura pública: es contrato con el storefront.
  • Reservar la escritura a usuarios autenticados del panel.
  • Exigir imagen de escritorio y admitir la móvil como opcional: sin versión móvil, el storefront reutiliza la de escritorio.
  • Ubicar el botón sobre la pieza mediante una grilla de nueve posiciones, sin coordenadas libres.
  • Conservar los campos superados en estado oculto en lugar de eliminarlos, para no invalidar las filas ya cargadas.

Criterios de aceptación

# Criterio
1 Crear un banner con imagen de escritorio y destino, y consumirlo por API sin autenticación
2 Referenciar el mismo banner desde dos páginas y ver el cambio reflejado en ambas tras una sola edición
3 Cargar imagen móvil diferenciada y recibirla en la respuesta de la API
4 Agregar un botón con texto, destino y posición, y omitirlo cuando no se configura

Limitaciones conocidas

  • Carecer de ventana de vigencia: el banner se publica o se retira manualmente, sin fechas de inicio y fin como sí tienen los slides (RF-002).
  • Mantener el campo enlace sin uso, solo por compatibilidad.