27 lines
775 B
Python
27 lines
775 B
Python
"""作废/取消原因共用 Schema 与工具。"""
|
|
from __future__ import annotations
|
|
|
|
from typing import Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
def normalize_optional_reason(value: Optional[str]) -> Optional[str]:
|
|
if value is None:
|
|
return None
|
|
text = str(value).strip()
|
|
return text or None
|
|
|
|
|
|
class CancelReasonBody(BaseModel):
|
|
operation_id: Optional[str] = Field(default=None, alias="operationId", min_length=1, max_length=64)
|
|
cancel_reason: Optional[str] = Field(default=None, alias="cancelReason", max_length=500)
|
|
|
|
model_config = {"populate_by_name": True}
|
|
|
|
|
|
class VoidReasonBody(BaseModel):
|
|
void_reason: Optional[str] = Field(default=None, alias="voidReason", max_length=500)
|
|
|
|
model_config = {"populate_by_name": True}
|