feat: add benchmark-programs — 58 telecom COBOL test programs
作为子目录纳入系统,与核心测试管道协同 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
# 电信请求书系统 — 数据字典
|
||||
|
||||
## 记录布局
|
||||
|
||||
### 1. 通用计费记录 (45 bytes)
|
||||
**Copybook**: `common/copybooks/telecom/TEL-BILLING.cpy`
|
||||
**也兼容**: `common/copybooks/STD-REC.cpy` (字段宽度相同)
|
||||
|
||||
| 偏移 | 字段名 | PIC | 长度 | 说明 | 示例 |
|
||||
|------|--------|-----|------|------|------|
|
||||
| 0 | BILL-KEY | X(10) | 10 | 主键 | `CUST000001` |
|
||||
| 10 | BILL-CUST-ID | X(10) | 10 | 客户编号 | `CUST000001` |
|
||||
| 20 | BILL-PLAN-CODE | X(03) | 3 | 套餐代码 | `P01` |
|
||||
| 23 | BILL-AMOUNT | 9(09) | 9 | 金额(分) | `000001000` |
|
||||
| 32 | BILL-STATUS | X(01) | 1 | 状态标志 | `0` |
|
||||
| 33 | BILL-RESERVED | X(12) | 12 | 预留 | 空格 |
|
||||
|
||||
### 2. 通话明细记录 CDR (45 bytes)
|
||||
**Copybook**: `common/copybooks/telecom/TEL-CDR.cpy`
|
||||
|
||||
| 偏移 | 字段名 | PIC | 长度 | 说明 | 示例 |
|
||||
|------|--------|-----|------|------|------|
|
||||
| 0 | CDR-ID | X(10) | 10 | CDR编号 | `CDR0000001` |
|
||||
| 10 | CDR-CALLER | X(11) | 11 | 主叫号码 | `8613800138001` |
|
||||
| 21 | CDR-CALLEE | X(11) | 11 | 被叫号码 | `8613900999001` |
|
||||
| 32 | CDR-DURATION | 9(09) | 9 | 通话秒数 | `000000120` |
|
||||
| 41 | CDR-RESERVED | X(04) | 4 | 预留 | 空格 |
|
||||
|
||||
### 3. 请求书记录 (45 bytes)
|
||||
**Copybook**: `common/copybooks/telecom/TEL-INVOICE.cpy`
|
||||
|
||||
| 偏移 | 字段名 | PIC | 长度 | 说明 | 示例 |
|
||||
|------|--------|-----|------|------|------|
|
||||
| 0 | INV-ID | X(10) | 10 | 请求书编号 | `INV2025001` |
|
||||
| 10 | INV-CUST-ID | X(10) | 10 | 客户编号 | `CUST000001` |
|
||||
| 20 | INV-MONTH | 9(06) | 6 | 账期 | `202506` |
|
||||
| 26 | INV-AMOUNT | 9(09) | 9 | 金额(分) | `000050000` |
|
||||
| 35 | INV-STATUS | X(01) | 1 | 状态 | `0` |
|
||||
| 36 | INV-RESERVED | X(09) | 9 | 预留 | 空格 |
|
||||
|
||||
### 4. STD-REC (45 bytes) 电信映射
|
||||
**Copybook**: `common/copybooks/STD-REC.cpy`
|
||||
|
||||
| 偏移 | 字段名 | 电信映射 | 说明 |
|
||||
|------|--------|---------|------|
|
||||
| 0 | STD-KEY(10) | 客户/合同/CDR ID | 主键 |
|
||||
| 10 | STD-DATA-1(20) | 客户名/套餐名/CDR数据 | 数据域1 |
|
||||
| 30 | STD-DATA-2(10) | 金额/用量/时长 | 数据域2 |
|
||||
| 40 | STD-DATA-3(5) COMP-3 | 精度金额 | 压缩十进制 |
|
||||
|
||||
## 代码表
|
||||
|
||||
### 套餐代码 (PLAN-CODE)
|
||||
|
||||
| 代码 | 名称 | 基本料金 | 通話単価 | 無料通話 |
|
||||
|------|------|---------|---------|---------|
|
||||
| P01 | 基本套餐 | 3000分(30元) | 20分/秒 | 100分 |
|
||||
| P02 | 商务套餐 | 8000分(80元) | 10分/秒 | 500分 |
|
||||
| P03 | 无限套餐 | 20000分(200元) | 5分/秒 | 2000分 |
|
||||
|
||||
### 请求书状态 (INV-STATUS)
|
||||
|
||||
| 値 | 名称 | 说明 |
|
||||
|----|------|------|
|
||||
| 0 | 未发行 | 请求书未生成 |
|
||||
| 1 | 已发行 | 请求书已输出 |
|
||||
| 2 | 已支付 | 请求书已支付 |
|
||||
| 9 | 异常 | 请求书异常处理 |
|
||||
|
||||
### CDR通话类型 (CALL-TYPE)
|
||||
|
||||
| 値 | 名称 | 说明 |
|
||||
|----|------|------|
|
||||
| 01 | 语音通话 | 音声通話 |
|
||||
| 02 | 短信 | SMS |
|
||||
| 03 | 数据流量 | データ通信 |
|
||||
|
||||
## 文件名规范
|
||||
|
||||
各程序使用的文件命名与电信业务对应:
|
||||
|
||||
| 通用文件名 | 电信含义 | 使用类型 |
|
||||
|-----------|---------|---------|
|
||||
| master.dat | invoice.dat (请求书主文件) | 01/16 |
|
||||
| detail.dat | payment.dat (支付对账文件) | 01 |
|
||||
| master.dat | contract.dat (合同文件) | 02/03/18/19 |
|
||||
| detail.dat | cdr.dat (通话明细) | 02/20 |
|
||||
| detail.dat | billing-addr.dat (请求地址) | 03 |
|
||||
| file-a.dat | contract-master.dat | 16/17/22 |
|
||||
| file-b.dat | tariff-plan.dat | 16/22 |
|
||||
| file-c.dat | discount-rule.dat | 16 |
|
||||
@@ -0,0 +1,137 @@
|
||||
# 电信请求书系统 — 数据流
|
||||
|
||||
## 端到端批处理流程
|
||||
|
||||
### 月次请求书发行流程
|
||||
|
||||
```
|
||||
外部系统(BSS/OCS)
|
||||
│
|
||||
▼ CSV格式CDR
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ 1. CDR取込 │
|
||||
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||
│ │ 15-csv-fb-nolf │ │ 21-csv-fb-lf │ │
|
||||
│ │ 无LF CSV→固定长 │ │ 含LF CSV→固定长 │ │
|
||||
│ └────────┬────────┘ └────────┬────────┘ │
|
||||
│ │ │ │
|
||||
│ └──────────┬──────────┘ │
|
||||
│ ▼ │
|
||||
│ 2. CDR前処理 │
|
||||
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||
│ │ 29 ascii-ebcdic │ │ 35 MERGE │ │
|
||||
│ │ 编码转换(主机) │ │ 多源CDR合并 │ │
|
||||
│ └────────┬────────┘ └────────┬────────┘ │
|
||||
│ │ │ │
|
||||
│ └──────────┬──────────┘ │
|
||||
│ ▼ │
|
||||
│ 3. CDR校验 & 排序 │
|
||||
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||
│ │ 13 字段校验 │ │ 31 重複检测 │ │
|
||||
│ │ 27 电话号码格式 │ │ 30 状态变化检测 │ │
|
||||
│ └────────┬────────┘ └────────┬────────┘ │
|
||||
│ │ │ │
|
||||
│ └──────────┬──────────┘ │
|
||||
│ ▼ │
|
||||
│ 4. CDR排序 │
|
||||
│ ┌──────────────────────────────────────────────────┐ │
|
||||
│ │ 34 SORT CDR按客户/时间排序 │ │
|
||||
│ └──────────────────────┬───────────────────────────┘ │
|
||||
│ ▼ │
|
||||
│ 5. 合同匹配 & 计费 │
|
||||
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||
│ │ 02 合同↔CDR(1:N) │ │ 03 线路汇集(N:1)│ │
|
||||
│ └────────┬────────┘ └────────┬────────┘ │
|
||||
│ │ │ │
|
||||
│ └──────────┬──────────┘ │
|
||||
│ ▼ │
|
||||
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||
│ │ 24 资费表检索 │ │ 25 计费子程序 │ │
|
||||
│ │ (SEARCH ALL) │ │ (CALL d×rate) │ │
|
||||
│ └────────┬────────┘ └────────┬────────┘ │
|
||||
│ │ │ │
|
||||
│ └──────────┬──────────┘ │
|
||||
│ ▼ │
|
||||
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||
│ │ 05 IF条件判定 │ │ 06 EVALUATE套餐 │ │
|
||||
│ │ (料金阈值分支) │ │ (套餐类型判定) │ │
|
||||
│ └────────┬────────┘ └────────┬────────┘ │
|
||||
│ │ │ │
|
||||
│ └──────────┬──────────┘ │
|
||||
│ ▼ │
|
||||
│ 6. 费用汇总 │
|
||||
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||
│ │ 07 加入者月汇总 │ │ 08 套餐统计 │ │
|
||||
│ │ (key切 ADD累加) │ │ (COUNT/MIN/MAX) │ │
|
||||
│ └────────┬────────┘ └────────┬────────┘ │
|
||||
│ │ │ │
|
||||
│ └──────────┬──────────┘ │
|
||||
│ ▼ │
|
||||
│ ┌──────────────────────────────────────────────────┐ │
|
||||
│ │ 32/33 混合处理(1:N+key切) │ │
|
||||
│ └──────────────────────┬───────────────────────────┘ │
|
||||
│ ▼ │
|
||||
│ 7. 请求书生成 & 输出 │
|
||||
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||
│ │ 04 请求书编辑 │ │ 10/11/12 分割 │ │
|
||||
│ │ (报表/HEADING) │ │ (50/25/100分割) │ │
|
||||
│ └────────┬────────┘ └────────┬────────┘ │
|
||||
│ │ │ │
|
||||
│ └──────────┬──────────┘ │
|
||||
│ ▼ │
|
||||
│ 8. 事后处理 │
|
||||
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||
│ │ 01 请求书对账 │ │ 09/23/26 DB更新 │ │
|
||||
│ │ (1:1 Invoice↔Pay)│ │ (客户DB更新检索) │ │
|
||||
│ └─────────────────┘ └─────────────────┘ │
|
||||
│ │
|
||||
│ 9. 辅助 │
|
||||
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||
│ │ 14 在线照会 │ │ 28 SYSIN参数 │ │
|
||||
│ │ (CICS模拟) │ │ (批量参数设定) │ │
|
||||
│ └─────────────────┘ └─────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
|
||||
▼
|
||||
请求书文件(印刷/PDF/Web)
|
||||
```
|
||||
|
||||
## 文件间关联
|
||||
|
||||
以下程序直接读取前段程序的输出文件:
|
||||
|
||||
| 程序 | 输入来源 | 说明 |
|
||||
|------|---------|------|
|
||||
| 34-sort | ← 15-csv-fb-nolf 或 21-csv-fb-lf | CDR排序需要先取込 |
|
||||
| 02-matching-1-N | ← 34-sort | 合同匹配需要已排序CDR |
|
||||
| 07-keybreak-summary | ← 02-matching-1-N | 汇总需要已匹配的合同↔CDR |
|
||||
| 04-edit-getput | ← 07-keybreak-summary | 请求书输出需要汇总数据 |
|
||||
| 10-divide-50 | ← 04-edit-getput | 分割需要已生成的请求书 |
|
||||
| 16-matching-2stage-1-1 | ← 01-matching-1-1 中间文件 | 二级对账 |
|
||||
| 17-matching-2stage-N-1 | ← 03-matching-N-1 中间文件 | 二级聚合 |
|
||||
| 22-matching-2stage-MN | ← 18~20 中间文件 | 二级套餐匹配 |
|
||||
| 32-mix-1N-samekeybreak | ← 02-matching-1-N 输出 | 混合匹配+key切 |
|
||||
| 33-mix-1N-diffkeybreak | ← 02-matching-1-N 输出 | 混合匹配+key切 |
|
||||
|
||||
## 数据示例
|
||||
|
||||
### CDR 数据 (CSV)
|
||||
```
|
||||
CDR0000001,8613800138001,8613900999001,20250601083000,000000120,01
|
||||
CDR0000002,8613800138001,8613700777001,20250601084500,000000045,01
|
||||
CDR0000003,8613900999001,8613800138001,20250601090000,000000300,02
|
||||
```
|
||||
|
||||
### 请求书数据
|
||||
```
|
||||
INV2025001 CUST000001 202506 000050000 0
|
||||
INV2025002 CUST000002 202506 000120000 1
|
||||
INV2025003 CUST000003 202506 000030000 2
|
||||
```
|
||||
|
||||
### 合同数据
|
||||
```
|
||||
CTR000001 CUST000001 P01 20240101 20261231
|
||||
CTR000002 CUST000002 P02 20240601 20261231
|
||||
CTR000003 CUST000003 P03 20250101 20261231
|
||||
```
|
||||
Reference in New Issue
Block a user