From 3dd40350052b8e10efb7dd463e8b2f2ffa9d56cf Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sat, 7 Feb 2026 16:05:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E5=96=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=A0=87=E6=B3=A8=E5=AF=BC=E5=87=BA=E6=A0=BC=E5=BC=8F=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E6=80=A7=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 后端:添加 YOLO 格式对 TEXT 数据集的限制验证 - 后端:统一 COCO/YOLO 兼容性校验规则(仅允许图像类或目标检测类数据集) - 后端:修复 datasetType 字段传递,在任务列表响应中补充 dataset_type - 前端:在导出对话框中禁用 TEXT 数据集的 COCO/YOLO 选项 - 前端:添加 datasetType 和 labelingType 字段传递 - 前端:对齐前后端 COCO/YOLO 兼容性规则 - 前端:优化提示文案,明确说明格式适用范围 修改文件: - runtime/datamate-python/app/module/annotation/service/export.py - runtime/datamate-python/app/module/annotation/service/mapping.py - runtime/datamate-python/app/module/annotation/schema/mapping.py - frontend/src/pages/DataAnnotation/Home/ExportAnnotationDialog.tsx - frontend/src/pages/DataAnnotation/Home/DataAnnotation.tsx - frontend/src/pages/DataAnnotation/annotation.const.tsx --- .../DataAnnotation/Home/DataAnnotation.tsx | 2 + .../Home/ExportAnnotationDialog.tsx | 61 +++++++++++++++---- .../pages/DataAnnotation/annotation.const.tsx | 5 ++ .../app/module/annotation/schema/mapping.py | 1 + .../app/module/annotation/service/export.py | 10 +-- .../app/module/annotation/service/mapping.py | 13 +++- 6 files changed, 73 insertions(+), 19 deletions(-) diff --git a/frontend/src/pages/DataAnnotation/Home/DataAnnotation.tsx b/frontend/src/pages/DataAnnotation/Home/DataAnnotation.tsx index cb2eabd..9fb8a38 100644 --- a/frontend/src/pages/DataAnnotation/Home/DataAnnotation.tsx +++ b/frontend/src/pages/DataAnnotation/Home/DataAnnotation.tsx @@ -378,6 +378,8 @@ export default function DataAnnotation() { open={!!exportTask} projectId={exportTask?.id || ""} projectName={exportTask?.name || ""} + datasetType={exportTask?.datasetType} + labelingType={exportTask?.labelingType} onClose={() => setExportTask(null)} /> diff --git a/frontend/src/pages/DataAnnotation/Home/ExportAnnotationDialog.tsx b/frontend/src/pages/DataAnnotation/Home/ExportAnnotationDialog.tsx index e8658a2..238c1c0 100644 --- a/frontend/src/pages/DataAnnotation/Home/ExportAnnotationDialog.tsx +++ b/frontend/src/pages/DataAnnotation/Home/ExportAnnotationDialog.tsx @@ -11,7 +11,7 @@ import { message, Alert, } from "antd"; -import { FileTextOutlined, CheckCircleOutlined } from "@ant-design/icons"; +import { FileTextOutlined, CheckCircleOutlined, InfoCircleOutlined } from "@ant-design/icons"; import { getExportStatsUsingGet, downloadAnnotationsUsingGet, @@ -22,6 +22,8 @@ interface ExportAnnotationDialogProps { open: boolean; projectId: string; projectName: string; + datasetType?: string; + labelingType?: string; onClose: () => void; } @@ -57,6 +59,8 @@ export default function ExportAnnotationDialog({ open, projectId, projectName, + datasetType, + labelingType, onClose, }: ExportAnnotationDialogProps) { const [form] = Form.useForm(); @@ -67,6 +71,15 @@ export default function ExportAnnotationDialog({ annotatedFiles: number; } | null>(null); + const normalizedDatasetType = datasetType?.toUpperCase().replace(/-/g, "_") || ""; + const normalizedLabelingType = labelingType?.toUpperCase().replace(/-/g, "_") || ""; + const hasDatasetType = Boolean(normalizedDatasetType); + const isTextDataset = normalizedDatasetType === "TEXT"; + const isDetectionCompatible = + normalizedDatasetType === "IMAGE" || + normalizedDatasetType === "OBJECT_DETECTION" || + normalizedLabelingType === "OBJECT_DETECTION"; + // 加载导出统计信息 useEffect(() => { if (open && projectId) { @@ -176,20 +189,46 @@ export default function ExportAnnotationDialog({ rules={[{ required: true, message: "请选择导出格式" }]} >