knowledge_base.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from datetime import datetime
  2. from typing import List
  3. from sqlalchemy import Column, Integer, String, Text, Boolean, DateTime, ForeignKey, Float
  4. from sqlalchemy.orm import relationship, declarative_base
  5. Base = declarative_base()
  6. class KnowledgeBase(Base):
  7. __tablename__ = 'knowledge_base'
  8. id = Column(Integer, primary_key=True, index=True)
  9. name = Column(String(50), unique=True, index=True, nullable=False)
  10. description = Column(Text, nullable=True)
  11. tags = Column(String(200), nullable=True)
  12. creator = Column(String(100), nullable=True)
  13. file_count = Column(Integer, default=0) # 文件数量
  14. is_deleted = Column(Integer, default=0)
  15. created_at = Column(DateTime, default=datetime.utcnow)
  16. updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
  17. # 建立与KnowledgeFile的一对多关系
  18. files = relationship('KnowledgeFile', back_populates='knowledge_base')
  19. class KnowledgeFile(Base):
  20. __tablename__ = 'knowledge_file'
  21. id = Column(Integer, primary_key=True, index=True)
  22. knowledge_base_id = Column(Integer, ForeignKey('knowledge_base.id'), nullable=False)
  23. file_name = Column(String(255), nullable=False)
  24. file_size = Column(Float, nullable=False) # 文件大小(MB)
  25. file_type = Column(String(10), nullable=False) # 文件扩展名
  26. minio_url = Column(String(500), nullable=False) # MinIO存储路径
  27. version = Column(String(50), nullable=True)
  28. author = Column(String(100), nullable=True)
  29. year = Column(Integer, nullable=True)
  30. page_count = Column(Integer, nullable=True) # 文档页数
  31. creator = Column(String(100), nullable=True) # 创建人
  32. knowledge_type = Column(String(50), nullable=True) # 知识类型
  33. is_deleted = Column(Integer, default=0)
  34. created_at = Column(DateTime, default=datetime.utcnow)
  35. updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
  36. # 建立与KnowledgeBase的多对一关系
  37. knowledge_base = relationship('KnowledgeBase', back_populates='files')