Files
PartsInquiry/doc/admin_requirements.md
2025-09-24 20:35:15 +08:00

60 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 管理端需求说明(配件管家)
本文件描述管理端前端与后端的需求要点,遵循“默认同意,管理端可拉黑/恢复”的运营策略;所有可配置值放置在配置或数据库,不允许硬编码。
## 1. 运营策略
- 用户与用户配件(投稿/商品)默认允许展示与使用。
- 管理端具备拉黑与恢复能力:
- 拉黑后:对应对象在前台/小程序/客户侧不可见或被限制。
- 恢复后:恢复正常可用状态。
## 2. 数据模型
### 2.1 用户黑名单
- 复用 `users.status` 字段:`1=正常``0=黑名单`
- 管理端动作:
- 拉黑用户 → `PUT /api/admin/users/{id}` body `{ status: 0 }`
- 恢复用户 → `PUT /api/admin/users/{id}` body `{ status: 1 }`
### 2.2 用户配件黑名单
- 建议在承载表中增加状态位供管理端控制:
- 若使用 `products` 承载:新增 `products.is_blacklisted TINYINT(1) NOT NULL DEFAULT 0`(黑名单标记)。
- 若使用专表(如未来 `part_submissions`/`user_parts`):同样增加 `is_blacklisted`
- 索引建议:`KEY idx_products_shop_blacklist (shop_id, is_blacklisted)`,便于后台筛选。
- 管理端动作:
- 拉黑配件 → `PUT /api/admin/parts/{id}/blacklist`
- 恢复配件 → `PUT /api/admin/parts/{id}/restore`
## 3. 前端admin/
- 路由:
- 用户管理:列表提供“拉黑/恢复”按钮,状态显示“正常/黑名单”。
- 用户配件管理:列表提供“拉黑/恢复”按钮,状态显示“正常/黑名单”。
- Mock
- 开启 `VITE_USE_MOCK=true` 使用 `public/mock/*.json`
## 4. 后端接口OpenAPI 标注)
- 用户:
- `GET /api/admin/users?kw=` → 列表(分页)
- `PUT /api/admin/users/{id}` → 修改 `status`/`name`/`phone`/`role`
- 用户配件:
- `GET /api/admin/parts?kw=&status=` → 列表(分页,支持按 `is_blacklisted` 过滤)
- `PUT /api/admin/parts/{id}/blacklist` → 标记黑名单
- `PUT /api/admin/parts/{id}/restore` → 取消黑名单
- 咨询服务:
- `GET /api/admin/consults?status=&kw=` → 列表
- `POST /api/admin/consults/{id}/reply` → 回复
- `PUT /api/admin/consults/{id}/resolve` → 标记解决(前端需即时将该行状态改为 resolved
说明OpenAPI 需更新到 `doc/openapi.yaml` 并在 summary 中标注“❌ Partially Implemented”。
## 5. 前台/小程序侧行为
- 用户被拉黑:登录受限或仅保留最低权限(由业务规则定义);其数据不可见或只读。
- 配件被拉黑:前台与小程序配件列表/搜索/选择均需基于 `is_blacklisted=0` 过滤。
## 6. 审计与可观测性
- 建议记录操作日志(操作者、对象、操作、时间),便于追责与回溯。
- 建议在管理端提供简单的筛选/导出功能。
## 7. 迁移计划
- 若使用 `products`:新增字段 `is_blacklisted` 并补齐索引;前台/小程序查询添加过滤条件。
- 若采用专表方案:保持同名字段与相同行为,编写同步脚本将历史数据初始化为非黑名单。