Spaces:
Runtime error
Runtime error
File size: 4,782 Bytes
7f22d3c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 | # TUM Search Engine - 前端部分
这是 TUM Search Engine 的前端部分,已从后端项目中独立提取出来。
## 文件结构
```
frontend/
├── App.jsx # React主组件(整合所有功能)
├── main.jsx # React入口文件
├── index.html # HTML入口(React版本)
├── admin.html # 管理员控制台(Vue版本)
├── view.html # 内容详情页面(原生HTML)
├── config.js # API配置文件
└── README.md # 本文件
```
## 版本说明
### React版本(推荐)
- **App.jsx** - 使用React构建的现代化前端,整合了所有功能
- **main.jsx** - React应用入口
- **index.html** - React版本的HTML入口
### 原生HTML版本(备用)
- **index.html** (原版本) - 原生HTML + JavaScript实现
- **admin.html** - Vue.js实现的管理员控制台
- **view.html** - 原生HTML实现的详情页面
## 功能说明
### App.jsx (React版本 - 推荐)
- ✅ 用户搜索界面(带算法步骤可视化)
- ✅ 知识注入功能(URL、文本上传)
- ✅ 实时系统更新通知(WebSocket)
- ✅ 热门内容展示(Trending)
- ✅ 知识流展示(Feed)
- ✅ 教育卡片(How it Works)
- ✅ 用户交互记录
- ✅ 3D粒子网络背景动画
- ✅ 响应式设计
### index.html (原生HTML版本)
- 用户搜索界面
- 知识注入功能(URL、文本上传)
- 实时系统更新通知(WebSocket)
- 热门内容展示
- 知识流展示
### admin.html
- 管理员控制台
- 浏览和管理 Space R 和 Space X
- 提升内容到 Space R
- 删除内容
### view.html
- 内容详情页面
- 语义相似推荐
- 协同过滤推荐(社区路径)
## 配置
### API端点配置
编辑 `config.js` 文件来配置后端API地址:
```javascript
const API_CONFIG = {
baseURL: window.location.origin, // 默认使用当前域名
// 如果前后端分离,设置为: 'https://api.example.com'
...
};
```
### 开发环境配置
如果前端和后端运行在不同的端口,需要修改 `config.js`:
```javascript
if (window.location.hostname === 'localhost') {
API_CONFIG.baseURL = 'http://localhost:8000'; // 后端端口
API_CONFIG.wsURL = 'ws://localhost:8000';
}
```
## 使用方法
### React版本(推荐)
#### 安装依赖
```bash
cd frontend
npm install react react-dom
# 或使用yarn
yarn add react react-dom
```
#### 使用Vite构建(推荐)
```bash
# 安装Vite
npm install -D vite @vitejs/plugin-react
# 创建vite.config.js
# 运行开发服务器
npm run dev
```
#### 使用Create React App
```bash
npx create-react-app .
# 将App.jsx和main.jsx复制到src目录
npm start
```
### 原生HTML版本
#### 方式1: 与后端一起部署(推荐)
如果前端和后端部署在同一服务器上,可以直接使用:
1. 将 `frontend/` 目录中的文件复制到后端的 `static/` 目录
2. 后端会自动提供静态文件服务
#### 方式2: 独立部署前端
如果前端需要独立部署(例如使用 Nginx、Vercel、Netlify 等):
1. 修改 `config.js` 中的 `baseURL` 为后端API地址
2. 配置CORS,允许前端域名访问后端API
3. 部署前端文件到静态文件服务器
#### 方式3: 本地开发
使用简单的HTTP服务器:
```bash
# 使用Python
cd frontend
python3 -m http.server 3000
# 或使用Node.js的http-server
npx http-server -p 3000
```
然后在浏览器中访问 `http://localhost:3000`
**注意**: 需要确保后端API已启动,并且配置了正确的CORS策略。
## API依赖
前端依赖以下后端API端点:
- `GET /api/search?q=...` - 搜索
- `GET /api/feed?limit=...&offset=...` - 获取知识流
- `GET /api/trending?limit=...` - 获取热门内容
- `GET /api/item/{item_id}` - 获取内容详情
- `POST /api/feedback` - 记录用户交互
- `POST /api/upload/url` - 上传URL
- `POST /api/upload/text` - 上传文本
- `POST /api/upload/image` - 上传图片
- `WebSocket /ws` - 实时更新通知
管理员功能还需要:
- `GET /api/admin/browse?space=...&limit=...&offset=...`
- `POST /api/admin/promote`
- `DELETE /api/admin/delete?space=...&id=...`
## 技术栈
### React版本
- **React 18+** - UI框架
- **Tailwind CSS** - 样式框架(CDN)
- **Lucide React** - 图标库
- **WebSocket** - 实时通信
### 原生HTML版本
- **index.html & view.html**: Tailwind CSS (CDN)
- **admin.html**: Bootstrap 5 + Vue.js 3
- 纯JavaScript,无需构建工具
## 注意事项
1. 所有API调用都使用相对路径,通过 `config.js` 统一管理
2. WebSocket连接用于实时通知,需要后端支持
3. 前端使用CDN加载CSS框架,需要网络连接
4. 如果部署到生产环境,建议将CDN资源本地化以提高性能和稳定性
|