@dayinxisheng/novel-tools 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.3.1] - 2026-03-11
9
+
10
+ ### Changed
11
+ - `check outline` 命令现在只检查主大纲,移除了卷级大纲和弧列表的检查
12
+ - `init` 命令生成的 `arc_list.yaml` 模板格式更新为 `volumes → arcs` 嵌套结构
13
+
14
+ ### Removed
15
+ - `check arc` 子命令
16
+ - `check volume` 子命令
17
+
8
18
  ## [0.3.0] - 2026-03-11
9
19
 
10
20
  ### Added
package/README.md CHANGED
@@ -13,8 +13,9 @@
13
13
  - **查询功能**:查询静态设定、人物信息、状态快照、人物关系、伏笔等
14
14
  - **事件管理**:追加事件、生成章节摘要、列出事件
15
15
  - **临时设定**:添加临时设定、审核队列、迁移到正式设定
16
- - **快照生成**:生成卷级/弧级状态快照
16
+ - **快照管理**:生成、列出、查看卷级/弧级状态快照
17
17
  - **一致性检查**:检查大纲、章节、弧、卷的一致性
18
+ - **风格分析**:从 JSONL 文件提取章节内容用于写作风格分析
18
19
 
19
20
  ## 安装
20
21
 
@@ -57,10 +58,34 @@ novel-tools init my-novel webnovel
57
58
  ### 查询设定
58
59
 
59
60
  ```bash
60
- novel-tools query world
61
+ # 查询静态设定
62
+ novel-tools query setting world
63
+ novel-tools query setting power_system
64
+
65
+ # 查询设定大纲(大章节列表目录)
66
+ novel-tools query setting world --outline
67
+
68
+ # 提取指定大章节内容
69
+ novel-tools query setting world --section "第一章"
70
+
71
+ # 查询人物信息
61
72
  novel-tools query character 张三
73
+
74
+ # 查询人物关系
62
75
  novel-tools query relationships 张三
76
+ novel-tools query relationships
77
+
78
+ # 查询伏笔(默认显示未解决)
63
79
  novel-tools query foreshadows
80
+
81
+ # 查询特定状态的伏笔
82
+ novel-tools query foreshadows --status resolved
83
+
84
+ # 查询当前状态快照
85
+ novel-tools query state
86
+
87
+ # 查询指定卷的状态快照
88
+ novel-tools query state --volume 1
64
89
  ```
65
90
 
66
91
  ### 事件管理
@@ -69,24 +94,24 @@ novel-tools query foreshadows
69
94
 
70
95
  ```bash
71
96
  # JSON 字符串
72
- novel-tools event append --chapter 1 --events '[{"type":"出场","character":"林风"}]'
97
+ novel-tools event append 1 --events '[{"type":"出场","character":"林风"}]'
73
98
 
74
99
  # 从文件
75
- novel-tools event append --chapter 1 --file events.json
100
+ novel-tools event append 1 --file events.json
76
101
 
77
102
  # 交互式
78
- novel-tools event append --chapter 1 --interactive
103
+ novel-tools event append 1 --interactive
79
104
 
80
105
  # 覆盖已存在的事件
81
- novel-tools event append --chapter 1 --events '[...]' --replace
106
+ novel-tools event append 1 --events '[...]' --replace
82
107
  ```
83
108
 
84
109
  #### 章节摘要
85
110
 
86
111
  ```bash
87
- novel-tools event summary --chapter 1 --output table
88
- novel-tools event summary --chapter 1 --output json
89
- novel-tools event summary --chapter 1 --output markdown
112
+ novel-tools event summary 1 --output table
113
+ novel-tools event summary 1 --output json
114
+ novel-tools event summary 1 --output markdown
90
115
  ```
91
116
 
92
117
  #### 列出事件
@@ -102,7 +127,7 @@ novel-tools event list --type 出场
102
127
  #### 添加临时设定
103
128
 
104
129
  ```bash
105
- # 添加人物
130
+ # 添加人物(--type、--name、--chapter 为必需参数)
106
131
  novel-tools temp-setting add --type character --name 林风 --chapter 5 --description "主要角色"
107
132
 
108
133
  # 添加物品
@@ -151,8 +176,40 @@ novel-tools check volume 1
151
176
  ### 生成快照
152
177
 
153
178
  ```bash
154
- novel-tools snapshot --volume 1
155
- novel-tools snapshot --arc "英雄之旅"
179
+ # 生成卷级快照
180
+ novel-tools snapshot generate --volume 1
181
+
182
+ # 生成弧级快照
183
+ novel-tools snapshot generate --arc "英雄之旅"
184
+
185
+ # 列出所有快照
186
+ novel-tools snapshot list
187
+
188
+ # 查看快照详情
189
+ novel-tools snapshot show vol1
190
+ novel-tools snapshot show "英雄之旅"
191
+ ```
192
+
193
+ ### 写作风格分析
194
+
195
+ ```bash
196
+ # 显示 JSONL 文件信息
197
+ novel-tools style info chapters.jsonl
198
+
199
+ # 提取章节内容用于风格分析
200
+ novel-tools style extract chapters.jsonl --output sample.md
201
+
202
+ # 提取指定数量章节
203
+ novel-tools style extract chapters.jsonl --count 20 --output sample.md
204
+
205
+ # 从指定章节开始提取
206
+ novel-tools style extract chapters.jsonl --start 10 --count 5
207
+
208
+ # 随机选择章节
209
+ novel-tools style extract chapters.jsonl --count 10 --random
210
+
211
+ # 输出纯文本格式
212
+ novel-tools style extract chapters.jsonl --format text
156
213
  ```
157
214
 
158
215
  ## 开发
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAiH5C"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CA2D5C"}
@@ -53,53 +53,6 @@ export function createCheckCommand() {
53
53
  process.exit(1);
54
54
  }
55
55
  });
56
- // 检查剧情弧
57
- cmd
58
- .command('arc')
59
- .argument('<name>', '弧名称')
60
- .option('-p, --path <path>', '项目路径')
61
- .action(async (arcName, options) => {
62
- try {
63
- const projectPath = await CliUtils.resolveProjectPath(options.path);
64
- const validateService = new ValidateService();
65
- CliUtils.title(`检查剧情弧: ${arcName}`);
66
- const result = await validateService.validateArc(projectPath, arcName);
67
- CliUtils.printValidationResult(result);
68
- if (!result.passed) {
69
- process.exit(1);
70
- }
71
- }
72
- catch (error) {
73
- CliUtils.error(error instanceof Error ? error.message : String(error));
74
- process.exit(1);
75
- }
76
- });
77
- // 检查卷
78
- cmd
79
- .command('volume')
80
- .argument('<number>', '卷号')
81
- .option('-p, --path <path>', '项目路径')
82
- .action(async (volumeStr, options) => {
83
- try {
84
- const projectPath = await CliUtils.resolveProjectPath(options.path);
85
- const validateService = new ValidateService();
86
- const volume = parseInt(volumeStr, 10);
87
- if (isNaN(volume) || volume < 1) {
88
- CliUtils.error('无效的卷号');
89
- process.exit(1);
90
- }
91
- CliUtils.title(`检查第 ${volume} 卷`);
92
- const result = await validateService.validateVolume(projectPath, volume);
93
- CliUtils.printValidationResult(result);
94
- if (!result.passed) {
95
- process.exit(1);
96
- }
97
- }
98
- catch (error) {
99
- CliUtils.error(error instanceof Error ? error.message : String(error));
100
- process.exit(1);
101
- }
102
- });
103
56
  return cmd;
104
57
  }
105
58
  //# sourceMappingURL=check.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAE7B,OAAO;IACP,GAAG;SACA,OAAO,CAAC,SAAS,CAAC;SAClB,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;YAE9C,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAEvB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAClE,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAEvC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;IACP,GAAG;SACA,OAAO,CAAC,SAAS,CAAC;SAClB,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;SAC3B,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,UAAkB,EAAE,OAAO,EAAE,EAAE;QAC5C,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAEzC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAClC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,QAAQ,CAAC,KAAK,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC;YAEnC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC3E,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAEvC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.service.d.ts","sourceRoot":"","sources":["../../src/services/init.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4B,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGzE;;GAEG;AACH,qBAAa,WAAW;IACtB;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiC1E;;OAEG;YACW,wBAAwB;IAWtC;;OAEG;YACW,mBAAmB;IAoBjC;;OAEG;YACW,4BAA4B;IAiB1C;;OAEG;YACW,mBAAmB;IA0CjC;;OAEG;YACW,yBAAyB;IAsCvC;;OAEG;YACW,2BAA2B;IA4BzC;;OAEG;YACW,yBAAyB;IA+CvC;;OAEG;YACW,qBAAqB;IAgBnC;;OAEG;YACW,gBAAgB;IAU9B;;OAEG;YACW,mBAAmB;CA6ClC"}
1
+ {"version":3,"file":"init.service.d.ts","sourceRoot":"","sources":["../../src/services/init.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4B,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGzE;;GAEG;AACH,qBAAa,WAAW;IACtB;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiC1E;;OAEG;YACW,wBAAwB;IAWtC;;OAEG;YACW,mBAAmB;IAoBjC;;OAEG;YACW,4BAA4B;IAiB1C;;OAEG;YACW,mBAAmB;IA0CjC;;OAEG;YACW,yBAAyB;IAsCvC;;OAEG;YACW,2BAA2B;IA4BzC;;OAEG;YACW,yBAAyB;IA+CvC;;OAEG;YACW,qBAAqB;IAgBnC;;OAEG;YACW,gBAAgB;IAU9B;;OAEG;YACW,mBAAmB;CA6ClC"}
@@ -1,5 +1,4 @@
1
1
  import { FileUtils } from '../core/file.js';
2
- import { YamlUtils } from '../core/yaml.js';
3
2
  import { STANDARD_DIRS, NOVEL_TYPES } from '../core/constants.js';
4
3
  import * as path from 'path';
5
4
  /**
@@ -239,18 +238,18 @@ export class InitService {
239
238
  * 创建弧列表模板
240
239
  */
241
240
  async createArcListTemplate(projectPath) {
242
- const arcListTemplate = {
243
- arcs: [
244
- {
245
- name: '开篇',
246
- startChapter: 1,
247
- endChapter: 10,
248
- theme: '引入主角,建立世界观',
249
- status: 'planning'
250
- }
251
- ]
252
- };
253
- await YamlUtils.writeFile(path.join(projectPath, 'outline', 'arc_list.yaml'), arcListTemplate);
241
+ const arcListTemplate = `# 弧列表
242
+
243
+ volumes:
244
+ - volume: 1
245
+ name: "第一卷名称"
246
+ arcs:
247
+ - arc: 1
248
+ name: "开篇"
249
+ chapters: "1-20"
250
+ summary: "引入主角,建立世界观,开启主线剧情"
251
+ `;
252
+ await FileUtils.writeText(path.join(projectPath, 'outline', 'arc_list.yaml'), arcListTemplate);
254
253
  }
255
254
  /**
256
255
  * 创建事件记录文件
@@ -1 +1 @@
1
- {"version":3,"file":"init.service.js","sourceRoot":"","sources":["../../src/services/init.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.service.js","sourceRoot":"","sources":["../../src/services/init.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B;;GAEG;AACH,MAAM,OAAO,WAAW;IACtB;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,OAAoB,EAAE,QAAgB;QACtD,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEnD,YAAY;QACZ,IAAI,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,UAAU,WAAW,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,WAAW;QACX,MAAM,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;QAEjD,SAAS;QACT,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAE/E,WAAW;QACX,MAAM,IAAI,CAAC,4BAA4B,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAEhE,UAAU;QACV,MAAM,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAE7D,UAAU;QACV,MAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QAE9C,WAAW;QACX,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAEzC,YAAY;QACZ,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAEvD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,wBAAwB,CAAC,WAAmB;QACxD,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAC5C,MAAM,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QAED,gBAAgB;QAChB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5E,MAAM,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAC/B,WAAmB,EACnB,SAAiB,EACjB,SAAoB,EACpB,WAAmB;QAEnB,MAAM,MAAM,GAAkB;YAC5B,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,YAAY,EAAE,WAAW;YACzB,aAAa,EAAE,CAAC;YAChB,cAAc,EAAE,CAAC;YACjB,eAAe,EAAE,CAAC;SACnB,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAC1D,MAAM,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,4BAA4B,CAAC,WAAmB,EAAE,SAAoB;QAClF,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE/D,WAAW;QACX,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAE1C,aAAa;QACb,IAAI,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAAC,SAAiB;QACjD,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCzB,CAAC;QAEE,MAAM,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;IAC7E,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,yBAAyB,CAAC,SAAiB;QACvD,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCzB,CAAC;QAEE,MAAM,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,aAAa,CAAC,CAAC;IACpF,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,2BAA2B,CAAC,SAAiB;QACzD,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBvB,CAAC;QAEE,MAAM,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,EAAE,WAAW,CAAC,CAAC;IACpF,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,yBAAyB,CAAC,WAAmB,EAAE,SAAiB;QAC5E,MAAM,cAAc,GAAG,KAAK,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCxC,CAAC;QAEE,MAAM,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,iBAAiB,CAAC,EAAE,cAAc,CAAC,CAAC;IAClG,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB,CAAC,WAAmB;QACrD,MAAM,eAAe,GAAG;;;;;;;;;;CAU3B,CAAC;QAEE,MAAM,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,eAAe,CAAC,CAAC;IACjG,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,WAAmB;QAChD,MAAM,cAAc,GAAG;YACrB,WAAW,EAAE,UAAU;YACvB,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAC1F,MAAM,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAAC,WAAmB,EAAE,SAAiB;QACtE,MAAM,aAAa,GAAG,KAAK,SAAS;;;;aAI3B,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoClD,CAAC;QAEE,MAAM,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,CAAC;IAChF,CAAC;CACF"}
@@ -4,33 +4,25 @@ import { ValidationResult } from '../core/types.js';
4
4
  */
5
5
  export declare class ValidateService {
6
6
  /**
7
- * 验证大纲完整性
7
+ * 查找章纲文件(递归搜索所有卷目录)
8
8
  */
9
- validateOutline(projectPath: string): Promise<ValidationResult>;
9
+ private findChapterPlan;
10
10
  /**
11
- * 验证章节
11
+ * 查找草稿文件(递归搜索所有卷目录)
12
12
  */
13
- validateChapter(projectPath: string, chapter: number): Promise<ValidationResult>;
13
+ private findChapterDraft;
14
14
  /**
15
- * 验证剧情弧
15
+ * 验证大纲完整性
16
16
  */
17
- validateArc(projectPath: string, arcName: string): Promise<ValidationResult>;
17
+ validateOutline(projectPath: string): Promise<ValidationResult>;
18
18
  /**
19
- * 验证卷
19
+ * 验证章节
20
20
  */
21
- validateVolume(projectPath: string, volume: number): Promise<ValidationResult>;
21
+ validateChapter(projectPath: string, chapter: number): Promise<ValidationResult>;
22
22
  /**
23
23
  * 检查大纲文件
24
24
  */
25
25
  private checkOutlineFile;
26
- /**
27
- * 检查卷级大纲文件
28
- */
29
- private checkVolumeFiles;
30
- /**
31
- * 检查弧列表
32
- */
33
- private checkArcList;
34
26
  /**
35
27
  * 检查章节规划
36
28
  */
@@ -1 +1 @@
1
- {"version":3,"file":"validate.service.d.ts","sourceRoot":"","sources":["../../src/services/validate.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAe,MAAM,kBAAkB,CAAC;AAGjE;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoBrE;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmCtF;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyDlF;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwDpF;;OAEG;YACW,gBAAgB;IAyB9B;;OAEG;YACW,gBAAgB;IAyB9B;;OAEG;YACW,YAAY;IAgC1B;;OAEG;YACW,gBAAgB;IAoB9B;;OAEG;YACW,iBAAiB;CAmBhC"}
1
+ {"version":3,"file":"validate.service.d.ts","sourceRoot":"","sources":["../../src/services/validate.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAe,MAAM,kBAAkB,CAAC;AAGjE;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;YACW,eAAe;IAM7B;;OAEG;YACW,gBAAgB;IAK9B;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAarE;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmCtF;;OAEG;YACW,gBAAgB;IAyB9B;;OAEG;YACW,gBAAgB;IAwB9B;;OAEG;YACW,iBAAiB;CAuBhC"}
@@ -1,10 +1,25 @@
1
1
  import { FileUtils } from '../core/file.js';
2
- import { YamlUtils } from '../core/yaml.js';
3
2
  import * as path from 'path';
4
3
  /**
5
4
  * 验证服务类
6
5
  */
7
6
  export class ValidateService {
7
+ /**
8
+ * 查找章纲文件(递归搜索所有卷目录)
9
+ */
10
+ async findChapterPlan(projectPath, chapter) {
11
+ const pattern = `**/ch${String(chapter).padStart(3, '0')}.md`;
12
+ const files = await FileUtils.globFiles(path.join(projectPath, 'chapter_plans'), pattern);
13
+ return files.length > 0 ? files[0] : null;
14
+ }
15
+ /**
16
+ * 查找草稿文件(递归搜索所有卷目录)
17
+ */
18
+ async findChapterDraft(projectPath, chapter) {
19
+ const pattern = `**/ch${String(chapter).padStart(3, '0')}.md`;
20
+ const files = await FileUtils.globFiles(path.join(projectPath, 'drafts'), pattern);
21
+ return files.length > 0 ? files[0] : null;
22
+ }
8
23
  /**
9
24
  * 验证大纲完整性
10
25
  */
@@ -14,11 +29,6 @@ export class ValidateService {
14
29
  // 检查主大纲
15
30
  const mainOutline = path.join(outlineDir, 'main_outline.md');
16
31
  result.checks.push(await this.checkOutlineFile(mainOutline, '主大纲'));
17
- // 检查卷级大纲
18
- result.checks.push(await this.checkVolumeFiles(outlineDir));
19
- // 检查弧列表
20
- const arcPath = path.join(outlineDir, 'arc_list.yaml');
21
- result.checks.push(await this.checkArcList(arcPath));
22
32
  result.passed = result.checks.every(c => c.passed);
23
33
  return result;
24
34
  }
@@ -27,11 +37,11 @@ export class ValidateService {
27
37
  */
28
38
  async validateChapter(projectPath, chapter) {
29
39
  const result = { passed: true, checks: [] };
30
- // 检查章纲
31
- const planPath = path.join(projectPath, 'chapter_plans', `chapter_${chapter}.md`);
40
+ // 查找并检查章纲
41
+ const planPath = await this.findChapterPlan(projectPath, chapter);
32
42
  result.checks.push(await this.checkChapterPlan(planPath, chapter));
33
- // 检查草稿
34
- const draftPath = path.join(projectPath, 'drafts', `chapter_${chapter}.md`);
43
+ // 查找并检查草稿
44
+ const draftPath = await this.findChapterDraft(projectPath, chapter);
35
45
  result.checks.push(await this.checkChapterDraft(draftPath, chapter));
36
46
  // 检查事件记录
37
47
  const { EventService } = await import('./event.service.js');
@@ -54,116 +64,6 @@ export class ValidateService {
54
64
  result.passed = result.checks.every(c => c.passed);
55
65
  return result;
56
66
  }
57
- /**
58
- * 验证剧情弧
59
- */
60
- async validateArc(projectPath, arcName) {
61
- const result = { passed: true, checks: [] };
62
- // 检查弧大纲
63
- const arcOutlinePath = path.join(projectPath, 'outline', `arc_${arcName}.md`);
64
- if (!FileUtils.exists(arcOutlinePath)) {
65
- result.checks.push({
66
- name: '弧大纲',
67
- passed: false,
68
- issues: [`未找到弧大纲: ${arcOutlinePath}`]
69
- });
70
- }
71
- else {
72
- result.checks.push({
73
- name: '弧大纲',
74
- passed: true,
75
- issues: []
76
- });
77
- }
78
- // 检查弧内的章节
79
- const arcConfigPath = path.join(projectPath, 'outline', 'arc_list.yaml');
80
- const arcConfig = await YamlUtils.parseFile(arcConfigPath);
81
- if (arcConfig && arcConfig.arcs) {
82
- const arc = arcConfig.arcs.find((a) => a.name === arcName);
83
- if (arc) {
84
- const { startChapter, endChapter } = arc;
85
- const missingChapters = [];
86
- for (let ch = startChapter; ch <= endChapter; ch++) {
87
- const planPath = path.join(projectPath, 'chapter_plans', `chapter_${ch}.md`);
88
- if (!FileUtils.exists(planPath)) {
89
- missingChapters.push(ch);
90
- }
91
- }
92
- if (missingChapters.length > 0) {
93
- result.checks.push({
94
- name: '章节完整性',
95
- passed: false,
96
- issues: [`缺少章纲: ${missingChapters.join(', ')}`]
97
- });
98
- }
99
- else {
100
- result.checks.push({
101
- name: '章节完整性',
102
- passed: true,
103
- issues: []
104
- });
105
- }
106
- }
107
- }
108
- result.passed = result.checks.every(c => c.passed);
109
- return result;
110
- }
111
- /**
112
- * 验证卷
113
- */
114
- async validateVolume(projectPath, volume) {
115
- const result = { passed: true, checks: [] };
116
- // 检查卷大纲
117
- const volumeOutlinePath = path.join(projectPath, 'outline', `vol${volume}.md`);
118
- if (!FileUtils.exists(volumeOutlinePath)) {
119
- result.checks.push({
120
- name: '卷大纲',
121
- passed: false,
122
- issues: [`未找到卷大纲: ${volumeOutlinePath}`]
123
- });
124
- }
125
- else {
126
- result.checks.push({
127
- name: '卷大纲',
128
- passed: true,
129
- issues: []
130
- });
131
- }
132
- // 检查卷快照
133
- const snapshotPath = path.join(projectPath, 'settings', 'state', `vol${volume}_snapshot.yaml`);
134
- if (!FileUtils.exists(snapshotPath)) {
135
- result.checks.push({
136
- name: '卷快照',
137
- passed: false,
138
- issues: [`未找到第 ${volume} 卷的状态快照`]
139
- });
140
- }
141
- else {
142
- result.checks.push({
143
- name: '卷快照',
144
- passed: true,
145
- issues: []
146
- });
147
- }
148
- // 检查卷事件归档
149
- const volEventsPath = path.join(projectPath, 'settings', 'events', `vol${volume}`, 'events.json');
150
- if (!FileUtils.exists(volEventsPath)) {
151
- result.checks.push({
152
- name: '卷事件归档',
153
- passed: false,
154
- issues: [`未找到第 ${volume} 卷的事件归档`]
155
- });
156
- }
157
- else {
158
- result.checks.push({
159
- name: '卷事件归档',
160
- passed: true,
161
- issues: []
162
- });
163
- }
164
- result.passed = result.checks.every(c => c.passed);
165
- return result;
166
- }
167
67
  /**
168
68
  * 检查大纲文件
169
69
  */
@@ -186,64 +86,14 @@ export class ValidateService {
186
86
  }
187
87
  return { name, passed: issues.length === 0, issues };
188
88
  }
189
- /**
190
- * 检查卷级大纲文件
191
- */
192
- async checkVolumeFiles(outlineDir) {
193
- const issues = [];
194
- const volumeFiles = await FileUtils.globFiles(outlineDir, 'vol*.md');
195
- volumeFiles.push(...await FileUtils.globFiles(outlineDir, '第*卷*.md'));
196
- if (volumeFiles.length === 0) {
197
- return { name: '卷级大纲', passed: false, issues: ['未找到卷级大纲文件'] };
198
- }
199
- for (const volFile of volumeFiles) {
200
- const content = await FileUtils.readText(volFile);
201
- if (!content.includes('主题') && !content.includes('本卷定位')) {
202
- issues.push(`${path.basename(volFile)}: 缺少主题说明`);
203
- }
204
- if (!content.includes('弧') && !content.includes('章节')) {
205
- issues.push(`${path.basename(volFile)}: 缺少剧情弧或章节划分`);
206
- }
207
- }
208
- return { name: '卷级大纲', passed: issues.length === 0, issues };
209
- }
210
- /**
211
- * 检查弧列表
212
- */
213
- async checkArcList(arcPath) {
214
- const issues = [];
215
- if (!FileUtils.exists(arcPath)) {
216
- return { name: '弧列表', passed: false, issues: [`弧列表文件不存在: ${arcPath}`] };
217
- }
218
- const arcData = await YamlUtils.parseFile(arcPath);
219
- if (!arcData || !arcData.arcs || !Array.isArray(arcData.arcs)) {
220
- issues.push('弧列表格式不正确,缺少 arcs 数组');
221
- }
222
- else if (arcData.arcs.length === 0) {
223
- issues.push('弧列表为空');
224
- }
225
- else {
226
- // 检查每个弧的结构
227
- for (let i = 0; i < arcData.arcs.length; i++) {
228
- const arc = arcData.arcs[i];
229
- if (!arc.name) {
230
- issues.push(`弧 #${i + 1}: 缺少名称`);
231
- }
232
- if (arc.startChapter === undefined || arc.endChapter === undefined) {
233
- issues.push(`弧 #${i + 1}: 缺少章节范围`);
234
- }
235
- if (arc.startChapter > arc.endChapter) {
236
- issues.push(`弧 #${i + 1}: 起始章节大于结束章节`);
237
- }
238
- }
239
- }
240
- return { name: '弧列表', passed: issues.length === 0, issues };
241
- }
242
89
  /**
243
90
  * 检查章节规划
244
91
  */
245
92
  async checkChapterPlan(planPath, chapter) {
246
93
  const issues = [];
94
+ if (!planPath) {
95
+ return { name: '章纲', passed: false, issues: [`第 ${chapter} 章章纲不存在`] };
96
+ }
247
97
  if (!FileUtils.exists(planPath)) {
248
98
  return { name: '章纲', passed: false, issues: [`第 ${chapter} 章章纲不存在: ${planPath}`] };
249
99
  }
@@ -261,6 +111,9 @@ export class ValidateService {
261
111
  */
262
112
  async checkChapterDraft(draftPath, chapter) {
263
113
  const issues = [];
114
+ if (!draftPath) {
115
+ return { name: '草稿', passed: false, issues: [`第 ${chapter} 章草稿不存在`] };
116
+ }
264
117
  if (!FileUtils.exists(draftPath)) {
265
118
  return {
266
119
  name: '草稿',
@@ -1 +1 @@
1
- {"version":3,"file":"validate.service.js","sourceRoot":"","sources":["../../src/services/validate.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.service.js","sourceRoot":"","sources":["../../src/services/validate.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dayinxisheng/novel-tools",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "小说创作辅助工具集 - TypeScript 实现",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",