Pular para o conteúdo principal
FLEXORA

Modificar um pedido em andamento sem corromper o total

Evitar que duas modificações legítimas e concorrentes de um pedido já existente corrompam seu total calculado.

Última atualização: 2026-09-18 · Responsável: Equipe de engenharia da Flexora

Alternativas consideradas

Descartada
Adicionar itens por meio de mudanças separadas e confiar apenas na idempotência.
Escolhida
Incorporar os itens, resolver seus preços e recalcular todos os itens vigentes dentro de uma única transação com retry.

Decisão tomada

Definir uma operação para adicionar vários itens a um pedido existente, resolver os preços ao adicioná-los e recalcular o pedido completo dentro de uma única operação transacional com retry.

Justificativa

A idempotência sozinha não cobre duas modificações diferentes que ocorrem de forma concorrente. Recalcular dentro de uma única operação protege o total desnormalizado.

Evidência de aplicação

Foi confirmado um caso real de adição de itens a um pedido que já estava pronto. A operação definida para resolvê-lo ainda não estava implementada no momento deste registro.

Perguntas frequentes

O que a Pyae decidiu sobre "modificar um pedido em andamento sem corromper o total"?
Definir uma operação para adicionar vários itens a um pedido existente, resolver os preços ao adicioná-los e recalcular o pedido completo dentro de uma única operação transacional com retry.
Existe evidência dessa decisão em produção?
Foi confirmado um caso real de adição de itens a um pedido que já estava pronto. A operação definida para resolvê-lo ainda não estava implementada no momento deste registro.
O que é uma condição de corrida ao modificar um pedido?
É quando duas alterações legítimas e concorrentes no mesmo pedido corrompem seu total calculado, porque cada uma parte de um estado que a outra já alterou. O Pyae confirmou um caso real de adição de itens a um pedido que já estava pronto.
Por que a idempotência não é suficiente para modificações concorrentes?
A idempotência protege contra novas tentativas de uma mesma solicitação, mas não cobre duas modificações diferentes que chegam ao mesmo tempo. O Pyae define uma única operação transacional com retry para resolver esse caso.
Como recalcular o total de um pedido sem corrompê-lo?
Incorporando os itens, resolvendo seus preços e recalculando todos os itens vigentes dentro de uma única operação transacional com retry, em vez de aplicar cada modificação como uma alteração isolada.

Esse tipo de decisão também vale para o seu projeto

Se a sua operação precisa de um software sob medida com decisões técnicas documentadas e sustentáveis no tempo, podemos ajudar a defini-las.