69 lines
3.8 KiB
Python
69 lines
3.8 KiB
Python
"""CRM 客户跟进记录 Pydantic Schemas"""
|
||
|
||
from typing import List, Optional
|
||
|
||
from pydantic import BaseModel, ConfigDict, Field
|
||
|
||
|
||
class CustomerFollowListBody(BaseModel):
|
||
model_config = ConfigDict(populate_by_name=True)
|
||
|
||
page: int = Field(default=1, ge=1, description="页码")
|
||
pageSize: int = Field(default=10, ge=1, le=500, description="每页条数")
|
||
keyword: Optional[str] = Field(default=None, description="搜索关键词")
|
||
customer_id: Optional[str] = Field(default=None, alias="customerId", description="客户ID")
|
||
follow_type: Optional[str] = Field(default=None, alias="followType", description="跟进方式")
|
||
owner_user_id: Optional[str] = Field(default=None, alias="ownerUserId", description="跟进人ID")
|
||
follow_time_start: Optional[str] = Field(default=None, alias="followTimeStart", description="跟进时间起")
|
||
follow_time_end: Optional[str] = Field(default=None, alias="followTimeEnd", description="跟进时间止")
|
||
|
||
ids: Optional[List[str]] = Field(default=None, description="导出指定ID列表")
|
||
columns: Optional[List[str]] = Field(default=None, description="导出列(前端 visibleColumns)")
|
||
|
||
|
||
class CustomerFollowCreateBody(BaseModel):
|
||
model_config = ConfigDict(populate_by_name=True)
|
||
|
||
customer_id: str = Field(..., alias="customerId", description="客户ID")
|
||
customer_name: Optional[str] = Field(default=None, alias="customerName", description="客户名称(冗余)")
|
||
contact_id: Optional[str] = Field(default=None, alias="contactId", description="联系人ID")
|
||
contact_name: Optional[str] = Field(default=None, alias="contactName", description="联系人姓名(冗余)")
|
||
follow_type: str = Field(..., alias="followType", description="跟进方式(phone/wechat/visit/email/other)")
|
||
follow_content: str = Field(..., alias="followContent", description="跟进内容")
|
||
follow_time: Optional[str] = Field(default=None, alias="followTime", description="跟进时间")
|
||
next_time: Optional[str] = Field(default=None, alias="nextTime", description="下次联系时间")
|
||
attachment: Optional[str] = Field(default=None, description="附件URL(逗号分隔)")
|
||
remark: Optional[str] = Field(default=None, description="备注")
|
||
|
||
|
||
class CustomerFollowUpdateBody(BaseModel):
|
||
model_config = ConfigDict(populate_by_name=True)
|
||
|
||
id: str = Field(..., description="跟进记录ID")
|
||
customer_id: Optional[str] = Field(default=None, alias="customerId", description="客户ID")
|
||
customer_name: Optional[str] = Field(default=None, alias="customerName", description="客户名称(冗余)")
|
||
contact_id: Optional[str] = Field(default=None, alias="contactId", description="联系人ID")
|
||
contact_name: Optional[str] = Field(default=None, alias="contactName", description="联系人姓名(冗余)")
|
||
follow_type: Optional[str] = Field(default=None, alias="followType", description="跟进方式")
|
||
follow_content: Optional[str] = Field(default=None, alias="followContent", description="跟进内容")
|
||
follow_time: Optional[str] = Field(default=None, alias="followTime", description="跟进时间")
|
||
next_time: Optional[str] = Field(default=None, alias="nextTime", description="下次联系时间")
|
||
attachment: Optional[str] = Field(default=None, description="附件URL")
|
||
remark: Optional[str] = Field(default=None, description="备注")
|
||
|
||
|
||
class CustomerFollowDeleteBody(BaseModel):
|
||
ids: List[str] = Field(..., description="跟进记录ID列表")
|
||
|
||
|
||
class CustomerFollowDetailBody(BaseModel):
|
||
id: str = Field(..., description="跟进记录ID")
|
||
|
||
|
||
class CustomerFollowByCustomerBody(BaseModel):
|
||
model_config = ConfigDict(populate_by_name=True)
|
||
|
||
customer_id: str = Field(..., alias="customerId", description="客户ID")
|
||
page: int = Field(default=1, ge=1, description="页码")
|
||
pageSize: int = Field(default=10, ge=1, le=500, description="每页条数")
|