Files
X-Financial/server/src/app/schemas/expense_case.py

52 lines
1.2 KiB
Python

from __future__ import annotations
from datetime import datetime
from typing import Any
from pydantic import BaseModel, ConfigDict, Field
class ExpenseCaseLinkRead(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: str
resource_type: str
resource_id: str
relation_type: str
created_at: datetime
class BusinessEventRead(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: str
event_type: str
event_version: int
idempotency_key: str
aggregate_type: str
aggregate_id: str
correlation_id: str
causation_id: str | None
actor_id: str
actor_type: str
payload_json: dict[str, Any] = Field(default_factory=dict)
delivery_status: str
occurred_at: datetime
published_at: datetime | None
class ExpenseCaseTimelineRead(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: str
case_no: str
scene_code: str
title: str
owner_employee_id: str | None
current_stage: str
status: str
created_at: datetime
updated_at: datetime
links: list[ExpenseCaseLinkRead] = Field(default_factory=list)
events: list[BusinessEventRead] = Field(default_factory=list)