API de importação de arquivos do ACTA. Responsável por receber, validar e persistir dados históricos no formato .csv, .xlsx, .pdf e .pptx no banco de dados MongoDB com o objetivo de contextualização de agentes de inteligência artificial para gerar contexto a fim de alimentar análises como o gráfico de Ishikawa.
- Upload e validação de arquivos
.csv,.xlsx,.pdfe.pptx - Normalização automática dos nomes de colunas (
snake_case, sem acentos) - Suporte a múltiplas abas em arquivos
.xlsx - Limpeza automática de linhas e colunas vazias
- Persistência estruturada no MongoDB
- ID sequencial auto-incrementado
| Camada | Tecnologia |
|---|---|
| Framework | FastAPI |
| Banco de dados | MongoDB via Pymongo |
| Leitura de arquivos | Pandas, openpyxl, pypdf e python-pptx |
| Normalização | python-slugify |
| Variáveis de ambiente | python-dotenv |
├── 📁 app
│ ├── 📁 database
│ │ └── 🐍 mongo.py
│ ├── 📁 models
│ │ └── 🐍 planilha.py
│ ├── 📁 routes
│ │ └── 🐍 uploads.py
│ ├── 📁 services
│ │ └── 🐍 import_service.py
│ └── 📁 utils
│ └── 🐍 utils.py
├── ⚙️ .gitignore
├── 📝 README.md
├── 🐍 main.py
└── 📄 requirements.txt
- Python 3.10 +
- MongoDB em execução
git clone https://github.com/AppActa/acta-import-api.git
cd acta-import-api
pip install -r requirements.txtCrie um arquivo .env na raiz do projeto:
MONGO_URL=mongodb://localhost:27017
DB_NAME=actauvicorn main:app --reloadA API estará disponível em http://localhost:8080. A documentação pode ser acessada em http://localhost:8080/docs
Importa um arquivo .csv
| Campo | Tipo | Descrição |
|---|---|---|
id_empresa |
int |
ID da empresa |
id_ciclo |
int |
ID do ciclo do PDCA |
arquivo |
file |
Arquivo .csv |
Importa um arquivo .xlsx, suporte a múltiplas abas
| Campo | Tipo | Descrição |
|---|---|---|
id_empresa |
int |
ID da empresa |
id_ciclo |
int |
ID do ciclo do PDCA |
arquivo |
file |
Arquivo .xlsx |
Importa um arquivo .pdf, suporte a múltiplas abas
| Campo | Tipo | Descrição |
|---|---|---|
id_empresa |
int |
ID da empresa |
id_ciclo |
int |
ID do ciclo do PDCA |
arquivo |
file |
Arquivo .pdf |
Importa um arquivo .pptx, suporte a múltiplas abas
| Campo | Tipo | Descrição |
|---|---|---|
id_empresa |
int |
ID da empresa |
id_ciclo |
int |
ID do ciclo do PDCA |
arquivo |
file |
Arquivo .pptx |
- Nomes de colunas são normalizadas para
snake_casesem acentos ou carateres especiais - Em arquivos
.xlsx, cada aba é processada separadamente e identificada com o nome normalizado - Linhas onde todas as colunas são nulas são removidas automaticamente
- Colunas sem nome (
unnamed_X) e completamente vazias são descartadas - Valores nulos são convertidos para null no documento MongoDB