import uuid from datetime import datetime from typing import Any from pydantic import AliasChoices, BaseModel, ConfigDict, Field from api.schemas.compat import OptionalWorkplanIdCompatMixin class ProgressEventCreate(BaseModel): topic_id: uuid.UUID | None = None workplan_id: uuid.UUID | None = Field( default=None, validation_alias=AliasChoices("workplan_id", "workstream_id"), ) task_id: uuid.UUID | None = None decision_id: uuid.UUID | None = None event_type: str summary: str detail: dict[str, Any] | None = None author: str | None = None session_id: str | None = None class ProgressEventRead(OptionalWorkplanIdCompatMixin, BaseModel): model_config = ConfigDict(from_attributes=True) id: uuid.UUID topic_id: uuid.UUID | None = None task_id: uuid.UUID | None = None decision_id: uuid.UUID | None = None event_type: str summary: str detail: dict[str, Any] | None = None author: str | None = None session_id: str | None = None created_at: datetime