177 lines
5.5 KiB
Markdown
177 lines
5.5 KiB
Markdown
|
|
# 设计文档
|
|||
|
|
|
|||
|
|
## 概述
|
|||
|
|
|
|||
|
|
本设计重构业务流程,将订单从"生成工单"的起点改为"从工单生成"的终点。订单变为只读展示,仅用于客户结算。
|
|||
|
|
|
|||
|
|
## 架构
|
|||
|
|
|
|||
|
|
### 新的业务流程
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
样品 → 生成工单 → 筛选工单 → 生成订单(结算用)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 数据流向
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
1. 样品管理 → 选择样品 → 生成工单
|
|||
|
|
2. 工单管理 → 筛选工单 → 批量选择 → 生成订单
|
|||
|
|
3. 订单管理 → 只读展示 → 查看工单来源
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 组件和接口
|
|||
|
|
|
|||
|
|
### 1. 订单页面改造(只读模式)
|
|||
|
|
|
|||
|
|
**前端修改:**
|
|||
|
|
- 隐藏所有编辑按钮(新增、修改、删除、生成工单)
|
|||
|
|
- 保留查看、导出、打印功能
|
|||
|
|
- 添加"关联工单"列显示工单数量
|
|||
|
|
- 订单详情页显示关联工单列表
|
|||
|
|
|
|||
|
|
**后端修改:**
|
|||
|
|
- 保留查询接口
|
|||
|
|
- 保留导出接口
|
|||
|
|
- 添加查询关联工单接口
|
|||
|
|
|
|||
|
|
### 2. 工单页面增强
|
|||
|
|
|
|||
|
|
**前端新增功能:**
|
|||
|
|
- 添加"生成订单"按钮(批量操作)
|
|||
|
|
- 添加工单筛选条件
|
|||
|
|
- 添加多选功能
|
|||
|
|
- 添加订单生成对话框
|
|||
|
|
|
|||
|
|
**后端新增接口:**
|
|||
|
|
```python
|
|||
|
|
POST /work_order/generate_order
|
|||
|
|
{
|
|||
|
|
"work_order_ids": [1, 2, 3],
|
|||
|
|
"customer_id": 123,
|
|||
|
|
"memo": "备注"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 样品生成工单调整
|
|||
|
|
|
|||
|
|
**前端修改:**
|
|||
|
|
- 移除自动生成订单的逻辑
|
|||
|
|
- 仅显示工单生成成功提示
|
|||
|
|
|
|||
|
|
**后端修改:**
|
|||
|
|
- 移除生成订单的代码
|
|||
|
|
- 仅创建工单
|
|||
|
|
|
|||
|
|
## 数据模型
|
|||
|
|
|
|||
|
|
### 订单表增加字段
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
ALTER TABLE test_order ADD COLUMN work_order_ids TEXT COMMENT '关联的工单ID列表(JSON数组)';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 工单表增加字段
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
ALTER TABLE work_order ADD COLUMN order_id INTEGER COMMENT '关联的订单ID';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 正确性属性
|
|||
|
|
|
|||
|
|
*属性是指在系统所有有效执行中都应该成立的特征或行为——本质上是关于系统应该做什么的正式声明。属性作为人类可读规范和机器可验证正确性保证之间的桥梁。*
|
|||
|
|
|
|||
|
|
### 属性 1: 订单只读性
|
|||
|
|
|
|||
|
|
*对于任何* 订单页面的编辑操作,系统都应该拒绝或隐藏该操作
|
|||
|
|
**验证: 需求 1.1, 1.2, 1.3, 1.4**
|
|||
|
|
|
|||
|
|
### 属性 2: 工单订单关联性
|
|||
|
|
|
|||
|
|
*对于任何* 从工单生成的订单,订单中的work_order_ids应该包含所有选中的工单ID
|
|||
|
|
**验证: 需求 3.2, 3.5**
|
|||
|
|
|
|||
|
|
### 属性 3: 工单唯一订单关联
|
|||
|
|
|
|||
|
|
*对于任何* 工单,其order_id字段最多只能关联一个订单
|
|||
|
|
**验证: 需求 3.5**
|
|||
|
|
|
|||
|
|
### 属性 4: 样品工单独立性
|
|||
|
|
|
|||
|
|
*对于任何* 从样品生成的工单,不应该自动生成订单
|
|||
|
|
**验证: 需求 5.4, 5.5**
|
|||
|
|
|
|||
|
|
## 错误处理
|
|||
|
|
|
|||
|
|
### 1. 重复生成订单
|
|||
|
|
- **场景**: 选中的工单已经关联了订单
|
|||
|
|
- **处理**: 显示警告,列出已关联订单的工单,询问是否继续
|
|||
|
|
|
|||
|
|
### 2. 不同客户的工单
|
|||
|
|
- **场景**: 选中的工单属于不同客户
|
|||
|
|
- **处理**: 显示错误提示,要求选择同一客户的工单
|
|||
|
|
|
|||
|
|
### 3. 空工单列表
|
|||
|
|
- **场景**: 用户未选择任何工单就点击生成订单
|
|||
|
|
- **处理**: 禁用按钮或显示提示
|
|||
|
|
|
|||
|
|
## 测试策略
|
|||
|
|
|
|||
|
|
### 单元测试
|
|||
|
|
|
|||
|
|
1. **订单只读测试**
|
|||
|
|
- 验证编辑按钮被隐藏
|
|||
|
|
- 验证编辑接口返回错误
|
|||
|
|
|
|||
|
|
2. **工单生成订单测试**
|
|||
|
|
- 测试单个工单生成订单
|
|||
|
|
- 测试多个工单批量生成订单
|
|||
|
|
- 测试关联关系正确建立
|
|||
|
|
|
|||
|
|
### 集成测试
|
|||
|
|
|
|||
|
|
1. **完整流程测试**
|
|||
|
|
- 样品 → 工单 → 订单的完整流程
|
|||
|
|
- 验证数据关联正确
|
|||
|
|
|
|||
|
|
2. **边界测试**
|
|||
|
|
- 已关联订单的工单再次生成
|
|||
|
|
- 不同客户工单混合选择
|
|||
|
|
|
|||
|
|
## UI设计
|
|||
|
|
|
|||
|
|
### 订单列表页面
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────────────────┐
|
|||
|
|
│ 订单管理(只读) │
|
|||
|
|
├─────────────────────────────────────────────────┤
|
|||
|
|
│ [搜索] [重置] [导出] [打印] │
|
|||
|
|
├─────────────────────────────────────────────────┤
|
|||
|
|
│ 订单号 | 客户 | 工单数 | 金额 | 状态 | 操作 │
|
|||
|
|
│ ORD001 | 客户A | 3个 | 1000 | 已完成 | [查看] │
|
|||
|
|
└─────────────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 工单列表页面
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────────────────┐
|
|||
|
|
│ 工单管理 │
|
|||
|
|
├─────────────────────────────────────────────────┤
|
|||
|
|
│ [搜索] [重置] [生成订单] │
|
|||
|
|
├─────────────────────────────────────────────────┤
|
|||
|
|
│ □ | 工单号 | 客户 | 样品 | 状态 | 订单 | 操作 │
|
|||
|
|
│ ☑ | WO001 | 客户A | 样品1 | 完成 | - | [查看] │
|
|||
|
|
│ ☑ | WO002 | 客户A | 样品2 | 完成 | - | [查看] │
|
|||
|
|
└─────────────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 实施步骤
|
|||
|
|
|
|||
|
|
1. **数据库迁移** - 添加新字段
|
|||
|
|
2. **订单页面改造** - 改为只读模式
|
|||
|
|
3. **工单页面增强** - 添加生成订单功能
|
|||
|
|
4. **样品生成工单调整** - 移除自动生成订单
|
|||
|
|
5. **测试验证** - 完整流程测试
|