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 */}
-