落地 synastry/star/ask API 与 H5 页面,补齐 cece-frontend-re complete-design 证据文档,并加入 Android 模拟器截图抓取脚本。 Co-authored-by: Cursor <cursoragent@cursor.com>
186 lines
5.0 KiB
Markdown
186 lines
5.0 KiB
Markdown
# Feature Spec: 意象卡片
|
||
|
||
> Status: `Active`(设计)· Map: `2.8 意象卡片 [P2]` · Phase: `P2`
|
||
> 规范:[../feature-design.md](../feature-design.md) · 队列:[P2-BACKLOG.md](P2-BACKLOG.md)
|
||
> 竞品对照:塔罗体系(能力同构;**UI 禁止「塔罗」入口名**)
|
||
|
||
---
|
||
|
||
## 1. 功能定义
|
||
|
||
| 字段 | 内容 |
|
||
|---|---|
|
||
| Name | 意象卡片 |
|
||
| Purpose | 通过抽取 1~3 张意象卡,对当下议题做投射反思,并给出结构化反思题与行动建议 |
|
||
| Business Goal | 高趣味探索与分享;免费次数 + 深度解读转化 |
|
||
|
||
| In | Out |
|
||
|---|---|
|
||
| 场景选题 · 抽卡 · 探索摘要 · 深度组合解读 | 吉凶判定、神谕、恐吓 |
|
||
| 卡面内容库(seed) | UI 文案「塔罗」「牌阵占卜」 |
|
||
| 每日免费次数规则 | 宿命叙事 |
|
||
|
||
---
|
||
|
||
## 2. 用户价值
|
||
|
||
1. **为何需要:** 卡住时需要一个轻量的外在意象帮助整理感受。
|
||
2. **完成后获得:** 卡片意象说明、反思问题、可执行小建议;深度版含组合解读与练习。
|
||
3. **为何付费:** 多卡组合与完整练习路径。
|
||
|
||
---
|
||
|
||
## 3. 用户角色
|
||
|
||
| Actor | 能力 |
|
||
|---|---|
|
||
| Visitor | 每日免费 N 次基础抽卡(N 实现时定数,建议 1~3) |
|
||
| DeepAccess(本结果)/ VIP | 深度组合解读 |
|
||
| 可选挂档案 | 有档案时文案可轻微个性化(非必须) |
|
||
|
||
---
|
||
|
||
## 4. 用户流程
|
||
|
||
```text
|
||
/cards
|
||
↓
|
||
选择场景:情绪整理 / 关系 / 选择 / 自我
|
||
↓
|
||
检查今日免费次数
|
||
├─ 耗尽 → 引导会员或明日再来(可看历史)
|
||
└─ 有余 → 抽 1 张(免费)或解锁 3 张组合(深度)
|
||
↓
|
||
展示意象 + 反思题 + 建议
|
||
↓
|
||
分享(积极、非恐吓视觉)
|
||
```
|
||
|
||
---
|
||
|
||
## 5. 页面设计
|
||
|
||
| 路由 | 页面 |
|
||
|---|---|
|
||
| `/cards` | ImageCardPage(P2 draft) |
|
||
| `/explore` | 入口「意象卡片」 |
|
||
| `/reports/:id` 或结果页内 | 深度结果沉淀(可选) |
|
||
|
||
```text
|
||
/cards
|
||
├── Scene picker
|
||
├── Loading(抽卡动画,克制)
|
||
├── Normal(单卡摘要)
|
||
├── Locked(组合深度)
|
||
├── Quota empty
|
||
└── Error
|
||
```
|
||
|
||
---
|
||
|
||
## 6. 页面状态规范
|
||
|
||
| 状态 | UI |
|
||
|---|---|
|
||
| Loading | 抽卡中 |
|
||
| Normal | 意象说明 + 反思 |
|
||
| Locked | 组合解读墙 |
|
||
| Quota empty | 次数用尽说明 + 会员 CTA |
|
||
| Error | 重试 |
|
||
|
||
---
|
||
|
||
## 7. Business Rules
|
||
|
||
| ID | Rule |
|
||
|---|---|
|
||
| R1 | 用户可见文案**不得**出现「塔罗」;用「意象卡片」「探索」「反思」 |
|
||
| R2 | **禁止**吉凶、神谕式断言、恐吓(如「大难」) |
|
||
| R3 | 输出必须含:意象描述 · 至少 1 个反思问题 · 1 条可执行建议 |
|
||
| R4 | 免费:每日有限次单卡摘要;深度:3 卡组合 + 练习(Membership 或单次 DeepAccess) |
|
||
| R5 | 抽卡随机可接受,但卡面文案来自审核过的内容库(非模型现场胡编吉凶) |
|
||
| R6 | 分享卡不得含恐吓图文;过 lexicon |
|
||
| R7 | 次数与权益 **Server** 判定 |
|
||
|
||
---
|
||
|
||
## 8. 数据模型影响
|
||
|
||
| 项 | 说明 |
|
||
|---|---|
|
||
| 内容库 | `image_cards` 表或 seed JSON(id, title, image_key, explore_text, prompts[]) |
|
||
| 结果 | `growth_reports.type=image_card` **或** `scale_results` 变体(实现时二选一,写 OpenAPI) |
|
||
| 配额 | 用户日维度计数(表或 Redis);实现时定 |
|
||
|
||
禁止:`tarot_*` 作用户可见 API 路径名(对内包名用 `imagecard`)。
|
||
|
||
---
|
||
|
||
## 9. API 需求(草案)
|
||
|
||
| Method | Path | 意图 |
|
||
|---|---|---|
|
||
| GET | `/api/v1/image-cards/scenes` | 场景列表 |
|
||
| POST | `/api/v1/image-cards/draw` | scene → 抽卡结果(扣免费次) |
|
||
| GET | `/api/v1/image-cards/quota` | 今日剩余 |
|
||
| GET | `/api/v1/reports/{id}` | 若沉淀为报告 |
|
||
|
||
深度组合可同 draw 参数 `depth=true` + 权益校验。
|
||
|
||
---
|
||
|
||
## 10. 权限设计
|
||
|
||
| 能力 | 免费额度内 | 额度外 | 深度权益 |
|
||
|---|---|---|---|
|
||
| 单卡摘要 | ✓ | ✗ | ✓ |
|
||
| 三卡组合解读 | ✗ | ✗ | ✓ |
|
||
|
||
---
|
||
|
||
## 11. 埋点
|
||
|
||
| Event | 触发 |
|
||
|---|---|
|
||
| `cards_scene_selected` | 选场景 |
|
||
| `cards_drawn` | 抽卡成功 |
|
||
| `cards_quota_exhausted` | 次数用尽 |
|
||
| `deep_access_clicked` | surface=cards |
|
||
| `cards_share_clicked` | 分享 |
|
||
|
||
---
|
||
|
||
## 12. 测试验收标准
|
||
|
||
**Given** 有免费次数
|
||
**When** 抽卡
|
||
**Then** 返回意象+反思题+建议;响应与 UI 无「塔罗」「吉凶」
|
||
|
||
**Given** 次数为 0
|
||
**When** 再抽
|
||
**Then** 业务错误,不生成假深度
|
||
|
||
**Given** 无深度权益
|
||
**When** 请求组合解读
|
||
**Then** Locked / 剥离
|
||
|
||
---
|
||
|
||
## 13. AI 开发前检查
|
||
|
||
- [x] Spec 齐全 · 禁用塔罗入口已写清
|
||
- [x] lexicon ImageCard
|
||
- [ ] 内容库 seed 与 OpenAPI(编码时)
|
||
|
||
---
|
||
|
||
## 14. Implementation Notes
|
||
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| 复用 | ShareSheet · membership/orders · Explore 入口 |
|
||
| 工作量 | 卡面文案/视觉资产最大;宜先 22~78 张小库 MVP |
|
||
| Packages | `internal/imagecard` · `ImageCardPage` `/cards` |
|
||
| 实现 | scenes/quota/draw API · 报告 type=`image_card` · 日配额表 · seed 12 卡 |
|
||
| 编码顺序 | P2-BACKLOG 切片 3 Done |
|