2026-05-30 15:46:51 +08:00
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
|
|
from typing import Any
|
|
|
|
|
|
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FinanceDashboardRead(BaseModel):
|
|
|
|
|
range_key: str
|
|
|
|
|
start_date: str
|
|
|
|
|
end_date: str
|
|
|
|
|
generated_at: str
|
|
|
|
|
has_real_data: bool
|
|
|
|
|
totals: dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
metric_meta: dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
trend: dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
spend_by_category: list[dict[str, Any]] = Field(default_factory=list)
|
|
|
|
|
exception_mix: list[dict[str, Any]] = Field(default_factory=list)
|
|
|
|
|
department_ranking: list[dict[str, Any]] = Field(default_factory=list)
|
2026-06-02 16:22:59 +08:00
|
|
|
employee_ranking: list[dict[str, Any]] = Field(default_factory=list)
|
|
|
|
|
top_claims: list[dict[str, Any]] = Field(default_factory=list)
|
2026-05-30 15:46:51 +08:00
|
|
|
bottlenecks: list[dict[str, Any]] = Field(default_factory=list)
|
|
|
|
|
budget_summary: dict[str, Any] = Field(default_factory=dict)
|
2026-06-02 16:22:59 +08:00
|
|
|
budget_metrics: list[dict[str, Any]] = Field(default_factory=list)
|