From 01e75eb1135d6b5d16b34815f4c7b60b5ad8d975 Mon Sep 17 00:00:00 2001 From: Bernardo Date: Thu, 14 Nov 2024 12:03:58 -0300 Subject: [PATCH] fix: not building project after deploy --- __pycache__/main.cpython-312.pyc | Bin 8317 -> 9760 bytes main.py | 33 ++++++++++++++++++++++++- uploads/json_data_20241114_115131.xlsx | Bin 0 -> 5197 bytes uploads/json_data_20241114_115316.xlsx | Bin 0 -> 5197 bytes vercel.json | 16 ++++++++++++ 5 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 uploads/json_data_20241114_115131.xlsx create mode 100644 uploads/json_data_20241114_115316.xlsx create mode 100644 vercel.json diff --git a/__pycache__/main.cpython-312.pyc b/__pycache__/main.cpython-312.pyc index ecf0bf5bedf97c8e63b2c5db73427a05f89dd050..f33e45fd1b3831a0a7339348050d474895044bb7 100644 GIT binary patch delta 3243 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 diff --git a/main.py b/main.py index 9db773f..3a0c6c4 100644 --- a/main.py +++ b/main.py @@ -91,12 +91,43 @@ async def convert_json_to_excel(json_data: dict, original_filename: str): Função auxiliar para converter JSON em Excel com formatação adequada """ try: + # Mapeamento de nomes de colunas (adicione mais conforme necessário) + column_mapping = { + 'id': 'ID', + 'name': 'Nome', + 'email': 'E-mail', + 'phone': 'Telefone', + 'address': 'Endereço', + 'created_at': 'Data de Criação', + 'updated_at': 'Data de Atualização', + 'status': 'Status', + 'price': 'Preço', + 'quantity': 'Quantidade', + 'description': 'Descrição', + # Adicione mais mapeamentos conforme necessário + } + # Converte JSON para DataFrame if isinstance(json_data, list): df = pd.DataFrame(json_data) else: df = pd.DataFrame([json_data]) + # Renomeia as colunas usando o mapeamento + df = df.rename(columns=lambda x: column_mapping.get(x, x.replace('_', ' ').title())) + + # Formata colunas de data se existirem + date_columns = ['Data de Criação', 'Data de Atualização'] + for col in date_columns: + if col in df.columns: + df[col] = pd.to_datetime(df[col]).dt.strftime('%d/%m/%Y %H:%M') + + # Formata colunas de preço se existirem + price_columns = ['Preço'] + for col in price_columns: + if col in df.columns: + df[col] = df[col].apply(lambda x: f'R$ {float(x):,.2f}' if pd.notnull(x) else '') + # Cria nome único para o arquivo Excel timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") excel_filename = f"uploads/{os.path.splitext(original_filename)[0]}_{timestamp}.xlsx" @@ -188,4 +219,4 @@ async def convert_json_to_excel(json_data: dict, original_filename: str): if __name__ == "__main__": import uvicorn - uvicorn.run(app, host="0.0.0.0", port=8000) + uvicorn.run(app, host="0.0.0.0", port=8000, log_level="info") diff --git a/uploads/json_data_20241114_115131.xlsx b/uploads/json_data_20241114_115131.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..364eebc6fcd41b52e40d6da4ce63fabbe55725af GIT binary patch literal 5197 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 D|5p*v literal 0 HcmV?d00001 diff --git a/uploads/json_data_20241114_115316.xlsx b/uploads/json_data_20241114_115316.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..557393125474745ceb0b7f9d07c57c8891106472 GIT binary patch literal 5197 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 A;Q#;t literal 0 HcmV?d00001 diff --git a/vercel.json b/vercel.json new file mode 100644 index 0000000..ef7ef60 --- /dev/null +++ b/vercel.json @@ -0,0 +1,16 @@ +{ + "version": 2, + "builds": [ + { + "src": "main.py", + "use": "@vercel/python", + "config": { "maxLambdaSize": "15mb" } + } + ], + "routes": [ + { + "src": "/(.*)", + "dest": "main.py" + } + ] +}