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