Quando o usuário entra na página do pregão, o sistema faz uma consulta no banco para verificar quais peças (moedas ou cédulas) estão com status = 'aberto' na tabela lista_pregao.
O sistema carrega o catálogo na ordem definida pelo campo id ou fimPregao, dependendo se a peça já está em leilão ou aguardando.
A primeira peça da fila recebe destaque visual (primeira-moeda) e pode ter badge “PRÓXIMA” no frontend.
Queries envolvidas:
Cada peça recebe uma posição na fila (posicao-fila), calculada pelo index da query.
No frontend, a posição é mostrada em um círculo, e os cards são renderizados em ordem sequencial.
A fila é atualizada automaticamente a cada 30 segundos via window.location.reload() ou, futuramente, via AJAX.
Usuários podem dar lances antes da peça iniciar.
O sistema verifica:
Se o valor do lance é maior que o maior lance atual.
Se o usuário não deu um lance igual a outro já registrado.
Regra de empate: caso dois lances sejam iguais, vence o primeiro lance recebido. O segundo é rejeitado.
Queries envolvidas:
Quando a peça inicia, fimPregao recebe timestamp de início + 60 segundos.
O contador de tempo é reiniciado se houver novos lances.
Todas as ações do usuário (lance, chat) são registradas para auditoria.
Cada lance é validado no backend antes de ser aceito:
valor_lance > maior_lance_atual
idUsuario não duplicado no mesmo lance
O banco recebe o registro:
Quando o tempo do pregão expira, a peça é marcada como status = 'vendido'.
O maior lance é identificado como vencedor.
O sistema atualiza tabelas relevantes:
Caso não haja lances, a peça pode permanecer aberta ou ser cancelada conforme regras internas.
Todas as ações do pregão são logadas no chat:
Lances realizados
Mensagens motivacionais e dúvidas
Futuramente: IA leiloeira, que irá participar do chat para tirar dúvidas sobre regras e postar mensagens motivacionais.
Admin pode cancelar ou suspender o pregão manualmente via painel.
O sistema deve registrar motivo e usuário responsável.
Penalidades (ex.: lance inválido ou cancelamento) são aplicadas conforme regras legais.
Nilton Romani