# 前后端联调检查清单

## 使用说明

本检查清单用于前后端联调过程，确保质量标准。每项必须逐条确认。

---

## 1. API 接口检查

### 1.1 接口定义
- [ ] API 路径符合 RESTful 规范
  - [ ] GET 用于查询
  - [ ] POST 用于创建
  - [ ] PUT/PATCH 用于更新
  - [ ] DELETE 用于删除
- [ ] 接口命名清晰、一致
- [ ] 接口版本控制正确（如 `/api/v1/`）
- [ ] 请求方法使用正确

### 1.2 请求参数
- [ ] 请求参数命名符合规范
  - [ ] 后端: snake_case
  - [ ] 前端: camelCase
- [ ] 参数类型定义准确
  - [ ] string, number, boolean, array, object
- [ ] 必填参数明确标注
- [ ] 可选参数有默认值
- [ ] 分页参数统一（page, pageSize/limit）
- [ ] 排序参数统一（sortField, sortOrder）

### 1.3 响应格式
- [ ] 响应体结构统一
```json
{
  "code": 0,
  "message": "success",
  "data": {...}
}
```
- [ ] 错误响应格式统一
```json
{
  "code": 40001,
  "message": "参数错误",
  "details": {...}
}
```
- [ ] 成功码统一为 0
- [ ] 错误码定义清晰、文档化
- [ ] 分页响应包含 total
```json
{
  "code": 0,
  "message": "success",
  "data": {
    "items": [...],
    "total": 100,
    "page": 1,
    "pageSize": 20
  }
}
```

### 1.4 数据类型映射
- [ ] 前后端数据类型映射正确
  - [ ] 前端 string ↔ 后端 string
  - [ ] 前端 number ↔ 后端 int/float
  - [ ] 前端 boolean ↔ 后端 bool
  - [ ] 前端 array ↔ 后端 slice
  - [ ] 前端 object ↔ 后端 struct/map
- [ ] 日期时间格式统一（ISO 8601: `2026-04-01T12:00:00Z`）
- [ ] 枚举值定义一致
- [ ] 空值处理一致
  - [ ] null vs undefined vs ""

---

## 2. 认证与授权检查

### 2.1 认证机制
- [ ] 未登录接口返回 401
- [ ] 登录接口正确验证用户凭证
- [ ] Token 验证机制正常
  - [ ] Access token 验证
  - [ ] Refresh token 验证
- [ ] Token 过期自动刷新
- [ ] CSRF Token 机制正确

### 2.2 权限控制
- [ ] 需要权限的接口返回 403
- [ ] 权限检查粒度正确
  - [ ] 菜单级权限
  - [ ] 操作级权限
  - [ ] 数据级权限（如适用）
- [ ] 角色权限继承正确
- [ ] 权限缓存机制正常（如有）

---

## 3. 业务逻辑检查

### 3.1 核心流程
- [ ] 正常业务流程畅通
- [ ] 边界条件处理正确
  - [ ] 空列表
  - [ ] 超大数据量
  - [ ] 特殊字符
  - [ ] 极端值（最大值、最小值、0、负数）
- [ ] 异常场景覆盖
  - [ ] 网络错误
  - [ ] 服务器错误（500）
  - [ ] 超时
  - [ ] 并发请求

### 3.2 数据一致性
- [ ] 前端展示数据与后端存储一致
- [ ] 多端数据同步正确
- [ ] 乐观锁/悲观锁正确使用（如需要）
- [ ] 事务边界正确

### 3.3 用户体验
- [ ] 加载状态显示正确
- [ ] 错误提示友好、准确
- [ ] 成功操作反馈明确
- [ ] 避免重复提交
- [ ] 表单验证前端后端一致

---

## 4. 性能检查

### 4.1 接口性能
- [ ] 查询接口响应时间 < 500ms
- [ ] 写入接口响应时间 < 1000ms
- [ ] 分页接口支持大数据量
- [ ] 列表查询有分页
- [ ] 避免不必要的字段查询

### 4.2 前端性能
- [ ] 列表渲染支持虚拟滚动（大数据量）
- [ ] 图片懒加载
- [ ] 避免不必要的重新渲染
- [ ] 请求防抖/节流
- [ ] 本地缓存合理使用

### 4.3 数据库性能
- [ ] 避免全表扫描
- [ ] 索引使用正确
- [ ] 避免 N+1 查询
- [ ] 批量操作使用批量接口

---

## 5. 安全检查

### 5.1 输入验证
- [ ] 前端表单验证
- [ ] 后端参数验证
- [ ] SQL 注入防护
- [ ] XSS 防护
- [ ] 文件上传验证
  - [ ] 文件类型
  - [ ] 文件大小
  - [ ] 文件内容

### 5.2 数据保护
- [ ] 敏感数据加密存储（密码）
- [ ] 敏感数据传输加密（HTTPS）
- [ ] 不在日志中输出敏感信息
- [ ] 不在 URL 中传递敏感信息
- [ ] Token 安全存储
  - [ ] Access token 存内存
  - [ ] Refresh token 存 localStorage

### 5.3 安全漏洞
- [ ] 无 CSRF 漏洞
- [ ] 无 XSS 漏洞
- [ ] 无 SQL 注入漏洞
- [ ] 无时序攻击漏洞
  - [ ] 验证码比较使用恒定时间比较
  - [ ] 密码比较使用恒定时间比较
- [ ] 无信息泄露（错误消息不泄露敏感信息）

---

## 6. 错误处理检查

### 6.1 错误码
- [ ] 错误码定义清晰
- [ ] 错误信息准确、友好
- [ ] 前端正确处理各种错误码
- [ ] 错误日志记录完整

### 6.2 重试机制
- [ ] 临时错误有重试机制
- [ ] 重试次数限制合理
- [ ] 重试间隔合理

### 6.3 降级机制
- [ ] 依赖服务故障有降级方案
- [ ] 降级时用户体验可接受

---

## 7. 兼容性检查

### 7.1 浏览器兼容
- [ ] Chrome/Edge 最新版本
- [ ] Firefox 最新版本
- [ ] Safari 最新版本
- [ ] 移动端浏览器（如需要）

### 7.2 数据版本兼容
- [ ] API 版本兼容
- [ ] 数据结构变更有兼容方案

---

## 8. 测试覆盖

### 8.1 单元测试
- [ ] 后端核心逻辑有单元测试
- [ ] 前端工具有单元测试
- [ ] 测试覆盖率 > 70%

### 8.2 集成测试
- [ ] 关键接口有集成测试
- [ ] 联调场景有集成测试

### 8.3 E2E 测试
- [ ] 主流程有 E2E 测试
- [ ] E2E 测试通过

---

## 9. 文档检查

- [ ] API 文档完整（Swagger/OpenAPI）
- [ ] 接口变更文档更新
- [ ] README 更新（如需要）
- [ ] 数据库变更文档（如需要）
- [ ] 部署文档更新（如需要）

---

## 10. 部署检查

- [ ] 配置文件正确
- [ ] 环境变量正确
- [ ] 数据库迁移脚本正确
- [ ] 回滚方案准备
- [ ] 监控指标配置
- [ ] 告警规则配置

---

## 11. 上线前最终检查

- [ ] 所有 P0 问题已解决
- [ ] 所有 P1 问题已解决
- [ ] 测试通过率 ≥ 95%
- [ ] 性能指标达标
- [ ] 安全测试通过
- [ ] 代码审查通过
- [ ] 文档更新完整
- [ ] 回滚方案确认

---

## 附录

### 问题严重程度定义

| 级别 | 描述 | 示例 |
|------|------|------|
| P0 | 阻塞问题，无法联调 | 接口 500 错误，数据库连接失败 |
| P1 | 严重问题，影响核心功能 | 权限失效，数据丢失 |
| P2 | 一般问题，影响用户体验 | 错误提示不准确，性能较差 |
| P3 | 优化建议，不影响功能 | 命名不规范，代码可读性差 |

### 联调测试命令

```bash
# 后端测试
go test ./...

# 前端测试
cd frontend/admin && npm test

# 前端构建
cd frontend/admin && npm run build

# 前端 lint
cd frontend/admin && npm run lint

# E2E 测试
cd frontend/admin && npm run e2e:full:win
```
