feat: govern autonomous campaign delivery schedules

This commit is contained in:
2026-08-20 21:10:11 +02:00
parent c846c249b8
commit 2a00d910df
14 changed files with 1251 additions and 65 deletions
+36
View File
@@ -138,3 +138,39 @@ def test_eml_retention_removes_only_terminal_artifact(tmp_path) -> None:
assert job.eml_local_path is None
assert job.eml_storage_key is None
session.add.assert_called_once_with(job)
def test_eml_retention_preserves_unfinished_autonomous_schedule_source(tmp_path) -> None:
now = datetime.now(timezone.utc)
eml_path = tmp_path / "approved-source.eml"
eml_path.write_bytes(b"approved message")
job = SimpleNamespace(
campaign_id="campaign-1",
campaign_version_id="version-1",
updated_at=now - timedelta(days=10),
queue_status="draft",
send_status="smtp_accepted",
imap_status="appended",
eml_local_path=str(eml_path),
eml_storage_key=None,
)
schedule_query = MagicMock()
schedule_query.filter.return_value.all.return_value = [("version-1",)]
job_query = MagicMock()
job_query.filter.return_value.order_by.return_value.all.return_value = [job]
session = MagicMock()
session.query.side_effect = [schedule_query, job_query]
policy = SimpleNamespace(generated_eml_retention_days=1)
result = _apply_eml_retention(
session,
dry_run=False,
now=now,
policy_for_campaign_id=lambda _campaign_id: policy,
)
assert result["skipped_schedule_source"] == 1
assert result["metadata_cleared"] == 0
assert eml_path.exists()
assert job.eml_local_path == str(eml_path)
session.add.assert_not_called()