# Feature Spec: 意象卡片 > Status: `Active` · Map: `2.8 意象卡片 [P2]` · Phase: `P2 Complete` > 规范:[../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 - [x] 内容库 seed 与 OpenAPI(编码时) --- ## 14. Implementation Notes | 项 | 内容 | |---|---| | 复用 | ShareSheet · membership/orders · Explore 入口 | | 工作量 | 卡面文案/视觉资产最大;宜先 22~78 张小库 MVP | | Packages | `internal/imagecard` · `ImageCardPage` `/cards` | | 实现 | scenes/quota/draw API · 报告 type=`image_card` · 日配额 · ≥78 牌(手写底稿+确定性扩容)· ≥8 场景 | | Gaps | 全手写美术资产;推送 | | Label | Feature Complete(P2) |