Block manual send reservation for unreleased shared numbers

Implement shared-number detection in reserveOutreachSend: reject manual WhatsApp sends with HTTP 409 when the destination number is shared across 2+ leads and hasn't been explicitly released via override.

- Add test: reserveOutreachSend bloqueia numero compartilhado sem override e libera com override
- Add check in reserveOutreachSend right after isOptedOut check
- Uses isNumberSharedAcrossLeads and isSharedNumberOverridden from Task 1

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Gustavo
2026-07-31 11:11:54 -03:00
co-authored by Claude Sonnet 5
parent 40bd8d096e
commit 3d2144eefc
2 changed files with 22 additions and 0 deletions
+5
View File
@@ -1127,6 +1127,11 @@ export function reserveOutreachSend(db, {
error.statusCode = 409;
throw error;
}
if (isNumberSharedAcrossLeads(db, normalized) && !isSharedNumberOverridden(db, normalized)) {
const error = new Error('numero compartilhado por multiplos leads (revise em Configuracoes antes de enviar)');
error.statusCode = 409;
throw error;
}
const limit = Number(getSetting(db, 'outreach.mensagensPorDia', '10')) || 0;
const used = countDailyOutreachUsage(db, { origem: 'manual' });
if (used >= limit) {