Skip to content

Commit e9156f7

Browse files
committed
feat: add new fields to Application model and update serializer mappings
--bug=1062164 --user=刘瑞斌 【应用】-简单应用中添加MCP、工具后,复制应用生成的应用中没有引用 MCP、工具 https://www.tapd.cn/62980211/s/1778474
1 parent 10ded1b commit e9156f7

File tree

1 file changed

+41
-29
lines changed

1 file changed

+41
-29
lines changed

apps/application/serializers/application.py

Lines changed: 41 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
@desc:
88
"""
99
import asyncio
10-
import datetime
1110
import hashlib
1211
import json
1312
import os
@@ -21,8 +20,8 @@
2120
from django.db import models, transaction
2221
from django.db.models import QuerySet, Q
2322
from django.http import HttpResponse
24-
from django.utils.translation import gettext_lazy as _
2523
from django.utils import timezone
24+
from django.utils.translation import gettext_lazy as _
2625
from langchain_mcp_adapters.client import MultiServerMCPClient
2726
from rest_framework import serializers, status
2827
from rest_framework.utils.formatting import lazy_format
@@ -256,29 +255,39 @@ def is_valid(self, *, user_id=None, raise_exception=False):
256255

257256
@staticmethod
258257
def to_application_model(user_id: str, workspace_id: str, application: Dict):
259-
return Application(id=uuid.uuid7(), name=application.get('name'), desc=application.get('desc'),
260-
workspace_id=workspace_id,
261-
prologue=application.get('prologue'),
262-
dialogue_number=application.get('dialogue_number', 0),
263-
user_id=user_id, model_id=application.get('model_id'),
264-
folder_id=application.get('folder_id', application.get('workspace_id')),
265-
knowledge_setting=application.get('knowledge_setting'),
266-
model_setting=application.get('model_setting'),
267-
problem_optimization=application.get('problem_optimization'),
268-
type=ApplicationTypeChoices.SIMPLE,
269-
model_params_setting=application.get('model_params_setting', {}),
270-
problem_optimization_prompt=application.get('problem_optimization_prompt', None),
271-
stt_model_enable=application.get('stt_model_enable', False),
272-
stt_model_id=application.get('stt_model', None),
273-
stt_autosend=application.get('stt_autosend', False),
274-
tts_model_id=application.get('tts_model', None),
275-
tts_model_enable=application.get('tts_model_enable', False),
276-
tts_model_params_setting=application.get('tts_model_params_setting', {}),
277-
tts_type=application.get('tts_type', 'BROWSER'),
278-
file_upload_enable=application.get('file_upload_enable', False),
279-
file_upload_setting=application.get('file_upload_setting', {}),
280-
work_flow={}
281-
)
258+
return Application(
259+
id=uuid.uuid7(),
260+
name=application.get('name'),
261+
desc=application.get('desc'),
262+
workspace_id=workspace_id,
263+
prologue=application.get('prologue'),
264+
dialogue_number=application.get('dialogue_number', 0),
265+
user_id=user_id, model_id=application.get('model_id'),
266+
folder_id=application.get('folder_id', application.get('workspace_id')),
267+
knowledge_setting=application.get('knowledge_setting'),
268+
model_setting=application.get('model_setting'),
269+
problem_optimization=application.get('problem_optimization'),
270+
type=ApplicationTypeChoices.SIMPLE,
271+
model_params_setting=application.get('model_params_setting', {}),
272+
problem_optimization_prompt=application.get('problem_optimization_prompt', None),
273+
stt_model_enable=application.get('stt_model_enable', False),
274+
stt_model_id=application.get('stt_model', None),
275+
stt_autosend=application.get('stt_autosend', False),
276+
tts_model_id=application.get('tts_model', None),
277+
tts_model_enable=application.get('tts_model_enable', False),
278+
tts_model_params_setting=application.get('tts_model_params_setting', {}),
279+
tts_type=application.get('tts_type', 'BROWSER'),
280+
file_upload_enable=application.get('file_upload_enable', False),
281+
file_upload_setting=application.get('file_upload_setting', {}),
282+
work_flow={},
283+
mcp_enable=application.get('mcp_enable', False),
284+
mcp_tool_ids=application.get('mcp_tool_ids', []),
285+
mcp_servers=application.get('mcp_servers'),
286+
mcp_source=application.get('mcp_source', 'referencing'),
287+
tool_enable=application.get('tool_enable', False),
288+
tool_ids=application.get('tool_ids', []),
289+
mcp_output_enable=application.get('mcp_output_enable', False),
290+
)
282291

283292

284293
class ApplicationQueryRequest(serializers.Serializer):
@@ -708,7 +717,8 @@ def reset_application_version(application_version, application):
708717
'tts_autoplay': 'tts_autoplay', 'stt_autosend': 'stt_autosend', 'file_upload_enable': 'file_upload_enable',
709718
'file_upload_setting': 'file_upload_setting',
710719
'mcp_enable': 'mcp_enable', 'mcp_tool_ids': 'mcp_tool_ids', 'mcp_servers': 'mcp_servers',
711-
'mcp_source': 'mcp_source', 'tool_enable': 'tool_enable', 'tool_ids': 'tool_ids', 'mcp_output_enable': 'mcp_output_enable',
720+
'mcp_source': 'mcp_source', 'tool_enable': 'tool_enable', 'tool_ids': 'tool_ids',
721+
'mcp_output_enable': 'mcp_output_enable',
712722
'type': 'type'
713723
}
714724

@@ -750,7 +760,7 @@ def publish(self, instance, with_valid=True):
750760
work_flow_version.save()
751761
access_token = hashlib.md5(
752762
str(uuid.uuid7()).encode()).hexdigest()[
753-
8:24]
763+
8:24]
754764
application_access_token = QuerySet(ApplicationAccessToken).filter(
755765
application_id=application.id).first()
756766
if application_access_token is None:
@@ -833,8 +843,10 @@ def edit(self, instance: Dict, with_valid=True):
833843
'knowledge_setting', 'model_setting', 'problem_optimization', 'dialogue_number',
834844
'stt_model_id', 'tts_model_id', 'tts_model_enable', 'stt_model_enable', 'tts_type',
835845
'tts_autoplay', 'stt_autosend', 'file_upload_enable', 'file_upload_setting',
836-
'api_key_is_active', 'icon', 'work_flow', 'model_params_setting', 'tts_model_params_setting', 'stt_model_params_setting',
837-
'mcp_enable', 'mcp_tool_ids', 'mcp_servers', 'mcp_source', 'tool_enable', 'tool_ids', 'mcp_output_enable',
846+
'api_key_is_active', 'icon', 'work_flow', 'model_params_setting', 'tts_model_params_setting',
847+
'stt_model_params_setting',
848+
'mcp_enable', 'mcp_tool_ids', 'mcp_servers', 'mcp_source', 'tool_enable', 'tool_ids',
849+
'mcp_output_enable',
838850
'problem_optimization_prompt', 'clean_time', 'folder_id']
839851
for update_key in update_keys:
840852
if update_key in instance and instance.get(update_key) is not None:

0 commit comments

Comments
 (0)