You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
421 lines
18 KiB
421 lines
18 KiB
|
3 months ago
|
## 2025-01-21 创建测试场景任务执行过程Feature
|
||
|
|
|
||
|
|
### 概述
|
||
|
|
|
||
|
|
为测试场景任务系统创建树形结构Feature,将三个核心表(tb_testscenario_task、tb_testscenario_task_execution_detail、tb_testscenario_task_execution_case_detail)组合生成层次化的树形结构,便于前端展示和管理。
|
||
|
|
|
||
|
|
### 主要变更
|
||
|
|
|
||
|
|
#### 1. 创建 TestScenarioTaskTree Feature
|
||
|
|
- **目录**: `X1.Application/Features/TestScenarioTaskTree/Queries/GetTestScenarioTaskTree/`
|
||
|
|
- **功能**: 提供测试场景任务执行过程查询功能
|
||
|
|
- **架构**: 遵循CQRS模式,使用MediatR进行查询处理
|
||
|
|
|
||
|
|
#### 2. 实现的功能组件
|
||
|
|
- **查询类**: `GetTestScenarioTaskTreeQuery.cs` - 定义查询参数和条件
|
||
|
|
- **响应类**: `GetTestScenarioTaskTreeResponse.cs` - 定义树形结构响应格式
|
||
|
|
- **处理器**: `GetTestScenarioTaskTreeQueryHandler.cs` - 实现树形结构构建逻辑
|
||
|
|
- **DTO类**: 包含任务树、执行树、用例树的数据传输对象
|
||
|
|
|
||
|
|
#### 3. 树形结构设计
|
||
|
|
- **第一层**: 测试场景任务(TestScenarioTaskTreeDto)
|
||
|
|
- **第二层**: 任务执行详情(TaskExecutionTreeDto)
|
||
|
|
- **第三层**: 用例执行详情(TaskExecutionCaseTreeDto)
|
||
|
|
|
||
|
|
#### 4. 查询参数支持
|
||
|
|
- **场景过滤**: `ScenarioCode` - 按场景编码过滤
|
||
|
|
- **设备过滤**: `DeviceCode` - 按设备编码过滤
|
||
|
|
- **执行详情**: `IncludeExecutionDetails` - 是否包含执行详情
|
||
|
|
- **用例详情**: `IncludeCaseDetails` - 是否包含用例详情
|
||
|
|
|
||
|
|
#### 5. 技术特点
|
||
|
|
- **性能优化**: 支持按需加载,可选择是否包含执行和用例详情
|
||
|
|
- **数据完整性**: 提供完整的统计信息(任务数量、执行数量、用例数量)
|
||
|
|
- **错误处理**: 完整的异常处理和日志记录
|
||
|
|
- **类型安全**: 强类型的DTO设计,确保数据一致性
|
||
|
|
|
||
|
|
### 技术实现
|
||
|
|
|
||
|
|
#### 1. 查询类设计
|
||
|
|
```csharp
|
||
|
|
public class GetTestScenarioTaskTreeQuery : IRequest<OperationResult<GetTestScenarioTaskTreeResponse>>
|
||
|
|
{
|
||
|
|
public string? ScenarioCode { get; set; }
|
||
|
|
public string? DeviceCode { get; set; }
|
||
|
|
public bool IncludeExecutionDetails { get; set; } = true;
|
||
|
|
public bool IncludeCaseDetails { get; set; } = true;
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
#### 2. 树形结构DTO
|
||
|
|
- **TestScenarioTaskTreeDto**: 任务树节点,包含任务基本信息和执行列表
|
||
|
|
- **TaskExecutionTreeDto**: 执行树节点,包含执行信息和用例列表
|
||
|
|
- **TaskExecutionCaseTreeDto**: 用例树节点,包含用例执行详情
|
||
|
|
|
||
|
|
#### 3. 处理器逻辑
|
||
|
|
- **分层构建**: 先构建任务层,再构建执行层,最后构建用例层
|
||
|
|
- **按需加载**: 根据参数决定是否加载执行和用例详情
|
||
|
|
- **统计计算**: 自动计算各层级的数量统计
|
||
|
|
|
||
|
|
#### 4. 数据关系
|
||
|
|
- **任务 → 执行**: 一对多关系,通过TaskId关联
|
||
|
|
- **执行 → 用例**: 一对多关系,通过ExecutionId关联
|
||
|
|
- **完整链路**: 任务 → 执行详情 → 用例详情
|
||
|
|
|
||
|
|
### 使用场景
|
||
|
|
|
||
|
|
1. **任务管理界面**: 展示完整的任务执行层次结构
|
||
|
|
2. **执行监控**: 实时查看任务执行状态和进度
|
||
|
|
3. **用例分析**: 分析用例执行情况和性能数据
|
||
|
|
4. **报告生成**: 生成包含完整执行链路的报告
|
||
|
|
|
||
|
|
### 文件清单
|
||
|
|
|
||
|
|
#### Application Layer
|
||
|
|
- `X1.Application/Features/TestScenarioTaskTree/Queries/GetTestScenarioTaskTree/GetTestScenarioTaskTreeQuery.cs`
|
||
|
|
- `X1.Application/Features/TestScenarioTaskTree/Queries/GetTestScenarioTaskTree/GetTestScenarioTaskTreeResponse.cs`
|
||
|
|
- `X1.Application/Features/TestScenarioTaskTree/Queries/GetTestScenarioTaskTree/GetTestScenarioTaskTreeQueryHandler.cs`
|
||
|
|
|
||
|
|
#### Presentation Layer
|
||
|
|
- `X1.Presentation/Controllers/TestScenarioTaskExecutionController.cs`
|
||
|
|
|
||
|
|
#### Frontend Layer
|
||
|
|
- `X1.WebUI/src/services/testScenarioTaskExecutionService.ts` - 任务执行过程服务
|
||
|
|
- `X1.WebUI/src/pages/task-execution-process/TaskExecutionProcessView.tsx` - 任务执行过程主视图组件
|
||
|
|
- `X1.WebUI/src/pages/task-execution-process/TaskExecutionTree.tsx` - 左侧树形结构组件
|
||
|
|
- `X1.WebUI/src/pages/task-execution-process/TaskExecutionTable.tsx` - 右侧表格组件
|
||
|
|
- `X1.WebUI/src/components/ui/collapsible.tsx` - 可折叠组件(新增)
|
||
|
|
- `X1.WebUI/src/constants/api.ts` - 更新API常量配置
|
||
|
|
- `X1.WebUI/src/constants/navigationMenuPresets.ts` - 更新导航菜单预设配置
|
||
|
|
- `X1.WebUI/src/pages/navigation-menus/NavigationMenuForm_Examples.md` - 更新导航菜单示例文档
|
||
|
|
- `X1.WebUI/src/routes/AppRouter.tsx` - 添加任务执行过程页面路由配置
|
||
|
|
|
||
|
|
### Controller实现
|
||
|
|
|
||
|
|
#### 1. 控制器设计
|
||
|
|
- **基类**: 继承自 `ApiController` 基类
|
||
|
|
- **路由**: `api/testscenariotaskexecution`
|
||
|
|
- **权限**: 需要授权访问 `[Authorize]`
|
||
|
|
- **日志**: 完整的操作日志记录
|
||
|
|
|
||
|
|
#### 2. API端点
|
||
|
|
- **获取任务执行过程**: `GET /api/testscenariotaskexecution` - 支持场景和设备过滤,可控制是否包含执行和用例详情
|
||
|
|
|
||
|
|
**设计说明**: 基于现有Controller的实现模式,采用单一端点设计,通过查询参数控制不同的过滤条件和数据包含选项,这与现有的TestScenarioTasksController和TestScenariosController的设计保持一致。
|
||
|
|
|
||
|
|
#### 3. 查询参数
|
||
|
|
- **scenarioCode**: 场景编码过滤
|
||
|
|
- **deviceCode**: 设备编码过滤
|
||
|
|
- **includeExecutionDetails**: 是否包含执行详情(默认true)
|
||
|
|
- **includeCaseDetails**: 是否包含用例详情(默认true)
|
||
|
|
|
||
|
|
#### 4. 技术特点
|
||
|
|
- **统一响应**: 使用 `OperationResult<T>` 统一响应格式
|
||
|
|
- **错误处理**: 完整的错误处理和用户友好的错误消息
|
||
|
|
- **日志记录**: 详细的操作日志,包括开始、成功、失败状态
|
||
|
|
- **参数验证**: 自动参数验证和类型转换
|
||
|
|
|
||
|
|
#### 5. API使用示例
|
||
|
|
|
||
|
|
```http
|
||
|
|
# 获取所有任务执行过程
|
||
|
|
GET /api/testscenariotaskexecution
|
||
|
|
|
||
|
|
# 获取指定场景的任务执行过程
|
||
|
|
GET /api/testscenariotaskexecution?scenarioCode=SCENARIO_001
|
||
|
|
|
||
|
|
# 获取指定设备的任务执行过程
|
||
|
|
GET /api/testscenariotaskexecution?deviceCode=DEVICE_001
|
||
|
|
|
||
|
|
# 获取任务执行过程概览(不包含执行详情)
|
||
|
|
GET /api/testscenariotaskexecution?scenarioCode=SCENARIO_001&includeExecutionDetails=false&includeCaseDetails=false
|
||
|
|
|
||
|
|
# 获取完整任务执行过程(包含执行和用例详情)
|
||
|
|
GET /api/testscenariotaskexecution?scenarioCode=SCENARIO_001&includeExecutionDetails=true&includeCaseDetails=true
|
||
|
|
|
||
|
|
# 获取任务执行过程(仅包含执行详情,不包含用例详情)
|
||
|
|
GET /api/testscenariotaskexecution?deviceCode=DEVICE_001&includeExecutionDetails=true&includeCaseDetails=false
|
||
|
|
```
|
||
|
|
|
||
|
|
#### 6. 响应格式示例
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"isSuccess": true,
|
||
|
|
"data": {
|
||
|
|
"taskTrees": [
|
||
|
|
{
|
||
|
|
"taskId": "TASK_001",
|
||
|
|
"taskCode": "TASK_001",
|
||
|
|
"taskName": "测试任务1",
|
||
|
|
"scenarioCode": "SCENARIO_001",
|
||
|
|
"deviceCode": "DEVICE_001",
|
||
|
|
"executionCount": 2,
|
||
|
|
"executions": [
|
||
|
|
{
|
||
|
|
"executionId": "EXEC_001",
|
||
|
|
"taskId": "TASK_001",
|
||
|
|
"status": "Success",
|
||
|
|
"caseCount": 3,
|
||
|
|
"caseDetails": [
|
||
|
|
{
|
||
|
|
"caseDetailId": "CASE_001",
|
||
|
|
"executionId": "EXEC_001",
|
||
|
|
"testCaseFlowId": "FLOW_001",
|
||
|
|
"status": "Success"
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"totalTaskCount": 1,
|
||
|
|
"totalExecutionCount": 2,
|
||
|
|
"totalCaseCount": 3
|
||
|
|
},
|
||
|
|
"errorMessages": null
|
||
|
|
}
|
||
|
|
|
||
|
|
### 数据库表关系
|
||
|
|
|
||
|
|
```
|
||
|
|
tb_testscenario_task (任务表)
|
||
|
|
├── Id (主键)
|
||
|
|
├── TaskCode (任务编码)
|
||
|
|
├── TaskName (任务名称)
|
||
|
|
├── ScenarioCode (场景编码)
|
||
|
|
├── DeviceCode (设备编码)
|
||
|
|
└── ... (其他字段)
|
||
|
|
|
||
|
|
tb_testscenario_task_execution_detail (执行详情表)
|
||
|
|
├── Id (主键)
|
||
|
|
├── TaskId (外键 → tb_testscenario_task.Id)
|
||
|
|
├── ScenarioCode (场景编码)
|
||
|
|
├── ExecutorId (执行人ID)
|
||
|
|
├── Status (执行状态)
|
||
|
|
└── ... (其他字段)
|
||
|
|
|
||
|
|
tb_testscenario_task_execution_case_detail (用例详情表)
|
||
|
|
├── Id (主键)
|
||
|
|
├── ExecutionId (外键 → tb_testscenario_task_execution_detail.Id)
|
||
|
|
├── ScenarioCode (场景编码)
|
||
|
|
├── TestCaseFlowId (测试用例流程ID)
|
||
|
|
├── ExecutorId (执行人ID)
|
||
|
|
└── ... (其他字段)
|
||
|
|
```
|
||
|
|
|
||
|
|
### 树形结构示例
|
||
|
|
|
||
|
|
```
|
||
|
|
任务1 (TestScenarioTaskTreeDto)
|
||
|
|
├── 执行1 (TaskExecutionTreeDto)
|
||
|
|
│ ├── 用例1 (TaskExecutionCaseTreeDto)
|
||
|
|
│ ├── 用例2 (TaskExecutionCaseTreeDto)
|
||
|
|
│ └── 用例3 (TaskExecutionCaseTreeDto)
|
||
|
|
├── 执行2 (TaskExecutionTreeDto)
|
||
|
|
│ ├── 用例4 (TaskExecutionCaseTreeDto)
|
||
|
|
│ └── 用例5 (TaskExecutionCaseTreeDto)
|
||
|
|
└── 执行3 (TaskExecutionTreeDto)
|
||
|
|
└── 用例6 (TaskExecutionCaseTreeDto)
|
||
|
|
|
||
|
|
任务2 (TestScenarioTaskTreeDto)
|
||
|
|
└── 执行4 (TaskExecutionTreeDto)
|
||
|
|
├── 用例7 (TaskExecutionCaseTreeDto)
|
||
|
|
└── 用例8 (TaskExecutionCaseTreeDto)
|
||
|
|
```
|
||
|
|
|
||
|
|
### 性能优化
|
||
|
|
|
||
|
|
1. **按需加载**: 通过参数控制是否加载执行和用例详情
|
||
|
|
2. **批量查询**: 使用仓储的批量查询方法减少数据库访问次数
|
||
|
|
3. **内存优化**: 避免N+1查询问题,使用高效的关联查询
|
||
|
|
4. **缓存友好**: 设计支持后续缓存优化的数据结构
|
||
|
|
|
||
|
|
### 前端实现
|
||
|
|
|
||
|
|
#### 1. 服务层设计
|
||
|
|
- **服务类**: `TestScenarioTaskExecutionService` - 完全对应后端Controller
|
||
|
|
- **API路径**: `/testscenariotaskexecution` - 与后端路由保持一致
|
||
|
|
- **类型定义**: 与后端DTO完全对应的TypeScript接口
|
||
|
|
- **错误处理**: 统一的错误处理和用户友好的提示
|
||
|
|
|
||
|
|
#### 2. 视图组件设计
|
||
|
|
- **主组件**: `TaskExecutionProcessView` - 避免与现有组件重名
|
||
|
|
- **功能定位**: 专门用于查看任务执行结果和过程
|
||
|
|
- **布局设计**: 左右分栏布局,左侧树形结构,右侧详细信息表格
|
||
|
|
- **UI特点**:
|
||
|
|
- 左侧可折叠的树形结构展示任务层次
|
||
|
|
- 右侧表格展示选中任务的详细执行信息
|
||
|
|
- 状态图标和颜色区分不同执行状态
|
||
|
|
- 支持按场景和设备过滤
|
||
|
|
- 可控制是否显示执行和用例详情
|
||
|
|
|
||
|
|
#### 3. 组件拆分架构
|
||
|
|
- **TaskExecutionProcessView**: 主视图组件,负责数据获取和状态管理
|
||
|
|
- **TaskExecutionTree**: 左侧树形组件,展示任务列表和层次结构
|
||
|
|
- **TaskExecutionTable**: 右侧表格组件,展示选中任务的详细信息
|
||
|
|
- **组件通信**: 通过props传递数据和回调函数实现组件间通信
|
||
|
|
|
||
|
|
#### 4. 组件特性
|
||
|
|
- **响应式设计**: 适配不同屏幕尺寸,大屏显示左右布局,小屏堆叠显示
|
||
|
|
- **交互友好**: 左侧树形结构可折叠展开,右侧表格支持搜索和过滤
|
||
|
|
- **状态可视化**: 不同颜色和图标表示执行状态
|
||
|
|
- **实时更新**: 支持刷新和重新查询
|
||
|
|
- **性能优化**: 按需加载执行和用例详情
|
||
|
|
- **数据联动**: 左侧选择任务,右侧自动更新对应详细信息
|
||
|
|
- **主题适配**: 使用主题变量,支持明暗主题切换
|
||
|
|
- **布局优化**: 任务列表铺满容器,内部滚动条优化用户体验
|
||
|
|
- **Card布局**: 为Card组件添加flex布局确保子组件正确继承高度
|
||
|
|
|
||
|
|
#### 5. 步骤详情功能扩展
|
||
|
|
|
||
|
|
##### 5.1 新增功能概述
|
||
|
|
基于用户需求,在现有的TestScenarioTaskTree功能基础上,新增了通过CaseDetailId获取StepId,然后关联tb_testscenario_task_execution_step_log表的功能。
|
||
|
|
|
||
|
|
##### 5.2 数据流程
|
||
|
|
1. **输入**: CaseDetailId (用例执行明细ID)
|
||
|
|
2. **查询步骤**: 通过CaseDetailId从tb_testscenario_task_execution_case_step_detail表获取StepId列表
|
||
|
|
3. **关联日志**: 使用StepDetailId关联tb_testscenario_task_execution_step_log表获取步骤执行日志
|
||
|
|
4. **输出**: 包含步骤详情和日志的完整数据结构
|
||
|
|
|
||
|
|
##### 5.3 新增文件
|
||
|
|
|
||
|
|
**X1.Application/Features/TestScenarioTaskTree/Queries/GetTestScenarioTaskStepDetails/GetTestScenarioTaskStepDetailsResponse.cs**
|
||
|
|
- 定义了步骤详情和日志的DTO结构
|
||
|
|
- `GetTestScenarioTaskStepDetailsResponse`: 响应容器
|
||
|
|
- `TestScenarioTaskStepDetailDto`: 步骤详情DTO
|
||
|
|
- `TestScenarioTaskStepLogDto`: 步骤日志DTO
|
||
|
|
|
||
|
|
**X1.Application/Features/TestScenarioTaskTree/Queries/GetTestScenarioTaskStepDetails/GetTestScenarioTaskStepDetailsQuery.cs**
|
||
|
|
- 定义了查询参数
|
||
|
|
- 支持日志类型过滤、时间范围过滤等条件
|
||
|
|
|
||
|
|
**X1.Application/Features/TestScenarioTaskTree/Queries/GetTestScenarioTaskStepDetails/GetTestScenarioTaskStepDetailsQueryHandler.cs**
|
||
|
|
- 实现了查询逻辑
|
||
|
|
- 通过Repository获取步骤详情和日志数据
|
||
|
|
- 支持条件过滤和排序
|
||
|
|
|
||
|
|
##### 5.4 Controller扩展
|
||
|
|
|
||
|
|
**X1.Presentation/Controllers/TestScenarioTaskExecutionController.cs**
|
||
|
|
- 新增 `GetTestScenarioTaskStepDetails` 端点
|
||
|
|
- 路由: `GET /api/testscenariotaskexecution/step-details`
|
||
|
|
- 支持查询参数: caseDetailId, includeStepLogs, logTypeFilter, startTimeFilter, endTimeFilter
|
||
|
|
|
||
|
|
##### 5.5 技术特性
|
||
|
|
- **CQRS模式**: 遵循现有的Command Query Responsibility Segregation模式
|
||
|
|
- **MediatR**: 使用MediatR进行查询处理
|
||
|
|
- **Repository模式**: 利用现有的Repository接口和实现
|
||
|
|
- **日志记录**: 完整的日志记录和错误处理
|
||
|
|
- **参数验证**: 输入参数验证和错误处理
|
||
|
|
- **条件过滤**: 支持多种过滤条件
|
||
|
|
|
||
|
|
#### 6. 前端服务实现
|
||
|
|
|
||
|
|
##### 6.1 服务层扩展
|
||
|
|
|
||
|
|
**X1.WebUI/src/services/testScenarioTaskExecutionService.ts**
|
||
|
|
- 新增步骤日志类型枚举 `StepLogType`
|
||
|
|
- 新增步骤详情相关DTO接口:
|
||
|
|
- `TestScenarioTaskStepLogDto`: 步骤日志DTO
|
||
|
|
- `TestScenarioTaskStepDetailDto`: 步骤详情DTO
|
||
|
|
- `GetTestScenarioTaskStepDetailsRequest`: 请求接口
|
||
|
|
- `GetTestScenarioTaskStepDetailsResponse`: 响应接口
|
||
|
|
- 新增服务方法 `getTestScenarioTaskStepDetails()`: 获取步骤详情和日志
|
||
|
|
|
||
|
|
##### 6.2 组件层实现
|
||
|
|
|
||
|
|
**X1.WebUI/src/pages/task-execution-process/StepDetailsView.tsx**
|
||
|
|
- 步骤日志视图组件
|
||
|
|
- 直接显示所有步骤的日志,按时间排序
|
||
|
|
- 支持日志类型过滤和搜索功能
|
||
|
|
- 每个日志项包含对应的步骤信息
|
||
|
|
- 完整的错误处理和加载状态
|
||
|
|
|
||
|
|
**X1.WebUI/src/pages/task-execution-process/TaskExecutionTree.tsx**
|
||
|
|
- 修改用例执行详情组件,添加点击事件
|
||
|
|
- 支持用例点击查看步骤详情
|
||
|
|
- 传递用例点击回调函数
|
||
|
|
|
||
|
|
**X1.WebUI/src/pages/task-execution-process/TaskExecutionProcessView.tsx**
|
||
|
|
- 添加步骤详情状态管理
|
||
|
|
- 移除TaskExecutionTable组件,直接使用StepDetailsView
|
||
|
|
- 实现固定两列布局:任务树 + 步骤详情
|
||
|
|
- 添加用例点击处理逻辑
|
||
|
|
- 集成步骤详情视图
|
||
|
|
|
||
|
|
##### 6.3 交互流程
|
||
|
|
1. **用例点击**: 用户在任务树中点击用例执行详情
|
||
|
|
2. **状态更新**: 设置选中的用例明细ID,显示步骤日志视图
|
||
|
|
3. **数据获取**: 自动调用步骤详情API获取数据
|
||
|
|
4. **日志展示**: 在右侧面板展示所有步骤的日志,按时间排序
|
||
|
|
5. **关闭功能**: 用户可点击关闭按钮清空选择
|
||
|
|
|
||
|
|
##### 6.4 技术特性
|
||
|
|
- **响应式布局**: 支持不同屏幕尺寸的布局适配
|
||
|
|
- **状态管理**: 完整的组件状态管理
|
||
|
|
- **错误处理**: 统一的错误处理和用户提示
|
||
|
|
- **加载状态**: 友好的加载状态显示
|
||
|
|
- **搜索过滤**: 支持步骤搜索和日志类型过滤
|
||
|
|
- **主题适配**: 使用主题变量,支持明暗主题
|
||
|
|
|
||
|
|
#### 7. 技术实现
|
||
|
|
- **React Hooks**: 使用useState和useEffect管理状态
|
||
|
|
- **TypeScript**: 强类型定义确保数据安全
|
||
|
|
- **Tailwind CSS**: 现代化的样式设计,支持响应式布局
|
||
|
|
- **Lucide Icons**: 统一的图标系统
|
||
|
|
- **Toast通知**: 用户友好的操作反馈
|
||
|
|
- **组件化设计**: 模块化的组件结构,便于维护和扩展
|
||
|
|
- **状态管理**: 集中式状态管理,通过props传递数据
|
||
|
|
|
||
|
|
#### 6. 导航菜单配置
|
||
|
|
- **菜单位置**: 任务管理 → 查看任务
|
||
|
|
- **菜单路径**: `/dashboard/tasks/execution-process`
|
||
|
|
- **权限代码**: `testscenariotaskexecution.view`
|
||
|
|
- **图标**: `ClipboardList` - 表示查看和列表
|
||
|
|
- **排序**: 6 - 在任务管理子菜单中排在最后
|
||
|
|
- **描述**: 查看任务执行过程和结果
|
||
|
|
|
||
|
|
#### 7. 路由配置
|
||
|
|
- **路由路径**: `/dashboard/tasks/execution-process`
|
||
|
|
- **组件**: `TaskExecutionProcessView`
|
||
|
|
- **权限控制**: `testscenariotaskexecution.view`
|
||
|
|
- **懒加载**: 使用React.lazy进行代码分割
|
||
|
|
- **动画容器**: 使用AnimatedContainer包装
|
||
|
|
- **保护路由**: 使用ProtectedRoute进行权限验证
|
||
|
|
|
||
|
|
### 最新更新 (2025-01-21)
|
||
|
|
|
||
|
|
#### 任务列表显示优化
|
||
|
|
- **文件**: `X1.WebUI/src/pages/task-execution-process/TaskExecutionTree.tsx`
|
||
|
|
- **变更**: 移除不必要的字段显示,优化任务列表显示为更紧凑的格式
|
||
|
|
- **具体修改**:
|
||
|
|
- 移除用例流程 (`testCaseFlowId`) 显示
|
||
|
|
- 移除场景 (`scenarioCode`) 显示
|
||
|
|
- 移除执行人 (`executorId`) 显示
|
||
|
|
- 移除执行ID (`executionId`) 显示
|
||
|
|
- 优化间距和内边距,使显示更紧凑
|
||
|
|
- 减少组件间距:`space-y-2` → `space-y-1`
|
||
|
|
- 减少内边距:`p-3` → `p-2`,`p-4` → `p-2`
|
||
|
|
- 移除未使用的 `User` 图标导入
|
||
|
|
|
||
|
|
#### 步骤日志显示优化
|
||
|
|
- **文件**: `X1.WebUI/src/pages/task-execution-process/StepDetailsView.tsx`
|
||
|
|
- **变更**: 移除步骤日志信息中的执行人和ID显示,优化显示内容
|
||
|
|
- **具体修改**:
|
||
|
|
- 移除 `log.logId` 的显示
|
||
|
|
- 移除 `stepDetail.executorId` 的显示
|
||
|
|
- 简化步骤信息显示,只保留步骤名称、状态和耗时
|
||
|
|
- 优化布局,减少不必要的空白空间
|
||
|
|
- 为日志内容添加滚动条:`max-h-32 overflow-y-auto`
|
||
|
|
- 进一步紧凑化显示:减少间距和内边距
|
||
|
|
|
||
|
|
### 扩展性
|
||
|
|
|
||
|
|
1. **层级扩展**: 可以轻松添加更多层级(如步骤详情)
|
||
|
|
2. **过滤扩展**: 可以添加更多过滤条件(如时间范围、状态等)
|
||
|
|
3. **排序扩展**: 可以添加排序功能(如按时间、状态等)
|
||
|
|
4. **分页扩展**: 可以添加分页功能以处理大量数据
|
||
|
|
5. **实时更新**: 可以添加WebSocket支持实时状态更新
|
||
|
|
6. **导出功能**: 可以添加数据导出功能
|