update: 1.新增职业管理模块和角色职业关联 2.章节分析自动更新角色职业状态 3.优化章节生成的角色信息构建 4.批量生成强制开启同步分析 5.章节内容批量生成增加系统提示

This commit is contained in:
xiamuceer
2025-12-22 19:53:31 +08:00
parent 6886d903fe
commit b2dec41464
25 changed files with 4635 additions and 89 deletions
+141 -2
View File
@@ -745,6 +745,15 @@ class PromptService:
- 特殊技能或知识
- 符合世界观设定
7. **职业信息**(重要 - 如果项目上下文中包含职业列表):
- 仔细查看项目上下文中的"可用主职业""可用副职业"列表
- 主职业:必须从"可用主职业"列表中选择一个最符合角色设定的职业,填写其职业名称(name字段)
- 主职业阶段:根据职业的阶段信息和角色实力,设定合理的当前阶段(1到职业的max_stage)
- 副职业:可以从"可用副职业"列表中选择0-2个,每个包含职业名称和阶段
- 如果项目没有职业列表,则不需要填写career_info字段
- 职业选择必须与角色的背景故事、能力特点和故事定位高度契合
- ⚠️ 重要:请填写职业的名称而非ID,系统会自动匹配
**重要格式要求:**
1. 只返回纯JSON格式,不要包含任何markdown标记、代码块标记或其他说明文字
2. JSON字符串值的内容描述中严禁使用任何特殊符号(包括中文引号、英文引号、方括号、书名号等)
@@ -781,7 +790,18 @@ class PromptService:
"joined_at": "加入时间(可选)",
"status": "active"
}}
]
],
"career_info": {{
"main_career_name": "从项目上下文的可用主职业列表中复制的职业名称",
"main_career_stage": 5,
"sub_careers": [
{{
"career_name": "从项目上下文的可用副职业列表中复制的职业名称",
"stage": 3
}}
]
}}
}}
**关系类型参考(请从中选择或自定义):**
@@ -947,6 +967,12 @@ class PromptService:
- 关系变化
- 关键行动和决策
- 成长或退步
- **💼 职业变化(重要 - 新增)**:
- 如果角色在本章有职业相关的进展或突破,请详细分析
- 主职业阶段变化: 是否晋级、突破或降级(用整数表示变化量,如: +1表示晋升一阶段,-1表示退步一阶段,0表示无变化)
- 副职业变化: 是否学习新的副职业或副职业有所精进
- 职业突破描述: 具体的突破过程、原因和标志性事件
- 注意:只有当章节中明确描述了职业相关的成长、突破或变化时才填写此项
### 6. 关键情节点 (Plot Points)
列出3-5个核心情节点:
@@ -1054,6 +1080,13 @@ class PromptService:
2. keyword必须是从章节原文中逐字复制的文本,长度8-25字
3. keyword用于在前端标注文本位置,所以必须能在原文中精确找到
4. 不要使用概括性语句或改写后的文字作为keyword
5. **职业变化字段说明**:
- career_changes是可选字段,只有当章节中明确描述了职业相关变化时才填写
- main_career_stage_change: 整数,表示主职业阶段变化量(+1=晋升一阶,-1=退步一阶,0=无变化)
- sub_career_changes: 数组,包含副职业的变化,每项包含career_name(职业名称)和stage_change(阶段变化量)
- new_careers: 数组,包含新获得的职业名称(如果有)
- career_breakthrough: 字符串,描述职业突破的具体过程和标志性事件
- 如果角色没有职业变化,可以不填写career_changes字段或设为空对象
只返回JSON,不要其他说明。"""
@@ -1533,6 +1566,7 @@ class PromptService:
3. 性格、背景要有深度和独特性
4. 外貌描写要具体生动
5. 特长和能力要符合角色定位
6. **如果【已有角色】中包含职业列表,必须为角色设定职业**(参考下方职业信息要求)
**关系建立指导(非常重要):**
- 仔细审视【已有角色】列表,思考新角色与哪些现有角色有联系
@@ -1546,6 +1580,15 @@ class PromptService:
2. JSON字符串值中严禁使用特殊符号(引号、方括号、书名号等)
3. 所有专有名词直接书写,不使用任何符号包裹
【职业信息要求(重要)】
如果【已有角色】部分包含"可用主职业列表""可用副职业列表",则必须:
- 仔细查看可用的主职业和副职业列表
- 根据角色的背景、能力、故事定位,选择最合适的职业
- 主职业:从"可用主职业列表"中选择一个,填写职业名称(name字段)
- 主职业阶段:根据职业的阶段信息和角色实力,设定合理的当前阶段
- 副职业:可选择0-2个副职业,每个包含职业名称和阶段
- ⚠️ 重要:必须填写职业的名称而非ID,系统会自动匹配
请严格按照以下JSON格式返回:
{{
"name": "角色姓名",
@@ -1574,7 +1617,18 @@ class PromptService:
"rank": 5,
"loyalty": 80
}}
]
],
"career_info": {{
"main_career_name": "从可用主职业列表中选择的职业名称",
"main_career_stage": 5,
"sub_careers": [
{{
"career_name": "从可用副职业列表中选择的职业名称",
"stage": 3
}}
]
}}
}}
**关系类型参考(从中选择或自定义):**
@@ -1605,6 +1659,85 @@ class PromptService:
只返回纯JSON对象,不要有```json```这样的标记。"""
# 职业体系生成提示词
CAREER_SYSTEM_GENERATION = """你是专业的游戏/小说职业体系设计师。请根据以下世界观信息,设计一个完整且合理的职业体系。
【项目信息】
- 书名:{title}
- 类型:{genre}
- 主题:{theme}
- 时间背景:{time_period}
- 地理位置:{location}
- 氛围基调:{atmosphere}
- 世界规则:{rules}
【设计要求】
1. **主职业(main_careers**
- 根据世界观特点,决定需要多少个主职业
- 主职业是角色的核心发展方向,直接影响战斗力或核心能力
- 必须严格符合世界观规则,体现核心能力体系
- 每个主职业的阶段数量可以不同:根据职业的复杂度、重要性、修炼难度等因素,为不同职业设定不同的max_stage
2. **副职业(sub_careers**
- 根据世界需要,决定需要多少个副职业
- 副职业包含生产、辅助、特殊技能类,丰富角色的能力维度
- 每个副职业的阶段数量可以不同:简单的副职业可能只有3-5个阶段,复杂的可能有6-10个阶段
- 不要让所有副职业都是相同的阶段数
3. **阶段设计(stages**
- 每个职业的stages数组长度必须等于max_stage
- 阶段名称要符合世界观文化背景和时代特征
- 阶段描述要体现明确的能力提升和成长路径
- 重要:确保职业间的阶段数量有差异,体现职业的多样性
【JSON格式】
{{
"main_careers": [
{{
"name": "职业名称",
"description": "职业描述(100-150字),说明职业特点和定位",
"category": "职业分类(如:战斗系、法术系、体修系等)",
"stages": [
{{"level": 1, "name": "阶段1名称", "description": "阶段描述"}},
{{"level": 2, "name": "阶段2名称", "description": "阶段描述"}},
...数组长度应等于max_stage...
],
"max_stage": 根据职业复杂度自行决定的整数,
"requirements": "职业要求和前置条件",
"special_abilities": "职业特殊能力和特色",
"worldview_rules": "与世界观规则的关联",
"attribute_bonuses": {{"strength": "+10%", "intelligence": "+5%"}}
}}
],
"sub_careers": [
{{
"name": "副职业名称",
"description": "职业描述(80-120字)",
"category": "生产系/辅助系/特殊系",
"stages": [
{{"level": 1, "name": "阶段1名称", "description": "阶段描述"}},
...数组长度应等于max_stage...
],
"max_stage": 根据职业特性自行决定的整数,
"requirements": "职业要求",
"special_abilities": "特殊能力"
}}
]
}}
【重要提示】
- 职业的数量、类型完全由你根据世界观自行决定,不要受任何数字限制
- **阶段数量多样性(关键)**
- 不同职业的max_stage必须不同,不要所有职业都是相同的阶段数
- 主职业的阶段数建议范围:5-15个阶段(根据职业重要性和复杂度灵活设定)
- 副职业的阶段数建议范围:3-10个阶段(根据职业特性灵活设定)
- 例如:剑修可能有12个阶段,炼丹师可能有8个阶段,体修可能有10个阶段
- 确保职业体系与世界观高度契合,符合该世界的逻辑和文化
- 只返回纯JSON,不要添加markdown标记或其他解释文字
请让每个职业的阶段数有所不同,体现职业的独特性和多样性!"""
@staticmethod
def format_prompt(template: str, **kwargs) -> str:
"""
@@ -2043,6 +2176,12 @@ class PromptService:
"description": "根据剧情需求自动生成新角色的完整设定",
"parameters": ["title", "genre", "theme", "time_period", "location", "atmosphere", "rules",
"existing_characters", "plot_context", "character_specification", "mcp_references"]
},
"CAREER_SYSTEM_GENERATION": {
"name": "职业体系生成",
"category": "世界构建",
"description": "根据世界观自动生成完整的职业体系,包括主职业和副职业",
"parameters": ["title", "genre", "theme", "time_period", "location", "atmosphere", "rules"]
}
}