fix(rx): dedup idempotente no image-upload-direct (resync não duplica)
Antes do INSERT, remove linha existente com mesmo original_filename. Sem isso, o reenvio (sync-request/Plan B) de um arquivo cujo objeto Wasabi sumiu mas a linha existia criava DUPLICATA. Descoberto no teste de resync de 3 radiografias. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1271,7 +1271,13 @@ io.on('connection', (socket) => {
|
|||||||
socket.on('image-upload-direct', async (data, callback) => {
|
socket.on('image-upload-direct', async (data, callback) => {
|
||||||
try {
|
try {
|
||||||
console.log('📥 [image-upload-direct] Notificação de upload recebida de:', socket.id);
|
console.log('📥 [image-upload-direct] Notificação de upload recebida de:', socket.id);
|
||||||
|
|
||||||
|
// Dedup/idempotência: se já existe linha p/ este original_filename, remove a antiga
|
||||||
|
// (reenvio/resync substitui em vez de duplicar). Evita linhas órfãs duplicadas.
|
||||||
|
if (data?.metadata?.fileName) {
|
||||||
|
await db.run('DELETE FROM images WHERE original_filename = $1', [data.metadata.fileName]).catch(() => {});
|
||||||
|
}
|
||||||
|
|
||||||
const clientInfo = connectedClients.find(c => c.socketId === socket.id);
|
const clientInfo = connectedClients.find(c => c.socketId === socket.id);
|
||||||
const clientName = clientInfo ? clientInfo.name : 'PC não identificado';
|
const clientName = clientInfo ? clientInfo.name : 'PC não identificado';
|
||||||
const clinicName = socket.user?.clinicName || clientInfo?.clinicName || 'Clínica não identificada';
|
const clinicName = socket.user?.clinicName || clientInfo?.clinicName || 'Clínica não identificada';
|
||||||
|
|||||||
Reference in New Issue
Block a user