feat: 更新后端平台模块、Compute引擎、前端组件及构建产物

- 更新 backend 平台 API、platform_store、compute_gateway sync
- 更新 compute agent/engine/adapter 及 API
- 更新 Docker 部署配置(app/compute)
- 新增 frontend/src/utils/ 工具模块
- 新增 scripts/ops_diagnostics.py 运维诊断脚本
- 新增 docs/2026-07-23-development-summary.md 开发总结
- 重构 frontend/dist 构建产物(新 hash)
- 更新前端多个视图组件及 API 模块

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
wuyongtao
2026-07-23 19:32:42 +08:00
parent f04dc479bb
commit b28cfbc6fa
193 changed files with 2647 additions and 424 deletions

View File

@@ -48,6 +48,7 @@ const props = withDefaults(
const emit = defineEmits<{
create: []
refresh: []
expandChange: [row: T, expandedRows: T[]]
}>()
const router = useRouter()
@@ -143,6 +144,10 @@ function handleCreate() {
}
}
function handleExpandChange(row: T, expandedRows: T[] | boolean) {
emit('expandChange', row, Array.isArray(expandedRows) ? expandedRows : [])
}
// 数据变化时清空选中
watch(
() => props.data,
@@ -214,6 +219,7 @@ defineExpose({ handleDelete, clearSelection })
style="width: 100%"
:empty-text="emptyText"
@selection-change="handleSelectionChange"
@expand-change="handleExpandChange"
>
<el-table-column
v-if="multiSelect"

View File

@@ -1,33 +1,15 @@
<script setup lang="ts">
import { computed } from 'vue'
import { statusLabel, statusTagType } from '@/utils/status'
const props = defineProps<{
status?: string
}>()
/** 将任务/模型状态映射为 Element Plus tag 类型 */
const tagInfo = computed(() => {
const s = props.status || ''
switch (s) {
case 'running':
case 'ready':
case 'loaded':
return { text: s === 'ready' || s === 'loaded' ? '已就绪' : '运行中', type: 'success' as const }
case 'pending':
return { text: '等待中', type: 'info' as const }
case 'failed':
return { text: '失败', type: 'danger' as const }
case 'starting':
case 'loading':
return { text: '加载中', type: 'warning' as const }
case 'completed':
return { text: '已完成', type: 'success' as const }
case 'stopped':
return { text: '已停止', type: 'info' as const }
default:
return { text: s || '未知', type: 'info' as const }
}
})
const tagInfo = computed(() => ({
text: statusLabel(props.status),
type: statusTagType(props.status),
}))
</script>
<template>