2187be7aeb
本次累积提交包含以下功能: 1. 修复:el-date-picker 缺失 value-format 导致日期保存偏移(8处) 2. 新增:协同拜访 visit_group_id 去重机制(完整副本 + 周报合并 + 亮灯去重) 3. 新增:计划自动完成(创建计划检测已有拜访 / 编辑拜访触发) 4. 新增:拜访表单选择客户后自动预填过期计划内容 5. 新增:移动端主题切换按钮 + 后端持久化 6. 新增:操作日志系统 (audit_logs),全覆盖 8 个模块 CRUD 7. 新增:PC端「我的数据」支局长/领导视角客户经理列 Co-Authored-By: Claude <noreply@anthropic.com>
71 lines
1.9 KiB
Python
71 lines
1.9 KiB
Python
from pydantic import BaseModel, Field
|
|
from typing import Optional
|
|
import uuid
|
|
from datetime import date, datetime
|
|
|
|
|
|
class VisitCreate(BaseModel):
|
|
customer_id: uuid.UUID
|
|
visit_date: str # "YYYY-MM-DD"
|
|
visit_method: str = "上门"
|
|
time_range: str = ""
|
|
visitor_name: str = ""
|
|
visitor_phone: str = ""
|
|
communication_content: str = ""
|
|
customer_demand: str = ""
|
|
companions: list[uuid.UUID] = []
|
|
companion_names: list[str] = []
|
|
photos: list[str] = []
|
|
|
|
|
|
class VisitUpdate(BaseModel):
|
|
customer_id: Optional[uuid.UUID] = None
|
|
visit_date: Optional[str] = None
|
|
visit_method: Optional[str] = None
|
|
time_range: Optional[str] = None
|
|
visitor_name: Optional[str] = None
|
|
visitor_phone: Optional[str] = None
|
|
communication_content: Optional[str] = None
|
|
customer_demand: Optional[str] = None
|
|
companions: Optional[list[uuid.UUID]] = None
|
|
companion_names: Optional[list[str]] = None
|
|
photos: Optional[list[str]] = None
|
|
|
|
|
|
class VisitOut(BaseModel):
|
|
id: uuid.UUID
|
|
customer_id: uuid.UUID
|
|
visit_date: date
|
|
visit_method: str
|
|
time_range: str
|
|
visitor_name: str = ""
|
|
visitor_phone: str = ""
|
|
communication_content: str
|
|
customer_demand: str
|
|
companions: Optional[list[uuid.UUID]] = None
|
|
companion_names: list[str] = []
|
|
photos: Optional[list[str]] = None
|
|
manager_id: uuid.UUID
|
|
visit_group_id: Optional[str] = None
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
# Joined fields
|
|
customer_name: Optional[str] = None
|
|
manager_name: Optional[str] = None
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class VisitListOut(BaseModel):
|
|
id: uuid.UUID
|
|
customer_id: uuid.UUID
|
|
visit_date: date
|
|
visit_method: str
|
|
time_range: str
|
|
manager_id: uuid.UUID
|
|
customer_name: Optional[str] = None
|
|
manager_name: Optional[str] = None
|
|
has_photos: bool = False
|
|
|
|
model_config = {"from_attributes": True}
|