jrcosta/repo_alvo_api_simples
25 Apr 2026 – 01:15:32 UTC
📦 artifacts.json 📊 run_summary.json

Arquivo analisado: python-api/app/api/routes.py

Tipo da mudança

Evidências observadas

Impacto provável

Riscos identificados

Cenários de testes manuais

  1. Cálculo básico de desconto válido
    - Enviar payload com base_price, discount_percentage, coupon_code (opcional), is_vip (booleano).
    - Verificar se o final_price retornado está correto conforme regras de negócio (se conhecidas).
  2. Payload com valores limite
    - base_price zero ou negativo (se permitido).
    - discount_percentage zero, 100, ou valores inválidos (ex: >100, negativos).
    - coupon_code inválido ou vazio.
    - is_vip verdadeiro e falso.
  3. Payload inválido
    - Campos faltando.
    - Tipos errados (ex: string em base_price).
    - Verificar se retorna HTTP 422 (validação Pydantic).
  4. Erro de negócio
    - Forçar DiscountService a lançar ValueError (ex: desconto maior que preço).
    - Verificar se retorna HTTP 400 com mensagem adequada.
  5. Testar ausência de campos opcionais
    - Enviar payload sem coupon_code e verificar comportamento.
  6. Testar comportamento com valores extremos
    - Preço muito alto.
    - Desconto muito alto.
  7. Testar resposta do endpoint
    - Verificar se o JSON retornado corresponde ao schema DiscountResponse.
  8. Testar documentação
    - Verificar se o endpoint aparece corretamente em /docs com os schemas.

Sugestões de testes unitários

Sugestões de testes de integração

Sugestões de testes de carga ou desempenho

Pontos que precisam de esclarecimento


Resumo: A mudança adiciona um novo endpoint para cálculo de desconto, integrando um novo serviço e schemas. O impacto é isolado, mas requer atenção à validação, tratamento de erros e testes específicos para garantir que o cálculo e a API funcionem corretamente. Riscos reais incluem falhas no serviço de desconto e tratamento insuficiente de erros. Recomenda-se testes manuais focados em entradas válidas e inválidas, além de testes unitários e de integração para o endpoint e serviço. Pontos de negócio e segurança precisam ser esclarecidos para garantir cobertura adequada.


Arquivo analisado: python-api/app/schemas.py

Tipo da mudança

Evidências observadas

Impacto provável

Riscos identificados

Cenários de testes manuais

  1. Validação de entrada:
    - Enviar requisição com base_price negativo → deve ser rejeitada com erro de validação.
    - Enviar discount_percentage menor que 0 ou maior que 100 → rejeição por validação.
    - Enviar coupon_code com valores variados (string vazia, caracteres especiais, muito longo) para verificar aceitação.
    - Enviar is_vip como true e false para verificar aceitação.

  2. Fluxo funcional (assumindo endpoint implementado):
    - Enviar requisição com base_price positivo e discount_percentage válido, sem cupom e is_vip falso → verificar se final_price é calculado corretamente.
    - Enviar com cupom válido (se houver regra) e verificar desconto aplicado.
    - Enviar com is_vip verdadeiro e verificar se desconto adicional é aplicado.
    - Enviar com discount_percentage zero e verificar se final_price é igual a base_price.

  3. Testar comportamento com campos opcionais omitidos:
    - Omitir discount_percentage e coupon_code e verificar comportamento padrão.

  4. Testar limites:
    - discount_percentage exatamente 0 e 100.
    - base_price zero.

Sugestões de testes unitários

Sugestões de testes de integração

Sugestões de testes de carga ou desempenho

Pontos que precisam de esclarecimento


Resumo: A mudança adiciona dois novos modelos Pydantic para requisição e resposta de desconto, com validações básicas de campo. O impacto funcional depende da implementação dos serviços e endpoints que os utilizam. Riscos principais envolvem ausência de validações mais específicas e falta de testes para esses novos modelos. Recomenda-se testes focados em validação de dados, integração com serviços de desconto e verificação do cálculo do preço final.


Arquivo analisado: python-api/app/services/discount_service.py

Tipo da mudança

Evidências observadas

Impacto provável

Riscos identificados

Cenários de testes manuais

  1. Cálculo básico de desconto percentual
    - Entrada: base_price=200.0, discount_percentage=20.0, sem cupom, não VIP.
    - Esperado: preço final = 200 - 20% = 160.00.

  2. Desconto percentual maior que 70%
    - Entrada: base_price=100.0, discount_percentage=80.0.
    - Esperado: desconto limitado a 70%, preço final = 30.00.

  3. Desconto percentual negativo
    - Entrada: base_price=100.0, discount_percentage=-10.0.
    - Esperado: desconto tratado como 0%, preço final = 100.00.

  4. Cliente VIP com desconto adicional
    - Entrada: base_price=100.0, discount_percentage=10.0, is_vip=True.
    - Cálculo: 100 - 10% = 90.0; VIP 5% sobre 90.0 = 85.5.
    - Esperado: preço final = 85.50.

  5. Aplicação do cupom QUERO10
    - Entrada: base_price=50.0, discount_percentage=0, coupon_code="QUERO10".
    - Esperado: preço final = 50 - 10 = 40.00.

  6. Aplicação do cupom QUERO20 com preço base abaixo de 100
    - Entrada: base_price=90.0, discount_percentage=0, coupon_code="QUERO20".
    - Esperado: cupom não aplicado, preço final = 90.00.

  7. Aplicação do cupom QUERO20 com preço base acima de 100
    - Entrada: base_price=150.0, discount_percentage=0, coupon_code="QUERO20".
    - Esperado: preço final = 150 - 20 = 130.00.

  8. Preço base negativo
    - Entrada: base_price=-10.0.
    - Esperado: exceção ValueError.

  9. Preço final não pode ser negativo
    - Entrada: base_price=10.0, discount_percentage=70.0, coupon_code="QUERO10", is_vip=True.
    - Cálculo: 10 - 7 = 3; VIP 5% sobre 3 = 2.85; cupom -10 = -7.15 → preço final ajustado para 0.00.
    - Esperado: preço final = 0.00.

  10. Desconto progressivo por quantidade de itens

    • Testar para 0, 4, 5, 9, 10, 19, 20 itens com valores variados.
    • Verificar se o fator aplicado está correto (1.0, 0.95, 0.90, 0.85).
  11. Valores negativos ou zero em apply_bulk_discount

    • Entrada: items_count=0 e total_value=100.0.
    • Esperado: sem desconto, preço final = 100.00.
    • Entrada: items_count=-5 e total_value=100.0.
    • Esperado: comportamento definido (atualmente aplica fator 1.0).

Sugestões de testes unitários

Sugestões de testes de integração

Sugestões de testes de carga ou desempenho

Pontos que precisam de esclarecimento


Resumo: A mudança introduz um novo serviço de cálculo de descontos com regras claras e específicas, mas ainda sem cobertura de testes automatizados e com algumas decisões de implementação que podem gerar dúvidas ou riscos. Recomenda-se foco em testes unitários detalhados para as regras de desconto, testes manuais para validar cenários críticos e esclarecimentos sobre regras de negócio e integração para garantir segurança e consistência na aplicação.