resumeCampaign resets semana_iniciada_em to avoid immediate escalation

resumeCampaign only updated status/pause_reason, so a campaign auto-paused
for many days and then resumed could immediately satisfy
escalateWeeklyLimits' 7-day check and double its daily limit right after
coming back from an unhealthy state -- the opposite of the intended
safety behavior. Now resumeCampaign also stamps semana_iniciada_em to
datetime('now'), resetting the weekly clock on every resume.
This commit is contained in:
Gustavo
2026-08-03 13:06:51 -03:00
parent aa46c3da07
commit 3a91ca4732
2 changed files with 24 additions and 2 deletions
+7 -2
View File
@@ -62,9 +62,14 @@ export function setCampaignStatus(db, campaignId, status, pauseReason = null) {
// So avanca campanha que estiver de fato pausada — retomar uma campanha em
// rascunho, por exemplo, deveria usar setCampaignStatus(db, id, 'rodando').
export function resumeCampaign(db, campaignId) {
// Reseta semana_iniciada_em pra agora: uma campanha que ficou pausada (por
// saude ruim ou motivo manual) por varios dias nao pode, ao ser retomada,
// já satisfazer o "rodando ha 7+ dias" do escalateWeeklyLimits e dobrar o
// limite diario logo de cara — isso inverteria a logica de seguranca.
db.prepare(
`UPDATE outreach_campaigns SET status = 'rodando', pause_reason = NULL, updated_at = datetime('now')
WHERE id = ? AND status = 'pausado'`
`UPDATE outreach_campaigns
SET status = 'rodando', pause_reason = NULL, semana_iniciada_em = datetime('now'), updated_at = datetime('now')
WHERE id = ? AND status = 'pausado'`
).run(campaignId);
return getCampaign(db, campaignId);
}