# Creative Studio MVP 使用指南

## 快速开始

### 1. 启动后端

```powershell
cd backend
.\start.bat
```

### 2. 启动前端

```powershell
cd frontend
npm install
npm run dev
```

### 3. 配置 GLM API Key

编辑 `backend\.env` 文件：

```env
ZHIPUAI_API_KEY=your_api_key_here
```

获取 API Key: https://open.bigmodel.cn/usercenter/apikeys

---

## 完整创作流程演示

### 步骤 1: 创建项目

1. 访问 http://localhost:5173
2. 点击 "创建新项目"
3. 填写项目信息：

```
项目名称: 宫廷风云
总集数: 30

世界观设定: 架空朝代天启朝，皇权与相权之争

风格指南: 古风正剧，对话半文半白

主要人物:
李云飞：边关将军，耿直刚正，说话简练直接
苏婉儿：丞相之女，聪慧隐忍，说话含蓄委婉

整体大纲:
EP01-05：相识与相恋，两人被迫分离
EP06-15：宫中斗争，婉儿周旋，云飞征战
EP16-25：真相大白，联手对抗丞相
EP26-30：最终对决，有情人终成眷属
```

### 步骤 2: 开始创作

1. 进入项目详情页
2. 点击 "开始创作 (EP1-EP3)"
3. 等待 AI 创作完成（每集约需 30-60 秒）

### 步骤 3: 查看结果

1. 创作完成后，剧集列表会显示已完成
2. 点击 "查看内容" 查看剧本
3. 可以看到大纲、完整剧本、质量分数

---

## API 使用示例

### 使用 Swagger UI

访问 http://localhost:8000/docs

#### 1. 查看所有 Skills

```
GET /api/v1/skills
```

#### 2. 测试 Skill

```
POST /api/v1/skills/dialogue_writer_ancient/test
{
  "test_input": "请创作一段古风对话：李云飞向苏婉儿告别",
  "temperature": 0.7
}
```

#### 3. 创建项目

```
POST /api/v1/projects
{
  "name": "宫廷风云",
  "totalEpisodes": 30,
  "globalContext": {
    "worldSetting": "架空朝代天启朝...",
    "characterProfiles": {
      "char_1": {
        "name": "李云飞",
        "description": "边关将军",
        "personality": "耿直刚正",
        "speechStyle": "简练直接"
      }
    }
  }
}
```

#### 4. 执行剧集创作

```
POST /api/v1/projects/{project_id}/execute
{
  "episodeNumber": 1,
  "title": "初识"
}
```

---

## Python 脚本示例

### 完整创作流程脚本

```python
import requests
import time

BASE_URL = "http://localhost:8000/api/v1"

# 1. 创建项目
project_data = {
    "name": "测试项目",
    "totalEpisodes": 3,
    "globalContext": {
        "worldSetting": "架空朝代，皇权与相权之争",
        "overallOutline": "EP1-3：相识与相恋"
    }
}

response = requests.post(f"{BASE_URL}/projects", json=project_data)
project = response.json()
project_id = project["id"]
print(f"✅ 项目创建成功: {project_id}")

# 2. 执行 EP1 创作
print("\n🎬 开始创作 EP1...")
start_time = time.time()

response = requests.post(
    f"{BASE_URL}/projects/{project_id}/execute",
    json={"episodeNumber": 1, "title": "初识"}
)

result = response.json()
if result["success"]:
    episode = result["episode"]
    print(f"✅ EP1 创作完成!")
    print(f"   质量分数: {episode['qualityScore']}")
    print(f"   创作耗时: {time.time() - start_time:.1f}秒")
    print(f"\n📜 剧本预览:")
    print(episode["content"][:500] + "...")
else:
    print(f"❌ 创作失败: {result['message']}")

# 3. 获取所有剧集
response = requests.get(f"{BASE_URL}/projects/{project_id}/episodes")
episodes = response.json()
print(f"\n📊 已完成 {len(episodes)} 集")
for ep in episodes:
    print(f"   EP{ep['number']}: {ep['status']} - 分数: {ep.get('qualityScore', 'N/A')}")
```

### 批量创作脚本

```python
import requests
import time

BASE_URL = "http://localhost:8000/api/v1"
project_id = "your-project-id"

# 批量创作 EP1-EP5
for ep_num in range(1, 6):
    print(f"\n🎬 创作 EP{ep_num}...")

    start = time.time()
    response = requests.post(
        f"{BASE_URL}/projects/{project_id}/execute",
        json={"episodeNumber": ep_num}
    )

    result = response.json()
    elapsed = time.time() - start

    if result["success"]:
        episode = result["episode"]
        print(f"✅ 完成 - 分数: {episode['qualityScore']} - 耗时: {elapsed:.1f}秒")
    else:
        print(f"❌ 失败: {result['message']}")
```

---

## cURL 示例

### 创建项目

```bash
curl -X POST http://localhost:8000/api/v1/projects \
  -H "Content-Type: application/json" \
  -d '{
    "name": "宫廷风云",
    "totalEpisodes": 3,
    "globalContext": {
      "worldSetting": "架空朝代天启朝",
      "overallOutline": "EP1-3：相识与相恋"
    }
  }'
```

### 执行创作

```bash
curl -X POST http://localhost:8000/api/v1/projects/{project_id}/execute \
  -H "Content-Type: application/json" \
  -d '{
    "episodeNumber": 1,
    "title": "初识"
  }'
```

---

## 预期输出示例

### 创作完成的剧本

```
【场景】御花园，傍晚，落霞满天
【人物】李云飞、苏婉儿

李云飞：（拱手）苏姑娘，此地不宜久留。

苏婉儿：（轻叹）将军所言极是，只是...

李云飞：（环顾四周）只是什么？

苏婉儿：（低头）只是婉儿不知何时才能再与将军相见。

李云飞：（沉默片刻）三年，三年后我必回来。

苏婉儿：（猛地抬头）三年？太久了...

李云飞：（坚定）这是我能做到的极限。

【场景转换】
宫门之外，李云飞翻身上马，最后回首望向宫墙深处...

```

---

## 故障排查

### 问题 1: GLM API 调用失败

**症状**: 创作失败，提示 "GLM API 调用失败"

**解决**:
1. 检查 `.env` 文件中的 `ZHIPUAI_API_KEY` 是否正确
2. 确认 API Key 有效且有足够额度
3. 检查网络连接

### 问题 2: 创作结果为空

**症状**: 创作完成但内容为空

**解决**:
1. 查看后端日志
2. 尝试降低 `temperature` 参数
3. 检查提示词是否过长

### 问题 3: 前端无法连接后端

**症状**: 前端报错 "Network Error"

**解决**:
1. 确认后端服务正在运行 (http://localhost:8000)
2. 检查 CORS 配置
3. 确认前端代理配置正确

---

## MVP 功能限制

当前 MVP 版本的功能限制：

| 功能 | 状态 | 说明 |
|-----|------|------|
| 项目管理 | ✅ | 完整支持 |
| 单集执行 | ✅ | 完整支持 |
| 批量执行 | ✅ | 简化实现 |
| 记忆系统 | ⚠️ | 简化版（仅记录事件） |
| 审核系统 | ⚠️ | 简化版（LLM 评分） |
| Agent 管理 | ❌ | 未实现（使用固定 Agent） |
| Skill 配置 | ⚠️ | 仅支持内置 Skills |
| 用户创建 Skill | ✅ | 支持 |
| 数据持久化 | ❌ | 内存存储（重启丢失） |

---

## 下一步

MVP 验证通过后，可以继续实现：

1. **数据持久化** - 集成 MongoDB 存储项目和剧集
2. **完整记忆系统** - 事件时间线、伏笔追踪
3. **高级审核** - 多维度审核、问题定位
4. **Agent 管理** - 可视化 Agent 工作流
5. **实时执行监控** - WebSocket 推送创作进度
