fix: document is not bound to a session (#26480)

This commit is contained in:
quicksand 2025-09-30 14:24:40 +08:00 • committed by GitHub
commit 809f48f733
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -136,6 +136,11 @@ class KnowledgeIndexNode(Node):
document = db.session.query(Document).filter_by(id=document_id.value).first() document = db.session.query(Document).filter_by(id=document_id.value).first()
if not document: if not document:
raise KnowledgeIndexNodeError(f"Document {document_id.value} not found.") raise KnowledgeIndexNodeError(f"Document {document_id.value} not found.")
doc_id_value = document.id
ds_id_value = dataset.id
dataset_name_value = dataset.name
document_name_value = document.name
created_at_value = document.created_at
# chunk nodes by chunk size # chunk nodes by chunk size
indexing_start_at = time.perf_counter() indexing_start_at = time.perf_counter()
index_processor = IndexProcessorFactory(dataset.chunk_structure).init_index_processor() index_processor = IndexProcessorFactory(dataset.chunk_structure).init_index_processor()
@ -161,16 +166,16 @@ class KnowledgeIndexNode(Node):
document.word_count = ( document.word_count = (
db.session.query(func.sum(DocumentSegment.word_count)) db.session.query(func.sum(DocumentSegment.word_count))
.where( .where(
DocumentSegment.document_id == document.id, DocumentSegment.document_id == doc_id_value,
DocumentSegment.dataset_id == dataset.id, DocumentSegment.dataset_id == ds_id_value,
) )
.scalar() .scalar()
) )
db.session.add(document) db.session.add(document)
# update document segment status # update document segment status
db.session.query(DocumentSegment).where( db.session.query(DocumentSegment).where(
DocumentSegment.document_id == document.id, DocumentSegment.document_id == doc_id_value,
DocumentSegment.dataset_id == dataset.id, DocumentSegment.dataset_id == ds_id_value,
).update( ).update(
{ {
DocumentSegment.status: "completed", DocumentSegment.status: "completed",
@ -182,13 +187,13 @@ class KnowledgeIndexNode(Node):
db.session.commit() db.session.commit()
return { return {
"dataset_id": dataset.id, "dataset_id": ds_id_value,
"dataset_name": dataset.name, "dataset_name": dataset_name_value,
"batch": batch.value, "batch": batch.value,
"document_id": document.id, "document_id": doc_id_value,
"document_name": document.name, "document_name": document_name_value,
"created_at": document.created_at.timestamp(), "created_at": created_at_value.timestamp(),
"display_status": document.indexing_status, "display_status": "completed",
} }
def _get_preview_output(self, chunk_structure: str, chunks: Any) -> Mapping[str, Any]: def _get_preview_output(self, chunk_structure: str, chunks: Any) -> Mapping[str, Any]: