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