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.phpGraphql/resolvers/OrderResolver.phpGraphql/resolvers/CartTotalSegmentsResolver.phpGraphql/resolvers/DeliveryDaysMaxMinResolver.phpGraphql/resolvers/ProductExtraDataResolver.phpGraphql/resolvers/SessionResolver.phpGraphql/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.phpModel/Resolver/CartItem.phpModel/Cart/UpdateCartItem.phpGraphql/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.phpApi/HeadlessCmsInterface.phpModel/HeadlessApi.phpModel/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
- Configuración en
- Notas importantes:
- Establece profundidad de consulta en 25 y complejidad en 500.
Overrides, Observers y Plugins Importantes
Preferences (Overrides)
Magento\QuoteGraphQl\Model\Resolver\PlaceOrder→Gaia\Headless\Graphql\resolvers\PlaceOrderResolver- Descripción: Personaliza el resolver de colocación de orden.
Magento\Store\Model\Store→Gaia\Headless\Model\Store- Descripción: Personaliza el modelo de tienda.
Magento\Checkout\Controller\Index\Index→Gaia\Headless\Controller\Checkout\Index- Descripción: Personaliza el controlador de checkout.
Magento\QuoteGraphQl\Model\Resolver\CartItems→Gaia\Headless\Model\Resolver\CartItem- Descripción: Personaliza el resolver de items del carrito.
Magento\QuoteGraphQl\Model\Cart\UpdateCartItem→Gaia\Headless\Model\Cart\UpdateCartItem- Descripción: Personaliza la actualización de items del carrito.
Magento\Framework\GraphQl\Query\QueryProcessor→Gaia\Headless\Graphql\Query\QueryProcessor- Descripción: Personaliza el procesador de consultas GraphQL.
Plugins
Magento\QuoteGraphQl\Model\Resolver\AddSimpleProductsToCartplugin_gaia_headless_add_to_cart_cart: Plugin para agregar productos al carrito
Magento\QuoteGraphQl\Model\Resolver\UpdateCartItemsplugin_gaia_headless_update_cart: Plugin para actualizar carrito
Magento\QuoteGraphQl\Model\Resolver\ApplyCouponToCartplugin_gaia_headless_apply_coupon_cart: Plugin para aplicar cupones
Magento\CustomerGraphQl\Model\Resolver\GenerateCustomerTokenplugin_gaia_headless_login: Plugin para login personalizado
Magento\GraphQl\Controller\GraphQlgraphql_load_translate: Plugin para traducción GraphQL
Magento\QuoteGraphQl\Model\Resolver\ShippingAddressesgraphql_extra_fields: Plugin para campos extra en direcciones
Magento\CatalogGraphQl\Model\Resolver\Product\MediaGallery\Urlgraphql_get_image_url: Plugin para URLs de imágenes
Magento\Paypal\Model\Api\Nvpcustom_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\ApiHeadlessInterfaceGaia\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 dependenciasetc/di.xml: Configuración de inyección de dependencias y pluginsetc/schema.graphqls: Esquema GraphQL personalizado (14KB, 306 líneas)etc/webapi.xml: Configuración de APIs RESTetc/acl.xml: Permisos de acceso para funcionalidades administrativasetc/cache.xml: Configuración de caché personalizadaetc/sales.xml: Configuración específica para ventas
APIs y Interfaces
Api/ApiHeadlessInterface.php: Interfaz para APIs headlessApi/HeadlessCmsInterface.php: Interfaz para CMS headless
Modelos Principales
Model/Config.php: Configuración del módulo headlessModel/HeadlessApi.php: API principal para funcionalidades headlessModel/HeadlessCms.php: Gestión de contenido CMS headlessModel/Store.php: Gestión de tiendas en contexto headless
Plugins Críticos
Plugin/Login.php: Personalización de autenticaciónPlugin/UpdateCart.php: Personalización de actualización de carritoPlugin/ShippingAddresses.php: Gestión de direcciones de envíoPlugin/PaypalNvp.php: Integración con PayPal NVPPlugin/ImageUrl.php: Gestión de URLs de imágenesPlugin/GraphQlTranslate.php: Traducción en GraphQL
Observers
Observer/MakeLinksRelative.php: Convierte enlaces absolutos a relativos
GraphQL
Graphql/Query/QueryProcessor.php: Procesador personalizado de consultas GraphQLGraphql/resolvers/: 16 resolvers personalizados incluyendo:PlaceOrderResolver.php: Resolver para colocación de órdenesOrderResolver.php: Resolver para gestión de órdenesCartTotalSegmentsResolver.php: Resolver para totales del carritoDeliveryDaysMaxMinResolver.php: Resolver para días de entregaProductExtraDataResolver.php: Resolver para datos extra de productosSessionResolver.php: Resolver para sesiones de clienteStoreCreditResolver.php: Resolver para crédito de tiendagabo/: 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 carritoModel/Resolver/CartItem.php: Resolver personalizado para items del carritoModel/ResourceModel/Quote/QuoteIdMask.php: Gestión de máscaras de cotizaciónModel/System/Config/Backend/Serialized.php: Configuración serializada del sistemaModel/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