chore: use ConversationService.get_conversation instead of AgentChatA… (#16136)

Co-authored-by: 刘江波 <jiangbo721@163.com>
This commit is contained in:
jiangbo721 2025-03-19 11:16:23 +08:00 committed by GitHub
parent e428628fcc
commit 97eadb867c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 15 additions and 42 deletions

View File

@ -29,6 +29,7 @@ from factories import file_factory
from models.account import Account from models.account import Account
from models.model import App, Conversation, EndUser, Message from models.model import App, Conversation, EndUser, Message
from models.workflow import Workflow from models.workflow import Workflow
from services.conversation_service import ConversationService
from services.errors.message import MessageNotExistsError from services.errors.message import MessageNotExistsError
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -105,7 +106,7 @@ class AdvancedChatAppGenerator(MessageBasedAppGenerator):
conversation = None conversation = None
conversation_id = args.get("conversation_id") conversation_id = args.get("conversation_id")
if conversation_id: if conversation_id:
conversation = self._get_conversation_by_user( conversation = ConversationService.get_conversation(
app_model=app_model, conversation_id=conversation_id, user=user app_model=app_model, conversation_id=conversation_id, user=user
) )

View File

@ -24,6 +24,7 @@ from core.ops.ops_trace_manager import TraceQueueManager
from extensions.ext_database import db from extensions.ext_database import db
from factories import file_factory from factories import file_factory
from models import Account, App, EndUser from models import Account, App, EndUser
from services.conversation_service import ConversationService
from services.errors.message import MessageNotExistsError from services.errors.message import MessageNotExistsError
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -98,9 +99,11 @@ class AgentChatAppGenerator(MessageBasedAppGenerator):
# get conversation # get conversation
conversation = None conversation = None
if args.get("conversation_id"): conversation_id = args.get("conversation_id")
conversation = self._get_conversation_by_user(app_model, args.get("conversation_id", ""), user) if conversation_id:
conversation = ConversationService.get_conversation(
app_model=app_model, conversation_id=conversation_id, user=user
)
# get app model config # get app model config
app_model_config = self._get_app_model_config(app_model=app_model, conversation=conversation) app_model_config = self._get_app_model_config(app_model=app_model, conversation=conversation)

View File

@ -24,6 +24,7 @@ from extensions.ext_database import db
from factories import file_factory from factories import file_factory
from models.account import Account from models.account import Account
from models.model import App, EndUser from models.model import App, EndUser
from services.conversation_service import ConversationService
from services.errors.message import MessageNotExistsError from services.errors.message import MessageNotExistsError
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -91,9 +92,11 @@ class ChatAppGenerator(MessageBasedAppGenerator):
# get conversation # get conversation
conversation = None conversation = None
if args.get("conversation_id"): conversation_id = args.get("conversation_id")
conversation = self._get_conversation_by_user(app_model, args.get("conversation_id", ""), user) if conversation_id:
conversation = ConversationService.get_conversation(
app_model=app_model, conversation_id=conversation_id, user=user
)
# get app model config # get app model config
app_model_config = self._get_app_model_config(app_model=app_model, conversation=conversation) app_model_config = self._get_app_model_config(app_model=app_model, conversation=conversation)

View File

@ -4,8 +4,6 @@ from collections.abc import Generator
from datetime import UTC, datetime from datetime import UTC, datetime
from typing import Optional, Union, cast from typing import Optional, Union, cast
from sqlalchemy import and_
from core.app.app_config.entities import EasyUIBasedAppConfig, EasyUIBasedAppModelConfigFrom from core.app.app_config.entities import EasyUIBasedAppConfig, EasyUIBasedAppModelConfigFrom
from core.app.apps.base_app_generator import BaseAppGenerator from core.app.apps.base_app_generator import BaseAppGenerator
from core.app.apps.base_app_queue_manager import AppQueueManager, GenerateTaskStoppedError from core.app.apps.base_app_queue_manager import AppQueueManager, GenerateTaskStoppedError
@ -30,7 +28,7 @@ from models import Account
from models.enums import CreatedByRole from models.enums import CreatedByRole
from models.model import App, AppMode, AppModelConfig, Conversation, EndUser, Message, MessageFile from models.model import App, AppMode, AppModelConfig, Conversation, EndUser, Message, MessageFile
from services.errors.app_model_config import AppModelConfigBrokenError from services.errors.app_model_config import AppModelConfigBrokenError
from services.errors.conversation import ConversationCompletedError, ConversationNotExistsError from services.errors.conversation import ConversationNotExistsError
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -81,31 +79,6 @@ class MessageBasedAppGenerator(BaseAppGenerator):
logger.exception(f"Failed to handle response, conversation_id: {conversation.id}") logger.exception(f"Failed to handle response, conversation_id: {conversation.id}")
raise e raise e
def _get_conversation_by_user(
self, app_model: App, conversation_id: str, user: Union[Account, EndUser]
) -> Conversation:
conversation_filter = [
Conversation.id == conversation_id,
Conversation.app_id == app_model.id,
Conversation.status == "normal",
Conversation.is_deleted.is_(False),
]
if isinstance(user, Account):
conversation_filter.append(Conversation.from_account_id == user.id)
else:
conversation_filter.append(Conversation.from_end_user_id == user.id if user else None)
conversation = db.session.query(Conversation).filter(and_(*conversation_filter)).first()
if not conversation:
raise ConversationNotExistsError()
if conversation.status != "normal":
raise ConversationCompletedError()
return conversation
def _get_app_model_config(self, app_model: App, conversation: Optional[Conversation] = None) -> AppModelConfig: def _get_app_model_config(self, app_model: App, conversation: Optional[Conversation] = None) -> AppModelConfig:
if conversation: if conversation:
app_model_config = ( app_model_config = (

View File

@ -15,7 +15,6 @@ from libs.infinite_scroll_pagination import InfiniteScrollPagination
from models.account import Account from models.account import Account
from models.model import App, AppMode, AppModelConfig, EndUser, Message, MessageFeedback from models.model import App, AppMode, AppModelConfig, EndUser, Message, MessageFeedback
from services.conversation_service import ConversationService from services.conversation_service import ConversationService
from services.errors.conversation import ConversationCompletedError, ConversationNotExistsError
from services.errors.message import ( from services.errors.message import (
FirstMessageNotExistsError, FirstMessageNotExistsError,
LastMessageNotExistsError, LastMessageNotExistsError,
@ -210,12 +209,6 @@ class MessageService:
app_model=app_model, conversation_id=message.conversation_id, user=user app_model=app_model, conversation_id=message.conversation_id, user=user
) )
if not conversation:
raise ConversationNotExistsError()
if conversation.status != "normal":
raise ConversationCompletedError()
model_manager = ModelManager() model_manager = ModelManager()
if app_model.mode == AppMode.ADVANCED_CHAT.value: if app_model.mode == AppMode.ADVANCED_CHAT.value: