|
@@ -14,21 +14,26 @@ Draft
|
|
|
3. 后端API支持邮箱为空
|
|
3. 后端API支持邮箱为空
|
|
|
|
|
|
|
|
## Tasks / Subtasks
|
|
## Tasks / Subtasks
|
|
|
-- [ ] 更新平台管理前端表单验证 (AC: 1, 2)
|
|
|
|
|
- - [ ] 检查allin-packages/platform-management-ui/src/components/PlatformManagement.tsx中的表单配置
|
|
|
|
|
- - [ ] 验证contactEmail字段的FormLabel没有红色星号标记
|
|
|
|
|
- - [ ] 确保表单提交时邮箱字段可为空
|
|
|
|
|
-- [ ] 更新平台模块后端schema验证 (AC: 2, 3)
|
|
|
|
|
- - [ ] 修改allin-packages/platform-module/src/schemas/platform.schema.ts中的CreatePlatformSchema
|
|
|
|
|
- - [ ] 移除contactEmail字段的.email()验证,改为普通字符串验证
|
|
|
|
|
- - [ ] 确保contactEmail字段保持.optional()状态
|
|
|
|
|
- - [ ] 修改UpdatePlatformSchema中的contactEmail字段验证
|
|
|
|
|
|
|
+- [ ] 修复平台管理前端表单默认值问题 (AC: 1, 2)
|
|
|
|
|
+ - [ ] 修改allin-packages/platform-management-ui/src/components/PlatformManagement.tsx中的表单配置
|
|
|
|
|
+ - [ ] 将contactEmail字段的默认值从`''`改为`undefined`
|
|
|
|
|
+ - [ ] 验证contactEmail字段的FormLabel没有红色星号标记(非必填)
|
|
|
|
|
+ - [ ] 测试表单提交时邮箱字段可为空(不填写)
|
|
|
|
|
+ - [ ] 测试表单提交时邮箱字段可为有效邮箱格式
|
|
|
|
|
+ - [ ] 测试表单提交时邮箱字段为无效格式应显示验证错误
|
|
|
|
|
+- [ ] 验证平台模块后端schema验证 (AC: 2, 3)
|
|
|
|
|
+ - [ ] 检查allin-packages/platform-module/src/schemas/platform.schema.ts中的CreatePlatformSchema
|
|
|
|
|
+ - [ ] 确认contactEmail字段已经是.optional()状态(支持空值)
|
|
|
|
|
+ - [ ] 确认保留.email()验证(如果填写,必须是有效邮箱格式)
|
|
|
|
|
+ - [ ] 检查UpdatePlatformSchema中的contactEmail字段验证规则一致
|
|
|
- [ ] 验证数据库兼容性 (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添加测试,验证邮箱字段验证规则
|
|
|
|
|
|
|
+ - [ ] 为平台管理表单添加测试,验证邮箱字段为有效邮箱格式的表单提交
|
|
|
|
|
+ - [ ] 为平台管理表单添加测试,验证邮箱字段为无效格式时显示验证错误
|
|
|
|
|
+ - [ ] 为平台schema添加测试,验证邮箱字段验证规则(optional + email验证)
|
|
|
- [ ] 添加集成测试验证端到端功能
|
|
- [ ] 添加集成测试验证端到端功能
|
|
|
- [ ] 执行回归测试 (AC: 3)
|
|
- [ ] 执行回归测试 (AC: 3)
|
|
|
- [ ] 测试现有平台数据的显示和编辑功能
|
|
- [ ] 测试现有平台数据的显示和编辑功能
|
|
@@ -67,7 +72,21 @@ Draft
|
|
|
- 数据库实体: `allin-packages/platform-module/src/entities/platform.entity.ts:47` - `contactEmail`字段为`nullable: true`
|
|
- 数据库实体: `allin-packages/platform-module/src/entities/platform.entity.ts:47` - `contactEmail`字段为`nullable: true`
|
|
|
|
|
|
|
|
**问题分析**:
|
|
**问题分析**:
|
|
|
-当前schema中contactEmail字段有`.email()`验证,这意味着如果用户输入邮箱,必须是有效的邮箱格式。根据故事要求,需要移除`.email()`验证,允许任意字符串或空值。
|
|
|
|
|
|
|
+当前schema中contactEmail字段有`.optional()`和`.email()`验证,这意味着:
|
|
|
|
|
+1. 字段是可选的(可以是`undefined`)✅ 符合"非必要输入项"要求
|
|
|
|
|
+2. 如果填写了,必须是有效的邮箱格式 ⚠️ 当前有.email()验证
|
|
|
|
|
+
|
|
|
|
|
+**关键问题发现**:
|
|
|
|
|
+前端表单默认值设置有问题:
|
|
|
|
|
+- 文件位置:`allin-packages/platform-management-ui/src/components/PlatformManagement.tsx:42`
|
|
|
|
|
+- 当前默认值:`contactEmail: ''`(空字符串)
|
|
|
|
|
+- 问题:空字符串`''`不是有效的邮箱格式,会导致Zod验证失败
|
|
|
|
|
+- 正确做法:默认值应该是`undefined`
|
|
|
|
|
+
|
|
|
|
|
+根据故事"邮箱字段改为非必要输入项"的要求,需要:
|
|
|
|
|
+1. 将前端表单默认值从`''`改为`undefined`
|
|
|
|
|
+2. 确保字段支持空值(不填写)
|
|
|
|
|
+3. 如果用户选择填写,验证邮箱格式
|
|
|
|
|
|
|
|
### 文件位置参考
|
|
### 文件位置参考
|
|
|
1. **平台管理组件**: `allin-packages/platform-management-ui/src/components/PlatformManagement.tsx`
|
|
1. **平台管理组件**: `allin-packages/platform-management-ui/src/components/PlatformManagement.tsx`
|
|
@@ -83,7 +102,7 @@ Draft
|
|
|
**测试策略**:
|
|
**测试策略**:
|
|
|
- 单元测试:使用Vitest框架 [Source: architecture/testing-strategy.md#单元测试]
|
|
- 单元测试:使用Vitest框架 [Source: architecture/testing-strategy.md#单元测试]
|
|
|
- 组件测试:使用Testing Library [Source: architecture/testing-strategy.md#单元测试]
|
|
- 组件测试:使用Testing Library [Source: architecture/testing-strategy.md#单元测试]
|
|
|
-- 测试位置:`__tests__`文件夹与源码并列 [Source: architecture/coding-standards.md#测试位置]
|
|
|
|
|
|
|
+- 测试位置:`tests/`文件夹与源码并列 [Source: 实际项目结构检查]
|
|
|
|
|
|
|
|
**测试要求**:
|
|
**测试要求**:
|
|
|
- 覆盖率目标:核心业务逻辑 > 80% [Source: architecture/coding-standards.md#覆盖率目标]
|
|
- 覆盖率目标:核心业务逻辑 > 80% [Source: architecture/coding-standards.md#覆盖率目标]
|
|
@@ -91,26 +110,29 @@ Draft
|
|
|
- 错误处理:测试各种错误场景和边界条件 [Source: architecture/coding-standards.md#错误处理]
|
|
- 错误处理:测试各种错误场景和边界条件 [Source: architecture/coding-standards.md#错误处理]
|
|
|
|
|
|
|
|
**具体测试场景**:
|
|
**具体测试场景**:
|
|
|
-1. 平台表单:验证提交时邮箱字段可为空
|
|
|
|
|
-2. 平台表单:验证提交时邮箱字段可为任意字符串(非邮箱格式)
|
|
|
|
|
-3. 数据兼容性:验证现有含邮箱数据的显示和编辑
|
|
|
|
|
-4. schema验证:验证新的验证规则接受空值和任意字符串
|
|
|
|
|
|
|
+1. 平台表单:验证提交时邮箱字段可为空(不填写)
|
|
|
|
|
+2. 平台表单:验证提交时邮箱字段可为有效邮箱格式
|
|
|
|
|
+3. 平台表单:验证提交时邮箱字段为无效格式应显示验证错误
|
|
|
|
|
+4. 数据兼容性:验证现有含邮箱数据的显示和编辑
|
|
|
|
|
+5. schema验证:验证字段为optional且保留email验证
|
|
|
|
|
|
|
|
## Testing
|
|
## Testing
|
|
|
### 测试标准
|
|
### 测试标准
|
|
|
- **测试框架**: Vitest + Testing Library [Source: architecture/tech-stack.md#新技术添加]
|
|
- **测试框架**: Vitest + Testing Library [Source: architecture/tech-stack.md#新技术添加]
|
|
|
-- **测试位置**: `__tests__`文件夹与源码并列 [Source: architecture/coding-standards.md#测试位置]
|
|
|
|
|
|
|
+- **测试位置**: `tests/`文件夹与源码并列 [Source: 实际项目结构检查]
|
|
|
- **覆盖率要求**: 核心业务逻辑 > 80% [Source: architecture/coding-standards.md#覆盖率目标]
|
|
- **覆盖率要求**: 核心业务逻辑 > 80% [Source: architecture/coding-standards.md#覆盖率目标]
|
|
|
|
|
|
|
|
### 组件测试要求
|
|
### 组件测试要求
|
|
|
- 必须为关键交互元素添加`data-testid`属性 [Source: architecture/coding-standards.md#关键检查点]
|
|
- 必须为关键交互元素添加`data-testid`属性 [Source: architecture/coding-standards.md#关键检查点]
|
|
|
- 测试平台管理表单在邮箱字段为空时的提交行为
|
|
- 测试平台管理表单在邮箱字段为空时的提交行为
|
|
|
-- 测试平台管理表单在邮箱字段为任意字符串时的提交行为
|
|
|
|
|
|
|
+- 测试平台管理表单在邮箱字段为有效邮箱格式时的提交行为
|
|
|
|
|
+- 测试平台管理表单在邮箱字段为无效格式时的验证错误显示
|
|
|
|
|
|
|
|
### 集成测试要求
|
|
### 集成测试要求
|
|
|
- 测试平台管理表单的完整提交流程
|
|
- 测试平台管理表单的完整提交流程
|
|
|
- 验证邮箱字段为空的表单提交
|
|
- 验证邮箱字段为空的表单提交
|
|
|
-- 验证邮箱字段为任意字符串的表单提交
|
|
|
|
|
|
|
+- 验证邮箱字段为有效邮箱格式的表单提交
|
|
|
|
|
+- 验证邮箱字段为无效格式的表单提交应显示验证错误
|
|
|
- 测试现有数据的兼容性
|
|
- 测试现有数据的兼容性
|
|
|
|
|
|
|
|
### 测试文件位置
|
|
### 测试文件位置
|