# 小虾 SaaS 本地验证检查清单

**验证目标**：确保前后端真实联调通过，为上线做准备  
**预计时间**：30 分钟 - 1 小时  
**执行人**：老大  
**协助**：小虾 🦐

---

## 一、环境准备（10 分钟）

### 1.1 检查系统依赖

```bash
# 检查 FFmpeg
ffmpeg -version

# 检查 Python
python --version  # 需要 3.12+

# 检查 Node.js
node --version  # 需要 18+
```

**预期**：
- ✅ FFmpeg 已安装
- ✅ Python 3.12+
- ✅ Node.js 18+

---

### 1.2 准备环境变量

**位置**：`F:\openclaw-saas\.env.development`

**必须配置的项**：
```env
# 数据库
DATABASE_URL=postgresql://xiaoxia:xiaoxia123@localhost:5432/xiaoxia_saas

# Redis
REDIS_URL=redis://localhost:6379/0

# MinIO
OSS_ENDPOINT=localhost:9000
OSS_ACCESS_KEY_ID=minioadmin
OSS_ACCESS_KEY_SECRET=minioadmin
OSS_BUCKET_NAME=xiaoxia-saas
OSS_SECURE=false
OSS_PUBLIC_URL=http://localhost:9000

# JWT
JWT_SECRET_KEY=your-super-secret-key-change-in-production
JWT_ALGORITHM=HS256
JWT_ACCESS_TOKEN_EXPIRE_MINUTES=30

# Celery
CELERY_BROKER_URL=redis://localhost:6379/1
CELERY_RESULT_BACKEND=redis://localhost:6379/2
```

**检查方式**：
```bash
cd F:\openclaw-saas
cat .env.development
```

---

### 1.3 启动基础设施

**方式 1：Docker Compose（推荐）**
```bash
cd F:\openclaw-saas\infra\docker
docker-compose up -d postgres redis minio
```

**方式 2：本地服务**
- PostgreSQL 手动启动
- Redis 手动启动
- MinIO 手动启动

**验证**：
```bash
# 检查 PostgreSQL
psql -h localhost -U xiaoxia -d xiaoxia_saas -c "SELECT 1;"

# 检查 Redis
redis-cli ping

# 检查 MinIO
curl http://localhost:9000/minio/health/live
```

**预期**：
- ✅ PostgreSQL 连接成功
- ✅ Redis 返回 PONG
- ✅ MinIO 返回 200 OK

---

### 1.4 安装依赖

**后端依赖**：
```bash
cd F:\openclaw-saas
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
```

**前端依赖**：
```bash
cd F:\openclaw-saas\apps\web
npm install
```

**预期时间**：5-10 分钟

---

### 1.5 初始化数据库

```bash
cd F:\openclaw-saas
.venv\Scripts\activate

# 运行数据库迁移
# （如果有 alembic）
# alembic upgrade head

# 或者直接运行 SQL
psql -h localhost -U xiaoxia -d xiaoxia_saas -f migrations/001_initial_schema.sql
psql -h localhost -U xiaoxia -d xiaoxia_saas -f migrations/004_asset_management.sql
```

**验证**：
```bash
psql -h localhost -U xiaoxia -d xiaoxia_saas -c "\dt"
```

**预期**：看到所有表（users, workspaces, assets, generation_tasks 等）

---

## 二、启动服务（5 分钟）

### 2.1 启动 API 服务

**终端 1**：
```bash
cd F:\openclaw-saas
.venv\Scripts\activate
cd apps\api
python main.py
```

**预期输出**：
```
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
```

**验证**：
```bash
curl http://localhost:8000/api/v1/health
```

**预期响应**：
```json
{"status": "healthy"}
```

---

### 2.2 启动 Worker 服务

**终端 2**：
```bash
cd F:\openclaw-saas
.venv\Scripts\activate
cd apps\worker
celery -A celery_app worker --loglevel=info
```

**预期输出**：
```
[tasks]
  . worker.generate_video
celery@LAPTOP ready.
```

---

### 2.3 启动前端服务

**终端 3**：
```bash
cd F:\openclaw-saas\apps\web
npm run dev
```

**预期输出**：
```
VITE v5.x.x  ready in xxx ms

  ➜  Local:   http://localhost:5173/
```

---

## 三、功能验证（15-30 分钟）

### 3.1 用户注册/登录

**步骤**：
1. 打开浏览器：`http://localhost:5173`
2. 点击"注册"
3. 填写信息：
   - 邮箱：`test@example.com`
   - 密码：`Test123456`
   - 用户名：`测试用户`
4. 点击注册
5. 使用刚注册的账号登录

**检查点**：
- [ ] 注册成功
- [ ] 登录成功
- [ ] 跳转到工作空间页面

**预期时间**：2 分钟

---

### 3.2 创建工作空间和项目

**步骤**：
1. 点击"创建工作空间"
2. 填写名称：`测试工作空间`
3. 创建成功后，点击进入
4. 点击"创建项目"
5. 填写项目名称：`测试项目`

**检查点**：
- [ ] 工作空间创建成功
- [ ] 项目创建成功
- [ ] 能看到项目详情页

**预期时间**：2 分钟

---

### 3.3 上传素材

**步骤**：
1. 进入项目
2. 点击"素材管理"
3. 点击"上传素材"
4. 选择 2-3 个视频文件（MP4 格式）
5. 等待上传完成

**检查点**：
- [ ] 上传进度条显示
- [ ] 上传成功提示
- [ ] 素材列表显示上传的文件
- [ ] 能看到缩略图

**预期时间**：3-5 分钟（取决于文件大小）

**调试检查**（如果上传失败）：
```bash
# 查看 API 日志（终端 1）
# 查看 MinIO 存储
curl http://localhost:9000  # 应该能访问
```

---

### 3.4 素材分类

**步骤**：
1. 在素材列表中选择一个素材
2. 点击"分类"
3. 等待分类完成

**检查点**：
- [ ] 分类任务创建成功
- [ ] 分类状态显示为"处理中"
- [ ] 分类完成后显示结果（如：scenic, product, person 等）

**预期时间**：1-2 分钟

**调试检查**（如果分类卡住）：
```bash
# 查看 Worker 日志（终端 2）
# 应该看到分类任务执行
```

---

### 3.5 创建生成任务

**步骤**：
1. 点击"视频生成"
2. 选择素材库
3. 选择生成策略（如果有）
4. 点击"开始生成"

**检查点**：
- [ ] 生成任务创建成功
- [ ] 任务状态显示为"队列中"或"处理中"
- [ ] 进度条更新

**预期时间**：1 分钟

---

### 3.6 等待生成完成

**步骤**：
1. 刷新页面或等待自动刷新
2. 查看任务状态

**检查点**：
- [ ] 任务状态变为"已完成"
- [ ] 进度条显示 100%
- [ ] 显示生成的视频数量

**预期时间**：2-5 分钟（取决于素材数量和大小）

**调试检查**（如果生成失败）：
```bash
# 查看 Worker 日志（终端 2）
# 应该看到：
# - 素材下载
# - FFmpeg 执行
# - 文件上传
```

---

### 3.7 查看生成结果

**步骤**：
1. 点击"生成结果"
2. 查看生成的视频列表
3. 点击某个视频

**检查点**：
- [ ] 能看到视频列表
- [ ] 显示缩略图
- [ ] 显示视频元数据（时长、分辨率、大小）

**预期时间**：1 分钟

---

### 3.8 下载视频

**步骤**：
1. 在视频详情页点击"下载"
2. 浏览器开始下载
3. 下载完成后播放视频

**检查点**：
- [ ] 下载链接正常
- [ ] 文件下载成功
- [ ] 视频能正常播放
- [ ] 视频内容是多个素材的拼接

**预期时间**：2-3 分钟

**最终验证**：
- 播放器能打开
- 画面流畅
- 没有黑屏或错误

---

## 四、问题记录

### 发现的问题

| 序号 | 功能点 | 问题描述 | 严重程度 |
|------|--------|----------|----------|
| 1    |        |          | P0/P1/P2 |
| 2    |        |          |          |
| 3    |        |          |          |

**严重程度定义**：
- **P0**：阻断上线（如：无法登录、无法生成）
- **P1**：影响体验（如：UI 错位、加载慢）
- **P2**：小问题（如：文字错误、样式小瑕疵）

---

## 五、验收标准

### ✅ 通过标准

**核心流程必须全部通过**：
- [x] 用户注册/登录
- [x] 创建工作空间/项目
- [x] 上传素材
- [x] 素材分类
- [x] 创建生成任务
- [x] 生成完成
- [x] 查看结果
- [x] 下载视频

**无 P0 问题**

---

### ⚠️ 有条件通过

**核心流程通过，但有 P1 问题**：
- 可以先修复后上线
- 或者标注已知问题后上线

---

### ❌ 不通过

**任何核心流程失败，或有 P0 问题**：
- 必须修复后再验证
- 不能上线

---

## 六、验证完成后

### ✅ 如果通过

**下一步**：
1. 小虾准备生产部署脚本
2. 部署到服务器
3. 绑定域名
4. 开放访问

### ⚠️ 如果有问题

**下一步**：
1. 老大记录问题到上面的表格
2. 小虾立刻修复 P0 问题
3. P1/P2 问题排期修复
4. 修复后再次验证

---

## 七、验证提示

### 💡 验证技巧

1. **别着急**
   - 每个步骤都看清楚
   - 发现问题立刻截图

2. **多试几次**
   - 如果某个功能失败，试 2-3 次
   - 确认是真的有问题，不是网络抖动

3. **记录详细**
   - 问题描述要具体（不是"不行"，而是"点击后无响应"）
   - 最好有截图或错误信息

4. **随时叫小虾**
   - 遇到问题不确定的，立刻问我
   - 我可以远程看日志帮你诊断

---

## 八、常见问题

### Q1: MinIO 连不上

**症状**：上传素材失败

**解决**：
```bash
# 检查 MinIO 是否启动
docker ps | grep minio

# 重启 MinIO
docker restart minio
```

---

### Q2: Worker 没反应

**症状**：分类/生成任务一直"处理中"

**解决**：
```bash
# 检查 Worker 日志（终端 2）
# 如果没有任务输出，重启 Worker
Ctrl+C
celery -A celery_app worker --loglevel=info
```

---

### Q3: 前端报错

**症状**：浏览器控制台有红色错误

**解决**：
- F12 打开开发者工具
- 截图错误信息
- 发给小虾

---

### Q4: 视频生成失败

**症状**：任务状态变为"失败"

**解决**：
```bash
# 查看 Worker 日志（终端 2）
# 找到错误信息
# 发给小虾
```

---

**检查清单创建完成！**

**老大，现在可以开始验证了！**

---

**小虾待命中** 🦐  
**有问题随时叫我！**
