# Fast Dashboard 项目

## 项目概述
智能评估仪表板系统，包含人才评估和工程研究中心评估功能。

## 技术栈
- 前端：Vue 3 + Element Plus + ECharts
- 后端：Python FastAPI + SQLite
- 部署：Docker + Nginx

## 近期问题记录

### 2024年 - 爬虫图片URL路径问题

**问题描述：**
- 爬虫返回的图片URL多了一个 `/szdw/` 路径
- 正确地址应该是：`https://ac.bit.edu.cn/images/2024-02/f5a28fd026884e328c2280ef42566f6b.png`
- 错误地址返回：`https://ac.bit.edu.cn/szdw/images/2024-02/f5a28fd026884e328c2280ef42566f6b.png`

**问题原因：**
- 在处理相对路径 `../../../` 时，原有逻辑从当前URL推断基础路径不准确
- 导致多拼接了 `/szdw/` 路径段

**解决方案：**
1. **修改图片URL处理逻辑** (`backend/main.py` 第610-625行)
   - 简化相对路径处理，直接移除 `../../../` 前缀
   - 统一使用基础URL (`https://ac.bit.edu.cn`) 拼接图片路径
   - 增加对 `../../` 和 `../` 路径的处理

**修复后的代码逻辑：**
```python
if img_src.startswith('../../../'):
    img_relative = img_src[9:]  # 移除 '../../../'
    img_url = f"{base_url}/{img_relative}"
elif img_src.startswith('../../'):
    img_relative = img_src[6:]  # 移除 '../../'
    img_url = f"{base_url}/{img_relative}"
elif img_src.startswith('../'):
    img_relative = img_src[3:]  # 移除 '../'
    img_url = f"{base_url}/{img_relative}"
```

### 2024年 - 人才评估接口网络连接问题

**问题描述：**
- 人才评估调用接口 `/api/scrape-url`
- 本地测试正常，服务器部署后报错500
- 错误信息：`HTTPSConnectionPool(host='ac.bit.edu.cn', port=443): Read timed out. (read timeout=30)`

**问题原因：**
1. **服务器网络环境限制**：服务器无法正常访问外部网站 ac.bit.edu.cn
2. **网络延迟问题**：服务器到目标网站的网络延迟较高，30秒超时不够
3. **DNS解析问题**：可能存在DNS配置问题
4. **防火墙限制**：服务器出站规则可能阻止了对目标域名的访问

**解决方案：**

1. **创建了改进版本的URL抓取函数** (`backend/scrape_url_improved.py`)
   - 增加DNS解析检查
   - 实现重试机制（最多3次重试）
   - 延长超时时间（连接30秒，读取90秒）
   - 添加详细的错误日志
   - 临时禁用SSL验证避免证书问题

2. **创建了网络诊断工具** (`backend/network_diagnostic.py`)
   - DNS解析测试
   - TCP连接测试
   - HTTP请求测试
   - 系统网络配置检查
   - 自动生成解决建议

**使用方法：**

```bash
# 进入后端目录
cd backend

# 激活conda环境
conda activate fast-dashboard-env

# 运行网络诊断工具
python network_diagnostic.py

# 或者在main.py中集成改进版本的抓取函数
```

**建议的部署检查项：**
1. 检查服务器DNS配置
2. 确认防火墙出站规则
3. 测试到目标网站的网络连通性
4. 考虑配置代理服务器
5. 检查云服务器安全组设置

## 环境配置

### Python环境
参考 `PYTHON_ENV_SETUP_README.md` 文档进行环境配置。

### 启动项目

#### 本地开发启动（仅本机访问）
```bash
# 后端启动
cd backend
conda activate fast-dashboard-env
uvicorn main:app --reload

# 前端启动
npm run dev
```

#### IP网络访问启动（局域网内其他设备可访问）

**方法1：使用便捷启动脚本**
```bash
# 双击运行根目录下的 start_with_ip.bat 文件
# 或在命令行中运行：
start_with_ip.bat
```

**方法2：手动启动**
```bash
# 后端启动 (监听所有IP)
cd backend
conda activate fast-dashboard-env
uvicorn main:app --host 0.0.0.0 --port 8000 --reload

# 前端启动 (监听所有IP)
npm run dev -- --host 0.0.0.0
```

#### 访问地址
- **本地访问**: http://localhost:5173 (前端) | http://localhost:8000 (后端)
- **网络访问**: http://您的IP:5173 (前端) | http://您的IP:8000 (后端)
- **当前您的IP**: http://192.168.18.108:5173 (前端) | http://192.168.18.108:8000 (后端)

#### 防火墙配置
如果其他设备无法访问，请确保Windows防火墙允许以下端口：
- 端口 5173 (前端)
- 端口 8000 (后端)

## 文件结构
```
fast-dashboard/
├── backend/                    # 后端代码
│   ├── main.py                # 主应用文件
│   ├── scrape_url_improved.py # 改进版URL抓取
│   ├── network_diagnostic.py  # 网络诊断工具
│   └── ...
├── src/                       # 前端代码
│   ├── components/           # Vue组件
│   └── ...
├── README.md                 # 项目文档
└── PYTHON_ENV_SETUP_README.md # Python环境配置文档
```
