From 196cb0b037bda9a638291242770411e72fa07b0e Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sun, 18 Jan 2026 17:53:31 +0800 Subject: [PATCH] =?UTF-8?q?feat(data-annotation):=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E6=A0=87=E6=B3=A8=E4=BB=BB=E5=8A=A1=E5=90=8C=E6=AD=A5=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除 SyncOutlined 图标导入 - 移除 syncAnnotationTaskUsingPost API 调用 - 简化删除确认对话框内容,移除同步提示信息 - 删除 handleSync 和 handleBatchSync 同步处理函数 - 从操作菜单中移除同步选项 - 从批量操作按钮中移除批量同步功能 - 更新批量删除确认对话框内容 --- .../DataAnnotation/Home/DataAnnotation.tsx | 90 +------------------ 1 file changed, 2 insertions(+), 88 deletions(-) diff --git a/frontend/src/pages/DataAnnotation/Home/DataAnnotation.tsx b/frontend/src/pages/DataAnnotation/Home/DataAnnotation.tsx index 373ebc7..3aaa394 100644 --- a/frontend/src/pages/DataAnnotation/Home/DataAnnotation.tsx +++ b/frontend/src/pages/DataAnnotation/Home/DataAnnotation.tsx @@ -4,7 +4,6 @@ import { PlusOutlined, EditOutlined, DeleteOutlined, - SyncOutlined, DownloadOutlined, } from "@ant-design/icons"; import { useNavigate } from "react-router"; @@ -15,7 +14,6 @@ import useFetchData from "@/hooks/useFetchData"; import { deleteAnnotationTaskByIdUsingDelete, queryAnnotationTasksUsingGet, - syncAnnotationTaskUsingPost, queryAutoAnnotationTasksUsingGet, deleteAutoAnnotationTaskByIdUsingDelete, } from "../annotation.api"; @@ -106,12 +104,7 @@ export default function DataAnnotation() { const handleDelete = (task: AnnotationTask) => { Modal.confirm({ title: `确认删除标注任务「${task.name}」吗?`, - content: ( -
-
删除标注任务不会删除对应数据集。
-
如需保留当前标注结果,请在同步后再删除。
-
- ), + content: "删除标注任务不会删除对应数据集,但会删除该任务的所有标注结果。", okText: "删除", okType: "danger", cancelText: "取消", @@ -155,80 +148,13 @@ export default function DataAnnotation() { }); }; - const handleSync = (task: AnnotationTask, batchSize: number = 50) => { - Modal.confirm({ - title: `确认同步标注任务「${task.name}」吗?`, - content: ( -
-
标注工程中文件列表将与数据集保持一致,差异项将会被修正。
-
标注工程中的标签与数据集中标签将进行合并,冲突项将以最新一次内容为准。
-
- ), - okText: "同步", - cancelText: "取消", - onOk: async () => { - try { - await syncAnnotationTaskUsingPost({ id: task.id, batchSize }); - message.success("任务同步请求已发送"); - // optional: refresh list/status - fetchData(); - // clear selection for the task - setSelectedRowKeys((keys) => keys.filter((k) => k !== task.id)); - setSelectedRows((rows) => rows.filter((r) => r.id !== task.id)); - } catch (e) { - console.error(e); - message.error("同步失败,请稍后重试"); - } - }, - }); - }; - - const handleBatchSync = (batchSize: number = 50) => { - if (!selectedRows || selectedRows.length === 0) return; - const manualRows = selectedRows.filter((r) => r._kind !== "auto"); - if (manualRows.length === 0) { - message.warning("请选择手动标注任务进行同步"); - return; - } - Modal.confirm({ - title: `确认同步所选 ${manualRows.length} 个标注任务吗?`, - content: ( -
-
标注工程中文件列表将与数据集保持一致,差异项将会被修正。
-
标注工程中的标签与数据集中标签将进行合并,冲突项将以最新一次内容为准。
-
- ), - okText: "同步", - cancelText: "取消", - onOk: async () => { - try { - await Promise.all( - manualRows.map((r) => syncAnnotationTaskUsingPost({ id: r.id, batchSize })) - ); - message.success("批量同步请求已发送"); - fetchData(); - setSelectedRowKeys([]); - setSelectedRows([]); - } catch (e) { - console.error(e); - message.error("批量同步失败,请稍后重试"); - } - }, - }); - }; - const handleBatchDelete = () => { if (!selectedRows || selectedRows.length === 0) return; const manualRows = selectedRows.filter((r) => r._kind !== "auto"); const autoRows = selectedRows.filter((r) => r._kind === "auto"); Modal.confirm({ title: `确认删除所选 ${selectedRows.length} 个标注任务吗?`, - content: ( -
-
删除标注任务不会删除对应数据集。
-
如需保留当前标注结果,请在同步后再删除。
-
- ), + content: "删除标注任务不会删除对应数据集,但会删除这些任务的所有标注结果。", okText: "删除", okType: "danger", cancelText: "取消", @@ -270,12 +196,6 @@ export default function DataAnnotation() { icon: , onClick: handleExport, }, - { - key: "sync", - label: "同步", - icon: , - onClick: handleSync, - }, { key: "delete", label: "删除", @@ -501,12 +421,6 @@ export default function DataAnnotation() { {/* Right side: All action buttons */}
-