Skip to content

Commit 31b07b9

Browse files
authored
Feat/data management param (#371)
* fix: fix paging issue * feature: add reasonable parameter verification to data management
1 parent 0092e87 commit 31b07b9

22 files changed

+1972
-1033
lines changed

backend/openapi/specs/data-management.yaml

Lines changed: 1461 additions & 890 deletions
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,87 @@
1-
package com.datamate.datamanagement.infrastructure.exception;
2-
3-
import com.datamate.common.infrastructure.exception.ErrorCode;
4-
import lombok.AllArgsConstructor;
5-
import lombok.Getter;
6-
7-
/**
8-
* 数据管理模块错误码
9-
*
10-
* @author dallas
11-
* @since 2025-10-20
12-
*/
13-
@Getter
14-
@AllArgsConstructor
15-
public enum DataManagementErrorCode implements ErrorCode {
16-
/**
17-
* 数据集不存在
18-
*/
19-
DATASET_NOT_FOUND("data_management.0001", "数据集不存在"),
20-
/**
21-
* 数据集已存在
22-
*/
23-
DATASET_ALREADY_EXISTS("data_management.0002", "数据集已存在"),
24-
/**
25-
* 数据集状态错误
26-
*/
27-
DATASET_STATUS_ERROR("data_management.0003", "数据集状态错误"),
28-
/**
29-
* 数据集标签不存在
30-
*/
31-
DATASET_TAG_NOT_FOUND("data_management.0004", "数据集标签不存在"),
32-
/**
33-
* 数据集标签已存在
34-
*/
35-
DATASET_TAG_ALREADY_EXISTS("data_management.0005", "数据集标签已存在"),
36-
/**
37-
* 数据集文件已存在
38-
*/
39-
DATASET_FILE_ALREADY_EXISTS("data_management.0006", "数据集文件已存在"),
40-
/**
41-
* 目录不存在
42-
*/
43-
DIRECTORY_NOT_FOUND("data_management.0007", "目录不存在");
44-
45-
private final String code;
46-
private final String message;
47-
}
1+
package com.datamate.datamanagement.infrastructure.exception;
2+
3+
import com.datamate.common.infrastructure.exception.ErrorCode;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Getter;
6+
7+
/**
8+
* 数据管理模块错误码
9+
*
10+
* @author dallas
11+
* @since 2025-10-20
12+
*/
13+
@Getter
14+
@AllArgsConstructor
15+
public enum DataManagementErrorCode implements ErrorCode {
16+
/**
17+
* 数据集不存在
18+
*/
19+
DATASET_NOT_FOUND("data_management.0001", "数据集不存在"),
20+
/**
21+
* 数据集已存在
22+
*/
23+
DATASET_ALREADY_EXISTS("data_management.0002", "数据集已存在"),
24+
/**
25+
* 数据集状态错误
26+
*/
27+
DATASET_STATUS_ERROR("data_management.0003", "数据集状态错误"),
28+
/**
29+
* 数据集标签不存在
30+
*/
31+
DATASET_TAG_NOT_FOUND("data_management.0004", "数据集标签不存在"),
32+
/**
33+
* 数据集标签已存在
34+
*/
35+
DATASET_TAG_ALREADY_EXISTS("data_management.0005", "数据集标签已存在"),
36+
/**
37+
* 数据集文件已存在
38+
*/
39+
DATASET_FILE_ALREADY_EXISTS("data_management.0006", "数据集文件已存在"),
40+
/**
41+
* 目录不存在
42+
*/
43+
DIRECTORY_NOT_FOUND("data_management.0007", "目录不存在"),
44+
/**
45+
* 数据集名称长度不能超过255个字符
46+
*/
47+
DATASET_NAME_TOO_LONG("data_management.0008", "数据集名称长度不能超过255个字符"),
48+
/**
49+
* 数据集类型不合法
50+
*/
51+
DATASET_TYPE_INVALID("data_management.0009", "数据集类型不合法"),
52+
/**
53+
* 数据集状态不合法
54+
*/
55+
DATASET_STATUS_INVALID("data_management.0010", "数据集状态不合法"),
56+
/**
57+
* 标签名称长度不能超过100个字符
58+
*/
59+
TAG_NAME_TOO_LONG("data_management.0011", "标签名称长度不能超过100个字符"),
60+
/**
61+
* 标签名称已存在
62+
*/
63+
TAG_NAME_DUPLICATE("data_management.0012", "标签名称已存在"),
64+
/**
65+
* 标签颜色格式不正确,应为十六进制颜色代码
66+
*/
67+
TAG_COLOR_INVALID("data_management.0013", "标签颜色格式不正确,应为十六进制颜色代码"),
68+
/**
69+
* 保留天数必须为非负整数
70+
*/
71+
RETENTION_DAYS_INVALID("data_management.0014", "保留天数必须为非负整数"),
72+
/**
73+
* 路径长度不能超过限制
74+
*/
75+
PATH_TOO_LONG("data_management.0015", "路径长度不能超过限制"),
76+
/**
77+
* 文件名包含非法字符
78+
*/
79+
FILE_NAME_INVALID("data_management.0016", "文件名包含非法字符"),
80+
/**
81+
* 路径前缀不能以点开头
82+
*/
83+
PREFIX_INVALID("data_management.0017", "路径前缀不能以点开头");
84+
85+
private final String code;
86+
private final String message;
87+
}

backend/services/data-management-service/src/main/java/com/datamate/datamanagement/interfaces/dto/AddFilesRequest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package com.datamate.datamanagement.interfaces.dto;
22

3+
import com.datamate.datamanagement.interfaces.validation.ValidPath;
4+
import jakarta.validation.Valid;
5+
import jakarta.validation.constraints.NotBlank;
6+
import jakarta.validation.constraints.NotEmpty;
7+
import jakarta.validation.constraints.Size;
38
import lombok.AllArgsConstructor;
49
import lombok.Getter;
510
import lombok.NoArgsConstructor;
@@ -34,15 +39,21 @@ public AddFilesRequest(List<String> paths) {
3439
@Getter
3540
@Setter
3641
public static class FileRequest {
42+
@NotBlank(message = "文件路径不能为空")
43+
@Size(max = 1000, message = "文件路径长度不能超过1000个字符")
3744
private String filePath;
3845

3946
private Map<String, Object> metadata;
4047
}
4148

4249
private boolean softAdd;
4350

51+
@ValidPath()
4452
private String prefix = "";
4553

54+
@NotEmpty(message = "文件列表不能为空")
55+
@Size(max = 1000, message = "文件数量不能超过1000个")
56+
@Valid
4657
private List<FileRequest> files;
4758

4859
public boolean isValidPrefix() {

backend/services/data-management-service/src/main/java/com/datamate/datamanagement/interfaces/dto/CopyFilesRequest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.datamate.datamanagement.interfaces.dto;
22

33
import jakarta.validation.constraints.NotEmpty;
4+
import jakarta.validation.constraints.Size;
45

56
import java.util.List;
67

@@ -10,5 +11,8 @@
1011
* @author dallas
1112
* @since 2025-11-13
1213
*/
13-
public record CopyFilesRequest(@NotEmpty List<String> sourcePaths) {
14+
public record CopyFilesRequest(
15+
@NotEmpty(message = "源文件路径列表不能为空")
16+
@Size(max = 1000, message = "文件数量不能超过1000个")
17+
List<String> sourcePaths) {
1418
}

backend/services/data-management-service/src/main/java/com/datamate/datamanagement/interfaces/dto/CreateDatasetRequest.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.datamate.datamanagement.interfaces.dto;
22

3+
import com.datamate.datamanagement.common.enums.DatasetStatusType;
34
import com.datamate.datamanagement.common.enums.DatasetType;
5+
import jakarta.validation.constraints.Min;
46
import jakarta.validation.constraints.NotBlank;
57
import jakarta.validation.constraints.NotNull;
68
import jakarta.validation.constraints.Size;
@@ -21,28 +23,31 @@
2123
@AllArgsConstructor
2224
public class CreateDatasetRequest {
2325
/** 数据集名称 */
24-
@Size(min = 1, max = 100)
26+
@Size(min = 1, max = 255, message = "数据集名称长度不能超过255个字符")
2527
@NotBlank(message = "数据集名称不能为空")
2628
@McpToolParam(description = "数据集名称")
2729
private String name;
2830
/** 数据集描述 */
29-
@Size(max = 500)
31+
@Size(max = 500, message = "数据集描述长度不能超过500个字符")
3032
@McpToolParam(description = "数据集描述", required = false)
3133
private String description;
3234
/** 数据集类型 */
3335
@NotNull(message = "数据集类型不能为空")
3436
@McpToolParam(description = "数据集类型,取值范围为TEXT/IMAGE/VIDEO/AUDIO/OTHER")
3537
private DatasetType datasetType;
3638
/** 标签列表 */
39+
@Size(max = 20, message = "标签数量不能超过20个")
3740
@McpToolParam(description = "标签列表", required = false)
3841
private List<String> tags;
3942
/** 数据源 */
43+
@Size(max = 255, message = "数据源长度不能超过255个字符")
4044
@McpToolParam(description = "数据源", required = false)
4145
private String dataSource;
4246
/** 保留天数 */
47+
@Min(value = 0, message = "保留天数必须为非负整数")
4348
@McpToolParam(description = "保留天数", required = false)
4449
private Integer retentionDays;
4550
/** 数据集状态 */
4651
@McpToolParam(description = "数据集状态", required = false)
47-
private String status;
52+
private DatasetStatusType status;
4853
}
Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,26 @@
1-
package com.datamate.datamanagement.interfaces.dto;
2-
3-
import jakarta.validation.constraints.NotBlank;
4-
import lombok.Getter;
5-
import lombok.Setter;
6-
7-
/**
8-
* 创建数据集子目录请求
9-
*/
10-
@Getter
11-
@Setter
12-
public class CreateDirectoryRequest {
13-
14-
/** 父级前缀路径,例如 "images/",为空表示数据集根目录 */
15-
private String parentPrefix;
16-
17-
/** 新建目录名称 */
18-
@NotBlank
19-
private String directoryName;
20-
}
1+
package com.datamate.datamanagement.interfaces.dto;
2+
3+
import com.datamate.datamanagement.interfaces.validation.ValidFileName;
4+
import com.datamate.datamanagement.interfaces.validation.ValidPath;
5+
import jakarta.validation.constraints.NotBlank;
6+
import jakarta.validation.constraints.Size;
7+
import lombok.Getter;
8+
import lombok.Setter;
9+
10+
/**
11+
* 创建数据集子目录请求
12+
*/
13+
@Getter
14+
@Setter
15+
public class CreateDirectoryRequest {
16+
17+
/** 父级前缀路径,例如 "images/",为空表示数据集根目录 */
18+
@ValidPath()
19+
private String parentPrefix;
20+
21+
/** 新建目录名称 */
22+
@NotBlank(message = "目录名称不能为空")
23+
@ValidFileName
24+
@Size(max = 255, message = "目录名称长度不能超过255个字符")
25+
private String directoryName;
26+
}

backend/services/data-management-service/src/main/java/com/datamate/datamanagement/interfaces/dto/CreateTagRequest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package com.datamate.datamanagement.interfaces.dto;
22

3+
import com.datamate.datamanagement.interfaces.validation.ValidHexColor;
4+
import jakarta.validation.constraints.NotBlank;
5+
import jakarta.validation.constraints.Size;
36
import lombok.Getter;
47
import lombok.Setter;
58

@@ -10,9 +13,16 @@
1013
@Setter
1114
public class CreateTagRequest {
1215
/** 标签名称 */
16+
@NotBlank(message = "标签名称不能为空")
17+
@Size(min = 1, max = 100, message = "标签名称长度不能超过100个字符")
1318
private String name;
1419
/** 标签颜色 */
20+
@ValidHexColor
1521
private String color;
1622
/** 标签描述 */
23+
@Size(max = 500, message = "标签描述长度不能超过500个字符")
1724
private String description;
25+
/** 标签分类 */
26+
@Size(max = 50, message = "标签分类长度不能超过50个字符")
27+
private String category;
1828
}

backend/services/data-management-service/src/main/java/com/datamate/datamanagement/interfaces/dto/DatasetPagingQuery.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.datamate.common.interfaces.PagingQuery;
44
import com.datamate.datamanagement.common.enums.DatasetStatusType;
55
import com.datamate.datamanagement.common.enums.DatasetType;
6+
import jakarta.validation.constraints.Size;
67
import lombok.AllArgsConstructor;
78
import lombok.Getter;
89
import lombok.NoArgsConstructor;
@@ -30,12 +31,14 @@ public class DatasetPagingQuery extends PagingQuery {
3031
/**
3132
* 标签名过滤
3233
*/
34+
@Size(max = 10, message = "过滤标签数量不能超过10个")
3335
@McpToolParam(description = "标签名过滤", required = false)
3436
private List<String> tags = new ArrayList<>();
3537

3638
/**
3739
* 关键词搜索(名称或描述)
3840
*/
41+
@Size(max = 100, message = "关键词长度不能超过100个字符")
3942
@McpToolParam(description = "关键词搜索(名称或描述)", required = false)
4043
private String keyword;
4144

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,27 @@
1-
package com.datamate.datamanagement.interfaces.dto;
2-
3-
import jakarta.validation.constraints.NotBlank;
4-
import lombok.Getter;
5-
import lombok.Setter;
6-
7-
/**
8-
* 重命名数据集目录请求
9-
*/
10-
@Getter
11-
@Setter
12-
public class RenameDirectoryRequest {
13-
14-
/** 目录前缀,例如 "images/",与列表/删除目录接口保持一致 */
15-
@NotBlank
16-
private String prefix;
17-
18-
/** 新的目录名称 */
19-
@NotBlank
20-
private String newName;
21-
}
1+
package com.datamate.datamanagement.interfaces.dto;
2+
3+
import com.datamate.datamanagement.interfaces.validation.ValidFileName;
4+
import com.datamate.datamanagement.interfaces.validation.ValidPath;
5+
import jakarta.validation.constraints.NotBlank;
6+
import jakarta.validation.constraints.Size;
7+
import lombok.Getter;
8+
import lombok.Setter;
9+
10+
/**
11+
* 重命名数据集目录请求
12+
*/
13+
@Getter
14+
@Setter
15+
public class RenameDirectoryRequest {
16+
17+
/** 目录前缀,例如 "images/",与列表/删除目录接口保持一致 */
18+
@NotBlank(message = "目录前缀不能为空")
19+
@ValidPath(maxLength = 500)
20+
private String prefix;
21+
22+
/** 新的目录名称 */
23+
@NotBlank(message = "新目录名称不能为空")
24+
@ValidFileName
25+
@Size(max = 255, message = "目录名称长度不能超过255个字符")
26+
private String newName;
27+
}

0 commit comments

Comments
 (0)