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
+9
View File
@@ -64,6 +64,7 @@ class CampaignScheduleCreateRequest(BaseModel):
source_version_id: str = Field(min_length=1, max_length=36)
name: str = Field(min_length=1, max_length=255)
delivery_mode: Literal["manual", "autonomous"] = "manual"
recurrence_kind: Literal["once", "daily", "weekly", "monthly"] = "once"
interval_count: int = Field(default=1, ge=1, le=365)
timezone: str = Field(default="UTC", min_length=1, max_length=100)
@@ -107,9 +108,14 @@ class CampaignScheduleOccurrenceResponse(BaseModel):
schedule_id: str
scheduled_for: datetime
status: str
idempotency_key: str | None = None
generated_campaign_id: str | None = None
generated_version_id: str | None = None
error: str | None = None
delivery_command_ids: list[str] = Field(default_factory=list)
recovery_state: str = "none"
evidence: dict[str, object] = Field(default_factory=dict)
last_checked_at: datetime | None = None
created_at: datetime
@@ -120,6 +126,7 @@ class CampaignScheduleResponse(BaseModel):
campaign_id: str
source_version_id: str
name: str
delivery_mode: str
recurrence_kind: str
interval_count: int
timezone: str
@@ -133,6 +140,8 @@ class CampaignScheduleResponse(BaseModel):
last_fired_at: datetime | None = None
last_campaign_id: str | None = None
last_error: str | None = None
last_outcome: str | None = None
last_recovery_state: str | None = None
created_at: datetime
updated_at: datetime
occurrences: list[CampaignScheduleOccurrenceResponse] = Field(default_factory=list)