"""团队知识库模型""" from sqlalchemy import Column, Integer, String, Text, Boolean, DateTime, ForeignKey from sqlalchemy.sql import func from database import Base class KbCategory(Base): """知识库分类""" __tablename__ = "kb_categories" id = Column(Integer, primary_key=True, index=True) name = Column(String(100), nullable=False, unique=True) icon = Column(String(500), default="") sort_order = Column(Integer, default=0) is_active = Column(Boolean, default=True, nullable=False) created_at = Column(DateTime(timezone=True), server_default=func.now()) class KbItem(Base): """知识库条目(关联帖子)""" __tablename__ = "kb_items" id = Column(Integer, primary_key=True, index=True) category_id = Column(Integer, ForeignKey("kb_categories.id"), nullable=True, index=True) post_id = Column(Integer, ForeignKey("posts.id"), nullable=False, index=True) title = Column(String(200), nullable=False) summary = Column(Text, default="") sort_order = Column(Integer, default=0) is_active = Column(Boolean, default=True, nullable=False) added_by = Column(Integer, ForeignKey("users.id"), nullable=True) created_at = Column(DateTime(timezone=True), server_default=func.now()) class KbAccessLog(Base): """知识库访问日志""" __tablename__ = "kb_access_logs" id = Column(Integer, primary_key=True, index=True) user_id = Column(Integer, ForeignKey("users.id"), nullable=True) action = Column(String(20), default="view") # view / search / ai_chat query = Column(Text, default="") created_at = Column(DateTime(timezone=True), server_default=func.now())