Backend do CapacidadeProdutiva.
Responsável por manter um snapshot no schema sap_snapshot a partir do banco SAP, desacoplando leitura analítica do banco transacional.
O arquivo config.env é gerado localmente e não deve ser commitado.
Python 3.12, uv instalado, PostgreSQL acessível, acesso ao banco do SAP (somente leitura).
Entre na pasta do backend.
cd backendInstale as dependências.
uv syncExecute o assistente principal de inicialização.
uv run inicializarEsse comando gera o config.env e pode criar o banco do CP (opcional).
Depois aplique as migrações.
uv run alembic upgrade headEm seguida, execute a sincronização do SAP para o snapshot do CP.
uv run sincronizar-sapRodar a aplicação.
uv run uvicorn cp.main:app --reloadRodar testes.
uv run pytestLint.
uv run ruff check .Formatar código.
uv run ruff format .Type check.
uv run mypy srcO arquivo fica em backend/config.env. Ele é lido pelo Settings e não deve ir para o git.
Exemplo mínimo para ambiente local.
ENVIRONMENT=local
CP_DB_HOST=localhost
CP_DB_PORT=5432
CP_DB_NAME=cp_teste
CP_DB_USER=postgres
CP_DB_PASSWORD=postgres
SAP_DB_HOST=localhost
SAP_DB_PORT=5432
SAP_DB_NAME=sap
SAP_DB_USER=postgres
SAP_DB_PASSWORD=postgres
SAP_TEST_DB_HOST=localhost
SAP_TEST_DB_PORT=5432
SAP_TEST_DB_NAME=sap_test
SAP_TEST_DB_USER=postgres
SAP_TEST_DB_PASSWORD=postgresO CI materializa um config.env temporário automaticamente apenas para testes. O CI não precisa de auth.
Build da imagem, execute na pasta backend.
docker build -t capacidade-prod-backend .Rodar a aplicação.
docker run -p 8000:8000 capacidade-prod-backendO container não gera config.env. As variáveis devem ser fornecidas via --env-file, -e, Docker Compose ou secrets do deploy.
Se aparecer erro de ambiente ou dependências inconsistentes, primeiro valide que você está no diretório backend.
Remove o ambiente virtual e recria do zero.
cd backend
Remove-Item -Recurse -Force .venv
uv syncSe o uv sync reclamar de lock desatualizado, gere lock e sincronize.
cd backend
uv lock
uv syncEm casos raros de download corrompido ou cache inconsistente.
cd backend
uv cache clean
python -m pip cache purgecd backend
Remove-Item -Recurse -Force .pytest_cache, .coverage, htmlcov -ErrorAction SilentlyContinueSe você apagou o banco ou criou do zero e ficou com estado de migração estranho, o correto é recriar o banco e rodar alembic upgrade head. Evite apagar alembic_version em ambiente real.
Para desenvolvimento local, se precisar limpar versão de migração manualmente.
# Ajuste o caminho do psql conforme sua instalação
& "C:\Program Files\PostgreSQL\16\bin\psql.exe" -U postgres -d cp_teste -c "DELETE FROM alembic_version;"
uv run alembic upgrade headSe o snapshot estiver inconsistente durante desenvolvimento, você pode truncar as tabelas do schema sap_snapshot e rodar sincronizar-sap novamente. Faça isso apenas em ambiente local ou de teste.
src/cp/
domain/
application/
infrastructure/
api/
config/
tests/
fixtures/
O snapshot do SAP é gravado no schema sap_snapshot do banco CP.