fix: delete knowledge pipeline but pipeline and workflow don't delete (#29591)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
Jyong
2025-12-15 12:00:03 +08:00
committed by GitHub
parent 8f3fd9a728
commit acef56d7fd
3 changed files with 1245 additions and 0 deletions

View File

@ -15,4 +15,5 @@ def handle(sender: Dataset, **kwargs):
dataset.index_struct, dataset.index_struct,
dataset.collection_binding_id, dataset.collection_binding_id,
dataset.doc_form, dataset.doc_form,
dataset.pipeline_id,
) )

View File

@ -9,6 +9,7 @@ from core.rag.index_processor.index_processor_factory import IndexProcessorFacto
from core.tools.utils.web_reader_tool import get_image_upload_file_ids from core.tools.utils.web_reader_tool import get_image_upload_file_ids
from extensions.ext_database import db from extensions.ext_database import db
from extensions.ext_storage import storage from extensions.ext_storage import storage
from models import WorkflowType
from models.dataset import ( from models.dataset import (
AppDatasetJoin, AppDatasetJoin,
Dataset, Dataset,
@ -18,9 +19,11 @@ from models.dataset import (
DatasetQuery, DatasetQuery,
Document, Document,
DocumentSegment, DocumentSegment,
Pipeline,
SegmentAttachmentBinding, SegmentAttachmentBinding,
) )
from models.model import UploadFile from models.model import UploadFile
from models.workflow import Workflow
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -34,6 +37,7 @@ def clean_dataset_task(
index_struct: str, index_struct: str,
collection_binding_id: str, collection_binding_id: str,
doc_form: str, doc_form: str,
pipeline_id: str | None = None,
): ):
""" """
Clean dataset when dataset deleted. Clean dataset when dataset deleted.
@ -135,6 +139,14 @@ def clean_dataset_task(
# delete dataset metadata # delete dataset metadata
db.session.query(DatasetMetadata).where(DatasetMetadata.dataset_id == dataset_id).delete() db.session.query(DatasetMetadata).where(DatasetMetadata.dataset_id == dataset_id).delete()
db.session.query(DatasetMetadataBinding).where(DatasetMetadataBinding.dataset_id == dataset_id).delete() db.session.query(DatasetMetadataBinding).where(DatasetMetadataBinding.dataset_id == dataset_id).delete()
# delete pipeline and workflow
if pipeline_id:
db.session.query(Pipeline).where(Pipeline.id == pipeline_id).delete()
db.session.query(Workflow).where(
Workflow.tenant_id == tenant_id,
Workflow.app_id == pipeline_id,
Workflow.type == WorkflowType.RAG_PIPELINE,
).delete()
# delete files # delete files
if documents: if documents:
for document in documents: for document in documents:

File diff suppressed because it is too large Load Diff