Contact
Vamos trabalhar juntos
Plataforma de Exportacao de Dados de Produtos B2B

Plataforma de Exportacao de Dados de Produtos B2B

Aplicacao web interna B2B automatizando a exportacao de catalogos de produtos promocionais - geracao de CSV com imagens e sincronizacao direta via API WebService PrestaShop para revendedores.

2013 - 2016
~3 anos (desenvolvimento ativo 2013-2015, manutencao ate 2016)
Senior Software Engineer (~93% do codigo aplicativo)
PHP 5mynd-framework (custom MVC)MySQLApacheBootstrap 2jQuery 1.8jQuery UIDynatreePrestaShop WebService APIZend_MailSimpleTestSVN (Subversion)OVH Dedicated ServersLinux (cron, PID)

Linhas de codigo

28,794

PHP, JavaScript, CSS

Arquivos fonte

111

Arquivos da aplicacao (excl. framework)

Tabelas no banco

36

30 leitura + 6 leitura/escrita

Idiomas suportados

5

FR, EN, DE, IT, ES

Apresentacao

Definicao e escopo do projeto

A Plataforma de Exportacao de Dados de Produtos B2B (nome interno: `europeansourcing_export`) e uma aplicacao web interna desenvolvida para a European Sourcing (nome comercial: EuropeanTool), um ator importante no setor de produtos promocionais e texteis com sede em Agen e Bordeaux, Franca.

Esta aplicacao constitui o modulo de exportacao de dados de produtos da plataforma European Sourcing. Ela permite aos revendedores (distribuidores de produtos promocionais) exportar os catalogos de produtos dos fornecedores para seus proprios sistemas - seja como arquivos CSV (com imagens) ou por sincronizacao direta via API WebService PrestaShop.

O sistema gerencia o ciclo de vida completo da solicitacao a entrega: autenticacao, validacao, faturamento, execucao em lote, monitoramento de progresso e notificacao automatica por email em cada etapa.

Dominio

Produtos promocionais e texteis - sourcing, distribuicao, e-commerce B2B

Usuarios alvo

Revendedores B2B (distribuidores de produtos promocionais) assinantes da European Sourcing, e a equipe comercial e tecnica da EuropeanTool (administradores)

Escopo funcional
Exportacao CSV com ZIP e imagens
Sincronizacao WebService PrestaShop
Gestao de cotas de revendedores
Workflow de faturamento e validacao
Processamento paralelo de exportacoes
Monitoramento de processos em tempo real
Mapeamento de categorias (ES ↔ PrestaShop)
Notificacoes por email em multiplas etapas
Dados de produtos multilinguais (5 idiomas)
Architecture Overview
MVC monolithic architecture with CLI batch processing and PrestaShop API integration
File Type Distribution

Objetivos, contexto, desafios e riscos

Visao estrategica e restricoes operacionais

Objetivos
  • Permitir que revendedores assinantes exportem fichas de produtos (dados + imagens) dos fornecedores selecionados em formato CSV ou via WebService PrestaShop
  • Automatizar a sincronizacao de catalogos de produtos entre o banco European Sourcing e as lojas PrestaShop dos revendedores
  • Gerenciar um sistema de cotas para controlar o volume de exportacoes por revendedor
  • Fornecer um workflow completo de validacao: solicitacao → confirmacao → faturamento → execucao → entrega por email
  • Suportar execucao paralela de ate 6 exportacoes simultaneas com gestao robusta de processos (PID, kill, deteccao de zumbis)
Export Lifecycle (State Machine)
Complete export lifecycle: from request to delivery with error recovery and zombie detection
Contexto

O projeto faz parte de um ecossistema European Sourcing mais amplo com 15+ aplicacoes interconectadas: a plataforma principal, extranet, front-end de revendedores, modulo de traducao, back-office de fornecedores, API e muitas outras.

A aplicacao se baseia em um framework PHP MVC personalizado (mynd-framework) e utiliza o banco de dados compartilhado `europeansourcing` (MySQL) hospedado em servidores dedicados OVH. A arquitetura segue um padrao monolitico PHP classico com scripts CLI para processamento em lote em segundo plano.

Um wiki DokuWiki interno hospedado em `wikidev.es-recette.com` servia como documentacao tecnica compartilhada. A pagina `es_export` documenta especificamente este modulo, assinada por Jose DA COSTA em 03/11/2016.

Desafios
  • Geracao de receita - as exportacoes sao um servico faturado. O workflow inclui explicitamente o envio de fatura antes da execucao
  • Satisfacao do cliente B2B - a qualidade e confiabilidade das exportacoes impactam diretamente a capacidade dos revendedores de abastecer suas lojas online
  • Volume de dados - o sistema lida com ate 500.000 referencias de produtos com imagens
  • Suporte multilingual - as exportacoes gerenciam 5 idiomas (FR, EN, DE, IT, ES)
Riscos

Desempenho

Exportacoes manipulam grandes volumes de dados (imagens + CSV). Limite de memoria definido como ilimitado (-1) com tratamento explicito de erros de memoria

Concorrencia e deadlocks

Maximo de 6 exportacoes paralelas, 3 por IP de servidor, 1 por URL PrestaShop - projetado para prevenir deadlocks MySQL

Processos zumbis

Mecanismo de deteccao via /proc/PID que redefine automaticamente exportacoes travadas para status "asked" com rotulo "zombie"

Seguranca

Autenticacao usando MD5 (sem salt), execucao de comandos shell (exec) no codigo PHP para gestao de processos

Database Schema (Export Tables)
Entity-relationship diagram of the 6 export-specific tables (read/write) linked to shared product and reseller tables

Fases de implementacao

Acoes concretas e contribuicoes pessoais

Project Progress Timeline
Phase 1
Fase 1 - Exportacao CSV
~2013
  • Desenvolveu o modulo de exportacao de dados de produtos em formato CSV do zero
  • Implementou a geracao automatica de ZIP contendo dados CSV e um ZIP separado para imagens de produtos
  • Construiu o workflow completo: solicitacao → validacao do admin → execucao em lote → envio por email com links de download
  • Projetou o sistema de autenticacao dupla (revendedores via Contact + administradores via Extranet)
Phase 2
Fase 2 - CSV formato PrestaShop
~2013-2014
  • Adicionou um segundo formato de exportacao CSV especificamente estruturado para importacao PrestaShop
  • Criou a classe dedicada CSV_Prestashop com mapeamento de campos compativel com PrestaShop
  • Primeiras exportacoes geradas em 14 de fevereiro de 2014 (export-akor-csv)
Phase 3
Fase 3 - Integracao WebService PrestaShop
~2014
  • Integrou a API WebService PrestaShop para sincronizacao direta de produtos
  • Implementou operacoes CRUD completas: produtos, categorias, fornecedores, marcas, atributos e imagens via API REST/XML
  • Construiu suporte multi-loja PrestaShop (grupos de lojas)
  • Desenvolveu o motor de mapeamento de categorias entre European Sourcing e taxonomias PrestaShop
  • Implementou sistema de atualizacao incremental baseado em intervalo configuravel (em dias)
  • Projetou o sistema de gestao de concorrencia: 6 exportacoes max em paralelo, 3 max por IP, prevencao de deadlocks
Phase 4
Fase 4 - Ferramentas de administracao
~2014
  • Construiu a interface de administracao para gestao de status em massa
  • Desenvolveu ferramentas de limpeza: exclusao de todos os produtos ES, categorias, fornecedores, marcas e atributos em um WebService PrestaShop remoto
  • Implementou monitoramento de processos em tempo real (integracao ps aux)
  • Criou o mecanismo de deteccao de processos zumbis e recuperacao automatica
Phase 5
Fase 5 - Notificacoes e cotas
~T3 2014
  • Implementou o sistema de cotas por revendedor (cotas CSV e WebService gerenciadas separadamente)
  • Construiu o sistema de notificacao automatica por email em cada etapa do workflow
  • Coordenou com Dominique para notificacoes adicionais a equipe comercial (setembro 2014)
WebService Export Sequence
Complete WebService export flow: from reseller request through admin validation, cron execution, PrestaShop API synchronization, to email notification

Equipe e interacoes

Colaboracao e ecossistema de partes interessadas

A equipe era compacta: 3 desenvolvedores + 2 pessoas do comercial/admin, operando sem metodologia Agil formal mas usando um bugtracker para rastreamento de problemas (referencia #0000919 encontrada no codigo).

Code Contribution Distribution
Equipe de desenvolvimento
~93%Jose DA COSTA

Desenvolvedor principal - ~93% do codigo aplicativo (~11.800 / 12.632 linhas). Projetou a arquitetura, construiu todos os controladores, modelos, views, scripts CLI e a integracao PrestaShop. Autor da documentacao wiki interna.

~6%Guillaume (wamania)

Autor do framework e desenvolvedor - Criou o mynd-framework (framework MVC, ~5.663 linhas) compartilhado entre os projetos do ecossistema. Configurou a estrutura inicial do projeto e contribuiu com ~6% do codigo aplicativo.

~1%Dominique (dom)

Desenvolvedor (intervencoes pontuais) - 7 contribuicoes identificadas (~100-150 linhas): adicoes de notificacoes por email, correcoes bugtracker #919, tratamento de erros de conteudo duplicado.

Equipe comercial e administracao
Carine Ruffier

Contato comercial - Destinataria das notificacoes de exportacao (solicitacoes, confirmacoes, erros)

Celine

Suporte administrativo - Destinataria das notificacoes de exportacao em todos os ambientes

Partes interessadas externas

Revendedores B2B usando o modulo para abastecer suas lojas PrestaShop, fornecedores de produtos promocionais (Anda, ELASTO FORM, KARL KNAUER, PAUL STRICKER, PORTIA, Troika, etc.), OVH (hospedagem de producao), Systonic (infraestrutura historica, servidor SVN).

Resultados e impacto

Resultados mensuraveis para o projeto e o negocio

Features Delivered by Category
Funcionalidades entregues
  • Sistema completo de autenticacao dupla (revendedores + administradores)
  • Modulo de exportacao CSV com geracao automatica de ZIP (dados + imagens)
  • Exportacao CSV em formato especifico PrestaShop
  • Sincronizacao WebService PrestaShop via API REST/XML
  • Gestao completa do ciclo de vida das exportacoes (asked → confirmed → running → scheduled/none/error)
  • Interface de administracao com monitoramento de processos em tempo real
  • Ferramentas de limpeza PrestaShop (produtos, categorias, fornecedores, marcas, atributos)
  • Sistema de cotas por revendedor (CSV e WebService separados)
  • Sistema de notificacao por email multi-destinatarios
  • Motor de mapeamento de categorias entre plataformas (European Sourcing ↔ PrestaShop)
  • Deteccao automatica de processos zumbis e recuperacao
  • Suporte multilingual de dados de produtos (5 idiomas)
  • Suporte multi-loja PrestaShop
  • Sistema de atualizacao incremental configuravel
Technical Metrics
Impacto no negocio
  • Geracao direta de receita - cada exportacao e um servico faturado com workflow de faturamento integrado
  • Capacidade de catalogo - sistema dimensionado para ate 500.000 referencias de produtos
  • Substituicao de processo manual custoso - automacao da integracao de catalogos de fornecedores nas lojas de revendedores
  • Habilitacao de clientes B2B - os revendedores podem abastecer automaticamente seus sites e-commerce PrestaShop com dados e imagens de produtos atualizados
Crescimento pessoal
  • Primeira experiencia projetando e construindo uma plataforma completa de integracao de dados B2B de ponta a ponta
  • Dominio da API WebService PrestaShop (REST/XML) com todas as suas particularidades e comportamentos nao documentados
  • Aprendizado de gestao de processos concorrentes em PHP - rastreamento de PID, deteccao de zumbis, prevencao de deadlocks
  • Compreensao profunda dos workflows de e-commerce B2B: cotas, integracao de faturamento, catalogos multilinguais
  • Fortalecimento das habilidades MySQL com consultas complexas (subconsultas, joins multiplos, FIELD ORDER)
  • Experiencia de gestao de um sistema em producao sob pressao de negocio real (servico faturado = zero tolerancia para interrupcoes)
Skills Mobilized (Radar)

Apos o projeto

O que aconteceu apos a entrega

Imediato: A plataforma foi ativamente utilizada pelos revendedores European Sourcing para sincronizacao de catalogos. O sistema de notificacoes adicionado em setembro de 2014 mostra que a plataforma gerava atividade comercial real, com a equipe comercial sendo notificada de cada solicitacao de exportacao.

A medio prazo: A ultima atualizacao do wiki (novembro de 2016) indica que a plataforma permaneceu operacional por pelo menos 2 anos apos a fase principal de desenvolvimento. O codigo foi mantido, mas nenhuma funcionalidade importante foi adicionada apos o T4 2014.

Estado atual: O projeto esta arquivado (backup NAS datado de fevereiro de 2015). A European Sourcing desde entao evoluiu sua stack tecnologica. O modulo de exportacao cumpriu seu proposito durante uma fase critica de crescimento da empresa, permitindo que dezenas de revendedores integrassem catalogos de produtos promocionais em suas plataformas de e-commerce.

Legado: Os padroes desenvolvidos para este projeto - processamento em lote concorrente, deteccao de zumbis, maquinas de estado de workflow, mapeamento de categorias entre plataformas - provaram ser conceitos reutilizaveis em projetos posteriores. A experiencia de construir uma ferramenta B2B geradora de receita moldou uma mentalidade orientada a produto que se mostrou valiosa em funcoes subsequentes.

Infrastructure & Deployment
Development to production deployment architecture: local workstations, OVH servers, and reseller PrestaShop shops
Architecture Complexity Distribution

Reflexao critica

Analise retrospectiva e licoes aprendidas

Pontos fortes
  • Arquitetura modular clara - separacao neta entre interface web (controladores/views) e scripts de execucao CLI, permitindo exportacoes em segundo plano sem bloquear a interface
  • Gestao robusta de concorrencia - o sistema de limitacao multinivel (6 max, 3 por IP, 1 por URL) com deteccao de deadlocks MySQL demonstra maturidade operacional adquirida pela experiencia em producao
  • Deteccao de processos zumbis - o mecanismo de verificacao via /proc/PID e uma solucao elegante para detectar exportacoes travadas e recupera-las automaticamente
  • Workflow de negocio completo - o ciclo de vida das exportacoes (asked → confirmed → running → scheduled → none/error) com notificacoes por email em cada etapa representa um processo de negocio bem implementado
  • Sistema de cotas - a gestao granular de cotas por revendedor (CSV e WebService separados) mostra compreensao das restricoes comerciais B2B
Pontos de melhoria
  • Seguranca - autenticacao usa MD5 sem salt (obsoleto e vulneravel). Chamadas exec() com parametros insuficientemente sanitizados (PID) apresentam risco de injecao de comandos
  • Divida tecnica do framework - o mynd-framework personalizado, embora funcional, carece da robustez e documentacao dos frameworks comunitarios (Symfony, Laravel)
  • Sem testes aplicativos - os unicos testes presentes pertencem ao ORM do framework. O codigo de negocio de exportacao nao tem testes unitarios ou de integracao
  • Codigo procedural nos CLIs - os scripts CLI usam muitas variaveis globais e goto (labels mail:, nomail:), reduzindo a manutenibilidade
  • Sem fila de mensagens - as exportacoes sao gerenciadas por consultas SQL diretas em vez de um sistema de filas adequado (RabbitMQ, Redis), limitando a escalabilidade
O que eu faria diferente
  • Usar um framework PHP padrao (Symfony ou Laravel) em vez de um framework personalizado para se beneficiar do ecossistema, documentacao e comunidade
  • Implementar um sistema de fila de mensagens adequado (RabbitMQ, Beanstalkd) para gestao assincrona de exportacoes
  • Usar bcrypt/argon2 para hash de senhas em vez de MD5
  • Adicionar testes funcionais no workflow de exportacao
  • Configurar um pipeline CI/CD para automatizar implantacoes
  • Usar um supervisor de processos (Supervisord) em vez de gerenciar processos diretamente no codigo PHP
Licoes duradouras
  • A gestao de concorrencia em processamento em lote e um problema complexo que requer uma abordagem multinivel (limites globais + por IP + por URL + deteccao de zumbis)
  • A integracao com APIs de terceiros (PrestaShop WebService) requer gestao fina de erros, logica de retry e gestao de compatibilidade entre versoes
  • Um workflow de negocio envolvendo faturamento deve ser robusto: cada etapa deve ser rastreada, erros devem ser notificados, e o sistema deve se recuperar graciosamente apos falhas
  • O mapeamento entre sistemas de categorizacao heterogeneos e um desafio recorrente em integracoes de e-commerce B2B

Competencias aplicadas

Competencias tecnicas e humanas aplicadas

Galeria de imagens

Capturas e visuais do projeto