feat(worker-platform): 实现打手寄卖白名单权限控制与存量发布打手平滑过渡
1. 新增数据库迁移 082_worker_consignment_whitelist.sql,worker_users 表增加 can_consign 与 consignment_activated_at 字段,存量在 consignment_submissions 提报过的打手默认自动开启; 2. 打手端提报接口 publishWorkerConsignment 增加白名单权限服务端强校验拦截(403 consignment_permission_required); 3. 管理后台打手管理表格增加「寄卖权限」实时 Switch 开关列与打手详情抽屉权限展示,支持客服即时开通或关闭打手寄卖权限; 4. 打手端我要寄卖页面在未开通权限时展示专属白名单引导卡片,一键呼起联系客服开通寄卖弹窗; 5. 补充寄卖权限拦截与路由单测,前端59项单测与后端507项单测全部通过。
This commit is contained in:
@@ -241,3 +241,32 @@
|
||||
- 前端 `format:check`、`lint:check`、`typecheck`、`build` 均零错误零警告通过;
|
||||
- 后端 504 个自动化测试全绿(**501 pass / 3 skipped / 0 fail**)。
|
||||
|
||||
---
|
||||
|
||||
## 九、 专项优化:打手寄卖白名单开关控制与存量平滑过渡(2026-09-21 已闭环)
|
||||
|
||||
### 1. 现状与用户诉求(User Feedback & Target)
|
||||
- **用户反馈**:“寄卖系统 我想增加一个类似白名单 激活模式, 如果有新的注册的人员, 默认无法开启寄卖; 必须联系客服... 方案 A 就够了, 能实现控制 一个开关也行, 然后 存量老打手平滑过渡 发布过的默认开启”。
|
||||
- **目标**:
|
||||
1. 实行寄卖白名单准入机制:新注册打手默认不开启寄卖,防止虚假提报与黑产刷单;
|
||||
2. 存量老打手平滑过渡:历史上在 `consignment_submissions` 中发布过寄卖的打手,在迁移中自动批量赋权开启;
|
||||
3. 后台提供开关:客服/运营在打手管理表格与详情抽屉中可一键开通/关闭打手寄卖权限;
|
||||
4. 打手端友好提示与拦截:未开通寄卖权限的打手在「我要寄卖」页面展示专属引导卡片,一键唤起客服弹窗;后端接口进行服务端强拦截(403 `consignment_permission_required`)。
|
||||
|
||||
### 2. 证据分类与实现细节(Evidence & Implementation)
|
||||
- **已知信息 [确信度: 100%]**:
|
||||
1. `worker_users` 表增加了 `can_consign`(布尔值,默认 `FALSE`)与 `consignment_activated_at`(开通时间戳);
|
||||
2. 迁移文件 `082_worker_consignment_whitelist.sql` 通过 `IN (SELECT DISTINCT worker_id FROM consignment_submissions WHERE worker_id IS NOT NULL)` 实现存量打手秒级平滑过渡;
|
||||
3. 打手端提报接口 `publishWorkerConsignment` 增加了 `if (!worker.can_consign) throw ...` 强校验;
|
||||
4. 前端管理后台 `WorkersPanel.tsx` 增加了「寄卖权限」列,直接嵌入 Switch 开关实时切换;打手详情抽屉 `WorkerDetailDrawer.tsx` 补充了权限和开通时间回显。
|
||||
|
||||
### 3. 验证与门禁报告(Quality Gate Status)
|
||||
- **后端单测与类型检查 [确信度: 100%]**:
|
||||
- 新增 `admin-worker-consignment-permission.test.ts` 及 `consignment-worker-service.test.ts` 权限拦截测试;
|
||||
- 后端 507 项单测全绿(**504 pass / 3 skipped / 0 fail**);
|
||||
- 后端 `typecheck`、`check:sql` 全部通过;
|
||||
- **前端门禁与生产构建 [确信度: 100%]**:
|
||||
- 前端 59 项单元测试全绿(**59 pass / 0 fail**);
|
||||
- 前端 `format:check`、`lint:check`、`typecheck`、`build` 零错误全绿通过。
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user