# PDF 预览系统 (PDF Preview Site)

这是一个安全、现代化的 PDF 预览系统，具有管理员后台和公共预览功能。

## 🖥 本地开发

前后端分开运行：

```bash
# 终端 1：启动后端（API 服务）
cd backend && npm install && npm start
# → http://localhost:3000

# 终端 2：启动前端（开发服务器，支持热更新）
cd frontend && npm install && npm run dev
# → http://localhost:5173
```

## 📦 打包 & 部署到服务器

只需要上传 `backend` 文件夹即可，步骤如下：

### 第一步：在本地打包前端

```bash
cd frontend
npm run build
```

执行后，前端产物会自动输出到 `backend/public/` 目录中。

### 第二步：上传 backend 文件夹到服务器

将整个 `backend/` 文件夹上传到服务器（通过 FTP/SCP/Git 均可）。

> [!IMPORTANT]
> 上传时注意包含以下内容：
> - `backend/public/`（前端打包产物，刚才 build 生成的）
> - `backend/uploads/`（已上传的 PDF 文件）
> - `backend/database.sqlite`（数据库文件，包含管理员账号和文档记录）
>
> 可以把 `backend/node_modules/` 排除，在服务器上重新 `npm install` 即可。

### 第三步：在服务器上启动

```bash
cd backend
npm install     # 仅首次或依赖变更时需要
npm start       # 启动服务
```

访问 `http://服务器IP:3000` 即可看到网站，**前后端都由这一个进程提供服务**。

### 第四步（推荐）：用 PM2 长期运行

```bash
npm install pm2 -g          # 全局安装 PM2（仅首次）
pm2 start server.js --name pdf-site   # 后台启动
pm2 save && pm2 startup     # 设置开机自启
```

常用管理命令：
```bash
pm2 status                  # 查看运行状态
pm2 logs pdf-site           # 查看日志
pm2 restart pdf-site        # 重启服务
```

## 🔐 管理后台

- **后台地址**: `http://服务器IP:3000/admin`
- **默认用户名**: `admin`
- **默认密码**: `123456`

> [!WARNING]
> 生产环境请务必修改默认密码！详见修改方法：在 `backend` 目录运行以下命令（替换新用户名/密码）：
> ```bash
> node -e "const db=require('./database');const bcrypt=require('bcryptjs');const h=bcrypt.hashSync('新密码',10);db.prepare('UPDATE users SET username=?,password=? WHERE id=1').run('新用户名',h);console.log('已更新');"
> ```

## 🛠 技术栈
- **前端**: Vue 3 + Vite + Glassmorphism UI
- **后端**: Node.js + Express（同时托管前端静态文件）
- **数据库**: SQLite (better-sqlite3)
- **PDF 处理**: 提取前两页进行预览

## 📁 目录结构
- `/frontend`: Vue 3 源码（本地开发用，部署后不需要上传）
- `/backend`: Node.js 服务 + 前端打包产物（部署只需上传这个）
- `/backend/public/`: 前端 build 产物（由 `npm run build` 自动生成）
- `/backend/database.sqlite`: 存储文档信息和管理员账号
