O SPE é uma API backend responsável pela centralização e automação do controle de assiduidade de colaboradores. A solução gerencia registros de ponto, definição de jornadas de trabalho, tratamento de justificativas, consolidação de horas trabalhadas e execução do fechamento mensal.
A aplicação foi projetada com foco em confiabilidade, organização em camadas e facilidade de evolução, permitindo sua integração com sistemas de recursos humanos, dispositivos de coleta de ponto e ferramentas de análise gerencial.
- Linguagem: Python 3.11
- Framework Web: FastAPI
- Persistência: SQLite
- ORM: SQLAlchemy
- Versionamento de esquema: Alembic
- Autenticação e Segurança: JWT e hash de senhas com Passlib (Bcrypt)
- Processamento assíncrono e rotinas: APScheduler
- Geração de relatórios: OpenPyXL
A aplicação utiliza variáveis de ambiente para controle de comportamento e proteção de dados sensíveis. Antes da execução, crie um arquivo .env na raiz do projeto, podendo utilizar o .env.example como referência.
-
PROJECT_NAMENome descritivo da aplicação. -
API_V1_STRPrefixo base das rotas da API. -
TIMEZONEFuso horário utilizado para persistência e validação temporal dos registros. -
UPLOAD_DIRDiretório destinado ao armazenamento de arquivos enviados ou gerados pelo sistema. -
EXCLUDED_EMPLOYEE_IDSLista de identificadores de colaboradores que devem ser ignorados por regras automatizadas.
SQLALCHEMY_DATABASE_URIString de conexão utilizada pelo ORM. O padrão utiliza SQLite local.
-
SECRET_KEYChave criptográfica utilizada na assinatura de tokens JWT. -
ALGORITHMAlgoritmo de assinatura dos tokens. -
ACCESS_TOKEN_EXPIRE_MINUTESTempo de expiração do token de acesso. -
DEVICE_API_KEYChave estática para autenticação de dispositivos ou integrações externas responsáveis pelo envio de dados.
-
FIRST_SUPERUSERIdentificador do usuário administrador criado na primeira inicialização. -
FIRST_SUPERUSER_PASSWORDCredencial inicial do usuário administrador.
-
SMTP_HOSTServidor SMTP utilizado para envio de mensagens. -
SMTP_PORTPorta de comunicação com o servidor SMTP. -
SMTP_USERCredencial de autenticação SMTP. -
SMTP_PASSWORDSenha ou token de aplicação associado ao usuário SMTP. -
EMAIL_FROMEndereço remetente das notificações do sistema. -
EMAIL_TODestinatário principal dos relatórios operacionais e backups automatizados.
A aplicação está containerizada, garantindo padronização de ambiente e simplificação do processo de implantação.
Após configurar o arquivo .env, execute:
docker compose buildEm seguida, inicialize os serviços:
docker compose up -dDurante a inicialização, o processo de bootstrap executa automaticamente:
- Criação do banco de dados
- Aplicação das migrações estruturais
- Provisionamento do usuário administrador inicial
- Inicialização do servidor na porta 8000
A documentação interativa da API estará disponível em:
http://localhost:8000/docs
Para encerrar a execução:
docker compose downO projeto adota organização em camadas, promovendo separação de responsabilidades e melhor manutenibilidade.
-
/app/api/Camada de exposição HTTP, responsável pelo roteamento e tratamento das requisições. -
/app/core/Configurações globais, segurança, carregamento de ambiente e dependências transversais. -
/app/database/Inicialização da engine, sessão e infraestrutura de persistência. -
/app/domain/models/Entidades ORM que representam o modelo de dados do sistema. -
/app/repositories/Abstração de acesso a dados, contendo operações de persistência. -
/app/schemas/Modelos de validação e serialização utilizados na comunicação da API. -
/app/services/Implementação das regras de negócio, cálculos operacionais e fluxos do domínio. -
/alembic/Histórico de versionamento do esquema do banco de dados.