diff --git a/frontend/src/pages/DataEvaluation/Create/CreateTask.tsx b/frontend/src/pages/DataEvaluation/Create/CreateTask.tsx
index 4a52fb11..2d1784d1 100644
--- a/frontend/src/pages/DataEvaluation/Create/CreateTask.tsx
+++ b/frontend/src/pages/DataEvaluation/Create/CreateTask.tsx
@@ -1,4 +1,3 @@
-// TypeScript
import React, { useState, useEffect } from 'react';
import { Button, Form, Input, Select, message, Modal, Row, Col, Table, Space } from 'antd';
import { EyeOutlined } from '@ant-design/icons';
@@ -9,6 +8,7 @@ import { ModelI } from "@/pages/SettingsPage/ModelAccess.tsx";
import { createEvaluationTaskUsingPost } from "@/pages/DataEvaluation/evaluation.api.ts";
import { queryPromptTemplatesUsingGet } from "@/pages/DataEvaluation/evaluation.api.ts";
import PreviewPromptModal from "@/pages/DataEvaluation/Create/PreviewPrompt.tsx";
+import { EVAL_METHODS, TASK_TYPES } from "@/pages/DataEvaluation/evaluation.const.tsx";
interface Dataset {
id: string;
@@ -35,15 +35,6 @@ interface CreateTaskModalProps {
onSuccess: () => void;
}
-const TASK_TYPES = [
- { label: 'QA评估', value: 'QA' },
- { label: 'COT评估', value: 'COT' },
-];
-
-const EVAL_METHODS = [
- { label: '模型自动评估', value: 'AUTO' },
-];
-
const DEFAULT_EVAL_METHOD = 'AUTO';
const DEFAULT_TASK_TYPE = 'QA';
diff --git a/frontend/src/pages/DataEvaluation/Detail/components/Overview.tsx b/frontend/src/pages/DataEvaluation/Detail/components/Overview.tsx
index 29cb6396..ba69cbdc 100644
--- a/frontend/src/pages/DataEvaluation/Detail/components/Overview.tsx
+++ b/frontend/src/pages/DataEvaluation/Detail/components/Overview.tsx
@@ -1,17 +1,9 @@
import { useState } from 'react';
-import { Descriptions, Empty, DescriptionsProps, Table, Button, message } from 'antd';
-import { CheckCircle, XCircle, Clock as ClockIcon } from 'lucide-react';
+import { Descriptions, Empty, DescriptionsProps, Table, Button } from 'antd';
import { EyeOutlined } from '@ant-design/icons';
-import { EvaluationStatus } from '../../evaluation.model';
import PreviewPromptModal from "@/pages/DataEvaluation/Create/PreviewPrompt.tsx";
-
-const statusMap = {
- [EvaluationStatus.PENDING]: { color: 'blue', text: '待处理', icon: },
- [EvaluationStatus.RUNNING]: { color: 'processing', text: '进行中', icon: },
- [EvaluationStatus.COMPLETED]: { color: 'success', text: '已完成', icon: },
- [EvaluationStatus.FAILED]: { color: 'error', text: '失败', icon: },
- [EvaluationStatus.PAUSED]: { color: 'warning', text: '已暂停', icon: },
-};
+import { formatDateTime } from "@/utils/unit.ts";
+import { evalTaskStatusMap, getEvalMethod, getEvalType, getSource } from "@/pages/DataEvaluation/evaluation.const.tsx";
const Overview = ({ task }) => {
const [previewVisible, setPreviewVisible] = useState(false);
@@ -23,8 +15,6 @@ const Overview = ({ task }) => {
setPreviewVisible(true);
};
- const statusInfo = statusMap[task.status] || { color: 'default', text: '未知状态' };
-
// 基本信息
const items: DescriptionsProps["items"] = [
{
@@ -37,10 +27,30 @@ const Overview = ({ task }) => {
label: "名称",
children: task.name,
},
+ {
+ key: "evalType",
+ label: "评估类型",
+ children: getEvalType(task.taskType),
+ },
+ {
+ key: "evalMethod",
+ label: "评估方式",
+ children: getEvalMethod(task.evalMethod),
+ },
{
key: "status",
label: "状态",
- children: statusInfo.text || "未知",
+ children: evalTaskStatusMap[task.status]?.label || "未知",
+ },
+ {
+ key: "source",
+ label: "评估数据",
+ children: getSource(task.sourceType) + task.sourceName,
+ },
+ {
+ key: "evalConfig.modelName",
+ label: "模型",
+ children: task.evalConfig?.modelName || task.evalConfig?.modelId,
},
{
key: "createdBy",
@@ -50,12 +60,12 @@ const Overview = ({ task }) => {
{
key: "createdAt",
label: "创建时间",
- children: task.createdAt,
+ children: formatDateTime(task.createdAt),
},
{
key: "updatedAt",
label: "更新时间",
- children: task.updatedAt,
+ children: formatDateTime(task.updatedAt),
},
{
key: "description",
diff --git a/frontend/src/pages/DataEvaluation/evaluation.const.tsx b/frontend/src/pages/DataEvaluation/evaluation.const.tsx
index 369ed6f2..7c321781 100644
--- a/frontend/src/pages/DataEvaluation/evaluation.const.tsx
+++ b/frontend/src/pages/DataEvaluation/evaluation.const.tsx
@@ -1,7 +1,35 @@
-import { formatDate } from "@/utils/unit";
+import { formatDateTime } from "@/utils/unit";
import { BarChart3 } from "lucide-react";
import { EvaluationStatus, EvaluationTask } from "@/pages/DataEvaluation/evaluation.model.ts";
+export const TASK_TYPES = [
+ { label: 'QA评估', value: 'QA' },
+ { label: 'COT评估', value: 'COT' },
+];
+
+export const EVAL_METHODS = [
+ { label: '模型自动评估', value: 'AUTO' },
+];
+
+export const getEvalType = (type: string) => {
+ return TASK_TYPES.find((item) => item.value === type)?.label;
+};
+
+export const getEvalMethod = (type: string) => {
+ return EVAL_METHODS.find((item) => item.value === type)?.label;
+};
+
+export const getSource = (type: string) => {
+ switch (type) {
+ case "DATASET":
+ return "数据集 - ";
+ case "SYNTHESIS":
+ return "合成任务 - ";
+ default:
+ return "-";
+ }
+};
+
export const evalTaskStatusMap: Record<
string,
{
@@ -41,8 +69,8 @@ export function mapEvaluationTask(task: Partial): EvaluationTask
return {
...task,
status: evalTaskStatusMap[task.status || EvaluationStatus.PENDING],
- createdAt: formatDate(task.createdAt),
- updatedAt: formatDate(task.updatedAt),
+ createdAt: formatDateTime(task.createdAt),
+ updatedAt: formatDateTime(task.updatedAt),
description: task.description,
icon: ,
iconColor: task.ratio_method === "DATASET" ? "bg-blue-100" : "bg-green-100",
diff --git a/frontend/src/pages/RatioTask/ratio.const.tsx b/frontend/src/pages/RatioTask/ratio.const.tsx
index d18f2445..0e54e3d4 100644
--- a/frontend/src/pages/RatioTask/ratio.const.tsx
+++ b/frontend/src/pages/RatioTask/ratio.const.tsx
@@ -1,4 +1,4 @@
-import { formatDate } from "@/utils/unit";
+import { formatDateTime } from "@/utils/unit";
import { RatioTaskItem, RatioStatus } from "./ratio.model";
import { BarChart3, Calendar, Database } from "lucide-react";
import { Link } from "react-router";
@@ -43,8 +43,8 @@ export function mapRatioTask(task: Partial): RatioTaskItem {
return {
...task,
status: ratioTaskStatusMap[task.status || RatioStatus.PENDING],
- createdAt: formatDate(task.created_at),
- updatedAt: formatDate(task.updated_at),
+ createdAt: formatDateTime(task.created_at),
+ updatedAt: formatDateTime(task.updated_at),
description: task.description,
icon: ,
iconColor: task.ratio_method === "DATASET" ? "bg-blue-100" : "bg-green-100",
diff --git a/runtime/datamate-python/app/module/evaluation/interface/evaluation.py b/runtime/datamate-python/app/module/evaluation/interface/evaluation.py
index 1de58c91..a32a9014 100644
--- a/runtime/datamate-python/app/module/evaluation/interface/evaluation.py
+++ b/runtime/datamate-python/app/module/evaluation/interface/evaluation.py
@@ -24,6 +24,7 @@
from app.module.evaluation.service.prompt_template_service import PromptTemplateService
from app.module.evaluation.service.evaluation import EvaluationTaskService
from app.module.shared.schema.common import StandardResponse, TaskStatus
+from app.module.system.service.common_service import get_model_by_id
router = APIRouter(
prefix="",
@@ -79,6 +80,10 @@ async def create_evaluation_task(
if existing_task.scalar_one_or_none():
raise HTTPException(status_code=400, detail=f"Evaluation task with name '{request.name}' already exists")
+ model_config = await get_model_by_id(db, request.eval_config.model_id)
+ if not model_config:
+ raise HTTPException(status_code=400, detail=f"Model with id '{request.eval_config.model_id}' not found")
+
# 创建评估任务
task = EvaluationTask(
id=str(uuid.uuid4()),
@@ -90,7 +95,8 @@ async def create_evaluation_task(
source_name=request.source_name,
eval_prompt=request.eval_prompt,
eval_config=json.dumps({
- "model_id": request.eval_config.model_id,
+ "modelId": request.eval_config.model_id,
+ "modelName": model_config.model_name,
"dimensions": request.eval_config.dimensions,
}),
status=TaskStatus.PENDING.value,
diff --git a/runtime/datamate-python/app/module/evaluation/service/evaluation.py b/runtime/datamate-python/app/module/evaluation/service/evaluation.py
index acfd7866..a691028c 100644
--- a/runtime/datamate-python/app/module/evaluation/service/evaluation.py
+++ b/runtime/datamate-python/app/module/evaluation/service/evaluation.py
@@ -43,7 +43,7 @@ def get_eval_prompt(self, item: EvaluationItem) -> str:
async def execute(self):
eval_config = json.loads(self.task.eval_config)
- model_config = await get_model_by_id(self.db, eval_config.get("model_id"))
+ model_config = await get_model_by_id(self.db, eval_config.get("modelId"))
semaphore = asyncio.Semaphore(10)
files = (await self.db.execute(
select(EvaluationFile).where(EvaluationFile.task_id == self.task.id)