from pydantic import BaseModel, Field from typing import Optional, List from datetime import date class DailyDiffBase(BaseModel): """daily_diff基础模型""" account_id: int = Field(..., description="账号ID") account_name: Optional[str] = Field(None, description="账号名称") check_time: Optional[date] = Field(None, description="检查时间(年月日)") linecode: Optional[str] = Field(None, description="线路编码") class DailyDiffCreate(DailyDiffBase): """创建daily_diff请求模型""" pass class DailyDiffResponse(DailyDiffBase): """daily_diff响应模型""" id: int class Config: from_attributes = True class BatchCreateRequest(BaseModel): """批量新增请求""" data: List[DailyDiffCreate] = Field(..., description="批量新增数据列表") class BatchCreateResponse(BaseModel): """批量新增响应""" code: int = 0 message: str total_count: int = Field(0, description="总数据量") success_count: int = Field(0, description="成功插入数量") skip_count: int = Field(0, description="跳过重复数量") class DailyDiffQueryRequest(BaseModel): """多条件查询请求""" account_id: Optional[int] = Field(None, description="账号ID") account_name: Optional[str] = Field(None, description="账号名称(模糊匹配)") check_time: Optional[date] = Field(None, description="检查时间") check_time_start: Optional[date] = Field(None, description="检查时间开始") check_time_end: Optional[date] = Field(None, description="检查时间结束") linecode: Optional[str] = Field(None, description="线路编码") linecodes: Optional[List[str]] = Field(None, description="线路编码列表") page: Optional[int] = Field(None, ge=1, description="页码,不填则查全部") page_size: Optional[int] = Field(None, ge=1, le=1000, description="每页数量,不填则查全部") class DailyDiffListResponse(BaseModel): """查询列表响应""" code: int = 0 message: str total: int = 0 data: List[DailyDiffResponse] = [] class BatchDeleteRequest(BaseModel): """批量删除请求""" ids: List[int] = Field(..., description="要删除的ID列表") class BatchDeleteResponse(BaseModel): """批量删除响应""" code: int = 0 message: str deleted_count: int = 0