DesenvolvimentoPagamento protegidoDetalhes
- Os ajustes previstos no pacote são gratuitos.
- Se você não responder em 3 dias após a entrega, o trabalho é aprovado automaticamente.
O dinheiro fica reservado no pagamento e só é liberado quando você aprova o trabalho.

Exemplo de resultado
Juntando os arquivos mensais de vendas de 9 lojas em um só relatório do Excel
Como ele é executado
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO Pasta: sales/2026-10, 9 arquivos encontrados
2026-11-02 09:14:03 INFO shop-01.csv: 1.284 linhas
2026-11-02 09:14:04 INFO shop-02.xlsx: 967 linhas
2026-11-02 09:14:04 WARN shop-07.csv: 3 linhas sem preço ignoradas (linhas 88, 412, 913)
2026-11-02 09:14:05 INFO Pronto: 10.412 linhas -> report-2026-10.xlsx (abas "Vendas" e "Totais")
Configurações, não código
Os nomes das colunas de cada loja ficam no settings.ini, então uma loja nova ou uma coluna renomeada é só uma linha ali:
[columns]
date = Data, Data da venda, Dia
product = Produto, Item, Descrição
quantity = Qtd, Quantidade, Unid
price = Preço, Preço unitário
Um trecho do código
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""Lê o arquivo de uma loja e dá a ele os nomes de colunas do relatório."""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}: nenhuma coluna para '{name}' (procuradas: {', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
Arquivos: um arquivo ZIP com merge_sales.py (310 linhas), settings.ini, requirements.txt e um README que explica como instalar o Python, como rodar o script e o que significa cada mensagem do registro. O cliente roda o script no próprio computador.
Cliente: uma pequena rede de 9 papelarias; cada loja envia as vendas do mês em um arquivo CSV ou Excel, com nomes de colunas um pouco diferentes. Tarefa: um script que lê todos os arquivos de uma pasta, deixa as colunas em um só formato e grava um único relatório do Excel com todas as vendas e uma aba de totais por loja.
O cliente e todos os dados são fictícios.
Sobre este serviço
O seu servidor web registra cada requisição no log de acesso, mas um arquivo de milhões de linhas diz pouco até ser contado. Este script em Python lê logs de acesso do Nginx ou do Apache, incluindo os antigos comprimidos, e gera um relatório: requisições por dia e hora, as páginas mais visitadas, códigos de status, as páginas que retornam 404 ou 500 e de onde vieram os visitantes. O Premium conta os rastreadores dos buscadores separadamente das pessoas e salva uma pasta de trabalho do Excel com uma aba por seção. Os endereços IP dos visitantes ficam fora do relatório por padrão, ou são encurtados, se você precisar deles. Envie a linha de formato de log das configurações do seu servidor e de 20 a 30 linhas com os endereços trocados. Você roda no seu servidor ou computador; ele lê logs e não muda nenhuma configuração.
O que está incluído
- O que você recebeUm arquivo ZIP com o script em Python, um README com instruções passo a passo e, a partir do Padrão, um arquivo de configurações com os caminhos dos logs e as opções do relatório; o código também aparece na página do pedido.
- Nginx e ApacheOs formatos de log comuns, ou o seu, se for diferente
- Erros com as páginasQuais endereços dão 404 ou 500, e com que frequência
- Logs antigos tambémA partir do Padrão, arquivos .gz comprimidos lidos como estão
- Sem dados pessoaisEndereços IP deixados de fora ou encurtados
- Código legívelCom comentários, fácil de incluir uma seção depois
Como funciona
- 1TarefaVocê envia o formato do log e algumas linhas com os endereços trocados
- 2CódigoEscrevemos o script e o guia para rodá-lo
- 3TesteVocê roda em uma cópia do log de um dia e confere o relatório
- 4AjustesVocê pede ajustes dentro do seu pacote e envia qualquer mensagem de erro
O que precisamos de você
O seu servidor web (Nginx ou Apache), a linha log_format ou LogFormat das configurações dele, se tiver sido alterada, e de 20 a 30 linhas do log de acesso com os endereços IP trocados por inventados. Onde os logs ficam e como são rotacionados, o tamanho do log de um dia, o que o relatório deve mostrar e em que formato (CSV ou Excel), e onde ele vai rodar: no próprio servidor (com o sistema dele) ou no seu computador.
Vamos perguntar:
- Qual servidor web e qual formato de log?
- O que o relatório deve mostrar?
- Com que frequência você precisa dele?
- Onde ele vai rodar?
Compare os pacotes
| Pacotes | BásicoUm log, um relatórioR$ 89 | PadrãoRelatório com configuraçõesR$ 184 | PremiumFerramenta de relatório de logsR$ 373 |
|---|---|---|---|
| Prazo | 1 dia | 2 dias | 3 dias |
| Ajustes | 1 | 2 | 3 |
| Código | até 150 linhas | até 400 linhas | até 1.000 linhas |
| Arquivos de código | 1 | até 3 | até 8 |
| Arquivo de configurações | Não | Sim | Sim |
| Mensagens de erro claras e um log | Não | Sim | Sim |
| Opções de execução e guia para rodar de forma agendada | Não | Não | Sim |
| Guia de instalação e execução (README) | Sim | Sim | Sim |
| Linguagem | Python | Python | Python |
| Fazer pedido Básico | Fazer pedido Padrão | Fazer pedido Premium |
Pagamento protegido
Você paga ao fazer o pedido, mas o dinheiro só é liberado pelo trabalho aprovado.
- Preço fixoO preço do pacote não muda depois que você paga.
- O dinheiro fica reservadoAo pagar, o valor fica apenas reservado. Ele só é repassado quando você aprova o trabalho.
- Verificado antes da entregaCada resultado passa por um controle de qualidade antes de chegar até você, e você o vê na página do pedido antes de aprovar.
- Ajustes gratuitosPeça ajustes dentro do seu briefing quantas vezes o pacote permitir.
- Aprovação após 3 diasSe em 3 dias após a entrega você não aprovar o trabalho nem pedir ajustes, ele é aprovado automaticamente. Se você escrever no chat do pedido após a entrega, o pedido fica em espera; depois que respondermos, podemos reiniciar a contagem de 3 dias e avisaremos no chat.
- Refazer ou reembolso totalSe o resultado não corresponder ao seu briefing e os ajustes não resolverem, ou se o trabalho levar mais que o dobro do prazo, escreva no chat do pedido: refazemos o trabalho ou reembolsamos o pagamento integralmente.
Perguntas e respostas
Isso é o mesmo que web analytics?
Não. Ele conta o que o servidor viu: cada requisição, incluindo as de rastreadores e scripts, sem cookies nem código de rastreamento. Os números vão ser diferentes dos do seu serviço de analytics, e cada visão é útil do seu jeito.
E os endereços IP dos visitantes?
Eles contam como dados pessoais em muitos países, então por padrão o relatório os deixa de fora. Se você precisar deles, por exemplo para ver um endereço sobrecarregando o site, eles podem ser encurtados.
Ele pode bloquear visitantes mal-intencionados?
Não. Ele só lê logs e gera um relatório; não muda as configurações nem o firewall do seu servidor.
Vocês vão ler os meus logs?
Não. Você roda o script do seu lado. Só precisamos da linha de formato e de algumas linhas com os endereços trocados.
Não encontrou a resposta?


