1. 项目概述
1.1 项目背景
为提升商户信息数据校验的效率和准确性,需要开发一个专门的校验控制台系统。该系统将支持批量文件上传、实时校验、历史记录查询等功能,为运营人员提供便捷的数据校验管理工具。
1.2 项目目标
- 统一平台:提供统一的商户信息数据校验管理平台
- 批量处理:支持批量文件处理和实时校验
- 可视化展示:实现校验结果的可视化展示和统计分析
- 完整追踪:提供完整的操作日志和历史记录追踪
- 体验优化:优化用户体验,提高工作效率
1.3 目标用户
- 主要用户:运营人员、数据管理员
- 次要用户:系统管理员、产品经理
2. 功能需求
2.1 核心功能模块
2.1.1 数据校验功能
功能描述:支持上传商户信息文件并进行数据校验
具体需求:
- 支持文件格式:.xlsx、.xls、.csv
- 文件大小限制:最大5MB
- 显示校验进度和结果
- 校验规则包括:数据格式、必填字段、数据完整性等
校验规则详情:
| 校验项目 |
校验规则 |
错误级别 |
| 银行ID |
非空 |
错误 |
| 商户号 |
非空,822开头 |
错误 |
2.1.2 批量上传功能
功能描述:支持批量上传商户信息文件并进行校验
批量上传按钮实现要求:
- 触发方式:点击"批量上传"按钮打开右侧滑出模态框
- 模态框尺寸:宽度800px,高度100vh,从右侧滑入
- 支持文件格式:.xlsx、.xls、.csv
- 文件大小限制:最大5MB
- 上传流程:
- 点击上传按钮触发文件选择对话框
- 选择文件后自动开始上传
- 上传成功后显示"处理中"状态
- 后台异步执行校验逻辑
- 校验完成后更新状态为"已完成"或"失败"
模态框功能组件:
- 筛选条件区域(文件名、机构银行、校验状态、日期范围)
- 操作按钮区域(上传文件、导出记录、查询、重置)
- 上传记录表格(文件名、机构银行、上传时间、状态、操作)
2.1.3 历史记录管理
功能描述:查询和管理历史校验记录
具体需求:
- 支持多维度筛选查询(机构银行、商户号、文件名、校验时间、校验状态、校验结果)
- 分页展示历史记录(每页10/20/50/100条,可调整)
- 支持记录的下载操作
- 显示详细的校验统计信息
查询筛选条件:
- 机构银行:文本输入,支持模糊查询
- 商户号:文本输入,支持模糊查询
- 文件名:文本输入,支持模糊查询
- 校验时间:日期范围选择器
- 校验状态:下拉选择(已完成、校验失败)
- 校验结果:下拉选择(通过、未通过)
2.1.4 状态字段定义和流转逻辑
校验状态字段:
| 状态值 |
状态名称 |
显示样式 |
说明 |
| completed |
已完成 |
绿色标签 |
校验已完成 |
| failed |
校验失败 |
红色标签 |
校验过程中发生错误 |
状态流转逻辑:
- 文件上传 → 直接进行校验处理
- 校验完成 →
completed(已完成)或 failed(校验失败)
completed 状态下显示校验结果:pass、fail
2.1.5 操作栏功能和交互逻辑
主表格操作栏:
- 移除操作栏:
- 为简化界面设计,主表格不再显示操作栏
- 校验记录的状态通过后台异步更新
- 用户可通过查询功能查看最新状态
批量上传模态框操作栏:
- 下载操作:
- 显示条件:状态为"已完成"、"失败"
- 功能:下载该批次的处理结果文件
2.1.6 模版下载功能
功能描述:提供标准的数据导入模版
具体需求:
- 提供CSV格式的标准模版
- 模版包含所有必填字段和示例数据
- 支持下载
- 模版包含字段说明和填写规范
模版字段:
| 字段名 |
字段类型 |
是否必填 |
说明 |
| 机构银行 |
文本 |
是 |
银行全称 |
| 商户号 |
文本 |
是 |
822开头的商户号 |
2.2 模态框功能详细说明
2.2.1 批量上传模态框
模态框结构:
批量上传模态框 (800px × 100vh)
├── 头部区域
│ ├── 标题:批量上传商户信息
│ └── 关闭按钮
├── 主体区域
│ ├── 筛选条件区域
│ │ ├── 文件名输入框
│ │ ├── 机构银行下拉选择
│ │ ├── 校验状态下拉选择
│ │ ├── 开始日期选择器
│ │ └── 结束日期选择器
│ ├── 操作按钮区域
│ │ ├── 上传文件按钮(主按钮)
│ │ ├── 导出记录按钮
│ │ ├── 查询按钮
│ │ └── 重置按钮
│ └── 上传记录表格区域
│ ├── 表格头部(文件名、机构银行、上传时间、状态、操作)
│ ├── 表格内容(动态加载)
│ └── 空状态提示
└── 底部区域(无)
模态框交互逻辑:
- 打开模态框:
- 点击"批量上传"按钮
- 模态框从右侧滑入,背景显示遮罩层
- 自动加载历史上传记录
- 上传文件流程:
- 点击"上传文件"按钮
- 弹出文件选择对话框
- 选择文件后自动开始上传
- 显示上传进度(可选)
- 上传成功后在表格中新增记录
- 筛选功能:
- 支持按文件名模糊查询
- 支持按机构银行筛选
- 支持按校验状态筛选
- 支持按日期范围筛选
- 点击"查询"按钮应用筛选条件
- 点击"重置"按钮清空所有筛选条件
- 导出功能:
- 点击"导出记录"按钮
- 导出当前筛选条件下的所有记录
- 格式:CSV文件
- 文件名:批量上传记录_日期.csv
- 记录操作:
- 刷新:针对处理中和待处理状态的记录
- 下载:针对已完成和失败状态的记录
- 重试:针对失败状态的记录
- 关闭模态框:
- 点击关闭按钮或遮罩层
- 模态框滑出到右侧,遮罩层消失
- 恢复页面滚动
2.3 辅助功能
2.2.1 统计面板
2.2.2 操作日志
3. 数据表格字段定义和业务逻辑
3.1 主数据表格字段定义
| 字段名 |
字段类型 |
数据来源 |
显示规则 |
业务逻辑 |
| ID |
数值 |
数据库自增 |
数字 |
唯一标识符 |
| 机构银行 |
文本 |
文件数据 |
银行全称 |
支持模糊查询 |
| 商户号 |
文本 |
文件数据 |
822开头 |
必填,格式校验 |
| 结算卡号(脱敏) |
文本 |
三代系统查询 |
6227********1234 |
敏感信息脱敏显示 |
| 校验状态 |
枚举 |
校验结果 |
彩色标签 |
completed/failed |
| 校验结果 |
枚举 |
校验结果 |
彩色标签 |
pass/fail |
| 文件名 |
文本 |
上传文件 |
完整文件名 |
支持模糊查询 |
| 校验时间 |
日期时间 |
系统生成 |
YYYY-MM-DD HH:mm:ss |
默认当前时间 |
| 操作人 |
文本 |
系统获取 |
用户姓名 |
当前登录用户 |
3.2 批量上传记录表格字段定义
| 字段名 |
字段类型 |
数据来源 |
显示规则 |
业务逻辑 |
| 文件名 |
文本 |
上传文件 |
完整文件名 |
支持模糊查询 |
| 机构银行 |
文本 |
文件数据或筛选条件 |
银行全称 |
支持筛选 |
| 上传时间 |
日期时间 |
系统生成 |
YYYY-MM-DD HH:mm:ss |
上传完成时间 |
| 商户号 |
文本 |
上传文件 |
完整商户号 |
|
| 结算卡号 |
文本 |
三代系统查询 |
6227********1234前四后 |
|
| 状态 |
枚举 |
处理结果 |
彩色标签 |
success/processing/failed/pending |
3.3 数据表格业务逻辑
3.3.1 数据加载逻辑
1. 初始加载:
- 页面加载时查询最近30天的记录
- 默认按校验时间倒序排列
- 每页显示10条记录
2. 查询逻辑:
- 支持多条件组合查询
- 所有条件均为AND关系
- 文本字段支持模糊匹配
- 日期范围包含边界值
3. 分页逻辑:
- 支持动态调整每页显示条数(10/20/50/100)
- 分页器显示当前页前后2页
- 总记录数实时更新
3.3.2 数据校验逻辑
1. 文件格式校验:
```javascript
// 支持的文件格式
const allowedFormats = ['.xlsx', '.xls', '.csv'];
const maxSize = 5 * 1024 * 1024; // 5MB
```
2. 数据格式校验:
- 商户号:必须以822开头,长度15-20位
- 银行名称:必须在支持的银行列表中
- 结算卡号:符合银行卡号格式规则
3. 业务逻辑校验:
```javascript
// 校验流程
1. 根据银行ID查找可用查询接口
2. 使用商户号查询三代系统获取结算卡号
3. 调用对应银行校验接口验证卡号
4. 记录校验结果并更新状态
```
3.3.3 状态更新逻辑
1. 实时状态更新:
- 使用WebSocket或定时轮询更新状态
- 处理中的记录每30秒刷新一次状态
- 用户手动刷新立即更新状态
2. 状态持久化:
- 所有状态变更记录到数据库
- 支持状态变更历史查询
- 异常状态自动告警
4. 校验逻辑设计
4.1 核心校验流程
校验逻辑说明:商户信息校验采用多步骤验证机制,确保数据的准确性和完整性。
4.1.1 校验流程设计
步骤1:银行接口可用性校验
├─ 输入:银行ID
├─ 处理:查询系统配置中的银行接口映射表
├─ 判断:是否存在对应的查询接口
└─ 输出:接口可用状态
步骤2:商户信息查询
├─ 输入:商户号
├─ 处理:调用三代系统查询商户结算卡卡号
├─ 验证:商户号有效性检查
└─ 输出:商户结算卡信息
步骤3:银行校验接口调用
├─ 输入:商户结算卡卡号 + 银行ID
├─ 处理:调用对应银行的校验接口
├─ 验证:卡号与银行匹配性校验
└─ 输出:校验结果详情
步骤4:结果记录与反馈
├─ 处理:记录校验结果到数据库
├─ 反馈:向控制台返回校验状态
└─ 展示:实时更新校验进度和结果
4.1.2 校验规则矩阵
| 校验阶段 |
校验项目 |
校验规则 |
错误级别 |
处理方式 |
| 前置校验 |
银行ID |
非空 + 系统支持性检查 |
错误 |
终止校验,返回错误信息 |
| 商户号 |
非空 + 格式验证 |
错误 |
终止校验,返回错误信息 |
| 系统查询 |
商户存在性 |
三代系统中商户号存在 |
错误 |
记录失败,继续下一项 |
| 结算卡信息 |
商户结算卡号不为空 |
警告 |
记录警告,继续校验 |
| 银行校验 |
卡号有效性 |
银行接口验证卡号有效 |
错误 |
记录失败结果 |
| 银行匹配性 |
卡号归属银行与输入银行ID匹配 |
错误 |
记录失败结果 |
4.1.3 异常处理机制
异常场景处理:
- 银行接口不可用:记录系统异常,跳过该银行的所有商户校验
- 三代系统超时:重试3次,仍失败则标记为系统异常
- 银行接口超时:重试2次,仍失败则标记为银行服务异常
- 数据格式错误:立即终止,返回详细错误信息
- 网络异常:等待后重试,最多重试3次
4.2 数据流转设计
4.2.1 校验数据流程
文件上传 → 数据解析 → 批量入队 → 逐条校验 → 结果汇总 → 状态更新
详细说明:
1. 文件上传:用户上传CSV文件,系统验证文件格式
2. 数据解析:解析文件内容,提取银行ID和商户号
3. 批量入队:将校验任务加入消息队列,支持并发处理
4. 逐条校验:按照校验逻辑对每条记录进行处理
5. 结果汇总:收集所有校验结果,生成统计报告
6. 状态更新:更新数据库状态,向前端推送实时结果
4.2.2 状态机设计
| 状态 |
触发条件 |
后续状态 |
说明 |
| 待处理 |
文件上传完成 |
处理中 / 校验失败 |
初始状态,等待开始校验 |
| 处理中 |
开始校验流程 |
校验成功 / 校验失败 / 系统异常 |
正在执行校验逻辑 |
| 校验成功 |
所有校验步骤通过 |
- |
最终成功状态 |
| 校验失败 |
任一校验步骤失败 |
- |
最终失败状态,可查看失败原因 |
| 系统异常 |
接口调用失败或超时 |
处理中 / 校验失败 |
可重试状态,超过重试次数则标记为失败 |
5. 交互设计需求
5.1 用户操作流程
5.1.1 批量上传流程
1. 点击"批量上传"按钮
2. 右侧滑出模态框(800px宽度)
3. 在模态框中点击"上传文件"按钮
4. 选择文件(支持.xlsx、.xls、.csv格式)
5. 系统验证文件格式和大小(最大5MB)
6. 开始上传,在表格中新增记录,状态为"处理中"
7. 后台异步执行校验逻辑
8. 校验完成后更新记录状态
9. 可通过"刷新"按钮手动更新状态
5.1.2 校验逻辑
1. 接口可用性检查:
- 根据银行ID查找可用的查询接口
- 如果不存在可用接口,直接返回"当前银行不支持校验"
2. 商户信息查询:
- 使用商户号调用三代系统查询接口
- 获取商户结算卡号
- 如果查询失败,记录错误信息
3. 银行校验调用:
- 根据商户结算卡号和银行ID
- 调用对应银行的校验接口
- 获取校验结果(通过/未通过)
4. 结果记录:
- 将校验结果记录到数据库
- 更新记录状态和校验结果
- 在控制台界面展示最新状态
5.1.3 数据查询流程
1. 在查询表单中设置筛选条件
2. 点击"查询"按钮
3. 系统执行查询并返回数据
4. 分页展示查询结果
5. 支持记录的刷新和下载操作
5.1.4 记录操作流程
1. 批量导出:
- 点击"批量导出"按钮
- 导出所有符合条件的记录
- 生成包含所有记录的CSV文件
2. 状态自动更新:
- 校验状态通过后台异步更新
- 用户可通过重新查询查看最新状态
- 不需要手动刷新操作
5.2 交互反馈
5.2.1 操作反馈
- 成功操作:绿色提示信息(Toast或Alert)
- 失败操作:红色错误信息(Toast或Alert)
- 警告信息:黄色提示信息(Toast或Alert)
- 加载状态:转圈动画+文字提示
- 模态框:右侧滑入动画,背景遮罩层
5.2.2 表单验证
- 实时验证:输入时即时验证格式
- 提交验证:查询时统一验证所有条件
- 错误提示:具体字段错误信息
- 成功提示:操作成功的确认信息
5.2.3 状态标识
- 待校验:灰色圆点标签
- 校验中:橙色圆点标签
- 已完成:绿色圆点标签
- 校验失败:红色圆点标签
- 通过:绿色圆点标签
- 未通过:红色圆点标签
- 部分通过:黄色圆点标签
6. 界面设计需求
6.1 整体布局
- 顶部导航栏:包含系统logo、面包屑导航、用户信息
- 左侧边栏:功能菜单导航
- 主内容区:校验控制台主要功能界面
- 底部状态栏:系统状态和版权信息
6.2 页面结构
商户信息校验控制台
├── 查询表单区域
│ ├── 筛选条件行(机构银行、商户号、文件名)
│ ├── 筛选条件行(校验时间、校验状态、校验结果)
│ └── 操作按钮行(批量上传、批量导出、查询、重置)
├── 数据表格区域
│ ├── 表格头部(标题)
│ ├── 表格内容(数据行)
│ └── 分页控件
└── 批量上传模态框(隐藏状态)
7. 枚举值定义
7.1 校验状态 (validation_status)
| 枚举值 |
中文名称 |
说明 |
| completed |
已完成 |
校验已完成 |
| failed |
校验失败 |
校验过程中发生错误 |
7.2 校验结果 (validation_result)
| 枚举值 |
中文名称 |
说明 |
| pass |
通过 |
所有校验项目均通过 |
| fail |
未通过 |
至少一个校验项目未通过 |
7.3 批次状态 (status)
| 枚举值 |
中文名称 |
说明 |
| pending |
待处理 |
批次创建完成,等待处理 |
| processing |
处理中 |
正在处理批次数据 |
| success |
已完成 |
批次处理完成 |
| failed |
失败 |
批次处理失败 |