feat(commerce): 排盘保存需显式同意,默认本地计算不上传
- 前端免费排盘默认不保存,勾选同意后才调用保存接口 - 服务端要求 consentVersion,记录 consentAt,校验并限流公开保存接口 - 付费结算单独披露报告快照与订单信息将由服务端存储 - 管理端展示同意版本与时间,历史无同意证据记录保留并标注 Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
parent
ea6828b925
commit
132fef051b
+20
-14
@@ -8,25 +8,30 @@
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[填写出生日期、时间、性别、城市] --> B[本地计算真太阳时与八字]
|
||||
A[填写出生日期、时间、性别、城市] --> B[在当前设备计算真太阳时与八字]
|
||||
B --> C[免费查看四柱、五行、大运、流年、刑冲合害、神煞]
|
||||
C --> D{是否解锁深度解读}
|
||||
D -- 否 --> E[继续查看免费排盘]
|
||||
D -- 是 --> F[Postmark 邮箱验证码登录]
|
||||
F --> G{选择支付渠道}
|
||||
G --> H[Stripe: 4.99 USD]
|
||||
G --> I[Binance Pay: 5 USDT]
|
||||
H --> J[服务商签名 Webhook]
|
||||
I --> J
|
||||
J --> K[事务更新订单和报告权益]
|
||||
K --> L[生成随机报告恢复码]
|
||||
L --> M[保存不可变报告快照]
|
||||
M --> N[用户凭购买邮箱和恢复码跨设备找回]
|
||||
C --> D{是否同意保存本次排盘记录}
|
||||
D -- 是 --> E[服务端保存所列资料与排盘快照]
|
||||
D -- 否 --> F[只在当前页面查看,不上传免费排盘记录]
|
||||
C --> G{是否解锁深度解读}
|
||||
G -- 否 --> H[继续查看免费排盘]
|
||||
G -- 是 --> I[邮箱验证码登录并确认下单数据保存说明]
|
||||
I --> J{选择支付渠道}
|
||||
J --> K[Stripe: 4.99 USD]
|
||||
J --> L[Binance Pay: 5 USDT]
|
||||
K --> M[服务商签名 Webhook]
|
||||
L --> M
|
||||
M --> N[事务更新订单和报告权益]
|
||||
N --> O[生成随机报告恢复码]
|
||||
O --> P[保存不可变报告快照]
|
||||
P --> Q[用户凭购买邮箱和恢复码跨设备找回]
|
||||
```
|
||||
|
||||
## 3. 免费排盘内容
|
||||
|
||||
每次排盘都会向服务端保存一份免费快照,记录出生参数、报告编号和计算结果版本,避免用户重复排盘后无法追踪历史。相同输入在同一算法版本下应得到相同结果;算法升级后保留旧快照,不覆盖历史记录。
|
||||
八字运算在当前设备完成。用户默认不上传免费排盘资料;只有主动勾选保存选项后,姓名(如填写)、出生日期、出生时间、性别、城市和排盘快照才会发送到服务端,供授权后台人员查看。未勾选仍可免费计算,但服务端不会创建免费排盘记录。服务端验证同意版本并对公开保存接口限流。相同输入在同一算法版本下应得到相同结果;算法升级后保留已保存快照,不覆盖历史记录。
|
||||
|
||||
购买时会另行告知:创建订单会把报告快照和订单所需信息发送到服务端,用于生成、交付和恢复已购报告;该购买记录不依赖免费排盘保存选项。
|
||||
|
||||
免费层展示基础事实,不把基础数据故意藏到付费层:
|
||||
|
||||
@@ -150,6 +155,7 @@ Stripe 校验 `Stripe-Signature` 与 5 分钟时间窗口;Binance Pay 使用
|
||||
- `report_snapshots`:购买时不可变报告快照。
|
||||
- `payment_events`:Webhook 幂等记录。
|
||||
- `email_login_codes`:一次性验证码。
|
||||
- `bazi_chart_records`:排盘记录增加同意版本与同意时间字段;旧记录不回填为已同意。
|
||||
- `orders` 新增渠道、币种、服务商交易号、报告号、恢复码等字段。
|
||||
|
||||
新部署可使用 GORM AutoMigrate;已有 MySQL 数据库应在备份后执行 `server/migrations/002_commerce.sql`,不要 fresh 或 refresh 数据库。
|
||||
|
||||
Reference in New Issue
Block a user