落地输入合规、探索题库、报告日/时辰刷新、账号头像、OEJTS 量表,并补齐 H5 埋点与 Admin 漏斗;同步 ESS 工件、切至自建 Git、清理 GitHub Actions。 Co-authored-by: Cursor <cursoragent@cursor.com>
178 lines
4.7 KiB
Markdown
178 lines
4.7 KiB
Markdown
# 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 |
|