feat(expenses): add transactional expense case events

This commit is contained in:
caoxiaozhu
2026-07-13 11:58:48 +08:00
parent 9a84e125d0
commit 661990b27b
21 changed files with 1973 additions and 63 deletions

View File

@@ -0,0 +1,51 @@
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)