落地 synastry/star/ask API 与 H5 页面,补齐 cece-frontend-re complete-design 证据文档,并加入 Android 模拟器截图抓取脚本。 Co-authored-by: Cursor <cursoragent@cursor.com>
4.8 KiB
4.8 KiB
12 ·「问」完整设计(测测 AI + 真人 1v1)
Route:
/ask· Design Complete · 战略核心页
1. 目标
- 以星盘档案为底座的垂直 AI 对话
- 同页低摩擦切换真人咨询
- 对象切换(自己/TA)扩展关系场景
- 深度思考与子场景(灵魂伴侣等)承载差异化
2. UI 完整清单
2.1 顶栏 AskTopBar(✅ E8)
| ID | 元素 | 行为 |
|---|---|---|
| A-BACK | 返回 | 回上一页/首页 |
| A-TAB-AI | 「测测AI」 | 默认选中 |
| A-TAB-HUMAN | 「真人1v1」 | 角标「新客半价」(运营可配) |
| A-MENU | 汉堡菜单 | 历史/设置;可带红点 |
2.2 AI 轨首屏(✅ E8 · 非纯聊天空态)
冷启动为引导页 + 转化区,而非空白线程:
| 区块 | 内容 |
|---|---|
| 人设问候 | 猫头鹰 IP +「Hi~我是测测AI / 最近有什么事…」 |
| 引导问题 ×4 | 整行按钮(非小芯片) |
| 真人咨询导流 | 「也可以选择真人咨询…」+「228位测测达人在线」+「去提问」 |
| 达人数量卡 | 1/3/8/15 位;「新客6折」等角标 |
| 底栏快捷 | 工具 · 语音通话 · 深度解读 · 灵魂伴侣 |
| 输入框 | placeholder「让我来解答你的问题吧」 |
| 免责声明 | 「内容由AI生成,仅供娱乐…」 |
实测引导问题(✅ 替换原草稿)
- 有哪些适合我的财富建议?
- 这份工作有发展吗?
- 我有什么性格弱点吗?
- 我和Ta会复合吗?
2.3 上下文/能力入口(✅ E8 落在底栏快捷)
| ID | 元素 | 行为 |
|---|---|---|
| A-TOOLS | 「工具」 | Sheet:星盘等工具入口 |
| A-VOICE | 「语音通话」 | 语音;可红点 |
| A-DEEP | 「深度解读」 | 深度能力(可能付费) |
| A-SOUL | 「灵魂伴侣」 | 子场景 |
对象切换/星盘维度:在工具 Sheet 或对话上下文中(待 ask/tools-sheet 截图补全)。
2.4 输入区 AskComposer
| 元素 | 行为 |
|---|---|
| 文本框 | placeholder 见上 |
| 发送 | 输入后出现 |
| 语音 | 底栏「语音通话」独立入口 |
2.5 真人轨 AskHumanRail
顶栏切「真人1v1」(角标「新客半价」);同页亦嵌入 AI 轨中部的达人导流卡。
2.6 子页
/ask/soulmate灵魂伴侣/ask/history会话历史- Profile 创建嵌入式 Modal
3. 交互与业务规则
| 规则 ID | 规则 |
|---|---|
| R-ASK-01 | 每条用户消息消耗 1 次额度;深度思考 ×2 |
| R-ASK-02 | 额度=0 → PaywallSheet(会员优先) |
| R-ASK-03 | 切换对象后下一条消息带新 profile_ctx_id |
| R-ASK-04 | 对象无档案 → 强制建档流,不可发送 |
| R-ASK-05 | 流式中再次发送:排队或禁用(D:禁用) |
| R-ASK-06 | 敏感意图 → 危机卡片,不计成功陪伴文案 |
| R-ASK-07 | 切「真人1v1」不清除 AI 历史 |
| R-ASK-08 | 下拉加载更早消息,page_size=20 |
4. 状态机
stateDiagram-v2
[*] --> Boot
Boot --> IdleFresh: 无历史
Boot --> IdleHistory: 有历史
IdleFresh --> Streaming: send/chip
IdleHistory --> Streaming
Streaming --> IdleHistory: done
Streaming --> StreamError: fail
StreamError --> Streaming: retry
IdleFresh --> NeedProfile: 选TA无档
NeedProfile --> IdleFresh: 建档完成
IdleHistory --> QuotaEmpty
QuotaEmpty --> Paywall
IdleHistory --> HumanRail: tab
HumanRail --> IdleHistory: tab AI
全量状态:Boot · IdleFresh · IdleHistory · Streaming · StreamError · NeedProfile · QuotaEmpty · Paywall · HumanRail · Offline · AuthRequired · DeepOn(正交 flag)。
5. API
| API | 说明 |
|---|---|
GET /v1/ai/bootstrap |
额度、默认 profile、引导问题、deep 是否可用 |
GET /v1/ai/conversations |
列表 |
GET /v1/ai/conversations/{id}/messages?cursor= |
历史 |
POST /v1/ai/chat |
body: {conversation_id?, content, profile_ctx_id, dimension, deep} → SSE |
POST /v1/ai/conversations |
新建 |
GET /v1/ai/quota |
remaining |
SSE 事件:meta · delta · suggest · usage · error · done。
6. 异常矩阵
| 场景 | UI |
|---|---|
| SSE 中断 | 气泡「已中断」+ 重试 |
| 402 额度 | Paywall |
| 400 无档案 | NeedProfile |
| 403 内容安全 | 固定拒答 |
| 超时 30s | StreamError |
| 离线 | 禁用发送 |
7. 埋点
ask_open · ask_send · ask_chip_click · ask_deep_toggle · ask_profile_switch · ask_dimension_change · ask_soulmate_open · ask_human_tab · ask_paywall_show · ask_stream_error
8. 校验 ID
V-A01 顶栏双 Tab · V-A02 上下文三控件+灵魂伴侣 · V-A03 引导问题原文 · V-A04 下拉历史 Tip · V-A05 深度思考是否耗额度 · V-A06 流式表现