crm_visit.py 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. from datetime import datetime, date
  2. from decimal import Decimal
  3. from typing import Optional
  4. from sqlalchemy import BigInteger, String, DateTime, Integer, Text, Numeric, SmallInteger, Date
  5. from sqlalchemy.orm import Mapped, mapped_column
  6. from app.database import Base
  7. class CrmVisit(Base):
  8. __tablename__ = "crm_visit"
  9. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  10. visit_no: Mapped[Optional[str]] = mapped_column(String(50), comment="回访编号")
  11. customer_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="客户ID")
  12. customer_name: Mapped[Optional[str]] = mapped_column(String(200), comment="客户名称")
  13. contract_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="合同ID")
  14. contract_no: Mapped[Optional[str]] = mapped_column(String(50), comment="合同编号")
  15. contact_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="联系人ID")
  16. contact_name: Mapped[Optional[str]] = mapped_column(String(50), comment="联系人姓名")
  17. contact_mobile: Mapped[Optional[str]] = mapped_column(String(20), comment="联系人电话")
  18. visit_type: Mapped[Optional[str]] = mapped_column(String(20), comment="回访类型")
  19. plan_visit_date: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="计划回访时间")
  20. visit_date: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="实际回访时间")
  21. visit_method: Mapped[Optional[str]] = mapped_column(String(20), comment="回访方式")
  22. visit_purpose: Mapped[Optional[str]] = mapped_column(Text, comment="回访目的")
  23. visit_script: Mapped[Optional[str]] = mapped_column(Text, comment="回访话术")
  24. visit_content: Mapped[Optional[str]] = mapped_column(Text, comment="回访内容")
  25. visit_summary: Mapped[Optional[str]] = mapped_column(String(1000), comment="回访总结")
  26. satisfaction: Mapped[Optional[str]] = mapped_column(String(20), comment="满意度")
  27. satisfaction_score: Mapped[Optional[int]] = mapped_column(Integer, comment="满意度评分")
  28. usage_status: Mapped[Optional[str]] = mapped_column(String(20), comment="使用状态")
  29. dissatisfaction_reason: Mapped[Optional[str]] = mapped_column(String(500), comment="不满意原因")
  30. has_problem: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="是否有问题")
  31. problem_count: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="问题数量")
  32. problem_summary: Mapped[Optional[str]] = mapped_column(String(500), comment="问题摘要")
  33. has_opportunity: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="是否有商机")
  34. opportunity_desc: Mapped[Optional[str]] = mapped_column(Text, comment="商机描述")
  35. opportunity_amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), comment="商机金额")
  36. next_visit_date: Mapped[Optional[date]] = mapped_column(Date, comment="下次回访日期")
  37. next_visit_content: Mapped[Optional[str]] = mapped_column(String(500), comment="下次回访内容")
  38. status: Mapped[Optional[str]] = mapped_column(String(20), default="0", comment="状态")
  39. cancel_reason: Mapped[Optional[str]] = mapped_column(String(500), comment="取消原因")
  40. cancel_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="取消时间")
  41. owner_user_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="负责人ID")
  42. owner_user_name: Mapped[Optional[str]] = mapped_column(String(50), comment="负责人姓名")
  43. duration: Mapped[Optional[int]] = mapped_column(Integer, comment="回访时长(分钟)")
  44. attachments: Mapped[Optional[str]] = mapped_column(String(1000), comment="附件")
  45. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  46. create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
  47. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  48. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  49. update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
  50. update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
  51. del_flag: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="删除标志(0存在 1删除)")
  52. version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
  53. remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
  54. class CrmVisitPlan(Base):
  55. __tablename__ = "crm_visit_plan"
  56. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  57. rule_name: Mapped[Optional[str]] = mapped_column(String(200), comment="规则名称")
  58. trigger_type: Mapped[Optional[str]] = mapped_column(String(20), comment="触发类型")
  59. delay_days: Mapped[Optional[int]] = mapped_column(Integer, comment="延迟天数")
  60. visit_type: Mapped[Optional[str]] = mapped_column(String(20), comment="回访类型")
  61. visit_method: Mapped[Optional[str]] = mapped_column(String(20), comment="回访方式")
  62. visit_content_template: Mapped[Optional[str]] = mapped_column(Text, comment="回访内容模板")
  63. status: Mapped[Optional[str]] = mapped_column(String(20), default="0", comment="状态")
  64. execute_count: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="执行次数")
  65. last_execute_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="最后执行时间")
  66. sort: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="排序")
  67. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  68. create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
  69. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  70. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  71. update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
  72. update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
  73. del_flag: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="删除标志(0存在 1删除)")
  74. remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
  75. class CrmVisitProblem(Base):
  76. __tablename__ = "crm_visit_problem"
  77. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  78. visit_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="回访ID")
  79. visit_no: Mapped[Optional[str]] = mapped_column(String(50), comment="回访编号")
  80. customer_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="客户ID")
  81. customer_name: Mapped[Optional[str]] = mapped_column(String(200), comment="客户名称")
  82. problem_type: Mapped[Optional[str]] = mapped_column(String(20), comment="问题类型")
  83. problem_desc: Mapped[Optional[str]] = mapped_column(Text, comment="问题描述")
  84. problem_images: Mapped[Optional[str]] = mapped_column(String(1000), comment="问题图片")
  85. severity: Mapped[Optional[str]] = mapped_column(String(20), comment="严重程度")
  86. solution: Mapped[Optional[str]] = mapped_column(Text, comment="解决方案")
  87. status: Mapped[Optional[str]] = mapped_column(String(20), default="0", comment="状态")
  88. solve_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="解决人ID")
  89. solve_by_name: Mapped[Optional[str]] = mapped_column(String(50), comment="解决人姓名")
  90. solve_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="解决时间")
  91. solve_duration: Mapped[Optional[int]] = mapped_column(Integer, comment="解决时长(小时)")
  92. close_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="关闭人ID")
  93. close_by_name: Mapped[Optional[str]] = mapped_column(String(50), comment="关闭人姓名")
  94. close_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="关闭时间")
  95. close_reason: Mapped[Optional[str]] = mapped_column(String(500), comment="关闭原因")
  96. customer_feedback: Mapped[Optional[str]] = mapped_column(Text, comment="客户反馈")
  97. is_satisfied: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="客户是否满意")
  98. sort: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="排序")
  99. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  100. create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
  101. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  102. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  103. update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
  104. update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
  105. del_flag: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="删除标志(0存在 1删除)")
  106. version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
  107. remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")