feat: 同步报销流程与工作台改动

This commit is contained in:
caoxiaozhu
2026-06-09 08:32:00 +00:00
parent e124e4bbcb
commit 25724c354f
64 changed files with 6518 additions and 687 deletions

View File

@@ -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