feat: 同步报销流程与工作台改动
This commit is contained in:
@@ -4,7 +4,9 @@ from datetime import date, datetime
|
||||
from decimal import Decimal
|
||||
from typing import Any
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
||||
|
||||
from app.services.expense_claim_budget_risk_flags import dedupe_budget_risk_flags
|
||||
|
||||
|
||||
class ReimbursementCreate(BaseModel):
|
||||
@@ -147,6 +149,8 @@ class ExpenseClaimRead(BaseModel):
|
||||
employee_position: str | None = None
|
||||
employee_grade: str | None = None
|
||||
manager_name: str | None = None
|
||||
finance_owner_name: str | None = None
|
||||
finance_approver_name: str | None = None
|
||||
budget_approver_name: str | None = None
|
||||
budget_approver_grade: str | None = None
|
||||
budget_approver_role_code: str | None = None
|
||||
@@ -167,6 +171,13 @@ class ExpenseClaimRead(BaseModel):
|
||||
updated_at: datetime
|
||||
items: list[ExpenseClaimItemRead] = Field(default_factory=list)
|
||||
|
||||
@field_validator("risk_flags_json", mode="before")
|
||||
@classmethod
|
||||
def dedupe_budget_risk_flags_for_read(cls, value: Any) -> list[Any]:
|
||||
if isinstance(value, list):
|
||||
return dedupe_budget_risk_flags(value)
|
||||
return []
|
||||
|
||||
|
||||
class ExpenseClaimActionResponse(BaseModel):
|
||||
message: str
|
||||
|
||||
Reference in New Issue
Block a user