ETest-Vue-FastAPI/.kiro/specs/test-flow-color-legend/design.md

185 lines
5.0 KiB
Markdown
Raw Normal View History

2026-01-08 11:39:47 +08:00
# 设计文档
## 概述
本设计为测试流程列表页面添加颜色图例功能。图例将显示在表格上方,展示所有测试分类及其对应的颜色,帮助用户快速理解表格中彩色标签的含义。
## 架构
### 前端组件架构
```
test_flow/index.vue
├── 查询表单区域
├── 操作按钮区域
├── 颜色图例组件 (新增)
│ └── 分类颜色映射显示
├── 数据表格
│ └── 测试项列(使用彩色标签)
└── 分页组件
```
### 颜色分配策略
使用一致的颜色分配算法,确保同一测试分类在所有地方都显示相同的颜色:
- 基于分类ID的哈希值来分配颜色索引
- 使用模运算确保颜色索引在可用颜色范围内
- 颜色数组:`['#409EFF', '#67C23A', '#909399', '#E6A23C', '#F56C6C', '#8E44AD', '#FF7F50']`
## 组件和接口
### 1. 颜色图例组件
**位置**: 在操作按钮行和数据表格之间
**数据源**:
- `categoryOptions`: 从后端API获取的所有测试分类列表
- `tagColors`: 预定义的颜色数组
**显示逻辑**:
```javascript
// 为每个分类计算一致的颜色索引
getCategoryColor(categoryId) {
const colorIndex = categoryId % this.tagColors.length;
return this.tagColors[colorIndex];
}
```
### 2. 表格标签渲染更新
**当前实现问题**:
- 使用数组索引 `index % tagColors.length` 分配颜色
- 同一分类在不同行可能显示不同颜色
**改进方案**:
- 改用分类ID来计算颜色索引
- 确保同一分类始终显示相同颜色
```javascript
// 修改前
:style="{backgroundColor: tagColors[index % tagColors.length]}"
// 修改后
:style="{backgroundColor: getCategoryColor(tag.test_category_id)}"
```
## 数据模型
### 测试分类数据结构
```javascript
{
id: Number, // 分类ID
name: String, // 分类名称
// ... 其他字段
}
```
### 图例项数据结构
```javascript
{
categoryId: Number, // 分类ID
categoryName: String, // 分类名称
color: String // 十六进制颜色值
}
```
## 正确性属性
*属性是指在系统所有有效执行中都应该成立的特征或行为——本质上是关于系统应该做什么的正式声明。属性作为人类可读规范和机器可验证正确性保证之间的桥梁。*
### 属性 1: 颜色一致性
*对于任何* 测试分类ID无论在图例中还是在表格标签中多次调用颜色计算函数都应该返回相同的颜色值
**验证: 需求 1.2, 2.1, 3.1, 3.2, 3.4**
### 属性 2: 图例完整性
*对于任何* 分类列表,图例中显示的分类数量应该等于输入的分类数量
**验证: 需求 1.4**
### 属性 3: 图例项结构完整性
*对于任何* 图例项渲染后的DOM元素应该同时包含颜色方块和分类名称文本
**验证: 需求 1.3**
### 属性 4: 颜色来源有效性
*对于任何* 分类ID分配的颜色应该存在于预定义的tagColors数组中
**验证: 需求 3.3**
### 属性 5: 图例项间距一致性
*对于任何* 相邻的图例项对,它们之间的间距应该相等
**验证: 需求 2.4**
## 错误处理
### 1. 分类数据加载失败
- **场景**: API请求失败或返回空数据
- **处理**: 显示空图例或提示信息,不影响表格正常显示
### 2. 颜色数组未定义
- **场景**: tagColors数组为空或未初始化
- **处理**: 使用默认颜色或灰色作为后备方案
### 3. 分类ID无效
- **场景**: 分类ID为null、undefined或非数字
- **处理**: 使用默认颜色索引0
## 测试策略
### 单元测试
1. **颜色计算函数测试**
- 测试相同ID返回相同颜色
- 测试不同ID可能返回不同颜色
- 测试边界情况ID为0、负数、很大的数
2. **图例渲染测试**
- 测试空分类列表的渲染
- 测试单个分类的渲染
- 测试多个分类的渲染
### 集成测试
1. **端到端显示测试**
- 验证图例和表格标签颜色一致
- 验证页面加载后图例正确显示
- 验证响应式布局在不同屏幕尺寸下的表现
### 视觉回归测试
1. 截图对比测试确保UI变更不影响现有布局
2. 验证颜色对比度满足可访问性标准
## UI设计规范
### 图例布局
```
┌─────────────────────────────────────────────────┐
│ 测试项图例: │
│ ■ 分类1 ■ 分类2 ■ 分类3 ■ 分类4 ■ 分类5 │
└─────────────────────────────────────────────────┘
```
### 样式规范
- **图例容器**:
- 背景色: `#f5f7fa`
- 内边距: `10px 15px`
- 边框圆角: `4px`
- 外边距: `10px 0`
- **图例项**:
- 颜色方块: `12px × 12px`
- 方块圆角: `2px`
- 文字大小: `14px`
- 项间距: `15px`
- **响应式**:
- 小屏幕: 垂直堆叠
- 大屏幕: 水平排列,自动换行