Files
digital-psychology/.ai/product/feature-spec/home.md
T
jackyu66gitandCursor 89756f65b4 feat(ECR-012–016): 合规、题库、时辰刷新、头像、MBTI OEJTS 与埋点
落地输入合规、探索题库、报告日/时辰刷新、账号头像、OEJTS 量表,并补齐 H5 埋点与 Admin 漏斗;同步 ESS 工件、切至自建 Git、清理 GitHub Actions。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-13 01:27:58 +08:00

178 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Feature Spec: 首页(发现与入口)
> Status: `Active` · Map: `§1 首页 [P1]` · Phase: `P1`
> 规范:[../feature-design.md](../feature-design.md)
---
## 1. 功能定义
| 字段 | 内容 |
|---|---|
| Name | 首页 |
| Purpose | 品牌露出 + 建档/性格探索主 CTA + 功能入口分发 |
| Business Goal | 新用户进入 Step 1–3;品牌第一屏可识别 |
| In | Out |
|---|---|
| 建档生日表单 → 画像;九宫格/入口 | 运势 Feed 主路径 |
| 推荐区静态/轻运营即可 | Dashboard 式状态墙(如「API 已连接」勿对用户展示) |
---
## 2. 用户价值
1. **为何需要:** 知道从哪开始认识自己。
2. **完成后获得:** 一键进入画像主路径或其它 Tab。
3. **付费:** N/A。
---
## 3. 用户角色
| Actor | 能力 |
|---|---|
| 新 Visitor | 见品牌 + 建档 CTA |
| 老用户 | 同样入口;可去「我的」看资产 |
---
## 4. 用户流程
```text
打开 /
看到品牌 + 主 CTA(生日/探索)
提交生日 → 创建档案 → /portrait
点入口 → /explore /relation /ask /membership …
```
设计约束(前端):品牌英雄级信号;移动优先;文案 lexicon。
---
## 5. 页面设计
| 路由 | 页面 |
|---|---|
| `/` | HomePage |
| 全局 | AppHeader · TabBar |
```text
/
├── 全局顶栏:透明愈心谷 Logo(AppHeader,全站)
├── 「自己」卡片标题展示账号昵称(默认意象词+场景词;档案页可改)
├── 穿衣指数 · 颜色搭配 · 养生推荐
├── 功能入口(4 列固定网格 · 多行换行 · 禁止横向滑动)
└── (可选)推荐内容
```
---
## 6. 页面状态规范
| 状态 | UI |
|---|---|
| Normal | 主路径可见 |
| Error | 建档/跳转失败可感知 |
| Loading | 提交建档时按钮态 |
Empty:首页本身是入口,不因无档案空白死页。
---
## 7. Business Rules
| ID | Rule |
|---|---|
| R1 | 主 CTA 必须通向建档或画像,而非死链 |
| R2 | 不展示内部运维信息(API 连接状态等) |
| R3 | 入口文案符合 lexicon(个人画像/关系理解/成长会员…) |
| R4 | Tab 五名冻结:首页·探索·问答·陪伴·我的 |
| R5 | 「自己」卡片:穿衣指数 / 颜色搭配 / 养生推荐;有 Self 生日时按生日+**本地日历**+**十二时辰**易经种子生成;**每一时辰准点切换**;无档案或 LLM 不可用则本地回退 |
| R6 | 文案禁止占卜/算命恐吓与医疗疗效承诺;卦象仅作节律意象 |
| R7 | 贴士按 `user × 时辰起点` 持久缓存;GET 优先读缓存**即时返回**;缓存未命中时先回退/旧值,后台异步生成写入,禁止每次打开同步等 LLM |
| R8 | 响应含 `shichen` / `shichen_name` / `valid_until`(下一时辰起点);前端在 `valid_until` 自动静默刷新 |
---
## 8. 数据模型影响
经首页建档时写 `profiles``home_daily_tips(user_id, shichen_start, tips jsonb)` 缓存时辰贴士。
---
## 9. API 需求
| Method | Path | 说明 |
|---|---|---|
| GET | `/api/v1/home/tools` | 宫格(已有) |
| GET | `/api/v1/home/daily-tips` | 自己卡片贴士(读缓存;含 valid_until |
| — | 复用 | `POST /profiles``POST /reports/portrait` |
---
## 10. 权限设计
| 能力 | Visitor | User |
|---|---|---|
| 浏览首页 | ✓ | ✓ |
| 建档并生成画像 | 需登录 | ✓ |
| daily-tips(个性化) | 回退文案 | 有 Self 生日则 LLM |
---
## 11. 埋点
| Event | 触发 |
|---|---|
| `home_viewed` | 打开 |
| `home_cta_portrait` | 主 CTA |
| `home_entry_click` | 九宫格项(带 name |
---
## 12. 测试验收标准
**Given** 新用户
**When** 打开首页
**Then** 可见品牌与建档/探索入口
**Given** 合法生日
**When** 提交主 CTA
**Then** 进入画像基础结果路径
**Given** 已登录且有 Self 生日、该时辰已有缓存
**When** GET `/home/daily-tips`
**Then** 立即返回缓存(含 clothing/palette/wellness / valid_until),不阻塞 LLM
**Given** 时辰切换到点
**When** 前端到达 `valid_until`
**Then** 静默刷新;穿衣/颜色/养生随新时辰更新
**Given** 无档案或无 LLM
**When** GET `/home/daily-tips`
**Then** `source=fallback` 且页面不白屏
---
## 13. AI 开发前检查
- [x] lexicon
- [x] 不恐吓 / 不算命话术
- [x] OpenAPI 已登记 `/home/daily-tips`
- [x] Spec 齐全
---
## 14. Implementation Notes
| 项 | 内容 |
|---|---|
| Packages | `HomePage` · `App.vue` shell |
| Gaps | 推荐 Feed 运营位可静态;埋点未接 |
| Process Review | 2026-08-02 [P1-PROCESS-REVIEW](P1-PROCESS-REVIEW.md) · 设计闭合 · 实现 PASS · 测试 PARTIAL |