# 21 · 测评与沉浸式玩法完整设计 > Design Complete · MBTI / 广场 / 沙盘 / 心情小镇 / 塔罗 --- ## 1. 测评中心 `TestsHub` ### 1.1 Route `/tests` · `/tests/:slug` ### 1.2 UI - 分类 Chip:人格 / 情感 / 压力 / 趣味 - 卡片:封面 · 标题 · 题量 · 预计时长 · 热度 · 免费/付费角标 - 搜索(可选,二期) ### 1.3 答题流 `TestPlayer` | 步骤 | 说明 | |---|---| | Intro | 说明用途、隐私、预计时长、开始 | | Question | 单选为主;进度条;可上一题 | | Submit | Loading → 结果 | | Result | 类型码/分数 + 摘要 + 分享 +「深度报告」锁 | 状态:`Intro` · `Answering` · `Submitting` · `ResultFree` · `ResultPaywalled` · `Error` API: - `GET /v1/tests` · `GET /v1/tests/:slug` - `POST /v1/tests/:slug/sessions` → `session_id` - `POST /v1/tests/sessions/:id/answer` - `POST /v1/tests/sessions/:id/submit` - `GET /v1/tests/sessions/:id/report` 校验:`V-T01` 进度可回退 · `V-T02` 结果锁点 · `V-T03` 历史入库「我的测试」 --- ## 2. 心理广场 `PsychPlaza` Route: `/plaza` | 区块 | 设计定稿 | |---|---| | Feed | 图文/话题卡;点赞评论 | | Topic | 官方话题置顶 | | Publish | 发帖(需登录);敏感词过滤 | | Detail | 评论树一级 + 楼中楼 | API:`GET /v1/plaza/feed` · `POST /v1/plaza/posts` · `POST .../like` 注意:UGC 审核队列进运营后台(见 40)。 校验:`V-P01` Feed 排序 · `V-P02` 发帖门槛 --- ## 3. 沙盘 `Sandbox` Route: `/sandbox` 定稿流程: 1. 空场景 + 道具架(人物/物品/自然) 2. 拖拽摆放;缩放旋转 3. 完成 → 生成解读摘要(AI 或模板) 4. 保存作品到「我的」;可分享静态图 状态:`Editing` · `Generating` · `Saved` · `Paywalled`(深度解读) API:`POST /v1/sandbox/sessions` · `POST .../complete` · `GET .../report` 校验:`V-B01` 道具集 · `V-B02` 解读是否 AI --- ## 4. 心情小镇 `MoodTown` Route: `/mood-town` 定稿: - 地图节点:今日心情打卡 · 小任务 · 收集物 - 打卡:情绪滑杆 + 可选日记 - 连续打卡奖励(积分/优惠券,与会员解耦) API:`POST /v1/mood/checkin` · `GET /v1/mood/calendar` · `GET /v1/mood/town-state` 校验:`V-M01` 节点集合 · `V-M02` 奖励规则 --- ## 5. 塔罗 `Tarot` Route: `/tarot` 定稿(合规表述:牌阵洞察 / 自我反思,非「算命」): | 模式 | 说明 | |---|---| | 单牌 | 日签 | | 三牌 | 过去/现在/未来(表述可改为 课题/现状/行动) | | 牌阵库 | 恋爱/决策等模板 | 流程:选牌阵 → 洗牌动画 → 抽牌 → 正逆位 → 牌义摘要 → 深度(付费) API:`POST /v1/tarot/draw` `{ spread, seed? }` · `GET /v1/tarot/history` 校验:`V-R01` 牌阵列表 · `V-R02` 深度锁 · `V-R03` 文案是否触发词表禁词(实现闸) --- ## 6. 统一商业与埋点 - 深度结果统一走 `PaywallSheet`(会员优先 / 单次次之) - 埋点:`test_start` · `test_complete` · `plaza_post` · `sandbox_complete` · `mood_checkin` · `tarot_draw` · `immersive_unlock`