# 本地测试指南 - 推送前验证

## ✅ Vercel 配置检查（已通过）

### 检查结果：
- ✅ `.vercelignore` 正确配置，会忽略所有后端文件
- ✅ `vercel.json` 配置正确
- ✅ 前端文件完整：index.html, js/, css/, public/, views/
- ✅ 后端文件会被忽略：server/, docker/, scripts/

**结论：Vercel 部署安全，不会上传后端代码**

---

## 🧪 本地测试步骤

### 测试 1：前端模式（模拟 Vercel）

```bash
# 启动简单的 HTTP 服务器
python -m http.server 8000

# 或使用 Node.js
npx http-server -p 8000

# 访问 http://localhost:8000
```

**测试项**：
- [ ] 页面正常加载
- [ ] 可以打开文件选择
- [ ] localStorage 正常工作
- [ ] 所有现有功能正常
- [ ] 控制台无错误

---

### 测试 2：Docker 后端模式

#### 2.1 检查 Docker 环境
```bash
docker --version
docker-compose --version
```

#### 2.2 配置环境变量
```bash
cp .env.example .env
nano .env
```

**最小配置**：
```env
DB_PASSWORD=test123456
JWT_SECRET=test-jwt-secret-minimum-32-characters-long
ADMIN_EMAIL=admin@test.local
ADMIN_PASSWORD=admin123456
```

#### 2.3 启动 Docker
```bash
# 方式 1: 使用部署脚本
cd scripts
./deploy.sh

# 方式 2: 手动启动
docker-compose up -d

# 查看日志
docker-compose logs -f app
```

#### 2.4 验证服务
```bash
# 健康检查
curl http://localhost:3000/api/health

# 访问前端
open http://localhost:3000

# 访问管理面板
open http://localhost:3000/admin
```

**测试项**：
- [ ] 所有容器正常运行
- [ ] 数据库连接成功
- [ ] API 健康检查通过
- [ ] 前端页面正常加载
- [ ] 可以注册用户
- [ ] 可以登录管理面板
- [ ] 数据保存到数据库

#### 2.5 清理
```bash
# 停止服务
docker-compose down

# 完全清理（包括数据）
docker-compose down -v
```

---

## 🔍 关键验证点

### 验证 1：Vercel 不会受影响

**测试方法**：模拟 Vercel 只部署前端文件
```bash
# 创建临时目录，只复制前端文件
mkdir /tmp/vercel-test
cp index.html /tmp/vercel-test/
cp -r js css public views /tmp/vercel-test/
cd /tmp/vercel-test

# 启动测试
python -m http.server 8001
# 访问 http://localhost:8001

# 应该完全正常工作
```

### 验证 2：admin/ 目录是否需要

**检查**：
```bash
# admin/ 是否在 .vercelignore 中？
grep admin .vercelignore
```

**结果**：`admin/` 没有被忽略，会部署到 Vercel

**确认**：这是对的，因为管理面板的 HTML 也可以在前端模式下查看（只是没有后端 API）

### 验证 3：存储适配器是否正确引入

```bash
# 检查 index.html
grep storage-adapter.js index.html
```

**预期输出**：
```html
<script src="js/storage/storage-adapter.js"></script>
```

**测试**：
1. 打开浏览器控制台
2. 检查 `window.storageAdapter` 是否存在
3. 检查 `window.DEPLOYMENT_MODE` 的值

---

## 🎯 快速测试脚本

### 一键测试脚本

```bash
#!/bin/bash

echo "=================================="
echo "   Paper Burner X 本地测试"
echo "=================================="
echo ""

# 测试 1: 前端模式
echo "测试 1: 前端模式（模拟 Vercel）"
echo "启动 HTTP 服务器..."
python -m http.server 8000 &
SERVER_PID=$!
sleep 2

echo "→ 测试页面访问"
if curl -s http://localhost:8000 > /dev/null; then
    echo "✅ 前端服务器启动成功"
else
    echo "❌ 前端服务器启动失败"
fi

echo "→ 打开浏览器手动测试"
echo "   访问: http://localhost:8000"
read -p "前端测试完成后按回车继续..."

kill $SERVER_PID
echo ""

# 测试 2: Docker 模式
echo "测试 2: Docker 模式"
echo "→ 检查 Docker 环境"
if command -v docker &> /dev/null; then
    echo "✅ Docker 已安装"
else
    echo "❌ Docker 未安装，跳过 Docker 测试"
    exit 0
fi

echo "→ 检查 .env 配置"
if [ ! -f ".env" ]; then
    echo "⚠️  .env 不存在，创建默认配置"
    cp .env.example .env
fi

read -p "是否启动 Docker 测试？(y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    echo "→ 启动 Docker 服务"
    docker-compose up -d

    echo "→ 等待服务启动..."
    sleep 10

    echo "→ 测试 API"
    if curl -s http://localhost:3000/api/health > /dev/null; then
        echo "✅ Docker 服务启动成功"
        echo "   访问: http://localhost:3000"
        echo "   管理: http://localhost:3000/admin"
    else
        echo "❌ Docker 服务启动失败"
        docker-compose logs app
    fi

    read -p "Docker 测试完成后按回车清理..."
    docker-compose down
fi

echo ""
echo "=================================="
echo "   测试完成！"
echo "=================================="
```

---

## ✅ 测试通过标准

### 前端模式（Vercel）
- [ ] 页面正常加载
- [ ] 功能完全正常
- [ ] 无 JavaScript 错误
- [ ] localStorage 工作正常

### Docker 模式
- [ ] 所有容器运行正常
- [ ] API 响应正常
- [ ] 可以注册/登录
- [ ] 数据持久化工作

### 无冲突验证
- [ ] 前端代码未被破坏
- [ ] 旧功能全部正常
- [ ] 没有引入 breaking changes

---

## 🚀 测试通过后

如果所有测试都通过，你可以安全地：

```bash
git add .
git commit -m "feat: add Docker support with full backend"
git push origin main
```

**推送后监控**：
1. 立即检查 Vercel 部署状态
2. 访问部署后的 URL
3. 测试主要功能
4. 如有问题立即 revert

---

## 🆘 如果测试失败

### 前端测试失败
```bash
# 检查是否有文件缺失
git status

# 恢复特定文件
git restore <file>

# 查看具体错误
浏览器控制台
```

### Docker 测试失败
```bash
# 查看日志
docker-compose logs -f app

# 检查数据库
docker-compose logs postgres

# 重新构建
docker-compose down -v
docker-compose up --build
```

---

## 📞 现在做什么？

选择一个：

**A) 运行快速前端测试（5 分钟）**
```bash
python -m http.server 8000
# 手动测试功能
```

**B) 运行完整测试（包括 Docker，15 分钟）**
```bash
# 我帮你创建测试脚本
```

**C) 我相信配置没问题，直接推送**
```bash
git add .
git commit -m "feat: add Docker support"
git push origin main
```

你选哪个？
