mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-09 20:50:20 +08:00
Optimize health monitor database reads
This commit is contained in:
@@ -775,25 +775,26 @@ async fn build_provider_health_payload(
|
||||
.await
|
||||
.ok()
|
||||
.unwrap_or_default();
|
||||
let mut models = Vec::new();
|
||||
for row in model_breakdown
|
||||
let selected_model_rows = model_breakdown
|
||||
.iter()
|
||||
.filter(|row| !row.group_key.trim().is_empty())
|
||||
.take(per_provider_model_limit)
|
||||
{
|
||||
let events = state
|
||||
.list_usage_audits(&UsageAuditListQuery {
|
||||
created_from_unix_secs: Some(since_unix_secs),
|
||||
created_until_unix_secs: Some(now_unix_secs),
|
||||
provider_name: Some(provider.name.clone()),
|
||||
model: Some(row.group_key.clone()),
|
||||
limit: Some(per_model_event_limit),
|
||||
newest_first: true,
|
||||
..UsageAuditListQuery::default()
|
||||
})
|
||||
.await
|
||||
.ok()
|
||||
.unwrap_or_default();
|
||||
.collect::<Vec<_>>();
|
||||
let mut events_by_model = selected_model_rows
|
||||
.iter()
|
||||
.map(|row| (row.group_key.clone(), Vec::new()))
|
||||
.collect::<BTreeMap<_, _>>();
|
||||
for event in &provider_events {
|
||||
if let Some(events) = events_by_model.get_mut(&event.model) {
|
||||
if events.len() < per_model_event_limit {
|
||||
events.push(event.clone());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let mut models = Vec::new();
|
||||
for row in selected_model_rows {
|
||||
let events = events_by_model.remove(&row.group_key).unwrap_or_default();
|
||||
models.push(model_health_payload_from_row(
|
||||
row,
|
||||
&events,
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
class="mt-4"
|
||||
>
|
||||
<HealthMonitorCard
|
||||
v-if="visitedTabs.endpoint"
|
||||
title="端点健康监控"
|
||||
:is-admin="isAdminPage"
|
||||
:show-provider-info="isAdminPage"
|
||||
@@ -35,6 +36,7 @@
|
||||
class="mt-4"
|
||||
>
|
||||
<ModelHealthMonitorCard
|
||||
v-if="visitedTabs.model"
|
||||
title="模型健康监控"
|
||||
:is-admin="isAdminPage"
|
||||
:show-provider-info="isAdminPage"
|
||||
@@ -46,14 +48,17 @@
|
||||
value="provider"
|
||||
class="mt-4"
|
||||
>
|
||||
<ProviderHealthMonitorCard title="提供商健康监控" />
|
||||
<ProviderHealthMonitorCard
|
||||
v-if="visitedTabs.provider"
|
||||
title="提供商健康监控"
|
||||
/>
|
||||
</TabsContent>
|
||||
</Tabs>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed, ref } from 'vue'
|
||||
import { computed, ref, watch } from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import Tabs from '@/components/ui/tabs.vue'
|
||||
import TabsContent from '@/components/ui/tabs-content.vue'
|
||||
@@ -66,4 +71,12 @@ import ProviderHealthMonitorCard from '@/features/providers/components/ProviderH
|
||||
const route = useRoute()
|
||||
const isAdminPage = computed(() => route.path.startsWith('/admin'))
|
||||
const activeTab = ref('endpoint')
|
||||
const visitedTabs = ref<Record<string, boolean>>({ endpoint: true })
|
||||
|
||||
watch(activeTab, value => {
|
||||
visitedTabs.value = {
|
||||
...visitedTabs.value,
|
||||
[value]: true
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user