Add under-anything knowledge dashboard

This commit is contained in:
qiaoxinjiu
2026-05-27 15:40:32 +08:00
commit e31a75d2bb
565 changed files with 143063 additions and 0 deletions

View File

@@ -0,0 +1,198 @@
1|# 子系统 03 — 额度与频控 (`quota`) v1.0
2|
3|## 子系统概述
4|
5|| 维度 | 说明 |
6|| --- | --- |
7|| 代号 | `quota` |
8|| 核心职责 | 额度台账测评4/免评4/累计12、额度预占与释放、频控规则引擎、发送前终校 |
9|| 数据所有权 | `person_quota_ledgers`, `quota_reservations`, `frequency_control_records` |
10|| 启动依赖 | identity软依赖额度按真实人计算未归并时按单一账号 |
11|| 外部系统依赖 | 无直接外部依赖 |
12|
13|---
14|
15|## 1. 模块划分
16|
17|```
18|┌─────────────────────────────────────────────────────────────┐
19|│ quota 子系统 │
20|│ │
21|│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
22|│ │ M1: 额度台账 │ │ M2: 预占管理 │ │ M3: 频控引擎 │ │
23|│ │ (Ledger) │→│ (Reservation)│ │ (FreqCtrl) │ │
24|│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
25|│ │ │ │ │
26|│ ▼ ▼ ▼ │
27|│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
28|│ │ M4: 终校服务 │ │ M5: 额度管理 │ │ M6: 对外 API │ │
29|│ │ (FinalCheck)│ │ Admin │ │ Gateway │ │
30|│ └──────────────┘ └──────────────┘ └──────────────┘ │
31|│ │
32|└─────────────────────────────────────────────────────────────┘
33|```
34|
35|| # | 模块 | 代号 | 职责 |
36|| --- | --- | --- | --- |
37|| M1 | 额度台账 | `quota-ledger` | 维护真实人三层额度测评4/免评4/累计12、已用/进行中/已预占计数 |
38|| M2 | 预占管理 | `reservation-mgr` | 额度预占创建、确认占用、超时释放;跨计划重复入选检测 |
39|| M3 | 频控引擎 | `freq-control` | 渠道频控IM/EDM/APP/TEL 最近触达间隔)、单 ASIN 短期触达次数、退订/投诉屏蔽 |
40|| M4 | 终校服务 | `final-check` | 发送前合并校验(最新额度 + 最新风险 + 最新未关闭工单),准入/撤出决策 |
41|| M5 | 额度管理 Admin | `quota-admin` | 额度手动调整、额度重置、额度审计 |
42|| M6 | 对外 API Gateway | `quota-api` | 供 planning人群生成、outreach发送前校验、review提交后确认调用 |
43|
44|---
45|
46|## 2. 各模块内外说明
47|
48|### 2.1 M1: 额度台账
49|
50|| 维度 | 说明 |
51|| --- | --- |
52|| **对内** | 按真实人维护三种额度:月度测评(已完成+进行中+已预占、月度免评同上、累计真实提交评价永久累计额度计数时点明确提交评价立即计数12、不会因 Amazon 未展示回退);接近上限时预警 |
53|| **对外接口** | `GET /api/quota/ledger/{person_id}` — 读取当前台账 |
54|| **数据写入** | `person_quota_ledgers` |
55|| **依赖** | `GET /api/identity/person` — 获取真实人 ID |
56|
57|### 2.2 M2: 预占管理
58|
59|| 维度 | 说明 |
60|| --- | --- |
61|| **对内** | 人群生成时预占额度(测评/免评);计算:已用+进行中+已预占+本次拟发送 > 上限 → 拦截;剩余不足但>0 → 预警池 → 发送前人工复核;预占有效期管理,超时自动释放;并发占用控制(同一真实人跨计划重复入选检测) |
62|| **对外接口** | `POST /api/quota/reserve` — 创建预占;`POST /api/quota/commit` — 确认占用;`POST /api/quota/release` — 释放预占 |
63|| **数据写入** | `quota_reservations` |
64|
65|### 2.3 M3: 频控引擎
66|
67|| 维度 | 说明 |
68|| --- | --- |
69|| **对内** | 四种频控维度①渠道频控IM/EDM/APP/TEL 最近触达间隔)②单 ASIN 短期内触达同一用户次数 ③用户反感度(投诉/退订状态)④用户在客服工单中暂不触达;频控规则可配置 |
70|| **对外接口** | `GET /api/quota/freq-check/{person_id}?channel=IM&asin=xxx` — 频控检查 |
71|| **数据写入** | `frequency_control_records` |
72|| **依赖** | 触达历史来自 outreach`GET /api/outreach/history/{person_id}` |
73|
74|### 2.4 M4: 终校服务
75|
76|| 维度 | 说明 |
77|| --- | --- |
78|| **对内** | 发送前做最终校验:①重新读取最新额度(防止发送和预占之间额度变化)②重新读取最新风险状态 ③重新读取最新未关闭工单;三者全部通过→准入发送;任一新增超限/风险/工单→撤出本批次 |
79|| **对外接口** | `POST /api/quota/final-check` — 批量终校(输入 person_ids + plan_id返回每个的准入/撤出决策) |
80|| **数据写入** | 终校结果写入审计日志 |
81|| **依赖** | `GET /api/risk/check/{person_id}``GET /api/tickets?person_id=&status=open` |
82|
83|### 2.5 M5: 额度管理 Admin
84|
85|| 维度 | 说明 |
86|| --- | --- |
87|| **对内** | 额度手动调整(运营确认某次测评不计入额度等);额度重置(新月份额度初始化);额度审计(谁改了什么额度) |
88|| **对外接口** | 管理 API |
89|
90|### 2.6 M6: 对外 API Gateway
91|
92|| 维度 | 说明 |
93|| --- | --- |
94|| **对外接口** | `GET /api/quota/check/{person_id}?type=测评` — 额度查询+可用判断;`POST /api/quota/reserve` — 预占;`POST /api/quota/commit` — 确认;`POST /api/quota/release` — 释放;`POST /api/quota/final-check` — 终校 |
95|
96|---
97|
98|## 3. 对外 API 契约(草案)
99|
100|| 接口 | 方法 | 输入 | 输出 | 消费者 |
101|| --- | --- | --- | --- | --- |
102|| 额度查询 | `GET /api/quota/check/{person_id}?type=REVIEW` | person_id + 额度类型 | `{used, in_progress, reserved, remaining, status(sufficient/warning/exceeded)}` | planning, outreach |
103|| 批量预占 | `POST /api/quota/reserve` | `[{person_id, type, plan_id, count}]` | `[{person_id, success, reservation_id}]` | planning人群生成时 |
104|| 确认占用 | `POST /api/quota/commit` | `[{reservation_id}]` | `[{reservation_id, committed}]` | review用户提交评价后 |
105|| 释放预占 | `POST /api/quota/release` | `[{reservation_id}]` | `[{success}]` | planning计划取消时 |
106|| 频控检查 | `GET /api/quota/freq-check/{person_id}?channel=&asin=` | person_id + 渠道 + ASIN | `{allowed, reason, cooldown_until}` | outreach发送前 |
107|| 发送前终校 | `POST /api/quota/final-check` | `[{person_id, plan_id}]` | `[{person_id, decision: APPROVED/WITHDRAWN, reasons}]` | outreach发送前最后一步 |
108|
109|---
110|
111|## 4. 数据对象
112|
113|| 对象 | 核心字段 | 说明 |
114|| --- | --- | --- |
115|| `person_quota_ledgers` | ledger_id, person_id, quota_type (MONTHLY_REVIEW/MONTHLY_EXEMPTION/LIFETIME_SUBMISSION), period, used, in_progress, reserved, limit_value, status | 三层额度台账 |
116|| `quota_reservations` | reservation_id, person_id, ledger_id, plan_id, count, status (RESERVED/COMMITTED/RELEASED/EXPIRED), reserved_at, expires_at | 额度预占记录 |
117|| `frequency_control_records` | freq_id, person_id, channel, asin, last_contact_at, contact_count_period, status | 频控记录 |
118|
119|---
120|
121|## 5. 业务澄清问题清单 — quota
122|
123|### 5.1 额度规则细化5 项)
124|
125|| # | 问题 | 优先级 |
126|| --- | --- | --- |
127|| Q-01 | 月度额度按自然月还是 30 天滚动?如果是自然月:①预占在 1 月 31 日2 月 1 日释放还是保留②1 月 31 日晚 23:59 的预占跨月怎么处理? | **P0** |
128|| Q-02 | 「测评 4 次」中的「次」定义:是指参与 4 个不同的测评计划,还是提交 4 条评价?(如果 1 个计划要求用户提交 3 条评价,占 3 次还是 1 次?) | **P0** |
129|| Q-03 | 「累计 12 个真实提交评价」是永久上限还是可以动态调整?(例如用户长期优质且评价质量高,是否可以人工放宽?放宽流程?) | P1 |
130|| Q-04 | 测评和免评额度是否独立?(测评 4 次 + 免评 4 次 = 同一真实人一月最多参与 8 个计划?)还是测评和免评共享总额度? | P1 |
131|| Q-05 | 额度计算中「进行中」的定义——什么状态才算进行中?(已生成人群?已发送触达?用户已回应?已提交评价待核验?) | P1 |
132|
133|### 5.2 预占机制4 项)
134|
135|| # | 问题 | 优先级 |
136|| --- | --- | --- |
137|| Q-06 | 预占有效期多长预占后用户始终未响应多久释放1 天7 天?计划周期结束?) | **P0** |
138|| Q-07 | 预占释放后是否可以自动重新分配给同一计划的其他用户?是否触发重新生成人群? | P1 |
139|| Q-08 | 跨计划并发占用检测——同一真实人在计划 A 和计划 B 同时被入选,谁先预占谁得?还是按计划优先级? | P1 |
140|| Q-09 | 预占是否可手动取消/释放?(运营发现某用户不应计入某计划时) | P2 |
141|
142|### 5.3 频控规则4 项)
143|
144|| # | 问题 | 优先级 |
145|| --- | --- | --- |
146|| Q-10 | 各渠道频控的具体阈值是什么IM 每日最多 X 次EDM 每周最多 Y 封APP Push 每日最多 Z 条TEL 每日最多 N 通?) | **P0** |
147|| Q-11 | 频控规则是否区分计划类型?(紧急催评是否可以突破频控?) | P1 |
148|| Q-12 | 频控是全局统一配置还是按用户层级可调整A 类和 C 类用户频控规则是否不同?) | P1 |
149|| Q-13 | 「单 ASIN 短期触达次数」——多少天内触达多少次算超标? | P2 |
150|
151|### 5.4 预警与异常3 项)
152|
153|| # | 问题 | 优先级 |
154|| --- | --- | --- |
155|| Q-14 | 预警阈值如何设定?(剩余 1 次时预警?剩余 N% 时预警?不同类型额度预警阈值是否不同?) | P1 |
156|| Q-15 | 终校中「新增风险」的判断——距离上次风险检查超过多少时间需重查?还是每次终校都实时查 risk | P1 |
157|| Q-16 | 额度数据异常时的处理策略?(台账数据与预占记录不一致、预占未释放导致额度泄漏——系统如何自动发现和修复?) | P2 |
158|
### 5.5 额度异常与纠错4 项)
| # | 问题 | 优先级 |
| --- | --- | --- |
| Q-17 | 用户反馈「我明明只参与了 3 次测评,系统说我已用 4 次」——申诉流程?谁有权限查台账和修正? | P1 |
| Q-18 | 额度台账的审计追踪——每次额度变更(预占/确认/释放/手动调整)是否记录完整操作人和原因?保留多久? | P1 |
| Q-19 | 数据异常自动检测——台账数据与预占记录之和是否需要对账?系统是否定期自动化对账并报告差异? | P1 |
| Q-20 | 如果发现「额度泄漏」(预占未释放导致额度永久被占),系统如何自动发现和修复?(定时扫描过期预占?手动触发对账?) | P2 |
### 5.6 紧急/例外处理4 项)
| # | 问题 | 优先级 |
| --- | --- | --- |
| Q-21 | 大促期间Prime Day/Black Friday是否需要临时额度提升测评 4→8由谁审批临时额度有效期 | P1 |
| Q-22 | 高价值用户是否可以突破额度限制?(例如 KOC 级别的用户需要超额参与——人工审批流程?) | P1 |
| Q-23 | 「紧急计划」是否可以跳过频控?(例如 Listing 评分暴跌至 3.8 需要紧急大量催评——是否豁免部分频控规则?) | P1 |
| Q-24 | 额度手动调整是否需要审批?审批权限?(谁可以手动给某人加/减可用额度?) | P2 |
### 5.7 跨站点/跨平台额度3 项)
| # | 问题 | 优先级 |
| --- | --- | --- |
| Q-25 | 额度是否跨 Amazon 站点?(.com 参与了 2 次测评 + .co.uk 参与了 3 次 → 全局算 5 次还是各自独立?) | P1 |
| Q-26 | 累计 12 个评价是否跨站点统计?(在 .com 提交了 8 个 + .co.uk 提交了 5 个 → 是否算 13 个超限?) | P1 |
| Q-27 | 未来扩展到非 Amazon 平台额度体系是否独立eBay 的测评额度与 Amazon 的额度是否共享?) | P2 |
### 5.8 额度可见性2 项)
| # | 问题 | 优先级 |
| --- | --- | --- |
| Q-28 | 用户是否能看到自己的额度状态APP 端显示「本月还可参与 2 次测评」——是否对用户可见?) | P2 |
| Q-29 | 运营视角的额度看板——能否看到「全局额度使用率」「各真实人的额度分布」「额度预警用户列表」? | P1 |
### 5.9 实施层面3 项)
| # | 问题 | 优先级 |
| --- | --- | --- |
| Q-30 | 终校服务的性能要求——批量终校(一次可能几百人)需要在多少 ms 内完成?(涉及跨子系统调用 risk + support | P2 |
| Q-31 | 频控规则是否需要热更新(不重启服务即可调整阈值)?配置管理方案? | P1 |
| Q-32 | 额度台账历史数据的初始化——旧系统的数据如何映射到三层额度模型?(无「真实人」概念的老数据如何归入?) | P1 |