Sfoglia il codice sorgente

📝 docs(prd): add epic-004 credit payment feature documentation

- create prd document for credit payment feature
- define credit balance module and management ui module requirements
- outline database design, api specifications and integration points
- document business background, goals, scope and success metrics
- detail user stories and acceptance criteria for implementation
yourname 1 mese fa
parent
commit
bf621f81ad
1 ha cambiato i file con 248 aggiunte e 0 eliminazioni
  1. 248 0
      docs/prd/epic-004-credit-payment.md

+ 248 - 0
docs/prd/epic-004-credit-payment.md

@@ -0,0 +1,248 @@
+# 史诗004:新增记账(信用额度支付)功能
+
+## 概述
+为多租户电商平台新增信用额度支付功能,允许后台为特定用户设置信用额度,用户可使用额度进行支付,并在小程序个人中心显示累计欠款,与现有微信支付流程并行工作。
+
+## 业务背景
+当前系统仅支持微信支付,缺乏灵活的支付方式。为提升用户体验和业务灵活性,需要引入信用额度支付功能,允许特定用户(如VIP用户、企业用户)使用信用额度进行支付,后台可灵活管理额度。
+
+## 目标
+1. 新增信用额度支付方式,与现有微信支付流程并行
+2. 后台可设置和查看用户信用额度(用户不可见)
+3. 未授权用户额度为0,点击额度支付无效
+4. 小程序个人中心显示累计欠款信息
+5. 实现多租户余额模块和余额管理UI模块
+
+## 范围
+### 包含的功能
+1. **多租户余额模块** (`credit-balance-module-mt`)
+   - 余额实体设计(用户额度、已用额度、可用额度)
+   - 额度变更记录实体
+   - 额度管理服务(设置额度、扣减额度、查询余额)
+   - 额度支付API接口
+
+2. **多租户余额管理UI模块** (`credit-balance-management-ui-mt`)
+   - 用户额度管理界面
+   - 额度设置和调整功能
+   - 额度使用记录查询
+   - 欠款统计和报表
+
+3. **支付流程集成**
+   - 扩展支付选项,增加"额度支付"
+   - 额度支付订单处理逻辑
+   - 额度检查和验证机制
+   - 小程序个人中心欠款显示
+
+### 不包含的功能
+1. 额度自动审批和风控系统
+2. 额度利息计算和催收功能
+3. 额度分期还款功能
+4. 额度提现功能
+
+## 用户故事
+### 故事1:创建多租户余额模块
+**作为** 系统管理员
+**我希望** 能够管理用户的信用额度
+**以便** 控制用户的支付权限和风险
+
+**验收标准:**
+- [ ] 创建`credit_balance_mt`表,包含租户ID、用户ID、总额度、已用额度、可用额度等字段
+- [ ] 创建`credit_balance_log_mt`表,记录额度变更历史
+- [ ] 实现额度管理服务,包含设置额度、扣减额度、查询余额等方法
+- [ ] 提供额度查询和管理的API接口
+- [ ] 添加数据库迁移脚本
+- [ ] 编写单元测试覆盖核心逻辑
+
+### 故事2:创建多租户余额管理UI模块
+**作为** 后台管理员
+**我希望** 有一个界面来管理用户信用额度
+**以便** 方便地设置和调整用户额度
+
+**验收标准:**
+- [ ] 创建用户额度管理页面,显示用户列表和当前额度
+- [ ] 实现额度设置和调整功能
+- [ ] 提供额度使用记录查询界面
+- [ ] 显示用户欠款统计信息
+- [ ] 界面风格与现有后台保持一致
+- [ ] 添加权限控制,只有管理员可访问
+
+### 故事3:集成额度支付到现有支付流程
+**作为** 小程序用户
+**我希望** 可以使用信用额度进行支付
+**以便** 在余额不足时也能完成购买
+
+**验收标准:**
+- [ ] 在支付页面增加"额度支付"选项
+- [ ] 实现额度支付订单处理逻辑
+- [ ] 额度为0的用户无法使用额度支付
+- [ ] 支付成功后更新用户已用额度和可用额度
+- [ ] 在小程序个人中心显示累计欠款
+- [ ] 确保与现有微信支付流程并行工作,互不干扰
+
+## 技术设计
+### 数据库设计
+```sql
+-- 用户信用额度表
+CREATE TABLE credit_balance_mt (
+  id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
+  tenant_id INT UNSIGNED NOT NULL COMMENT '租户ID',
+  user_id INT UNSIGNED NOT NULL COMMENT '用户ID',
+  total_limit DECIMAL(10,2) DEFAULT 0.00 COMMENT '总额度',
+  used_amount DECIMAL(10,2) DEFAULT 0.00 COMMENT '已用额度',
+  available_amount DECIMAL(10,2) GENERATED ALWAYS AS (total_limit - used_amount) STORED COMMENT '可用额度',
+  is_enabled TINYINT DEFAULT 1 COMMENT '是否启用(0:禁用,1:启用)',
+  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  UNIQUE KEY uk_tenant_user (tenant_id, user_id),
+  INDEX idx_tenant_id (tenant_id),
+  INDEX idx_user_id (user_id)
+) COMMENT='用户信用额度表';
+
+-- 额度变更记录表
+CREATE TABLE credit_balance_log_mt (
+  id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
+  tenant_id INT UNSIGNED NOT NULL COMMENT '租户ID',
+  user_id INT UNSIGNED NOT NULL COMMENT '用户ID',
+  change_type VARCHAR(20) NOT NULL COMMENT '变更类型: SET_LIMIT, PAYMENT, REFUND, ADJUST',
+  change_amount DECIMAL(10,2) NOT NULL COMMENT '变更金额',
+  before_total DECIMAL(10,2) COMMENT '变更前总额度',
+  after_total DECIMAL(10,2) COMMENT '变更后总额度',
+  before_used DECIMAL(10,2) COMMENT '变更前已用额度',
+  after_used DECIMAL(10,2) COMMENT '变更后已用额度',
+  reference_id VARCHAR(100) COMMENT '关联ID(订单号等)',
+  remark VARCHAR(500) COMMENT '备注',
+  operator_id INT UNSIGNED COMMENT '操作人ID',
+  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+  INDEX idx_tenant_user (tenant_id, user_id),
+  INDEX idx_reference (reference_id),
+  INDEX idx_created (created_at)
+) COMMENT='额度变更记录表';
+```
+
+### 模块结构
+```
+packages/
+├── credit-balance-module-mt/          # 多租户余额模块
+│   ├── src/
+│   │   ├── entities/                  # 实体定义
+│   │   │   ├── credit-balance.mt.entity.ts
+│   │   │   └── credit-balance-log.mt.entity.ts
+│   │   ├── services/                  # 服务层
+│   │   │   └── credit-balance.service.ts
+│   │   ├── schemas/                   # 数据验证
+│   │   ├── routes/                    # API路由
+│   │   └── index.ts
+│   └── package.json
+└── credit-balance-management-ui-mt/   # 余额管理UI模块
+    ├── src/
+    │   ├── components/                # 组件
+    │   ├── pages/                     # 页面
+    │   │   └── CreditBalanceManagement.tsx
+    │   └── index.tsx
+    └── package.json
+```
+
+### API设计
+1. `GET /api/credit-balance/{userId}` - 查询用户额度
+2. `PUT /api/credit-balance/{userId}` - 设置用户额度
+3. `POST /api/credit-balance/{userId}/adjust` - 调整用户额度
+4. `GET /api/credit-balance/{userId}/logs` - 查询额度变更记录
+5. `POST /api/credit-balance/payment` - 额度支付
+
+## 集成点
+### 与现有系统集成
+1. **用户模块集成**:通过`user_id`关联用户信息
+2. **订单模块集成**:扩展`orders_mt`表的`pay_type`字段,新增额度支付类型
+3. **支付模块集成**:在`mini-payment-mt`中新增额度支付处理逻辑
+4. **小程序集成**:更新支付页面和个人中心页面
+
+### 数据流
+1. 后台管理员设置用户额度 → 更新`credit_balance_mt`表
+2. 用户选择额度支付 → 检查可用额度 → 创建订单 → 扣减额度
+3. 支付成功 → 更新订单状态 → 记录额度变更日志
+4. 小程序查询欠款 → 调用额度查询接口 → 显示欠款信息
+
+## 兼容性要求
+1. **API兼容性**:新增API端点,不影响现有API
+2. **数据库兼容性**:新增表,不影响现有表结构
+3. **UI兼容性**:新增页面和组件,遵循现有UI规范
+4. **支付流程兼容性**:额度支付与微信支付并行,互不干扰
+
+## 风险与缓解
+### 风险1:额度支付逻辑错误导致财务数据不一致
+- **缓解措施**:使用数据库事务处理额度扣减和订单创建
+- **验证机制**:添加额度检查和余额验证
+- **监控**:记录详细的额度变更日志
+
+### 风险2:额度被恶意使用
+- **缓解措施**:后台控制额度启用状态,默认禁用
+- **权限控制**:只有管理员可设置和调整额度
+- **额度限制**:设置单次支付和累计欠款上限
+
+### 风险3:影响现有支付流程
+- **缓解措施**:额度支付作为可选功能,默认不启用
+- **测试策略**:充分测试与现有支付流程的兼容性
+- **回滚计划**:可禁用额度支付功能,恢复原有流程
+
+## 测试策略
+### 单元测试
+- 额度计算逻辑测试
+- 额度扣减和恢复测试
+- 额度验证测试
+
+### 集成测试
+- 额度支付流程测试
+- 与订单模块集成测试
+- 与用户模块集成测试
+
+### E2E测试
+- 后台额度管理流程测试
+- 小程序额度支付流程测试
+- 欠款显示功能测试
+
+## 部署计划
+### 阶段1:开发环境部署
+1. 创建数据库迁移脚本
+2. 部署余额模块和UI模块
+3. 配置额度支付功能(默认禁用)
+
+### 阶段2:测试环境验证
+1. 功能测试和集成测试
+2. 性能测试和压力测试
+3. 安全测试和权限测试
+
+### 阶段3:生产环境部署
+1. 执行数据库迁移
+2. 部署新模块
+3. 灰度启用额度支付功能
+4. 监控系统运行状态
+
+## 成功指标
+1. **功能指标**:
+   - 后台可成功设置和调整用户额度
+   - 用户可使用额度完成支付
+   - 小程序正确显示欠款信息
+   - 额度为0的用户无法使用额度支付
+
+2. **性能指标**:
+   - 额度查询响应时间 < 100ms
+   - 额度支付处理时间 < 500ms
+   - 系统可用性 > 99.9%
+
+3. **业务指标**:
+   - 额度支付成功率 > 95%
+   - 用户满意度提升
+   - 支付方式多样性增加
+
+## 后续优化建议
+1. 额度自动审批流程
+2. 额度风控和预警系统
+3. 额度分期和还款功能
+4. 额度提现和转账功能
+5. 额度积分和奖励机制
+
+---
+**创建时间**:2025-12-01
+**负责人**:产品经理
+**状态**:待开发
+**优先级**:高