All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m35s
新增功能: - 店铺佣金查询:店铺佣金统计、店铺佣金记录列表、店铺提现记录 - 佣金提现审批:提现申请列表、审批通过、审批拒绝 - 提现配置管理:配置列表、新增配置、获取当前生效配置 - 企业管理:企业列表、创建、更新、删除、获取详情 - 企业卡授权:授权列表、批量授权、批量取消授权、统计 - 客户账号管理:账号列表、创建、更新状态、重置密码 - 我的佣金:佣金统计、佣金记录、提现申请、提现记录 数据库变更: - 扩展 tb_commission_withdrawal_request 新增提现单号等字段 - 扩展 tb_account 新增 is_primary 字段 - 扩展 tb_commission_record 新增 shop_id、balance_after - 扩展 tb_commission_withdrawal_setting 新增每日提现次数限制 - 扩展 tb_iot_card、tb_device 新增 shop_id 冗余字段 - 新建 tb_enterprise_card_authorization 企业卡授权表 - 新建 tb_asset_allocation_record 资产分配记录表 - 数据迁移:owner_type 枚举值 agent 统一为 shop 测试: - 新增 7 个单元测试文件覆盖各服务 - 修复集成测试 Redis 依赖问题
5.0 KiB
5.0 KiB
ADDED Requirements
Requirement: 佣金提现申请扩展字段
系统 SHALL 在佣金提现申请表中支持以下扩展字段:
- 提现单号(
withdrawal_no):唯一标识,格式 W + 时间戳 + 随机数 - 申请人ID(
applicant_id):提交申请的账号ID - 店铺ID(
shop_id):冗余字段,方便查询 - 手续费比率(
fee_rate):申请时的费率快照,基点单位 - 放款类型(
payment_type):如 manual(人工打款) - 处理人ID(
processor_id):审批/放款人 - 处理时间(
processed_at):审批时间 - 备注(
remark):审批备注
Scenario: 创建提现申请时自动生成提现单号
- WHEN 代理商发起提现申请
- THEN 系统自动生成唯一提现单号
- AND 记录申请人ID和店铺ID
- AND 记录当前生效的手续费比率
Scenario: 审批提现申请时记录处理信息
- WHEN 管理员审批(通过或拒绝)提现申请
- THEN 系统记录处理人ID和处理时间
- AND 可选记录备注信息
Requirement: 店铺主账号标识
系统 SHALL 支持标识店铺的主账号,通过 is_primary 字段区分。
Scenario: 创建店铺时标记主账号
- WHEN 创建店铺时同步创建账号
- THEN 该账号的
is_primary字段设置为true
Scenario: 查询店铺主账号
- WHEN 查询代理商列表
- THEN 可以关联查询每个店铺的主账号信息(用户名、手机号)
Requirement: 佣金记录店铺关联
系统 SHALL 在佣金记录表中支持店铺关联:
- 店铺ID(
shop_id):佣金主要跟着店铺走 - 入账后余额(
balance_after):记录每次入账后的累计余额
Scenario: 创建佣金记录时关联店铺
- WHEN 系统创建佣金记录
- THEN 记录对应的店铺ID
- AND 计算并记录入账后的佣金余额
Scenario: 按店铺查询佣金明细
- WHEN 查询某店铺的佣金明细
- THEN 可以直接通过
shop_id字段过滤
Requirement: 提现设置每日限制
系统 SHALL 支持配置每日提现次数限制,通过 daily_withdrawal_limit 字段。
Scenario: 配置每日提现次数
- WHEN 管理员新增提现设置
- THEN 可以设置每日提现次数限制
Scenario: 验证每日提现次数
- WHEN 代理商发起提现申请
- THEN 系统检查今日已提现次数是否超过限制
Requirement: 卡/设备店铺冗余字段
系统 SHALL 在物联网卡表和设备表中支持店铺ID冗余字段(shop_id),方便数据权限过滤。
Scenario: 分配卡给代理商时设置 shop_id
- WHEN 将卡从平台分配给代理商
- THEN 设置卡的
shop_id为目标店铺ID
Scenario: 代理商查询卡列表时按 shop_id 过滤
- WHEN 代理商用户查询卡列表
- THEN 系统使用
shop_id字段进行数据权限过滤
Requirement: 企业卡授权表
系统 SHALL 提供企业卡授权表(tb_enterprise_card_authorization),记录企业被授权可见的卡。
核心设计:
- 卡的归属(owner)始终是代理商店铺,不会变成企业
- 企业通过授权表"看到"被授权的卡
- 授权是永久的,回收时更新
status=0
Scenario: 授权卡给企业
- WHEN 代理商将卡授权给企业
- THEN 创建授权记录,状态为有效(
status=1) - AND 记录授权人和授权时间
- AND 卡的 owner 不变,仍属于代理商
Scenario: 回收卡授权
- WHEN 代理商回收企业的卡授权
- THEN 更新授权记录状态为已回收(
status=0) - AND 卡的 owner 不变
Scenario: 企业查询被授权的卡
- WHEN 企业用户查询卡列表
- THEN 系统通过授权表过滤,只返回被授权且有效的卡
Requirement: 资产分配记录表
系统 SHALL 提供资产分配记录表(tb_asset_allocation_record),记录卡/设备在平台和代理商之间的流转历史。
Scenario: 记录卡分配
- WHEN 平台将卡分配给代理商
- THEN 创建分配记录,类型为
allocate - AND 记录来源(平台)和目标(店铺)
Scenario: 记录卡回收
- WHEN 从代理商回收卡到平台
- THEN 创建分配记录,类型为
recall - AND 记录来源(店铺)和目标(平台)
Scenario: 查询资产流转历史
- WHEN 查询某卡或设备的分配历史
- THEN 返回完整的流转记录列表
Requirement: owner_type 枚举统一
系统 SHALL 统一卡/设备的 owner_type 枚举值:
platform:平台库存shop:代理商持有
废弃值:
agent:改为shopuser:不再使用device:不再使用
Scenario: 迁移现有数据
- WHEN 执行数据库迁移
- THEN 将现有
owner_type='agent'的记录更新为owner_type='shop'
Scenario: 新数据使用统一枚举
- WHEN 创建或更新卡/设备归属
- THEN
owner_type只能是platform或shop