chore(task): archive 04-28-feat-points-ledger
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
### 已完成
|
||||
- [x] 协议文档更新(`user-points-chat-data-protocol.md`、`http-error-codes.md`)
|
||||
- [x] PRD 退款扣回策略已明确
|
||||
- [x] 套餐配置 YAML 已正确命名(`new_user_pack`, `basic_pack` 等)
|
||||
- [x] 套餐配置 YAML 已正确命名(`new_user_pack`, `starter_pack` 等)
|
||||
- [x] **Phase 1: 数据库与枚举**(2026-04-27 完成)
|
||||
- [x] **Phase 2: 后端支付服务**(2026-04-27 完成)
|
||||
- [x] **Phase 3: iOS / Flutter IAP 接入**(2026-04-27 完成)
|
||||
@@ -178,8 +178,8 @@ product_mappings:
|
||||
app_store_product_id: com.meeyao.qianwen.new_user_pack
|
||||
credits: 60
|
||||
type: starter
|
||||
basic_pack:
|
||||
app_store_product_id: com.meeyao.qianwen.basic_pack
|
||||
starter_pack:
|
||||
app_store_product_id: com.meeyao.qianwen.starter_pack
|
||||
credits: 100
|
||||
type: regular
|
||||
popular_pack:
|
||||
@@ -286,7 +286,7 @@ apps/lib/features/payments/
|
||||
- [x] 创建 4 个消耗型 IAP 商品(Product ID 已确认与映射表一致)
|
||||
- [x] Product ID 与映射表一致
|
||||
- `com.meeyao.qianwen.new_user_pack` — 新手包
|
||||
- `com.meeyao.qianwen.basic_pack` — 基础包
|
||||
- `com.meeyao.qianwen.starter_pack` — 入门包
|
||||
- `com.meeyao.qianwen.popular_pack` — 热门包
|
||||
- `com.meeyao.qianwen.premium_pack` — 高级包
|
||||
- [ ] 配置价格和描述
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
- 成本/审计流水:`points_audit_ledger`
|
||||
- 注册奖励与新手包资格表:`register_bonus_claims`
|
||||
- 积分套餐配置:`backend/src/core/config/static/packages/*.yaml`
|
||||
- 当前套餐:`new_user_pack`、`basic_pack`、`popular_pack`、`premium_pack`
|
||||
- 当前套餐:`new_user_pack`、`starter_pack`、`popular_pack`、`premium_pack`
|
||||
- 当前套餐接口:`GET /api/v1/points/packages`
|
||||
- 当前积分余额接口:`GET /api/v1/points/balance`
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
| 后端 `product_code` | App Store Product ID | 类型 | 积分 | 备注 |
|
||||
|---|---|---|---:|---|
|
||||
| `new_user_pack` | `com.meeyao.qianwen.new_user_pack` | starter | 60 | 每个邮箱身份只允许购买一次 |
|
||||
| `basic_pack` | `com.meeyao.qianwen.basic_pack` | regular | 100 | 可重复购买 |
|
||||
| `starter_pack` | `com.meeyao.qianwen.starter_pack` | regular | 100 | 可重复购买 |
|
||||
| `popular_pack` | `com.meeyao.qianwen.popular_pack` | regular | 210 | 可重复购买 |
|
||||
| `premium_pack` | `com.meeyao.qianwen.premium_pack` | regular | 415 | 可重复购买 |
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
|---|---|---|
|
||||
| `id` | UUID PK | 内部交易记录 ID |
|
||||
| `user_id` | UUID not null | 当前购买归属用户,来自后端 JWT,不接受客户端传入 |
|
||||
| `product_code` | varchar not null | 后端套餐码,例如 `basic_pack` |
|
||||
| `product_code` | varchar not null | 后端套餐码,例如 `starter_pack` |
|
||||
| `app_store_product_id` | varchar not null | Apple 商品 ID |
|
||||
| `transaction_id` | varchar not null unique | Apple 交易 ID,核心幂等键 |
|
||||
| `original_transaction_id` | varchar null | Apple 原始交易 ID |
|
||||
@@ -165,8 +165,8 @@
|
||||
{
|
||||
"source": "apple_iap",
|
||||
"platform": "ios",
|
||||
"product_code": "basic_pack",
|
||||
"app_store_product_id": "com.meeyao.qianwen.basic_pack",
|
||||
"product_code": "starter_pack",
|
||||
"app_store_product_id": "com.meeyao.qianwen.starter_pack",
|
||||
"transaction_id": "1000000123456789",
|
||||
"original_transaction_id": "1000000123456789",
|
||||
"environment": "Production",
|
||||
@@ -209,8 +209,8 @@
|
||||
|
||||
```json
|
||||
{
|
||||
"productCode": "basic_pack",
|
||||
"appStoreProductId": "com.meeyao.qianwen.basic_pack",
|
||||
"productCode": "starter_pack",
|
||||
"appStoreProductId": "com.meeyao.qianwen.starter_pack",
|
||||
"transactionId": "1000000123456789",
|
||||
"signedTransactionInfo": "eyJhbGciOiJFUzI1NiIs...",
|
||||
"appAccountToken": "7c4c7a82-2f6f-4e70-b57a-8b0a7f2e9b72"
|
||||
@@ -230,7 +230,7 @@
|
||||
```json
|
||||
{
|
||||
"status": "granted",
|
||||
"productCode": "basic_pack",
|
||||
"productCode": "starter_pack",
|
||||
"transactionId": "1000000123456789",
|
||||
"creditsAdded": 100,
|
||||
"newBalance": 180,
|
||||
@@ -243,7 +243,7 @@
|
||||
```json
|
||||
{
|
||||
"status": "already_granted",
|
||||
"productCode": "basic_pack",
|
||||
"productCode": "starter_pack",
|
||||
"transactionId": "1000000123456789",
|
||||
"creditsAdded": 0,
|
||||
"newBalance": 180,
|
||||
|
||||
Reference in New Issue
Block a user