# Product Spec: 小说创作工作台

## 产品概述
面向网络小说作者的 Web 端写作规划工具。核心工作流：构思人物 → AI 生成关系网 → 用户修改 → AI 生成大纲 → 用户修改 → AI 逐章写正文。

**核心定位**: 不是"AI 写小说"，而是"人决定写什么，AI 执行"。这个定位很清醒。

## 目标用户
- 自己写网络小说的作者
- 题材：现代言情、都市、穿越等

## 核心矛盾

### 矛盾 1：AI 写正文 ↔ 纯本地存储
AI 写正文需要调用 LLM API（OpenAI / Claude / 国内大模型）。纯本地 Web 应用无法运行 LLM。这意味着：
- 必须有一个后端代理（转发 API 请求）或者在浏览器中直接调用 API（暴露 key 的风险）
- 每次生成都有 API 成本 — 写一本 100 章的小说可能花费 $10-50
- **建议**: 明确架构为"前端 + 轻量后端代理"，或接受在浏览器中绑定用户自己的 API Key

### 矛盾 2：纯本地存储 ↔ 多作品管理
IndexedDB 存储上限取决于浏览器（通常 50MB-1GB），纯文字没问题。但：
- 换设备/清浏览器 = 数据丢失
- 浏览器存储不是永久可靠的
- **建议**: 保留"纯本地"但增加：定期自动导出到本地文件 + 手动导入恢复。标注"这不是备份方案"

### 矛盾 3：人物关系网可视化 ↔ 可修改性
关系图谱是图数据结构（节点 + 边），可视化用 D3.js / Cytoscape.js。但"用户修改"的交互是难点：
- 拖拽调整位置是基础，但修改关系（添加/删除/编辑连线）的 UI 做得好不容易
- 如果用户有 30+ 角色，关系网会非常拥挤
- **建议**: v1 用简单的"人物列表 + 关系表格"而非图谱，v2 再加可视化

## 核心功能

### v1（最关键 — 先把用户流程跑通）

| 功能 | 说明 |
|------|------|
| 作品管理 | 创建/切换/删除作品；题材标签设定 |
| 人物设定 | 填写角色信息卡；支持修改 |
| AI 生成章节大纲 | 根据人物 + 题材生成；用户可编辑 |
| AI 写正文 | 逐章生成；支持手动修改；用户自备 API Key |
| 数据导入导出 | JSON/Markdown 导出；备份恢复 |

### v2

| 功能 | 说明 |
|------|------|
| 人物关系网可视化 | 图结构展示 + 拖拽编辑 |
| 多模型支持 | OpenAI / Claude / 国内模型切换 |
| AI 续写/重写段落 | 不仅是生成整章，而是精细化控制 |

### 不做

- **多人协作** — 本地存储不支持
- **发布/连载到平台** — 用户明确不需要
- **移动端适配** — 先把 Web 做好

## 未解决的假设（需要用户确认）

1. **API Key 方案**：用户愿意自己搞 API Key 还是希望用完即走（付费模式）？
2. **分章粒度**：每章期望多长？（3000 字 / 5000 字 / 不限）
3. **AI 生成正文的风格控制**：需要设定风格描述吗？还是"写就行"？
4. **关系网复杂度和可视化需求**：人物通常多少个？超过 20 个关系网就糊了
5. **跨设备需求**：如果换了电脑，数据怎么过去？

## 风险矩阵
| 风险 | 概率 | 影响 | 缓解 |
|------|------|------|------|
| API 成本超出预期 | 中 | 用户弃用 | v1 控制生成量 + 显示预估成本 |
| 生成内容质量不达标 | 中 | 用户失望 | 提供 prompt 模板 + 风格示例，用户可调试 |
| 浏览器数据丢失 | 低 | 极高（全部丢失） | 每次关闭前提示导出 + 定期自动备份提示 |
| 关系网 UI 太复杂做不完 | 中 | 延期 | 优先做表格版，图谱版后置 |

## 架构决策（待确认）

**前端 SPA**：React / Vue 都行，单页应用无后端。
**AI 调用**：用户在前端输入 API Key → 直接调用 LLM API。V3 可选后端代理（隐藏 Key + 计费）。
**存储**：IndexedDB（结构化数据）+ localStorage（配置项）。定期导出提醒。
**关系网渲染**：v1 用表格 → v2 用 D3.js force-directed graph。

## 当前状态
? Idea Stage — 以上是批判性需求分析，需要逐条确认后进入开发计划。
