diff --git a/web/pages/main.html b/web/pages/main.html index 8eeb2b1..c59c6f0 100644 --- a/web/pages/main.html +++ b/web/pages/main.html @@ -443,7 +443,7 @@ columns: [ { title: '模型名称', key: 'name' }, { title: '训练方法', key: 'train_methods', render: (val) => val && val[0] ? val[0].name : '-' }, - { title: '模型路径', key: 'path', render: (val) => `${val}` }, + { title: '基座模型', key: 'base_model_path', render: (val) => `${val || '-'}` }, { title: '创建时间', key: 'create_time', render: (val) => val ? new Date(val).toLocaleString('zh-CN') : '-' } ], actions: ['view', 'delete'] @@ -3164,12 +3164,10 @@ document.body.style.overflow = ''; } - // 查看已训练模型详情 + // 查看已训练模型详情 - 跳转到推理页面 window.viewTrainedModel = function(name, method, path) { - const message = '
模型名称:' + name + '
' + - '训练方法:' + method + '
' + - '路径:' + path + '
'; - showMessage('模型详情', message, 'info'); + // 跳转到推理测试页面(main.html在pages目录下,所以直接用文件名) + window.location.href = `model-inference.html?model=${encodeURIComponent(name)}&method=${encodeURIComponent(method)}`; }; // 确认弹窗(两个按钮)- 使用 window 确保全局可访问 diff --git a/web/pages/model-compare-create.html b/web/pages/model-compare-create.html index 5cbb478..51fe07f 100644 --- a/web/pages/model-compare-create.html +++ b/web/pages/model-compare-create.html @@ -316,14 +316,46 @@ // 加载模型列表 async function loadModels() { try { - const response = await fetch(`${API_BASE}/model-manage`); - const result = await response.json(); - if (result.code === 0) { - allModels = result.data || []; - renderModels(); - } else { - showMessage('错误', result.message || '加载模型失败', 'error'); + // 并行加载数据库模型和已训练模型 + const [dbResponse, trainedResponse] = await Promise.all([ + fetch(`${API_BASE}/model-manage`), + fetch(`${API_BASE}/model-manage/trained-models`) + ]); + + const dbResult = await dbResponse.json(); + const trainedResult = await trainedResponse.json(); + + let dbModels = []; + let trainedModels = []; + + // 数据库模型 + if (dbResult.code === 0) { + dbModels = dbResult.data || []; } + + // 已训练模型 + if (trainedResult.code === 0) { + const trainedData = trainedResult.data?.models || []; + trainedData.forEach(model => { + if (model.train_methods && model.train_methods.length > 0) { + model.train_methods.forEach(method => { + trainedModels.push({ + id: `trained_${model.name}_${method.name}`.replace(/[^a-zA-Z0-9]/g, '_'), + name: `${model.name} (${method.name})`, + type: 'LLM', + source: 'trained', + model_path: model.path, + train_method: method.name + }); + }); + } + }); + } + + // 合并所有模型 + allModels = [...dbModels, ...trainedModels]; + console.log('[DEBUG] 数据库模型:', dbModels.length, '已训练模型:', trainedModels.length); + renderModels(); } catch (error) { console.error('加载模型失败:', error); document.getElementById('modelList').innerHTML = ` @@ -335,9 +367,14 @@ } } - // 渲染模型列表 + // 渲染模型列表 - 使用分栏显示数据库模型和已训练模型 function renderModels() { const container = document.getElementById('modelList'); + + // 分离数据库模型和已训练模型 + const dbModels = allModels.filter(m => m.source !== 'trained'); + const trainedModels = allModels.filter(m => m.source === 'trained'); + if (allModels.length === 0) { container.innerHTML = `${model.description || '暂无描述'}
-${model.description || '暂无描述'}
${model.description || '暂无描述'}
-