Skip to content

Commit 30712d7

Browse files
authored
Merge branch 'ModelEngine-Group:main' into main
2 parents 95ab510 + 31c4966 commit 30712d7

File tree

15 files changed

+358
-41
lines changed

15 files changed

+358
-41
lines changed

Makefile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,14 @@ download:
464464
exit 1; \
465465
fi
466466

467+
DEER_FLOW_IMAGES := \
468+
deer-flow-backend \
469+
deer-flow-frontend
470+
471+
.PHONY: download-deer-flow
472+
download-deer-flow:
473+
$(MAKE) download DOWNLOAD_IMAGES="$(DEER_FLOW_IMAGES)"
474+
467475
# Load all downloaded images from dist/ directory
468476
.PHONY: load-images
469477
load-images:

backend/services/data-management-service/src/main/java/com/datamate/datamanagement/application/DatasetApplicationService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.baomidou.mybatisplus.core.metadata.IPage;
44
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
55
import com.datamate.common.domain.utils.ChunksSaver;
6+
import com.datamate.common.setting.application.SysParamApplicationService;
67
import com.datamate.datamanagement.interfaces.dto.*;
78
import com.datamate.common.infrastructure.exception.BusinessAssert;
89
import com.datamate.common.interfaces.PagedResponse;
@@ -21,7 +22,6 @@
2122
import lombok.extern.slf4j.Slf4j;
2223
import org.apache.commons.collections4.CollectionUtils;
2324
import org.springframework.beans.factory.annotation.Value;
24-
import org.springframework.data.redis.core.StringRedisTemplate;
2525
import org.springframework.scheduling.annotation.Async;
2626
import org.springframework.stereotype.Service;
2727
import org.springframework.transaction.annotation.Transactional;
@@ -49,7 +49,7 @@ public class DatasetApplicationService {
4949
private final DatasetFileRepository datasetFileRepository;
5050
private final CollectionTaskClient collectionTaskClient;
5151
private final DatasetFileApplicationService datasetFileApplicationService;
52-
private final StringRedisTemplate redisTemplate;
52+
private final SysParamApplicationService sysParamService;
5353

5454
@Value("${datamate.data-management.base-path:/dataset}")
5555
private String datasetBasePath;
@@ -80,7 +80,7 @@ public Dataset createDataset(CreateDatasetRequest createDatasetRequest) {
8080
}
8181

8282
public String getDatasetPvcName() {
83-
return redisTemplate.opsForValue().get(DATASET_PVC_NAME);
83+
return sysParamService.getParamByKey(DATASET_PVC_NAME);
8484
}
8585

8686
public Dataset updateDataset(String datasetId, UpdateDatasetRequest updateDatasetRequest) {

backend/services/main-application/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@
161161
<artifactId>spring-boot-maven-plugin</artifactId>
162162
<version>${spring-boot.version}</version>
163163
<configuration>
164-
<finalName>data-mate</finalName>
164+
<finalName>datamate</finalName>
165165
<mainClass>com.datamate.main.DataMateApplication</mainClass>
166166
</configuration>
167167
<executions>

backend/shared/domain-common/src/main/java/com/datamate/common/setting/application/SysParamApplicationService.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
import com.datamate.common.infrastructure.exception.SystemErrorCode;
55
import com.datamate.common.setting.domain.entity.SysParam;
66
import com.datamate.common.setting.domain.repository.SysParamRepository;
7+
import com.datamate.common.setting.infrastructure.client.RedisClient;
78
import jakarta.annotation.PostConstruct;
89
import lombok.RequiredArgsConstructor;
910
import lombok.extern.slf4j.Slf4j;
10-
import org.springframework.data.redis.core.StringRedisTemplate;
1111
import org.springframework.stereotype.Service;
1212

1313
import java.util.Comparator;
@@ -24,7 +24,7 @@
2424
@RequiredArgsConstructor
2525
public class SysParamApplicationService {
2626
private final SysParamRepository sysParamRepository;
27-
private final StringRedisTemplate redisTemplate;
27+
private final RedisClient redisClient;
2828

2929
/**
3030
* 列表查询系统参数
@@ -48,14 +48,25 @@ public void updateParamValueById(String paramId, String paramValue) {
4848
BusinessAssert.notNull(sysParam, SystemErrorCode.RESOURCE_NOT_FOUND);
4949
sysParam.setParamValue(paramValue);
5050
sysParamRepository.updateById(sysParam);
51-
redisTemplate.opsForValue().set(sysParam.getParamKey(), paramValue);
51+
redisClient.setParam(sysParam.getId(), paramValue);
5252
}
5353

54-
public void deleteParamById(String paramId) {
55-
SysParam sysParam = sysParamRepository.getById(paramId);
54+
public void deleteParamById(String paramKey) {
55+
SysParam sysParam = sysParamRepository.getById(paramKey);
5656
BusinessAssert.notNull(sysParam, SystemErrorCode.RESOURCE_NOT_FOUND);
57-
sysParamRepository.removeById(paramId);
58-
redisTemplate.delete(sysParam.getParamKey());
57+
sysParamRepository.removeById(paramKey);
58+
redisClient.delParam(sysParam.getId());
59+
}
60+
61+
public String getParamByKey(String paramId) {
62+
String value = redisClient.getParam(paramId);
63+
if (value == null) {
64+
SysParam sysParam = sysParamRepository.getById(paramId);
65+
if (sysParam != null) {
66+
value = sysParam.getParamValue();
67+
}
68+
}
69+
return value;
5970
}
6071

6172
/**
@@ -65,7 +76,7 @@ public void deleteParamById(String paramId) {
6576
public void init() {
6677
try {
6778
List<SysParam> sysParams = sysParamRepository.list();
68-
sysParams.forEach(sysParam -> redisTemplate.opsForValue().set(sysParam.getParamKey(), sysParam.getParamValue()));
79+
sysParams.forEach(sysParam -> redisClient.setParam(sysParam.getId(), sysParam.getParamValue()));
6980
} catch (Exception e) {
7081
log.error("Init sys params to redis error", e);
7182
}

backend/shared/domain-common/src/main/java/com/datamate/common/setting/domain/entity/SysParam.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,6 @@
1515
@Getter
1616
@TableName("t_sys_param")
1717
public class SysParam extends BaseEntity<String> {
18-
/**
19-
* 设置项键(唯一)
20-
*/
21-
private String paramKey;
22-
2318
/**
2419
* 设置项值
2520
*/
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.datamate.common.setting.infrastructure.client;
2+
3+
import com.datamate.common.setting.infrastructure.utils.FunctionUtil;
4+
import lombok.AllArgsConstructor;
5+
import lombok.extern.slf4j.Slf4j;
6+
import org.springframework.data.redis.core.StringRedisTemplate;
7+
import org.springframework.stereotype.Component;
8+
9+
@Slf4j
10+
@Component
11+
@AllArgsConstructor
12+
public class RedisClient {
13+
private final StringRedisTemplate redisTemplate;
14+
15+
public void setParam(String key, String value) {
16+
FunctionUtil.doWithoutThrow((k, v) -> redisTemplate.opsForValue().set(k, v), key, value);
17+
}
18+
19+
public String getParam(String key) {
20+
return FunctionUtil.getWithoutThrow((k) -> redisTemplate.opsForValue().get(k), key);
21+
}
22+
23+
public void delParam(String key) {
24+
FunctionUtil.doWithoutThrow(redisTemplate::delete, key);
25+
}
26+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.datamate.common.setting.infrastructure.utils;
2+
3+
import lombok.extern.slf4j.Slf4j;
4+
5+
import java.util.function.BiConsumer;
6+
import java.util.function.Consumer;
7+
import java.util.function.Function;
8+
9+
@Slf4j
10+
public class FunctionUtil {
11+
public static <T, R> R getWithoutThrow(Function<T, R> action, T key) {
12+
try {
13+
return action.apply(key);
14+
} catch (Exception e) {
15+
log.warn(e.getMessage());
16+
return null;
17+
}
18+
}
19+
20+
public static <T> void doWithoutThrow(Consumer<T> action, T key) {
21+
try {
22+
action.accept(key);
23+
} catch (Exception e) {
24+
log.warn(e.getMessage());
25+
}
26+
}
27+
28+
public static <T, R> void doWithoutThrow(BiConsumer<T, R> action, T t, R r) {
29+
try {
30+
action.accept(t, r);
31+
} catch (Exception e) {
32+
log.warn(e.getMessage());
33+
}
34+
}
35+
}

frontend/src/pages/SettingsPage/SystemConfig.tsx

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
import { Divider, Input, Select, Switch, Button, Table, Spin } from "antd";
1+
import { Input, Select, Switch, Button, Table, Spin } from "antd";
22
import { useEffect, useState } from "react";
33
import { getSysParamList, updateSysParamValue } from './settings.apis';
44

55
interface SystemParam {
66
id: string;
7-
paramKey: string;
87
paramValue: string;
98
description: string;
109
isEnabled: boolean;
@@ -120,10 +119,9 @@ export default function SystemConfig() {
120119
const columns = [
121120
{
122121
title: "参数名",
123-
dataIndex: "paramKey",
124-
key: "paramKey",
122+
dataIndex: "id",
123+
key: "id",
125124
width: 180,
126-
127125
},
128126
{
129127
title: "参数值",

frontend/src/pages/SynthesisTask/components/SynthesisTaskTab.tsx

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ import { formatDateTime } from "@/utils/unit";
1616
import {
1717
querySynthesisTasksUsingGet,
1818
deleteSynthesisTaskByIdUsingDelete,
19+
archiveSynthesisTaskToDatasetUsingPost,
1920
} from "@/pages/SynthesisTask/synthesis-api";
21+
import { createDatasetUsingPost } from "@/pages/DataManagement/dataset.api";
2022

2123
interface SynthesisTask {
2224
id: string;
@@ -183,6 +185,23 @@ export default function SynthesisTaskTab() {
183185
icon={<EyeOutlined />}
184186
/>
185187
</Tooltip>
188+
<Tooltip title="归档到数据集">
189+
<Button
190+
type="text"
191+
className="hover:bg-green-50 p-1 h-7 w-7"
192+
onClick={() => {
193+
Modal.confirm({
194+
title: "确认归档该合成任务?",
195+
content: `任务名称:${task.name}`,
196+
okText: "归档",
197+
cancelText: "取消",
198+
onOk: () => handleArchiveTask(task),
199+
});
200+
}}
201+
>
202+
归档
203+
</Button>
204+
</Tooltip>
186205
<Tooltip title="删除任务">
187206
<Button
188207
danger
@@ -191,7 +210,7 @@ export default function SynthesisTaskTab() {
191210
icon={<DeleteOutlined />}
192211
onClick={() => {
193212
Modal.confirm({
194-
title: `确认删除任务`,
213+
title: `确认删除任务?`,
195214
content: `任务名:${task.name}`,
196215
okText: "删除",
197216
okType: "danger",
@@ -214,6 +233,37 @@ export default function SynthesisTaskTab() {
214233
},
215234
];
216235

236+
const handleArchiveTask = async (task: SynthesisTask) => {
237+
try {
238+
// 1. 创建目标数据集(使用简单的默认命名 + 随机后缀,可后续扩展为弹窗自定义)
239+
const randomSuffix = Math.random().toString(36).slice(2, 8);
240+
const datasetReq = {
241+
name: `${task.name}-合成数据留用${randomSuffix}`,
242+
description: `由合成任务 ${task.id} 留用生成`,
243+
datasetType: "TEXT",
244+
category: "SYNTHESIS",
245+
format: "JSONL",
246+
status: "DRAFT",
247+
} as any;
248+
const datasetRes = await createDatasetUsingPost(datasetReq);
249+
const datasetId = datasetRes?.data?.id;
250+
if (!datasetId) {
251+
message.error("创建数据集失败");
252+
return;
253+
}
254+
255+
// 2. 调用后端归档接口,将合成数据写入该数据集
256+
await archiveSynthesisTaskToDatasetUsingPost(task.id, datasetId);
257+
258+
message.success("归档成功");
259+
// 3. 可选:跳转到数据集详情页
260+
navigate(`/data/management/detail/${datasetId}`);
261+
} catch (e) {
262+
console.error(e);
263+
message.error("归档失败");
264+
}
265+
};
266+
217267
return (
218268
<div className="space-y-4">
219269
{/* 搜索和筛选 */}

frontend/src/pages/SynthesisTask/synthesis-api.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,8 @@ export function querySynthesisDataByChunkUsingGet(chunkId: string) {
4545
export function getPromptByTypeUsingGet(synthType: string) {
4646
return get(`/api/synthesis/gen/prompt`, { synth_type: synthType });
4747
}
48+
49+
// 将合成任务数据归档到已存在的数据集中
50+
export function archiveSynthesisTaskToDatasetUsingPost(taskId: string, datasetId: string) {
51+
return post(`/api/synthesis/gen/task/${taskId}/export-dataset/${datasetId}`);
52+
}

0 commit comments

Comments
 (0)