vehicle_fuel_card.py 989 B

12345678910111213141516171819202122232425262728
  1. """车油卡台账输入:卡号始终为字符串,租户不接受客户端覆盖。"""
  2. from __future__ import annotations
  3. from typing import List, Optional
  4. from pydantic import BaseModel, ConfigDict, Field, field_validator
  5. class CreateBody(BaseModel):
  6. model_config = ConfigDict(populate_by_name=True, extra="forbid", str_strip_whitespace=True)
  7. license_plate: str = Field(..., alias="licensePlate", min_length=1, max_length=20)
  8. card_no: str = Field(..., alias="cardNo", min_length=1, max_length=64, pattern=r"^[0-9]+$")
  9. remark: Optional[str] = Field(default=None, max_length=512)
  10. @field_validator("license_plate")
  11. @classmethod
  12. def normalize_plate(cls, value: str) -> str:
  13. return value.upper()
  14. class UpdateBody(CreateBody):
  15. """PUT 使用完整业务字段,与新增及表单字段一致。"""
  16. class BatchDeleteBody(BaseModel):
  17. model_config = ConfigDict(extra="forbid")
  18. ids: List[str] = Field(..., min_length=1, max_length=500)