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>
29 lines
1.7 KiB
Python
29 lines
1.7 KiB
Python
import uuid
|
|
from datetime import datetime, date
|
|
from sqlalchemy import String, Text, Date, DateTime, ForeignKey, func
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
from sqlalchemy.dialects.postgresql import UUID, ARRAY, JSONB
|
|
from app.database import Base
|
|
|
|
|
|
class Visit(Base):
|
|
__tablename__ = "visits"
|
|
|
|
id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
|
customer_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("customers.id"), index=True)
|
|
visit_date: Mapped[date] = mapped_column(Date, index=True)
|
|
visit_method: Mapped[str] = mapped_column(String(20), default="上门") # 上门/电话/微信/出差
|
|
time_range: Mapped[str] = mapped_column(String(30), default="")
|
|
communication_content: Mapped[str] = mapped_column(Text, default="")
|
|
customer_demand: Mapped[str] = mapped_column(Text, default="")
|
|
visitor_name: Mapped[str] = mapped_column(String(50), default="")
|
|
visitor_phone: Mapped[str] = mapped_column(String(20), default="")
|
|
companions: Mapped[list | None] = mapped_column(ARRAY(UUID(as_uuid=True)), nullable=True)
|
|
companion_names: Mapped[list] = mapped_column(ARRAY(Text), default=list)
|
|
photos: Mapped[list | None] = mapped_column(ARRAY(Text), nullable=True)
|
|
manager_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("users.id"), index=True)
|
|
visit_group_id: Mapped[uuid.UUID | None] = mapped_column(UUID(as_uuid=True), nullable=True, index=True)
|
|
edit_log: Mapped[list] = mapped_column(JSONB, default=list)
|
|
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
|
|
updated_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|