Changelog¶
Todas as alterações notáveis neste projeto serão documentadas neste arquivo.
O formato é baseado em Keep a Changelog, e este projeto adere a Semantic Versioning.
[Unreleased]¶
Adicionado¶
- Nenhuma mudança ainda
Alterado¶
- Nenhuma mudança ainda
Corrigido¶
- Nenhuma mudança ainda
Removido¶
- Nenhuma mudança ainda
[2.1.0] - 2024-12-19¶
Adicionado¶
-
OpenAPI/Swagger Documentation: Implementação completa de documentação automática da API usando
drf-spectacular, incluindo schema OpenAPI 3.0, interface Swagger UI e ReDoc para melhor experiência de desenvolvedor. -
Pre-commit Hooks: Configuração de hooks de pre-commit para garantir qualidade de código, incluindo formatação automática (Black), linting (Flake8), verificação de docstrings (pydocstyle) e verificação de tipos (MyPy).
-
MyPy Static Type Checking: Implementação de verificação de tipos estática em modo gradual, com configuração específica para diferentes módulos e integração com Django via
django-stubs. -
MkDocstrings Integration: Integração do
mkdocstringspara gerar documentação automática da API Python diretamente dos docstrings, criando referências completas para camadas de domínio, casos de uso e repositórios. -
GitHub Actions CI/CD: Pipeline completo de CI/CD com workflows para testes, documentação, qualidade de código e deploy, incluindo templates para issues e pull requests.
-
Documentação Abrangente:
- Guias completos de setup (produção, staging, quick-start)
- Análise detalhada de arquitetura do projeto
- Diretrizes de segurança e melhores práticas
- Referências de API e documentação técnica
-
Ferramentas de Qualidade: Configuração de
pydocstyle,pytest-cov,flake8,blackepip-auditpara garantir padrões de código e segurança. -
Assets e Branding: Logos e assets visuais do projeto em diferentes tamanhos para uso em documentação e interfaces.
Melhorado¶
-
Docstrings Completas: Adição de docstrings detalhadas em todo o projeto seguindo padrões PEP 257, incluindo módulos, classes, métodos e funções.
-
Cobertura de Testes: Aumento da cobertura de testes para 93% com testes unitários adicionais para middleware, URLs e casos de uso.
-
Configuração de Ambiente: Melhoria significativa na configuração de variáveis de ambiente com suporte a diferentes ambientes (desenvolvimento, staging, produção).
-
Makefile: Expansão do Makefile com mais de 20 comandos de automação para desenvolvimento, testes, documentação e deploy.
-
Estrutura de Documentação: Reorganização completa da documentação com navegação melhorada e seções específicas para diferentes aspectos do projeto.
Corrigido¶
-
Exposição de Credenciais: Correção de problemas de segurança relacionados à exposição de credenciais em configurações e logs.
-
Configurações de Template: Correção de configurações de templates e paths para funcionamento correto em diferentes ambientes.
-
Imports Não Utilizados: Limpeza de imports desnecessários e otimização da estrutura de código.
Refatorado¶
-
Configurações de Settings: Refatoração das configurações do Django para melhor organização e segurança, incluindo configuração condicional de banco de dados.
-
Estrutura de Arquivos: Reorganização de arquivos estáticos, templates e configurações para melhor manutenibilidade.
[2.0.0] - 2024-09-03¶
Adicionado¶
-
Testes de Integração Completos: Implementação de uma suíte abrangente de testes de integração para todas as funcionalidades da API, incluindo autenticação, gerenciamento de usuários, paginação, filtragem e alteração de senhas. Todos os 48 testes estão passando com 100% de cobertura das funcionalidades principais.
-
Tratamento Robusto de Exceções: Melhoria significativa no tratamento de exceções, incluindo captura correta de
IntegrityErrorpara retornar 400 Bad Request em vez de 500 Internal Server Error, e tratamento adequado de erros de validação e permissões. -
Autenticação e Autorização Aprimoradas: Implementação de autenticação robusta com OAuth2 e suporte a testes usando
force_authenticatepara maior confiabilidade nos testes de integração. -
Limpeza e Otimização de Código: Remoção de imports não utilizados, logs de debug desnecessários e otimização da estrutura de código para melhor manutenibilidade.
Corrigido¶
-
Erro de Serializer de Alteração de Senha: Corrigido problema onde o serializer tentava chamar
to_internal_value()em dados já validados, causandoAttributeError. -
Tratamento de IntegrityError: Corrigido para capturar corretamente
django.db.utils.IntegrityErrore retornar 400 Bad Request para violações de constraint de banco de dados. -
Imports Não Utilizados: Removidos imports desnecessários (
filters,ClassVar,get_user_repository) que estavam causando warnings de linting. -
Logs de Debug: Removidos logs de debug temporários dos testes e middleware para produção.
Melhorado¶
-
Qualidade do Código: Aplicação de "pente fino" em todo o projeto, garantindo que não há problemas de linting, imports não utilizados ou código desnecessário.
-
Estrutura de Testes: Reorganização e otimização dos testes para maior clareza e manutenibilidade, com foco em testes de integração robustos.
-
Documentação: Atualização da documentação para refletir as mudanças da versão 2.0.0, incluindo README e CHANGELOG.
[2.0.0] - 2024-07-30¶
Adicionado¶
-
Atualização de Dependências e Correção de Vulnerabilidades: Todas as dependências do projeto foram atualizadas para suas versões estáveis mais recentes, e as vulnerabilidades de segurança conhecidas no Django (5.0.14) e setuptools (66.1.1) foram corrigidas. Isso garante um ambiente de desenvolvimento e produção mais seguro e estável.
-
Configuração de Logs e Tratamento Global de Exceções: Implementação de uma estratégia robusta de logging com múltiplos handlers (console, arquivo de log, arquivo de erros), formatadores padronizados e loggers específicos. Criação de um middleware customizado para tratamento global de exceções no Django REST Framework, que captura, registra e padroniza respostas de erro da API. Logs foram adicionados a casos de uso (
LoginUserUseCase,ListUsersUseCase) e repositórios (DjangoUserRepository) para maior observabilidade.project/project/settings.py: Configuração deLOGGINGe integração do middleware noREST_FRAMEWORK.project/core/middleware/custom_exception_middleware.py: Novo arquivo com o handler de exceções customizado.project/core/domain/use_cases/user_use_cases.py: Adição de logs.project/core/repositories/user_repository_impl.py: Adição de logs e tratamento de exceções específicas.- Documentação detalhada em
docs/development/logging-error-handling.md.
-
Otimização e Refatoração de Arquivos Docker: Reestruturação do
Dockerfilepara um modelo multi-stage (build e execução) com imagem base mais leve (python:3.12-slim-bookworm), combinação de comandosRUNpara reduzir camadas, e otimização na instalação de dependências. Introdução de arquivosdocker-compose.dev.ymledocker-compose.prod.ymlpara separar as configurações de ambientes de desenvolvimento e produção, comDockerfile.devpara desenvolvimento e.dockerignorepara exclusão de arquivos desnecessários..dockerignore: Novo arquivo para exclusão de arquivos irrelevantes no contexto de build.Dockerfile: Refatorado para multi-stage build e otimizado para produção.Dockerfile.dev: Novo arquivo para ambiente de desenvolvimento.docker-compose.dev.yml: Novo arquivo para orquestração de serviços em desenvolvimento.docker-compose.prod.yml: Novo arquivo para orquestração de serviços em produção.docker-compose.yml: Removido.dotenv_files/.env.prod: Novo arquivo para variáveis de ambiente de produção.docs/setup/project-setup.md: Documentação atualizada para refletir a nova estrutura Docker.
-
Testes Automatizados: Implementação de uma suíte abrangente de testes unitários para as camadas de Domínio e Aplicação, e testes de integração para a API (autenticação e gerenciamento de usuários).
project/core/tests/unit/test_user_entity.pyproject/core/tests/unit/test_user_use_cases.pyproject/core/tests/unit/test_generic_use_cases.pyproject/core/tests/integration/test_auth_api.pyproject/core/tests/integration/test_user_api.py- Configuração do Pytest (
pytest.ini) e adição de dependências (pytest,pytest-mock,pytest-django). - Documentação detalhada em
docs/development/automated-testing.md.
- Paginação e Filtragem: Adicionadas capacidades de paginação (
offset,limit) e filtragem (search_query) para a API de listagem de usuários. Isso envolveu modificações nos DTOs, interface de repositório, implementação do repositório (DjangoUserRepositoryusandoQobjects), serializers e views do DRF, e testes de integração abrangentes.project/core/domain/use_cases/user_use_cases.py: DTOsListUsersRequest,ListUsersResponseeListUsersUseCaseatualizados.project/core/domain/data_access.py: InterfaceUserRepositorycomget_all_paginated_filtered.project/core/repositories/user_repository_impl.py: Implementação deget_all_paginated_filtered.project/core/api/v1/serializers/user.py:ListUsersRequestSerializereUserListResponseSerializer.project/core/api/v1/views/user.py:UserListAPIViewatualizada.project/core/tests/integration/test_user_api.py: Novos testes de paginação e filtragem.- Documentação detalhada em
docs/development/pagination-filtering.md.
- Estrutura de Changelog: Criação deste arquivo
CHANGELOG.mdpara rastrear todas as alterações do projeto, substituindo o antigoSUMMARY_OF_CHANGES.md.
Alterado¶
- Links de Documentação: Corrigidos links absolutos e relativos no
README.mdda raiz e nodocs/CONTRIBUTING.mdpara garantir o funcionamento correto no GitHub Pages. - Navegação do MkDocs: Atualização do
mkdocs.ymlpara incluir novas entradas de documentação (Testes Automatizados, Paginação e Filtragem, Logs e Tratamento de Exceções) e a nova entradaChangelog.
Refatorado¶
- Modelo de Usuário Mais Leve: O modelo
Userdo Django foi refatorado para herdar deAbstractBaseUserePermissionsMixin, removendo o campousernamee definindoUSERNAME_FIELD = "email"eREQUIRED_FIELDSapropriadamente. A lógica emDjangoUserRepositorye nos casos de uso foi adaptada para o novo modelo. - Implementação OAuth2 Completa: A
DjangoAuthGatewayfoi atualizada para utilizar odjango-oauth-toolkitpara a geração real de tokens de acesso e refresh, substituindo a lógica de tokens fictícios. Configurações OAuth2 confirmadas emsettings.pyeurls.py.
[1.1.0] - Projeto Base de Arquitetura Limpa Inicial¶
Adicionado¶
- Estrutura da Arquitetura Limpa: O projeto foi reestruturado em camadas distintas (Domínio, Aplicação, Infraestrutura, Apresentação), promovendo o desacoplamento e a separação de responsabilidades.
- Domínio: Entidades de negócio (
User) e interfaces abstratas (UserRepository,AuthGateway). - Aplicação: Casos de uso (use cases/interactors) para orquestrar a lógica de negócio, dependendo apenas da camada de Domínio. Foram criados casos de uso genéricos CRUD e casos de uso específicos para
User(criação, login, listagem, obtenção por ID, alteração de senha). - Infraestrutura: Implementações concretas das interfaces de repositório e gateway usando tecnologias específicas (ex:
DjangoUserRepositoryvia ORM do Django,DjangoAuthGatewaypara autenticação Django). - Apresentação (API): Views e serializers do Django REST Framework adaptados para interagir com os casos de uso e seus DTOs.
- Domínio: Entidades de negócio (
- Injeção de Dependências: Módulo (
project/core/api/deps.py) criado para gerenciar e injetar as dependências concretas nos casos de uso. - Documentação Inicial: Criação de um guia detalhado sobre a Arquitetura Limpa no projeto.
- Arquivos Open Source: Inclusão de
CONTRIBUTING.mdeCODE_OF_CONDUCT.md. - Configuração MkDocs: Setup do MkDocs e GitHub Pages para hospedar a documentação do projeto.
Alterado¶
- Configuração de URLs: Rotas da API (
/v1/users/,/v1/login/, etc.) foram centralizadas e atualizadas. - Serializers e Views DRF: Adaptados para interagir com os casos de uso e seus DTOs, garantindo que a camada de apresentação atue como um adaptador.
- Reestruturação da Documentação: O guia original foi dividido e organizado em um novo diretório
docs/com subdiretórios (architecture/,development/,setup/), melhorando a navegabilidade.
Removido¶
- Lógica de negócio diretamente de views e serializers do DRF, movida para os casos de uso na camada de Aplicação.