Quem precisa de receitas de comércio eletrônico? Para SAP Commerce e além

Meu hobby é automação de varejo online. Há muitos anos, mesmo nos fins de semana, não saio rastejando desse "pântano". Sim, provavelmente parece louco e até engraçado. Como você pode se deixar levar por um negócio tão chato? - alguns dirão. O que há para se deixar levar, é apenas algum tipo de tópico privado para um arquiteto de software que se preze! - outros dirão.



Na verdade, à primeira vista, este é, como eles dizem, um tópico não revelado. Na verdade, esta é uma coleção de diferentes tópicos, de uma forma ou de outra, arrastados para o e-commerce. E no final acabou sendo exatamente o que eu amo: integração de tecnologia.



E desde 2016 tenho um blog de tecnologia, hybrismart.com . Essa "habra" em miniatura, apenas em inglês e com foco em um tópico próximo a mim - desenvolvimento no  SAP Commerce... Formamos uma pequena empresa com várias dezenas de milhares de autores aqui, mas até agora apenas alguns deles estão escrevendo para o blog. Bem, ok, poucos escrevem até agora. Dez. Mas estamos tentando. O blog já acumulou cerca de duzentos artigos, a maioria grandes e muito extensos sobre uma variedade de tópicos, de uma forma ou de outra relacionados com a ecom. Em uma parte significativa, este ainda é um blog pessoal, então estou assumindo a responsabilidade aqui, não nosso serviço de relações públicas. Mas isso vem do coração, realmente.



Como você pode imaginar pelo nome, hybrismart é sobre hybris (o que é?). E quase todo mundo que o encontra sabe sobre Hybris em primeira mão. E vice-versa: provavelmente todos os desenvolvedores da hybris já visitaram o blog pelo menos uma vez (é claro, não por vontade própria, o Google nos ajuda!). Agora você está aqui. E para que você não se perca aí, quero lhe dar uma pequena excursão. Por favor, faça perguntas no final.







SEDE DE PESQUISA





Alguém dirá que onde há e-commerce, há compra de cartões, e onde há compra de cartões, há e-commerce. Mas este cartão de compras ainda precisa ser encontrado. Assim são as mercadorias. E então surge um tópico no qual o número de "bicicletas" caseiras está fora das tabelas: busca de produtos.



Talvez este seja o tópico "mais espesso" do meu blog. Em highbris, Apache Solr é responsável pela pesquisa , um dos dois grandes e onipresentes mecanismos de código aberto (junto com o ElasticSearch). Mas, como você pode imaginar, os detalhes do Highbris em artigos sobre pesquisa são mínimos. Simplesmente porque todos têm os mesmos problemas.



Então vamos.



Rauf Aliev, Timofey Klyubin

The Challenges Of Chinese And Japanese Searching

https://hybrismart.com/2019/08/18/the-challenges-of-chinese-and-japanese-searching/



Junto com Timofey Klyubin, fizemos uma gigantesca revisão da pesquisa de texto em linguagens hieroglíficas, descrevemos as dificuldades típicas dos computadores com esses ícones e como resolvê-las no Solr. Você também aprenderá sobre várias características culturais e linguísticas e especificações do design de pesquisa facetada no Japão e na China.



Timofey estuda japonês há muito tempo, além de Hybris e todo tipo de coisa de TI. Gostaria de escrever aqui "e sou chinês", mas infelizmente. Meu trabalho nasceu no processo de estudo profundo do tema, causado pela necessidade de trabalhar e pela vontade de encerrar de uma vez por todas as questões que me atormentavam, e Timofey estava apenas fazendo o que amava.



Pesquisar em japonês e chinês traz problemas que você nunca soube que existiam. Por exemplo, veja as dicas do Google para a palavra “と う き ょ う え” (tōkyōe), que o Google dá “東京 駅” (tōkyōeki) (estação de Tóquio). Nesse caso, as duas palavras são grafias diferentes da mesma e o mecanismo de busca sabe disso. Os japoneses têm seus próprios sinais de pontuação, dois alfabetos, um sistema complexo com números, o contexto é importante. Descrevemos tudo isso em detalhes.







Rauf Aliev

Facet Search: o guia mais abrangente. Práticas recomendadas, padrões de design, advertências ocultas e soluções alternativas.

https://hybrismart.com/2019/02/13/facet-search-the-most-comprehensible-guide-best-practices-design-patterns/



E esse trabalho está relacionado à pesquisa facetada. Cuidado, há muitas cartas, mas há um conteúdo conveniente com links. Seria conceitual fazer uma pesquisa facetada em um artigo sobre pesquisa facetada, mas parei no tempo.



O artigo tenta sistematizar o conhecimento e a experiência nesta área e organizar esse conhecimento na forma de uma grande "folha" com fatos, referências e melhores práticas. Provavelmente, deve ser útil para aqueles que estão conectados com interfaces de usuário pela natureza de seu trabalho.



Apesar de as facetas serem o conceito mais comumente usado no comércio eletrônico (depois dos cartões de compras), sempre há uma grande tentação de reinventar uma roda. A julgar pelo que vemos nos sites, muitas pessoas o usam, resultando em muitas inconsistências e contradições. Tentei reuni-los com soluções consideradas geralmente aceitas.







Rauf Aliev

Preenchimento automático, sugestões de pesquisa ao vivo e autocorreção: padrões de design de práticas recomendadas

https://hybrismart.com/2019/01/08/autocomplete-live-search-suggestions-autocorrection-best-practice-design-patterns/



Como as "pesquisas" ficaram mais inteligentes agora, e muitas vezes o usuário sabe melhor o que queria encontrar e os dispositivos são pequenos e inconvenientes, muita atenção é dada às sugestões de pesquisa - uma forma de formular a consulta de pesquisa desejada em menos tempo, com um número mínimo de pressionamentos de tecla, cliques do mouse ou “ tapov "na tela.



Neste artigo, analiso o tópico "práticas recomendadas" e erros comuns. O artigo nasceu quando eu estava projetando um sistema autocomplete inteligente para uma grande empresa de biotecnologia que tornava mais fácil a pesquisa de anticorpos e reagentes. O "autocomplete inteligente" sugeria o preenchimento da palavra atual em um clique, com base nas palavras já inseridas, certas regras de correspondência e estatísticas de consulta. O análogo mais próximo da linguística - depois de inserir um verbo, é mais provável que um substantivo venha do que outro verbo.







Rauf Aliev

Search Analytics

https://hybrismart.com/2017/10/06/part2-sap-hybris-thinking-outside-the-box-part-2-of-4-video-russian-english-search-analytics/



Alguns materiais apresentados no blog não na forma de artigos, mas na forma de vídeos. Haverá 40 deles no total . Infelizmente, este formato ainda não se enraizou. AquiEstou falando de Search Analytics - um mecanismo de coleta e processamento de estatísticas relacionadas às ações dos compradores com o envolvimento da pesquisa de produtos. Eu criei esse mecanismo para uma grande mercearia na Europa e verifiquei duas vezes para a mesma empresa de biotecnologia do exemplo anterior. Resumindo, a ideia é que as ações dos compradores podem dizer muito sobre como a pesquisa funciona e onde ela tem pontos fracos. Por exemplo, as estatísticas mostram que alguns produtos são pesquisados ​​com frequência, mas raramente colocados no carrinho (preço alto? Modelos desatualizados?), Enquanto outros são frequentemente colocados, mas são bastante mal pesquisados ​​(dicas?), E após o terceiro eles estão prontos para clicar em várias páginas de resultados de pesquisa ( alguns bens irrelevantes estão saindo na frente?). Em geral, este é o Google Analytics, mas para pesquisa.



Rauf Aliev

Pesquisa

multilinha https://hybrismart.com/2017/04/07/multi-line-product-search-for-bulk-orders/



Ter o seu blog é conveniente porque você pode fazer upload de ideias e experimentos lá e liberar seu cérebro para o que - algo mais relevante e novo. Neste artigo, descrevi o conceito de "pesquisa multilinha" para sites B2B, que já foi relevante em sua época.



A ideia é que muitas vezes é conveniente pesquisar em um site copiando e colando um grupo inteiro de SKUs ou nomes de produtos no campo de pesquisa, em vez de fazer isso uma linha por vez.





Rauf Aliev

Pesquisa visual da imagem do produto

https://hybrismart.com/2018/08/26/product-image-visual-search-in-sap-commerce-cloud-hybris-commerce/



Neste artigo, descrevo como encontrar produtos semelhantes - por cor ou formato. Este é um tópico bastante "clássico", mas na prática, por algum motivo que não entendo, raramente é implementado. Fiz um protótipo e descrevi o material. Quase todos os artigos dessa natureza são acompanhados por um vídeo mostrando como um protótipo funciona com o SAP Commerce, e este não é exceção. Para integrar com o Apache Solr, usei o Lire ( https://github.com/dermotte/lire ).





Rauf Aliev

mais como este na SOLR

https://hybrismart.com/2017/02/05/more-like-this-in-hybris-solr-search/



Se no último artigo procurávamos produtos semelhantes em cor e tamanho, são apresentados aqui produtos semelhantes. O sistema calcula e organiza os produtos com base na semelhança do conteúdo indexado - descrições, nomes, características dos produtos. Quanto maior a semelhança, mais próximos os bens estarão em tais "clusters" uns dos outros. Para o usuário, podemos exibir produtos que estão próximos em tal "espaço de semelhanças", que provavelmente serão produtos substitutos.







Rauf Aliev

Concept Aware Search: Automatic Facet Discovery

https://hybrismart.com/2017/06/25/concept-aware-search-automatic-facet-discovery-in-hybris/



Aqui também descrevo um experimento e protótipo interessantes: o sistema expõe facetas por conta própria, com base na consulta de pesquisa inserida. Por exemplo, se você está procurando algo com a consulta “vestido vermelho tamanho 39”, você não deve mostrar produtos que contenham todas essas palavras na descrição ou no nome, mas sim produtos filtrados pelas tags “vermelho”, “vestido” e “tamanho 39 ". Para a língua russa, você também precisará de danças com pandeiros, e com o inglês tudo funciona agora. Dentro há uma demonstração mostrando a diferença entre como funciona a pesquisa padrão e como funciona, mas com a minha lógica no topo. É chamado de Sinta a diferença. No entanto, deve-se observar que essa abordagem ainda tem efeitos colaterais e o sistema precisa ser cuidadosamente ajustado para satisfazer a todos ou quase todos.



Rauf Aliev

Pesquisa aprimorada de sinônimos e frases com várias palavras

https://hybrismart.com/2017/08/09/enhanced-multi-word-synonyms-and-phrase-search/



Há um problema conhecido no SOLR (e isso não é apenas com Hybris), que sinônimos verbosos funcionam muito tortuosamente. Ainda funciona com as de uma palavra, mas também com suas próprias dificuldades. A postagem do blog descreve uma solução para contornar esses problemas e tornar sua pesquisa mais inteligente. Na ausência de ambigüidade, o sistema passa por diferentes variantes de substituições e seleciona a substituição mais “vencedora”.



O blog tem mais algumas dezenas de artigos sobre o tópico de pesquisa. E neste lugar maravilhoso, o tema da pesquisa dá lugar ao tema do cálculo de promoções e descontos e outras fidelização.



PROMOÇÕES POR REGRAS





"Compre duas jaquetas pelo preço de três e ganhe uma de graça!" Isso só os profissionais de marketing não podem propor para que os programadores não fiquem entediados. Você passa seis meses fazendo um perfeito “motor” de ações, que pode fazer tudo em geral e um pouco mais, e aí o gerente chega com outra ideia, por causa da qual você precisa reescrever a metade! Highbris também tinha duas gerações de tais "motores". Os desenvolvedores decidiram não reinventar a roda e usaram o JBoss Drools, um sistema de gerenciamento de regras de negócios bastante poderoso que é integrado ao hybris para o tema da mecânica de promoção, um tópico estreito, mas variado em sua estreiteza.







Resumindo, o Drools é um tempo de execução de regra de negócios. O mecanismo processa os chamados "fatos" - os dados de entrada - e produz o resultado como resultado de regras e fatos de processamento. Em highbris para Drools, fizemos um editor de regras interativo "em termos de e-commerce", e também introduzimos uma API para extensão.



Rauf Aliev

'pode ter demitido'

https://hybrismart.com/2016/06/04/hybris-6-could-have-fired-messages-poc/



Se alguma regra for acionada, um desconto será aplicado. As regras são aplicadas ao carrinho de compras. Minha experiência neste artigo mostra que as regras podem não se aplicar ao carrinho, mas à combinação do carrinho e do item atual. Ou seja, você ainda não clicou no botão "comprar", mas já pode ver quais jardins paradisíacos e palácios magníficos serão adicionados à cesta como um presente. Isso deve deixar o usuário mais feliz e aumentar as vendas.







Rauf Aliev

Cálculo da promoção distribuída no cluster. Promoção como serviço

https://hybrismart.com/2016/07/05/distributed-promotion-calculation-cluster-promo-as-a-service/



Então, esse mesmo Drools está integrado na plataforma. E ela é um monólito. Um monólito é quando todo o código cresce de um lugar. E quando um usuário cutuca um ícone em um cartão de compras, milhões de pequenos gnomos no servidor começam a criar um contexto para o Drools, em seguida, preenchem-no com "fatos", que incluem produtos, categorias, propriedades do usuário e tudo mais do que a promoção pode depender. E isso acontece no nó do cluster para onde o balanceador de carga trouxe o usuário. E se houver interrupções repentinas nos recursos do processador ou na memória, o usuário sofrerá. Então, o usuário ganha um desconto ou um brinde, e o servidor arruma toda essa economia. Até a próxima vez quando ele começa a ser criado novamente.Neste artigo, descrevo minha experiência em mover o Drools para um cluster separado e remover o estágio dessa configuração do Drools da solicitação. Além de aumentar a produtividade, também permite realizar ações bastante complexas, onde, por exemplo, milhões de "fatos" estão envolvidos.







Rauf Aliev

Usando o mecanismo de regra hybris para recomendações de produtos

https://hybrismart.com/2016/08/09/using-hybris-rule-engine-for-product-recommendations/



Neste exemplo, mostro como você pode organizar um sistema de recomendação com base em regras usando um mecanismo pronto baseado em Drools. No meu protótipo de um sistema de recomendação, as recomendações podem ser criadas interativamente, construindo a lógica de links entre acessórios e produtos ou produtos semelhantes entre si. Por exemplo, anchovas para cerveja, mentos para cola, suco de bétula para pinóquio, sabonete para corda, outlet e roteador file-fi para chá e café. As recomendações são sempre boas quando são significativas.







Rauf Aliev

Complex Processamento de eventos em tempo real com Drools Fusion

https://hybrismart.com/2016/10/17/complex-realtime-event-processing-with-drools-fusion-integrating-with-hybris/



Bem, como já construí este cluster, não pude deixar de torturá-lo e construir com base nele, algo que processaria eventos em instantes, impondo regras sobre eles. Consegui descobrir e conectar o servidor Drools Fusion + Drools mais recente ao hybris. Essa coisa é corretamente chamada de Processamento de Eventos Complexos. A questão é que, se você tem um fluxo de dados para processar em tempo real, o Drools Fusion o torna rápido e flexível. Por exemplo, no caso do comércio eletrônico, existem muitos desses dados. Os mais simples são cliques e transições.



Gravei e publiquei uma demo, da qual fica claro como funciona. Os logs são carregados em algum lugar para o armazenamento e, de lá, eles vão para o Drools Fusion para processamento. Na linguagem drools, regras são escritas para extrair algum novo conhecimento dos logs. Na minha demonstração, trata-se simplesmente da identificação de um fotógrafo / não fotógrafo pela natureza das páginas visitadas e dos cliques. Por exemplo, um usuário já visualizou uma nuvem de modelos e concluímos que ele adora modelos. Ou então ele passa o mouse sobre a foto de seu tripé favorito por um longo tempo, do qual concluímos que ele adora não só modelos, mas também tripés. O resultado das regras é devolvido ao highbris e pode ser usado de alguma forma lá. Banner mostra ou reduza ligeiramente os preços para equipamentos fotográficos.







A principal característica de tudo isso é que o fluxo de eventos é processado em tempo real. No meu exemplo, isso é encontrar pelo menos cinco páginas de um grupo temático nos últimos 30 segundos para um usuário.







O segundo ponto importante é que esse sistema é muito escalonável, porque cada servidor funciona de forma independente. Naquela época, a personalização embutida no highbris ainda estava viva. Posteriormente, foi substituído por um serviço pago. Ela era terrivelmente inibidora e, portanto, poucas pessoas o usavam. Aqui são carregados servidores cujo software não custa nada: é gratuito. E então as soluções prontas são empurradas para o lixo, que precisa ser visualizado lá estupidamente. Formulários dinâmicos baseados em regras reativas de



Rauf Aliev https://hybrismart.com/2018/01/04/reactive-rule-based-dynamic-forms-in-hybris-using-drools-7/







O Drools também pode ser usado para automatizar formas complexas e, em meu experimento, mostro como isso pode ser feito. Neste experimento, demonstro como você pode implementar um formulário de várias páginas e estágios, no qual a composição e configuração de campos e etapas mudam dependendo das informações inseridas em outros campos. Essa lógica é bastante difícil de implementar em abordagens padrão para formulários, e sua programação é muito mais fácil quando o Drools é usado para descrever as regras.







Para encerrar suavemente o tema Drools e iniciar o tópico de e-commerce e diversos da hybris, fornecerei uma visão geral detalhada da mecânica promocional. Mecânica de promoção de



Rauf Aliev

e sua implementação em Hybris

https://hybrismart.com/2017/04/30/promotion-mechanics-and-their-implementation-in-hybris-6-x/ Você



percebe que quase todos os tópicos não são exatamente sobre highbris. Lá ele está em toda parte, de alguma forma lateralmente, mas em geral o e-commerce não é uma coisa em si. Tudo está conectado a tudo.



Claro, existem dezenas de outros materiais no site que são bastante difíceis de entender para aqueles que não entendiam nada de lixo.



Rauf Aliev

mesclando carrinhos quando um cliente faz login: problemas, soluções e recomendações

https://hybrismart.com/2019/02/24/merging-carts-when-a-customer-logs-in-problems-solutions-and- recomendações /



Por exemplo, neste artigo, descrevo o problema de mesclar cestas após a autenticação. É quando você coloca cinquenta patos diferentes na cesta e, em seguida, faz o login, e a loja mistura 50 coelhos selecionados da última vez. Existem diferentes estratégias para separar os patos e os coelhos neste exemplo, e irei analisá-las. Eu analiso estratégias, não coelhos.







Rauf Aliev

Hybris Impex Pré-processador

https://hybrismart.com/2018/05/27/hybris-impex-preprocessor-impex/



Este tópico é provavelmente útil apenas para aqueles que são versados ​​em highbris. Cito aqui como exemplo de artigo “para amigos”. Eles são uma minoria, mas ocupam seu próprio nicho importante.



Highbris possui um formato especial para importação e exportação de dados. É chamado de Impex e por fora é muito semelhante a um CSV normal. Existe uma linguagem de marcação muito simples mostrando que este bloco abaixo é para produtos, mas esse bloco também é para categorias. Em geral, é bastante conveniente, mas não quando você tem vinte sites quase idênticos em idiomas diferentes e toda vez que adiciona algum componente de interface para todos os vinte, é necessário copiar e colar o mesmo vinte vezes sem erros e, em seguida, oferecer suporte. ... Eu tinha um projeto assim e propus uma solução com macros JSON que ajudou a criar um impex de impex-with-macros. Não existem macros comuns, mas com loops e parâmetros.



Se você não entende nada, tudo bem. Também temos piadas que ninguém de fora da festa entende. Embora todos estejam tristes, não vamos falar sobre isso. Temos um artigo sério. Pagamentos de



Rauf Aliev

: um olhar por dentro da caixa preta

https://hybrismart.com/2019/09/08/payments-a-look-inside-the-black-box/ Uma



vez trabalhei como gerente de desenvolvimento na Chronopay e com Desde então, o tema dos pagamentos eletrônicos pairou sobre mim como uma nuvem escura e pesada, até que o descobri neste artigo e liberei meu cérebro para novos desafios. Ele contém os fundamentos para entender a integração com os gateways e serviços de pagamento, as melhores práticas e omissões típicas que você precisa evitar (ou usar se for um cliente irritado). Geração de documento PDF do servidor







Rauf Aliev



https://hybrismart.com/2017/06/15/pdf-and-sap-hybris/



E ainda antes, na época dos livros escolares e pagers, trabalhei como designer e designer de layout (no entanto, na Universidade Pedagógica Kolomna e na empresa de paging Mobiletelecom também trabalhei . Sim, já estou velho). Não pelo compositor que é HTML, mas por aquele que trata de livros e revistas, e às vezes até jornais ortodoxos, programas de TV e partituras. E, claro, não pude ignorar o tópico de PostScript e PDF, que assustam muita gente por causa dos internos vagos e mal documentados. No artigo, mostro que o diabo não é tão terrível e reviso as ferramentas para gerar PDF. Autenticação de







Rauf Aliev

com chaves de segurança de hardware via Webauthn no SAP Commerce Cloud

https://hybrismart.com/2019/05/23/authentication-with-hardware-security-keys-via-webauthn-in-sap-commerce-cloud/



Neste artigo, descrevo um protótipo para autorização usando chaves USB e o mais recente (na época do artigo) avança nessa direção no mercado, como a autenticação sem senha suportada por navegadores. Consegui integrar com o highbris Yubikey, descrevo como ficou (e acabou).







Rauf Aliev

Geofencing: Custom Shipping Zones

https://hybrismart.com/2016/10/19/geofencing-in-hybris-custom-shipping-zones/



Outra experiência: o uso de áreas marcadas no mapa do Google para vários fins em e-commerce: encontrar o armazém ideal, encontrar lojas disponíveis para coleta ou o melhor entregador, ou talvez o próprio fato da oportunidade de vender um produto ou serviço a um comprador desta zona.



Funciona assim: o comprador entra no endereço e o sistema o define em uma ou mais zonas grandes. Os vários componentes do sistema já dependem dessas zonas grandes, em vez de componentes de endereço menores, como um código postal.







Ao mesmo tempo, descobri o desenvolvimento no Google AppEngine. O fato é que a definição de um polígono (zona), que inclui um ponto no mapa (onde o cliente está), para uma situação de "muitas zonas de forma complexa" pode ser potencialmente uma tarefa computacional bastante "difícil". E se houver uma possibilidade, é melhor fazer isso imediatamente em um cluster que pode ser facilmente escalado, ou melhor ainda, sozinho. E este caso é excelente para o Google AppEngine, que usa o Google DataStore para armazenar os parâmetros do polígono, e o Google Memcache para armazenar o cache.



Rauf Aliev

Page Fragment Caching: Custom, with Varnish, Nginx, Memcached

https://hybrismart.com/2016/07/24/page-fragment-caching-for-hybris/

https://hybrismart.com/2016/07/ 27 / verniz /

https://hybrismart.com/2016/07/30/hybris-page-fragment-caching-with-nginx-and-memcached/



Nestes artigos, falo sobre o mecanismo de cache inteligente de partes de páginas. Cada uma das partes possui uma chave composta que indica do que depende. Por exemplo, para armazenar em cache a lista de endereços de entrega de uma loja online (tenho um exemplo no vídeo), a chave composta pode ser um ID de usuário - então, caches diferentes serão usados ​​para usuários diferentes.



O mecanismo é especialmente eficaz se a funcionalidade "pesada" (em termos de memória e uso do processador) for removida dos controladores de página para os componentes. Essa técnica não é ideal para armazenar em cache controladores de página.



Para ter uma ideia melhor da ideia, é mais fácil olhar as capturas de tela dos modelos no meio do artigo.



Rauf Aliev

Práticas recomendadas: Migrando conteúdo para Hybris

https://hybrismart.com/2017/01/10/best-practices-migrating-content-to-hybris/



Migrando dados com Pentaho ETL (Kettle)

https://hybrismart.com/2017 / 01/15 / migrating-data-with-pentaho-etl-kettle /



E aqui está muito sobre migração de dados: melhores práticas, ferramentas, arquitetura de minha ferramenta escrita por mim. Embora haja a palavra “Hybris” no título, mas como em outros, este artigo não é 100% sobre highbris, não é muito “geek”, então, espero, será compreensível e interessante para todos que sabem o que “migração dados em um projeto web ".



* * *



Também no blog tem um belo detalhe desmontado tópicos de bots de bate-papo (Facebook, Skype, custom), a imposição de sessões de armazenamentofora da Highbris em um serviço separado, análise de tudo relacionado à autenticação e formulários de login, análise dos recursos de implementação de serviços de viagens (reserva de passagens, hotéis) - parte 1  e  parte 2 , bem como práticas recomendadas coletadas para integrar a disponibilidade do produto com sistemas externos , e quais as dificuldades que este processo tem, e muito, muito mais.



Que outros tópicos você gostaria de ver analisados ​​dessa forma? De acordo com o conceito do blog, eles devem estar relacionados ao comércio eletrônico. Qualquer feedback e sugestões serão bem-vindos.



All Articles