pl_mobile_stop_meta.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. """Independent, feature-gated mobile stop snapshots; existing table SELECTs are unchanged."""
  2. from datetime import datetime
  3. from sqlalchemy import Column, DateTime, Index, Integer, SmallInteger, String
  4. from app.core.database import Base
  5. class PlPlanStopProductMeta(Base):
  6. __tablename__ = 'pl_plan_stop_product_meta'
  7. __table_args__ = (Index('ix_pl_stop_meta_scope', 'tenant_no', 'plan_id', 'del_flag'),
  8. Index('ix_pl_stop_meta_row', 'tenant_no', 'stop_type', 'stop_product_id'))
  9. id = Column(String(64), primary_key=True)
  10. plan_id = Column(String(64), nullable=False, default='')
  11. stop_type = Column(String(16), nullable=False, default='')
  12. stop_id = Column(String(64), nullable=False, default='')
  13. stop_product_id = Column(String(64), nullable=False, default='')
  14. contract_id = Column(String(64), nullable=False, default='')
  15. contract_product_id = Column(String(64), nullable=False, default='')
  16. product_id = Column(String(64), nullable=False, default='')
  17. package_spec = Column(String(200), nullable=False, default='')
  18. model = Column(String(100), nullable=False, default='')
  19. unit = Column(String(20), nullable=False, default='')
  20. product_name = Column(String(200), nullable=False, default='')
  21. # No default: explicit None must persist as SQL NULL rather than an empty alias.
  22. alias_name = Column(String(200), nullable=True)
  23. brand_mode = Column(String(20), nullable=False, default='')
  24. brand_id = Column(String(64), nullable=False, default='')
  25. brand_name = Column(String(200), nullable=False, default='')
  26. source_product_name = Column(String(200), nullable=False, default='')
  27. source_brand_mode = Column(String(20), nullable=False, default='')
  28. source_brand_id = Column(String(64), nullable=False, default='')
  29. source_brand_name = Column(String(200), nullable=False, default='')
  30. tenant_no = Column(String(64), nullable=False)
  31. order_num = Column(Integer, nullable=True)
  32. remark = Column(String(512), nullable=True)
  33. create_by = Column(String(64), nullable=True)
  34. create_dept_id = Column(String(64), nullable=False, default='')
  35. create_time = Column(DateTime, nullable=False, default=datetime.now)
  36. update_by = Column(String(64), nullable=True)
  37. update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now)
  38. del_flag = Column(SmallInteger, nullable=False, default=0)