196 lines
5.4 KiB
Markdown
196 lines
5.4 KiB
Markdown
# Implementation Plan
|
|
|
|
- [x] 1. 创建后端数据模型和VO
|
|
|
|
|
|
- 创建GenerateWorkOrderFromSampleModel请求模型
|
|
- 创建WorkOrderGenerationResponseModel响应模型
|
|
- 确保模型支持camelCase和snake_case转换
|
|
- _Requirements: 3.1, 3.2, 3.3, 3.4, 3.5_
|
|
|
|
- [ ] 2. 实现后端服务层逻辑
|
|
- [x] 2.1 在warehouse_sample_service.py中实现generate_work_orders_from_samples方法
|
|
|
|
|
|
- 验证样品ID列表有效性
|
|
- 验证测试流程ID有效性
|
|
- 查询样品信息并验证状态
|
|
- 获取测试流程的测试类别列表
|
|
- _Requirements: 1.4, 2.1, 4.1, 4.2_
|
|
|
|
- [x] 2.2 实现工单创建逻辑
|
|
|
|
- 为每个样品和测试类别组合创建工单
|
|
- 查询对应的测试单元(test_item)
|
|
- 查询测试任务(test_job)获取测试人员信息
|
|
- 构造工单数据并保存
|
|
- _Requirements: 2.3, 3.2, 3.3, 3.4, 3.5_
|
|
|
|
- [x] 2.3 实现样品状态更新逻辑
|
|
|
|
- 工单创建成功后更新样品状态为"测试中"
|
|
- 处理批量更新场景
|
|
- _Requirements: 4.4_
|
|
|
|
- [x] 2.4 实现错误处理和结果汇总
|
|
|
|
- 捕获单个样品的创建失败,不影响其他样品
|
|
- 记录失败原因
|
|
- 返回成功和失败的统计信息
|
|
- _Requirements: 2.4_
|
|
|
|
- [ ] 2.5 编写服务层单元测试
|
|
- 测试样品状态验证逻辑
|
|
- 测试测试流程配置查询
|
|
- 测试工单数据构造
|
|
- 测试错误处理逻辑
|
|
- _Requirements: 1.4, 2.1, 2.2, 2.3, 2.4, 3.1, 3.2, 3.3, 3.4, 3.5, 4.1, 4.2, 4.4_
|
|
|
|
- [ ] 3. 实现后端API控制器
|
|
- [x] 3.1 在warehouse_sample_controller.py中添加generate_work_orders端点
|
|
|
|
|
|
- 定义POST /warehouse/sample/generate_work_orders路由
|
|
- 接收GenerateWorkOrderFromSampleModel请求
|
|
- 调用服务层方法
|
|
- 返回WorkOrderGenerationResponseModel响应
|
|
- 添加权限验证
|
|
- _Requirements: 1.2, 1.4_
|
|
|
|
- [x] 3.2 添加请求验证
|
|
|
|
- 验证sample_ids不为空
|
|
- 验证test_flow_id有效
|
|
- 添加适当的错误响应
|
|
- _Requirements: 1.4_
|
|
|
|
- [ ] 3.3 编写控制器单元测试
|
|
- 测试正常请求处理
|
|
- 测试参数验证
|
|
- 测试权限验证
|
|
- _Requirements: 1.2, 1.4_
|
|
|
|
- [ ] 4. 实现前端样品管理页面增强
|
|
- [x] 4.1 在warehouse/sample/index.vue中添加"生成工单"按钮
|
|
|
|
|
|
- 在操作按钮区域添加"生成工单"按钮
|
|
- 按钮仅在选中样品时启用
|
|
- 添加权限控制
|
|
- _Requirements: 1.1_
|
|
|
|
- [x] 4.2 添加工单生成对话框
|
|
|
|
- 创建el-dialog组件
|
|
- 添加测试流程选择下拉框
|
|
- 添加工单名称输入框
|
|
- 添加备注输入框
|
|
- 显示选中的样品数量
|
|
- _Requirements: 1.2, 5.1, 5.2_
|
|
|
|
- [x] 4.3 实现测试流程选择功能
|
|
|
|
- 加载测试流程选项列表
|
|
- 监听测试流程变化
|
|
- 获取并显示测试流程标签
|
|
- 使用彩色标签展示测试类别
|
|
- _Requirements: 1.3, 2.2_
|
|
|
|
- [x] 4.4 实现工单生成提交逻辑
|
|
|
|
- 收集表单数据
|
|
- 调用后端API
|
|
- 处理成功响应(显示成功消息,刷新列表)
|
|
- 处理失败响应(显示错误详情)
|
|
- 关闭对话框
|
|
- _Requirements: 1.4, 1.5_
|
|
|
|
- [x] 4.5 添加前端数据字段和方法
|
|
|
|
- 添加workOrderDialogVisible状态
|
|
- 添加workOrderForm表单对象
|
|
- 添加testFlowOptions选项列表
|
|
- 添加testFlowTags标签列表
|
|
- 实现handleGenerateWorkOrder方法
|
|
- 实现loadTestFlowOptions方法
|
|
- 实现fetchTestFlowTags方法
|
|
- 实现submitWorkOrderGeneration方法
|
|
- _Requirements: 1.1, 1.2, 1.3, 1.4, 1.5_
|
|
|
|
- [ ] 4.6 编写前端组件测试
|
|
- 测试对话框打开和关闭
|
|
- 测试表单验证
|
|
- 测试API调用
|
|
- _Requirements: 1.1, 1.2, 1.3, 1.4, 1.5_
|
|
|
|
- [ ] 5. 创建API接口文件
|
|
- [x] 5.1 在ruoyi-fastapi-frontend/src/api/warehouse/sample.js中添加generateWorkOrders方法
|
|
|
|
|
|
|
|
- 定义POST请求方法
|
|
- 配置请求URL和参数
|
|
- 导出方法供组件使用
|
|
- _Requirements: 1.4_
|
|
|
|
- [ ] 6. 测试和验证
|
|
- [ ] 6.1 端到端测试
|
|
- 创建测试样品数据
|
|
- 测试单个样品生成工单
|
|
- 测试批量样品生成工单
|
|
- 验证工单数据正确性
|
|
- 验证样品状态更新
|
|
- _Requirements: 1.1, 1.2, 1.3, 1.4, 1.5, 2.1, 2.2, 2.3, 2.4, 3.1, 3.2, 3.3, 3.4, 3.5, 4.1, 4.2, 4.4_
|
|
|
|
- [ ] 6.2 属性测试
|
|
- **Property 1: 工单创建完整性**
|
|
- **Validates: Requirements 2.3**
|
|
|
|
- [ ] 6.3 属性测试
|
|
- **Property 2: 样品状态一致性**
|
|
- **Validates: Requirements 4.4**
|
|
|
|
- [ ] 6.4 属性测试
|
|
- **Property 3: 工单数据关联正确性**
|
|
- **Validates: Requirements 3.2**
|
|
|
|
- [ ] 6.5 属性测试
|
|
- **Property 4: 测试类别映射正确性**
|
|
- **Validates: Requirements 2.2**
|
|
|
|
- [ ] 6.6 属性测试
|
|
- **Property 5: 批量操作原子性**
|
|
- **Validates: Requirements 2.4**
|
|
|
|
- [ ] 6.7 属性测试
|
|
- **Property 6: 工单命名规则一致性**
|
|
- **Validates: Requirements 5.5**
|
|
|
|
- [ ] 7. 错误场景测试
|
|
- [ ] 7.1 测试样品不存在场景
|
|
- 提供不存在的样品ID
|
|
- 验证错误处理
|
|
- _Requirements: 2.4_
|
|
|
|
- [ ] 7.2 测试样品状态不符合场景
|
|
- 使用非"待测试"状态的样品
|
|
- 验证被正确拒绝
|
|
- _Requirements: 4.1, 4.2_
|
|
|
|
- [ ] 7.3 测试测试流程不存在场景
|
|
- 提供不存在的测试流程ID
|
|
- 验证错误响应
|
|
- _Requirements: 2.1_
|
|
|
|
- [ ] 7.4 测试部分失败场景
|
|
- 混合有效和无效样品
|
|
- 验证部分成功的处理
|
|
- 验证失败信息记录
|
|
- _Requirements: 2.4_
|
|
|
|
- [ ] 8. 最终检查点
|
|
- 确保所有测试通过
|
|
- 验证前后端集成正常
|
|
- 检查用户体验流畅性
|
|
- 如有问题,询问用户
|