# NoWhatever 产品优化建议

> 基于全量代码审查 + 现有 ROADMAP/BUGFIX 交叉分析，聚焦 ROADMAP 未覆盖的盲区。
> 按产品影响力排序，非技术债务清单。

---

## 一、核心转化漏斗断裂（最高优先级）

### 1. 新用户从"打开"到"第一次滑卡"路径太长

**现状**：首页 → 选模式 → 设置位置 → 选场景/口味/距离/价格 → 创建房间 → 等待加载 → 开始滑
至少 **6 步 + 1 次定位授权**，每一步都是流失点。对选择困难症用户来说，让他们在设置页面做 4 个选择本身就是讽刺。

**建议**：增加「一键开始」快捷入口 —— 用默认定位 + 默认"吃饭"场景 + 3km 直接开房间，3 秒进入滑卡。高级设置保留给回头用户。

### 2. 切换场景清空已选偏好

**现状**：`handleSceneChange` 直接重置 cuisines 和 price，用户误触即丢失所有配置，无确认。

**建议**：
- 方案 A：缓存每个场景的偏好，切回时恢复
- 方案 B：弹出"切换将清空当前设置，确定？"确认框

### 3. 定位失败引导含糊

**现状**：出现 4 种不同文案（定位中 / 失败 / 被拒绝 / 将使用当前定位），用户不知道该做什么。

**建议**：统一为一个明确的 CTA —— 要么"允许定位"按钮，要么"手动搜索位置"输入框，不要同时展示多个状态。

---

## 二、匹配成功后的闭环缺失

### 4. 缺少"执行"追踪环节

**现状**：匹配到餐厅后，除了导航和电话，没有后续追踪。没有"去了吗？好吃吗？"的闭环。

**建议**：匹配后 2 小时推浏览器通知："去 XXX 了吗？打个分吧"。分数数据反哺未来推荐质量，同时形成用户习惯。

### 5. 收藏按钮隐藏在登录之后

**现状**：未登录用户在 MatchResult 上看不到收藏按钮，但这恰恰是用户最有收藏冲动的时刻。

**建议**：始终展示心形按钮，点击时触发注册引导（"注册即可保存这家店"）。转化率优于当前的被动注册引导卡片。

### 6. "Top N 决赛"理解成本高

**现状**：非全员一致时"缩小范围"按钮直接出现，没有解释这是什么、为什么需要。

**建议**：在按钮上方加引导语："还有 X 家不相上下，再投一轮？"（ROADMAP 已提及但未实现）

---

## 三、盲盒模式参与度瓶颈

### 7. 登录门槛太靠前

**现状**：打开盲盒页面第一件事就是弹登录框，用户连盲盒是什么都没看到就被要求注册。

**建议**：先展示 demo 房间 / 动画演示 / 已有房间的公开预览，让用户理解价值后再引导登录。

### 8. 提交想法缺乏引导和灵感

**现状**：输入框只有 placeholder "写下你的想法..."，用户面对空白框不知道写什么。

**建议**：展示 3-5 个随机示例（"去城市最高楼看日落"、"挑战一人做一道菜"、"找一家从没去过的店"），点击可直接填入，降低创作门槛。

### 9. AI 计划生成无进度反馈 ✅

**现状**：调用 DeepSeek 生成周末计划可能需要 5-10 秒，只有 phase 变化，用户以为卡死了。

**建议**：加逐步动画："正在分析你们的想法..." → "正在规划路线..." → "快好了..."，降低等待焦虑。

**已实现**：
- 新增流式接口 `POST /api/blindbox/plan/stream`，按步骤推送 SSE 进度（分析想法 → 搜索地点 → 规划路线 → 规划周六/周日 → 快好了）。
- 前端优先走流式接口，实时展示服务端进度文案；流式失败时自动回退到普通 `POST /api/blindbox/plan`，并用客户端轮播文案（约 2.8 秒一档）作为后备。
- 计划生成逻辑抽到 `src/lib/blindboxPlanGen.ts`，支持 `onProgress` 回调，供流式与普通接口共用。

### 10. 契约完成率没有激励闭环

**现状**：用户看到完成率数字，但没有任何奖励或惩罚机制。

**建议**：
- 连续完成 3 个契约 → 解锁特殊标签 / 头像框
- 连续放鸽子 → 对方可以"惩罚抽签"（指定必须做某个想法）

---

## 四、单人使用体验

### 11. 单人创建房间后陷入永久等待

**现状**：`userCount === 1` 时仍然进入"等待其他人完成选择"的 spinner。大量用户其实是单人使用（自己选不了吃什么）。

**建议**：单人模式直接出结果，文案改为"帮你选好了！"而非"全员一致"。这解锁了最大的用户群体。

---

## 五、留存与回访机制空白

### 12. 没有任何回访触发点

**现状**：用户用完一次后没有理由回来。没有推送、没有提醒、没有"每周报告"。

**建议**：
- 短期：profile 页加"下次吃什么？"快捷入口 + "上次你们选了 XXX，要不要换一家？"
- 中期：接浏览器 Notification API，工作日下午 5 点推"今晚吃什么？"

### 13. 成就系统只有数字没有情感

**现状**：成就页是统计数据的平铺，没有里程碑、勋章、解锁动画。

**建议**：加入称号体系（"选择恐惧症治愈者 Lv.3"、"周末冒险家"），每次解锁新称号播放庆祝动画。数字驱动不了留存，情感才可以。

### 14. 缺少"历史今天"触发

**现状**：decision 表有 `createdAt` 字段，但从未用于回忆功能。

**建议**："一年前的今天，你和 TA 在 XXX 吃了火锅" —— 极强的情感连接 + 回访理由。在首页或成就页展示。

---

## 六、社交裂变短板

### 15. 分享卡片缺少行动号召

**现状**：生成的分享图有餐厅信息 + 二维码，但没有一句吸引新用户的 hook。

**建议**：卡片底部加一行："选择困难？扫码让 TA 帮你决定 →"

### 16. 邀请页信息不足

**现状**：被邀请者只看到房间 ID 和人数，不知道在选什么、在哪里、选了多久。

**建议**：展示房间场景（吃饭/喝酒）、位置、已滑卡进度，降低加入决策成本。

---

## 七、技术层面影响产品体验的问题

| 问题 | 产品影响 | 建议 |
|------|---------|------|
| 网络断开无任何提示 | 用户滑卡后不知道是否提交成功 | 加"网络已断开"toast + 自动重连机制 |
| 滑卡没有触觉反馈 | 移动端操作感弱，不确定是否成功 | 调用 `navigator.vibrate()` |
| 房间 24h 过期且未登录用户无记录 | 第二天想看"昨天选了什么"看不到 | 引导注册，或用 localStorage 缓存最近一次结果 |
| 图片加载失败静默 | 空白卡片严重影响决策质量 | 加 fallback 占位图 + 重试按钮 |
| 餐厅数量不可预期 | 用户不知道有多少张卡要滑 | 搜索后展示"找到 X 家餐厅"，减少焦虑 |

---

## 优先级排序

### 第一梯队：解决"用了但没用起来"

| # | 改动 | 预期效果 | 复杂度 |
|---|------|---------|--------|
| 1 | "一键开始"快速通道 | 新用户转化率翻倍 | 低 |
| 11 | 单人模式自动出结果 | 解锁最大用户群体 | 低 |
| 7 | 盲盒登录后置 | 盲盒模式使用率提升 | 中 |

### 第二梯队：补全核心体验

| # | 改动 | 预期效果 | 复杂度 |
|---|------|---------|--------|
| 5 | 收藏按钮始终可见 | 注册转化率提升 | 低 |
| 6 | Top N 决赛引导语 | 减少二轮投票的困惑 | 低 |
| 8 | 想法灵感提示 | 想法提交量提升 | 低 |
| 9 | AI 生成进度动画 | 减少等待流失 | 低 |
| 3 | 定位引导优化 | 减少首次使用失败率 | 低 |

### 第三梯队：留存与增长

| # | 改动 | 预期效果 | 复杂度 |
|---|------|---------|--------|
| 4 | 执行追踪 + 打分 | 形成使用习惯 | 中 |
| 12 | 回访通知 | 次日/次周留存提升 | 中 |
| 13 | 情感化成就系统 | 长期留存 | 中 |
| 15 | 分享卡片行动号召 | 自然裂变提升 | 低 |
| 14 | 历史今天 | 情感连接 + 回访 | 低 |

### 第四梯队：体验打磨

| # | 改动 | 预期效果 | 复杂度 |
|---|------|---------|--------|
| 2 | 场景切换保留偏好 | 减少操作挫败感 | 低 |
| 10 | 契约激励闭环 | 盲盒活跃度 | 中 |
| 16 | 邀请页信息补全 | 邀请转化率提升 | 低 |
| — | 网络断开提示 | 减少数据丢失投诉 | 中 |
| — | 滑卡触觉反馈 | 移动端操作满足感 | 低 |

---

> 核心原则：**先让更多人用起来，再让用起来的人留下来，最后让留下来的人带新人。**
