# 政府端路由设计迁移指南

## 概述

本文档说明如何将政府端的路由设计从分散的模块化结构迁移到统一的、与银行端一致的设计模式。

## 设计原则

### 银行端设计模式（参考）
- 所有API统一使用 `/api/` 前缀
- 按功能模块分组：`/api/auth`, `/api/dashboard`, `/api/users` 等
- nginx配置简单：只需要一个代理规则
- 前端API调用统一：`api.模块名.方法名()`

### 政府端新设计
- 统一使用 `/api/` 前缀
- 按功能模块分组，整合相关功能
- 简化nginx配置
- 统一前端API调用方式

## 路由结构对比

### 旧设计（分散式）
```
/api/auth/...
/api/supervision/...
/api/epidemic/...
/api/government/...
/api/personnel/...
/api/approval/...
/api/service/...
/api/visualization/...
/api/system/...
/api/files/...
/api/smart-earmark/...
/api/smart-host/...
/api/slaughter/...
/api/harmless/...
/api/harmless-place/...
/api/epidemic-record/...
/api/vaccine/...
/api/epidemic-activity/...
/api/production-material-certification/...
/api/approval-process/...
/api/cattle-academy/...
/api/device-warning/...
```

### 新设计（整合式）
```
/api/auth/...                    # 认证相关
/api/dashboard/...               # 仪表盘（整合数据览仓、市场行情、统计等）
/api/government/...              # 政府管理（部门、岗位、人员、养殖户等）
/api/personnel/...               # 人员管理
/api/supervision/...             # 监管管理
/api/approval/...                # 审批管理
/api/epidemic/...                # 疫情管理
/api/slaughter/...               # 屠宰管理
/api/smart-earmark/...           # 智能硬件管理
/api/service/...                 # 服务管理
/api/visualization/...           # 可视化数据
/api/system/...                  # 系统管理
/api/files/...                   # 文件管理
```

## 主要变更

### 1. 后端路由整合

#### 新增 dashboard 模块
将以下功能整合到 `/api/dashboard/`：
- 数据览仓：`/api/dashboard/data-center`
- 市场行情：`/api/dashboard/market-price`
- 监管统计：`/api/dashboard/supervision-stats`
- 疫情统计：`/api/dashboard/epidemic-stats`
- 总体概览：`/api/dashboard/overview`

#### 整合 government 模块
将以下功能整合到 `/api/government/`：
- 部门管理：`/api/government/departments`
- 岗位管理：`/api/government/positions`
- 行政人员：`/api/government/admin-staff`
- 养殖户管理：`/api/government/farmers`
- 智能项圈：`/api/government/collars`

### 2. nginx配置简化

#### 旧配置（复杂）
```nginx
location ^~ /api/auth/ { ... }
location ^~ /api/supervision/ { ... }
location ^~ /api/epidemic/ { ... }
location ^~ /api/government/ { ... }
location ~ ^/api/(personnel|approval|...)/ { ... }
```

#### 新配置（简单）
```nginx
location ^~ /api/ {
    proxy_pass http://localhost:5352/api/;
    # ... CORS配置
}
```

### 3. 前端API调用更新

#### 旧调用方式
```javascript
// 分散的API调用
axios.get('/api/government/data-center')
axios.get('/api/government/market-price')
axios.get('/api/supervision/stats')
axios.get('/api/epidemic/stats')
```

#### 新调用方式
```javascript
// 统一的API调用
api.dashboard.getDataCenter()
api.dashboard.getMarketPrice()
api.dashboard.getSupervisionStats()
api.dashboard.getEpidemicStats()
```

## 迁移步骤

### 1. 后端迁移
1. 创建新的 `app-redesigned.js` 文件
2. 创建 `routes/dashboard.js` 模块
3. 更新现有路由文件，确保路径正确
4. 测试所有API端点

### 2. nginx配置更新
1. 备份现有nginx配置
2. 更新为简化的代理规则
3. 测试nginx配置：`nginx -t`
4. 重载nginx：`nginx -s reload`

### 3. 前端迁移
1. 创建新的 `api-redesigned.js` 文件
2. 更新组件中的API调用
3. 测试所有功能模块

### 4. 测试验证
1. 运行 `test-redesigned-routing.js` 脚本
2. 检查所有API端点是否正常
3. 验证前端功能是否正常

## 优势

### 1. 维护性
- 统一的API设计模式
- 简化的nginx配置
- 清晰的功能模块划分

### 2. 一致性
- 与银行端保持一致的设计
- 统一的错误处理
- 标准化的响应格式

### 3. 扩展性
- 易于添加新功能模块
- 统一的认证和权限管理
- 标准化的API文档

### 4. 性能
- 简化的nginx匹配规则
- 减少配置复杂度
- 提高请求处理效率

## 注意事项

1. **向后兼容**：在迁移过程中保持旧API的兼容性
2. **测试充分**：确保所有功能模块都经过充分测试
3. **文档更新**：及时更新API文档和用户手册
4. **监控告警**：设置监控告警，及时发现和解决问题

## 回滚计划

如果新设计出现问题，可以：
1. 恢复旧的nginx配置
2. 使用旧的app.js文件
3. 恢复旧的前端API调用
4. 分析问题原因并修复

## 总结

新的路由设计使政府端与银行端保持一致，提高了系统的可维护性和一致性。通过整合相关功能模块和简化配置，使整个系统更加清晰和易于管理。
