feat: add NovelPage component with bookshelf, open book, and reading views

This commit is contained in:
2026-06-02 08:19:38 +08:00
parent 54e17c9795
commit 81b0d0ea1f
39 changed files with 8057 additions and 64 deletions

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,161 @@
{
"id": "6f4d68e5-f2cf-470d-a9f0-740c1403495f",
"projectId": "test-r1-72cd5b4b",
"status": "running",
"pipelineSnapshot": {
"workflowGoal": "设计一个单人角色:先绑定角色卡与世界书,再迭代整体美学与具体人设,写入世界书条目。",
"nodes": [
{
"id": "init",
"skillId": "studio.init_bind",
"displayName": "创建并绑定",
"enabled": true,
"niche": null,
"loopUntilSatisfied": false,
"config": {},
"displayParams": [
{
"key": "characterName",
"label": "角色卡名称",
"type": "text",
"required": true,
"placeholder": ""
},
{
"key": "worldbookName",
"label": "世界书名称",
"type": "text",
"required": true,
"placeholder": ""
}
],
"inputs": []
},
{
"id": "aesthetic",
"skillId": "studio.worldbook_entry",
"displayName": "整体美学",
"enabled": true,
"niche": "aesthetic_tone",
"loopUntilSatisfied": true,
"config": {
"stepGoal": "产出角色的整体美学设定:视觉风格、氛围、叙事基调,供后续人设步骤引用。",
"thinkingPrompt": "",
"insertion": {
"position": 1,
"activationType": "permanent",
"key": "整体美学",
"comment": "Studio · 整体美学"
},
"scoring": {
"enabled": true,
"dimensions": [
{
"id": "authenticity",
"name": "真实性",
"criteria": "美学设定是否自洽、可感知,而非空泛形容词堆砌。"
},
{
"id": "fit",
"name": "贴合度",
"criteria": "是否覆盖色调/材质/氛围/叙事基调;是否可与后续人设衔接;表述是否简洁可注入世界书。"
}
]
}
},
"displayParams": [],
"inputs": [
{
"ref": "workflow.goal",
"label": "工作流目标文本",
"optional": false
}
]
},
{
"id": "persona",
"skillId": "studio.worldbook_entry",
"displayName": "具体人设",
"enabled": true,
"niche": "persona_detail",
"loopUntilSatisfied": true,
"config": {
"stepGoal": "在整体美学基础上,写出可扮演的人设:性格、动机、口癖、关系与行为模式。",
"thinkingPrompt": "",
"insertion": {
"position": 1,
"activationType": "keyword",
"key": "具体人设",
"comment": "Studio · 具体人设"
},
"scoring": {
"enabled": true,
"dimensions": [
{
"id": "authenticity",
"name": "真实性",
"criteria": "人设细节是否具体、可扮演,动机与行为是否一致。"
},
{
"id": "fit",
"name": "贴合度",
"criteria": "是否与人设目标一致;是否与整体美学一致;是否避免与已有条目冲突。"
}
]
}
},
"displayParams": [],
"inputs": [
{
"ref": "workflow.goal",
"label": "工作流目标文本",
"optional": false
},
{
"ref": "aesthetic.output",
"label": "整体美学 · 上轮产物",
"optional": false
},
{
"ref": "persona.output",
"label": "具体人设 · 上轮产物",
"optional": true
}
]
}
]
},
"pipelineVersionNote": "2026-05-31T11:24:30.222456",
"currentNodeId": "init",
"nodeStates": [
{
"nodeId": "init",
"displayName": "创建并绑定",
"skillId": "studio.init_bind",
"status": "active",
"loopUntilSatisfied": false,
"lastDraft": null
},
{
"nodeId": "aesthetic",
"displayName": "整体美学",
"skillId": "studio.worldbook_entry",
"status": "pending",
"loopUntilSatisfied": true,
"lastDraft": null
},
{
"nodeId": "persona",
"displayName": "具体人设",
"skillId": "studio.worldbook_entry",
"status": "pending",
"loopUntilSatisfied": true,
"lastDraft": null
}
],
"workflowVariables": {
"workflow.goal": "设计一个单人角色:先绑定角色卡与世界书,再迭代整体美学与具体人设,写入世界书条目。"
},
"createdAt": "2026-05-31T11:24:30.222456",
"updatedAt": "2026-05-31T11:24:30.222456"
}

View File

@@ -0,0 +1,172 @@
{
"id": "c70b04fb-f793-4a5c-a687-56466aa95a4e",
"projectId": "test-r1-72cd5b4b",
"status": "running",
"pipelineSnapshot": {
"workflowGoal": "设计一个单人角色:先绑定角色卡与世界书,再迭代整体美学与具体人设,写入世界书条目。",
"nodes": [
{
"id": "init",
"skillId": "studio.init_bind",
"displayName": "创建并绑定",
"enabled": true,
"niche": null,
"loopUntilSatisfied": false,
"config": {},
"displayParams": [
{
"key": "characterName",
"label": "角色卡名称",
"type": "text",
"required": true,
"placeholder": ""
},
{
"key": "worldbookName",
"label": "世界书名称",
"type": "text",
"required": true,
"placeholder": ""
}
],
"inputs": []
},
{
"id": "aesthetic",
"skillId": "studio.worldbook_entry",
"displayName": "整体美学",
"enabled": true,
"niche": "aesthetic_tone",
"loopUntilSatisfied": true,
"config": {
"stepGoal": "产出角色的整体美学设定:视觉风格、氛围、叙事基调,供后续人设步骤引用。",
"thinkingPrompt": "",
"insertion": {
"position": 1,
"activationType": "permanent",
"key": "整体美学",
"comment": "Studio · 整体美学"
},
"scoring": {
"enabled": true,
"dimensions": [
{
"id": "authenticity",
"name": "真实性",
"criteria": "美学设定是否自洽、可感知,而非空泛形容词堆砌。"
},
{
"id": "fit",
"name": "贴合度",
"criteria": "是否覆盖色调/材质/氛围/叙事基调;是否可与后续人设衔接;表述是否简洁可注入世界书。"
}
]
}
},
"displayParams": [],
"inputs": [
{
"ref": "workflow.goal",
"label": "工作流目标文本",
"optional": false
}
]
},
{
"id": "persona",
"skillId": "studio.worldbook_entry",
"displayName": "具体人设",
"enabled": true,
"niche": "persona_detail",
"loopUntilSatisfied": true,
"config": {
"stepGoal": "在整体美学基础上,写出可扮演的人设:性格、动机、口癖、关系与行为模式。",
"thinkingPrompt": "",
"insertion": {
"position": 1,
"activationType": "keyword",
"key": "具体人设",
"comment": "Studio · 具体人设"
},
"scoring": {
"enabled": true,
"dimensions": [
{
"id": "authenticity",
"name": "真实性",
"criteria": "人设细节是否具体、可扮演,动机与行为是否一致。"
},
{
"id": "fit",
"name": "贴合度",
"criteria": "是否与人设目标一致;是否与整体美学一致;是否避免与已有条目冲突。"
}
]
}
},
"displayParams": [],
"inputs": [
{
"ref": "workflow.goal",
"label": "工作流目标文本",
"optional": false
},
{
"ref": "aesthetic.output",
"label": "整体美学 · 上轮产物",
"optional": false
},
{
"ref": "persona.output",
"label": "具体人设 · 上轮产物",
"optional": true
}
]
}
]
},
"pipelineVersionNote": "2026-05-31T14:58:54.643943",
"currentNodeId": "aesthetic",
"nodeStates": [
{
"nodeId": "init",
"displayName": "创建并绑定",
"skillId": "studio.init_bind",
"status": "completed",
"loopUntilSatisfied": false,
"lastDraft": {
"displayParams": {
"characterName": "测试角色6367da",
"worldbookName": "测试世界书8c09f9"
},
"characterId": "b0992d14-cb7c-4d81-b0af-7f7434710903",
"worldbookId": "e26e5d15-5b87-4693-aa47-f3021fbdc3d7",
"characterName": "测试角色6367da",
"worldbookName": "测试世界书8c09f9"
}
},
{
"nodeId": "aesthetic",
"displayName": "整体美学",
"skillId": "studio.worldbook_entry",
"status": "active",
"loopUntilSatisfied": true,
"lastDraft": null
},
{
"nodeId": "persona",
"displayName": "具体人设",
"skillId": "studio.worldbook_entry",
"status": "pending",
"loopUntilSatisfied": true,
"lastDraft": null
}
],
"workflowVariables": {
"workflow.goal": "设计一个单人角色:先绑定角色卡与世界书,再迭代整体美学与具体人设,写入世界书条目。",
"workflow.boundCharacter": "名称测试角色6367da\nIDb0992d14-cb7c-4d81-b0af-7f7434710903",
"workflow.boundWorldbook": "名称测试世界书8c09f9\nIDe26e5d15-5b87-4693-aa47-f3021fbdc3d7"
},
"createdAt": "2026-05-31T14:58:54.643943",
"updatedAt": "2026-05-31T14:58:54.659103"
}