Spaces:
Running
Running
| # 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资源本地化以提高性能和稳定性 | |