CRM 系统 SOP 文档
本目录包含 CRM 系统的标准操作流程(Standard Operating Procedures,SOP)文档,用于指导测试人员、QA 工程师和自动化测试脚本执行端到端(E2E)测试。
📋 编号体系
所有 SOP 文档采用统一编号:SOP-XXX
- SOP-001 ~ 099:基础功能
- SOP-101 ~ 199:政策与产品管理
- SOP-201 ~ 299:资金管理
- SOP-301 ~ 399:钱包管理
- SOP-401 ~ 499:广告账户管理
- SOP-501 ~ 599:其他流程
- SOP-601 ~ 699:外采管理
📖 查看完整编号说明
📥 Excel 模板下载 - 下载所有 SOP 的 Excel 测试模板
📚 文档分类
📦 基础功能 SOP
以下是 CRM 系统基础功能的操作文档:
SOP-001:客户创建 E2E 测试 SOP
- 编号:SOP-001
- 适用场景:
http://localhost:3000/crm/customer客户管理界面 - 相关接口:
POST /api/v1/customers、GET /api/v1/customers - 测试范围:客户创建的完整流程验证
SOP-002:客户创建快速指南
- 编号:SOP-002
- 适用场景:快速参考客户创建流程
- 特点:简化版操作指南
SOP-003:产品创建 E2E 测试 SOP
- 编号:SOP-003
- 适用场景:
http://localhost:3000/crm/product产品管理界面 - 相关接口:
POST /api/v1/products、GET /api/v1/products - 测试范围:产品创建的完整流程验证
🔄 工作流审批 SOP
以下是工作流审批流程的详细操作文档:
政策与产品管理
SOP-101:政策标签创建 E2E 测试 SOP
- 编号:SOP-101
- 适用场景:
http://localhost:3000/crm/order订单管理界面 - 相关接口:
POST /api/v1/orders、GET /api/v1/products、GET /api/v1/policy-labels - 创建方式:通过订单中的政策类产品创建政策标签
- 审批流程:订单提交后自动触发审批工作流
- 配置文件:
policy_label_create_prod.yaml
SOP-102:创建产品标签 SOP
- 编号:SOP-102
- 流程:发起申请 → 部门审批 → 财务审批 → 生效 → 抄送
- 关键审批人:部门领导、财务(2名)
- 配置文件:
add_policy_prod.yaml - 适用场景:为现有产品添加标签
SOP-105:服务费审批 SOP ✨
- 编号:SOP-105
- 流程:发起申请 → 逐级领导审批 → 财务审批 → 自动生效 → 更新客户余额
- 关键审批人:逐级领导、往来会计/总账会计/税务会计/财务主管/财务总监
- 配置文件:通过 SQL 创建(
20260226_create_service_fee_review_template.sql) - 适用场景:服务费订单审批(技术服务费、广告服务费、视频服务费、代运营费用)
- 功能特性:
- ✅ 支持多种服务费类型(按 AccountType 区分)
- ✅ 逐级领导审批 + 财务审批两步流程
- ✅ 审批通过后自动扣减客户余额
- ✅ 生成 DEDUCT 类型的 Transaction 记录
- 订单类型:
ORDER_TYPE_SERVICE_FEE - 审批事件:
transOrder.serviceFee
资金管理
SOP-201:资金池入账 SOP
- 编号:SOP-201
- 流程:发起申请 → 财务审批 → 生效
- 关键审批人:财务
- 配置文件:
recharge_prod.yaml - 适用场景:普通资金入账
SOP-202:资金池挂账入账 SOP
- 编号:SOP-202
- 流程:发起申请 → 媒介审批 → 生效
- 关键审批人:媒介/媒介经理
- 配置文件:
recharge_pending_prod.yaml - 适用场景:挂账资金入账
SOP-203:资金池垫款入账 SOP
- 编号:SOP-203
- 流程:发起申请 → 部门审批 → 中台审批 → 生效 → 抄送
- 关键审批人:部门领导、中台负责人
- 配置文件:
recharge_credit_prod.yaml - 适用场景:垫款资金入账到资金池
SOP-204:资金池提现 SOP
- 编号:SOP-204
- 流程:发起申请 → 部门审批 → 中台审批 → 财务审批 → 总部审批 → 抄送
- 关键审批人:中台负责人、财务、尹博(总部)
- 配置文件:
withdraw_prod.yaml - 适用场景:从资金池提现到银行账户
- ⚠️ 注意:涉及真实资金,测试时需特别注意
钱包管理
SOP-301:钱包充值 SOP
- 编号:SOP-301
- 流程:发起申请 → 财务审批 → 生效
- 关键审批人:财务
- 配置文件:
wallet_transfer_prod.yaml - 适用场景:客户钱包充值
SOP-302:钱包充值退款 SOP
- 编号:SOP-302
- 流程:发起申请 → 财务审批 → 生效
- 关键审批人:财务
- 配置文件:
wallet_refund_prod.yaml - 适用场景:钱包充值退款处理
广告账户管理
SOP-401:广告账户充值 SOP
- 编号:SOP-401
- 流程:发起申请 → 媒介审批 → 生效 → 抄送
- 关键审批人:媒介/媒介经理
- 配置文件:
transaction_prod.yaml - 适用场景:为广告账户充值
SOP-402:广告账户退款 SOP
- 编号:SOP-402
- 流程:发起申请 → 媒介审批 → 生效 → 抄送
- 关键审批人:媒介/媒介经理
- 配置文件:
transfer_refund_prod.yaml - 适用场景:广告账户退款处理
其他流程
~~SOP-501:折扣比例调整 SOP~~ 🚫 已废弃
- 编号:SOP-501
- 流程:发起申请 → 部门审批 → 财务审批 → 生效 → 抄送
- 关键审批人:部门领导、财务(2名)
- 配置文件:
discount_adjust_prod.yaml - 适用场景:通过Excel批量导入调整客户的政策标签折扣比例
- ⚠️ 已废弃:请使用 SOP-503 替代
- 废弃原因:新版本提供了更直观的UI界面操作方式
SOP-502:创建合同 SOP
- 编号:SOP-502
- 流程:发起申请 → 人事审批 → 生效
- 关键审批人:人事
- 配置文件:
create_contact_prod.yaml - 适用场景:创建员工合同
SOP-503:批量调整广告账户政策标签 SOP
- 编号:SOP-503
- 流程:批量选择账户 → 设置政策标签 → 提交审批 → 多级审批 → 生效
- 关键审批人:根据审批模板配置
- 适用场景:需要审批的批量政策标签调整
- 操作方式:表格多选 + 对话框配置 + 审批流程
- 优势:
- ✅ 直观的UI界面操作
- ✅ 支持四种政策类型独立配置
- ✅ 实时显示选中账户
- ✅ 支持单选、多选、全选
- ✅ 每种政策可选择"不设置"
- ✅ 自动创建审批流程
- 替代:替代 SOP-501 的Excel导入方式
SOP-504:批量账户政策标签设置 SOP ✨ 推荐
- 编号:SOP-504
- 流程:批量选择账户 → 设置政策标签 → 直接应用 → 即时生效
- 关键审批人:无需审批
- 适用场景:日常快速批量设置政策标签,无需审批流程
- 操作方式:表格多选 + 对话框配置 + 直接应用
- 优势:
- ✅ 直观的UI界面操作
- ✅ 支持四种政策类型独立配置
- ✅ 2列网格布局,文本自动截断
- ✅ 实时显示选中账户
- ✅ 支持单选、多选、全选
- ✅ 每种政策可选择"不设置"
- ✅ 无需审批,即时生效
- ✅ 操作简单,效率更高
- 与 SOP-503 区别:无需审批流程,适合日常快速操作
SOP-505:订单添加政策补差款审批 SOP ✨
- 编号:SOP-505
- 流程:提交订单含政策补差项 → 逐级领导审批 → 财务审批 → OrderItem 生效/驳回
- 关键审批人:提交人部门逐级领导(all 模式)、往来会计/总账会计/税务会计/财务主管/财务总(any 模式)
- 配置文件:
20260422_create_policy_compensation_item_review_template.sql - 适用场景:订单项
ProductType=PRODUCT_TYPE_POLICY_COMPENSATION(政策补差款)提交时的两步审批 - 触发事件:
order.items.add_policy_compensation - 资源类型:
model.OrderItem
外采管理
SOP-601:外采帐户充值审批 SOP ✨
- 编号:SOP-601
- 流程:发起申请 → 媒介审批 → 自动生效 → 抄送通知
- 关键审批人:媒介/媒介经理
- 配置文件:
external_recharge_prod.yaml - 适用场景:为外采帐户充值(使用外部端口)
- 功能特性:
- ✅ 自动识别外采帐户
- ✅ 自动检查端口余额
- ✅ 审批通过后自动执行充值
- ✅ 实时更新帐户余额
- ✅ 支持附件上传(转账凭证)
- ✅ 支持按金额分级审批(可选)
- 触发条件:目标帐户为外采帐户(
provider = EXTERNAL) - 审批事件:
transOrder.external.recharge
SOP-602:外采端口入帐审批 SOP ✨
- 编号:SOP-602
- 流程:发起申请 → 媒介审批 → 自动生效 → 抄送通知
- 关键审批人:媒介/媒介经理
- 配置文件:
external_transfer_prod.yaml - 适用场景:使用外采端口余额为广告帐户入帐
- 功能特性:
- ✅ 自动识别外采端口
- ✅ 自动检查端口余额充足性
- ✅ 审批通过后自动执行入帐
- ✅ 自动扣减端口余额
- ✅ 自动应用政策标签
- ✅ 更新消费日报和资金流表
- ✅ 支持按金额分级审批(可选)
- 触发条件:目标帐户为外采帐户,使用外部端口余额进行转账
- 审批事件:
transOrder.external.transfer - ⚠️ 注意:
- 需提前确认端口余额充足
- 需选择正确的政策标签(折扣/后返等)
- 入帐会同时更新多个数据表,操作不可撤销
SOP-603:端口充值审批 SOP ✨
- 编号:SOP-603
- 流程:发起申请 → 财务审批 → 自动生效 → 更新端口余额
- 关键审批人:往来会计/总账会计/税务会计/财务主管/财务总监
- 配置文件:通过 SQL 创建(
20260129_create_porter_recharge_review_template.sql) - 适用场景:为外采端口直接充值(不关联客户)
- 功能特性:
- ✅ 为外采端口直接充值(不关联客户)
- ✅ 自动识别外采端口
- ✅ 审批通过后自动更新端口余额
- ✅ 支持充值凭证上传(最多3张)
- ✅ 财务单步审批,流程简洁高效
- 触发条件:通过"外采端口充值"功能提交
- 订单类型:
ORDER_TYPE_PORTER_RECHARGE - 审批事件:
transOrder.porter.recharge - 与 SOP-601 的区别:
- SOP-601:外采帐户充值 - 为客户的广告帐户充值(需关联客户)
- SOP-603:端口充值 - 为外采端口本身充值(不关联客户)
SOP-604:外采付款审批 SOP ✨
- 编号:SOP-604
- 流程:发起申请 → 上级领导审批 → 财务审批 → 自动结算(扣端口余额 / 写 transactions / 写 porter_cashflows / 订单 SUCCESS)
- 关键审批人:提交人部门逐级领导(any)、往来会计/总账会计/税务会计/财务主管/财务总(any)
- 配置文件:
20260416_create_external_payment_review_template.sql20260416_seed_ext_payment_dicts.sql20260423_update_ext_payment_business_type.sql(业务类型:广告业务类 / 商品采购类 / 其它)20260423_drop_payment_method.sql(下线 payment_method)20260424_create_ext_payment_payees.sql(收款主体库)- 适用场景:外采端口付款(非广告账户充值),审批后从端口余额扣减并记流水
- 业务类型:广告业务类 / 商品采购类 / 其它
- 相关接口:
POST /api/v1/cash/external_payment、POST /api/v1/cash/ext_payment_payees
SOP-605:端口退款审批 SOP ✨ 新增
- 编号:SOP-605
- 流程:发起申请 → 财务审批(单步) → 自动结算(扣端口余额 / 写 transactions(EXPEND,'端口退款') / 写 porter_cashflows(FLOW_TYPE_EXPEND) / 订单 SUCCESS)
- 关键审批人:往来会计/总账会计/税务会计/财务主管/财务总(any 模式,单步审批)
- 配置文件:
20260428_rename_business_details_table.sql(表演进:ext_payment_details→trans_order_business_details+ 字段中性化 + 4 列 NOT NULL 放宽,外采付款与端口退款共用同一张子表)20260428_create_porter_refund_review_template.sql(SOP-605 审批模板)20260428_rollback_porter_refund_review_template.sql(回滚脚本)- 适用场景:外采端口退款(端口充值的产品化逆向操作 + 差错冲正 + 外部退回款),审批后从端口余额扣减并记出账流水
- 订单类型:
ORDER_TYPE_PORTER_REFUND - 审批事件:
transOrder.porter.refund - 结算 action:
settle_porter_refund(与 SOP-604 的settle_external_payment同形但 sub_act_type='端口退款',可选 origin 累计退款上限校验) - 相关接口:
POST /api/v1/cash/porter_refund、POST /api/v1/cash/trans_orders(filterorder_type=ORDER_TYPE_PORTER_REFUND)、GET /api/v1/cash/trans_orders/{id} - 与 SOP-604 的区别:
- SOP-604:外采付款 - 上级 + 财务两步审批,业务详情含 business_type / payee_* 全套
- SOP-605:端口退款 - 仅财务单步审批,业务详情仅 business_reason;可选
origin_trans_order_id关联到原端口充值单(限 SUCCESS 单 + 端口一致),结算瞬间断言累计退款 ≤ 原充值
SOP-606:外采帐户直充审批 SOP ✨ 新增
- 编号:SOP-606
- 流程:发起申请 → 财务审批(单步) → 自动结算(增 accounts.balance / 写 transactions(RECHARGE,'外采帐户直充') / 订单 SUCCESS) → 端口余额全程只读
- 关键审批人:往来会计/总账会计/税务会计/财务主管/财务总(any 模式,单步审批)
- 入口位置:CRM → 广告账户 → 「外采」Tab → 抽屉 → 顶部「充值」按钮(外采账户上下文已替换为直充)
- 配置文件:
20260429_create_external_direct_deposit_review_template.sql(SOP-606 审批模板)20260429_rollback_external_direct_deposit_review_template.sql(回滚脚本)- 适用场景:外采广告帐户"直入"——差错纠偏 / 外部直接到账落账,不动端口余额、不走媒介审批,与 SOP-601(经端口的"正路")平级互不重叠
- 订单类型:
ORDER_TYPE_EXTERNAL_DIRECT_DEPOSIT - 审批事件:
transOrder.external.directDeposit - 结算 action:
settle_external_direct_deposit(高危:手工改 type 会切换执行器,见 action_executor.go) - 入口 RPC:
CashService.Transfer在mode=TRANSFER_MODE_DIRECT_DEPOSIT时分支 - 二级权限:
CashService.TransferDirect或CashService.TransferFull - 相关接口:
POST /api/v1/cash/transfer(mode=TRANSFER_MODE_DIRECT_DEPOSIT)、POST /api/v1/cash/trans_orders(filterorder_type=ORDER_TYPE_EXTERNAL_DIRECT_DEPOSIT)、POST /api/v1/cash/porter_balance(Dialog 顶部端口资金展示) - 与 SOP-601 / SOP-602 的区别:
- SOP-601:外采帐户充值 - 经端口(扣 ext_corps.balance),媒介审批
- SOP-602:外采端口入帐 - 经端口(扣 ext_corps.balance),媒介审批
- SOP-606:外采帐户直充 - 不动端口余额(只读),只动 accounts.balance,财务单步审批
SOP-607:外采帐户直退审批 SOP ✨ 新增
- 编号:SOP-607
- 流程:发起申请 → 财务审批(单步) → 自动结算(乐观锁扣 accounts.balance / 写 transactions(EXPEND,'外采帐户直退') / 订单 SUCCESS) → 端口余额全程只读
- 关键审批人:往来会计/总账会计/税务会计/财务主管/财务总(any 模式,单步审批)
- 入口位置:CRM → 广告账户 → 「外采」Tab → 抽屉 → 顶部「退款」按钮(外采账户上下文已替换为直退)
- 配置文件:
20260429_create_external_direct_refund_review_template.sql(SOP-607 审批模板)20260429_rollback_external_direct_refund_review_template.sql(回滚脚本)- 适用场景:外采广告帐户"直出"——SOP-606 的逆向(差错冲正 / 外部退回款落账),不动端口余额、不走媒介审批,与 SOP-605 端口退款在资金路径上互不重叠(SOP-605 冲端口余额、SOP-607 冲帐户余额)
- 订单类型:
ORDER_TYPE_EXTERNAL_DIRECT_REFUND - 审批事件:
transOrder.external.directRefund - 结算 action:
settle_external_direct_refund(事务边界内做 origin 累计上限校验:SELECT FOR UPDATE原直充 + SUM 已成功直退 + 当前 ≤ 原直充金额) - 入口 RPC:
CashService.Refund在mode=REFUND_MODE_DIRECT时分支 - 二级权限:
CashService.RefundDirect或CashService.TransferFull - 相关接口:
POST /api/v1/cash/refund(mode=REFUND_MODE_DIRECT)、POST /api/v1/cash/trans_orders(filterorder_type=ORDER_TYPE_EXTERNAL_DIRECT_REFUND)、POST /api/v1/cash/porter_balance - 与 SOP-605 / SOP-606 的区别:
- SOP-605:端口退款 - 扣 ext_corps.balance(端口余额),可选 origin 限端口充值 SUCCESS 单
- SOP-606:外采帐户直充 - 增 accounts.balance,SOP-607 的逆向起点
- SOP-607:外采帐户直退 - 扣 accounts.balance(乐观锁),可选 origin 限直充 SUCCESS 单 + 累计上限
外采业务资金流向
外采业务的资金流转关系如下:
经端口路径(动 ext_corps.balance)
外部资金 → SOP-603(端口充值) → 端口余额
外部资金 → SOP-601(帐户充值,经端口扣减) → 广告帐户余额
端口余额 → SOP-602(端口入帐) → 广告帐户余额
端口余额 → SOP-604(外采付款) → 外部收款方
端口余额 → SOP-605(端口退款) → 外部退回方
直入帐户路径(端口余额只读,只动 accounts.balance)
外部资金 → SOP-606(外采帐户直充) → 广告帐户余额
广告帐户余额 → SOP-607(外采帐户直退) → 外部退回方
流程说明: - SOP-603:外部资金充值到端口余额(端口层面) - SOP-601:外部资金直接充值到广告帐户,经端口扣减(客户层面) - SOP-602:使用端口余额为广告帐户入帐(端口→客户) - SOP-604:使用端口余额向外部收款方付款(端口→外部) - SOP-605:端口退款(端口→外部退回方),SOP-603 的产品化逆向,含差错冲正与外部退回款两类场景 - SOP-606:外采帐户直充(外部→广告帐户),不动端口余额,差错纠偏 / 外部直接到账场景,SOP-601 的旁路 - SOP-607:外采帐户直退(广告帐户→外部退回方),不动端口余额,SOP-606 的逆向,差错冲正 / 外部退回款场景
🛠️ Excel 报告生成工具
📥 下载 Excel 测试模板 - 所有 SOP 的 Excel 模板已预先生成,可直接下载使用
快速开始
使用 generate_excel.py 脚本可以自动从 Markdown 文档生成包含复选框、超链接和截图的 Excel 测试报告。
# 从 Markdown 文件自动生成(推荐)
python generate_excel.py --markdown sop-003-product-creation-e2e.md
# 使用默认参数
python generate_excel.py
# 自定义配置
python generate_excel.py \
--markdown sop-003-product-creation-e2e.md \
--output-prefix "产品测试报告" \
--base-url "https://test.example.com/crm"
# 查看所有可用参数
python generate_excel.py --help
主要功能
- 🎯 Markdown 自动解析:从 SOP markdown 文档自动提取任务表格(全自动化)
- ✅ 可点击复选框:使用自定义格式实现真正的复选框(兼容 WPS/Excel/LibreOffice)
- 🔗 智能超链接:任务间、步骤间可以点击跳转
- 📝 简洁清单:默认生成 7 列表格,不包含截图列(更适合打印和分享)
- 🖼️ 可选截图:使用
--with-screenshots参数可启用截图列 - ⚙️ 参数化配置:支持通过命令行参数自定义各项设置
- 📋 批量生成:支持为多个 SOP 文档批量生成 Excel 报告
可配置参数
| 参数类型 | 参数 | 说明 |
|---|---|---|
| 基础配置 | --output-prefix |
输出文件名前缀 |
--base-url |
测试系统 URL | |
--screenshot-dir |
截图目录路径 | |
| 样式配置 | --header-color |
表头背景色 |
--title-font-size |
标题字体大小 | |
--checkbox-font-size |
复选框字体大小 | |
| 图片配置 | --image-scale-x/y |
图片缩放比例 |
--row-height |
行高设置 |
📖 详细使用说明:参考 USAGE.md
📋 SOP 文档结构
每个 SOP 文档包含以下标准章节:
- 文档元数据 - 文档类型、适用场景、配置文件
- 流程图 - Mermaid 格式的可视化流程
- 审批角色 - 各环节审批人说明
- 前置条件 - 执行前的必要准备
- 任务矩阵 - 详细的操作步骤清单(支持复制到 Excel)
- 异常场景测试 - 常见异常情况处理
- 进度采集模板 - 测试进度跟踪表
- 注意事项 - 重要提示和警告
- 相关文档 - 关联文档链接
🎯 使用指南
测试前准备
- 环境检查
- 确保测试环境正常运行
- 验证数据库连接正常
-
检查相关服务状态
-
账号准备
- 准备测试账号(发起人、各级审批人)
- 参考:账号文档
-
如需新账号,联系技术人员
-
数据准备
- 检查部门层级配置(后台设置 → 部门)
- 验证用户岗位和上级配置(后台设置 → 用户)
- 准备测试数据(如:资金池余额、产品信息等)
执行测试
- 选择对应的 SOP 文档
- 按照任务矩阵顺序执行
- 记录每个步骤的结果和截图
- 标记完成状态
[ ]→[x] - 填写进度采集模板
问题处理
- 遇到异常:参考 SOP 中的"异常场景测试"章节
- 流程卡住:检查审批人配置和权限
- 数据异常:联系技术团队排查
🔍 部门审批机制
多级部门审批说明
CRM 系统会根据发起人所在的部门层级,逐级向上进行审批。
示例:部门层级结构
邓攀 → 符小兰 → 陈卓钰 → Soso
审批流程: - 当邓攀发起流程时,审批顺序为:符小兰 → 陈卓钰 → Soso - 当符小兰发起流程时,审批顺序为:陈卓钰 → Soso - 以此类推...
验证方式
- 查看部门信息:后台设置 → 部门
- 查看用户信息:后台设置 → 用户
- ✅ 岗位名称是否正确
- ✅ 部门是否正确
- ✅ 是否配置了上级领导
✨ 工作流系统功能
流程详情页面
包含三个标签页:
- 流程详情 - 显示流程基本信息和当前状态
- 审核历史 - 显示完整的审批链路和时间线
- 评论 - 支持参与者进行文本讨论和沟通
操作按钮
系统会根据当前用户角色自动显示相应操作:
| 用户角色 | 可用操作 |
|---|---|
| 审批人 | 批准、拒绝 |
| 发起人 | 撤销(流程未完成时) |
| 抄送人 | 查看(只读) |
📊 测试报告模板
测试完成后,可以使用以下模板生成报告:
测试概览
- 测试工作流:[工作流名称]
- 测试环境:[开发/测试/生产]
- 测试日期:YYYY-MM-DD
- 测试人员:[姓名]
- 总体结果:✅ 通过 / ❌ 失败
测试结果
| Task ID | Task Name | Status | Issues | Notes |
|---|---|---|---|---|
| T1 | ... | ✅ | — | — |
| T2 | ... | ✅ | — | — |
| T3 | ... | ❌ | 审批按钮无响应 | 已报告给开发 |
发现的问题
- 问题描述
- 重现步骤
- 预期结果
- 实际结果
- 截图证据
🚧 已知问题
- 部门领导显示
- 现状:一次会显示所有的部门领导
-
计划:优化显示逻辑,只显示当前环节的审批人
-
同岗位多人审核
- 现状:同岗位的多个人员审核功能还需要调整
- 计划:完善多人审核的逻辑和显示
📞 技术支持
- 文档问题:联系 QA 团队
- 系统问题:联系技术团队
- 账号问题:联系管理员
🔗 相关资源
💡 提示:本文档会持续更新,请关注最新版本。如发现文档问题或需要补充内容,请及时反馈。