feat: 支持子类别配置和关键特性显示

- 类别数据结构新增 subcategories 字段
- 每个子类别可定义 key_features 和 feature_labels
- 前端模型页面添加子类别选择器
- 表格根据子类别动态显示关键特性列
- 后台管理支持编辑子类别配置(JSON格式)
- 预设了各类别的子类别配置(对话、代码、推理、视觉等)
This commit is contained in:
2026-04-28 00:16:55 +08:00
parent 961322f8ba
commit 685582b7e6
3 changed files with 428 additions and 18 deletions

View File

@@ -922,6 +922,13 @@
else if (key === 'images') {
try { data[key] = JSON.parse(value); } catch { data[key] = []; }
}
else if (key === 'subcategories') {
// 解析子类别JSON
try { data[key] = JSON.parse(value); } catch {
alert('子类别JSON格式错误请检查格式');
return;
}
}
else data[key] = value;
}
});
@@ -1096,6 +1103,9 @@
// 表单模板
function getCategoryForm(data = {}) {
const subcategories = data.subcategories || [];
const subcategoriesJson = JSON.stringify(subcategories, null, 2);
return `<form id="itemForm" class="space-y-4">
<div class="grid grid-cols-2 gap-4">
<div><label class="text-sm text-gray-600 mb-1 block">ID *</label><input type="text" name="id" value="${data.id || ''}" ${data.id ? 'readonly' : ''} required class="w-full px-3 py-2 border rounded-lg ${data.id ? 'bg-gray-100' : ''}"></div>
@@ -1116,6 +1126,24 @@
</select></div>
</div>
<div><label class="text-sm text-gray-600 mb-1 block">描述</label><textarea name="description" rows="2" class="w-full px-3 py-2 border rounded-lg">${data.description || ''}</textarea></div>
<!-- 子类别配置 -->
<div class="border-t pt-4">
<label class="text-sm text-gray-600 mb-2 block"><i class="ri-folder-line mr-1"></i>子类别配置JSON格式</label>
<div class="bg-blue-50 rounded-lg p-3 mb-2 text-xs text-blue-700">
<p class="mb-2">子类别配置示例:</p>
<pre class="bg-blue-100 p-2 rounded overflow-x-auto">[
{
"id": "chat",
"name": "对话模型",
"icon": "ri-chat-3-line",
"key_features": ["context_length", "mmlu"],
"feature_labels": {"context_length": "上下文", "mmlu": "MMLU"}
}
]</pre>
</div>
<textarea name="subcategories" rows="8" class="w-full px-3 py-2 border rounded-lg font-mono text-sm" placeholder='[]'>${subcategoriesJson}</textarea>
</div>
</form>`;
}