落地输入合规、探索题库、报告日/时辰刷新、账号头像、OEJTS 量表,并补齐 H5 埋点与 Admin 漏斗;同步 ESS 工件、切至自建 Git、清理 GitHub Actions。 Co-authored-by: Cursor <cursoragent@cursor.com>
224 lines
7.8 KiB
Markdown
224 lines
7.8 KiB
Markdown
# Feature Spec: 探索测试
|
||
|
||
> Status: `Active` · Map: `2.2 人格测评 [P1]` · Phase: `P1`
|
||
> 规范:[../feature-design.md](../feature-design.md)
|
||
|
||
---
|
||
|
||
## 1. 功能定义
|
||
|
||
| 字段 | 内容 |
|
||
|---|---|
|
||
| Name | 探索测试 |
|
||
| Purpose | 通过短量表帮助用户了解沟通方式、情感模式等偏好 |
|
||
| Business Goal | 丰富探索中心;结果导流关系理解与问答;可分享 |
|
||
|
||
| In | Out |
|
||
|---|---|
|
||
| 已发布量表列表、答题、计分、丰富结果 | 伪 MBTI 版权侵权内容 |
|
||
| ≥1 热门测试(P1:沟通方式 + 情感模式) | 医疗量表诊断 |
|
||
| 分享结果卡 | 未定义的「深度付费层」若未实现则标 Gap |
|
||
|
||
---
|
||
|
||
## 2. 用户价值
|
||
|
||
1. **为何需要:** 比生日画像更场景化的自我标签。
|
||
2. **完成后获得:** 风格标签、概述、维度、建议、话术、成长计划。
|
||
3. **付费:** P1 结果全量返回(免费);深度会员导流为软转化(非强制锁结果)。`Gap:` 若产品后续要对部分结果上锁,须先更新本 Spec。
|
||
|
||
---
|
||
|
||
## 3. 用户角色
|
||
|
||
| Actor | 能力 |
|
||
|---|---|
|
||
| Visitor | 浏览列表;提交需 Self Profile |
|
||
| 无档案 | 可看题,提交前引导建档 |
|
||
|
||
---
|
||
|
||
## 4. 用户流程
|
||
|
||
```text
|
||
/explore 测试列表
|
||
↓
|
||
进入 /scales/:slug
|
||
↓
|
||
已有结果? → 直接展示最近结果 +「重新测试」
|
||
↓(无结果 / 点重测)
|
||
加载题目 · 逐题作答(须全部完成)
|
||
↓
|
||
无 Self? → 引导建档
|
||
↓
|
||
POST result → 展示丰富结果
|
||
↓
|
||
分享 / 去关系理解 / 去问答
|
||
```
|
||
|
||
### 子能力展开
|
||
|
||
| 子能力 | P1 |
|
||
|---|---|
|
||
| 测试入口(探索 Tab · 首页宫格) | ✓ · 产品向 `mbti-lite`;探索主路径为 curated 题库(A 集) |
|
||
| 测试列表 | ✓ · 探索「题库精选」宫格(每类 1~2)+「题库分类」;分类页 `/explore/bank/:key` |
|
||
| 题库范围(A) | ✓ 人格 / 情绪能力 / 智能 / 生活与关系;**不含**抑郁焦虑强迫躁狂双相等临床筛查 |
|
||
| 问题流程 | ✓ |
|
||
| 答题保存(服务端结果落库) | ✓ |
|
||
| 最近结果回看 | ✓ GET `/scales/{slug}/result`;有结果进页不重复作答 |
|
||
| 重新测试 | ✓ 结果页按钮 → 清空草稿再答;新结果落库并覆盖展示 |
|
||
| 中断恢复 | ✓ localStorage 草稿(`scaleDraft`);提交后清除 |
|
||
| 结果生成(丰富结构) | ✓ |
|
||
| 免费层 | ✓ 全量 result |
|
||
| 深度层 | N/A(当前不锁) |
|
||
| 分享 | ✓ ShareSheet |
|
||
| AI 解释 | 软链 `/ask` |
|
||
| 数据统计 | 埋点名定义;SDK `Gap` |
|
||
| 验收标准 | §12 |
|
||
|
||
---
|
||
|
||
## 5. 页面设计
|
||
|
||
| 路由 | 页面 |
|
||
|---|---|
|
||
| `/explore` | ExplorePage(题库精选宫格 + 题库分类 + 其它工具) |
|
||
| `/explore/bank/:category` | ExploreBankCategoryPage · curated 题库分类列表 |
|
||
| `/explore/:category` | ExploreCategoryPage · 产品工具分类(解码/星座等) |
|
||
| `/scales/:slug` | ScalePage(含 bank slug) |
|
||
|
||
```text
|
||
/scales/:slug
|
||
├── Loading(题目)
|
||
├── Normal(答题中)
|
||
├── Empty/NeedProfile(提交前无档案)
|
||
├── Error
|
||
└── Result(完成后)
|
||
```
|
||
|
||
---
|
||
|
||
## 6. 页面状态规范
|
||
|
||
| 状态 | UI |
|
||
|---|---|
|
||
| Loading | 加载题目 |
|
||
| Error | 重试 |
|
||
| Normal | 进度 + 单选题 |
|
||
| NeedProfile | 引导首页 |
|
||
| Result | ReportRich 结构展示 |
|
||
|
||
---
|
||
|
||
## 7. Business Rules
|
||
|
||
| ID | Rule |
|
||
|---|---|
|
||
| R1 | 仅 `published` 量表可列表/作答 |
|
||
| R2 | 提交前答案覆盖全部题目 |
|
||
| R3 | 必须绑定用户 Self `profile_id` |
|
||
| R4 | 计分:多数选项 → style;结果文案 lexicon 安全 |
|
||
| R5 | result 含 label/summary/overview/dimensions/tips/scripts/growth_plan/faq |
|
||
| R6 | 结果「不是固定标签」需在文案中提示 |
|
||
| R7 | 作答过程写入本地草稿(按 slug);提交成功后清除;刷新可恢复未提交答案 |
|
||
| R8 | 同一用户同一 slug(含 curated 题库 slug)若已有 `scale_results`,再次进入直接展示**最近一次**结果,并提供「重新测试」;未点重测不得自动进入答题 |
|
||
| R9 | `mbti-lite` 产品展示名统一为「MBTI测试」(首页宫格 / 探索入口 / 量表 title) |
|
||
| R10 | **标准版 `mbti-lite`**:开源 OEJTS 1.2 · **32 题**(四维各 8)· 双极 1–5 Likert;按维累加,阈值判出 E/I·S/N·T/F·J/P 一侧,合成四字母类型;**免费** |
|
||
| R11 | **完整版 `mbti-full`**:60 题(四维各 15)· 须**成长会员**;未开通时 GET 返回 `locked=true` 且无题目;提交返回 403 |
|
||
| R12 | 禁止使用官方 MBTI® 版权题干;结果须提示「不是固定标签」;题库重大更新须 soft-delete 旧 `scale_results` |
|
||
| R13 | curated 题库(`scalebank`)仅含 A 集非临床探索量表;文案须声明「非诊断」;临床类(抑郁/焦虑/强迫等)不得进入 C 端 |
|
||
| R14 | curated 题库作答走同一 `/scales/:slug`;完成后再次点击入口须遵守 R8(只看结果或显式重测),不得每次从头作答 |
|
||
|
||
---
|
||
|
||
## 8. 数据模型影响
|
||
|
||
| 表 | 备注 |
|
||
|---|---|
|
||
| `scales` / `scale_questions` | seed |
|
||
| `scale_results` | answers + result jsonb |
|
||
|
||
---
|
||
|
||
## 9. API 需求
|
||
|
||
| Method | Path | 意图 |
|
||
|---|---|---|
|
||
| GET | `/api/v1/scales` | 列表 |
|
||
| GET | `/api/v1/scales/{slug}` | 题目 |
|
||
| GET | `/api/v1/scales/{slug}/result` | 当前用户该量表最近一次结果;无则 404 |
|
||
| POST | `/api/v1/scales/{slug}/result` | 提交计分 |
|
||
|
||
---
|
||
|
||
## 10. 权限设计
|
||
|
||
| 能力 | Visitor 无档案 | Visitor 有 Self |
|
||
|---|---|---|
|
||
| 看列表/题目 | ✓ | ✓ |
|
||
| 提交结果 | ✗ | ✓ |
|
||
| `mbti-full` 作答 | ✗(须成长会员) | ✓(会员 active) |
|
||
|
||
---
|
||
|
||
## 11. 埋点
|
||
|
||
经统一 `track()`;非 P1 核心 5 事件。禁止参数含题干全文、答案明文、档案 ID。
|
||
|
||
| Event | 触发 | 可选 params |
|
||
|---|---|---|
|
||
| `scale_list_viewed` | 打开 `/explore` 且题库 catalog 加载成功 | — |
|
||
| `scale_bank_category_viewed` | 打开 `/explore/bank/:category` 且分类加载成功 | `category`(key) |
|
||
| `scale_started` | 用户点开始进入作答(含「重新测试」后再开始) | `slug` · `access`: free\|member |
|
||
| `scale_completed` | 提交计分成功并展示结果 | `slug` · `access`: free\|member |
|
||
| `scale_result_reopened` | 再次进入已有结果直接展示(R8,未重测) | `slug` |
|
||
| `scale_retake_clicked` | 点「重新测试」 | `slug` |
|
||
| `scale_locked_viewed` | 会员锁页展示(如 mbti-full) | `slug` |
|
||
| `scale_share_clicked` | 结果页打开分享 | `slug` |
|
||
| `scale_cta_relation` / `scale_cta_ask` | 结果导流(若 UI 有) | `slug` |
|
||
|
||
`page_view` 对 `/explore` · `/explore/bank/*` · `/scales/*` 由路由自动采集。
|
||
|
||
---
|
||
|
||
## 12. 测试验收标准
|
||
|
||
**Given** published 量表与 Self
|
||
**When** 答完提交
|
||
**Then** 返回 label 与 overview/tips 等丰富字段
|
||
|
||
**Given** 已提交过结果
|
||
**When** 再次进入 `/scales/{slug}`
|
||
**Then** 直接展示最近结果与「重新测试」;不进入答题
|
||
|
||
**Given** 结果页点「重新测试」并完成提交
|
||
**When** 再次进入
|
||
**Then** 展示新结果
|
||
|
||
**Given** 未答完
|
||
**When** 提交
|
||
**Then** 前端拦截;不成功落库
|
||
|
||
**Given** 无 Self
|
||
**When** 提交
|
||
**Then** 引导建档
|
||
|
||
---
|
||
|
||
## 13. AI 开发前检查
|
||
|
||
- [x] Spec 齐全 · 子能力已展开 · map · lexicon · OpenAPI · 可测
|
||
|
||
---
|
||
|
||
## 14. Implementation Notes
|
||
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Packages | `internal/scale` · `service/scale` · `ExplorePage` · `ScalePage` |
|
||
| Seeds | communication-style · emotion-pattern · **mbti-lite(OEJTS 32)** · **mbti-full(60·会员)** |
|
||
| Gaps | 结果付费墙若要做须先改 Spec;全量 §11 埋点未挂(核心漏斗见 analytics) |
|
||
| Tests | score/result L1;`ScoreJungian`;`scaleDraft.spec`;Scale 流程组件测 |
|
||
| Process Review | OEJTS 标准/完整双轨 · 最近结果回看 · P1 收口 |
|
||
| Credit | OEJTS / Open Psychometrics · openjung MIT |
|