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