Stack Python no commons

TLDR: Criar a stack Python no .commons (make + docker compose) e migrar o onion-backend para usá-la, seguindo o padrão da stack Ruby.

Contexto

O onion-backend tem Makefile e docker-compose.yml customizados e acoplados ao projeto. O .commons já suporta Ruby, Elixir, React e N8N, mas não Python. O objetivo é criar a stack Python no commons para padronizar o projeto com o restante do monorepo.

Objetivos

  • Criar stack make Python no .commons com todos os targets do contrato
  • Criar stack docker compose Python com volume de cache do UV
  • Criar shared services genéricos: messagebroker.yml, beat.yml
  • Migrar o onion-backend para usar o commons (Makefile + compose.yml)

Fora de escopo

— (não registrado na spec original)

Mudanças

Commons (arquivos novos): - .commons/make/stacks/python.mk - .commons/make/stacks/python/code.mk - .commons/make/stacks/python/_container.mk - .commons/make/stacks/python/_shortcuts.mk - .commons/make/stacks/python/ci.mk - .commons/make/stacks/python/deploy.mk - .commons/docker/compose/stacks/python.yml - .commons/docker/compose/shared/messagebroker.yml - .commons/docker/compose/shared/beat.yml

onion-backend (modificados): - Makefile → include .commons/make/main.makefile - docker-compose.yml → renomear para compose.yml com includes do commons - .project/make/overrides.mk → criar (env vars do Django) - .project/docker/compose/dependencies.yml → criar

Como verificar

  1. make help → lista todos os targets
  2. make install → roda uv sync
  3. make start → sobe a stack completa
  4. make test → roda pytest
  5. make lint → roda pre-commit + pylint
  6. make db.migrate → roda migrations via container
  7. make deploy.staging → mostra “not implemented yet!”

Documentação

— (não registrado na spec original)