PHPackages                             treedevs/novacontent-connect - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. treedevs/novacontent-connect

ActiveMagento2-module[Utility &amp; Helpers](/categories/utility)

treedevs/novacontent-connect
============================

Módulo de integración con Novacontent Commerce para enriquecimiento asistido de atributos del catálogo Magento 2

1.0.0(1mo ago)03proprietaryPHPPHP ^8.1 || ^8.2 || ^8.3

Since May 29Pushed 1mo agoCompare

[ Source](https://github.com/iposada3dadv/magento2-novacontent-connect)[ Packagist](https://packagist.org/packages/treedevs/novacontent-connect)[ RSS](/packages/treedevs-novacontent-connect/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (1)Versions (2)Used By (0)

TreeDevs\_NovacontentConnect
============================

[](#treedevs_novacontentconnect)

**Módulo de integración entre Magento 2 y Novacontent Commerce**

Versión: 1.0.0
Autor: TreeDevs
Licencia: Proprietary

---

Descripción
-----------

[](#descripción)

TreeDevs\_NovacontentConnect permite la integración bidireccional entre Magento 2 y la plataforma Novacontent Commerce para el enriquecimiento automático de atributos de productos mediante inteligencia artificial.

### Funcionalidades principales

[](#funcionalidades-principales)

- **Envío de productos**: Selección individual o masiva de productos desde el catálogo para envío a Novacontent
- **Enriquecimiento automático**: Generación de atributos (descripciones, meta tags, etc.) mediante IA
- **Polling asincrónico**: Recuperación automática de resultados mediante cron
- **Revisión y aprobación**: Interface administrativa para revisar atributos generados antes de aplicarlos
- **Aplicación al catálogo**: Actualización automática de productos con atributos aprobados
- **Trazabilidad completa**: Logging estructurado de todas las operaciones
- **Gestión de estados**: Máquina de estados para tracking del ciclo de vida de requests

---

Requisitos
----------

[](#requisitos)

- **Magento:** 2.4.x
- **PHP:** 8.1 o superior
- **Extensiones PHP:** curl, json
- **Permisos:** Acceso a cron, acceso a API externa (Novacontent Commerce)

---

Instalación
-----------

[](#instalación)

### Método 1: Instalación manual

[](#método-1-instalación-manual)

```
# 1. Copiar el módulo al directorio de código
cp -r TreeDevs/NovacontentConnect app/code/TreeDevs/

# 2. Habilitar el módulo
bin/magento module:enable TreeDevs_NovacontentConnect

# 3. Ejecutar setup
bin/magento setup:upgrade

# 4. Compilar DI (producción)
bin/magento setup:di:compile

# 5. Limpiar caché
bin/magento cache:flush
```

### Método 2: Composer (si está registrado)

[](#método-2-composer-si-está-registrado)

```
composer require treedevs/novacontent-connect
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush
```

---

Configuración
-------------

[](#configuración)

### 1. Configuración básica

[](#1-configuración-básica)

Navega a: **Stores &gt; Configuration &gt; TreeDevs &gt; Novacontent Connect**

#### Sección: Connection

[](#sección-connection)

- **Enable Module**: `Yes` para activar el módulo
- **API Endpoint**: URL base de Novacontent Commerce (ej: `https://api.novacontent.com`)
- **API Key**: Token de autenticación proporcionado por Novacontent (campo obscured)

#### Sección: Enrichment

[](#sección-enrichment)

- **Attributes to Send**: Multiselección de atributos EAV que se enviarán a Novacontent
    - Seleccionar solo atributos necesarios (ej: `name`, `description`, `short_description`, `meta_title`, `meta_description`)

#### Sección: Polling

[](#sección-polling)

- **Cron Frequency**: Frecuencia de polling para recuperar resultados
    - `*/5 * * * *` (cada 5 minutos)
    - `*/15 * * * *` (cada 15 minutos) — recomendado
    - `*/30 * * * *` (cada 30 minutos)
    - `0 * * * *` (cada hora)

### 2. Permisos ACL

[](#2-permisos-acl)

Asignar permisos a roles de usuario en: **System &gt; Permissions &gt; User Roles**

Recursos disponibles:

- `TreeDevs_NovacontentConnect::novacontent` (acceso general)
- `TreeDevs_NovacontentConnect::config` (configuración)
- `TreeDevs_NovacontentConnect::requests` (gestión de requests)
- `TreeDevs_NovacontentConnect::logs` (visualización de logs)

---

Uso
---

[](#uso)

### Envío de productos a Novacontent

[](#envío-de-productos-a-novacontent)

#### Opción 1: Desde el grid de productos (mass action)

[](#opción-1-desde-el-grid-de-productos-mass-action)

1. Ir a **Catalog &gt; Products**
2. Seleccionar productos (solo simples y configurables)
3. En **Actions**, seleccionar **Send to Novacontent**
4. Confirmar el envío

#### Opción 2: Desde el detalle de producto

[](#opción-2-desde-el-detalle-de-producto)

1. Abrir un producto para edición
2. Click en botón **Send to Novacontent** (arriba a la derecha)
3. El producto se enviará inmediatamente

### Revisión y aprobación de atributos generados

[](#revisión-y-aprobación-de-atributos-generados)

1. Ir a **TreeDevs &gt; Novacontent &gt; Integration Requests**
2. Localizar requests con estado `COMPLETED`
3. Click en **View** para ver detalles
4. Click en **Revisar y Aprobar**
5. Revisar tabs:
    - **Información del Request**: Datos generales
    - **Atributos Generados**: Tabla de productos y atributos
    - **Cambios Propuestos**: Comparación antes/después
6. Click en **✓ Aprobar y Aplicar al Catálogo** para aplicar cambios
7. Los atributos se aplicarán automáticamente a los productos

### Consulta de logs operativos

[](#consulta-de-logs-operativos)

1. Ir a **TreeDevs &gt; Novacontent &gt; Operational Logs**
2. Filtrar por:
    - Request ID
    - Layer (capa: controller, manager, adapter, cron, etc.)
    - Phase (fase del proceso)
    - Result (success, warning, error)
    - Fecha

---

Arquitectura
------------

[](#arquitectura)

### Componentes principales

[](#componentes-principales)

```
TreeDevs/NovacontentConnect/
├── Api/                            # Interfaces de datos y servicios
│   ├── Data/                       # Interfaces de entidades
│   └── Adapter/                    # Interface del adapter HTTP
├── Model/
│   ├── Manager/                    # Orquestadores de flujo
│   │   ├── IntegrationRequestManager.php
│   │   └── ResultPollingManager.php
│   ├── Service/                    # Servicios de negocio
│   │   ├── RequestPreparationService.php
│   │   └── ApplicationService.php
│   ├── Adapter/                    # Adapter HTTP a Novacontent
│   │   └── NovacontentCommerceAdapter.php
│   └── Repository/                 # Repositorios de datos
├── Controller/Adminhtml/           # Controllers admin
│   ├── Request/                    # Gestión de requests
│   └── Product/                    # Envío de productos
├── Cron/                          # Jobs programados
├── Logger/                        # Logger operativo
└── view/adminhtml/                # UI administrativa

```

### Flujo de datos

[](#flujo-de-datos)

1. **Envío** (Manual o automático):

    - User selecciona productos
    - `IntegrationRequestManager::createAndSendRequest()`
    - `RequestPreparationService::buildRequestPayload()`
    - `NovacontentCommerceAdapter::createRequest()` → API Novacontent
    - Estado: `PENDING_SEND` → `PENDING`
2. **Polling** (Cron cada 15 min):

    - `PollRemoteResults` (cron job)
    - `ResultPollingManager::run()`
    - Para cada request `PENDING`/`PROCESSING`:
        - `Adapter::getRequestStatus()` → verifica estado
        - Si `COMPLETED`: `Adapter::getRequestResult()` → obtiene atributos
        - Persiste `IntegrationResponse` con JSON íntegro
    - Estado: `PENDING` → `PROCESSING` → `COMPLETED`
3. **Revisión y Aplicación** (Manual):

    - Admin revisa atributos en UI
    - Click "Aprobar"
    - `ApplicationService::applyAttributesToCatalog()`
    - Validación allowlist de atributos (seguridad)
    - Actualización productos vía `ProductRepository`
    - Persistencia `IntegrationApplicationEvidence`
    - Estado: `COMPLETED` → `APPLIED`

### Persistencia

[](#persistencia)

**Tablas creadas:**

- `novacontent_integration_request` — Requests de enriquecimiento
- `novacontent_integration_request_item` — Items por request (productos)
- `novacontent_integration_response` — Respuestas de Novacontent
- `novacontent_integration_application_evidence` — Evidencia de aplicación
- `novacontent_integration_operational_log` — Logs operativos

---

Estados de Integration Request
------------------------------

[](#estados-de-integration-request)

EstadoDescripción`PENDING_SEND`Creado localmente, aún no enviado a Novacontent`PENDING`Enviado a Novacontent, esperando procesamiento`PROCESSING`En procesamiento por Novacontent`COMPLETED`Procesamiento completado, atributos disponibles`FAILED`Error en Novacontent`CANCELLED`Cancelado por Novacontent`APPLIED`Atributos aplicados al catálogo exitosamente`APPLICATION_FAILED`Fallo al aplicar atributos al catálogo`REJECTED`Rechazado manualmente por admin`PERMANENTLY_FAILED`Falló después de máximo de reintentos (3)---

Seguridad
---------

[](#seguridad)

### Reglas implementadas

[](#reglas-implementadas)

- **SEC-NCC-01**: API Key nunca se expone en logs, UI ni excepciones
- **SEC-NCC-03**: Contexto de logs sanitizado (sin secrets)
- **SEC-NCC-05**: ACL en todos los controllers administrativos
- **SEC-NCC-06**: Solo atributos en allowlist se aplican al catálogo

### Recomendaciones

[](#recomendaciones)

- Usar HTTPS para endpoint de Novacontent
- Rotar API Key periódicamente
- Limitar permisos ACL al mínimo necesario
- Revisar logs operativos regularmente

---

Troubleshooting
---------------

[](#troubleshooting)

### El módulo no aparece en configuración

[](#el-módulo-no-aparece-en-configuración)

```
# Verificar que el módulo está habilitado
bin/magento module:status TreeDevs_NovacontentConnect

# Si está deshabilitado:
bin/magento module:enable TreeDevs_NovacontentConnect
bin/magento setup:upgrade
bin/magento cache:flush
```

### Cron no ejecuta polling

[](#cron-no-ejecuta-polling)

```
# Verificar configuración de cron
bin/magento cron:run --group default

# Ver logs de cron
tail -f var/log/system.log | grep novacontent
```

### Error al enviar productos

[](#error-al-enviar-productos)

1. Verificar que el módulo está **enabled** en configuración
2. Verificar **API Endpoint** y **API Key** correctos
3. Verificar conectividad: `curl -I https://api.novacontent.com`
4. Revisar logs: **TreeDevs &gt; Novacontent &gt; Operational Logs**

### Atributos no se aplican al catálogo

[](#atributos-no-se-aplican-al-catálogo)

1. Verificar que los atributos están en la **allowlist** (Config &gt; Attributes to Send)
2. Verificar que el request está en estado `COMPLETED`
3. Revisar logs de layer `catalog_apply`
4. Verificar permisos de escritura en base de datos

---

Soporte
-------

[](#soporte)

Para soporte técnico, contactar:

- Email:
- Documentación: \[Internal Wiki\]

---

Changelog
---------

[](#changelog)

### v1.0.0 (2026-04-23)

[](#v100-2026-04-23)

- Release inicial
- Funcionalidades core completas:
    - Envío manual/masivo de productos
    - Polling asincrónico de resultados
    - Revisión y aprobación de atributos
    - Aplicación al catálogo con validaciones
    - Logging operativo completo
    - UI administrativa completa

---

Licencia
--------

[](#licencia)

Proprietary - TreeDevs © 2026

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance89

Actively maintained with recent releases

Popularity3

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 71.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

56d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/91212667?v=4)[ivetteposada](/maintainers/ivetteposada)[@ivetteposada](https://github.com/ivetteposada)

---

Top Contributors

[![3dadvpro](https://avatars.githubusercontent.com/u/147448827?v=4)](https://github.com/3dadvpro "3dadvpro (15 commits)")[![iposada3dadv](https://avatars.githubusercontent.com/u/106617308?v=4)](https://github.com/iposada3dadv "iposada3dadv (3 commits)")[![developerm2medialab](https://avatars.githubusercontent.com/u/230650733?v=4)](https://github.com/developerm2medialab "developerm2medialab (2 commits)")[![AndreaaGM](https://avatars.githubusercontent.com/u/133548375?v=4)](https://github.com/AndreaaGM "AndreaaGM (1 commits)")

### Embed Badge

![Health badge](/badges/treedevs-novacontent-connect/health.svg)

```
[![Health](https://phpackages.com/badges/treedevs-novacontent-connect/health.svg)](https://phpackages.com/packages/treedevs-novacontent-connect)
```

###  Alternatives

[nosto/module-nostotagging

Increase your conversion rate and average order value by delivering your customers personalized product recommendations throughout their shopping journey.

27703.7k4](/packages/nosto-module-nostotagging)[tig/postnl-magento2

TIG Magento 2 PostNL extension

59570.5k5](/packages/tig-postnl-magento2)[myparcelnl/magento

A Magento 2 module that creates MyParcel labels

1860.2k](/packages/myparcelnl-magento)[loki/magento2-components

Core module for defining Alpine.js components with advanced AJAX features

1011.8k26](/packages/loki-magento2-components)[mage-os/module-llm-txt

AI-powered LLMs.txt generation for Magento 2 / Mage-OS stores. Help AI systems understand your store with OpenAI-generated content.

234.4k](/packages/mage-os-module-llm-txt)[mage-os/module-rma

Return Merchandise Authorization

214.0k](/packages/mage-os-module-rma)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
