feat: P1 合盘/星座/问答与测测完整设计包及模拟器取证工具

落地 synastry/star/ask API 与 H5 页面,补齐 cece-frontend-re complete-design 证据文档,并加入 Android 模拟器截图抓取脚本。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
jackyu66git
2026-08-03 11:37:53 +08:00
co-authored by Cursor
parent 15a9db374a
commit bd22d9dddd
248 changed files with 26309 additions and 842 deletions
@@ -0,0 +1,154 @@
# 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` 流式表现