docs: ADR 0011 (ambiente de Staging) + notas de la sesión 2026-09-13/14
Build and Push Docs Portal / Escaneo de Secretos (Gitleaks) (push) Successful in 27s
Build and Push Docs Portal / Construir y publicar Docs Portal (push) Successful in 6m1s

Documenta el ambiente de Staging (staging.cruzcloud.net, promoción
manual, footer con version real), y agrega a notas-sueltas la
correccion de bodega Cali, redes sociales reales, rediseño de galeria
estilo Amazon, la leccion de min-w-0 en CSS Grid, y la remocion
definitiva de la barra flotante de carrito en mobile. De paso, suma a
la nav el ADR 0010 que existía en el repo pero nunca se había
enlazado.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_012Y4df3Z7odr9Cg8F2nw6uV
This commit is contained in:
devopsandClaude Sonnet 5 committed 2026-09-14 05:00:19 +00:00
1 parent 009d5c63df
commit fe4ed8005a
3 files changed
+184 -1

No files matched your search

@@ -81,4 +81,70 @@
hacía falta agregar una clave nueva) — un script de setup inicial y
uno de "agregar una clave a un secret ya vivo" deberían haber sido
dos herramientas distintas desde el principio, no una sola que hay
que saber cuándo NO correr completa.
que saber cuándo NO correr completa.
## CSS Grid: un scroller horizontal sin `min-w-0` puede desbordar todo el grid
Encontrado en producción (2026-09-13/14) en la página de producto del
storefront: un síntoma que parecía un bug de imágenes ("se ve como si
abriera en tamaño real" en Chrome/Edge Android) resultó ser, en
realidad, un desborde de layout. El carrusel horizontal de "También te
puede gustar" (`overflow-x-auto`, sin `flex-wrap`) vivía como hijo
directo de un CSS Grid. Por spec, el tamaño mínimo automático de un
item de grid es el tamaño mínimo de su contenido **a menos que el
propio item** tenga `overflow` distinto de `visible` — y como el `div`
que envolvía al carrusel no lo tenía, el ancho mínimo intrínseco de
*todas* las tarjetas del carrusel sin wrappear se contaba como el
mínimo de esa columna, forzando **todo el grid compartido** (imagen,
título, specs) a ~800px de ancho en un viewport real de ~380px.
**Lección reusable:** cualquier fila con scroll horizontal (carrusel,
tira de miniaturas, chips de filtro) que sea hijo directo de un CSS
Grid necesita `min-w-0` en su wrapper (o `overflow` seteado
directamente en el item de grid) — si no, su contenido sin wrappear
puede reventar el ancho de todo el grid en silencio, y el síntoma
visible no tiene nada que ver con imágenes ni con DPR. Diagnosticado
en vivo comparando `window.innerWidth` (reportaba el ancho
desbordado) contra el viewport real del dispositivo.
## Rediseño de página de producto y correcciones de datos reales (2026-09-13/14)
Sesión de correcciones guiadas por capturas reales del usuario en
navegadores reales (no reportes abstractos):
- **Bodega mal configurada:** `ENVIOCLICK_ORIGIN_DANE_CODE` apuntaba a
Bogotá (`11001000`) cuando la bodega real está en Santiago de Cali,
Valle del Cauca (`76001000`) — afectaba el cálculo real de envío
(EnvíoClick) en cada checkout. Corregido en el ConfigMap del
frontend, en `commerce-backend/medusa-config.ts` (incluyendo un
fallback obsoleto que también apuntaba a Bogotá) y en el registro
real de la bodega en Medusa (vía admin temporal, mismo patrón que el
resto del lab para ediciones puntuales en vivo).
- **Redes sociales y páginas de ayuda reales:** el footer enlazaba
cuentas placeholder; se verificó en vivo la cuenta real de Instagram
antes de linkearla (la primera sugerida no era la correcta) y se
activaron los enlaces reales de Instagram/Facebook/WhatsApp, además
de las páginas `/cambios` y `/preguntas-frecuentes` con contenido
real (ya existían en código, no estaban enlazadas).
- **Zoom estilo Amazon en la galería de producto:** iteración en tres
pasos hasta llegar a lo pedido — `transform: scale()` sobre una
imagen ya recortada por `object-cover` (no funcionaba: lo recortado
nunca estaba en el DOM), superposición in-place (técnicamente
correcta pero no la UX pedida), y finalmente una lupa que sigue el
cursor más un panel lateral que magnifica esa región — el patrón
real de Amazon. El tamaño/posición del panel se calcula en JS contra
`window.innerWidth/innerHeight` en cada `mousemove` (no un
breakpoint CSS fijo), con fallback a la superposición in-place si no
hay espacio.
- **Barra flotante de "Añadir al carrito" en mobile: removida, no
reajustada.** Pasó por varias iteraciones de lógica de
mostrar/ocultar (con `IntersectionObserver`) que seguían
superponiéndose a otro contenido en capturas reales del usuario. En
vez de seguir ajustando el umbral, se eliminó el componente por
completo y se dejó el botón inline normal, visible también en
mobile — el mismo patrón que usa la mayoría de tiendas. Verificado
con Playwright: cero elementos `position: fixed` en la página de
producto.
- **Ambiente de Staging + versión real en el footer:** ver
[ADR 0011](../decisiones/0011-ambiente-staging.md) para el detalle
completo.