A7
Universidade A7
🏭
Trilha
Produção sem Erro
Aula 03 · ~4 min · Equipe A7

As proteções anti-erro do sistema

O que o A7X bloqueia automaticamente — pular etapa, dupla conclusão, peça em setor errado.

0% concluído 0 / 5

Erro humano é inevitável — o sistema não

Operador clica errado. Confunde peça. Tenta refazer. Em escala, esses errinhos viram caos.

O A7X tem 4 proteções automáticas embutidas no fluxo de produção.

Proteção 1: sequência rígida

A RPC complete_sector_item valida no banco:

“Esta peça está realmente no setor que está tentando concluir?”

Se você está na tela de Lavagem e tenta concluir uma peça que ainda está em Triagem, o sistema retorna erro. Não há como pular.

O mapa de setores é fixo no banco (CASE statement no PostgreSQL). Não dá pra adicionar uma rota alternativa pelo frontend.

Proteção 2: idempotência

Se você clicar Concluir duas vezes muito rápido (rede instável, duplo-toque), apenas a primeira vai. A segunda recebe a mesma resposta sem efeito.

Por trás: INSERT ... ON CONFLICT DO NOTHING na fila. Mesmo princípio em todo lugar onde duplicidade pode causar problema.

Proteção 3: race condition (mais técnico)

Se 2 operadores tentam concluir a mesma peça ao mesmo tempo (improvável, mas possível), o banco serializa com SELECT ... FOR UPDATE:

  • Operador A trava a linha
  • Operador B espera 50ms
  • Operador A conclui
  • Operador B recebe “peça já concluída por outro”

Resultado: zero conflito de estado. Zero peça contada duplo.

Proteção 4: tenancy guard

Operador da unidade A não consegue concluir peça da unidade B, mesmo acidentalmente. RLS (Row-Level Security) do PostgreSQL bloqueia no nível do banco — não depende do frontend.

Nenhuma URL “secreta” libera. Nenhum bug de UI vaza dados de outra unidade. A proteção vive no servidor.

O que acontece quando uma proteção dispara

UI mostra toast vermelho com mensagem clara:

  • “Peça não está neste setor”
  • “Peça já foi concluída”
  • “Acesso negado”

Operador entende, ajusta, segue. Sem precisar de suporte.

E se mesmo assim algo dá errado?

Toda RPC crítica registra log em integration_failures com:

  • Timestamp
  • User ID
  • Payload completo
  • Erro retornado

Gestor consulta esse log no painel pra entender qualquer estranheza. Última aula desta trilha mostra como.

Erros comuns

  • Duplicar com botão “Voltar”: depois de concluir, não dá pra desfazer pelo app. Idempotência protege contra dupla, mas não desfaz. Pra reverter, fala com gestor — existe RPC administrativa.
  • Reclamar que sistema “não deixa”: se está bloqueando, há razão. Olhe a mensagem do toast antes de chamar suporte.
  • Achar que pode editar setor de uma peça pelo painel: não pode. Por design.

Insight

Cada proteção é uma desculpa que o operador NÃO terá quando algo der errado. “Cliquei errado” não vira “perdi a peça” — vira “o sistema bloqueou e me avisou”.

Próximo passo

Peças passaram pelos 5 setores. Hora de devolver o lote ao ponto de coleta — e disparar o faturamento. Próxima aula.

Seu progresso fica salvo nesse navegador. Continue de onde parou quando voltar.