# 长篇小说生成模块 uml编写

# 一、Scheema范式设计
# 长篇小说生成模块
- 模块描述  
  - 用户可以创建长篇小说项目，创建长篇小说项目时，可以添加人物词条。  
  - 每个项目可以添加多个章节。每个章节能够通过填写章节大纲利用ai模型生成章节内容。生成的章节内容能够手动修改。
## 1.表设计
### 1.1 长篇小说项目表（LongProject）
- objectId: String (唯一标识)
- createdAt: Date (创建时间)
- title: String (项目标题)
- long_characters: Array<Pointer> (人物列表，指向人物表)
- chapters: Array<Pointer> (章节列表，指向章节表)
### 1.2 长篇小说人物表（LongCharacter）

- objectId: String (唯一标识)
- createdAt: Date (创建时间)
- name: String (人物名称)
- role: String (人物角色)
- description: String (人物描述)
- project: Pointer (所属项目，指向长篇小说项目表)
### 1.3 章节表（Chapter）

- objectId: String (唯一标识)
- createdAt: Date (创建时间)
- title: String (章节标题)
- content: String (章节内容)
- project: Pointer (所属项目，指向项目表)

### PlantUML 类图表示

以下是用PlantUML表示的类图：

```plantuml
@startuml

class LongProject {
    +objectId: String
    +createdAt: Date
    +title: String
    +long_characters: Array>
    +chapters: Array>
}

class LongCharacter {
    +objectId: String
    +createdAt: Date
    +name: String
    +role: String
    +description: String
    +project: Pointer
}

class Chapter {
    +objectId: String
    +createdAt: Date
    +title: String
    +content: String
    +project: Pointer
}

LongProject "1" -- "0..*" LongCharacter : contains
LongProject "1" -- "0..*" Chapter : contains

@enduml
```
# 二、业务逻辑描述
# 长篇小说生成的完整逻辑
## 创建逻辑
- 用户在APP内，通过填写长篇小说名称、添加人物词条，点击提交按钮，触发创建长篇小说项目的逻辑。
  - 数据来源
    - 用户输入长篇小说名称，人物词条等数据。
  - 文本生成
    - 提示词： 人物生成提示词
  - 结果储存
    - LongProject
      - 项目标题title
    - LongCharacter
      - 人物名称name
      - 人物角色role角色在小说中的定位
      - 人物描述description完整人物描述
- 添加章节，根据章节大纲生成章节内容
  - 数据来源
    - LongCharacter
    - 用户输入：章节标题，章节大纲
  - 文本生成
    - 提示词： 章节内容生成提示词（章节大纲）
  - 生成结果
    - 章节内容content（生成的章节内容可以手动修改）
# 长篇小说生成业务逻辑图例

```plantuml
@startuml

actor User
participant "App" as App
participant "LongProject" as LongProject
participant "LongCharacter" as LongCharacter
participant "TextGenerationService" as TextGen
participant "Chapter" as Chapter

== 创建长篇小说项目 ==
User -> App: 输入长篇小说名称
User -> App: 添加人物词条
User -> App: 点击提交按钮
App -> LongProject: 创建项目
LongProject ->LongProject : 保存项目标题(title)
LongProject ->LongCharacter:  添加人物词条(name, role, description)
LongProject -> App: 项目创建成功

== 添加章节 ==
User -> App: 输入章节标题
User -> App: 输入章节大纲
App -> TextGen: 生成章节内容\n(根据章节大纲)
TextGen -> Chapter: 创建章节\n(title, outline, content)
Chapter -> App: 章节创建成功
App -> User: 显示章节内容\n(content可手动修改)

@enduml
```

### 说明
- 用户输入长篇小说名称和人物词条，并点击提交按钮。
- APP接收到输入后，调用LongProject创建项目，并返回创建成功的消息。
- 用户填写章节标题和章节大纲，APP调用文本生成服务生成章节内容，使用章节大纲作为提示词。
- 生成的章节内容存储在Chapter表中，并返回创建成功的消息给APP。
- APP向用户展示生成的章节内容，内容可以手动修改。

您可以将上述代码放入支持PlantUML的工具中生成相应的时序图。