from sqlalchemy import Column, Integer, String, DateTime, Index, text from sqlalchemy.sql import func from database import Base class SiteVisit(Base): __tablename__ = "site_visits" id = Column(Integer, primary_key=True, index=True, comment='主键 ID') company_code = Column(String(50), nullable=False, index=True, comment='公司编码') ip_address = Column(String(45), nullable=False, index=True, comment='访问IP地址') visitor_id = Column(String(100), nullable=True, index=True, comment='访客ID') # 地理位置信息 country = Column(String(50), nullable=True, comment='国家') region = Column(String(50), nullable=True, comment='地区/省份') city = Column(String(50), nullable=True, comment='城市') latitude = Column(String(20), nullable=True, comment='纬度') longitude = Column(String(20), nullable=True, comment='经度') # 访问信息 user_agent = Column(String(500), nullable=True, comment='用户代理') referer = Column(String(500), nullable=True, comment='来源页面') page_url = Column(String(500), nullable=True, comment='访问页面') visit_date = Column(DateTime(timezone=True), nullable=False, server_default=text('CURRENT_TIMESTAMP'), comment='访问时间') __table_args__ = ( Index('idx_company_visit_date', 'company_code', 'visit_date'), Index('idx_company_country', 'company_code', 'country'), )