1. 修改了评测页面的关联模型和数据集的bug

This commit is contained in:
2026-01-20 23:23:07 +08:00
parent c328a69b28
commit 542cde416f
4 changed files with 15059 additions and 7 deletions

File diff suppressed because one or more lines are too long

View File

@@ -434,6 +434,32 @@ def delete_model_deploy(id):
return jsonify({'code': 0, 'message': '删除成功'}) return jsonify({'code': 0, 'message': '删除成功'})
# ============ 模型管理接口 ============
@app.route('/api/model-manage', methods=['GET'])
def get_model_manage():
return jsonify({'code': 0, 'data': generic_get_all('model_manage')})
@app.route('/api/model-manage', methods=['POST'])
def create_model_manage():
data = request.json
new_id = generic_create('model_manage', data)
return jsonify({'code': 0, 'message': '创建成功', 'id': new_id})
@app.route('/api/model-manage/<int:id>', methods=['PUT'])
def update_model_manage(id):
data = request.json
generic_update('model_manage', id, data)
return jsonify({'code': 0, 'message': '更新成功'})
@app.route('/api/model-manage/<int:id>', methods=['DELETE'])
def delete_model_manage(id):
generic_delete('model_manage', id)
return jsonify({'code': 0, 'message': '删除成功'})
# ============ 模型对比接口 ============ # ============ 模型对比接口 ============
@app.route('/api/model-compare', methods=['GET']) @app.route('/api/model-compare', methods=['GET'])
def get_model_compare(): def get_model_compare():

View File

@@ -363,6 +363,7 @@
const textMap = { const textMap = {
'train': '训练数据', 'train': '训练数据',
'test': '测试数据', 'test': '测试数据',
'eval': '评测数据',
'val': '验证数据', 'val': '验证数据',
'other': '其他' 'other': '其他'
}; };

View File

@@ -227,18 +227,18 @@
</label> </label>
<div class="flex items-center space-x-6"> <div class="flex items-center space-x-6">
<label class="flex items-center cursor-pointer"> <label class="flex items-center cursor-pointer">
<input type="radio" name="data_source" value="dataset" class="mr-2" onchange="toggleDataSource('dataset')"> <input type="radio" name="data_source" value="dataset" checked class="mr-2" onchange="toggleDataSource('dataset')">
<span class="text-sm text-gray-700">评测数据集</span> <span class="text-sm text-gray-700">评测数据集</span>
</label> </label>
<label class="flex items-center cursor-pointer"> <label class="flex items-center cursor-pointer">
<input type="radio" name="data_source" value="inference" checked class="mr-2" onchange="toggleDataSource('inference')"> <input type="radio" name="data_source" value="inference" class="mr-2" onchange="toggleDataSource('inference')">
<span class="text-sm text-gray-700">推理结果集</span> <span class="text-sm text-gray-700">推理结果集</span>
</label> </label>
</div> </div>
</div> </div>
<!-- 推理结果集上传 --> <!-- 推理结果集上传 -->
<div id="inferenceUpload" class="border-2 border-dashed border-gray-200 rounded-lg p-8 text-center hover:border-primary/50 transition-colors cursor-pointer"> <div id="inferenceUpload" class="hidden border-2 border-dashed border-gray-200 rounded-lg p-8 text-center hover:border-primary/50 transition-colors cursor-pointer">
<i class="fa fa-cloud-upload text-gray-400 text-xl mb-2"></i> <i class="fa fa-cloud-upload text-gray-400 text-xl mb-2"></i>
<p class="text-gray-700 text-sm">点击或拖拽上传推理结果集</p> <p class="text-gray-700 text-sm">点击或拖拽上传推理结果集</p>
<p class="text-xs text-gray-400 mt-1">支持 .xls .xlsx 格式不超过2MB</p> <p class="text-xs text-gray-400 mt-1">支持 .xls .xlsx 格式不超过2MB</p>
@@ -248,13 +248,13 @@
</div> </div>
<!-- 评测数据集选择 --> <!-- 评测数据集选择 -->
<div id="datasetSelect" class="hidden mb-6"> <div id="datasetSelect" class="mb-6">
<h3 class="text-sm font-semibold text-gray-700 mb-4 pb-2 border-b border-gray-100">评测数据集</h3> <h3 class="text-sm font-semibold text-gray-700 mb-4 pb-2 border-b border-gray-100">评测数据集</h3>
<div class="flex items-center"> <div class="flex items-center">
<select name="dataset_id" class="form-select flex-1 max-w-md"> <select name="dataset_id" id="testDatasetSelect" class="form-select flex-1 max-w-md">
<option value="">请选择评测数据集</option> <option value="">请选择评测数据集</option>
</select> </select>
<button type="button" class="ml-2 text-primary text-sm flex items-center hover:text-primary/80"> <button type="button" class="ml-2 text-primary text-sm flex items-center hover:text-primary/80" onclick="loadTestDatasets()">
<i class="fa fa-refresh"></i> <i class="fa fa-refresh"></i>
</button> </button>
<button type="button" class="ml-3 bg-white border border-primary text-primary rounded px-3 py-1.5 text-sm hover:bg-primary/5" onclick="window.location.href='dataset-create.html'"> <button type="button" class="ml-3 bg-white border border-primary text-primary rounded px-3 py-1.5 text-sm hover:bg-primary/5" onclick="window.location.href='dataset-create.html'">
@@ -337,9 +337,15 @@
// 初始化评测方式样式 // 初始化评测方式样式
updateEvalTypeStyle('custom'); updateEvalTypeStyle('custom');
// 初始化数据来源显示
toggleDataSource('dataset');
// 加载模型列表 // 加载模型列表
loadModels(); loadModels();
// 加载评测数据集
loadTestDatasets();
// 设置侧边栏当前页高亮 // 设置侧边栏当前页高亮
const currentPage = 'model-eval'; const currentPage = 'model-eval';
document.querySelectorAll('.nav-link').forEach(link => { document.querySelectorAll('.nav-link').forEach(link => {
@@ -419,7 +425,7 @@
// 加载模型列表 // 加载模型列表
async function loadModels() { async function loadModels() {
try { try {
const response = await fetch(`${API_BASE}/my-models`); const response = await fetch(`${API_BASE}/model-manage`);
const result = await response.json(); const result = await response.json();
if (result.code === 0) { if (result.code === 0) {
const select = document.getElementById('modelSelect'); const select = document.getElementById('modelSelect');
@@ -431,6 +437,23 @@
} }
} }
// 加载评测数据集type="eval"
async function loadTestDatasets() {
try {
const response = await fetch(`${API_BASE}/dataset-manage`);
const result = await response.json();
if (result.code === 0) {
// 筛选类型为 eval 的数据集
const evalDatasets = (result.data || []).filter(d => d.type === 'eval');
const select = document.getElementById('testDatasetSelect');
select.innerHTML = '<option value="">请选择评测数据集</option>' +
evalDatasets.map(d => `<option value="${d.id}">${d.name}</option>`).join('');
}
} catch (e) {
console.error('加载评测数据集失败:', e);
}
}
// 提交表单 // 提交表单
async function submitForm() { async function submitForm() {
const form = document.getElementById('evalForm'); const form = document.getElementById('evalForm');