# 部署上线指南

## 环境要求

| 项目 | 要求 |
|------|------|
| Node.js | >= 20.0.0 |
| npm | >= 10.0.0 |
| MySQL | >= 8.0 |

## 本地开发

### 安装依赖
```bash
npm install
```

### 启动开发服务器
```bash
npm run dev
```

### 访问地址
- 本地：http://localhost:3000
- 局域网：http://192.168.x.x:3000

## 环境变量

创建 `.env.local` 文件：

```env
# 数据库配置
DATABASE_URL=mysql://user:password@localhost:3306/soul_startup

# 存客宝API
CKB_API_KEY=your_api_key_here

# 微信支付
WECHAT_APP_ID=your_app_id
WECHAT_APP_SECRET=your_app_secret
WECHAT_MERCHANT_ID=your_merchant_id
WECHAT_API_KEY=your_api_key
```

## 生产构建

### 构建
```bash
npm run build
```

### 启动
```bash
npm run start
```

## 数据库配置

### 创建数据库
```sql
CREATE DATABASE soul_startup CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```

### 主要数据表
```sql
-- 用户表
CREATE TABLE users (
  id VARCHAR(36) PRIMARY KEY,
  phone VARCHAR(20) NOT NULL,
  nickname VARCHAR(50),
  is_admin BOOLEAN DEFAULT FALSE,
  referral_code VARCHAR(20),
  referred_by VARCHAR(20),
  earnings DECIMAL(10,2) DEFAULT 0,
  pending_earnings DECIMAL(10,2) DEFAULT 0,
  wechat VARCHAR(50),
  alipay VARCHAR(50),
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 购买记录表
CREATE TABLE purchases (
  id VARCHAR(36) PRIMARY KEY,
  user_id VARCHAR(36) NOT NULL,
  type ENUM('section', 'fullbook') NOT NULL,
  section_id VARCHAR(20),
  amount DECIMAL(10,2) NOT NULL,
  status ENUM('pending', 'completed', 'failed') DEFAULT 'pending',
  payment_method VARCHAR(20),
  referrer_earnings DECIMAL(10,2),
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 提现记录表
CREATE TABLE withdrawals (
  id VARCHAR(36) PRIMARY KEY,
  user_id VARCHAR(36) NOT NULL,
  amount DECIMAL(10,2) NOT NULL,
  method VARCHAR(20) NOT NULL,
  account VARCHAR(100) NOT NULL,
  name VARCHAR(50) NOT NULL,
  status ENUM('pending', 'approved', 'rejected', 'completed') DEFAULT 'pending',
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  processed_at TIMESTAMP
);

-- 分销绑定表
CREATE TABLE referral_bindings (
  id VARCHAR(36) PRIMARY KEY,
  referrer_id VARCHAR(36) NOT NULL,
  visitor_id VARCHAR(36) NOT NULL,
  binding_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  expire_time TIMESTAMP NOT NULL,
  status ENUM('active', 'converted', 'expired') DEFAULT 'active'
);
```

## 微信支付配置

### 1. 注册商户号
在微信支付商户平台注册

### 2. 获取API密钥
商户平台 → 账户中心 → API安全 → 设置API密钥

### 3. 配置回调地址
```
https://your-domain.com/api/payment/notify
```

## Vercel部署

### 1. 连接GitHub仓库
```bash
vercel link
```

### 2. 配置环境变量
在Vercel项目设置中添加环境变量

### 3. 部署
```bash
vercel --prod
```

## 服务器部署

### 使用PM2
```bash
# 安装PM2
npm install -g pm2

# 构建项目
npm run build

# 启动服务
pm2 start npm --name "soul-startup" -- start

# 保存进程
pm2 save

# 开机自启
pm2 startup
```

### Nginx配置
```nginx
server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
```

## 检查清单

### 上线前检查
- [ ] 环境变量配置完整
- [ ] 数据库连接正常
- [ ] 微信支付配置正确
- [ ] 存客宝API配置正确
- [ ] HTTPS证书配置
- [ ] 域名解析配置

### 功能测试
- [ ] 用户注册/登录
- [ ] 章节阅读
- [ ] 支付购买
- [ ] 分销绑定
- [ ] 提现申请
- [ ] 找伙伴匹配
- [ ] 管理后台

---
*文档版本：v2.0 | 更新日期：2026-01-18*
