fix(api): hide campaign operational internals
This commit is contained in:
@@ -3,11 +3,17 @@ from __future__ import annotations
|
||||
from datetime import datetime
|
||||
from typing import Any, Literal
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, model_validator
|
||||
from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator
|
||||
|
||||
from govoplan_core.api.v1.schemas import DeltaDeletedItem
|
||||
from govoplan_core.mail.config import ImapConfig, SmtpConfig
|
||||
|
||||
from govoplan_campaign.backend.response_security import (
|
||||
public_campaign_configuration,
|
||||
public_campaign_payload,
|
||||
public_source_filename,
|
||||
)
|
||||
|
||||
|
||||
class CampaignCreateRequest(BaseModel):
|
||||
model_config = ConfigDict(extra="forbid")
|
||||
@@ -80,7 +86,6 @@ class CampaignVersionResponse(BaseModel):
|
||||
version_number: int
|
||||
schema_version: str
|
||||
source_filename: str | None = None
|
||||
source_base_path: str | None = None
|
||||
workflow_state: str = "editing"
|
||||
current_flow: str = "manual"
|
||||
current_step: str | None = None
|
||||
@@ -100,10 +105,25 @@ class CampaignVersionResponse(BaseModel):
|
||||
execution_snapshot_hash: str | None = None
|
||||
execution_snapshot_at: datetime | None = None
|
||||
|
||||
@field_validator("source_filename", mode="before")
|
||||
@classmethod
|
||||
def remove_source_directory(cls, value: Any) -> str | None:
|
||||
return public_source_filename(value)
|
||||
|
||||
@field_validator("validation_summary", "build_summary", mode="before")
|
||||
@classmethod
|
||||
def remove_internal_summary_fields(cls, value: Any) -> Any:
|
||||
return public_campaign_payload(value)
|
||||
|
||||
|
||||
class CampaignVersionDetailResponse(CampaignVersionResponse):
|
||||
raw_json: dict[str, Any]
|
||||
|
||||
@field_validator("raw_json", mode="before")
|
||||
@classmethod
|
||||
def remove_internal_configuration_fields(cls, value: Any) -> Any:
|
||||
return public_campaign_configuration(value)
|
||||
|
||||
|
||||
class CampaignPartialValidationResponse(BaseModel):
|
||||
ok: bool
|
||||
@@ -351,6 +371,15 @@ class CampaignJobDetailResponse(BaseModel):
|
||||
attempts: dict[str, list[dict[str, Any]]] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class CampaignJobDiagnosticsResponse(BaseModel):
|
||||
job_id: str
|
||||
campaign_id: str
|
||||
campaign_version_id: str
|
||||
storage: dict[str, Any] = Field(default_factory=dict)
|
||||
worker_claim: dict[str, Any] = Field(default_factory=dict)
|
||||
attempts: dict[str, list[dict[str, Any]]] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class CampaignRetryJobsRequest(BaseModel):
|
||||
model_config = ConfigDict(extra="forbid")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user