mirror of
https://github.com/YFGaia/dify-plus.git
synced 2026-06-04 10:14:00 +08:00
fix: 修复web app 会话工作流 404问题会话列表
Co-authored-by: Cursor <github@npc0.com>
This commit is contained in:
@@ -7,6 +7,7 @@ data:
|
||||
server {
|
||||
listen 8080;
|
||||
server_name localhost;
|
||||
absolute_redirect off;
|
||||
|
||||
#charset koi8-r;
|
||||
#access_log logs/host.access.log main;
|
||||
|
||||
@@ -44,8 +44,8 @@ func Corn() {
|
||||
}
|
||||
global.GVA_LOG.Info("【定时任务-每1分钟执行1次】同步用户列表任务,已启动!")
|
||||
|
||||
// 每10分钟同步一次【应用使用分析数据】
|
||||
if _, err := c.AddFunc("0 */10 * * * *", func() {
|
||||
// 一天同步一次~待改目前没啥用【应用使用分析数据】
|
||||
if _, err := c.AddFunc("0 0 1 * * *", func() {
|
||||
if global.GVA_DB == nil {
|
||||
global.GVA_LOG.Info("【定时任务-每6分钟执行1次】同步应用使用分析数据任务,数据库没有初始化,暂未开始同步")
|
||||
return
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
server {
|
||||
listen 8081;
|
||||
server_name localhost;
|
||||
absolute_redirect off; # 使用相对重定向,避免暴露后端端口导致浏览器跳转到 :8080
|
||||
|
||||
#charset koi8-r;
|
||||
#access_log logs/host.access.log main;
|
||||
|
||||
@@ -48,12 +48,29 @@ class ConversationService:
|
||||
if not user:
|
||||
return InfiniteScrollPagination(data=[], limit=limit, has_more=False)
|
||||
|
||||
if isinstance(user, EndUser):
|
||||
from_source = "api"
|
||||
# Include conversations owned by this end_user or by this end_user's linked account (Web login).
|
||||
user_filter: Any = Conversation.from_end_user_id == user.id
|
||||
if getattr(user, "external_user_id", None):
|
||||
user_filter = or_(user_filter, Conversation.from_account_id == user.external_user_id)
|
||||
base_conditions = (
|
||||
Conversation.is_deleted == False,
|
||||
Conversation.app_id == app_model.id,
|
||||
Conversation.from_source == from_source,
|
||||
user_filter,
|
||||
)
|
||||
else:
|
||||
base_conditions = (
|
||||
Conversation.is_deleted == False,
|
||||
Conversation.app_id == app_model.id,
|
||||
Conversation.from_source == "console",
|
||||
Conversation.from_end_user_id.is_(None),
|
||||
Conversation.from_account_id == user.id,
|
||||
)
|
||||
|
||||
stmt = select(Conversation).where(
|
||||
Conversation.is_deleted == False,
|
||||
Conversation.app_id == app_model.id,
|
||||
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_account_id == (user.id if isinstance(user, Account) else None),
|
||||
*base_conditions,
|
||||
or_(Conversation.invoke_from.is_(None), Conversation.invoke_from == invoke_from.value),
|
||||
)
|
||||
# Check if include_ids is not None to apply filter
|
||||
@@ -173,6 +190,28 @@ class ConversationService:
|
||||
.first()
|
||||
)
|
||||
|
||||
# extend start: 二开部分End - web app 会话列表,兼容 cookie 和 header 登录
|
||||
# Web App: fallback when conversation was created with same end_user but lookup fails
|
||||
# (e.g. cookie vs header passport, or session refresh). Allow access when either
|
||||
# from_end_user_id matches or from_account_id matches end_user's linked account.
|
||||
if not conversation and isinstance(user, EndUser):
|
||||
fallback = (
|
||||
db.session.query(Conversation)
|
||||
.where(
|
||||
Conversation.id == conversation_id,
|
||||
Conversation.app_id == app_model.id,
|
||||
Conversation.from_source == "api",
|
||||
Conversation.is_deleted == False,
|
||||
)
|
||||
.first()
|
||||
)
|
||||
if fallback and (
|
||||
fallback.from_end_user_id == user.id
|
||||
or (getattr(user, "external_user_id", None) and fallback.from_account_id == user.external_user_id)
|
||||
):
|
||||
conversation = fallback
|
||||
# extend end: 二开部分End - web app 会话列表,兼容 cookie 和 header 登录
|
||||
|
||||
if not conversation:
|
||||
raise ConversationNotExistsError()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user