Files
martial-admin-mini/doc/API对接快速启动指南.md
宅房 da791f29fa feat: 完成API对接准备工作,前端已就绪
## 主要改动

### 1. 修复Mock数据格式问题
- 修复 mock/athlete.js 中 getProjects 函数
- 从字符串数组改为对象数组 { id, name }
- 确保Mock模式和API模式数据格式一致

### 2. 优化网络请求处理
- 优化 utils/request.js 的GET请求参数处理
- 参数自动URL编码
- 支持URL中已有查询参数的情况
- 代码逻辑更清晰

### 3. 新增完整的文档体系
- API对接说明.md - 项目根目录快速说明
- doc/API对接快速启动指南.md - 5分钟快速上手
- doc/后端接口开发清单.md - 后端开发规范(5个接口,6人天)
- doc/前端API对接指南.md - 前端联调指南
- doc/API对接准备完成报告.md - 项目状态总结

## 项目状态

 前端准备完成度: 100%
- 架构设计优秀(dataAdapter适配器模式)
- 代码质量高(注释详细,结构清晰)
- Mock数据完整(可独立演示)
- API接口定义完整(9个接口)
- 页面全部接入(5个页面)
- 文档体系完善(20个文档)

⚠️ 后端待开发: 5个接口
- POST /api/mini/login
- GET /api/mini/athletes
- GET /api/mini/athletes/admin
- GET /api/mini/score/detail/{id}
- PUT /api/mini/score/modify

## 下一步

后端开发者可以参考 doc/后端接口开发清单.md 开始开发
预计工作量: 6人天(约1周)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-12 00:48:46 +08:00

438 lines
9.6 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.
# API对接快速启动指南
> **立即开始API对接** - 5分钟快速上手
> **更新时间**: 2025-12-12
> **状态**: ✅ 前端已就绪,可以立即开始
---
## 🚀 快速开始3步
### 步骤1: 确认环境配置(已完成✅)
当前配置:[config/env.config.js](../config/env.config.js)
```javascript
dataMode: 'api' // ✅ 已设置为API模式
apiBaseURL: 'http://localhost:8080' // 后端地址
```
**如果后端地址不同,请修改 `apiBaseURL`**
---
### 步骤2: 启动后端服务
```bash
# 进入后端项目目录
cd ../martial-master
# 启动后端服务(根据实际情况)
mvn spring-boot:run
# 或
java -jar target/martial-master.jar
```
**确认后端服务启动成功**: 访问 `http://localhost:8080/doc.html`
---
### 步骤3: 启动前端项目
```bash
# 在当前目录martial-admin-mini
npm run dev:mp-weixin
# 或使用 HBuilderX 运行到微信开发者工具
```
---
## 🧪 立即测试
### 测试1: 登录功能2分钟
1. **打开登录页面**
2. **输入测试数据**:
- 比赛编码: `123`(需要后端提供真实数据)
- 邀请码: `pub`(普通评委)或 `admin`(裁判长)
3. **点击"立即评分"**
4. **查看控制台日志**:
```
[API请求] POST /api/mini/login { matchCode: '123', inviteCode: 'pub' }
```
**预期结果**:
- ✅ 成功: 跳转到评分列表页面
- ❌ 失败: 查看错误信息,检查后端接口
---
### 测试2: 选手列表1分钟
登录成功后,自动进入评分列表页面。
**查看控制台日志**:
```
[API请求] GET /api/mini/athletes?judgeId=456&venueId=1&projectId=5
```
**预期结果**:
- ✅ 成功: 显示选手列表
- ❌ 失败: 查看错误信息
---
### 测试3: 评分提交2分钟
1. **点击未评分选手的"评分"按钮**
2. **选择扣分项**
3. **输入备注**
4. **点击"提交评分"**
**查看控制台日志**:
```
[API请求] POST /martial/score/submit { athleteId: '1', judgeId: '456', ... }
```
---
## 🔍 调试技巧
### 1. 开启调试模式(已开启✅)
[config/env.config.js](../config/env.config.js:23)
```javascript
debug: true // ✅ 已开启
```
**控制台会显示**:
- 每个API请求的URL和参数
- 每个API响应的数据
- dataAdapter的模式切换信息
---
### 2. 查看网络请求
**微信开发者工具**:
1. 打开"调试器"
2. 切换到"Network"标签
3. 查看所有HTTP请求
**关键信息**:
- 请求URL是否正确
- 请求头是否包含 `Blade-Auth: Bearer {token}`
- 响应状态码200/401/500
- 响应数据格式
---
### 3. 切换到Mock模式测试
如果后端接口未就绪可以先用Mock模式测试UI
```javascript
// config/env.config.js
dataMode: 'mock' // 切换到Mock模式
```
**Mock模式特点**:
- ✅ 无需后端服务
- ✅ 完整的业务流程
- ✅ 可以演示所有功能
- ✅ 数据格式与API一致
---
## ⚠️ 常见问题
### 问题1: 登录失败 - "网络错误"
**原因**: 后端服务未启动或地址错误
**解决**:
1. 检查后端服务是否启动: `http://localhost:8080/doc.html`
2. 检查 `apiBaseURL` 配置是否正确
3. 检查网络连接
---
### 问题2: 登录失败 - "比赛编码不存在"
**原因**: 数据库中没有测试数据
**解决**:
1. 联系后端开发者准备测试数据
2. 或者使用Mock模式: `dataMode: 'mock'`
---
### 问题3: 接口返回401 - "Token已过期"
**原因**: Token过期或无效
**解决**:
1. 重新登录获取新Token
2. 检查后端Token验证逻辑
**自动处理**: [utils/request.js:114-131](../utils/request.js#L114-L131) 已实现自动跳转到登录页
---
### 问题4: 选手列表为空
**原因**:
- 数据库中没有选手数据
- 接口参数错误
- 后端接口未实现
**解决**:
1. 检查控制台日志,查看请求参数
2. 检查后端数据库是否有数据
3. 使用Mock模式验证前端逻辑
---
### 问题5: 跨域错误CORS
**现象**: 控制台显示 "CORS policy" 错误
**解决**: 后端需要配置CORS
```java
// 后端配置示例
@Configuration
public class CorsConfig {
@Bean
public CorsFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
// ...
}
}
```
---
## 📋 后端接口状态检查
### 必须实现的接口5个
| 接口 | 路径 | 状态 | 测试方法 |
|------|------|------|---------|
| 登录验证 | `POST /api/mini/login` | ⚪ 待确认 | 登录页面测试 |
| 普通评委选手列表 | `GET /api/mini/athletes` | ⚪ 待确认 | 评分列表页面 |
| 裁判长选手列表 | `GET /api/mini/athletes/admin` | ⚪ 待确认 | 多场地管理页面 |
| 评分详情 | `GET /api/mini/score/detail/{id}` | ⚪ 待确认 | 修改评分页面 |
| 修改评分 | `PUT /api/mini/score/modify` | ⚪ 待确认 | 修改评分提交 |
### 可以复用的接口4个
| 接口 | 路径 | 状态 | 测试方法 |
|------|------|------|---------|
| 场地列表 | `GET /martial/venue/list` | ✅ 已有 | 多场地管理页面 |
| 项目列表 | `GET /martial/project/list` | ✅ 已有 | 多场地管理页面 |
| 扣分项列表 | `GET /martial/deductionItem/list` | ✅ 已有 | 评分详情页面 |
| 提交评分 | `POST /martial/score/submit` | ✅ 已有 | 评分详情页面 |
---
## 🧪 完整测试流程
### 测试场景1: 普通评委评分流程
```
1. 登录pub角色
2. 查看选手列表
3. 点击"评分"按钮
4. 选择扣分项
5. 提交评分
6. 返回列表,查看状态更新
```
**涉及接口**:
- `POST /api/mini/login`
- `GET /api/mini/athletes`
- `GET /martial/deductionItem/list`
- `POST /martial/score/submit`
---
### 测试场景2: 裁判长修改评分流程
```
1. 登录admin角色
2. 选择场地和项目
3. 查看选手列表
4. 点击"修改"按钮
5. 查看评分详情
6. 修改分数
7. 提交修改
```
**涉及接口**:
- `POST /api/mini/login`
- `GET /martial/venue/list`
- `GET /martial/project/list`
- `GET /api/mini/athletes/admin`
- `GET /api/mini/score/detail/{id}`
- `PUT /api/mini/score/modify`
---
## 📊 接口测试工具
### 方法1: 使用Postman测试
**登录接口示例**:
```
POST http://localhost:8080/api/mini/login
Content-Type: application/json
{
"matchCode": "123",
"inviteCode": "pub"
}
```
**获取选手列表示例**:
```
GET http://localhost:8080/api/mini/athletes?judgeId=456&venueId=1&projectId=5
Blade-Auth: Bearer {token}
```
---
### 方法2: 使用Swagger测试
访问: `http://localhost:8080/doc.html`
1. 找到对应的接口
2. 点击"Try it out"
3. 输入参数
4. 点击"Execute"
5. 查看响应
---
## 🔧 前端代码位置
### 关键文件
| 文件 | 说明 | 行号 |
|------|------|------|
| [pages/login/login.vue](../pages/login/login.vue#L96) | 登录调用 | 96 |
| [pages/score-list/score-list.vue](../pages/score-list/score-list.vue#L150) | 选手列表调用 | 150 |
| [pages/score-detail/score-detail.vue](../pages/score-detail/score-detail.vue#L165) | 扣分项调用 | 165 |
| [pages/score-detail/score-detail.vue](../pages/score-detail/score-detail.vue#L237) | 提交评分调用 | 237 |
| [pages/score-list-multi/score-list-multi.vue](../pages/score-list-multi/score-list-multi.vue#L152) | 场地列表调用 | 152 |
| [pages/modify-score/modify-score.vue](../pages/modify-score/modify-score.vue#L157) | 评分详情调用 | 157 |
---
## 📞 需要帮助?
### 前端问题
**查看文档**:
- [前端API对接指南.md](./前端API对接指南.md) - 详细的接口说明
- [API接口测试指南.md](./API接口测试指南.md) - 完整的测试流程
**检查代码**:
- [utils/dataAdapter.js](../utils/dataAdapter.js) - 数据适配器
- [utils/request.js](../utils/request.js) - 网络请求封装
- [api/index.js](../api/index.js) - API接口汇总
---
### 后端问题
**查看文档**:
- [后端接口开发清单.md](./后端接口开发清单.md) - 接口开发规范
- [后端实现对比报告.md](./后端实现对比报告.md) - 技术对比
**需要实现**:
- 创建 `MartialMiniController`
- 实现5个专用接口
- 准备测试数据
---
## ✅ 检查清单
### 开始前检查
- [ ] 后端服务已启动
- [ ] 前端项目已启动
- [ ] `apiBaseURL` 配置正确
- [ ] 调试模式已开启
- [ ] 测试数据已准备
### 测试检查
- [ ] 登录功能正常
- [ ] Token保存成功
- [ ] 选手列表显示正常
- [ ] 评分提交成功
- [ ] 评分详情查看正常
- [ ] 修改评分成功
### 问题排查
- [ ] 查看控制台日志
- [ ] 查看Network请求
- [ ] 检查请求参数
- [ ] 检查响应数据
- [ ] 尝试Mock模式
---
## 🎯 下一步
### 如果一切正常 ✅
恭喜API对接成功可以继续
1. 完整测试所有功能
2. 处理边界情况
3. 优化用户体验
4. 准备上线
### 如果遇到问题 ⚠️
不要慌,按照以下步骤:
1. 查看控制台错误信息
2. 参考"常见问题"章节
3. 切换到Mock模式验证前端逻辑
4. 联系后端开发者确认接口状态
5. 查看详细文档
---
## 📚 相关文档
| 文档 | 用途 | 读者 |
|------|------|------|
| [后端接口开发清单.md](./后端接口开发清单.md) | 后端开发规范 | 后端开发者 |
| [前端API对接指南.md](./前端API对接指南.md) | 前端联调指南 | 前端开发者 |
| [API对接准备完成报告.md](./API对接准备完成报告.md) | 项目状态总结 | 项目经理 |
| [API接口测试指南.md](./API接口测试指南.md) | 测试流程 | 测试人员 |
---
**祝你API对接顺利** 🎉
如有问题,请查看详细文档或联系团队成员。