---
title: "Sistema de Importacao de Dados de Produtos Multi-Fornecedores"
description: "Motor de importacao critico do marketplace B2B European Sourcing - 254+ fornecedores, 120+ tabelas no banco, 8 tipos de importacao CSV, 5 idiomas, 7 anos de desenvolvimento (2009-2016)."
locale: "pt"
canonical: "https://portfolio.josedacosta.info/pt/realizacoes/import-european-sourcing"
source: "https://portfolio.josedacosta.info/pt/realizacoes/import-european-sourcing.md"
html_source: "https://portfolio.josedacosta.info/pt/realizacoes/import-european-sourcing"
author: "José DA COSTA"
date: "2007"
type: "achievement"
slug: "import-european-sourcing"
tags: ["PHP 5.x", "MySQL", "Symfony 2.x", "Smarty", "jQuery", "Bootstrap", "Docker", "Vagrant", "Apache", "Memcached", "ProxySQL", "FTP", "CSV", "XML"]
generated_at: "2026-04-23T15:46:40.392Z"
---

# Sistema de Importacao de Dados de Produtos Multi-Fornecedores

Motor de importacao critico do marketplace B2B European Sourcing - 254+ fornecedores, 120+ tabelas no banco, 8 tipos de importacao CSV, 5 idiomas, 7 anos de desenvolvimento (2009-2016).

**Date:** 2009 - 2016  
**Duration:** ~7 anos  
**Role:** Software Engineer depois Senior Software Engineer  
**Technologies:** PHP 5.x, MySQL, Symfony 2.x, Smarty, jQuery, Bootstrap, Docker, Vagrant, Apache, Memcached, ProxySQL, FTP, CSV, XML

### Key Metrics

- Linhas de codigo: **-** - Codigo PHP aplicativo (excl. terceiros)
- Fornecedores: **-** - 254+ pastas de importacao identificadas
- Tabelas no banco: **-** - 120+ tabelas MySQL
- Idiomas: **-** - FR, EN, DE, ES, IT

## Apresentacao e definicao

_Um motor de importacao centralizado para o mercado europeu de produtos promocionais_

### Domain

Objetos publicitarios e promocionais B2B - um setor que conecta fabricantes europeus de produtos de marca (canetas, texteis, acessorios de escritorio, brindes corporativos) com revendedores que personalizam e comercializam.

### Scope

Importacao massiva de catalogos de fornecedores (imagens, dados de produtos, variantes, marcacoes, opcoes tarifarias, estoques), atualizacao automatica via feeds FTP/XML/CSV, gestao de perfis de fornecedores, geracao de catalogos PDF e gestao de assinaturas.

**Content:** O projeto **Import European Sourcing** constitui o sistema de importacao e gestao de dados de produtos da plataforma **European Sourcing**, um ator importante do setor de objetos publicitarios e promocionais na Europa. European Sourcing e um marketplace B2B que conecta **fornecedores** de objetos publicitarios (fabricantes, importadores) com **distribuidores/revendedores** em toda a Europa.

O sistema ingere e normaliza catalogos de **254+ fornecedores** em formatos heterogeneos (CSV, XML, feeds FTP), processa-os atraves de pipelines de validacao e transformacao, e grava em um banco MySQL centralizado que alimenta um motor de busca multilingue em 5 idiomas europeus.

O sistema de importacao evoluiu em duas geracoes principais:
- **Legacy (2007-2016)**: Aplicacao PHP monolitica construida em um framework MVC customizado (SQLI), com scripts batch para importacao de catalogos e atualizacao automatica via FTP
- **Moderno (2016-2019)**: Extranet Symfony (v2) introduzindo filas de importacao assincronas, esquemas CSV estruturados para 8 tipos de importacao, e acompanhamento de progresso em tempo real

**Domain:** Dominio de negocio

**Scope:** Escopo funcional

## Objetivos, contexto, desafios e riscos

_Entendendo os motivadores de negocio por tras do desafio tecnico_

### Contexto

O projeto foi inicialmente desenvolvido pela **SQLI** (empresa francesa de servicos de TI) em um framework PHP customizado com SQL Server, depois migrado para MySQL. A arquitetura inicial (por volta de 2007-2010) baseava-se em um padrao MVC customizado com Smarty para templates.

O projeto era de propriedade da **Medialeads** (empresa por tras do European Sourcing), cuja organizacao GitHub e `github.com/medialeads`. Entre 2016 e 2019, uma versao modernizada da extranet (v2) foi desenvolvida em Symfony com Bootstrap, Docker/Vagrant, e um sistema de importacao assincrono com fila.

A infraestrutura baseava-se em uma **arquitetura front/back MySQL** com balanceamento de carga: um MySQL front (192.168.0.103) para o site publico e um MySQL back (192.168.0.102) para a extranet de administracao, com sincronizacao por batch.

## Etapas - O que eu fiz

_Uma jornada de 12 anos, da retomada do legacy ate importacoes assincronas modernas_

**Phase1 Title:** Desenvolvimento inicial e migracao

**Phase1 Period:** 2007-2010

**Phase2 Title:** Enriquecimento funcional

**Phase2 Period:** 2010-2016

**Phase3 Title:** Automacao de importacoes (FTP/XML)

**Phase3 Period:** 2015-2018

**Phase4 Title:** Extranet v2 e importacao moderna

**Phase4 Period:** 2016-2019

## Atores e interacoes

_Uma equipe multi-geracional de 20+ contribuidores ao longo de 12 anos_

**Content:** **20 contribuidores identificados** nos arquivos PHP (@author), metadados SVN, logs Git, capturas de tela e arquivos de configuracao.

O projeto evoluiu em duas fases de equipe distintas:
- **Fase SQLI (2007-2010)**: 3 desenvolvedores principais (jebanquey, bvermeulen, lhuangoc) produziram 79,8% do codigo original
- **Fase Medialeads (2013-2019)**: José DA COSTA assumiu como desenvolvedor principal (99,8% dos commits SVN), depois acompanhado por Thomas C., fancyweb, amandine, bastien para a modernizacao

**Atores nao-tecnicos** incluem operadores de importacao (Rahnia Sadaoui, Anthony Brifouillere, Paul Meyer), gerentes comerciais, e 250+ fornecedores externos com feeds automatizados.

O desenvolvimento seguia um modelo de entrega incremental (sem metodologia Agile formal identificada), com entregas tematicas organizadas em um diretorio `livraisons/`.

## Resultados

_Impacto para mim e para a empresa_

## O dia seguinte do projeto

_O que aconteceu apos a implantacao final_

**Content:** **Resultado imediato** (2019): Os backups exaustivos de marco e agosto de 2019 (incluindo bash_history, chaves SSH, capturas de tela e multiplos dumps SQL) sugerem uma fase de transicao - provavelmente relacionada a uma saida ou arquivamento. O backup de agosto de 2019 inclui 441 capturas de tela documentando sistematicamente todo o ecossistema.

**A medio prazo**: O ultimo arquivo modificado no backup data de novembro de 2019. A exaustividade da documentacao (paginas wiki, documentos de processos, scripts de implantacao) indica um esforco consciente para garantir a transferencia de conhecimento.

**Estado atual**: O projeto esta arquivado. A plataforma European Sourcing continuou a operar independentemente, mas o codebase original documentado nestes backups representa um instantaneo de um sistema maduro de 12 anos em seu estado final. As escolhas tecnicas (Symfony v2, Docker, filas assincronas) demonstraram a consciencia da equipe sobre a necessidade de modernizacao.

A longevidade da arquitetura inicial (12 anos em producao) valida muitas das escolhas de design originais, particularmente a separacao front/back MySQL e a estrategia de desnormalizacao para a performance de busca multilingue.

## Minha reflexao critica

_Retrospectiva honesta sobre 12 anos de engenharia_
