|
@@ -21,19 +21,23 @@ Draft
|
|
|
- [ ] 测试表单提交时邮箱字段可为空(不填写)
|
|
- [ ] 测试表单提交时邮箱字段可为空(不填写)
|
|
|
- [ ] 测试表单提交时邮箱字段可为有效邮箱格式
|
|
- [ ] 测试表单提交时邮箱字段可为有效邮箱格式
|
|
|
- [ ] 测试表单提交时邮箱字段为无效格式应显示验证错误
|
|
- [ ] 测试表单提交时邮箱字段为无效格式应显示验证错误
|
|
|
-- [ ] 验证平台模块后端schema验证 (AC: 2, 3)
|
|
|
|
|
- - [ ] 检查allin-packages/platform-module/src/schemas/platform.schema.ts中的CreatePlatformSchema
|
|
|
|
|
- - [ ] 确认contactEmail字段已经是.optional()状态(支持空值)
|
|
|
|
|
- - [ ] 确认保留.email()验证(如果填写,必须是有效邮箱格式)
|
|
|
|
|
- - [ ] 检查UpdatePlatformSchema中的contactEmail字段验证规则一致
|
|
|
|
|
|
|
+- [ ] 修改平台模块后端schema验证 (AC: 2, 3)
|
|
|
|
|
+ - [ ] 修改allin-packages/platform-module/src/schemas/platform.schema.ts中的CreatePlatformSchema
|
|
|
|
|
+ - [ ] 将contactEmail字段改为:`.optional().or(z.literal('')).transform(val => val === '' ? undefined : val)`
|
|
|
|
|
+ - [ ] 保留.email()验证(如果填写,必须是有效邮箱格式)
|
|
|
|
|
+ - [ ] 同样修改UpdatePlatformSchema中的contactEmail字段验证规则
|
|
|
|
|
+ - [ ] 确保.openapi()描述保持不变
|
|
|
- [ ] 验证数据库兼容性 (AC: 3)
|
|
- [ ] 验证数据库兼容性 (AC: 3)
|
|
|
- [ ] 检查allin-packages/platform-module/src/entities/platform.entity.ts中contactEmail字段为nullable: true
|
|
- [ ] 检查allin-packages/platform-module/src/entities/platform.entity.ts中contactEmail字段为nullable: true
|
|
|
- [ ] 验证现有数据可以正常读取和更新
|
|
- [ ] 验证现有数据可以正常读取和更新
|
|
|
- [ ] 编写单元测试 (AC: 1, 2, 3)
|
|
- [ ] 编写单元测试 (AC: 1, 2, 3)
|
|
|
|
|
+ - [ ] 为平台schema添加测试,验证空字符串转换为undefined
|
|
|
|
|
+ - [ ] 为平台schema添加测试,验证有效邮箱格式通过验证
|
|
|
|
|
+ - [ ] 为平台schema添加测试,验证无效邮箱格式显示错误
|
|
|
|
|
+ - [ ] 为平台schema添加测试,验证undefined通过验证(可选字段)
|
|
|
- [ ] 为平台管理表单添加测试,验证邮箱字段可为空的表单提交
|
|
- [ ] 为平台管理表单添加测试,验证邮箱字段可为空的表单提交
|
|
|
- [ ] 为平台管理表单添加测试,验证邮箱字段为有效邮箱格式的表单提交
|
|
- [ ] 为平台管理表单添加测试,验证邮箱字段为有效邮箱格式的表单提交
|
|
|
- [ ] 为平台管理表单添加测试,验证邮箱字段为无效格式时显示验证错误
|
|
- [ ] 为平台管理表单添加测试,验证邮箱字段为无效格式时显示验证错误
|
|
|
- - [ ] 为平台schema添加测试,验证邮箱字段验证规则(optional + email验证)
|
|
|
|
|
- [ ] 添加集成测试验证端到端功能
|
|
- [ ] 添加集成测试验证端到端功能
|
|
|
- [ ] 执行回归测试 (AC: 3)
|
|
- [ ] 执行回归测试 (AC: 3)
|
|
|
- [ ] 测试现有平台数据的显示和编辑功能
|
|
- [ ] 测试现有平台数据的显示和编辑功能
|
|
@@ -83,10 +87,31 @@ Draft
|
|
|
- 问题:空字符串`''`不是有效的邮箱格式,会导致Zod验证失败
|
|
- 问题:空字符串`''`不是有效的邮箱格式,会导致Zod验证失败
|
|
|
- 正确做法:默认值应该是`undefined`
|
|
- 正确做法:默认值应该是`undefined`
|
|
|
|
|
|
|
|
|
|
+**技术细节**:
|
|
|
|
|
+- Zod schema:`.optional()`允许`undefined`,但不允许无效的邮箱格式
|
|
|
|
|
+- React Hook Form:`defaultValues`中可以使用`undefined`,但输入框清空后值是`''`
|
|
|
|
|
+- 当前所有字段都设置为`''`,但只有`contactEmail`需要特殊处理,因为它是可选但需要邮箱验证的字段
|
|
|
|
|
+
|
|
|
|
|
+**解决方案选项**:
|
|
|
|
|
+1. **推荐方案**:修改schema,使用`.or(z.literal(''))`允许空字符串,然后转换
|
|
|
|
|
+ ```typescript
|
|
|
|
|
+ contactEmail: z.string().email().max(100).optional()
|
|
|
|
|
+ .or(z.literal('')) // 允许空字符串
|
|
|
|
|
+ .transform(val => val === '' ? undefined : val) // 将空字符串转为undefined
|
|
|
|
|
+ ```
|
|
|
|
|
+2. **备选方案**:前端在提交前将空字符串转换为`undefined`
|
|
|
|
|
+3. **简单方案**:只修改默认值为`undefined`,但用户清空输入框后还是`''`
|
|
|
|
|
+
|
|
|
|
|
+根据故事需求,推荐使用方案1,因为它:
|
|
|
|
|
+- 保持邮箱验证(如果填写了)
|
|
|
|
|
+- 允许空字符串(用户清空输入框)
|
|
|
|
|
+- 在API层面将空字符串转为`undefined`
|
|
|
|
|
+
|
|
|
根据故事"邮箱字段改为非必要输入项"的要求,需要:
|
|
根据故事"邮箱字段改为非必要输入项"的要求,需要:
|
|
|
-1. 将前端表单默认值从`''`改为`undefined`
|
|
|
|
|
-2. 确保字段支持空值(不填写)
|
|
|
|
|
-3. 如果用户选择填写,验证邮箱格式
|
|
|
|
|
|
|
+1. 修改schema,允许空字符串并转换为`undefined`
|
|
|
|
|
+2. 可选:将前端表单默认值从`''`改为`undefined`
|
|
|
|
|
+3. 确保字段支持空值(不填写)
|
|
|
|
|
+4. 如果用户选择填写,验证邮箱格式
|
|
|
|
|
|
|
|
### 文件位置参考
|
|
### 文件位置参考
|
|
|
1. **平台管理组件**: `allin-packages/platform-management-ui/src/components/PlatformManagement.tsx`
|
|
1. **平台管理组件**: `allin-packages/platform-management-ui/src/components/PlatformManagement.tsx`
|
|
@@ -110,11 +135,14 @@ Draft
|
|
|
- 错误处理:测试各种错误场景和边界条件 [Source: architecture/coding-standards.md#错误处理]
|
|
- 错误处理:测试各种错误场景和边界条件 [Source: architecture/coding-standards.md#错误处理]
|
|
|
|
|
|
|
|
**具体测试场景**:
|
|
**具体测试场景**:
|
|
|
-1. 平台表单:验证提交时邮箱字段可为空(不填写)
|
|
|
|
|
-2. 平台表单:验证提交时邮箱字段可为有效邮箱格式
|
|
|
|
|
-3. 平台表单:验证提交时邮箱字段为无效格式应显示验证错误
|
|
|
|
|
-4. 数据兼容性:验证现有含邮箱数据的显示和编辑
|
|
|
|
|
-5. schema验证:验证字段为optional且保留email验证
|
|
|
|
|
|
|
+1. schema验证:空字符串`''`转换为`undefined`通过验证
|
|
|
|
|
+2. schema验证:`undefined`通过验证(可选字段)
|
|
|
|
|
+3. schema验证:有效邮箱格式通过验证
|
|
|
|
|
+4. schema验证:无效邮箱格式显示验证错误
|
|
|
|
|
+5. 平台表单:验证提交时邮箱字段可为空(不填写)
|
|
|
|
|
+6. 平台表单:验证提交时邮箱字段可为有效邮箱格式
|
|
|
|
|
+7. 平台表单:验证提交时邮箱字段为无效格式应显示验证错误
|
|
|
|
|
+8. 数据兼容性:验证现有含邮箱数据的显示和编辑
|
|
|
|
|
|
|
|
## Testing
|
|
## Testing
|
|
|
### 测试标准
|
|
### 测试标准
|