|
@@ -18,34 +18,34 @@ Draft
|
|
|
|
|
|
|
|
## Tasks / Subtasks
|
|
## Tasks / Subtasks
|
|
|
- [ ] **创建多租户信用额度模块包结构** (AC: 1, 2, 3, 4, 6)
|
|
- [ ] **创建多租户信用额度模块包结构** (AC: 1, 2, 3, 4, 6)
|
|
|
- - [ ] 创建包目录:`packages/credit-balance-module-mt/`
|
|
|
|
|
- - [ ] 配置package.json,包名:`@d8d/credit-balance-module-mt`
|
|
|
|
|
- - [ ] 配置TypeScript和Vitest配置文件
|
|
|
|
|
- - [ ] 创建核心模块结构:`src/entities/`, `src/services/`, `src/schemas/`, `src/routes/`, `src/types/`
|
|
|
|
|
- - [ ] 创建测试目录结构:`tests/unit/`, `tests/integration/`
|
|
|
|
|
|
|
+ - [ ] 创建包目录:`packages/credit-balance-module-mt/` (参考:`packages/advertisements-module-mt/`)
|
|
|
|
|
+ - [ ] 配置package.json,包名:`@d8d/credit-balance-module-mt` (参考:`packages/advertisements-module-mt/package.json`)
|
|
|
|
|
+ - [ ] 配置TypeScript和Vitest配置文件 (参考:`packages/advertisements-module-mt/tsconfig.json`, `packages/advertisements-module-mt/vitest.config.ts`)
|
|
|
|
|
+ - [ ] 创建核心模块结构:`src/entities/`, `src/services/`, `src/schemas/`, `src/routes/`, `src/types/` (参考:`packages/advertisements-module-mt/src/`)
|
|
|
|
|
+ - [ ] 创建测试目录结构:`tests/unit/`, `tests/integration/` (参考:`packages/advertisements-module-mt/tests/`)
|
|
|
|
|
|
|
|
- [ ] **实现信用额度实体** (AC: 1)
|
|
- [ ] **实现信用额度实体** (AC: 1)
|
|
|
- - [ ] 创建`CreditBalanceMt`实体类,对应`credit_balance_mt`表
|
|
|
|
|
|
|
+ - [ ] 创建`CreditBalanceMt`实体类,对应`credit_balance_mt`表 (参考:`packages/advertisements-module-mt/src/entities/advertisement.entity.ts`)
|
|
|
- [ ] 添加字段:`tenant_id`, `user_id`, `total_limit`, `used_amount`, `available_amount`, `is_enabled`
|
|
- [ ] 添加字段:`tenant_id`, `user_id`, `total_limit`, `used_amount`, `available_amount`, `is_enabled`
|
|
|
- [ ] 添加唯一约束:`uk_tenant_user (tenant_id, user_id)`
|
|
- [ ] 添加唯一约束:`uk_tenant_user (tenant_id, user_id)`
|
|
|
- [ ] 添加索引:`idx_tenant_id`, `idx_user_id`
|
|
- [ ] 添加索引:`idx_tenant_id`, `idx_user_id`
|
|
|
- - [ ] 使用TypeORM装饰器定义实体关系
|
|
|
|
|
|
|
+ - [ ] 使用TypeORM装饰器定义实体关系 (参考:`packages/advertisements-module-mt/src/entities/advertisement.entity.ts`)
|
|
|
|
|
|
|
|
- [ ] **实现额度变更记录实体** (AC: 2)
|
|
- [ ] **实现额度变更记录实体** (AC: 2)
|
|
|
- - [ ] 创建`CreditBalanceLogMt`实体类,对应`credit_balance_log_mt`表
|
|
|
|
|
|
|
+ - [ ] 创建`CreditBalanceLogMt`实体类,对应`credit_balance_log_mt`表 (参考:`packages/advertisements-module-mt/src/entities/advertisement-type.entity.ts`)
|
|
|
- [ ] 添加字段:`tenant_id`, `user_id`, `change_type`, `change_amount`, `before_total`, `after_total`, `before_used`, `after_used`, `reference_id`, `remark`, `operator_id`
|
|
- [ ] 添加字段:`tenant_id`, `user_id`, `change_type`, `change_amount`, `before_total`, `after_total`, `before_used`, `after_used`, `reference_id`, `remark`, `operator_id`
|
|
|
- [ ] 添加索引:`idx_tenant_user`, `idx_reference`, `idx_created`
|
|
- [ ] 添加索引:`idx_tenant_user`, `idx_reference`, `idx_created`
|
|
|
- [ ] 定义变更类型枚举:`SET_LIMIT`, `PAYMENT`, `CHECKOUT`, `CANCEL_ORDER`, `REFUND`, `ADJUST`
|
|
- [ ] 定义变更类型枚举:`SET_LIMIT`, `PAYMENT`, `CHECKOUT`, `CANCEL_ORDER`, `REFUND`, `ADJUST`
|
|
|
|
|
|
|
|
- [ ] **实现额度管理服务** (AC: 3)
|
|
- [ ] **实现额度管理服务** (AC: 3)
|
|
|
- - [ ] 创建`CreditBalanceService`服务类
|
|
|
|
|
|
|
+ - [ ] 创建`CreditBalanceService`服务类 (参考:`packages/advertisements-module-mt/src/services/advertisement.service.ts`)
|
|
|
- [ ] 实现方法:`setLimit()`, `adjustLimit()`, `deductAmount()`, `restoreAmount()`, `getBalance()`, `getBalanceByUserId()`
|
|
- [ ] 实现方法:`setLimit()`, `adjustLimit()`, `deductAmount()`, `restoreAmount()`, `getBalance()`, `getBalanceByUserId()`
|
|
|
- [ ] 实现额度恢复方法:`restoreBalanceForCancelOrder()`, `restoreBalanceForRefund()`
|
|
- [ ] 实现额度恢复方法:`restoreBalanceForCancelOrder()`, `restoreBalanceForRefund()`
|
|
|
- [ ] 添加事务处理确保数据一致性
|
|
- [ ] 添加事务处理确保数据一致性
|
|
|
- [ ] 添加额度检查和验证逻辑
|
|
- [ ] 添加额度检查和验证逻辑
|
|
|
|
|
|
|
|
- [ ] **实现API路由** (AC: 4)
|
|
- [ ] **实现API路由** (AC: 4)
|
|
|
- - [ ] 创建路由文件:`src/routes/index.mt.ts`
|
|
|
|
|
|
|
+ - [ ] 创建路由文件:`src/routes/index.mt.ts` (参考:`packages/advertisements-module-mt/src/routes/index.ts`)
|
|
|
- [ ] 实现API端点:
|
|
- [ ] 实现API端点:
|
|
|
- [ ] `GET /api/credit-balance/{userId}` - 查询用户额度
|
|
- [ ] `GET /api/credit-balance/{userId}` - 查询用户额度
|
|
|
- [ ] `PUT /api/credit-balance/{userId}` - 设置用户额度
|
|
- [ ] `PUT /api/credit-balance/{userId}` - 设置用户额度
|
|
@@ -53,22 +53,21 @@ Draft
|
|
|
- [ ] `GET /api/credit-balance/{userId}/logs` - 查询额度变更记录
|
|
- [ ] `GET /api/credit-balance/{userId}/logs` - 查询额度变更记录
|
|
|
- [ ] `POST /api/credit-balance/payment` - 额度支付
|
|
- [ ] `POST /api/credit-balance/payment` - 额度支付
|
|
|
- [ ] `POST /api/credit-balance/checkout` - 结账恢复额度
|
|
- [ ] `POST /api/credit-balance/checkout` - 结账恢复额度
|
|
|
- - [ ] 添加数据验证Schema
|
|
|
|
|
|
|
+ - [ ] 添加数据验证Schema (参考:`packages/advertisements-module-mt/src/schemas/`)
|
|
|
- [ ] 添加权限控制和认证中间件
|
|
- [ ] 添加权限控制和认证中间件
|
|
|
|
|
|
|
|
|
|
|
|
|
-- [ ] **编写单元测试** (AC: 6)
|
|
|
|
|
- - [ ] 创建实体测试:验证实体定义和关系
|
|
|
|
|
- - [ ] 创建服务测试:测试额度管理逻辑
|
|
|
|
|
- - [ ] 创建API测试:测试端点功能和验证
|
|
|
|
|
|
|
+- [ ] **编写测试** (AC: 6)
|
|
|
|
|
+ - [ ] **服务测试**:测试额度管理逻辑 (参考:`packages/file-module/tests/unit/file.service.test.ts`)
|
|
|
|
|
+ - [ ] **API集成测试**:测试端点功能和验证 (参考:`packages/advertisements-module-mt/tests/integration/advertisements.integration.test.ts`)
|
|
|
- [ ] 添加边界条件测试:额度不足、重复操作等场景
|
|
- [ ] 添加边界条件测试:额度不足、重复操作等场景
|
|
|
- [ ] 确保测试覆盖率 ≥ 80%
|
|
- [ ] 确保测试覆盖率 ≥ 80%
|
|
|
|
|
|
|
|
- [ ] **配置包依赖和导出** (AC: 3, 4)
|
|
- [ ] **配置包依赖和导出** (AC: 3, 4)
|
|
|
- - [ ] 配置package.json依赖关系(TypeORM、Hono等)
|
|
|
|
|
- - [ ] 创建主入口文件:`src/index.mt.ts` 导出所有模块接口
|
|
|
|
|
- - [ ] 配置TypeScript编译选项
|
|
|
|
|
- - [ ] 配置Vitest测试环境
|
|
|
|
|
|
|
+ - [ ] 配置package.json依赖关系(TypeORM、Hono等) (参考:`packages/advertisements-module-mt/package.json`)
|
|
|
|
|
+ - [ ] 创建主入口文件:`src/index.mt.ts` 导出所有模块接口 (参考:`packages/advertisements-module-mt/src/index.ts`)
|
|
|
|
|
+ - [ ] 配置TypeScript编译选项 (参考:`packages/advertisements-module-mt/tsconfig.json`)
|
|
|
|
|
+ - [ ] 配置Vitest测试环境 (参考:`packages/advertisements-module-mt/vitest.config.ts`)
|
|
|
- [ ] 确保包可以正确导入和使用
|
|
- [ ] 确保包可以正确导入和使用
|
|
|
|
|
|
|
|
## Dev Notes
|
|
## Dev Notes
|