🔧 Guia de Desenvolvimento e Contribuição

Agradecemos o interesse em contribuir com o Sistema de Gestão de Processos Seletivos! Este documento orienta o ambiente de desenvolvimento, padrões de código e fluxo de contribuição.

💻 Setup de Desenvolvimento Local

1. Ambiente Virtual Python

Para desenvolvimento local fora do container (autocompletar na IDE, linting local, etc.):

# Criar o ambiente virtual
python -m venv .venv
source .venv/bin/activate  # Linux/Mac
# ou: .venv\Scripts\activate  # Windows

# Instalar dependências de desenvolvimento
pip install -r src/requirements.txt
pip install -r src/requirements-dev.txt

2. Hooks de Pre-commit

Configure o pre-commit para formatar e verificar o código automaticamente antes dos commits:

pre-commit install --hook-type pre-push --hook-type pre-commit

🎨 Padrões de Código e Formatação

O projeto adota ferramentas automatizadas para manter a qualidade e padronização do código:

  • Black: Formatador de código Python padrão (linha máx: 120 caracteres).

  • Ruff: Linter ultrarrápido para checagem de erros e conformidade PEP 8.

  • doc8: Linter para validação dos arquivos de documentação em reStructuredText (.rst).

Para formatar o código manualmente via CLI prosel:

./prosel lint web

🧪 Testes Automatizados

Toda nova funcionalidade ou correção de bug deve ser acompanhada de testes unitários ou de integração.

# Rodar os testes via prosel CLI
./prosel test web

# Ou rodar pytest localmente no ambiente virtual
pytest src/

👥 Fluxo de Contribuição Git

  1. Faça um Fork do repositório.

  2. Crie uma branch para sua modificação:

    git checkout -b feature/MinhaNovaFuncionalidade
    
  3. Garanta que os testes e linters estejam passando.

  4. Escreva commits claros e objetivos:

    git commit -m "feat(inscricoes): adiciona restricao de tamanho maximo de PDF"
    
  5. Envie a branch para o seu repositório remoto:

    git push origin feature/MinhaNovaFuncionalidade
    
  6. Abra um Pull Request (PR) detalhando as alterações efetuadas.