# 指标查询系统 - 快速开始指南

## 📋 快速检查清单

- [ ] 已将 `metrics-proxy.jsp` 部署到 Web 服务器根目录
- [ ] 已将 `metrics-dashboard.html` 放在项目根目录
- [ ] Java 环境已配置 org.json 库
- [ ] C# MetricsController 已部署并运行
- [ ] Repository 实现层已完成
- [ ] 数据库连接正常

## 🎬 三步开启仪表盘

### 第1步：访问仪表盘
在浏览器中打开：
```
http://localhost:8080/metrics-dashboard.html
```

### 第2步：选择环境
在页面顶部选择环境：
- 本地环境 (http://localhost:5002)
- 测试环境 (http://172.232.21.79:5002)
- 生产环境 (https://lr.tooexp.com)

### 第3步：执行查询
根据需要选择查询类型，输入参数，点击查询按钮。

## 🔗 集成到 batch_query.html

在现有的导航标签中添加新标签页：

```html
<!-- 在标签页列表中添加 -->
<li class="nav-item" role="presentation">
    <button class="nav-link" id="metrics-tab" data-bs-toggle="tab" data-bs-target="#metrics-view" type="button" role="tab">📊 指标查询</button>
</li>

<!-- 在标签内容中添加 -->
<div class="tab-pane fade" id="metrics-view" role="tabpanel">
    <iframe src="metrics-dashboard.html" 
            style="width:100%; height:1200px; border:1px solid #e2e8f0; border-radius:8px; margin-top:16px;"></iframe>
</div>
```

## 📱 功能速查表

| 功能 | 参数 | 说明 |
|------|------|------|
| 查询标签率 | 交接单号 | 获取指定交接单的标签率、订单数等 |
| 查询订单指标 | 中性面单号 | 获取订单的考核时间、完成状态等 |
| 查询每日汇总 | 日期 | 获取指定日期的所有统计指标 |
| 查询日期范围 | 开始日期、结束日期 | 获取日期范围内的每日统计 |
| 查询完成率 | 日期 | 获取24小时或每日完成率 |

## 🛠️ 常用命令

### 测试 JSP 是否正常
```bash
# 在命令行中测试
curl "http://localhost:8080/metrics-proxy.jsp?action=getLabelRate&handoverNumber=HN001&env=test"
```

### 测试后端 API 是否正常
```bash
# 测试标签率 API
curl "http://172.232.21.79:5002/api/metrics/label-rate?handoverNumber=HN001"
```

### 查看日志
```
# JSP 错误日志通常在：
$CATALINA_HOME/logs/catalina.out

# C# 应用日志位置：
/src/CONTROLLER/logs/
```

## 📊 示例数据流

```
前端 (metrics-dashboard.html)
  ↓ 发送查询请求
JSP 代理 (metrics-proxy.jsp)
  ↓ 调用后端 API
后端控制器 (MetricsController)
  ↓ 调用服务层
业务逻辑 (MetricsCalculationService)
  ↓ 调用数据层
数据库 (MySQL)
  ↑ 返回结果
业务逻辑
  ↑ 计算指标
后端控制器
  ↑ 返回 JSON
JSP 代理
  ↑ 返回响应
前端
  ↑ 渲染结果
```

## ⚠️ 常见错误及解决

### Error: metrics-proxy.jsp not found
```
解决: 检查 JSP 文件是否在 Web 服务器根目录
确保服务器支持 JSP
```

### Error: org.json not found
```
解决: 添加依赖
<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20230227</version>
</dependency>
```

### Error: Cannot connect to API
```
解决: 
1. 检查环境选择是否正确
2. 确保后端服务正在运行
3. 检查防火墙设置
4. 查看浏览器控制台的网络请求
```

### Error: No data returned
```
解决:
1. 检查输入参数是否正确
2. 确认数据库中存在相应数据
3. 查看后端日志
4. 检查数据库连接
```

## 🎯 性能优化建议

### 1. 添加缓存
在 JSP 中添加缓存机制，减少数据库查询：
```jsp
// 缓存 5 分钟
Cache.put("labelRate_" + handoverNumber, result, 300);
```

### 2. 批量查询
使用批量查询接口而不是单个查询：
```javascript
// 不推荐
for (let i = 0; i < 100; i++) {
    queryLabelRate(waybills[i]);
}

// 推荐
queryBatchMetrics(waybills);
```

### 3. 异步加载
在仪表盘中使用异步加载提高响应速度：
```javascript
Promise.all([
    queryLabelRate(...),
    queryDailySummary(...),
    query24HRate(...)
]).then(results => {
    // 并行加载，更快显示
});
```

## 🔐 安全检查清单

- [ ] JSP 中已验证所有输入参数
- [ ] 后端 API 已实现权限检查
- [ ] 生产环境使用 HTTPS
- [ ] 已设置请求频率限制
- [ ] 已添加访问日志记录
- [ ] 敏感数据已加密

## 📚 相关文档

- [完整集成指南](metrics_frontend_integration.md)
- [API 文档](../docs/API_Documentation_zh.md)
- [MetricsController 实现](../src/CONTROLLER/Controllers/MetricsController.cs)
- [业务逻辑](../src/BLL/Services/MetricsCalculationService.cs)

## 🆘 获取帮助

1. 检查 [完整集成指南](metrics_frontend_integration.md)
2. 查看后端日志文件
3. 确认 Repository 实现是否完成
4. 测试 API 端点是否正常工作

---

**最后更新**: 2026-05-17
**版本**: 1.0
