AI代码生成工具
This commit is contained in:
@@ -195,8 +195,17 @@ export function transformAiToStandard(aiData: any): CodeGenData {
|
||||
};
|
||||
}
|
||||
|
||||
/** 系统自动维护字段,禁止出现在业务 field 里 */
|
||||
const RESERVED_FIELD_NAMES = new Set([
|
||||
'id',
|
||||
'status',
|
||||
'created_at',
|
||||
'updated_at',
|
||||
'deleted_at',
|
||||
]);
|
||||
|
||||
/**
|
||||
* 数据验证
|
||||
* 数据验证(导入前兜底,避免脏 class_name / 字段名进建表 SQL)
|
||||
*/
|
||||
export function validateData(data: CodeGenData): {
|
||||
valid: boolean;
|
||||
@@ -205,6 +214,12 @@ export function validateData(data: CodeGenData): {
|
||||
if (!data.class_name || !data.class_name.trim()) {
|
||||
return { valid: false, message: '类名不能为空' };
|
||||
}
|
||||
if (!/^[A-Z][A-Za-z0-9]{0,63}$/.test(data.class_name.trim())) {
|
||||
return {
|
||||
valid: false,
|
||||
message: '类名须为英文 PascalCase(如 VipMember),不能含中文或下划线',
|
||||
};
|
||||
}
|
||||
|
||||
if (!data.class_comment || !data.class_comment.trim()) {
|
||||
return { valid: false, message: '中文名称不能为空' };
|
||||
@@ -218,11 +233,31 @@ export function validateData(data: CodeGenData): {
|
||||
return { valid: false, message: '至少需要一个字段' };
|
||||
}
|
||||
|
||||
// 验证字段
|
||||
const seen = new Set<string>();
|
||||
for (const field of data.field) {
|
||||
if (!field.name || !field.name.trim()) {
|
||||
const name = (field.name || '').trim();
|
||||
if (!name) {
|
||||
return { valid: false, message: '字段名不能为空' };
|
||||
}
|
||||
if (name.length > 64 || /[\s,。::|()()]/.test(name)) {
|
||||
return {
|
||||
valid: false,
|
||||
message: `字段名非法「${name}」,须为短小写 snake_case`,
|
||||
};
|
||||
}
|
||||
if (!/^[a-z][a-z0-9_]{0,63}$/.test(name)) {
|
||||
return {
|
||||
valid: false,
|
||||
message: `字段名非法「${name}」,须为小写 snake_case(如 user_name)`,
|
||||
};
|
||||
}
|
||||
if (RESERVED_FIELD_NAMES.has(name)) {
|
||||
return { valid: false, message: `字段「${name}」为系统保留字段` };
|
||||
}
|
||||
if (seen.has(name)) {
|
||||
return { valid: false, message: `字段名重复「${name}」` };
|
||||
}
|
||||
seen.add(name);
|
||||
}
|
||||
|
||||
return { valid: true };
|
||||
|
||||
Reference in New Issue
Block a user