# 12 ·「问」完整设计(测测 AI + 真人 1v1) > Route: `/ask` · Design Complete · 战略核心页 --- ## 1. 目标 1. 以星盘档案为底座的垂直 AI 对话 2. 同页低摩擦切换真人咨询 3. 对象切换(自己/TA)扩展关系场景 4. 深度思考与子场景(灵魂伴侣等)承载差异化 --- ## 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生成,仅供娱乐…」 | **实测引导问题(✅ 替换原草稿)** 1. 有哪些适合我的财富建议? 2. 这份工作有发展吗? 3. 我有什么性格弱点吗? 4. 我和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. 状态机 ```mermaid 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` 流式表现