dashboard/README.md
2025-06-09 14:59:40 +08:00

156 lines
4.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.

# 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环境配置文档
```