Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Generated by Django 6.1 on 2026-09-11 06:34

from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("knowledge", "0013_paragraph_asset_recall"),
]

operations = [
migrations.AddField(
model_name="knowledgeworkflow",
name="default_model_setting",
field=models.JSONField(default=dict, verbose_name="默认模型"),
),
migrations.AddField(
model_name="knowledgeworkflowversion",
name="default_model_setting",
field=models.JSONField(default=dict, verbose_name="默认模型"),
),
migrations.AlterField(
model_name="file",
name="source_type",
field=models.CharField(
choices=[
("KNOWLEDGE", "Knowledge"),
("APPLICATION", "Application"),
("TOOL", "Tool"),
("DOCUMENT", "Document"),
("CHAT", "Chat"),
("SYSTEM", "System"),
("TEMPORARY_30_MINUTE", "Temporary 30 Minute"),
("TEMPORARY_120_MINUTE", "Temporary 120 Minute"),
("TEMPORARY_1_DAY", "Temporary 1 Day"),
("APPLICATION_SETTINGS", "Application Settings"),
],
db_index=True,
default="TEMPORARY_120_MINUTE",
verbose_name="资源类型",
),
),
]
2 changes: 2 additions & 0 deletions apps/knowledge/models/knowledge.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,7 @@ class KnowledgeWorkflow(AppModelMixin):
work_flow = models.JSONField(verbose_name="工作流数据", default=dict)
is_publish = models.BooleanField(verbose_name="是否发布", default=False, db_index=True)
publish_time = models.DateTimeField(verbose_name="发布时间", null=True, blank=True)
default_model_setting = models.JSONField(verbose_name="默认模型", default=dict)

class Meta:
db_table = "knowledge_workflow"
Expand All @@ -267,6 +268,7 @@ class KnowledgeWorkflowVersion(AppModelMixin):
work_flow = models.JSONField(verbose_name="工作流数据", default=dict)
publish_user_id = models.UUIDField(verbose_name="发布者id", max_length=128, default=None, null=True)
publish_user_name = models.CharField(verbose_name="发布者名称", max_length=128, default="")
default_model_setting = models.JSONField(verbose_name="默认模型", default=dict)

class Meta:
db_table = "knowledge_workflow_version"
Expand Down
1 change: 1 addition & 0 deletions apps/knowledge/serializers/knowledge.py
Original file line number Diff line number Diff line change
Expand Up @@ -479,6 +479,7 @@ def one(self):
workflow["work_flow"] = k.work_flow
workflow["is_publish"] = k.is_publish
workflow["publish_time"] = k.publish_time
workflow["default_model_setting"] = k.default_model_setting
meta = json.loads(knowledge_dict.get("meta", "{}"))
return {
**knowledge_dict,
Expand Down
29 changes: 25 additions & 4 deletions apps/knowledge/serializers/knowledge_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,14 @@ def action(self, instance: Dict, user, with_valid=True, sync_log_id=None):
"workspace_id": knowledge.workspace_id,
},
}
self._launch_knowledge_workflow(instance, user, knowledge_action_id, knowledge_workflow.work_flow, sync_log_id)
self._launch_knowledge_workflow(
instance,
user,
knowledge_action_id,
knowledge_workflow.work_flow,
knowledge_workflow.default_model_setting,
sync_log_id,
)
# 需要把文件改成永久文件
data_source = instance.get("data_source") or {}
file_ids = [item.get("file_id") for item in data_source.get("file_list") or [] if item.get("file_id")]
Expand All @@ -277,7 +284,9 @@ def action(self, instance: Dict, user, with_valid=True, sync_log_id=None):
"meta": meta,
}

def _launch_knowledge_workflow(self, instance: Dict, user, knowledge_action_id, work_flow, sync_log_id=None):
def _launch_knowledge_workflow(
self, instance: Dict, user, knowledge_action_id, work_flow, default_model_setting={}, sync_log_id=None
):
"""
在新引擎上异步启动知识库工作流(action/upload_document 共用):
动态解析数据源起点 -> 注册到运行注册表(供停止)-> run() 每节点起线程立即返回,
Expand All @@ -290,6 +299,7 @@ def _launch_knowledge_workflow(self, instance: Dict, user, knowledge_action_id,
"workspace_id": self.data.get("workspace_id"),
"user_id": str(user.id),
**instance,
"default_model_setting": default_model_setting,
}
workflow = new_instance(work_flow, WorkflowType.KNOWLEDGE)
start_time = time.time()
Expand Down Expand Up @@ -365,7 +375,13 @@ def upload_document(self, instance: Dict, user, with_valid=True):
},
}
# 线上上传走已发布版本的 work_flow,执行链路与 action 一致(新引擎异步执行)
self._launch_knowledge_workflow(instance, user, knowledge_action_id, knowledge_workflow_version.work_flow)
self._launch_knowledge_workflow(
instance,
user,
knowledge_action_id,
knowledge_workflow_version.work_flow,
knowledge_workflow_version.default_model_setting,
)
return {
"id": knowledge_action_id,
"knowledge_id": self.data.get("knowledge_id"),
Expand Down Expand Up @@ -715,6 +731,7 @@ def publish(self, with_valid=True):
publish_user_id=user_id,
publish_user_name=user.username,
workspace_id=workspace_id,
default_model_setting=knowledge_workflow.default_model_setting,
)
work_flow_version.save()
QuerySet(KnowledgeWorkflow).filter(knowledge_id=self.data.get("knowledge_id")).update(
Expand All @@ -732,8 +749,12 @@ def edit(self, instance: Dict):
"knowledge_id": self.data.get("knowledge_id"),
"workspace_id": self.data.get("workspace_id"),
"work_flow": instance.get("work_flow", {}),
"default_model_setting": instance.get("default_model_setting", {}),
},
defaults={
"work_flow": instance.get("work_flow"),
"default_model_setting": instance.get("default_model_setting", {}),
},
defaults={"work_flow": instance.get("work_flow")},
)
update_resource_mapping_by_knowledge(self.data.get("knowledge_id"))
return self.one()
Expand Down
Loading