(session: SessionDep, info: DataTrainingInfo, oid: int, trans: Trans)
| 210 | |
| 211 | |
| 212 | def update_training(session: SessionDep, info: DataTrainingInfo, oid: int, trans: Trans): |
| 213 | # 基本验证 |
| 214 | if not info.question or not info.question.strip(): |
| 215 | raise Exception(trans("i18n_data_training.question_cannot_be_empty")) |
| 216 | |
| 217 | if not info.description or not info.description.strip(): |
| 218 | raise Exception(trans("i18n_data_training.description_cannot_be_empty")) |
| 219 | |
| 220 | if info.datasource is None and info.advanced_application is None: |
| 221 | raise Exception(trans("i18n_data_training.datasource_assistant_cannot_be_none")) |
| 222 | |
| 223 | count = session.query(DataTraining).filter( |
| 224 | DataTraining.id == info.id |
| 225 | ).count() |
| 226 | if count == 0: |
| 227 | raise Exception(trans('i18n_data_training.data_training_not_exists')) |
| 228 | |
| 229 | stmt = select(DataTraining.id).where( |
| 230 | and_(DataTraining.question == info.question, DataTraining.oid == oid, DataTraining.id != info.id)) |
| 231 | |
| 232 | if info.datasource is not None and info.advanced_application is not None: |
| 233 | stmt = stmt.where( |
| 234 | or_(DataTraining.datasource == info.datasource, |
| 235 | DataTraining.advanced_application == info.advanced_application)) |
| 236 | elif info.datasource is not None and info.advanced_application is None: |
| 237 | stmt = stmt.where(and_(DataTraining.datasource == info.datasource)) |
| 238 | elif info.datasource is None and info.advanced_application is not None: |
| 239 | stmt = stmt.where(and_(DataTraining.advanced_application == info.advanced_application)) |
| 240 | |
| 241 | exists = session.query(stmt.exists()).scalar() |
| 242 | |
| 243 | if exists: |
| 244 | raise Exception(trans("i18n_data_training.exists_in_db")) |
| 245 | |
| 246 | stmt = update(DataTraining).where(and_(DataTraining.id == info.id)).values( |
| 247 | question=info.question.strip(), |
| 248 | description=info.description.strip(), |
| 249 | datasource=info.datasource, |
| 250 | advanced_application=info.advanced_application, |
| 251 | enabled=info.enabled if info.enabled is not None else True |
| 252 | ) |
| 253 | session.execute(stmt) |
| 254 | session.commit() |
| 255 | |
| 256 | # embedding |
| 257 | run_save_data_training_embeddings([info.id]) |
| 258 | |
| 259 | return info.id |
| 260 | |
| 261 | |
| 262 | def batch_create_training(session: SessionDep, info_list: List[DataTrainingInfo], oid: int, trans: Trans): |
no test coverage detected