chore: revert unintentional auto-formatting changes
Reverts formatting changes in files that were unrelated to semantic chunking to match upstream project style.
This commit is contained in:
parent
edf66bbe38
commit
8ebfcd8dd5
@ -475,7 +475,10 @@ async def find_user_by_oidc_sub(db, sub: str) -> User | None:
|
|||||||
# 方法1: 检查是否有用户的 user_id 直接等于 "oidc:{sub}"(标准 OIDC 用户)
|
# 方法1: 检查是否有用户的 user_id 直接等于 "oidc:{sub}"(标准 OIDC 用户)
|
||||||
standard_oidc_user_id = f"oidc:{sub}"
|
standard_oidc_user_id = f"oidc:{sub}"
|
||||||
# 占位绑定记录会被标记为 is_deleted=1,但我们仍需要查询它们来获取绑定关系
|
# 占位绑定记录会被标记为 is_deleted=1,但我们仍需要查询它们来获取绑定关系
|
||||||
result = await db.execute(select(User).filter(User.user_id == standard_oidc_user_id, User.is_deleted == 0))
|
result = await db.execute(select(User).filter(
|
||||||
|
User.user_id == standard_oidc_user_id,
|
||||||
|
User.is_deleted == 0
|
||||||
|
))
|
||||||
user = result.scalar_one_or_none()
|
user = result.scalar_one_or_none()
|
||||||
if user:
|
if user:
|
||||||
return user
|
return user
|
||||||
@ -483,9 +486,10 @@ async def find_user_by_oidc_sub(db, sub: str) -> User | None:
|
|||||||
# 方法2: 检查是否有绑定占位用户格式: "oidc:{sub}:{target_user_id}"(use_raw_username 绑定记录)
|
# 方法2: 检查是否有绑定占位用户格式: "oidc:{sub}:{target_user_id}"(use_raw_username 绑定记录)
|
||||||
# 绑定占位用户被标记为 is_deleted=1,需要包括deleted来查询
|
# 绑定占位用户被标记为 is_deleted=1,需要包括deleted来查询
|
||||||
legacy_result = await db.execute(
|
legacy_result = await db.execute(
|
||||||
select(User)
|
select(User).filter(
|
||||||
.filter(User.user_id.like(f"{standard_oidc_user_id}:%"), User.is_deleted.in_([0, 1]))
|
User.user_id.like(f"{standard_oidc_user_id}:%"),
|
||||||
.order_by(User.id.asc())
|
User.is_deleted.in_([0, 1])
|
||||||
|
).order_by(User.id.asc())
|
||||||
)
|
)
|
||||||
legacy_users = list(legacy_result.scalars().all())
|
legacy_users = list(legacy_result.scalars().all())
|
||||||
if legacy_users:
|
if legacy_users:
|
||||||
@ -524,7 +528,10 @@ async def find_deleted_oidc_user_by_sub(db, sub: str) -> User | None:
|
|||||||
|
|
||||||
# 检查绑定占位格式 oidc:{sub}:{target_user_id}(占位本身是deleted,需要查询目标用户)
|
# 检查绑定占位格式 oidc:{sub}:{target_user_id}(占位本身是deleted,需要查询目标用户)
|
||||||
legacy_result = await db.execute(
|
legacy_result = await db.execute(
|
||||||
select(User).filter(User.user_id.like(f"{oidc_user_id}:%"), User.is_deleted == 1).order_by(User.id.asc())
|
select(User).filter(
|
||||||
|
User.user_id.like(f"{oidc_user_id}:%"),
|
||||||
|
User.is_deleted == 1
|
||||||
|
).order_by(User.id.asc())
|
||||||
)
|
)
|
||||||
legacy_users = list(legacy_result.scalars().all())
|
legacy_users = list(legacy_result.scalars().all())
|
||||||
if legacy_users:
|
if legacy_users:
|
||||||
@ -578,7 +585,6 @@ async def _create_oidc_binding_placeholder(db, sub: str, target_user: User) -> N
|
|||||||
|
|
||||||
# username 使用 oidc-binding-{sub_hash} 避免冲突,sub_hash 基于完整 sub 生成
|
# username 使用 oidc-binding-{sub_hash} 避免冲突,sub_hash 基于完整 sub 生成
|
||||||
import hashlib
|
import hashlib
|
||||||
|
|
||||||
sub_hash = hashlib.sha256(sub.encode()).hexdigest()[:8]
|
sub_hash = hashlib.sha256(sub.encode()).hexdigest()[:8]
|
||||||
username = f"oidc-binding-{sub_hash}"
|
username = f"oidc-binding-{sub_hash}"
|
||||||
|
|
||||||
@ -598,7 +604,8 @@ async def _create_oidc_binding_placeholder(db, sub: str, target_user: User) -> N
|
|||||||
db.add(placeholder_user)
|
db.add(placeholder_user)
|
||||||
await db.commit()
|
await db.commit()
|
||||||
logger.info(
|
logger.info(
|
||||||
f"Created OIDC binding placeholder (deleted) for sub {sub} -> user {target_user.id} ({target_user.user_id})"
|
f"Created OIDC binding placeholder (deleted) for sub {sub} -> "
|
||||||
|
f"user {target_user.id} ({target_user.user_id})"
|
||||||
)
|
)
|
||||||
except IntegrityError:
|
except IntegrityError:
|
||||||
# 并发创建冲突,回滚后忽略
|
# 并发创建冲突,回滚后忽略
|
||||||
@ -654,7 +661,8 @@ async def create_oidc_user(db, user_info: dict, department_id: int | None = None
|
|||||||
if user_by_sub and user_by_sub.id == existing_user.id:
|
if user_by_sub and user_by_sub.id == existing_user.id:
|
||||||
# sub 已经正确绑定到该用户,允许返回
|
# sub 已经正确绑定到该用户,允许返回
|
||||||
logger.info(
|
logger.info(
|
||||||
f"User with raw username {user_id} already exists and bound to sub {sub}, returning existing user"
|
f"User with raw username {user_id} already exists and "
|
||||||
|
f"bound to sub {sub}, returning existing user"
|
||||||
)
|
)
|
||||||
return existing_user
|
return existing_user
|
||||||
elif user_by_sub is None:
|
elif user_by_sub is None:
|
||||||
|
|||||||
@ -183,13 +183,8 @@
|
|||||||
size="16"
|
size="16"
|
||||||
class="agent-switcher-menu-icon"
|
class="agent-switcher-menu-icon"
|
||||||
/>
|
/>
|
||||||
<span class="agent-switcher-menu-text">{{
|
<span class="agent-switcher-menu-text">{{ agent.name || 'Unknown' }}</span>
|
||||||
agent.name || 'Unknown'
|
<span v-if="agent.id === currentAgentId" class="agent-switcher-menu-badge">
|
||||||
}}</span>
|
|
||||||
<span
|
|
||||||
v-if="agent.id === currentAgentId"
|
|
||||||
class="agent-switcher-menu-badge"
|
|
||||||
>
|
|
||||||
当前
|
当前
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@ -610,10 +605,7 @@ const conversationRows = computed(() => {
|
|||||||
if (currentThreadConfigNotice.value) {
|
if (currentThreadConfigNotice.value) {
|
||||||
const insertAfterCount = Math.max(
|
const insertAfterCount = Math.max(
|
||||||
0,
|
0,
|
||||||
Math.min(
|
Math.min(Number(currentThreadConfigNotice.value.insertAfterConversationCount) || 0, rows.length)
|
||||||
Number(currentThreadConfigNotice.value.insertAfterConversationCount) || 0,
|
|
||||||
rows.length
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
rows.splice(insertAfterCount, 0, {
|
rows.splice(insertAfterCount, 0, {
|
||||||
type: 'notice',
|
type: 'notice',
|
||||||
@ -654,10 +646,7 @@ const showStartAgentSelector = computed(() => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const showStartAgentDropdown = computed(() => {
|
const showStartAgentDropdown = computed(() => {
|
||||||
return (
|
return showStartAgentSelector.value && (startAgents.value.length >= 4 || localUIState.chatMainWidth < 380)
|
||||||
showStartAgentSelector.value &&
|
|
||||||
(startAgents.value.length >= 4 || localUIState.chatMainWidth < 380)
|
|
||||||
)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
const showStartAgentSegment = computed(() => {
|
const showStartAgentSegment = computed(() => {
|
||||||
@ -870,11 +859,7 @@ const queuePendingThreadConfigNotice = (threadId) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const flushPendingThreadConfigNotice = (threadId) => {
|
const flushPendingThreadConfigNotice = (threadId) => {
|
||||||
if (
|
if (!threadId || !currentThreadHasHistory.value || !threadPendingConfigNoticeMap.value[threadId]) {
|
||||||
!threadId ||
|
|
||||||
!currentThreadHasHistory.value ||
|
|
||||||
!threadPendingConfigNoticeMap.value[threadId]
|
|
||||||
) {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1434,11 +1419,7 @@ const selectChat = async (chatId) => {
|
|||||||
// 先更新当前线程,确保底部智能体名称与选中项即时同步。
|
// 先更新当前线程,确保底部智能体名称与选中项即时同步。
|
||||||
chatState.currentThreadId = chatId
|
chatState.currentThreadId = chatId
|
||||||
|
|
||||||
if (
|
if (!props.singleMode && targetChat?.agent_id && targetChat.agent_id !== currentAgentId.value) {
|
||||||
!props.singleMode &&
|
|
||||||
targetChat?.agent_id &&
|
|
||||||
targetChat.agent_id !== currentAgentId.value
|
|
||||||
) {
|
|
||||||
await agentStore.selectAgent(targetChat.agent_id)
|
await agentStore.selectAgent(targetChat.agent_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1931,10 +1912,10 @@ const hasVisibleAssistantBody = (message) => {
|
|||||||
const { content, reasoningContent } = extractAssistantMessageBody(message)
|
const { content, reasoningContent } = extractAssistantMessageBody(message)
|
||||||
return Boolean(
|
return Boolean(
|
||||||
content ||
|
content ||
|
||||||
reasoningContent ||
|
reasoningContent ||
|
||||||
message.error_type ||
|
message.error_type ||
|
||||||
message.extra_metadata?.error_type ||
|
message.extra_metadata?.error_type ||
|
||||||
message.isStoppedByUser
|
message.isStoppedByUser
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2016,7 +1997,9 @@ const isDisplayMessageProcessing = (conv, displayItem) => {
|
|||||||
|
|
||||||
const isToolGroupActive = (conv, itemIndex, displayItems) => {
|
const isToolGroupActive = (conv, itemIndex, displayItems) => {
|
||||||
return (
|
return (
|
||||||
isReplyLoading.value && conv?.status === 'streaming' && itemIndex === displayItems.length - 1
|
isReplyLoading.value &&
|
||||||
|
conv?.status === 'streaming' &&
|
||||||
|
itemIndex === displayItems.length - 1
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -57,7 +57,11 @@
|
|||||||
/>
|
/>
|
||||||
<!-- 统一显示所有配置项 -->
|
<!-- 统一显示所有配置项 -->
|
||||||
<template v-for="(value, key) in filteredConfigurableItems" :key="key">
|
<template v-for="(value, key) in filteredConfigurableItems" :key="key">
|
||||||
<a-form-item :label="getConfigLabel(key, value)" :name="key" class="config-item">
|
<a-form-item
|
||||||
|
:label="getConfigLabel(key, value)"
|
||||||
|
:name="key"
|
||||||
|
class="config-item"
|
||||||
|
>
|
||||||
<p v-if="value.description" class="config-description">{{ value.description }}</p>
|
<p v-if="value.description" class="config-description">{{ value.description }}</p>
|
||||||
|
|
||||||
<!-- <div>{{ value }}</div> -->
|
<!-- <div>{{ value }}</div> -->
|
||||||
|
|||||||
@ -77,7 +77,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Result Slot -->
|
<!-- Result Slot -->
|
||||||
<div class="tool-result" style="opacity: 0.8" v-if="hasResult">
|
<div class="tool-result" style="opacity: 0.8;" v-if="hasResult">
|
||||||
<slot name="result" :tool-call="toolCall" :result-content="resultContent">
|
<slot name="result" :tool-call="toolCall" :result-content="resultContent">
|
||||||
<div class="tool-result-content" :data-tool-call-id="toolCall.id">
|
<div class="tool-result-content" :data-tool-call-id="toolCall.id">
|
||||||
<!-- Default rendering -->
|
<!-- Default rendering -->
|
||||||
@ -234,7 +234,7 @@ const formatResultData = (data) => {
|
|||||||
background-color: var(--gray-25);
|
background-color: var(--gray-25);
|
||||||
}
|
}
|
||||||
|
|
||||||
& > span {
|
&>span {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,12 +13,8 @@
|
|||||||
</span>
|
</span>
|
||||||
<span class="summary-content">
|
<span class="summary-content">
|
||||||
<span class="summary-title">{{ toolCallsSummaryTitle }}</span>
|
<span class="summary-title">{{ toolCallsSummaryTitle }}</span>
|
||||||
<span class="summary-separator" v-if="normalizedToolCalls.length > 1 && toolCallsNamesMeta"
|
<span class="summary-separator" v-if="normalizedToolCalls.length > 1 && toolCallsNamesMeta">·</span>
|
||||||
>·</span
|
<span class="summary-meta" v-if="normalizedToolCalls.length > 1 && toolCallsNamesMeta">{{ toolCallsNamesMeta }}</span>
|
||||||
>
|
|
||||||
<span class="summary-meta" v-if="normalizedToolCalls.length > 1 && toolCallsNamesMeta">{{
|
|
||||||
toolCallsNamesMeta
|
|
||||||
}}</span>
|
|
||||||
<span class="summary-status-tag" v-if="statusSummary">{{ statusSummary }}</span>
|
<span class="summary-status-tag" v-if="statusSummary">{{ statusSummary }}</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="summary-trailing">
|
<span class="summary-trailing">
|
||||||
@ -127,9 +123,8 @@ const statusSummary = computed(() => {
|
|||||||
(toolCall) =>
|
(toolCall) =>
|
||||||
toolCall.status !== 'success' && toolCall.status !== 'error' && !toolCall.tool_call_result
|
toolCall.status !== 'success' && toolCall.status !== 'error' && !toolCall.tool_call_result
|
||||||
).length
|
).length
|
||||||
const errorCount = normalizedToolCalls.value.filter(
|
const errorCount = normalizedToolCalls.value.filter((toolCall) => toolCall.status === 'error')
|
||||||
(toolCall) => toolCall.status === 'error'
|
.length
|
||||||
).length
|
|
||||||
|
|
||||||
const parts = []
|
const parts = []
|
||||||
if (successCount > 0 && successCount === normalizedToolCalls.value.length) {
|
if (successCount > 0 && successCount === normalizedToolCalls.value.length) {
|
||||||
|
|||||||
@ -208,7 +208,10 @@
|
|||||||
|
|
||||||
<!-- 部门选择器(仅超级管理员可见) -->
|
<!-- 部门选择器(仅超级管理员可见) -->
|
||||||
<a-form-item v-if="userStore.isSuperAdmin" label="部门" class="form-item">
|
<a-form-item v-if="userStore.isSuperAdmin" label="部门" class="form-item">
|
||||||
<a-select v-model:value="userManagement.form.departmentId" placeholder="请选择部门">
|
<a-select
|
||||||
|
v-model:value="userManagement.form.departmentId"
|
||||||
|
placeholder="请选择部门"
|
||||||
|
>
|
||||||
<a-select-option
|
<a-select-option
|
||||||
v-for="dept in departmentManagement.departments"
|
v-for="dept in departmentManagement.departments"
|
||||||
:key="dept.id"
|
:key="dept.id"
|
||||||
|
|||||||
@ -167,8 +167,13 @@ const route = useRoute()
|
|||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
|
||||||
// 从 agentStore 中获取响应式状态
|
// 从 agentStore 中获取响应式状态
|
||||||
const { selectedAgentId, defaultAgentId, selectedAgentConfigId, agentConfigs, isLoadingConfig } =
|
const {
|
||||||
storeToRefs(agentStore)
|
selectedAgentId,
|
||||||
|
defaultAgentId,
|
||||||
|
selectedAgentConfigId,
|
||||||
|
agentConfigs,
|
||||||
|
isLoadingConfig
|
||||||
|
} = storeToRefs(agentStore)
|
||||||
|
|
||||||
const syncingRouteThread = ref(false)
|
const syncingRouteThread = ref(false)
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user