Files
shanxia2.0/backend/app/schemas/crm/customer_follow.py
T
2026-08-22 09:08:05 +08:00

69 lines
3.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""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="每页条数")