addons-cm/docs/UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md
snt 9000e92324 [DOC] website_sale_aplicoop: Add lazy loading documentation and implement v18.0.1.3.0 feature
- Add LAZY_LOADING.md with complete technical documentation (600+ lines)
- Add LAZY_LOADING_QUICK_START.md for quick reference (5 min)
- Add LAZY_LOADING_DOCS_INDEX.md as navigation guide
- Add UPGRADE_INSTRUCTIONS_v18.0.1.3.0.md with step-by-step installation
- Create DOCUMENTATION.md as main documentation index
- Update README.md with lazy loading reference
- Update docs/README.md with new docs section
- Update website_sale_aplicoop/README.md with features and changelog
- Create website_sale_aplicoop/CHANGELOG.md with version history

Lazy Loading Implementation (v18.0.1.3.0):
- Reduces initial store load from 10-20s to 500-800ms (20x faster)
- Add pagination configuration to res_config_settings
- Add _get_products_paginated() method to group_order model
- Implement AJAX endpoint for product loading
- Create 'Load More' button in website templates
- Add JavaScript listener for lazy loading behavior
- Backward compatible: can be disabled in settings

Performance Improvements:
- Initial load: 500-800ms (vs 10-20s before)
- Subsequent pages: 200-400ms via AJAX
- DOM optimization: 20 products initial vs 1000+ before
- Configurable: enable/disable and items per page

Documentation Coverage:
- Technical architecture and design
- Installation and upgrade instructions
- Configuration options and best practices
- Troubleshooting and common issues
- Performance metrics and validation
- Rollback procedures
- Future improvements roadmap
2026-02-16 18:39:39 +01:00

5.3 KiB

Guía de Actualización: Lazy Loading v18.0.1.3.0

Fecha: 16 de febrero de 2026 Versión: 18.0.1.3.0 Cambios Principales: Lazy loading configurable de productos

📋 Resumen de Cambios

La tienda de Aplicoop ahora carga productos bajo demanda en lugar de cargar todos a la vez. Esto reduce dramáticamente el tiempo de carga de la página inicial (de 10-20 segundos a 500-800ms).

🔄 Pasos de Actualización

1. Descargar Cambios

cd /home/snt/Documentos/lab/odoo/addons-cm
git pull origin main  # o tu rama correspondiente

2. Actualizar Addon en Odoo

# En Docker
docker-compose exec odoo odoo -d odoo -u website_sale_aplicoop --stop-after-init

# O sin Docker
./odoo-bin -d odoo -u website_sale_aplicoop --stop-after-init

3. Activar Lazy Loading (Recomendado)

Settings → Website → Shop Performance
  [✓] Enable Lazy Loading
  [20] Products Per Page

Click: "Save"

⚙️ Configuración

Opción A: Lazy Loading Habilitado (Recomendado)

Enable Lazy Loading: ✓ (checked)
Products Per Page: 20

Resultado: Página carga rápido, botón "Load More" visible

Opción B: Lazy Loading Deshabilitado (Compatibilidad)

Enable Lazy Loading: ☐ (unchecked)
Products Per Page: 20 (ignorado)

Resultado: Carga TODOS los productos como antes (no hay cambios visibles)

Opción C: Ajuste de Cantidad

Products Per Page: 50  (o el valor que desees)

Valores recomendados: 15-30 No recomendado: <5 (muchas páginas) o >100 (lento)

Validación Post-Actualización

1. Verificar Lazy Loading Activo

  1. Ir a /eskaera/<order_id> en tienda
  2. Verificar que carga rápido (~500ms)
  3. Buscar botón "Load More" al final
  4. Producto debe tener ~20 items inicialmente

2. Verificar Funcionamiento

  1. Click en "Load More"
  2. Spinner debe aparecer ("Loading...")
  3. Nuevos productos se agregan al grid
  4. Botón +/- y agregar al carrito funciona en nuevos productos

3. Verificar Compatibilidad

  1. Búsqueda (realtime-search) debe funcionar en página 1
  2. Carrito debe estar sincronizado
  3. Checkout debe funcionar normalmente
  4. Notificaciones de carrito deben actualizarse

4. Verificar Logs

# En Docker
docker-compose logs -f odoo | grep -i "lazy_loading\|eskaera_shop"

# Debería ver:
# [LAZY_LOADING] Attaching load-more-btn listener
# [LAZY_LOADING] Loading page 2 for order 1
# [LAZY_LOADING] Products inserted into grid

🐛 Troubleshooting

Problema: Botón "Load More" no aparece

Causa: Lazy loading está deshabilitado o hay <20 productos

Solución:

  1. Settings → Website → Shop Performance
  2. Verificar "Enable Lazy Loading" está ✓
  3. Asegurarse que hay >20 productos en orden

Problema: Botón no funciona (error AJAX)

Causa: Ruta /eskaera/<id>/load-page no funciona

Solución:

  1. Verificar que addon está actualizado: odoo -u website_sale_aplicoop
  2. Revisar logs: docker logs -f odoo | grep load-page
  3. Verificar que grupo tiene >20 productos

Problema: Event listeners no funcionan en nuevos productos

Causa: No se re-atacharon los listeners

Solución:

  1. Abrir console JS (F12)
  2. Ver si hay errores en "Load More"
  3. Verificar que _attachEventListeners() se ejecuta
  4. Clear cache del navegador (Ctrl+Shift+Delete)

Problema: Precios incorrectos al cargar más

Causa: Cambio en pricelist entre cargas

Solución: Sin validación de precios (no cambian frecuentemente). Si cambiaron:

  1. Recargar página (no solo Load More)
  2. O deshabilitar lazy loading

📊 Verificación de Performance

Método: Usar Developer Tools (F12)

  1. Abrir Network tab

  2. Recargar página completa

  3. Buscar request a /eskaera/<id>

  4. Timing debería ser:

    • Antes de cambios: 10-20s
    • Después de cambios: 500-800ms
  5. Click en "Load More"

  6. Buscar request a /eskaera/<id>/load-page

  7. Timing debería ser: 200-400ms

🔙 Rollback (Si Necesario)

Si hay problemas críticos:

# Desactivar lazy loading (opción rápida)
Settings → Website → Shop Performance
  ☐ Disable Lazy Loading
  Click: Save

O revertir código:

git revert <commit_hash>
odoo -u website_sale_aplicoop --stop-after-init

📝 Notas Importantes

  1. Sin validación de precios: No se revalidan precios al cargar nuevas páginas. Asumir que no cambian frecuentemente.

  2. Búsqueda local: La búsqueda realtime busca en DOM actual (20 productos). Para buscar en TODOS, refrescar página.

  3. Sin cambio de URL: Las páginas no cambian la URL a ?page=2. Todo es transparente vía AJAX.

  4. Carrito sincronizado: El carrito funciona normalmente, se guarda en localStorage y sincroniza entre páginas.

  5. Traducciones: Las etiquetas del botón "Load More" se traducen automáticamente desde i18nManager.

📚 Documentación Adicional

  • Guía completa: docs/LAZY_LOADING.md
  • Changelog: website_sale_aplicoop/CHANGELOG.md
  • README: website_sale_aplicoop/README.md

📞 Soporte

Para problemas:

  1. Revisar docs/LAZY_LOADING.md sección "Troubleshooting"
  2. Revisar logs: docker-compose logs odoo | grep -i lazy
  3. Limpiar cache: Ctrl+Shift+Delete en navegador
  4. Recargar addon: odoo -u website_sale_aplicoop

Actualización completada: 16 de febrero de 2026 Versión instalada: 18.0.1.3.0