bf67e0575f
- 信息架构重组: 周报精简为拜访+纪要两个Tab,工作计划/商机/要客独立为侧边栏「工作」分组下的独立页面 - 侧边栏分组: 汇总/工作/管理三层分组,仪表盘四卡可点击跳转 - 变更追踪(edit_log): 5张表新增JSONB edit_log列,POST创建/PUT diff自动记录,编辑弹窗变更时间轴,表格🕐编辑标记 - 图片预览增强: ImagePreview统一组件,支持适应页面/缩放/拖拽平移/滚轮缩放/键盘快捷键 - 修复客户导入500错误(errors变量未初始化) - 移除工作计划/商机/要客页面冗余编辑按钮 Co-Authored-By: Claude <noreply@anthropic.com>
21 lines
1.1 KiB
Python
21 lines
1.1 KiB
Python
import uuid
|
|
from sqlalchemy import String, Text, ForeignKey
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
from sqlalchemy.dialects.postgresql import UUID, JSONB
|
|
from app.database import Base
|
|
|
|
|
|
class KeyVisit(Base):
|
|
__tablename__ = "key_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)
|
|
urgency_level: Mapped[str] = mapped_column(String(10), default="一般") # 重要/一般/紧急
|
|
description: Mapped[str] = mapped_column(Text, default="")
|
|
progress_status: Mapped[str] = mapped_column(String(20), default="未开始")
|
|
planned_date: Mapped[str] = mapped_column(String(50), default="")
|
|
planned_visitor: Mapped[str] = mapped_column(String(100), default="")
|
|
visit_target: Mapped[str] = mapped_column(String(100), default="")
|
|
manager_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("users.id"), index=True)
|
|
edit_log: Mapped[list] = mapped_column(JSONB, default=list)
|