Files
no-whatever/PRODUCT_OPTIMIZATION.md
T
kurihada 2d49744dd0 feat(blindbox): AI 计划生成流式进度与渐进式文案
- 新增 runPlanGeneration 与 onProgress 回调 (blindboxPlanGen.ts)
- 新增 POST /api/blindbox/plan/stream 推送 SSE 进度事件
- 前端优先走流式接口,实时展示「分析想法→搜索地点→规划路线→快好了」
- 流式失败时回退普通 POST,客户端轮播进度文案作为后备
- 规划阶段 UI 显示 planStatusMessage 替代静态文案
2026-02-27 17:37:40 +08:00

8.2 KiB
Raw Blame History

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 邀请页信息补全 邀请转化率提升
网络断开提示 减少数据丢失投诉
滑卡触觉反馈 移动端操作满足感

核心原则:先让更多人用起来,再让用起来的人留下来,最后让留下来的人带新人。