ETest-Vue-FastAPI/.kiro/specs/workorder-to-order-refactor/design.md

5.5 KiB
Raw Blame History

设计文档

概述

本设计重构业务流程,将订单从"生成工单"的起点改为"从工单生成"的终点。订单变为只读展示,仅用于客户结算。

架构

新的业务流程

样品 → 生成工单 → 筛选工单 → 生成订单(结算用)

数据流向

1. 样品管理 → 选择样品 → 生成工单
2. 工单管理 → 筛选工单 → 批量选择 → 生成订单
3. 订单管理 → 只读展示 → 查看工单来源

组件和接口

1. 订单页面改造(只读模式)

前端修改:

  • 隐藏所有编辑按钮(新增、修改、删除、生成工单)
  • 保留查看、导出、打印功能
  • 添加"关联工单"列显示工单数量
  • 订单详情页显示关联工单列表

后端修改:

  • 保留查询接口
  • 保留导出接口
  • 添加查询关联工单接口

2. 工单页面增强

前端新增功能:

  • 添加"生成订单"按钮(批量操作)
  • 添加工单筛选条件
  • 添加多选功能
  • 添加订单生成对话框

后端新增接口:

POST /work_order/generate_order
{
  "work_order_ids": [1, 2, 3],
  "customer_id": 123,
  "memo": "备注"
}

3. 样品生成工单调整

前端修改:

  • 移除自动生成订单的逻辑
  • 仅显示工单生成成功提示

后端修改:

  • 移除生成订单的代码
  • 仅创建工单

数据模型

订单表增加字段

ALTER TABLE test_order ADD COLUMN work_order_ids TEXT COMMENT '关联的工单ID列表JSON数组';

工单表增加字段

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. 测试验证 - 完整流程测试