feat(huya): 合并外部单协作 CK 权限
This commit is contained in:
@@ -580,6 +580,7 @@ unverified ──探针成功──▶ valid ──探针失败──▶ invalid
|
||||
| POST | `/api/huya/external-orders/activity/query` | `huya:collab:edit` | 勾选多行查积分 + 兑换记录(串行带间隔,每行写一条生命周期快照;§5.7) |
|
||||
| POST | `/api/huya/external-orders/{id}/activity/query` | `huya:collab:edit` | 查这一行的积分 + 兑换记录(单行「查询」按钮) |
|
||||
| GET | `/api/huya/external-orders/{id}/metrics` | `huya:collab:view` | 账号全生命周期时间线(每次查询的快照,新→旧;§3.5) |
|
||||
| POST | `/api/huya/external-orders/{id}/ck/copy` | **`huya:collab:ck_export`** | **复制单行 CK 明文**(前端写剪贴板;逐行写审计;§11.8) |
|
||||
| POST | `/api/huya/external-orders/ck/export` | **`huya:collab:ck_export`** | **导出勾选行的 CK 明文**(前端写剪贴板;逐行写审计;最多 50 条;§11.8) |
|
||||
| POST | `/api/huya/external-orders/import` | `huya:collab:edit` | 粘贴批量导入 |
|
||||
| GET | `/api/huya/collab-shops` | `huya:collab:view` | 店铺字典(含停用的,管理弹窗用) |
|
||||
@@ -927,9 +928,9 @@ unverified ──探针成功──▶ valid ──探针失败──▶ invalid
|
||||
|
||||
| 面 | 落地 |
|
||||
| --- | --- |
|
||||
| 权限 | 新增权限点 **`huya:collab:ck_export`**("导出外部 CK 协作台账的 CK");**默认只给运营**,客服默认没有(贴 CK 是"录入",导出是"把凭据带走",两件事不共用一个权限;口径同 `huya:cookie:export`) |
|
||||
| 权限 | 权限点 **`huya:collab:ck_export`**("复制/导出外部 CK 协作台账的 CK");单行复制和勾选批量导出共用;**默认运营和客服都有**,权限页的自定义权限仍可覆盖 |
|
||||
| 服务层 | `export_cks(db, current, orders)`:只读 + 逐行写审计;返回 `{total, exported, skipped[], items[]}`,`items[].ck_text` 是明文(**只有这个接口会返回**);上限 `PROBE_BATCH_MAX=50` |
|
||||
| 接口 | `POST /api/huya/external-orders/ck/export`(字面量路径,排在 `/{order_id}` 之前),body `{ids: [...]}` |
|
||||
| 接口 | 单行:`POST /api/huya/external-orders/{id}/ck/copy`;批量:`POST /api/huya/external-orders/ck/export`(字面量路径,排在 `/{order_id}` 之前),body `{ids: [...]}`;两者共用同一个权限依赖 |
|
||||
| 审计 | 逐行写 `huya:collab:ck_export`,`target=huya_external_order:<id>`,detail 只记 `order_no / uid / ck_status / batch_size` —— **绝不写 CK 本体**(测试里用 `assert "C"*152 not in detail` 钉死) |
|
||||
| 前端 | 工具栏「导出 CK(N)」→ 拉明文 → 弹窗预览 + 「复制到剪贴板」(走 `utils/clipboard.ts`,兼容 http 远程访问的 `execCommand` 回退) |
|
||||
|
||||
@@ -943,7 +944,7 @@ unverified ──探针成功──▶ valid ──探针失败──▶ invalid
|
||||
界面上点名"其中 N 条已失效/已停用" —— 不替用户做隐含决策(服务层只管"有没有凭据");
|
||||
6. **上限 50 行**(和批量验证/查询一致),一次别点太多,人看不过来也难追溯。
|
||||
|
||||
**待跟进**:导出动作目前只写审计;如果以后要做"谁在什么时候导出了什么"的专门报表,
|
||||
**待跟进**:单行复制和批量导出目前都只写审计;如果以后要做"谁在什么时候导出了什么"的专门报表,
|
||||
`audit_logs.action = 'huya:collab:ck_export'` 已经可以直接筛(不用加表)。
|
||||
|
||||
### 11.9 2026-10-17 第六轮:批量查询拆成「查积分」+「查兑换记录」两个按钮
|
||||
@@ -1083,7 +1084,7 @@ unverified ──探针成功──▶ valid ──探针失败──▶ invalid
|
||||
| --- | --- |
|
||||
| 与 `huya_accounts` 出现"两份 CK 谁是准的" | §2.3 已写死:本表 CK 只在协作语境有效,不自动同步;需要跑任务时人工导入 |
|
||||
| 探针接口被风控 | 只做人工触发、串行、带间隔;不做定时轮询 |
|
||||
| CK 被导出后外传(导出到剪贴板 = 凭据出门) | 独立权限点 `huya:collab:ck_export`(默认只给运营)+ 逐行审计(不含 CK 本体)+ 界面常驻警告;明文只在弹窗 state 里,关掉即清(§11.8) |
|
||||
| CK 被导出后外传(导出到剪贴板 = 凭据出门) | 单行复制与批量导出统一走 `huya:collab:ck_export`(默认运营和客服可用,权限页可覆盖)+ 逐行审计(不含 CK 本体)+ 界面常驻警告;明文只在弹窗 state 里,关掉即清(§11.8) |
|
||||
| 积分 / 兑换记录查询被风控 | 同上:只手动触发(单行 + 勾选批量,串行带间隔),不做定时轮询(§5.7) |
|
||||
| 自动改状态误判(接口抖动 → 判成"抢购失败") | 三态判定:取不到数据一律 `unknown` 且不动状态;只有 `scripted` 的单才自动改;每次查询留快照,人工可回退(`rollback`) |
|
||||
| 积分中心 `queryAllocation` 拉不到 / 返回空 → 礼包列表空白 | 只影响「拉礼包」,不影响 CK 有效性;提示用户稍后点「强制刷新礼包」。旧 `getActPrizeList` 的 SID 过期问题只保留给精英宝典工作台(§11.4) |
|
||||
|
||||
Reference in New Issue
Block a user