{chapters.length === 0 ? (
) : (
@@ -933,6 +948,7 @@ export default function Chapters() {
dataSource={group.chapters}
renderItem={(item) => (
}
title={
-
-
+
+
第{item.chapter_number}章:{item.title}
- {getStatusText(item.status)}
-
- {renderAnalysisStatus(item.id)}
- {item.expansion_plan && (
-
- } color="blue">
- 已展开
-
-
- )}
- {!canGenerateChapter(item) && (
-
- } color="warning">
- 需前置章节
-
-
- )}
- {item.expansion_plan && (
-
- {
- e.stopPropagation();
- showExpansionPlanModal(item);
- }}
- />
-
- )}
+
+ {getStatusText(item.status)}
+
+ {renderAnalysisStatus(item.id)}
+ {item.expansion_plan && (
+
+ } color="blue">
+ 已展开
+
+
+ )}
+ {!canGenerateChapter(item) && (
+
+ } color="warning">
+ 需前置章节
+
+
+ )}
+ {item.expansion_plan && (
+
+ {
+ e.stopPropagation();
+ showExpansionPlanModal(item);
+ }}
+ />
+
+ )}
+
}
description={
@@ -1630,6 +1654,21 @@ export default function Chapters() {
progress={singleChapterProgress}
message={singleChapterProgressMessage}
/>
+
+ }
+ type="primary"
+ tooltip="章节目录"
+ onClick={() => setIsIndexPanelVisible(true)}
+ style={{ right: isMobile ? 24 : 48, bottom: isMobile ? 80 : 48 }}
+ />
+
+ setIsIndexPanelVisible(false)}
+ groupedChapters={groupedChapters}
+ onChapterSelect={handleChapterSelect}
+ />
);
}
\ No newline at end of file
diff --git a/frontend/src/pages/ProjectWizardNew.tsx b/frontend/src/pages/ProjectWizardNew.tsx
index e0946a8..a986fac 100644
--- a/frontend/src/pages/ProjectWizardNew.tsx
+++ b/frontend/src/pages/ProjectWizardNew.tsx
@@ -140,7 +140,7 @@ export default function ProjectWizardNew() {
await wizardStreamApi.generateCompleteOutlineStream(
{
project_id: createdProjectId,
- chapter_count: 5, // 开局5章
+ chapter_count: 3, // 生成3个大纲节点(不展开)
narrative_perspective: values.narrative_perspective,
target_words: values.target_words,
},
@@ -190,7 +190,7 @@ export default function ProjectWizardNew() {
创建新项目
- 填写基本信息后,AI将自动为您生成世界观、角色和开局大纲
+ 填写基本信息后,AI将自动为您生成世界观、角色和大纲节点(大纲可在项目内手动展开为章节)