diff --git a/backend/crates/gateway-store/src/postgres/observability.rs b/backend/crates/gateway-store/src/postgres/observability.rs
index e7a78d6a0..8cfbc4438 100644
--- a/backend/crates/gateway-store/src/postgres/observability.rs
+++ b/backend/crates/gateway-store/src/postgres/observability.rs
@@ -23,7 +23,8 @@ const MAX_PAGE_SIZE: u16 = 100;
const MAX_FILTER_BYTES: usize = 256;
const MAX_SEARCH_BYTES: usize = 512;
const MAX_ACCOUNT_IDS: usize = 200;
-const DASHBOARD_ACCOUNT_LIMIT: u16 = 50;
+/// 概览卡只展示最近使用的四个账号;完整账号用量由账号管理页单独查询。
+const DASHBOARD_ACCOUNT_LIMIT: u16 = 4;
const DIAGNOSTIC_LIMIT: i64 = 100;
const ACCOUNT_USAGE_TIMELINE_HOURS: i64 = 24;
diff --git a/frontend/src/components/base/BasePageHeader.vue b/frontend/src/components/base/BasePageHeader.vue
index 621494908..211384419 100644
--- a/frontend/src/components/base/BasePageHeader.vue
+++ b/frontend/src/components/base/BasePageHeader.vue
@@ -6,7 +6,7 @@ defineProps<{
-
+
-
+
diff --git a/frontend/src/layout/components/FloatingSidebarToggle.vue b/frontend/src/layout/components/FloatingSidebarToggle.vue
new file mode 100644
index 000000000..0c5c55938
--- /dev/null
+++ b/frontend/src/layout/components/FloatingSidebarToggle.vue
@@ -0,0 +1,240 @@
+
+
+
+
+
+
+
diff --git a/frontend/src/layout/components/MobileSidebarToolbar.vue b/frontend/src/layout/components/MobileSidebarToolbar.vue
deleted file mode 100644
index af8f5ca34..000000000
--- a/frontend/src/layout/components/MobileSidebarToolbar.vue
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/frontend/src/layout/index.vue b/frontend/src/layout/index.vue
index 961c1508e..ca050e8b3 100644
--- a/frontend/src/layout/index.vue
+++ b/frontend/src/layout/index.vue
@@ -9,7 +9,7 @@ import { useUiStore } from '@/stores/modules/ui'
import AppAboutModal from './components/AppAboutModal.vue'
import AppSidebar from './components/AppSidebar.vue'
-import MobileSidebarToolbar from './components/MobileSidebarToolbar.vue'
+import FloatingSidebarToggle from './components/FloatingSidebarToggle.vue'
import SystemUpdateModal from './components/SystemUpdateModal.vue'
const uiStore = useUiStore()
@@ -77,12 +77,12 @@ watch(
@open-about="aboutOpen = true"
@open-system-update="openSystemUpdate"
/>
+
-
diff --git a/frontend/src/views/accounts/components/AccountCreateModal.vue b/frontend/src/views/accounts/components/AccountCreateModal.vue
index e0af7fa6b..9395a1078 100644
--- a/frontend/src/views/accounts/components/AccountCreateModal.vue
+++ b/frontend/src/views/accounts/components/AccountCreateModal.vue
@@ -2,7 +2,7 @@
import type { useAccountOnboarding } from '../composables/useAccountOnboarding'
import type { AccountRow } from '../constants'
import { Openai, Xai } from '@boxicons/vue'
-import { Copy, Grid2X2, KeyRound, Upload } from '@lucide/vue'
+import { Copy, KeyRound, LayoutGrid, Upload } from '@lucide/vue'
import { useClipboard, useFileDialog } from '@vueuse/core'
import { computed, ref } from 'vue'
@@ -207,7 +207,7 @@ async function copyText(value: string, successText: string) {
:hide-footer="isChoosingProvider"
>
-
+
diff --git a/frontend/src/views/accounts/components/AccountProviderChooser.vue b/frontend/src/views/accounts/components/AccountProviderChooser.vue
index 2390bb682..173ce8838 100644
--- a/frontend/src/views/accounts/components/AccountProviderChooser.vue
+++ b/frontend/src/views/accounts/components/AccountProviderChooser.vue
@@ -1,6 +1,6 @@
diff --git a/frontend/src/views/accounts/components/AccountUsageWindow.vue b/frontend/src/views/accounts/components/AccountUsageWindow.vue
index 0bd0a45bf..ea4129fd5 100644
--- a/frontend/src/views/accounts/components/AccountUsageWindow.vue
+++ b/frontend/src/views/accounts/components/AccountUsageWindow.vue
@@ -136,6 +136,7 @@ const requestBars = computed(() => {
}
})
})
+const hasDailyRequests = computed(() => requestBars.value.some(bar => bar.requestCount > 0))
@@ -197,6 +198,7 @@ const requestBars = computed(() => {
{
/>
+ —