docs: add BOM extraction requirements and minor code fixes
All checks were successful
NTFY Notification / notify (push) Successful in 2s
All checks were successful
NTFY Notification / notify (push) Successful in 2s
- Add BOM auto-extraction system requirements specification - Minor property name fixes in M05_PreProcessor (.Pattern -> .pattern) - Fix .Row property references to .row for consistency Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
310
reference_docs/布莱迪压力表BOM自动提取系统需求规格说明书.md
Normal file
310
reference_docs/布莱迪压力表BOM自动提取系统需求规格说明书.md
Normal file
@@ -0,0 +1,310 @@
|
||||
# 布莱迪压力表产品BOM自动提取系统
|
||||
|
||||
# 需求规格说明书
|
||||
|
||||
---
|
||||
|
||||
**文档版本**: V1.0
|
||||
**创建日期**: 2025年2月
|
||||
**编制部门**: 信息技术部
|
||||
|
||||
---
|
||||
|
||||
## 1. 项目概述
|
||||
|
||||
### 1.1 项目背景
|
||||
|
||||
布莱迪公司在压力表产品生产过程中,需要根据客户订单的产品型号提取对应的BOM(物料清单)。当前手工提取流程存在效率低、易出错等问题。为提高工作效率,减少人为错误,需要开发一套基于Excel VBA的自动化BOM提取系统。
|
||||
|
||||
### 1.2 项目目标
|
||||
|
||||
本系统旨在实现以下目标:
|
||||
|
||||
1. 自动解析产品型号,提取关键参数
|
||||
2. 基于提取参数,自动匹配BOM库中的物料
|
||||
3. 输出标准化的BOM清单,便于物料领用
|
||||
4. 记录异常情况,便于人工复核
|
||||
5. 提供代码接口,支持未来功能扩展
|
||||
|
||||
---
|
||||
|
||||
## 2. 功能需求
|
||||
|
||||
### 2.1 产品型号解析功能
|
||||
|
||||
#### 2.1.1 型号结构识别
|
||||
|
||||
系统需要从完整产品型号中识别并提取表头部分。产品型号的完整格式为:
|
||||
|
||||
```
|
||||
[表头]|[表盘]|[附件]|[法兰隔膜]
|
||||
```
|
||||
|
||||
其中,仅提取表头部分,其余部分暂时丢弃。表头部分的标准结构为:
|
||||
|
||||
```
|
||||
[型号]-[公称外径].[安装形式].[壳体形式].[过程连接&接液材质].[量程范围].[仪表特性]
|
||||
```
|
||||
|
||||
#### 2.1.2 参数提取规则
|
||||
|
||||
系统需要按照以下规则提取各项参数:
|
||||
|
||||
| 参数名称 | 变量名 | 提取规则 |
|
||||
|---------|--------|---------|
|
||||
| 型号 | xh | '-'符号之前的字母组合(预留,暂不参与BOM匹配) |
|
||||
| 公称外径 | gcwj | '-'符号之后,第一个'.'之前的数字(预留,暂不参与BOM匹配) |
|
||||
| 安装形式 | azxs | 第一段(如:A0) |
|
||||
| 表壳形式 | bkxs | 第二段(如:531),包含表壳和罩壳代码 |
|
||||
| 过程连接 | gclj | 第三段去除最后一位数字(如:M203→M20) |
|
||||
| 接液材质 | jycz | 第三段的最后一位数字(如:M203→3) |
|
||||
| 量程范围 | lcfw | 第四段(如:M06) |
|
||||
| 附加功能 | fjgn | 量程范围之后的所有段(用','或'.'分隔,如:N3,N2) |
|
||||
|
||||
#### 2.1.3 型号完整性验证
|
||||
|
||||
系统需要验证表头型号是否包含完整的结构。如果型号缺少必要的段落,应记录为异常情况,并在提取备注中说明。
|
||||
|
||||
#### 2.1.4 测试用例
|
||||
|
||||
系统需要能够正确处理以下测试型号:
|
||||
|
||||
- `YTHN-100.A0.531.G123.M04.Y3|BP-088.2312.B09.0A3`
|
||||
- `YTHN-100.BZ.531.M201.M09.Y3|BP-088.2312.M37.0A3`
|
||||
- `YTHN-100.A0.531.M203.M06.Y3|BP-088.2312.M06.0A3|LSG-1.14x2.M20F.M20.3^HDJ.M20F.BW.14×2×60.3^TSFJ^WHP.70X20X1.3`
|
||||
- `YTHN-100.A0.531.M203.P21.Y3|BP-088.2312.M39.0A3|HDJ.M20F.BW.14×2×60.3^LSG-1.14x2.M20F.M20.3^TSFJ^WHP.70X20X1.3`
|
||||
- `YTHN-100.A0.531.M201.M03.N1.Y3|BP-088.2312.M31.0A4`
|
||||
- `YTHN-100.A0.531.M201.M04.N1,N2.Y3|BP-088.2312.M32.0A3`
|
||||
- `YTHN-100.A0.531.M201.M04.N1.N2.Y3|BP-088.2312.M32.0A3`
|
||||
- `YTHN-100.A0.531.Z121.M07.Y3|BP-088.2312.M07.0A3`
|
||||
- `YTHN-100.A0.531.Z121.M08.Y3|BP-088.2312.M08.0A3`
|
||||
|
||||
---
|
||||
|
||||
### 2.2 BOM匹配功能
|
||||
|
||||
#### 2.2.1 BOM库文件结构
|
||||
|
||||
BOM库数据保存在与当前工作簿同目录下的**BOM库.xlsx**文件中。该文件包含多个工作表,每个工作表代表一类物料,常见的工作表包括:
|
||||
|
||||
- 接头
|
||||
- 弹性元件
|
||||
- 机芯
|
||||
- 部件
|
||||
- 边
|
||||
|
||||
#### 2.2.2 匹配规则
|
||||
|
||||
系统采用AND逻辑进行匹配,即BOM库记录中的所有条件列都必须满足才算匹配成功。具体规则如下:
|
||||
|
||||
| 规则类型 | 说明 |
|
||||
|---------|------|
|
||||
| 空值匹配 | BOM库单元格为空时,视为通配符(Match All),条件成立 |
|
||||
| 否定匹配 | BOM库单元格以'!='开头(如:!=SCRJ),则提取值不等于该值时条件成立 |
|
||||
| 精确匹配 | BOM库单元格为普通值时,提取值必须完全相等 |
|
||||
| 包含匹配(fjgn) | 对于附加功能字段,只要提取的功能列表包含BOM库中的值即可(如:提取出N3,N2,BOM库中是N3,则匹配成功) |
|
||||
|
||||
#### 2.2.3 部件物料特殊处理
|
||||
|
||||
'部件'工作表中的记录比较特殊,每条记录包含三个物料的数据:
|
||||
|
||||
1. 部件物料本身
|
||||
2. 接头物料
|
||||
3. 弹性元件物料
|
||||
|
||||
**选择策略:**
|
||||
|
||||
- 优先选择'部件'物料
|
||||
- 当'部件'物料库存不足时,选择'接头'和'弹性元件'物料
|
||||
- 库存检查接口预留,当前默认库存充足(返回True)
|
||||
|
||||
**部件物料验证规则:**
|
||||
|
||||
针对"部件"这个物料和其子物料"接头"和"弹性元件",在提取出的物料中,只有满足以下两种情况的一种,才算正常:
|
||||
|
||||
- 一条"部件"物料
|
||||
- 一条"接头"物料 + 一条"弹性元件"物料
|
||||
|
||||
如果出现其他组合(如:只有接头没有弹性元件,或同时有部件和接头),则视为异常,需要在提取备注中记录。
|
||||
|
||||
#### 2.2.4 匹配结果验证
|
||||
|
||||
对于每个产品型号,在各个物料类别工作表中应该匹配到恰好1条记录。以下情况视为异常:
|
||||
|
||||
- 某个类别未匹配到任何记录(0条)
|
||||
- 某个类别匹配到多条记录(>1条)
|
||||
|
||||
所有异常情况需要记录到**提取备注**字段中,便于后续人工复核。
|
||||
|
||||
---
|
||||
|
||||
### 2.3 数据输入输出
|
||||
|
||||
#### 2.3.1 输入数据源
|
||||
|
||||
订单数据来源于当前工作簿中的某个工作表。该工作表应包含产品型号列,系统需要能够识别并读取该列数据。
|
||||
|
||||
#### 2.3.2 输出结果格式
|
||||
|
||||
系统将提取结果输出到当前工作簿的新工作表中。输出采用纵向展开格式,即每个物料一行,一个订单可能对应多行记录。
|
||||
|
||||
**输出字段包括:**
|
||||
|
||||
| 字段名称 | 说明 |
|
||||
|---------|------|
|
||||
| 原始产品型号 | 完整的产品型号字符串 |
|
||||
| 提取条件值 | azxs、bkxs、gclj、jycz、lcfw、fjgn等参数的值 |
|
||||
| 物料类型 | 如:机芯、部件、接头、弹性元件、边等 |
|
||||
| 物料名称 | 从BOM库中提取的物料名称 |
|
||||
| 物料编码 | 从BOM库中提取的物料编码 |
|
||||
| 物料数量 | 从BOM库中提取的物料数量 |
|
||||
| 提取备注 | 记录提取过程中的异常信息,如:型号不完整、匹配失败、匹配多条等 |
|
||||
|
||||
---
|
||||
|
||||
## 3. 技术规格要求
|
||||
|
||||
### 3.1 代码架构要求
|
||||
|
||||
#### 3.1.1 模块化设计
|
||||
|
||||
系统采用模块化设计,各功能模块之间保持解耦。主要模块包括:
|
||||
|
||||
- **型号解析模块**:负责解析产品型号,提取参数
|
||||
- **BOM匹配模块**:负责根据参数匹配BOM库中的物料
|
||||
- **数据输出模块**:负责将结果写入工作表
|
||||
- **库存查询模块**:负责查询物料库存状态(预留接口)
|
||||
|
||||
#### 3.1.2 接口设计
|
||||
|
||||
所有关键函数需要明确定义输入和输出接口。接口定义应包括:
|
||||
|
||||
- 函数名称和用途说明
|
||||
- 输入参数:名称、类型、说明
|
||||
- 输出结果:类型、说明
|
||||
- 异常处理:可能的错误情况及处理方式
|
||||
|
||||
#### 3.1.3 代码注释
|
||||
|
||||
所有函数、过程必须包含详细的注释,说明:
|
||||
|
||||
- 功能描述
|
||||
- 参数说明
|
||||
- 返回值说明
|
||||
- 使用示例
|
||||
- 注意事项
|
||||
|
||||
---
|
||||
|
||||
### 3.2 质量保证要求
|
||||
|
||||
#### 3.2.1 单元测试
|
||||
|
||||
关键接口需要编写单元测试。测试应覆盖:
|
||||
|
||||
- 正常输入情况
|
||||
- 边界值情况
|
||||
- 异常输入情况
|
||||
- 特殊字符处理
|
||||
|
||||
#### 3.2.2 异常处理
|
||||
|
||||
系统采用容错设计,遇到异常时继续运行,将异常信息记录在提取备注中。异常情况包括但不限于:
|
||||
|
||||
- 型号格式不完整
|
||||
- BOM库文件不存在或无法打开
|
||||
- 某类物料匹配失败(0条或多条)
|
||||
- 数据类型不匹配
|
||||
- 部件物料组合异常(不符合验证规则)
|
||||
|
||||
---
|
||||
|
||||
### 3.3 扩展性要求
|
||||
|
||||
#### 3.3.1 参数扩展
|
||||
|
||||
系统设计应支持未来新增提取参数。当前提取的参数包括:azxs、bkxs、gclj、jycz、lcfw、fjgn。
|
||||
|
||||
未来可能需要提取的参数包括但不限于:
|
||||
|
||||
- lcdw(量程单位)
|
||||
- btcy(表头充油)
|
||||
- bp(表盘)
|
||||
- dskd(单双刻度)
|
||||
- 其他业务参数
|
||||
|
||||
#### 3.3.2 接口预留
|
||||
|
||||
系统需要预留以下接口:
|
||||
|
||||
| 接口名称 | 功能说明 |
|
||||
|---------|---------|
|
||||
| 库存查询接口 | 输入:物料编码;输出:布尔值(True=有库存,False=无库存)。当前默认返回True |
|
||||
| 部件选择接口 | 输入:部件库存状态;输出:选择结果(部件或接头+弹性元件) |
|
||||
|
||||
---
|
||||
|
||||
## 4. 非功能性需求
|
||||
|
||||
### 4.1 性能要求
|
||||
|
||||
系统应能够在合理时间内完成BOM提取任务。对于包含100条订单记录的工作表,处理时间应控制在1分钟以内。
|
||||
|
||||
### 4.2 可维护性
|
||||
|
||||
代码结构清晰,注释完整,便于后续维护和功能扩展。变量命名规范,使用有意义的名称。
|
||||
|
||||
### 4.3 可靠性
|
||||
|
||||
系统采用容错设计,即使遇到异常数据也能继续运行,确保已处理的数据不会丢失。所有异常情况都应被记录,便于追溯和排查问题。
|
||||
|
||||
---
|
||||
|
||||
## 5. 附录
|
||||
|
||||
### 5.1 可能的选择条件字段
|
||||
|
||||
以下是BOM库工作表中可能出现的所有选择条件字段,系统在识别条件列时应灵活处理:
|
||||
|
||||
| 变量名 | 变量标签 |
|
||||
|-------|---------|
|
||||
| azxs | 安装形式 |
|
||||
| bkxs | 表壳形式 |
|
||||
| gclj | 过程连接 |
|
||||
| jycz | 接液材质 |
|
||||
| lcdw | 量程单位 |
|
||||
| lcfw | 量程范围 |
|
||||
| fjgn | 附加功能 |
|
||||
| btcy | 表头充油 |
|
||||
| bp | 表盘 |
|
||||
| dskd | 单双刻度 |
|
||||
| nqlc | 内圈量程 |
|
||||
| bptx | 表盘特性 |
|
||||
| jddj | 精度等级 |
|
||||
| cpdm | 产品代码 |
|
||||
| tsjz | 特殊介质 |
|
||||
| tsyq | 特殊要求 |
|
||||
| bpts | 表盘套色 |
|
||||
| kdxh | 刻度线红色 |
|
||||
|
||||
---
|
||||
|
||||
### 5.2 测试型号示例
|
||||
|
||||
以下测试型号可用于验证系统功能:
|
||||
|
||||
| 编号 | 产品型号 |
|
||||
|-----|---------|
|
||||
| 1 | `YTHN-100.A0.531.G123.M04.Y3|BP-088.2312.B09.0A3` |
|
||||
| 2 | `YTHN-100.BZ.531.M201.M09.Y3|BP-088.2312.M37.0A3` |
|
||||
| 3 | `YTHN-100.A0.531.M203.M06.Y3|BP-088.2312.M06.0A3|LSG-1.14x2.M20F.M20.3^HDJ.M20F.BW.14×2×60.3^TSFJ^WHP.70X20X1.3` |
|
||||
| 4 | `YTHN-100.A0.531.M203.P21.Y3|BP-088.2312.M39.0A3|HDJ.M20F.BW.14×2×60.3^LSG-1.14x2.M20F.M20.3^TSFJ^WHP.70X20X1.3` |
|
||||
| 5 | `YTHN-100.A0.531.M201.M03.N1.Y3|BP-088.2312.M31.0A4` |
|
||||
| 6 | `YTHN-100.A0.531.M201.M04.N1,N2.Y3|BP-088.2312.M32.0A3` |
|
||||
| 7 | `YTHN-100.A0.531.M201.M04.N1.N2.Y3|BP-088.2312.M32.0A3` |
|
||||
| 8 | `YTHN-100.A0.531.Z121.M07.Y3|BP-088.2312.M07.0A3` |
|
||||
| 9 | `YTHN-100.A0.531.Z121.M08.Y3|BP-088.2312.M08.0A3` |
|
||||
|
||||
---
|
||||
|
||||
**文档结束**
|
||||
Reference in New Issue
Block a user