from typing import Optional, List
from pydantic import BaseModel, Field
from datetime import date, datetime
class Employee(BaseModel):
"""员工信息模型"""
userId: Optional[int] = Field(None, description="员工ID")
firstName: str = Field(..., description="员工名字")
lastName: str = Field(..., description="员工姓氏")
salary: float = Field(..., description="员工工资")
currency: str = Field(default="CNY", description="货币单位", enum=["CNY", "USD", "EUR"])
birthdate: date = Field(..., description="员工生日")
isActive: bool = Field(default=True, description="在职状态")
level: str = Field(..., description="员工级别")
createdAt: Optional[datetime] = Field(None, description="创建时间")
updatedAt: Optional[datetime] = Field(None, description="更新时间")
offset: Optional[int] = Field(None, description="分页偏移")
limit: Optional[int] = Field(None, description="分页限制")
class EmployeeSearchParams(BaseModel):
"""员工搜索参数"""
lastName: Optional[str] = Field(None, description="员工姓氏")
isActive: Optional[bool] = Field(None, description="在职状态")
level: Optional[str] = Field(None, description="员工级别")
class APIResponse(BaseModel):
"""API响应模型"""
success: bool = Field(..., description="请求是否成功")
data: Optional[dict] = Field(None, description="响应数据")
message: Optional[str] = Field(None, description="响应消息")
error: Optional[str] = Field(None, description="错误信息")
class EmployeeListResponse(BaseModel):
"""员工列表响应"""
employees: List[Employee] = Field(..., description="员工列表")
total: int = Field(..., description="总数")