Feature Spec: AI 成长助手(问答)
Status: Active · Map: §3 问答 [P1] · Phase: P1
规范:../feature-design.md
1. 功能定义
| 字段 |
内容 |
| Name |
AI 成长助手 |
| Purpose |
结合个人档案,用对话帮助认识自己、理解关系、整理情绪与生活节奏 |
| Business Goal |
战略中心 Tab 留存;配额驱动会员 |
| In |
Out |
| 挂 profile 的多轮对话;场景入口 |
占卜/运势/预测未来 |
| DeepSeek(可配)+ 规则引擎降级 |
医疗诊断 |
| 免费次数 + 额度包(ask_pack)+ 会员配额 |
无档案空聊(禁止) |
2. 用户价值
- 为何需要: 看完画像仍有具体情境问题。
- 完成后获得: 结合档案的结构化建议与可执行小步骤。
- 为何付费: 免费次数用尽后可购买问答额度包,或开通成长会员获得更多回复。
3. 用户角色
| Actor |
能力 |
| Visitor |
有档案则可问;受配额限制 |
| VIP |
额外 Ask 配额 |
| 无档案 |
仅引导建档,不可消耗成功回复 |
4. 用户流程
5. 页面设计
| 路由 |
页面 |
/ask |
AskPage(ChatThread) |
6. 页面状态规范
| 状态 |
UI |
| Empty |
无档案引导 |
| Loading |
发送中禁用重复点 |
| Error |
失败 + 重试 |
| Normal |
消息列表 |
| Quota |
明确耗尽文案 + 额度包购买 + /membership |
7. Business Rules
| ID |
Rule |
| R1 |
每条用户消息必须绑定 profile_id(self 或 other) |
| R2 |
免费回复次数有上限(实现:如 3);可购 ask_pack 加次;会员另计配额 |
| R3 |
配额耗尽返回明确业务错误,不生成付费假回复;引导购买额度或会员 |
| R7 |
扣次顺序:会员配额 → 已购额度包 → 免费额度(非会员);购买额度不解锁报告深度版 |
| R4 |
LLM 可选;失败降级规则引擎,仍须 lexicon 安全 |
| R5 |
禁止占卜/算命/吉凶恐吓/医疗诊断;可用愈心解码·星座·人格匹配等探索向用语 |
| R6 |
回复宜短(约 80–160 字):回应当下 → 1 条档案洞察 → 1–2 条可执行建议;system prompt 须对齐 lexicon 与产品定位 |
8. 数据模型影响
| 表 |
备注 |
ask_threads |
user_id, profile_id |
ask_messages |
role, content |
ask_quotas / 等价 |
余量 |
users.ask_paid_quota_left |
已购额度包余量 |
9. API 需求
| Method |
Path |
意图 |
| GET |
/api/v1/ask/quota |
余量 |
| POST |
/api/v1/ask/threads |
创建线程(profile_id, scene?) |
| POST |
/api/v1/ask/threads/{id}/messages |
发消息拿回复(默认 JSON) |
| POST |
/api/v1/ask/threads/{id}/messages?stream=1 |
SSE:meta / delta / done / error |
| DELETE |
/api/v1/ask/threads/{id} |
清空该会话(软删除) |
| POST |
/api/v1/orders kind=ask_pack |
购买额度包(plan: pack10/pack30/pack100) |
| POST |
/api/v1/orders/{id}/pay-mock |
支付后增加 ask_paid_quota_left |
10. 权限设计
| 能力 |
无档案 |
有配额 |
配额耗尽 |
VIP 有配额 |
| 提问 |
✗ |
✓ |
✗ |
✓ |
11. 埋点
| Event |
触发 |
ask_opened |
进入页 |
ask_message_sent |
发送 |
ask_reply_received |
成功回复 |
ask_quota_exhausted |
耗尽 |
ask_fallback_rule |
走规则引擎 |
12. 测试验收标准
Given 有 Self 档案与配额
When 发送问题
Then 返回助手消息且含免责;配额减一
Given 配额为 0
When 再发送
Then 业务错误引导购买额度/会员,无助手胡编
Given 免费额度耗尽
When pay-mock ask_pack pack10
Then GET /ask/quota remaining ≥ 10,可继续提问
Given 无 DeepSeek key
When 提问
Then 规则引擎仍给出档案相关回复
13. AI 开发前检查
14. Implementation Notes
| 项 |
内容 |
| Packages |
service/ask · internal/ask · internal/llm/deepseek · AskPage |
| Config |
config.local.yaml deepseek.* |
| Gaps |
长期记忆 P3;顾问预约仅占位;埋点未接 |
| Tests |
ask reply L1;集成 thread;AskPage.spec |
| Process Review |
2026-08-02 P1-PROCESS-REVIEW · 设计闭合 · 实现 PASS · 测试 PASS |