feat(weibo): 增加账号分配与客服数据隔离
This commit is contained in:
+2
-1
@@ -1,6 +1,6 @@
|
||||
# 项目文档索引
|
||||
|
||||
更新时间:2026-11-06
|
||||
更新时间:2026-11-08
|
||||
|
||||
本文只列当前仍有维护价值、能直接用于开发或排查的文档。已被代码实现取代的
|
||||
一次性计划、事故经过和中间抓包记录已删除;需要追查历史时使用 Git 历史。
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
- [自动化与资料收集](自动化与资料收集.md):账号巡检、CK 自动重登、资料刷新、订单读取、文件存储的运行规则。
|
||||
- [账号全生命周期](设计-账号全生命周期.md):斗鱼账号状态、CK、事件流和自动化边界。
|
||||
- [微博账号池、分配与个人工作台](微博/微博账号池与个人工作台-2026-11-08.md):微博 CK、账号归属、客服可见范围、分配管理和个人工作台。
|
||||
- [虎牙外部 CK 协作台账](设计-虎牙外部CK协作台账.md):外部订单、CK、业务状态、核账、归档和权限规则。
|
||||
- [虎牙 Cookie 路线状态](虎牙/HUYA_COOKIE路线状态.md):当前 Cookie 字段来源、已完成链路和已知边界。
|
||||
- [虎牙浏览器兑换](虎牙/HUYA_BROWSER_EXCHANGE.md):人工兑换页面、扩展注入和目标页说明。
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
type: 设计
|
||||
description: 微博外部 CK 账号池与客服个人工作台的拆分设计,覆盖数据归属、权限、接口和 UI。
|
||||
description: 微博外部 CK 账号池、归属分配与客服个人工作台设计,覆盖数据范围、权限、接口和 UI。
|
||||
tags: [微博, CK, 账号池, 工作台, 权限, 协作]
|
||||
generated:
|
||||
by: ai/codex
|
||||
at: 2026-11-08T16:20:00+08:00
|
||||
at: 2026-11-08T20:00:00+08:00
|
||||
status: implemented
|
||||
---
|
||||
|
||||
@@ -15,6 +15,7 @@ status: implemented
|
||||
把原来的「账号与绑定」拆成两个入口:
|
||||
|
||||
- **账号管理**:全局微博账号池,负责 CK 导入、生命周期、标签、批量操作和资料维护。
|
||||
- **分配管理**:管理员和运营把全局账号分配给客服,支持批量分配、取消分配和按客服查看。
|
||||
- **微博工作台**:每个用户自己的账号子集,只展示自己导入的账号,用于绑定、充值、兑换和日常操作。
|
||||
|
||||
工作台采用斗鱼模式:**账号实体仍然全局唯一,工作台只保存用户与账号的映射**。同一个全局账号同一时间只能被一个用户加入工作台;当前使用人移出后,其他人才可以加入。
|
||||
@@ -23,6 +24,18 @@ status: implemented
|
||||
|
||||
`weibo_accounts` 继续作为全局账号池,不允许因为工作台拆出第二份 CK。
|
||||
|
||||
账号池新增归属字段:
|
||||
|
||||
```text
|
||||
weibo_accounts.assigned_to -> users.id
|
||||
```
|
||||
|
||||
- `assigned_to` 为空表示未分配。
|
||||
- 管理员和运营可查看全部账号并修改归属。
|
||||
- 客服的账号管理、标签、工作台候选、绑定、充值、兑换、复制 CK 等操作全部只允许访问 `assigned_to = 当前用户` 的账号。
|
||||
- 同一账号改分配给新客服时,旧客服工作台中的映射会自动清除,避免账号被旧工作台继续占用。
|
||||
- 取消分配时清除该账号的全部工作台映射。
|
||||
|
||||
新增:
|
||||
|
||||
```text
|
||||
@@ -41,6 +54,7 @@ UNIQUE(account_id) -- 同一账号同时只能属于一个工作台
|
||||
## 3. 权限
|
||||
|
||||
- `weibo:view`:查看全局账号管理。
|
||||
- `weibo:assign`:查看全部账号、进入分配管理、批量分配/取消分配客服归属。
|
||||
- `weibo:workbench`:访问个人微博工作台。
|
||||
- `weibo:import`:导入外部 CK。
|
||||
- `weibo:manage`:编辑账号标签/备注、启停账号、批量标签。
|
||||
@@ -49,20 +63,23 @@ UNIQUE(account_id) -- 同一账号同时只能属于一个工作台
|
||||
- `weibo:recharge`:创建充值订单。
|
||||
- `weibo:exchange`:执行兑换。
|
||||
|
||||
客服和运营默认拥有个人工作台及日常操作权限;删除账号仍由 `weibo:delete` 控制,客服默认没有。
|
||||
运营默认拥有全量查看和分配权限;客服默认没有 `weibo:assign`,只能查看和使用分配给自己的账号。删除账号仍由 `weibo:delete` 控制,客服默认没有。
|
||||
|
||||
## 4. 接口
|
||||
|
||||
| 方法 | 路径 | 权限 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| GET | `/api/weibo/accounts` | `weibo:view` | 全局账号池分页列表 |
|
||||
| GET | `/api/weibo/accounts` | `weibo:view` | 按当前用户范围返回账号分页列表 |
|
||||
| GET | `/api/weibo/accounts/ids` | `weibo:view` | 返回当前筛选下全部可见账号 ID,用于跨页分配 |
|
||||
| GET | `/api/weibo/workbench/accounts` | `weibo:workbench` | 当前用户工作台账号分页列表 |
|
||||
| GET | `/api/weibo/workbench/pool` | `weibo:workbench` | 可加入当前工作台且尚未加入的账号 |
|
||||
| POST | `/api/weibo/workbench/accounts` | `weibo:workbench` | 批量加入工作台;已被其他用户占用时返回 409 |
|
||||
| POST | `/api/weibo/workbench/accounts/remove` | `weibo:workbench` | 批量移出工作台,不影响账号池和其他用户 |
|
||||
| POST | `/api/weibo/accounts/batch-tag` | `weibo:manage` | 账号管理页批量设置标签 |
|
||||
| POST | `/api/weibo/accounts/batch-assign` | `weibo:assign` | 批量分配给客服;`assigned_to=null` 表示取消分配 |
|
||||
| GET | `/api/weibo/assignments/summary` | `weibo:assign` | 分配统计和客服名下账号数 |
|
||||
|
||||
工作台接口始终按 `current.id` 过滤,不接受客户端传入用户 ID。
|
||||
工作台接口始终按 `current.id` 过滤,不接受客户端传入用户 ID。客服访问账号相关接口时,服务端还会强制叠加 `assigned_to = current.id`,不能依赖前端隐藏入口。
|
||||
|
||||
## 5. UI
|
||||
|
||||
@@ -71,6 +88,7 @@ UNIQUE(account_id) -- 同一账号同时只能属于一个工作台
|
||||
```text
|
||||
微博
|
||||
-> 账号管理
|
||||
-> 分配管理(仅 weibo:assign)
|
||||
-> 微博工作台
|
||||
-> 外部单协作
|
||||
```
|
||||
@@ -78,8 +96,17 @@ UNIQUE(account_id) -- 同一账号同时只能属于一个工作台
|
||||
账号管理页:
|
||||
|
||||
- 标题「微博账号管理」。
|
||||
- 保留全量账号列表、生命周期、批量刷新、批量标签、启停和删除。
|
||||
- 用于维护账号池,不作为客服的日常入口。
|
||||
- 管理员和运营看到全量账号、归属客服列、生命周期、批量刷新、批量标签、启停和删除。
|
||||
- 客服只看到分配给自己的账号,并保留绑定、充值、兑换、标签、CK 操作等日常能力。
|
||||
- 用于维护账号池和客服归属,不作为客服个人工作台的选择状态。
|
||||
|
||||
分配管理页:
|
||||
|
||||
- 参考斗鱼分配管理:顶部统计、左侧客服列表、右侧未分配/已分配账号页签。
|
||||
- 支持按搜索、标签、生命周期筛选。
|
||||
- 支持跨页勾选后批量分配或取消分配。
|
||||
- 支持把当前筛选下的全部未分配账号一次性分配给选中客服。
|
||||
- 客服列表展示每个客服当前名下账号数。
|
||||
|
||||
工作台页:
|
||||
|
||||
@@ -94,9 +121,9 @@ UNIQUE(account_id) -- 同一账号同时只能属于一个工作台
|
||||
## 6. 数据隔离边界
|
||||
|
||||
- 工作台列表和增删接口都按当前登录用户过滤。
|
||||
- 账号池候选排除所有已被其他用户占用的账号。
|
||||
- 客服的账号池候选只包含分配给自己的账号,并排除所有已被其他用户工作台占用的账号。
|
||||
- 加入/移出只操作 `weibo_workbench_accounts`,不修改账号归属或 CK。
|
||||
- 账号池仍由全局权限控制;客服可以看到账号管理入口,但不能删除账号。
|
||||
- 账号池全量查看由 `weibo:assign` 控制;客服可以看到账号管理入口,但列表和所有详情/操作接口只返回分配给自己的账号。
|
||||
- 外部单协作继续引用全局账号 ID,不受个人工作台选择影响。
|
||||
|
||||
## 7. CK 重复导入
|
||||
@@ -105,5 +132,7 @@ UNIQUE(account_id) -- 同一账号同时只能属于一个工作台
|
||||
|
||||
- 默认重复导入:不覆盖现有 CK,返回 `skipped=1`。
|
||||
- 勾选「重复账号时更新 CK」:覆盖现有账号 CK 和最新资料,但**不新建账号**。
|
||||
- 客服不能更新已分配给其他客服的账号 CK,也不能通过重复导入改变账号归属。
|
||||
- 客服导入新账号时,账号会自动分配给当前客服。
|
||||
- 若账号已被其他人的工作台占用,其他用户不能更新 CK,必须由当前使用人操作。
|
||||
- 无论是否更新,全局账号记录始终只有一条。
|
||||
|
||||
Reference in New Issue
Block a user