feat(ops): ECR-007 行为分析与 ECR-008 内容运营后台
ci / h5 (push) Canceled after 0s
ci / api (push) Canceled after 0s
ci / ess-docs (push) Canceled after 0s

落地埋点 ingest/数据看板、首页宫格 CMS 与测评上下架;含账号引导、问答流式与免责声明去重,以及 review P1 审计同事务修复。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
jackyu66git
2026-08-07 02:26:16 +08:00
co-authored by Cursor
parent 7e9023f0a8
commit 7ab9add5dd
132 changed files with 8276 additions and 491 deletions
+23 -13
View File
@@ -17,7 +17,7 @@
|---|---|
| 挂 profile 的多轮对话;场景入口 | 占卜/运势/预测未来 |
| DeepSeek(可配)+ 规则引擎降级 | 医疗诊断 |
| 免费次数 + 会员配额 | 无档案空聊(禁止) |
| 免费次数 + 额度包(ask_pack+ 会员配额 | 无档案空聊(禁止) |
---
@@ -25,7 +25,7 @@
1. **为何需要:** 看完画像仍有具体情境问题。
2. **完成后获得:** 结合档案的结构化建议与可执行小步骤。
3. **为何付费:** 免费次数用尽后会员提供更多回复。
3. **为何付费:** 免费次数用尽后可购买问答额度包,或开通成长会员获得更多回复。
---
@@ -49,10 +49,10 @@
选择档案(我 / TA+ 可选场景
输入问题 → 检查配额
├─ 耗尽 → 引导会员
└─ 有余 → 创建/续 thread → assistant 回复
├─ 耗尽 → 引导购买额度包 / 成长会员(mock 支付后立刻加次)
└─ 有余 → 创建/续 thread → assistant **SSE 流式**回复(delta → done
DeepSeek 失败/无 key → 规则引擎降级
DeepSeek 失败/无 key → 规则引擎降级(仍按字流式输出)
```
---
@@ -69,7 +69,7 @@
├── Loading(发送中)
├── Normal(历史 + 输入)
├── Error(发送失败可重试)
└── Quota Exhausted引导会员)
└── Quota Exhausted额度包 + 会员)
```
---
@@ -82,7 +82,7 @@
| Loading | 发送中禁用重复点 |
| Error | 失败 + 重试 |
| Normal | 消息列表 |
| Quota | 明确耗尽文案 + `/membership` |
| Quota | 明确耗尽文案 + 额度包购买 + `/membership` |
---
@@ -91,11 +91,12 @@
| ID | Rule |
|---|---|
| R1 | 每条用户消息必须绑定 `profile_id`self 或 other |
| R2 | 免费回复次数有上限(实现:如 3);会员另计配额 |
| R3 | 配额耗尽返回明确业务错误,不生成付费假回复 |
| R2 | 免费回复次数有上限(实现:如 3);可购 `ask_pack` 加次;会员另计配额 |
| R3 | 配额耗尽返回明确业务错误,不生成付费假回复;引导购买额度或会员 |
| R7 | 扣次顺序:会员配额 → 已购额度包 → 免费额度(非会员);购买额度不解锁报告深度版 |
| R4 | LLM 可选;失败降级规则引擎,仍须 lexicon 安全 |
| R5 | 禁止运势/吉凶/算命/合盘话术;结尾免责声明 |
| R6 | 回复宜有结构:回应用户结合档案 → 可执行建议(详见 system prompt |
| R5 | 禁止占卜/算命/吉凶恐吓/医疗诊断;可用愈心解码·星座·人格匹配等探索向用语 |
| R6 | 回复宜短(约 80160 字):回应当下1 条档案洞察 → 12 条可执行建议system prompt 须对齐 lexicon 与产品定位 |
---
@@ -106,6 +107,7 @@
| `ask_threads` | user_id, profile_id |
| `ask_messages` | role, content |
| `ask_quotas` / 等价 | 余量 |
| `users.ask_paid_quota_left` | 已购额度包余量 |
---
@@ -115,7 +117,11 @@
|---|---|---|
| GET | `/api/v1/ask/quota` | 余量 |
| POST | `/api/v1/ask/threads` | 创建线程(profile_id, scene? |
| POST | `/api/v1/ask/threads/{id}/messages` | 发消息拿回复 |
| 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` |
---
@@ -147,7 +153,11 @@
**Given** 配额为 0
**When** 再发送
**Then** 业务错误引导会员,无助手胡编
**Then** 业务错误引导购买额度/会员,无助手胡编
**Given** 免费额度耗尽
**When** pay-mock `ask_pack` pack10
**Then** GET `/ask/quota` remaining ≥ 10,可继续提问
**Given** 无 DeepSeek key
**When** 提问