from datetime import datetime from pydantic import BaseModel, ConfigDict, Field class InstitutionCreateSchema(BaseModel): """创建费控制度请求模型""" enterprise_id: str = Field(..., description="企业ID") institution_id: str | None = Field(default=None, description="费控规则ID") institution_name: str | None = Field(default=None, description="制度名称") institution_desc: str | None = Field(default=None, description="制度描述") scene_type: str | None = Field(default=None, description="因公场景") expense_type: str | None = Field(default=None, description="费用类型") expense_sub_type: str | None = Field(default=None, description="费用类型子类") status: str | None = Field(default=None, description="状态") effective: str | None = Field(default=None, description="是否启用: 0(停用)/1(启用)") effective_start_date: datetime | None = Field(default=None, description="制度生效起始时间") effective_end_date: datetime | None = Field(default=None, description="制度生效结束时间") consult_mode: str | None = Field(default=None, description="费控咨询模式") multi_employee_share_mode: str | None = Field(default=None, description="多员工分享模式") currency: str | None = Field(default=None, description="货币类型") grant_mode: str | None = Field(default=None, description="发放模式: manual(手动)/period(周期)") period_type: str | None = Field(default=None, description="周期类型") amount: float | None = Field(default=None, description="发放金额") single_limit: float | None = Field(default=None, description="单次消费限额") effective_time_type: str | None = Field(default=None, description="有效时间类型") applicable_scope: str | None = Field(default=None, description="适用范围") class InstitutionUpdateSchema(InstitutionCreateSchema): """更新费控制度请求模型""" pass class InstitutionListOutSchema(InstitutionCreateSchema): """费控制度列表输出模型""" model_config = ConfigDict(from_attributes=True) tenant_id: int = Field(description="租户ID") created_time: datetime | None = Field(default=None, description="创建时间") updated_time: datetime | None = Field(default=None, description="修改时间")