PHPackages                             egsn/store-intelligence - 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. egsn/store-intelligence

ActiveMagento2-module

egsn/store-intelligence
=======================

Egsn Store Intelligence — AI-powered Magento 2 store diagnostics

1.1.0(1mo ago)01↓66.7%OSL-3.0PHPPHP ~8.2.0||~8.3.0||~8.4.0

Since Jul 17Pushed 1mo agoCompare

[ Source](https://github.com/Esmerioneto/store-intelligence)[ Packagist](https://packagist.org/packages/egsn/store-intelligence)[ RSS](/packages/egsn-store-intelligence/feed)WikiDiscussions main Synced 1w ago

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

Egsn\_StoreIntelligence
=======================

[](#egsn_storeintelligence)

Módulo de diagnóstico e otimização de lojas Magento 2 alimentado por IA. Coleta métricas de performance, erros e vendas através de 30 collectors e envia os dados para um provedor de IA (Claude, OpenAI ou Gemini) para gerar análises, recomendações prioritizadas e estimativas de impacto.

Requisitos
----------

[](#requisitos)

- Magento 2.4.7+
- PHP ~8.2 || ~8.3 || ~8.4

Instalação
----------

[](#instalação)

Via Composer:

```
composer require egsn/store-intelligence
bin/magento module:enable Egsn_StoreIntelligence
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:clean
```

Configuração
------------

[](#configuração)

Lojas &gt; Configurações &gt; Egsn &gt; Store Intelligence

SeçãoCampoDescriçãoGeralProvedor de IAClaude, OpenAI ou GeminiGeralAPI Key GeminiChave do Google AI StudioGeralAPI Key ClaudeChave da API AnthropicGeralAPI Key OpenAIChave da API OpenAIGeralEscopo da AnáliseGlobal ou restrito a um website (collectors de vendas/pedidos)GeralOrçamento mensal de tokensLimite de tokens de IA por mês; ao atingir, a análise continua sem resumo de IA (0 = sem limite)AgendamentoHabilitadoAtiva análise automática via cronAgendamentoFrequênciaDiária, semanal ou mensalAgendamentoJanela de execuçãoHorário de início/fim (ex: 01:00–05:00)LimitesDias sem vendaThreshold para produtos sem venda (padrão: 90 dias)LimitesMeses inativoThreshold para clientes inativos (padrão: 12 meses)EmailHabilitadoEnvio de relatório por email após análiseEmailDestinatáriosLista de emails separados por linhaWebhookHabilitadoPOST JSON `{"text": "..."}` ao concluir cada análise (compatível com Slack/Teams)WebhookURLEndpoint do incoming webhook> **Consumers via cron:** configure o `cron_consumers_runner` no `app/etc/env.php`(`cron_run: true` + `consumers_wait_for_messages: 0`) para o Magento reciclar o consumer `egsn.store.intelligence.consumer` automaticamente — evita daemons com código antigo em memória após deploys.

Funcionalidades
---------------

[](#funcionalidades)

- **30 collectors** organizados em 3 categorias: Performance (7), Erros (8) e Vendas (15)
- **Análise por IA**: envia dados coletados para Claude (Anthropic), OpenAI ou Gemini (Google AI Studio) e processa a resposta em recomendações acionáveis
- **Painel admin**: dashboard com score geral, histórico de análises e lista de recomendações priorizadas (crítico / aviso / melhoria)
- **GraphQL API**: endpoints para consultar análises, recomendações e dispensar itens
- **REST API**: endpoints `GET /V1/egsn-si/analysis` e `POST /V1/egsn-si/analysis/run`
- **Cron automático**: janela de execução configurável, com suporte a horários que cruzam a meia-noite
- **Notificações por email**: relatório HTML com score, resumo da IA e recomendações críticas
- **Exportação CSV**: exportação de análise completa com todos os resultados dos collectors
- **Message Queue**: execução assíncrona via RabbitMQ/MySQL queue

Collectors disponíveis
----------------------

[](#collectors-disponíveis)

### Performance

[](#performance)

- OpcacheCollector — status do OPcache
- CacheHitRatioCollector — taxa de acerto do cache Magento
- SlowQueriesCollector — queries MySQL lentas
- UnoptimizedImagesCollector — imagens acima do threshold configurado
- JsCssMinificationCollector — minificação de JS/CSS habilitada
- PageLoadTimeCollector — tempo de carregamento estimado
- ModulePerformanceCollector — módulos com impacto em performance

### Erros

[](#erros)

- ExceptionLogCollector — exceções no exception.log
- SystemLogCollector — erros no system.log
- Missing404ImagesCollector — imagens referenciadas mas ausentes
- BrokenLinksCollector — links quebrados detectados
- FailedPaymentsCollector — pagamentos com falha recentes
- CronFailuresCollector — falhas no cron Magento
- EmailQueueCollector — emails com falha na fila
- IntegrationErrorsCollector — erros em logs de integrações (ERP, API, etc.)

### Vendas

[](#vendas)

- AbandonedCartsCollector — carrinhos abandonados
- ZeroResultSearchesCollector — buscas sem resultado
- CheckoutFunnelCollector — abandono no funil de checkout
- ProductsMissingImageCollector — produtos sem imagem
- ProductsMissingDescriptionCollector — produtos sem descrição
- EmptyCategoriesCollector — categorias sem produtos
- ExpiredCouponsCollector — cupons vencidos ativos
- PriceBelowCostCollector — produtos com preço abaixo do custo
- OutOfStockCollector — produtos esgotados
- NoSalesCollector — produtos sem vendas no período configurado
- CrossSellOpportunitiesCollector — oportunidades de cross-sell
- InactiveCustomersCollector — clientes inativos no período configurado
- LeastViewedProductsCollector — produtos menos visualizados
- TopSellingProductsCollector — produtos mais vendidos
- NegativeReviewsCollector — avaliações negativas recentes

Changelog
---------

[](#changelog)

Todas as mudanças relevantes deste módulo são documentadas neste arquivo. O formato segue boas práticas inspiradas em Keep a Changelog e Semantic Versioning.

### \[Unreleased\]

[](#unreleased)

#### Changed

[](#changed)

- Agendamento do cron de análise agora é controlado pelo admin no grupo Agendamento: novos campos "Frequência" (Diária/Semanal/Mensal) e "Horário de Início" definem quando o cron dispara. Campo adicional "Expressão Cron Personalizada" aceita sintaxe crontab completa (`*`, listas, intervalos, steps como `*/5 * * * *` e atalhos `@hourly`/`@daily`/`@weekly`/`@monthly`/`@yearly`) e, quando preenchido, sobrescreve Frequência/Horário; expressões inválidas e `@reboot` são rejeitados na validação. Backend model compõe a expressão e grava em `crontab/default/jobs/egsn_store_intelligence_run/schedule/cron_expr`, consumida via `config_path` no crontab.xml (padrão Magento de cron configurável). Antes o disparo era fixo à 01:00 e janelas fora desse horário nunca executavam.

#### Added

[](#added)

- Nova opção "Cada website separadamente" no Escopo da Análise: cada execução (cron, manual ou API) publica uma mensagem por website e gera N análises por rodada, cada uma restrita ao seu website. O `website_id` viaja no payload da fila e o Orchestrator o usa no lugar do config.

#### Fixed

[](#fixed)

- Janela de execução (`RunAnalysis`) agora é comparada no timezone da loja, o mesmo usado pelo Magento para o match das expressões cron. Antes o check usava UTC, podendo pular execuções silenciosamente em janelas estreitas.

### \[1.1.0\] - 2026-07-16

[](#110---2026-07-16)

#### Fixed

[](#fixed-1)

- **11 collectors que falhavam silenciosamente** em instalações com catalog staging (Adobe Commerce): joins EAV agora usam o `linkField` do `MetadataPool` (`row_id`/`entity_id`), compatível com CE e EE. Afetados: no\_sales, least\_viewed, cross\_sell\_opportunities, negative\_reviews, missing\_images\_404, missing\_image, missing\_description, empty\_categories, price\_below\_cost, out\_of\_stock (nome), expired\_coupons (coluna `uses_total` inexistente → `salesrule_coupon.times_used`).
- `least_viewed`: coluna `object_id` inexistente em `report_viewed_product_aggregated_daily` → `product_id`.
- `page_load_time` não valida mais TLS ao medir a própria loja (certificado self-signed de dev impedia a medição).
- Notas de erro dos collectors agora incluem a mensagem real da exceção (antes só "tables not accessible").

#### Added

[](#added-1)

- Comando `bin/magento egsn:si:selfcheck`: roda os 30 collectors contra o banco real e retorna exit 1 se algum falhar — pega SQL quebrado que testes unitários (com banco mockado) não detectam.
- Webhook também notifica análises com falha (consumer e watchdog), incluindo o motivo.
- Coluna "Escopo" no Histórico (Global ou nome do website) e ID linkando para a nova página de detalhe da análise (status, score, resumo, resultados dos 30 collectors com observações, exportação CSV).
- Consumo de tokens de IA do mês (usado × orçamento) exibido no card Ações do dashboard.
- Data patch que dispensa duplicatas legadas de recomendações (versões antigas ativas do mesmo collector).
- `CollectorPool` compartilhado entre Orchestrator e self-check (lista única de collectors no di.xml).
- Watchdog no cron de limpeza: análises presas em "Em execução" além do timeout global são marcadas como falhas (com motivo).
- Coluna `error_message` na análise; o Histórico mostra o motivo da falha como tooltip no badge de status.
- Fallback de provider de IA: se o provider configurado falhar (rate limit, chave inválida), os demais providers configurados são tentados antes de marcar falha.
- Dashboard: cards de score por categoria (Performance / Erros / Vendas).
- Dashboard: card "O que mudou desde a última análise" comparando as duas últimas análises concluídas (problemas novos, resolvidos e persistentes).
- Botão "Analisar Agora" com acompanhamento do status (polling) e atualização automática da página ao concluir.
- Deduplicação de recomendações: ao concluir uma análise, versões antigas da mesma recomendação (mesmo collector + título) são dispensadas automaticamente.
- Notificação via webhook genérico (`{"text": "..."}`, compatível com Slack e Microsoft Teams).
- Orçamento mensal de tokens de IA com bloqueio da chamada de IA ao atingir o limite (a análise continua com score determinístico).
- Escopo de análise por website: collectors de vendas/pedidos filtram por `store_id`/`website_id` do website configurado; coluna `website_id` na análise.
- Data interfaces tipadas (`AnalysisInterface`, `RecommendationInterface`) fechando o contrato REST/GraphQL de `getById`/`getLatest`.
- i18n: strings do admin extraídas para `__()`/`$t()` com `i18n/pt_BR.csv` e `i18n/en_US.csv`.
- Testes para PromptBuilder, EmailNotifier, WebhookNotifier, CsvExporter, GarbageCollection (watchdog), ProviderPool (fallback) e collectors FailedPayments/AbandonedCarts.
- Coluna "Análise" na grid de recomendações, identificando de qual análise cada recomendação veio.
- Ícone SVG próprio (hexágono com circuito, derivado do logo EGSN) no grupo "Egsn" do menu lateral do admin, aplicado via CSS mask com `currentColor`.
- Link do título da recomendação na listagem para a tela de detalhe.

#### Changed

[](#changed-1)

- ⚠️ Enums do GraphQL (`AnalysisStatus`, `AnalysisCategory`, `RecommendationPriority`) agora em SCREAMING\_SNAKE\_CASE (`COMPLETED`, `PERFORMANCE`, `CRITICAL`…), conforme o padrão Magento — breaking para clientes GraphQL que usavam valores minúsculos.
- ⚠️ `AnalysisRepositoryInterface::getById`/`getLatest` retornam `AnalysisInterface` tipada (antes array); `getLatest` lança `NoSuchEntityException` quando não há análise concluída (antes retornava vazio).
- Conformidade total com o Magento Coding Standard: 0 erros e 0 warnings no PHPCS (docblocks completos, linhas ≤120, `Filesystem`/`Io\File` no lugar de `is_dir`/`basename`; raw SQL dos collectors mantido com `phpcs:disable` justificado).
- ⚠️ Score geral agora é calculado deterministicamente (média dos scores dos collectors ponderada pela severidade do status) em vez de gerado pela IA — análises com os mesmos dados produzem o mesmo score. A escala muda em relação às análises antigas, cujo score era um julgamento subjetivo do modelo.
- Providers de IA (Claude, OpenAI, Gemini) passam a usar `temperature: 0`, e o prompt instrui a IA a citar somente problemas presentes nos dados — reduz variação e alucinação em resumos/recomendações.
- Documentação atualizada para incluir o provedor Gemini (Google AI Studio).
- `db_schema.xml` com `identity="false"` explícito em colunas int/smallint não auto-incremento.

#### Fixed

[](#fixed-2)

- Conformidade com o Magento Coding Standard (0 erros no PHPCS): escapes explícitos nos templates, `$escaper` no lugar dos métodos de escape do block, interfaces `HttpGet/HttpPostActionInterface` nos controllers, `AnalysisRepository` migrado para select builder com log de falhas, `EmailNotifier` com `Escaper`, `CsvExporter` com `Filesystem` do framework, remoção de código de debug e dos ui\_components/grid collections sem uso, `setup_version` removido do `module.xml` e `dismissRecommendation` retornando o resultado real do update.
- Ícone fantasma antes de "Dashboard" no menu admin: o id `Egsn_StoreIntelligence::dashboard` gerava a classe CSS `item-dashboard`, que colide com o ícone do Dashboard nativo do tema admin; id do item de menu renomeado para `Egsn_StoreIntelligence::si_dashboard` (recurso de ACL inalterado).
- Labels de data no gráfico de evolução do score do dashboard (coluna `created_at` ausente no `getList`).
- Plural incorreto "recomendaçãoões" na listagem de recomendações.
- Teste unitário do `ClaudeProvider` atualizado para o construtor com `EncryptorInterface`.

### \[1.0.0\] - 2026-06-25 - EGSN-0000

[](#100---2026-06-25---egsn-0000)

#### Added

[](#added-2)

- Versão inicial do módulo com 30 collectors, integração com Claude e OpenAI, painel administrativo, API REST, GraphQL, cron automático e notificações por email.

Licença
-------

[](#licença)

[OSL-3.0](https://opensource.org/licenses/OSL-3.0) / [AFL-3.0](https://opensource.org/licenses/AFL-3.0)

Apoie o projeto
---------------

[](#apoie-o-projeto)

Este módulo é gratuito e mantido nas horas vagas. Se ele te poupou tempo ou dinheiro, considere fazer uma doação via PIX:

**Chave PIX (CNPJ):** `49.168.504/0001-04` [![QR Code PIX](docs/img/pix-qrcode.png)](docs/img/pix-qrcode.png)

Aponte a câmera do seu banco para o QR Code acima ou use a chave copia-e-cola. Qualquer valor ajuda a manter o desenvolvimento e o suporte ativos. Obrigado! 🙏

Qualquer dúvida ou sugestão, entre em contato pelo email:  ou por Whatsapp: +55 (21) 98653-0487

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance91

Actively maintained with recent releases

Popularity1

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

45d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/35ec81cc8b850f90f5a0057829e6d4c86d67aa839509f4747d8f3f98f040b44b?d=identicon)[Esmerioneto](/maintainers/Esmerioneto)

---

Top Contributors

[![Esmerioneto](https://avatars.githubusercontent.com/u/8236850?v=4)](https://github.com/Esmerioneto "Esmerioneto (4 commits)")

### Embed Badge

![Health badge](/badges/egsn-store-intelligence/health.svg)

```
[![Health](https://phpackages.com/badges/egsn-store-intelligence/health.svg)](https://phpackages.com/packages/egsn-store-intelligence)
```

###  Alternatives

[mollie/magento2

Mollie Payment Module for Magento 2

1162.0M19](/packages/mollie-magento2)[run-as-root/magento2-prometheus-exporter

Magento2 Prometheus Exporter

68365.7k](/packages/run-as-root-magento2-prometheus-exporter)[dotdigital/dotdigital-magento2-extension

Dotdigital for Magento 2

50413.8k28](/packages/dotdigital-dotdigital-magento2-extension)[loki/magento2-components

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

1019.5k30](/packages/loki-magento2-components)[yireo/magento2-emailtester2

Preview transactional emails and test send them in your backend

34452.5k](/packages/yireo-magento2-emailtester2)[buckaroo/magento2

Buckaroo Magento 2 extension

32431.3k8](/packages/buckaroo-magento2)

PHPackages © 2026

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