Selaa lähdekoodia

✨ feat(classroom): 增强教室数据DTO验证规则

- 为CreateClassroomDataDto所有字段添加optional()修饰符,支持部分字段提交
- 将trainingDate字段类型从date()改为coerce.date(),支持字符串自动转换为日期格式
- 优化数据验证逻辑,提高接口兼容性和用户体验
yourname 5 kuukautta sitten
vanhempi
sitoutus
07d7eae7ca
1 muutettua tiedostoa jossa 10 lisäystä ja 10 poistoa
  1. 10 10
      src/server/modules/classroom/classroom-data.entity.ts

+ 10 - 10
src/server/modules/classroom/classroom-data.entity.ts

@@ -56,20 +56,20 @@ export const ClassroomDataSchema = z.object({
 });
 
 export const CreateClassroomDataDto = z.object({
-  classroomNo: z.string().max(255).nullable().openapi({ description: '教室号', example: 'test01' }),
-  trainingDate: z.date().nullable().openapi({ description: '训练日期', example: '2025-05-21T08:00:00Z' }),
-  holdingStock: z.string().max(255).nullable().openapi({ description: '持股', example: '100股' }),
-  holdingCash: z.string().max(255).nullable().openapi({ description: '持币', example: '10000元' }),
-  price: z.string().max(255).nullable().openapi({ description: '价格', example: '15.68' }),
-  code: z.string().max(255).nullable().openapi({ description: '代码', example: '001339' }),
-  status: z.string().max(255).nullable().openapi({ description: '状态', example: '1' }),
-  spare: z.string().max(255).nullable().openapi({ description: '备用', example: '' }),
-  submitUser: z.string().max(255).nullable().openapi({ description: '提交用户', example: '' })
+  classroomNo: z.string().max(255).optional().nullable().openapi({ description: '教室号', example: 'test01' }),
+  trainingDate: z.coerce.date().optional().nullable().openapi({ description: '训练日期', example: '2025-05-21T08:00:00Z' }),
+  holdingStock: z.string().max(255).optional().nullable().openapi({ description: '持股', example: '100股' }),
+  holdingCash: z.string().max(255).optional().nullable().openapi({ description: '持币', example: '10000元' }),
+  price: z.string().max(255).optional().nullable().openapi({ description: '价格', example: '15.68' }),
+  code: z.string().max(255).optional().nullable().openapi({ description: '代码', example: '001339' }),
+  status: z.string().max(255).optional().nullable().openapi({ description: '状态', example: '1' }),
+  spare: z.string().max(255).optional().nullable().openapi({ description: '备用', example: '' }),
+  submitUser: z.string().max(255).optional().nullable().openapi({ description: '提交用户', example: '' })
 });
 
 export const UpdateClassroomDataDto = z.object({
   classroomNo: z.string().max(255).nullable().openapi({ description: '教室号', example: 'test01' }),
-  trainingDate: z.date().nullable().openapi({ description: '训练日期', example: '2025-05-21T08:00:00Z' }),
+  trainingDate: z.coerce.date().nullable().openapi({ description: '训练日期', example: '2025-05-21T08:00:00Z' }),
   holdingStock: z.string().max(255).nullable().openapi({ description: '持股', example: '100股' }),
   holdingCash: z.string().max(255).nullable().openapi({ description: '持币', example: '10000元' }),
   price: z.string().max(255).nullable().openapi({ description: '价格', example: '15.68' }),