| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 | 
							- from sqlalchemy import func
 
- from .engine import db
 
- from .types import StringUUID
 
- class IntentionType(db.Model):
 
-     __tablename__ = 'intention_types'
 
-     __table_args__ = (
 
-         db.PrimaryKeyConstraint('id', name='intention_type_id_pkey'),
 
-     )
 
-     id = db.Column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
 
-     name = db.Column(db.String(255), nullable=False)
 
-     created_by = db.Column(StringUUID, nullable=False)
 
-     created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
 
-     updated_by = db.Column(StringUUID, nullable=True)
 
-     updated_at = db.Column(db.DateTime, nullable=True, server_default=func.current_timestamp())
 
-     @property
 
-     def intention_count(self):
 
-         return (
 
-             db.session.query(func.count(Intention.id))
 
-             .filter(Intention.type_id==self.id)
 
-             .scalar()
 
-         )
 
-     @property
 
-     def intentions(self):
 
-         return (
 
-             db.session.query(Intention)
 
-             .filter(Intention.type_id == self.id)
 
-             .all()
 
-         )
 
- class Intention(db.Model):
 
-     __tablename__ = "intentions"
 
-     __table_args__ = (
 
-         db.PrimaryKeyConstraint("id", name="intention_pkey"),
 
-         db.Index("intention_type_idx", "type_id"),
 
-     )
 
-     id = db.Column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
 
-     type_id = db.Column(StringUUID, nullable=False)
 
-     name = db.Column(db.String(255), nullable=False)
 
-     created_by = db.Column(StringUUID, nullable=False)
 
-     created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
 
-     updated_by = db.Column(StringUUID, nullable=True)
 
-     updated_at = db.Column(db.DateTime, nullable=True, server_default=func.current_timestamp())
 
-     @property
 
-     def type_name(self):
 
-         return (
 
-             db.session.query(IntentionType.name)
 
-             .filter(IntentionType.id==self.type_id)
 
-             .first().name
 
-         )
 
-     @property
 
-     def type(self):
 
-         return (
 
-             db.session.query(IntentionType)
 
-             .filter(IntentionType.id==self.type_id)
 
-             .first()
 
-         )
 
-     @property
 
-     def corpus(self):
 
-         return (
 
-             db.session.query(IntentionCorpus)
 
-             .filter(IntentionCorpus.intention_id==self.id)
 
-             .all()
 
-         )
 
-     @property
 
-     def keywords(self):
 
-         return (
 
-             db.session.query(IntentionKeyword)
 
-             .filter(IntentionKeyword.intention_id==self.id)
 
-             .all()
 
-         )
 
-     @property
 
-     def corpus_count(self):
 
-         return (
 
-             db.session.query(func.count(IntentionCorpus.id))
 
-             .filter(IntentionCorpus.intention_id == self.id)
 
-             .scalar()
 
-         )
 
-     @property
 
-     def keywords_count(self):
 
-         return (
 
-             db.session.query(func.count(IntentionKeyword.id))
 
-             .filter(IntentionKeyword.intention_id == self.id)
 
-             .scalar()
 
-         )
 
- class IntentionKeyword(db.Model):
 
-     __tablename__ = "intention_keywords"
 
-     __table_args__ = (
 
-         db.PrimaryKeyConstraint('id', name='intention_keyword_pkey'),
 
-     )
 
-     id = db.Column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
 
-     name = db.Column(db.String(255), nullable=False)
 
-     intention_id = db.Column(StringUUID, nullable=False)
 
-     created_by = db.Column(StringUUID, nullable=False)
 
-     created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
 
-     updated_by = db.Column(StringUUID, nullable=True)
 
-     updated_at = db.Column(db.DateTime, nullable=True, server_default=func.current_timestamp())
 
-     @property
 
-     def intention(self):
 
-         return (
 
-             db.session.query(Intention).filter(Intention.id==self.intention_id).first()
 
-         )
 
- class IntentionCorpus(db.Model):
 
-     __tablename__ = "intention_corpus"
 
-     __table_args__ = (
 
-         db.PrimaryKeyConstraint('id', name='intention_corpus_pkey'),
 
-         db.Index("intention_corpus_idx", "intention_id"),
 
-     )
 
-     id = db.Column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
 
-     question = db.Column(db.String(255), nullable=False)
 
-     question_config = db.Column(db.JSON, nullable=False)
 
-     intention_id = db.Column(StringUUID, nullable=False)
 
-     created_by = db.Column(StringUUID, nullable=False)
 
-     created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
 
-     updated_by = db.Column(StringUUID, nullable=True)
 
-     updated_at = db.Column(db.DateTime, nullable=True, server_default=func.current_timestamp())
 
-     @property
 
-     def intention(self):
 
-         return (
 
-             db.session.query(Intention)
 
-             .filter(Intention.id==self.intention_id)
 
-             .first()
 
-         )
 
-     @property
 
-     def similarity_questions(self):
 
-         return (
 
-             db.session.query(IntentionCorpusSimilarityQuestion)
 
-             .filter(IntentionCorpusSimilarityQuestion.corpus_id==self.id)
 
-             .all()
 
-         )
 
- class IntentionCorpusSimilarityQuestion(db.Model):
 
-     __tablename__ = "intention_corpus_similarity_questions"
 
-     __table_args__ = (
 
-         db.PrimaryKeyConstraint('id', name='intention_corpus_similarity_question_pkey'),
 
-         db.Index("intention_corpus_similarity_question_idx", "corpus_id"),
 
-     )
 
-     id = db.Column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
 
-     question = db.Column(db.String(255), nullable=False)
 
-     question_config = db.Column(db.JSON, nullable=False)
 
-     corpus_id = db.Column(StringUUID, nullable=False)
 
-     created_by = db.Column(StringUUID, nullable=False)
 
-     created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
 
-     updated_by = db.Column(StringUUID, nullable=True)
 
-     updated_at = db.Column(db.DateTime, nullable=True, server_default=func.current_timestamp())
 
-     @property
 
-     def corpus(self):
 
-         return (
 
-             db.session.query(IntentionCorpus)
 
-             .filter(IntentionCorpus.id==self.corpus_id)
 
-             .first()
 
-         )
 
- class IntentionTrainTask(db.Model):
 
-     __tablename__ = "intention_train_tasks"
 
-     __table_args__ = (
 
-         db.PrimaryKeyConstraint('id', name='intention_train_log_pkey'),
 
-     )
 
-     STATUS_LIST = ["CREATED", "TRAINING", "COMPLETED"]
 
-     id = db.Column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
 
-     name = db.Column(db.String(255), nullable=False)
 
-     status = db.Column(db.String(255), nullable=False)
 
-     created_by = db.Column(StringUUID, nullable=False)
 
-     created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
 
-     @property
 
-     def dataset_info(self):
 
-         dataset_info = (
 
-             db.session.query(IntentionTrainFile)
 
-             .join(IntentionTrainFileBinding, IntentionTrainFileBinding.file_id == IntentionTrainFile.id)
 
-             .filter(
 
-                 IntentionTrainFile.type == "DATASET",
 
-                 IntentionTrainFileBinding.task_id == self.id
 
-             )
 
-             .first()
 
-         )
 
-         return dataset_info
 
-     @property
 
-     def model_info(self):
 
-         model_info = (
 
-             db.session.query(IntentionTrainFile)
 
-             .join(IntentionTrainFileBinding, IntentionTrainFileBinding.file_id == IntentionTrainFile.id)
 
-             .filter(
 
-                 IntentionTrainFile.type == "MODEL",
 
-                 IntentionTrainFileBinding.task_id == self.id
 
-             )
 
-             .first()
 
-         )
 
-         return model_info
 
- class IntentionTrainFile(db.Model):
 
-     __tablename__ = "intention_train_files"
 
-     __table_args__ = (
 
-         db.PrimaryKeyConstraint('id', name='intention_train_file_pkey'),
 
-     )
 
-     TRAIN_FILE_TYPE_LIST = ["DATASET", "MODEL"]
 
-     id = db.Column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
 
-     name = db.Column(db.String(255), nullable=False)
 
-     version = db.Column(db.String(255), nullable=False)
 
-     type = db.Column(db.String(255), nullable=False)
 
-     data_source_type = db.Column(db.String(255), nullable=False)
 
-     data_source_info = db.Column(db.JSON, nullable=False)
 
-     created_by = db.Column(StringUUID, nullable=False)
 
-     created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
 
- class IntentionTrainFileBinding(db.Model):
 
-     __tablename__ = "intention_train_file_bindings"
 
-     __table_args__ = (
 
-         db.PrimaryKeyConstraint('id', name='intention_train_file_binding_pkey'),
 
-         db.Index("intention_train_file_binding_idx", "file_id"),
 
-         db.Index("intention_train_file_binding_task_idx", "task_id"),
 
-     )
 
-     id = db.Column(StringUUID, nullable=False, server_default=db.text("uuid_generate_v4()"))
 
-     file_id = db.Column(StringUUID, nullable=False)
 
-     task_id = db.Column(StringUUID, nullable=False)
 
 
  |