Files
digital-psychology/.ai/product/feature-spec/membership.md
T
jackyu66gitandCursor 7ab9add5dd
ci / h5 (push) Canceled after 0s
ci / api (push) Canceled after 0s
ci / ess-docs (push) Canceled after 0s
feat(ops): ECR-007 行为分析与 ECR-008 内容运营后台
落地埋点 ingest/数据看板、首页宫格 CMS 与测评上下架;含账号引导、问答流式与免责声明去重,以及 review P1 审计同事务修复。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 02:26:16 +08:00

188 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Feature Spec: 深度版与成长会员
> Status: `Active` · Map: `§6 商业体系 · §5.3 会员中心 [P1]` · Phase: `P1`
> 规范:[../feature-design.md](../feature-design.md)
---
## 1. 功能定义
| 字段 | 内容 |
|---|---|
| Name | 深度版成长报告 + 成长会员 |
| Purpose | 用可理解的权益换取付费;解锁完整分析与更高 Ask 配额 |
| Business Goal | ARPU;验证付费墙与 mock 支付闭环 |
| In | Out |
|---|---|
| 单报告 DeepAccess | 广告干扰主路径 |
| 订阅 Membership(月/季/年 mock | 塔罗商城 |
| 问答额度包 ask_pack(mock) | 与会员深度权益混绑(额度包不加深度版) |
| Server 侧权益生效 | 纯前端「解锁」 |
---
## 2. 用户价值
1. **为何需要:** 基础结果不够用时需要完整分析 / 更多问答。
2. **完成后获得:** 该报告 detail;或会员期内全部报告深度 + Ask 额度提升。
3. **为何付费:** 明确权益清单(完整分析、AI 次数、专属内容占位)。
---
## 3. 用户角色
| Actor | 能力 |
|---|---|
| Visitor | 可下单 mock 支付 |
| DeepAccess 持有者 | 指定 report 的 detail |
| VIP | 会员期内全局深度 + Ask 配额规则 |
---
## 4. 用户流程
### 深度版(报告内)
```text
报告页 Locked CTA
POST /orders { kind: deep_access, report_id }
POST /orders/{id}/pay-mock
写入 deep_access → 刷新报告 detail 可见
```
### 成长会员
```text
/membership 查看套餐与当前状态
下单 kind=membership + plan
pay-mock → memberships 行 active + expires_at
此后 GET 任意己方报告 detail 可见(按服务规则)
```
---
## 5. 页面设计
| 路由 | 页面 |
|---|---|
| `/membership` | MembershipPage |
| 画像/关系/报告内 | Paywall / DeepAccess CTA |
```text
/membership
├── Loading
├── Normal(未开通 / 已开通+到期)
├── Error
└── (无独立 Locked;本身即售卖页)
```
---
## 6. 页面状态规范
| 状态 | UI |
|---|---|
| Loading | 拉取 `/membership/me` |
| Normal | 展示套餐、当前是否会员、到期时间 |
| Error | 重试 |
| 报告 Locked | 深度版入口文案(lexicon:深度版/成长会员,不用「解锁」作主文案) |
---
## 7. Business Rules
| ID | Rule |
|---|---|
| R1 | DeepAccess 绑定 `user_id` + `report_id` |
| R2 | Membership active`expires_at > now` |
| R3 | 报告 detail 可见 ⇔ Membership active **OR** DeepAccess 存在 |
| R4 | 支付 P1 仅 mock;成功必须服务端落库后再改可见性 |
| R5 | Ask 配额:免费次数耗尽后可购 ask_pack 或依赖会员配额(见 ask Spec) |
| R8 | `ask_pack`plan=`pack10|pack30|pack100` → 增加 `users.ask_paid_quota_left`;不改变 membership / deep_access |
| R6 | 订单归属必须校验 report 属于当前用户 |
| R7 | 文案:成长会员 / 深度版;禁用恐吓与疗效承诺 |
---
## 8. 数据模型影响
| 表 | 备注 |
|---|---|
| `orders` | kind, amount, status, report_id null |
| `payments` | mock |
| `deep_access` | user_id, report_id, unique |
| `memberships` | plan, expires_at |
---
## 9. API 需求
| Method | Path | 意图 |
|---|---|---|
| GET | `/api/v1/membership/me` | 当前会员状态 |
| POST | `/api/v1/orders` | deep_access \| membership \| ask_pack |
| POST | `/api/v1/orders/{id}/pay-mock` | 生效权益 |
---
## 10. 权限设计
| 能力 | Visitor | DeepAccess | VIP |
|---|---|---|---|
| 看基础报告 | ✓ | ✓ | ✓ |
| 看该报告 detail | ✗ | ✓ | ✓ |
| 看任意己方 detail | ✗ | 仅已购报告 | ✓ |
| 下单 mock | ✓ | ✓ | ✓ |
---
## 11. 埋点
| Event | 触发 |
|---|---|
| `paywall_viewed` | 看到锁定区 |
| `deep_access_clicked` | 点深度版 |
| `membership_plan_clicked` | 选套餐 |
| `order_created` | 下单 |
| `purchase_completed` | pay-mock 成功 |
---
## 12. 测试验收标准
**Given** 无权益报告
**When** pay-mock deep_access
**Then** 再 GET 同报告 detail 非空
**Given** 会员未过期
**When** GET 任意己方 portrait/relation 报告
**Then** detail 可见无需每份 DeepAccess
**Given** 他人 report_id
**When** 尝试下单
**Then** 失败(归属校验)
---
## 13. AI 开发前检查
- [x] Spec 齐全 · map · lexicon · OpenAPI · 可测
---
## 14. Implementation Notes
| 项 | 内容 |
|---|---|
| Packages | `service/order` · `service/membership` · `MembershipPage` |
| Gaps | 真支付网关;发票;退款(须先修订本 Spec §9) |
| Tests | L2 membership unlockMembershipPage.spec |
| Process Review | 2026-08-02 [P1-PROCESS-REVIEW](P1-PROCESS-REVIEW.md) · mock 闭环设计闭合 · 实现 PASS · 测试 PASS |