| Critério | Descrição |
|---|---|
| Código limpo | Uso de identação, espaçamento, nomes descritivos de variáveis, funções e classes. Adoção de convenções como o PEP 8. |
| Reutilização e modularização | Evita repetições, utiliza funções e métodos reutilizáveis, organiza o código por responsabilidades. |
| Separação clara de camadas (MVC simplificado) | Estrutura clara com modelos e controladores |
| Comentários relevantes e documentação interna | Comentários que explicam por que algo é feito (não o óbvio), docstrings em funções e classes. |
| Critério | Descrição |
|---|---|
| Uso de padrão de projeto | Uso consciente de um padrão organizacional (ex: repository pattern, service layer), mesmo que simples, mas com consistência. |
| Clareza na separação de responsabilidades | Cada arquivo ou módulo tem uma função bem definida e coesa. |
| Justificativa da arquitetura escolhida | Capacidade de explicar por que estruturou o projeto daquela maneira. |
| Critério | Descrição |
|---|---|
| Uso de ambiente virtual | Criação e ativação de venv, ausência de dependências globais. |
Arquivo requirements.txt completo e funcional |
Todas as bibliotecas utilizadas estão devidamente listadas. |
Uso correto do .env com python-dotenv |
Senhas e dados sensíveis estão armazenados em variáveis de ambiente. |
| Critério | Descrição |
|---|---|
| Utilização de FastAPI com tipagem explícita (typing) | Anotações com str, int, List, Optional, etc. |
| Models ou Schemas com Pydantic | Modelos bem definidos com validações apropriadas. |
| Endpoints bem definidos com anotações e dependências | Uso de @app.get(), @app.post() com summary, description, responses. |
| Geração automática da documentação | Documentação acessível e coerente no OpenAPI (Swagger) e Redoc. |
| Critério | Descrição |
|---|---|
| Senhas, tokens e conexões protegidos | Uso correto de .env ou config.py e controle do ciclo de vida da conexão (por exemplo com with). |
| Segurança contra erros comuns (ex: SQL Injection) | Se aplicável, uso de mecanismos de proteção. |
| Tratamento de exceções | Uso de try/except com mensagens claras e log de erros. |
| Respostas HTTP padronizadas | Uso correto dos status (200, 201, 404, 422, 500 etc.), com mensagens claras ao usuário e à API. |
| Critério | Descrição |
|---|---|
| Consistência do modelo de dados | Estrutura relacional coerente entre tabelas. |
| Scripts de criação da base (DDL) | Existência de scripts para criação da estrutura ou uso de ORM simples. |
| Integridade referencial e validações | Verificação de dados inválidos, duplicados ou fora do padrão esperado. |
| Critério | Descrição |
|---|---|
| Clareza e completude da documentação da API | Uso dos recursos de FastAPI + explicações no README do projeto. |
| Documentação técnica complementar | Inclusão de README com instruções para execução local, descrição do projeto, estrutura e tecnologias. |
| Comunicação clara durante a defesa | Explicações técnicas objetivas, domínio conceitual e capacidade de resposta às perguntas da banca. |
| Critério | Descrição |
|---|---|
| Originalidade do código | Evita cópia direta de exemplos prontos ou código gerado por IA sem compreensão. |
| Domínio técnico | A equipe demonstra pleno entendimento do que foi desenvolvido. |
| Justificativas técnicas | Para cada escolha feita (estrutura, nomeclaturas, divisão de arquivos, validações etc.). |
| Critério | Descrição |
|---|---|
| Apresentação da arquitetura geral do projeto | Explicação do fluxo de dados, camadas, bibliotecas utilizadas. |
| Demonstração do funcionamento da API | Testes reais via OpenAPI (Swagger) ou ferramenta como Postman. |
| Capacidade de responder a questionamentos | Tanto conceituais quanto específicos do código apresentado. |
| Clareza na comunicação | Vocabulário técnico correto, objetividade, didática ao expor ideias. |