mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-12 11:59:01 +08:00
fix: empty conversation list of explore chatbot (#3235)
This commit is contained in:
parent
1384a6d0fd
commit
f599f41336
@ -6,6 +6,7 @@ from werkzeug.exceptions import NotFound
|
|||||||
from controllers.console import api
|
from controllers.console import api
|
||||||
from controllers.console.explore.error import NotChatAppError
|
from controllers.console.explore.error import NotChatAppError
|
||||||
from controllers.console.explore.wraps import InstalledAppResource
|
from controllers.console.explore.wraps import InstalledAppResource
|
||||||
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from fields.conversation_fields import conversation_infinite_scroll_pagination_fields, simple_conversation_fields
|
from fields.conversation_fields import conversation_infinite_scroll_pagination_fields, simple_conversation_fields
|
||||||
from libs.helper import uuid_value
|
from libs.helper import uuid_value
|
||||||
from models.model import AppMode
|
from models.model import AppMode
|
||||||
@ -39,8 +40,8 @@ class ConversationListApi(InstalledAppResource):
|
|||||||
user=current_user,
|
user=current_user,
|
||||||
last_id=args['last_id'],
|
last_id=args['last_id'],
|
||||||
limit=args['limit'],
|
limit=args['limit'],
|
||||||
|
invoke_from=InvokeFrom.EXPLORE,
|
||||||
pinned=pinned,
|
pinned=pinned,
|
||||||
exclude_debug_conversation=True
|
|
||||||
)
|
)
|
||||||
except LastConversationNotExistsError:
|
except LastConversationNotExistsError:
|
||||||
raise NotFound("Last Conversation Not Exists.")
|
raise NotFound("Last Conversation Not Exists.")
|
||||||
|
@ -6,6 +6,7 @@ import services
|
|||||||
from controllers.service_api import api
|
from controllers.service_api import api
|
||||||
from controllers.service_api.app.error import NotChatAppError
|
from controllers.service_api.app.error import NotChatAppError
|
||||||
from controllers.service_api.wraps import FetchUserArg, WhereisUserArg, validate_app_token
|
from controllers.service_api.wraps import FetchUserArg, WhereisUserArg, validate_app_token
|
||||||
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from fields.conversation_fields import conversation_infinite_scroll_pagination_fields, simple_conversation_fields
|
from fields.conversation_fields import conversation_infinite_scroll_pagination_fields, simple_conversation_fields
|
||||||
from libs.helper import uuid_value
|
from libs.helper import uuid_value
|
||||||
from models.model import App, AppMode, EndUser
|
from models.model import App, AppMode, EndUser
|
||||||
@ -27,7 +28,13 @@ class ConversationApi(Resource):
|
|||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return ConversationService.pagination_by_last_id(app_model, end_user, args['last_id'], args['limit'])
|
return ConversationService.pagination_by_last_id(
|
||||||
|
app_model=app_model,
|
||||||
|
user=end_user,
|
||||||
|
last_id=args['last_id'],
|
||||||
|
limit=args['limit'],
|
||||||
|
invoke_from=InvokeFrom.SERVICE_API
|
||||||
|
)
|
||||||
except services.errors.conversation.LastConversationNotExistsError:
|
except services.errors.conversation.LastConversationNotExistsError:
|
||||||
raise NotFound("Last Conversation Not Exists.")
|
raise NotFound("Last Conversation Not Exists.")
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ from werkzeug.exceptions import NotFound
|
|||||||
from controllers.web import api
|
from controllers.web import api
|
||||||
from controllers.web.error import NotChatAppError
|
from controllers.web.error import NotChatAppError
|
||||||
from controllers.web.wraps import WebApiResource
|
from controllers.web.wraps import WebApiResource
|
||||||
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from fields.conversation_fields import conversation_infinite_scroll_pagination_fields, simple_conversation_fields
|
from fields.conversation_fields import conversation_infinite_scroll_pagination_fields, simple_conversation_fields
|
||||||
from libs.helper import uuid_value
|
from libs.helper import uuid_value
|
||||||
from models.model import AppMode
|
from models.model import AppMode
|
||||||
@ -37,7 +38,8 @@ class ConversationListApi(WebApiResource):
|
|||||||
user=end_user,
|
user=end_user,
|
||||||
last_id=args['last_id'],
|
last_id=args['last_id'],
|
||||||
limit=args['limit'],
|
limit=args['limit'],
|
||||||
pinned=pinned
|
invoke_from=InvokeFrom.WEB_APP,
|
||||||
|
pinned=pinned,
|
||||||
)
|
)
|
||||||
except LastConversationNotExistsError:
|
except LastConversationNotExistsError:
|
||||||
raise NotFound("Last Conversation Not Exists.")
|
raise NotFound("Last Conversation Not Exists.")
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
from typing import Optional, Union
|
from typing import Optional, Union
|
||||||
|
|
||||||
|
from sqlalchemy import or_
|
||||||
|
|
||||||
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.llm_generator.llm_generator import LLMGenerator
|
from core.llm_generator.llm_generator import LLMGenerator
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from libs.infinite_scroll_pagination import InfiniteScrollPagination
|
from libs.infinite_scroll_pagination import InfiniteScrollPagination
|
||||||
@ -13,8 +16,9 @@ class ConversationService:
|
|||||||
@classmethod
|
@classmethod
|
||||||
def pagination_by_last_id(cls, app_model: App, user: Optional[Union[Account, EndUser]],
|
def pagination_by_last_id(cls, app_model: App, user: Optional[Union[Account, EndUser]],
|
||||||
last_id: Optional[str], limit: int,
|
last_id: Optional[str], limit: int,
|
||||||
include_ids: Optional[list] = None, exclude_ids: Optional[list] = None,
|
invoke_from: InvokeFrom,
|
||||||
exclude_debug_conversation: bool = False) -> InfiniteScrollPagination:
|
include_ids: Optional[list] = None,
|
||||||
|
exclude_ids: Optional[list] = None) -> InfiniteScrollPagination:
|
||||||
if not user:
|
if not user:
|
||||||
return InfiniteScrollPagination(data=[], limit=limit, has_more=False)
|
return InfiniteScrollPagination(data=[], limit=limit, has_more=False)
|
||||||
|
|
||||||
@ -24,6 +28,7 @@ class ConversationService:
|
|||||||
Conversation.from_source == ('api' if isinstance(user, EndUser) else 'console'),
|
Conversation.from_source == ('api' if isinstance(user, EndUser) else 'console'),
|
||||||
Conversation.from_end_user_id == (user.id if isinstance(user, EndUser) else None),
|
Conversation.from_end_user_id == (user.id if isinstance(user, EndUser) else None),
|
||||||
Conversation.from_account_id == (user.id if isinstance(user, Account) else None),
|
Conversation.from_account_id == (user.id if isinstance(user, Account) else None),
|
||||||
|
or_(Conversation.invoke_from.is_(None), Conversation.invoke_from == invoke_from.value)
|
||||||
)
|
)
|
||||||
|
|
||||||
if include_ids is not None:
|
if include_ids is not None:
|
||||||
@ -32,9 +37,6 @@ class ConversationService:
|
|||||||
if exclude_ids is not None:
|
if exclude_ids is not None:
|
||||||
base_query = base_query.filter(~Conversation.id.in_(exclude_ids))
|
base_query = base_query.filter(~Conversation.id.in_(exclude_ids))
|
||||||
|
|
||||||
if exclude_debug_conversation:
|
|
||||||
base_query = base_query.filter(Conversation.override_model_configs == None)
|
|
||||||
|
|
||||||
if last_id:
|
if last_id:
|
||||||
last_conversation = base_query.filter(
|
last_conversation = base_query.filter(
|
||||||
Conversation.id == last_id,
|
Conversation.id == last_id,
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
from typing import Optional, Union
|
from typing import Optional, Union
|
||||||
|
|
||||||
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from libs.infinite_scroll_pagination import InfiniteScrollPagination
|
from libs.infinite_scroll_pagination import InfiniteScrollPagination
|
||||||
from models.account import Account
|
from models.account import Account
|
||||||
@ -11,8 +12,8 @@ from services.conversation_service import ConversationService
|
|||||||
class WebConversationService:
|
class WebConversationService:
|
||||||
@classmethod
|
@classmethod
|
||||||
def pagination_by_last_id(cls, app_model: App, user: Optional[Union[Account, EndUser]],
|
def pagination_by_last_id(cls, app_model: App, user: Optional[Union[Account, EndUser]],
|
||||||
last_id: Optional[str], limit: int, pinned: Optional[bool] = None,
|
last_id: Optional[str], limit: int, invoke_from: InvokeFrom,
|
||||||
exclude_debug_conversation: bool = False) -> InfiniteScrollPagination:
|
pinned: Optional[bool] = None) -> InfiniteScrollPagination:
|
||||||
include_ids = None
|
include_ids = None
|
||||||
exclude_ids = None
|
exclude_ids = None
|
||||||
if pinned is not None:
|
if pinned is not None:
|
||||||
@ -32,9 +33,9 @@ class WebConversationService:
|
|||||||
user=user,
|
user=user,
|
||||||
last_id=last_id,
|
last_id=last_id,
|
||||||
limit=limit,
|
limit=limit,
|
||||||
|
invoke_from=invoke_from,
|
||||||
include_ids=include_ids,
|
include_ids=include_ids,
|
||||||
exclude_ids=exclude_ids,
|
exclude_ids=exclude_ids,
|
||||||
exclude_debug_conversation=exclude_debug_conversation
|
|
||||||
)
|
)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
Loading…
x
Reference in New Issue
Block a user