Files
shanxia2.0/backend/app/schemas/pl/paste_recognize.py
T
2026-08-21 09:35:11 +08:00

51 lines
1.8 KiB
Python

"""运输计划 - 三方粘贴识别提交 Schema"""
from typing import Literal, Optional
from pydantic import BaseModel, Field
class ConflictAction(BaseModel):
key: Literal["vehicle", "driver", "escort"]
existing_id: str = Field(alias="existingId")
action: Literal["reuse", "overwrite", "cancel"]
model_config = {"populate_by_name": True}
class PastePersonnelIn(BaseModel):
personnel_name: str = Field(alias="personnelName")
phone_no: Optional[str] = Field(default=None, alias="phoneNo")
id_card_no: Optional[str] = Field(default=None, alias="idCardNo")
personnel_type: Literal["driver", "escort"] = Field(alias="personnelType")
model_config = {"populate_by_name": True}
class PasteVehicleIn(BaseModel):
license_plate: str = Field(alias="licensePlate")
trailer_no: str = Field(..., min_length=1, max_length=20, alias="trailerNo")
load_capacity: Optional[float] = Field(default=None, alias="loadCapacity")
carrier_id: Optional[str] = Field(default=None, alias="carrierId")
carrier_name: Optional[str] = Field(default=None, alias="carrierName")
model_config = {"populate_by_name": True}
class PasteCommitBody(BaseModel):
mode: Literal["vehicle_bundle", "personnel_first"]
create_vehicle: bool = Field(default=True, alias="createVehicle")
vehicle: Optional[PasteVehicleIn] = None
driver: Optional[PastePersonnelIn] = None
escort: Optional[PastePersonnelIn] = None
conflicts: list[ConflictAction] = Field(default_factory=list)
model_config = {"populate_by_name": True}
class PasteCommitResult(BaseModel):
vehicle_id: Optional[str] = Field(default=None, alias="vehicleId")
driver_id: Optional[str] = Field(default=None, alias="driverId")
escort_id: Optional[str] = Field(default=None, alias="escortId")
model_config = {"populate_by_name": True, "by_alias": True}