bindbox-game/docs/后台工作台接口分析/CONSENSUS_后台工作台接口.md

92 lines
2.5 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.

# 后台工作台接口 - 共识文档
## 一、明确需求描述
补充后台工作台页面中使用Mock数据的8个接口实现真实的后端数据查询逻辑。
### 需求范围
1. **运营分析接口** (4个)
- 产品动销排行
- 优惠券效能排行
- 库存预警列表
- 风险事件监控
2. **积分经济接口** (3个)
- 积分经济总览
- 积分趋势
- 积分收支结构
3. **实时播报接口** (1个)
- 实时中奖播报
---
## 二、技术实现方案
### 2.1 后端接口实现位置
- **文件**: `internal/api/admin/dashboard_admin.go` (现有文件,追加新接口)
- **路由注册**: 在现有admin路由组中添加新路径
### 2.2 数据来源表
| 接口 | 主要数据表 | 关联表 |
|------|-----------|--------|
| 产品动销排行 | `orders`, `activities` | `issues`, `products` |
| 优惠券效能 | `user_coupons`, `coupons` | `orders` |
| 库存预警 | `issues`, `prizes` | `products` |
| 风险事件 | `draw_logs`, `users` | `user_login_logs` (如存在) |
| 积分经济 | `user_points_logs` | `users` |
| 实时中奖 | `draw_logs` | `users`, `prizes` |
### 2.3 接口设计原则
- 保持与现有接口风格一致
- 使用 `rangeType` 参数统一时间范围过滤
- 金额单位统一为**分**
- 百分比保留2位小数
---
## 三、验收标准
### 功能验收
- [ ] 所有8个接口正常返回数据
- [ ] 响应格式与前端TypeScript类型定义一致
- [ ] 时间范围过滤逻辑正确
### 性能验收
- [ ] 单接口响应时间 < 500ms
- [ ] 无N+1查询问题
### 集成验收
- [ ] 前端调用后端接口无报错
- [ ] 工作台各模块正确展示真实数据
---
## 四、技术约束
1. **不引入新依赖**: 使用现有GORM查询
2. **复用现有工具函数**: `parseRange()`, `percentChange()`
3. **统一错误处理**: 使用现有 `core.HandlerFunc` 模式
---
## 五、已解决的不确定性
基于现有代码分析:
- 积分日志表 `user_points_logs` 已存在包含 `change_type` 字段可区分来源
- 用户登录日志可通过 `draw_logs` `orders` 推断活跃度
- 库存阈值可通过 `prizes.quantity` 与剩余数量对比计算
---
## 六、实现优先级
| 优先级 | 接口 | 原因 |
|--------|------|------|
| P0 | 产品动销排行 | 经营大盘核心指标 |
| P0 | 积分经济总览+趋势 | 风控预警必需 |
| P1 | 优惠券效能 | 营销分析重要 |
| P1 | 库存预警 | 运营监控 |
| P2 | 风险事件 | 可先用简化版 |
| P2 | 实时中奖播报 | 可复用现有 `draw_stream` |