Skip to content

Commit 6e3b58d

Browse files
committed
Merge branch 'refs/heads/main' into dev_pgsql
# Conflicts: # runtime/datamate-python/app/module/annotation/service/sync.py
2 parents cf5d130 + 6b7e280 commit 6e3b58d

13 files changed

Lines changed: 2061 additions & 518 deletions

File tree

frontend/package-lock.json

Lines changed: 23 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"preview": "vite preview"
1212
},
1313
"dependencies": {
14-
"@reduxjs/toolkit": "^2.11.0",
14+
"@reduxjs/toolkit": "^2.11.2",
1515
"@xyflow/react": "^12.8.3",
1616
"antd": "^5.27.0",
1717
"jssha": "^3.3.1",

frontend/src/components/DetailHeader.tsx

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,32 +49,34 @@ function DetailHeader<T>({
4949
<div className="flex items-start justify-between">
5050
<div className="flex items-start gap-4 flex-1">
5151
<div
52-
className={`w-16 h-16 text-white rounded-lg flex-center shadow-lg ${
52+
className={`w-16 h-16 text-white rounded-lg flex items-center justify-center shadow-lg ${
5353
(data as any)?.iconColor
5454
? ""
5555
: "bg-gradient-to-br from-sky-300 to-blue-500 text-white"
5656
}`}
5757
style={(data as any)?.iconColor ? { backgroundColor: (data as any).iconColor } : undefined}
5858
>
59-
{<div className="w-[2.8rem] h-[2.8rem] text-gray-50">{(data as any)?.icon}</div> || (
59+
{(data as any)?.icon ? (
60+
<div className="w-[2.8rem] h-[2.8rem] text-gray-50 flex items-center justify-center">{(data as any).icon}</div>
61+
) : (
6062
<Database className="w-8 h-8 text-white" />
6163
)}
6264
</div>
6365
<div className="flex-1">
6466
<div className="flex items-center gap-3 mb-2">
65-
<h1 className="text-lg font-bold text-gray-900">{data?.name}</h1>
66-
{data?.status && (
67-
<Tag color={data.status?.color}>
67+
<h1 className="text-lg font-bold text-gray-900">{(data as any)?.name}</h1>
68+
{(data as any)?.status && (
69+
<Tag color={(data as any).status?.color}>
6870
<div className="flex items-center gap-2 text-xs">
69-
{data.status?.icon && <span>{data.status?.icon}</span>}
70-
<span>{data.status?.label}</span>
71+
{(data as any).status?.icon && <span>{(data as any).status?.icon}</span>}
72+
<span>{(data as any).status?.label}</span>
7173
</div>
7274
</Tag>
7375
)}
7476
</div>
75-
{data?.tags && (
77+
{(data as any)?.tags && (
7678
<div className="flex flex-wrap mb-2">
77-
{data?.tags?.map((tag) => (
79+
{(data as any)?.tags?.map((tag: any) => (
7880
<Tag key={tag.id} className="mr-1">
7981
{tag.name}
8082
</Tag>
@@ -89,9 +91,9 @@ function DetailHeader<T>({
8991
)}
9092
</div>
9193
)}
92-
<p className="text-gray-700 mb-4">{data?.description}</p>
94+
<p className="text-gray-700 mb-4">{(data as any)?.description}</p>
9395
<div className="flex items-center gap-6 text-sm">
94-
{statistics.map((stat) => (
96+
{statistics.map((stat: any) => (
9597
<div key={stat.key} className="flex items-center gap-1">
9698
{stat.icon}
9799
<span>{stat.value}</span>
@@ -101,7 +103,7 @@ function DetailHeader<T>({
101103
</div>
102104
</div>
103105
<div className="flex items-center gap-2">
104-
{operations.map((op) => {
106+
{operations.map((op: any) => {
105107
if (op.isDropdown) {
106108
return (
107109
<ActionDropdown

frontend/src/components/business/DatasetFileTransfer.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ const DatasetFileTransfer: React.FC<DatasetFileTransferProps> = ({
5151
selectedFilesMap,
5252
onSelectedFilesChange,
5353
onDatasetSelect,
54-
datasetTypeFilter = DatasetType.TEXT,
54+
datasetTypeFilter,
5555
...props
5656
}) => {
5757
const [datasets, setDatasets] = React.useState<Dataset[]>([]);
@@ -85,6 +85,7 @@ const DatasetFileTransfer: React.FC<DatasetFileTransferProps> = ({
8585
page: datasetPagination.current,
8686
size: datasetPagination.pageSize,
8787
keyword: datasetSearch,
88+
// 仅在显式传入过滤类型时才按类型过滤;否则后端返回所有类型
8889
type: datasetTypeFilter,
8990
});
9091
setDatasets(data.content.map(mapDataset) || []);

frontend/src/pages/DataAnnotation/Create/components/CreateAnnotationTaskDialog.tsx

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -183,16 +183,8 @@ export default function CreateAnnotationTask({
183183
// 手动标注也支持跨数据集、精确到文件的选择
184184
const selectedFiles = Object.values(selectedFilesMap) as any[];
185185

186-
const imageExtensions = [".jpg", ".jpeg", ".png", ".bmp", ".gif", ".tiff", ".webp"];
187-
const imageFileIds = selectedFiles
188-
.filter((file) => {
189-
const ext = file.fileName?.toLowerCase().match(/\.[^.]+$/)?.[0] || "";
190-
return imageExtensions.includes(ext);
191-
})
192-
.map((file) => file.id);
193-
194-
if (imageFileIds.length === 0) {
195-
message?.error?.("请至少选择一个图像文件");
186+
if (selectedFiles.length === 0) {
187+
message?.error?.("请至少选择一个文件");
196188
setSubmitting(false);
197189
return;
198190
}
@@ -213,7 +205,7 @@ export default function CreateAnnotationTask({
213205
description: values.description,
214206
datasetId: effectiveDatasetId,
215207
templateId: values.templateId,
216-
fileIds: imageFileIds,
208+
fileIds: selectedFiles.map((file) => file.id),
217209
};
218210

219211
await createAnnotationTaskUsingPost(requestData);
@@ -326,8 +318,8 @@ export default function CreateAnnotationTask({
326318
label: "手动标注",
327319
children: (
328320
<Form form={manualForm} layout="vertical">
329-
{/* 选择数据集和图像文件(支持多数据集、多文件) */}
330-
<Form.Item label="选择数据集和图像文件" required>
321+
{/* 选择数据集和文件(支持多数据集、多文件) */}
322+
<Form.Item label="选择数据集和文件" required>
331323
<DatasetFileTransfer
332324
open
333325
selectedFilesMap={selectedFilesMap}
@@ -346,12 +338,11 @@ export default function CreateAnnotationTask({
346338
manualForm.setFieldsValue({ name: defaultName });
347339
}
348340
}}
349-
datasetTypeFilter={DatasetType.IMAGE}
350341
/>
351342
{selectedDataset && (
352343
<div className="mt-2 p-2 bg-blue-50 rounded border border-blue-200 text-xs">
353344
当前数据集:<span className="font-medium">{selectedDataset.name}</span> - 已选择
354-
<span className="font-medium text-blue-600"> {imageFileCount} </span>个图像文件
345+
<span className="font-medium text-blue-600"> {Object.keys(selectedFilesMap).length} </span>个文件
355346
</div>
356347
)}
357348
</Form.Item>

frontend/src/pages/KnowledgeBase/Detail/KnowledgeBaseDetail.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,11 @@ const KnowledgeBaseDetailPage: React.FC = () => {
170170
width: 200,
171171
ellipsis: true,
172172
fixed: "left" as const,
173+
render: (_: unknown, file: KBFile) => (
174+
<a onClick={() => navigate(`/data/knowledge-base/file-detail/${file.id}?knowledgeBaseId=${knowledgeBase?.id || ''}&fileName=${encodeURIComponent(file.name || file.fileName || '')}`)}>
175+
{file.name}
176+
</a>
177+
)
173178
},
174179
{
175180
title: "状态",

0 commit comments

Comments
 (0)