Saltar al contenido principal

Gaia_Headless

Descripción General

El módulo Gaia_Headless proporciona funcionalidades headless y GraphQL para el ecosistema Gaia en Magento 2. Incluye resolvers GraphQL personalizados, plugins para operaciones de carrito, checkout, login, gestión de imágenes, y APIs específicas para aplicaciones headless.

Features

Resolvers GraphQL Personalizados

  • Descripción: Implementa múltiples resolvers GraphQL para funcionalidades específicas de Gaia.
  • Tipo de modificación: Resolvers GraphQL personalizados.
  • Archivos del core afectados: No modifica archivos core de Magento.
  • Archivos del módulo:
    • Graphql/resolvers/PlaceOrderResolver.php
    • Graphql/resolvers/OrderResolver.php
    • Graphql/resolvers/CartTotalSegmentsResolver.php
    • Graphql/resolvers/DeliveryDaysMaxMinResolver.php
    • Graphql/resolvers/ProductExtraDataResolver.php
    • Graphql/resolvers/SessionResolver.php
    • Graphql/resolvers/StoreCreditResolver.php
  • Notas importantes:
    • Proporciona funcionalidades específicas para aplicaciones headless.

Operaciones de Carrito Personalizadas

  • Descripción: Personaliza operaciones de carrito a través de GraphQL.
  • Tipo de modificación: Plugins en resolvers de carrito.
  • Archivos del core afectados: No modifica archivos core de Magento.
  • Archivos del módulo:
    • Plugin/UpdateCart.php
  • Notas importantes:
    • Se aplica a agregar productos, actualizar carrito y aplicar cupones.

Login Personalizado

  • Descripción: Personaliza el proceso de login a través de GraphQL.
  • Tipo de modificación: Plugin en generación de token de cliente.
  • Archivos del core afectados: No modifica archivos core de Magento.
  • Archivos del módulo:
    • Plugin/Login.php
  • Notas importantes:
    • Permite lógica personalizada en el proceso de autenticación.

Gestión de Imágenes Personalizada

  • Descripción: Personaliza la gestión de URLs de imágenes en GraphQL.
  • Tipo de modificación: Plugin en resolver de galería de medios.
  • Archivos del core afectados: No modifica archivos core de Magento.
  • Archivos del módulo:
    • Plugin/ImageUrl.php
  • Notas importantes:
    • Permite personalizar URLs de imágenes para aplicaciones headless.

Direcciones de Envío Personalizadas

  • Descripción: Personaliza la gestión de direcciones de envío en GraphQL.
  • Tipo de modificación: Plugin en resolver de direcciones de envío.
  • Archivos del core afectados: No modifica archivos core de Magento.
  • Archivos del módulo:
    • Plugin/ShippingAddresses.php
  • Notas importantes:
    • Permite agregar campos adicionales a direcciones de envío.

PayPal Personalizado

  • Descripción: Personaliza operaciones de PayPal para aplicaciones headless.
  • Tipo de modificación: Plugin en API NVP de PayPal.
  • Archivos del core afectados: No modifica archivos core de Magento.
  • Archivos del módulo:
    • Plugin/PaypalNvp.php
  • Notas importantes:
    • Permite personalizar montos y operaciones de PayPal.

Traducción GraphQL

  • Descripción: Implementa traducción personalizada para GraphQL.
  • Tipo de modificación: Plugin en controlador GraphQL.
  • Archivos del core afectados: No modifica archivos core de Magento.
  • Archivos del módulo:
    • Plugin/GraphQlTranslate.php
  • Notas importantes:
    • Permite personalizar traducciones en consultas GraphQL.

Overrides de Componentes Core

  • Descripción: Reemplaza componentes core para funcionalidades headless.
  • Tipo de modificación: Overrides de resolvers y modelos.
  • Archivos del core afectados: Reemplaza varios componentes de GraphQL.
  • Archivos del módulo:
    • Graphql/resolvers/PlaceOrderResolver.php
    • Model/Resolver/CartItem.php
    • Model/Cart/UpdateCartItem.php
    • Graphql/Query/QueryProcessor.php
  • Notas importantes:
    • Extiende funcionalidades core para aplicaciones headless.

APIs Personalizadas

  • Descripción: Implementa APIs específicas para funcionalidades headless.
  • Tipo de modificación: APIs personalizadas.
  • Archivos del core afectados: No modifica archivos core de Magento.
  • Archivos del módulo:
    • Api/ApiHeadlessInterface.php
    • Api/HeadlessCmsInterface.php
    • Model/HeadlessApi.php
    • Model/HeadlessCms.php
  • Notas importantes:
    • Proporciona endpoints específicos para aplicaciones headless.

Controlador de Checkout Personalizado

  • Descripción: Personaliza el controlador de checkout para aplicaciones headless.
  • Tipo de modificación: Override de controlador.
  • Archivos del core afectados: Reemplaza Magento\Checkout\Controller\Index\Index.
  • Archivos del módulo:
    • Controller/Checkout/Index.php
  • Notas importantes:
    • Permite lógica personalizada en el checkout headless.

Modelo de Tienda Personalizado

  • Descripción: Personaliza el modelo de tienda para aplicaciones headless.
  • Tipo de modificación: Override de modelo.
  • Archivos del core afectados: Reemplaza Magento\Store\Model\Store.
  • Archivos del módulo:
    • Model/Store.php
  • Notas importantes:
    • Extiende funcionalidades de tienda para headless.

Configuración de Complejidad GraphQL

  • Descripción: Configura límites de complejidad para consultas GraphQL.
  • Tipo de modificación: Configuración de límites.
  • Archivos del core afectados: No modifica archivos core de Magento.
  • Archivos del módulo:
    • Configuración en di.xml
  • Notas importantes:
    • Establece profundidad de consulta en 25 y complejidad en 500.

Overrides, Observers y Plugins Importantes

Preferences (Overrides)

  • Magento\QuoteGraphQl\Model\Resolver\PlaceOrderGaia\Headless\Graphql\resolvers\PlaceOrderResolver
    • Descripción: Personaliza el resolver de colocación de orden.
  • Magento\Store\Model\StoreGaia\Headless\Model\Store
    • Descripción: Personaliza el modelo de tienda.
  • Magento\Checkout\Controller\Index\IndexGaia\Headless\Controller\Checkout\Index
    • Descripción: Personaliza el controlador de checkout.
  • Magento\QuoteGraphQl\Model\Resolver\CartItemsGaia\Headless\Model\Resolver\CartItem
    • Descripción: Personaliza el resolver de items del carrito.
  • Magento\QuoteGraphQl\Model\Cart\UpdateCartItemGaia\Headless\Model\Cart\UpdateCartItem
    • Descripción: Personaliza la actualización de items del carrito.
  • Magento\Framework\GraphQl\Query\QueryProcessorGaia\Headless\Graphql\Query\QueryProcessor
    • Descripción: Personaliza el procesador de consultas GraphQL.

Plugins

  • Magento\QuoteGraphQl\Model\Resolver\AddSimpleProductsToCart
    • plugin_gaia_headless_add_to_cart_cart: Plugin para agregar productos al carrito
  • Magento\QuoteGraphQl\Model\Resolver\UpdateCartItems
    • plugin_gaia_headless_update_cart: Plugin para actualizar carrito
  • Magento\QuoteGraphQl\Model\Resolver\ApplyCouponToCart
    • plugin_gaia_headless_apply_coupon_cart: Plugin para aplicar cupones
  • Magento\CustomerGraphQl\Model\Resolver\GenerateCustomerToken
    • plugin_gaia_headless_login: Plugin para login personalizado
  • Magento\GraphQl\Controller\GraphQl
    • graphql_load_translate: Plugin para traducción GraphQL
  • Magento\QuoteGraphQl\Model\Resolver\ShippingAddresses
    • graphql_extra_fields: Plugin para campos extra en direcciones
  • Magento\CatalogGraphQl\Model\Resolver\Product\MediaGallery\Url
    • graphql_get_image_url: Plugin para URLs de imágenes
  • Magento\Paypal\Model\Api\Nvp
    • custom_amount_paypal: Plugin para montos personalizados en PayPal

Configuraciones de Inyección de Dependencias

  • Magento\Framework\GraphQl\Query\QueryComplexityLimiter
    • Descripción: Configura límites de complejidad GraphQL
  • Gaia\Headless\Graphql\resolvers\OrderResolver
    • Descripción: Configura resolver de órdenes con sesión de cliente
  • Gaia\Headless\Helper\OrderHelper
    • Descripción: Configura helper de órdenes con sesión de cliente

CLI Commands

Este módulo no define comandos CLI personalizados.

APIs

Expone APIs personalizadas para funcionalidades headless:

  • Gaia\Headless\Api\ApiHeadlessInterface
  • Gaia\Headless\Api\HeadlessCmsInterface
  • Schema GraphQL extenso en etc/schema.graphqls (14KB, 306 líneas)

Consideraciones para Mantenimiento

  • El módulo es crítico para aplicaciones headless y no debe desactivarse sin revisar dependencias.
  • Depende de varios módulos: Magento_Catalog, Magento_Webapi, Magento_GraphQl, Gaia_Insider, Gaia_StoreCredit, Gaia_Gabo.
  • Los plugins se ejecutan en operaciones críticas de GraphQL y deben ser eficientes.
  • El schema GraphQL es extenso y puede afectar el rendimiento de consultas.
  • Los overrides de resolvers pueden afectar la funcionalidad base de GraphQL.
  • La configuración de complejidad puede limitar consultas complejas.
  • Revisar compatibilidad con actualizaciones de GraphQL de Magento.
  • Los resolvers personalizados pueden requerir sesiones de cliente activas.
  • La integración con PayPal puede afectar el procesamiento de pagos.

Archivos de Configuración Principales

  • etc/module.xml: Define el módulo y sus dependencias
  • etc/di.xml: Configuración de inyección de dependencias y plugins
  • etc/schema.graphqls: Esquema GraphQL personalizado (14KB, 306 líneas)
  • etc/webapi.xml: Configuración de APIs REST
  • etc/acl.xml: Permisos de acceso para funcionalidades administrativas
  • etc/cache.xml: Configuración de caché personalizada
  • etc/sales.xml: Configuración específica para ventas

APIs y Interfaces

  • Api/ApiHeadlessInterface.php: Interfaz para APIs headless
  • Api/HeadlessCmsInterface.php: Interfaz para CMS headless

Modelos Principales

  • Model/Config.php: Configuración del módulo headless
  • Model/HeadlessApi.php: API principal para funcionalidades headless
  • Model/HeadlessCms.php: Gestión de contenido CMS headless
  • Model/Store.php: Gestión de tiendas en contexto headless

Plugins Críticos

  • Plugin/Login.php: Personalización de autenticación
  • Plugin/UpdateCart.php: Personalización de actualización de carrito
  • Plugin/ShippingAddresses.php: Gestión de direcciones de envío
  • Plugin/PaypalNvp.php: Integración con PayPal NVP
  • Plugin/ImageUrl.php: Gestión de URLs de imágenes
  • Plugin/GraphQlTranslate.php: Traducción en GraphQL

Observers

  • Observer/MakeLinksRelative.php: Convierte enlaces absolutos a relativos

GraphQL

  • Graphql/Query/QueryProcessor.php: Procesador personalizado de consultas GraphQL
  • Graphql/resolvers/: 16 resolvers personalizados incluyendo:
    • PlaceOrderResolver.php: Resolver para colocación de órdenes
    • OrderResolver.php: Resolver para gestión de órdenes
    • CartTotalSegmentsResolver.php: Resolver para totales del carrito
    • DeliveryDaysMaxMinResolver.php: Resolver para días de entrega
    • ProductExtraDataResolver.php: Resolver para datos extra de productos
    • SessionResolver.php: Resolver para sesiones de cliente
    • StoreCreditResolver.php: Resolver para crédito de tienda
    • gabo/: 4 resolvers específicos para funcionalidades Gabo

Helpers

  • Helper/Data.php: Helper principal con utilidades generales (5.0KB, 145 líneas)
  • Helper/MeData.php: Helper para datos de usuario (8.3KB, 201 líneas)
  • Helper/OrderHelper.php: Helper para gestión de órdenes (2.8KB, 74 líneas)

Modelos Especializados

  • Model/Cache/Type.php: Gestión de tipos de caché
  • Model/Cart/UpdateCartItem.php: Actualización personalizada de items del carrito
  • Model/Resolver/CartItem.php: Resolver personalizado para items del carrito
  • Model/ResourceModel/Quote/QuoteIdMask.php: Gestión de máscaras de cotización
  • Model/System/Config/Backend/Serialized.php: Configuración serializada del sistema
  • Model/Total/ServicePrice.php: Gestión de precios de servicios (4.3KB, 132 líneas)

Bloques Administrativos

  • Block/Adminhtml/Form/Field/FullnamesExcluded.php: Campo de formulario para nombres excluidos