feat: P1 合盘/星座/问答与测测完整设计包及模拟器取证工具

落地 synastry/star/ask API 与 H5 页面,补齐 cece-frontend-re complete-design 证据文档,并加入 Android 模拟器截图抓取脚本。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
jackyu66git
2026-08-03 11:37:53 +08:00
co-authored by Cursor
parent 15a9db374a
commit bd22d9dddd
248 changed files with 26309 additions and 842 deletions
+185
View File
@@ -0,0 +1,185 @@
# 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` | ImageCardPageP2 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 JSONid, 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 |