Skip to content

refactor: segurança, tipagem e estrutura em cart.py e models.py - #19

Open
mateus-bernart wants to merge 8 commits into
AxelPCG:mainfrom
mateus-bernart:feat/code-review-refactor
Open

refactor: segurança, tipagem e estrutura em cart.py e models.py#19
mateus-bernart wants to merge 8 commits into
AxelPCG:mainfrom
mateus-bernart:feat/code-review-refactor

Conversation

@mateus-bernart

Copy link
Copy Markdown

Resumo

  • Segurança: price e quantity rejeitam valores <= 0 via field_validator do Pydantic
  • Tipagem: floatDecimal; list[T] nativo (Python 3.12); -> None explícito nos métodos; anotações em main.py
  • SOLID/SRP: DiscountCalculator extraído de ShoppingCart — injetável e testável isoladamente
  • Magic numbers: substituídos por constantes nomeadas
  • PRD: 3 melhorias Shift Left documentadas (SL-001 mypy CI, SL-002 cobertura AAA, SL-003 contrato Pydantic)
  • Testes: unitários (models, cart, discount) e integração (fluxos completos de carrinho)
  • CI: pipeline com ruff, mypy --strict e pytest --cov 80%

Checklist

  • add_item com quantity <= 0ValueError
  • Product com price <= 0ValidationError
  • calculate_total_with_discount nos três patamares (< 500, 500–1000, > 1000)
  • mypy --strict src/ sem erros
  • ruff check src/ sem erros
  • Cobertura >= 80%

🤖 Generated with Claude Code

Mateus and others added 8 commits May 12, 2026 21:23
… e models.py

- Substitui float por Decimal em Product.price para precisão financeira
- Adiciona field_validator em price e quantity para rejeitar valores inválidos na borda
- Extrai DiscountCalculator (SRP): regras de desconto isoladas e injetáveis
- Substitui magic numbers por constantes nomeadas e auditáveis
- Corrige tipagem: List[T] → list[T] nativo (Python 3.12), retornos -> None explícitos
- Guarda de quantity <= 0 em add_item antes de acessar a lista
- Documenta 3 melhorias Shift Left no PRD (SL-001, SL-002, SL-003)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… e models.py

- Substitui float por Decimal em Product.price para precisão financeira
- Adiciona field_validator em price e quantity para rejeitar valores inválidos na borda
- Extrai DiscountCalculator (SRP): regras de desconto isoladas e injetáveis
- Substitui magic numbers por constantes nomeadas e auditáveis
- Corrige tipagem: List[T] → list[T] nativo (Python 3.12), retornos -> None explícitos
- Guarda de quantity <= 0 em add_item antes de acessar a lista
- Documenta 3 melhorias Shift Left no PRD (SL-001, SL-002, SL-003)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Testes unitários: Product, CartItem, ShoppingCart, DiscountCalculator (padrão AAA)
- Testes de integração: fluxos completos de carrinho com desconto
- CI: lint (ruff), type check (mypy --strict) e pytest com cobertura mínima de 80%

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… no mypy

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant