| | |
| | | import json |
| | | from datetime import datetime |
| | | from typing import Optional |
| | | |
| | | from pydantic import BaseModel |
| | | from sqlalchemy import Column, Integer, String, Table, ForeignKey, DateTime, BigInteger, Text, Float, Boolean |
| | | from sqlalchemy.orm import relationship, backref |
| | | |
| | | from app.models.base_model import Base |
| | | |
| | | class KnowledgeModel(Base): |
| | | __tablename__ = 'knowledgebase' |
| | | __tablename__ = 'knowledgebases' |
| | | __mapper_args__ = { |
| | | # "order_by": 'SEQ' |
| | | } |
| | | id = Column(String(32), primary_key=True) |
| | | name = Column(String(128)) |
| | | create_time = Column(BigInteger) |
| | | create_date = Column(DateTime) |
| | | update_time = Column(BigInteger) |
| | | update_date = Column(DateTime) |
| | | avatar = Column(Text) |
| | | tenant_id = Column(String(32)) |
| | | language = Column(String(32)) |
| | | description = Column(Text) |
| | | id = Column(String(36), primary_key=True) # id |
| | | name = Column(String(128)) # 名称 |
| | | create_date = Column(DateTime, default=datetime.now()) # 创建时间 |
| | | update_date = Column(DateTime, default=datetime.now(), onupdate=datetime.now()) # 更新时间 |
| | | permission = Column(String(32), default="me") |
| | | tenant_id = Column(String(32)) # 创建人id |
| | | description = Column(Text) # 说明 |
| | | status = Column(String(1)) # 状态 |
| | | documents = Column(Integer, default=0) # 文档 |
| | | icon = Column(String(128)) # 文档 |
| | | knowledge_type = Column(String(1)) # 知识库平台 |
| | | embd_id = Column(String(128)) |
| | | permission = Column(String(16)) |
| | | created_by = Column(String(32)) |
| | | doc_num = Column(Integer) |
| | | token_num = Column(Integer) |
| | | chunk_num = Column(Integer) |
| | | similarity_threshold = Column(Float) |
| | | vector_similarity_weight = Column(Float) |
| | | parser_id = Column(String(32)) |
| | | parser_config = Column(Text) |
| | | status = Column(String(1)) |
| | | hide = Column(Boolean) |
| | | |
| | | |
| | | def get_id(self): |
| | | return str(self.id) |
| | | |
| | | def to_json(self): |
| | | def to_json(self, user_id=""): |
| | | return { |
| | | 'id': self.id, |
| | | 'name': self.name, |
| | | 'create_time': self.create_time, |
| | | 'update_time': self.update_time, |
| | | 'avatar': self.avatar, |
| | | 'tenant_id': self.tenant_id, |
| | | 'language': self.language, |
| | | 'description': self.description, |
| | | 'embd_id': self.embd_id, |
| | | 'create_time': self.create_date.strftime('%Y-%m-%d %H:%M:%S'), |
| | | 'update_time': self.update_date.strftime('%Y-%m-%d %H:%M:%S'), |
| | | 'permission': self.permission, |
| | | 'created_by': self.created_by, |
| | | 'doc_num': self.doc_num, |
| | | 'token_num': self.token_num, |
| | | 'chunk_num': self.chunk_num, |
| | | 'similarity_threshold': self.similarity_threshold, |
| | | 'vector_similarity_weight': self.vector_similarity_weight, |
| | | 'parser_id': self.parser_id, |
| | | 'parser_config': json.loads(self.parser_config), |
| | | 'status': self.status |
| | | 'user_id': self.tenant_id, |
| | | 'description': self.description, |
| | | 'status': self.status, |
| | | 'documents': self.documents if self.documents else 0, |
| | | 'icon': self.icon, |
| | | 'embd_id': self.embd_id, |
| | | 'link': True if (self.tenant_id == user_id or user_id == "admin" ) and self.permission == "team" else False, |
| | | } |
| | | def __repr__(self): |
| | | return '<Knowledge name:%r url:%r>\n' % (self.name, self.id) |
| | | return '<Knowledge name:%r url:%r>\n' % (self.name, self.id) |
| | | |
| | | |
| | | class klgParameter(BaseModel): |
| | | id: str |
| | | name: str |
| | | description: Optional[str] = "" |
| | | icon: str |
| | | klgType: str |
| | | |
| | | |
| | | |
| | | class klgIcon(BaseModel): |
| | | id: str |
| | | icon: str |
| | | |
| | | |
| | | |
| | | class KnowledgeUserModel(Base): |
| | | __tablename__ = 'knowledgebase_user' |
| | | |
| | | id = Column(Integer, primary_key=True) # id |
| | | kb_id = Column(String(36)) |
| | | user_id = Column(Integer) |
| | | create_date = Column(DateTime, default=datetime.now()) # 创建时间 |
| | | update_date = Column(DateTime, default=datetime.now(), onupdate=datetime.now()) # 更新时间 |
| | | status = Column(Integer) # 状态 |
| | | |
| | | |
| | | |
| | | def get_id(self): |
| | | return str(self.id) |
| | | |
| | | def to_json(self, user_id=""): |
| | | return { |
| | | 'id': self.id, |
| | | 'kb_id': self.kb_id, |
| | | 'create_time': self.create_date.strftime('%Y-%m-%d %H:%M:%S'), |
| | | 'update_time': self.update_date.strftime('%Y-%m-%d %H:%M:%S'), |
| | | 'user_id': self.user_id, |
| | | 'status': self.status, |
| | | 'owner': True if str(self.user_id) == user_id else False, |
| | | } |
| | | def __repr__(self): |
| | | return '<Knowledge name:%r url:%r>\n' % (self.name, self.id) |
| | | |
| | | |
| | | |
| | | class KlgOwner(BaseModel): |
| | | knowledgeId: str |
| | | UserId: int |