@whispering233/ai-editor-server 0.0.52 → 0.0.54

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.
Files changed (86) hide show
  1. package/client-dist/assets/{index-Dim9IXQC.css → index-B2op0r9o.css} +1 -1
  2. package/client-dist/assets/index-Bgk8dcAm.js +627 -0
  3. package/client-dist/index.html +2 -2
  4. package/dist/backup.d.ts +37 -44
  5. package/dist/backup.d.ts.map +1 -1
  6. package/dist/backup.js +55 -201
  7. package/dist/backup.js.map +1 -1
  8. package/dist/cloud/auto-push.d.ts +3 -3
  9. package/dist/cloud/auto-push.d.ts.map +1 -1
  10. package/dist/cloud/auto-push.js +7 -6
  11. package/dist/cloud/auto-push.js.map +1 -1
  12. package/dist/cloud/state.d.ts +6 -0
  13. package/dist/cloud/state.d.ts.map +1 -1
  14. package/dist/cloud/state.js +25 -0
  15. package/dist/cloud/state.js.map +1 -1
  16. package/dist/cloud/sync.d.ts +4 -6
  17. package/dist/cloud/sync.d.ts.map +1 -1
  18. package/dist/cloud/sync.js +8 -23
  19. package/dist/cloud/sync.js.map +1 -1
  20. package/dist/decompose/batching.d.ts +20 -0
  21. package/dist/decompose/batching.d.ts.map +1 -0
  22. package/dist/decompose/batching.js +29 -0
  23. package/dist/decompose/batching.js.map +1 -0
  24. package/dist/decompose/extract.d.ts +44 -0
  25. package/dist/decompose/extract.d.ts.map +1 -0
  26. package/dist/decompose/extract.js +246 -0
  27. package/dist/decompose/extract.js.map +1 -0
  28. package/dist/decompose/job.d.ts +91 -0
  29. package/dist/decompose/job.d.ts.map +1 -0
  30. package/dist/decompose/job.js +289 -0
  31. package/dist/decompose/job.js.map +1 -0
  32. package/dist/decompose/llm.d.ts +68 -0
  33. package/dist/decompose/llm.d.ts.map +1 -0
  34. package/dist/decompose/llm.js +181 -0
  35. package/dist/decompose/llm.js.map +1 -0
  36. package/dist/decompose/merge-write.d.ts +75 -0
  37. package/dist/decompose/merge-write.d.ts.map +1 -0
  38. package/dist/decompose/merge-write.js +670 -0
  39. package/dist/decompose/merge-write.js.map +1 -0
  40. package/dist/decompose/merge.d.ts +156 -0
  41. package/dist/decompose/merge.d.ts.map +1 -0
  42. package/dist/decompose/merge.js +266 -0
  43. package/dist/decompose/merge.js.map +1 -0
  44. package/dist/decompose/report.d.ts +57 -0
  45. package/dist/decompose/report.d.ts.map +1 -0
  46. package/dist/decompose/report.js +127 -0
  47. package/dist/decompose/report.js.map +1 -0
  48. package/dist/decompose/runner.d.ts +143 -0
  49. package/dist/decompose/runner.d.ts.map +1 -0
  50. package/dist/decompose/runner.js +520 -0
  51. package/dist/decompose/runner.js.map +1 -0
  52. package/dist/decompose/split.d.ts +89 -0
  53. package/dist/decompose/split.d.ts.map +1 -0
  54. package/dist/decompose/split.js +556 -0
  55. package/dist/decompose/split.js.map +1 -0
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +4 -0
  58. package/dist/index.js.map +1 -1
  59. package/dist/last-project.d.ts +5 -0
  60. package/dist/last-project.d.ts.map +1 -1
  61. package/dist/last-project.js +18 -0
  62. package/dist/last-project.js.map +1 -1
  63. package/dist/middleware/error.d.ts +1 -1
  64. package/dist/middleware/error.d.ts.map +1 -1
  65. package/dist/middleware/error.js +9 -0
  66. package/dist/middleware/error.js.map +1 -1
  67. package/dist/middleware/project.d.ts +4 -3
  68. package/dist/middleware/project.d.ts.map +1 -1
  69. package/dist/middleware/project.js +40 -2
  70. package/dist/middleware/project.js.map +1 -1
  71. package/dist/routes/chat.d.ts.map +1 -1
  72. package/dist/routes/chat.js +28 -3
  73. package/dist/routes/chat.js.map +1 -1
  74. package/dist/routes/cloud.d.ts.map +1 -1
  75. package/dist/routes/cloud.js +168 -11
  76. package/dist/routes/cloud.js.map +1 -1
  77. package/dist/routes/decompose.d.ts +26 -0
  78. package/dist/routes/decompose.d.ts.map +1 -0
  79. package/dist/routes/decompose.js +453 -0
  80. package/dist/routes/decompose.js.map +1 -0
  81. package/dist/routes/project.d.ts +22 -0
  82. package/dist/routes/project.d.ts.map +1 -1
  83. package/dist/routes/project.js +143 -9
  84. package/dist/routes/project.js.map +1 -1
  85. package/package.json +5 -5
  86. package/client-dist/assets/index-JrTZv8BF.js +0 -621
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-write.js","sourceRoot":"","sources":["../../src/decompose/merge-write.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ import type { DecomposeBatchResult } from "@whispering233/ai-editor-shared";
2
+ /** 落库阈值:人物与关系要求跨章出现 ≥ 该章数(单章出现的路人/一次性互动只进报告,§5) */
3
+ export declare const DECOMPOSE_MENTION_MIN_CHAPTERS = 2;
4
+ /** 别名组名字数上限(超过多半是把不同实体错并成一个,保守丢弃) */
5
+ export declare const DECOMPOSE_ALIAS_GROUP_MAX = 4;
6
+ /** 别名组名字数下限(单名组成立不了合并) */
7
+ export declare const DECOMPOSE_ALIAS_GROUP_MIN_NAMES = 2;
8
+ /** 别名归并候选条数上限:候选按提及次数截断 top,超出部分不参与合并(§6 第 2 层) */
9
+ export declare const DECOMPOSE_ALIAS_CANDIDATE_MAX = 60;
10
+ /** 抽取实体类别(正文能可靠支撑的三类;伏笔/事件/时间点/参考资料不参与拆解) */
11
+ export type DecomposeEntityKind = "character" | "setting" | "location";
12
+ /** 归并后的实体候选(第 1 层产物 = 别名归并的输入候选) */
13
+ export interface MergedEntityCandidate {
14
+ type: DecomposeEntityKind;
15
+ /** 归一化后的规范名 */
16
+ name: string;
17
+ /** 出现章序(升序、去重) */
18
+ chapters: number[];
19
+ }
20
+ /** 归并后的关系候选(对称关系已方向归一) */
21
+ export interface MergedRelationCandidate {
22
+ source: string;
23
+ target: string;
24
+ type: string;
25
+ chapters: number[];
26
+ }
27
+ export interface MergeOutcome {
28
+ entities: MergedEntityCandidate[];
29
+ relations: MergedRelationCandidate[];
30
+ /** 未达阈值的线索(§6.2 第 6 段)与悬空关系:报告里透明化,不落库 */
31
+ filtered: {
32
+ characters: MergedEntityCandidate[];
33
+ relations: MergedRelationCandidate[];
34
+ };
35
+ }
36
+ /** 四步管线的前两步产物:已去重 / 已应用别名组,但尚未过阈值、尚未滤悬空边 */
37
+ export interface MergedCandidateSet {
38
+ entities: MergedEntityCandidate[];
39
+ relations: MergedRelationCandidate[];
40
+ }
41
+ /** 别名归并候选(§6 第 2 层输入:规范名 + 出现章数 + 首次出现章 + 短摘要;LLM 只看到这份清单,看不到原文) */
42
+ export interface AliasCandidate {
43
+ name: string;
44
+ chapterCount: number;
45
+ firstChapter: number;
46
+ /** 短摘要 = 该人物出现章里最完整的一条 `description`(截断):LLM 判别名组的依据 */
47
+ summary: string;
48
+ }
49
+ /** 别名组(§6 第 2 层输出:规范名 + 别名列表;规范名必须是候选集合里的名字) */
50
+ export interface AliasGroup {
51
+ canonical: string;
52
+ aliases: readonly string[];
53
+ }
54
+ export interface AliasValidation {
55
+ accepted: AliasGroup[];
56
+ /** 被硬校验丢弃的组(保守原则:不确定就不合并,不做部分接受) */
57
+ rejected: Array<{
58
+ group: AliasGroup;
59
+ reason: string;
60
+ }>;
61
+ }
62
+ /**
63
+ * 名字归一化(**单一来源**):trim + 折叠空白(含全角空格 U+3000)为单个半角空格。
64
+ * 这是「同名同类型 → 同一实体」的比较基准,S2 的关系端点存在性校验与 S3 的实体去重必须同口径。
65
+ */
66
+ export declare function normalizeEntityName(name: string): string;
67
+ /**
68
+ * 第 1 步 · 去重(零 LLM 成本;**此步不设阈值**——阈值要等别名归并后才有意义,别名合并会把章节集合变大)。
69
+ * - 实体:名字归一化后「同名同类型 → 同一实体」(人物 / 设定 / 地点各自成集);
70
+ * - 关系:按 `(source, target, relation_type)` 去重 + 对称关系方向归一。
71
+ */
72
+ export declare function dedupeCandidates(results: readonly DecomposeBatchResult[]): MergedCandidateSet;
73
+ /**
74
+ * 第 2 步 · 应用别名归并(§6 第 2 层的输出):别名 → 规范名映射;合并章节集合(并集);
75
+ * **关系端点同步重映射**并重新去重(重映射后原本分开的两枚关系可能变成同一枚);丢弃自环关系。
76
+ * 只并人物——设定 / 地点只走第 1 步(§6 第 2 层的保守原则)。
77
+ */
78
+ export declare function applyAliasGroups(candidates: MergedCandidateSet, groups: readonly AliasGroup[]): MergedCandidateSet;
79
+ /**
80
+ * 第 3 步 · 阈值:人物与关系要求跨章出现 ≥ DECOMPOSE_MENTION_MIN_CHAPTERS,未达者进 `filtered`
81
+ * (报告里透明化,§6.2 第 6 段);设定与地点不设阈值——一次出现也可能是重要宝物/剑法,
82
+ * 靠提示词约束「只抽对剧情有影响的」。
83
+ */
84
+ export declare function applyMentionThreshold(candidates: MergedCandidateSet): MergeOutcome;
85
+ /**
86
+ * 第 4 步 · 悬空关系过滤:两端都必须落在**落库实体集合**内,否则丢弃并计入 `filtered`——
87
+ * 既防模型幻觉出不存在的人物,也防阈值滤掉端点后留下悬空边。
88
+ */
89
+ export declare function filterDanglingRelations(outcome: MergeOutcome): MergeOutcome;
90
+ /**
91
+ * S3 第 1 层:四步**有序**纯管线——顺序不可交换(§6):
92
+ * ① 去重(不设阈值)→ ② 应用别名组(关系端点重映射 + 重新去重 + 丢自环)→ ③ 阈值 → ④ 悬空关系过滤。
93
+ * 阈值必须排在别名归并之后(合并会放大章节集合,否则两个单章名会被错杀);
94
+ * 悬空过滤必须排在阈值之后(阈值会滤掉端点,否则留下指向不存在实体的边)。
95
+ */
96
+ export declare function mergeCandidates(results: readonly DecomposeBatchResult[], aliasGroups?: readonly AliasGroup[]): MergeOutcome;
97
+ /**
98
+ * 候选按提及次数(跨章数)降序截断 top DECOMPOSE_ALIAS_CANDIDATE_MAX——超出部分不参与合并。
99
+ * 同提及次数保持入参顺序(`Array.prototype.sort` 稳定)⇒ 同一份输入两次调用结果一致。
100
+ */
101
+ export declare function selectAliasCandidates(candidates: readonly AliasCandidate[]): AliasCandidate[];
102
+ /**
103
+ * 别名组硬校验(§6 第 2 层)。四道闸门全过才接受:
104
+ * ① 组内每个名字(含规范名)必须已存在于候选集合——禁止发明新名字,且候选集合已按
105
+ * DECOMPOSE_ALIAS_CANDIDATE_MAX 截断(被截断的名字视为不存在);
106
+ * ② 名字不得跨组重复(一个名字只能进一组);
107
+ * ③ 组内有效名字数 ∈ [DECOMPOSE_ALIAS_GROUP_MIN_NAMES, DECOMPOSE_ALIAS_GROUP_MAX];
108
+ * ④ 比较前先按 normalizeEntityName 归一(与实体去重同口径)。
109
+ */
110
+ export declare function validateAliasGroups(groups: readonly AliasGroup[], candidates: readonly AliasCandidate[]): AliasValidation;
111
+ export type MergeWriteAction = "create" | "reuse" | "keep-user-edited" | "soft-delete" | "keep-and-report";
112
+ /** 新产物(归并算出的应写入项,尚未落库) */
113
+ export interface MergeWriteProduct {
114
+ /** 归并身份(实体 = `${type}:${归一化 name}`;关系 = 归一化端点与类型拼出的稳定文本) */
115
+ key: string;
116
+ /** 库内同身份行的 id(调用方在库内快照里按身份解析;库内无 → null = 全新) */
117
+ id: string | null;
118
+ }
119
+ /** `decompose_jobs.merge_written` 项(JSON 形状,字段名与库列同口径) */
120
+ export interface MergeWrittenEntry {
121
+ id: string;
122
+ type: string;
123
+ updated_at: string;
124
+ }
125
+ /** 库内快照行(entities / relation_records 的投影:id + 类型 + 版本戳 + 软删标记) */
126
+ export interface MergeSnapshotRow {
127
+ id: string;
128
+ type: string;
129
+ updated_at: string;
130
+ deleted_at: string | null;
131
+ }
132
+ export interface MergeWritePlanItem {
133
+ action: MergeWriteAction;
134
+ /** 目标库行 id(`create` = 尚无行 → null) */
135
+ id: string | null;
136
+ /** 归并身份(来自新产物;清单残留侧没有身份 → null) */
137
+ key: string | null;
138
+ }
139
+ /**
140
+ * 三路比对:新产物 × 库内快照 × 记录面 → 写入计划(不改 db)。
141
+ * 记录面有两条(§6.1):`written` = **本 job 清单**(软删面:只有本 job 写过的行才允许软删)与
142
+ * `baseline` = **历史全部 job 的 `merge_written` 并集**(跨轮面:复用与增量更新的比对基准)。
143
+ *
144
+ * 判据:`updated_at` 与记录值一致 ⇒ 这条行还是上一轮写的(可复用 + 增量更新);
145
+ * 变了 ⇒ 用户手工编辑过(**用户编辑优先**:不覆盖、不软删,只在报告里提示)。
146
+ * **库内同身份行存在但没有记录**(用户手工建的)⇒ 复用该行、内容不动:`createEntity` 无同名守卫,
147
+ * 再 create 会建出重复行;关系的 `createRelation` 对同 `(source, target, type)` 直接抛 `RELATION_EXISTS`,
148
+ * 而 S3 落库与清单写在同一事务 ⇒ 会打挂整轮 S3。
149
+ * **跨轮条目**(baseline 有、本 job 清单没有):新产物没有 ⇒ 不进计划(不软删——续拆不是全量重算);
150
+ * 有新产物 ⇒ 同上复用 + 增量更新。
151
+ * **软删行视同不存在**:回收站里的旧行不参与比对,产物重现时按新行创建(不复活旧行)。
152
+ */
153
+ export declare function planMergeWrite(products: readonly MergeWriteProduct[], written: readonly MergeWrittenEntry[], snapshot: readonly MergeSnapshotRow[],
154
+ /** 跨轮 baseline(缺省 = 无历史 job,只有本 job 清单一条记录面) */
155
+ baseline?: readonly MergeWrittenEntry[]): MergeWritePlanItem[];
156
+ //# sourceMappingURL=merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/decompose/merge.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAmC,MAAM,iCAAiC,CAAC;AAE7G,mDAAmD;AACnD,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD,qCAAqC;AACrC,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,0BAA0B;AAC1B,eAAO,MAAM,+BAA+B,IAAI,CAAC;AACjD,mDAAmD;AACnD,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD,6CAA6C;AAC7C,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;AAEvE,oCAAoC;AACpC,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,eAAe;IACf,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,0BAA0B;AAC1B,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAClC,SAAS,EAAE,uBAAuB,EAAE,CAAC;IACrC,0CAA0C;IAC1C,QAAQ,EAAE;QAAE,UAAU,EAAE,qBAAqB,EAAE,CAAC;QAAC,SAAS,EAAE,uBAAuB,EAAE,CAAA;KAAE,CAAC;CACzF;AAED,4CAA4C;AAC5C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAClC,SAAS,EAAE,uBAAuB,EAAE,CAAC;CACtC;AAED,oEAAoE;AACpE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,gDAAgD;AAChD,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,oCAAoC;IACpC,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,GAAG,kBAAkB,CAa7F;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,kBAAkB,EAAE,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,kBAAkB,CAgBlH;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,kBAAkB,GAAG,YAAY,CAelF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,CAS3E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,EAAE,WAAW,GAAE,SAAS,UAAU,EAAO,GAAG,YAAY,CAE/H;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,GAAG,cAAc,EAAE,CAE7F;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,EAAE,UAAU,EAAE,SAAS,cAAc,EAAE,GAAG,eAAe,CA4BzH;AAID,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,OAAO,GACP,kBAAkB,GAClB,aAAa,GACb,iBAAiB,CAAC;AAEtB,0BAA0B;AAC1B,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC;IACZ,iDAAiD;IACjD,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CACnB;AAED,0DAA0D;AAC1D,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,kEAAkE;AAClE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,gBAAgB,CAAC;IACzB,qCAAqC;IACrC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,mCAAmC;IACnC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,SAAS,iBAAiB,EAAE,EACtC,OAAO,EAAE,SAAS,iBAAiB,EAAE,EACrC,QAAQ,EAAE,SAAS,gBAAgB,EAAE;AACrC,gDAAgD;AAChD,QAAQ,GAAE,SAAS,iBAAiB,EAAO,GAC1C,kBAAkB,EAAE,CAiCtB"}
@@ -0,0 +1,266 @@
1
+ // 拆解 S3:规则归并 + 写入计划(纯函数、无 IO、不碰 db)。
2
+ //
3
+ // 契约:docs/design/60-decompose.md §6(四步**有序**纯管线 + 三层归并)与 §6.1(`merge_written` 三路比对)。
4
+ // 分工:本模块只算「该写什么」——实体/关系/章摘要回写/报告的实际落库与一次别名归并 LLM 调用属后续卡。
5
+ // 阈值与上限单一定义在本模块并导出;散文与注释只引用常量名,不复述数字。
6
+ import { RELATION_TYPE_META, normalizeRelationType } from "@whispering233/ai-editor-shared";
7
+ /** 落库阈值:人物与关系要求跨章出现 ≥ 该章数(单章出现的路人/一次性互动只进报告,§5) */
8
+ export const DECOMPOSE_MENTION_MIN_CHAPTERS = 2;
9
+ /** 别名组名字数上限(超过多半是把不同实体错并成一个,保守丢弃) */
10
+ export const DECOMPOSE_ALIAS_GROUP_MAX = 4;
11
+ /** 别名组名字数下限(单名组成立不了合并) */
12
+ export const DECOMPOSE_ALIAS_GROUP_MIN_NAMES = 2;
13
+ /** 别名归并候选条数上限:候选按提及次数截断 top,超出部分不参与合并(§6 第 2 层) */
14
+ export const DECOMPOSE_ALIAS_CANDIDATE_MAX = 60;
15
+ /**
16
+ * 名字归一化(**单一来源**):trim + 折叠空白(含全角空格 U+3000)为单个半角空格。
17
+ * 这是「同名同类型 → 同一实体」的比较基准,S2 的关系端点存在性校验与 S3 的实体去重必须同口径。
18
+ */
19
+ export function normalizeEntityName(name) {
20
+ return name.replace(/[\s\u3000]+/gu, " ").trim();
21
+ }
22
+ /**
23
+ * 第 1 步 · 去重(零 LLM 成本;**此步不设阈值**——阈值要等别名归并后才有意义,别名合并会把章节集合变大)。
24
+ * - 实体:名字归一化后「同名同类型 → 同一实体」(人物 / 设定 / 地点各自成集);
25
+ * - 关系:按 `(source, target, relation_type)` 去重 + 对称关系方向归一。
26
+ */
27
+ export function dedupeCandidates(results) {
28
+ const entities = new Map();
29
+ const relations = new Map();
30
+ for (const result of results) {
31
+ for (const chapter of result.chapters) {
32
+ for (const character of chapter.characters)
33
+ addEntity(entities, "character", character.name, [chapter.chapterIndex]);
34
+ for (const setting of chapter.settings)
35
+ addEntity(entities, "setting", setting.name, [chapter.chapterIndex]);
36
+ for (const location of chapter.locations)
37
+ addEntity(entities, "location", location.name, [chapter.chapterIndex]);
38
+ for (const relation of chapter.relations)
39
+ addRelation(relations, relation, [chapter.chapterIndex]);
40
+ }
41
+ }
42
+ return { entities: [...entities.values()], relations: [...relations.values()] };
43
+ }
44
+ /**
45
+ * 第 2 步 · 应用别名归并(§6 第 2 层的输出):别名 → 规范名映射;合并章节集合(并集);
46
+ * **关系端点同步重映射**并重新去重(重映射后原本分开的两枚关系可能变成同一枚);丢弃自环关系。
47
+ * 只并人物——设定 / 地点只走第 1 步(§6 第 2 层的保守原则)。
48
+ */
49
+ export function applyAliasGroups(candidates, groups) {
50
+ const canonicalOf = aliasCanonicalMap(groups);
51
+ const entities = new Map();
52
+ for (const entity of candidates.entities) {
53
+ const name = entity.type === "character" ? canonicalOf.get(entity.name) ?? entity.name : entity.name;
54
+ addEntity(entities, entity.type, name, entity.chapters);
55
+ }
56
+ const relations = new Map();
57
+ for (const relation of candidates.relations) {
58
+ const source = canonicalOf.get(relation.source) ?? relation.source;
59
+ const target = canonicalOf.get(relation.target) ?? relation.target;
60
+ if (source === target)
61
+ continue; // 自环:别名把两端并成同一实体,不是真实关系
62
+ addRelation(relations, { source, target, type: relation.type }, relation.chapters);
63
+ }
64
+ return { entities: [...entities.values()], relations: [...relations.values()] };
65
+ }
66
+ /**
67
+ * 第 3 步 · 阈值:人物与关系要求跨章出现 ≥ DECOMPOSE_MENTION_MIN_CHAPTERS,未达者进 `filtered`
68
+ * (报告里透明化,§6.2 第 6 段);设定与地点不设阈值——一次出现也可能是重要宝物/剑法,
69
+ * 靠提示词约束「只抽对剧情有影响的」。
70
+ */
71
+ export function applyMentionThreshold(candidates) {
72
+ const entities = [];
73
+ const filteredCharacters = [];
74
+ for (const entity of candidates.entities) {
75
+ if (entity.type === "character" && entity.chapters.length < DECOMPOSE_MENTION_MIN_CHAPTERS)
76
+ filteredCharacters.push(entity);
77
+ else
78
+ entities.push(entity);
79
+ }
80
+ const relations = [];
81
+ const filteredRelations = [];
82
+ for (const relation of candidates.relations) {
83
+ const target = relation.chapters.length < DECOMPOSE_MENTION_MIN_CHAPTERS ? filteredRelations : relations;
84
+ target.push(relation);
85
+ }
86
+ return { entities, relations, filtered: { characters: filteredCharacters, relations: filteredRelations } };
87
+ }
88
+ /**
89
+ * 第 4 步 · 悬空关系过滤:两端都必须落在**落库实体集合**内,否则丢弃并计入 `filtered`——
90
+ * 既防模型幻觉出不存在的人物,也防阈值滤掉端点后留下悬空边。
91
+ */
92
+ export function filterDanglingRelations(outcome) {
93
+ const names = new Set(outcome.entities.map((entity) => entity.name));
94
+ const relations = [];
95
+ const dangling = [...outcome.filtered.relations];
96
+ for (const relation of outcome.relations) {
97
+ if (names.has(relation.source) && names.has(relation.target))
98
+ relations.push(relation);
99
+ else
100
+ dangling.push(relation);
101
+ }
102
+ return { entities: outcome.entities, relations, filtered: { characters: outcome.filtered.characters, relations: dangling } };
103
+ }
104
+ /**
105
+ * S3 第 1 层:四步**有序**纯管线——顺序不可交换(§6):
106
+ * ① 去重(不设阈值)→ ② 应用别名组(关系端点重映射 + 重新去重 + 丢自环)→ ③ 阈值 → ④ 悬空关系过滤。
107
+ * 阈值必须排在别名归并之后(合并会放大章节集合,否则两个单章名会被错杀);
108
+ * 悬空过滤必须排在阈值之后(阈值会滤掉端点,否则留下指向不存在实体的边)。
109
+ */
110
+ export function mergeCandidates(results, aliasGroups = []) {
111
+ return filterDanglingRelations(applyMentionThreshold(applyAliasGroups(dedupeCandidates(results), aliasGroups)));
112
+ }
113
+ /**
114
+ * 候选按提及次数(跨章数)降序截断 top DECOMPOSE_ALIAS_CANDIDATE_MAX——超出部分不参与合并。
115
+ * 同提及次数保持入参顺序(`Array.prototype.sort` 稳定)⇒ 同一份输入两次调用结果一致。
116
+ */
117
+ export function selectAliasCandidates(candidates) {
118
+ return [...candidates].sort((left, right) => right.chapterCount - left.chapterCount).slice(0, DECOMPOSE_ALIAS_CANDIDATE_MAX);
119
+ }
120
+ /**
121
+ * 别名组硬校验(§6 第 2 层)。四道闸门全过才接受:
122
+ * ① 组内每个名字(含规范名)必须已存在于候选集合——禁止发明新名字,且候选集合已按
123
+ * DECOMPOSE_ALIAS_CANDIDATE_MAX 截断(被截断的名字视为不存在);
124
+ * ② 名字不得跨组重复(一个名字只能进一组);
125
+ * ③ 组内有效名字数 ∈ [DECOMPOSE_ALIAS_GROUP_MIN_NAMES, DECOMPOSE_ALIAS_GROUP_MAX];
126
+ * ④ 比较前先按 normalizeEntityName 归一(与实体去重同口径)。
127
+ */
128
+ export function validateAliasGroups(groups, candidates) {
129
+ const allowed = new Set(selectAliasCandidates(candidates).map((candidate) => normalizeEntityName(candidate.name)));
130
+ const used = new Set();
131
+ const accepted = [];
132
+ const rejected = [];
133
+ for (const group of groups) {
134
+ const names = [...new Set([group.canonical, ...group.aliases].map(normalizeEntityName))].filter((name) => name !== "");
135
+ if (names.length < DECOMPOSE_ALIAS_GROUP_MIN_NAMES) {
136
+ rejected.push({ group, reason: "组内有效名字少于 DECOMPOSE_ALIAS_GROUP_MIN_NAMES" });
137
+ continue;
138
+ }
139
+ if (names.length > DECOMPOSE_ALIAS_GROUP_MAX) {
140
+ rejected.push({ group, reason: "组内名字数超过 DECOMPOSE_ALIAS_GROUP_MAX" });
141
+ continue;
142
+ }
143
+ if (names.some((name) => !allowed.has(name))) {
144
+ rejected.push({ group, reason: "组内有名字不在候选集合(或已被 DECOMPOSE_ALIAS_CANDIDATE_MAX 截断)" });
145
+ continue;
146
+ }
147
+ if (names.some((name) => used.has(name))) {
148
+ rejected.push({ group, reason: "组内有名字已出现在前一组" });
149
+ continue;
150
+ }
151
+ accepted.push(group);
152
+ for (const name of names)
153
+ used.add(name);
154
+ }
155
+ return { accepted, rejected };
156
+ }
157
+ /**
158
+ * 三路比对:新产物 × 库内快照 × 记录面 → 写入计划(不改 db)。
159
+ * 记录面有两条(§6.1):`written` = **本 job 清单**(软删面:只有本 job 写过的行才允许软删)与
160
+ * `baseline` = **历史全部 job 的 `merge_written` 并集**(跨轮面:复用与增量更新的比对基准)。
161
+ *
162
+ * 判据:`updated_at` 与记录值一致 ⇒ 这条行还是上一轮写的(可复用 + 增量更新);
163
+ * 变了 ⇒ 用户手工编辑过(**用户编辑优先**:不覆盖、不软删,只在报告里提示)。
164
+ * **库内同身份行存在但没有记录**(用户手工建的)⇒ 复用该行、内容不动:`createEntity` 无同名守卫,
165
+ * 再 create 会建出重复行;关系的 `createRelation` 对同 `(source, target, type)` 直接抛 `RELATION_EXISTS`,
166
+ * 而 S3 落库与清单写在同一事务 ⇒ 会打挂整轮 S3。
167
+ * **跨轮条目**(baseline 有、本 job 清单没有):新产物没有 ⇒ 不进计划(不软删——续拆不是全量重算);
168
+ * 有新产物 ⇒ 同上复用 + 增量更新。
169
+ * **软删行视同不存在**:回收站里的旧行不参与比对,产物重现时按新行创建(不复活旧行)。
170
+ */
171
+ export function planMergeWrite(products, written, snapshot,
172
+ /** 跨轮 baseline(缺省 = 无历史 job,只有本 job 清单一条记录面) */
173
+ baseline = []) {
174
+ const writtenById = new Map(written.map((entry) => [entry.id, entry]));
175
+ const baselineById = new Map(baseline.map((entry) => [entry.id, entry]));
176
+ const liveById = new Map(snapshot.filter((row) => row.deleted_at === null).map((row) => [row.id, row]));
177
+ const matched = new Set();
178
+ const plan = [];
179
+ for (const product of products) {
180
+ const row = product.id === null ? undefined : liveById.get(product.id);
181
+ if (row === undefined) {
182
+ plan.push({ action: "create", id: null, key: product.key });
183
+ continue;
184
+ }
185
+ matched.add(row.id);
186
+ const entry = writtenById.get(row.id) ?? baselineById.get(row.id);
187
+ plan.push({
188
+ action: row.updated_at === entry?.updated_at ? "reuse" : "keep-user-edited",
189
+ id: row.id,
190
+ key: product.key,
191
+ });
192
+ }
193
+ for (const entry of written) {
194
+ if (matched.has(entry.id))
195
+ continue;
196
+ const row = liveById.get(entry.id);
197
+ if (row === undefined)
198
+ continue; // 已不在库内(软删/物理删)⇒ 无事可做
199
+ plan.push({
200
+ action: row.updated_at === entry.updated_at ? "soft-delete" : "keep-and-report",
201
+ id: entry.id,
202
+ key: null,
203
+ });
204
+ }
205
+ return plan;
206
+ }
207
+ // ── 模块私有 ─────────────────────────────────────────────────────────────────
208
+ /** 别名 → 规范名(归一化后比较)。组内名字按 normalizeEntityName 归一,与实体去重同口径。 */
209
+ function aliasCanonicalMap(groups) {
210
+ const canonicalOf = new Map();
211
+ for (const group of groups) {
212
+ const canonical = normalizeEntityName(group.canonical);
213
+ if (canonical === "")
214
+ continue;
215
+ for (const name of [group.canonical, ...group.aliases]) {
216
+ const normalized = normalizeEntityName(name);
217
+ if (normalized !== "")
218
+ canonicalOf.set(normalized, canonical);
219
+ }
220
+ }
221
+ return canonicalOf;
222
+ }
223
+ function addEntity(map, type, rawName, chapters) {
224
+ const name = normalizeEntityName(rawName);
225
+ if (name === "")
226
+ return;
227
+ const key = `${type}\u0000${name}`;
228
+ const existing = map.get(key);
229
+ const entry = existing ?? { type, name, chapters: [] };
230
+ if (existing === undefined)
231
+ map.set(key, entry);
232
+ for (const chapterIndex of chapters)
233
+ addChapter(entry.chapters, chapterIndex);
234
+ }
235
+ function addRelation(map, relation, chapters) {
236
+ const type = normalizeRelationType(relation.type);
237
+ const source = normalizeEntityName(relation.source);
238
+ const target = normalizeEntityName(relation.target);
239
+ if (source === "" || target === "" || type === "")
240
+ return;
241
+ const [from, to] = orderEndpoints(source, target, type);
242
+ const key = `${from}\u0000${to}\u0000${type}`;
243
+ const existing = map.get(key);
244
+ const entry = existing ?? { source: from, target: to, type, chapters: [] };
245
+ if (existing === undefined)
246
+ map.set(key, entry);
247
+ for (const chapterIndex of chapters)
248
+ addChapter(entry.chapters, chapterIndex);
249
+ }
250
+ /**
251
+ * 对称关系方向归一:语义对等的关系(`RELATION_TYPE_META` 标注 `symmetric` 的那些),A→B 与 B→A 是同一枚
252
+ * 关系,统一按名字排序取一个方向(否则同一枚关系会存成两行)。判据 = shared `RELATION_TYPE_META.symmetric`
253
+ * (单一定义,禁止手抄清单);未标注的类型与自定义类型一律有向。
254
+ */
255
+ function orderEndpoints(source, target, type) {
256
+ const symmetric = RELATION_TYPE_META[type]?.symmetric === true;
257
+ return symmetric && source > target ? [target, source] : [source, target];
258
+ }
259
+ /** 章序去重 + 升序(章数规模小,线性查重足够) */
260
+ function addChapter(chapters, chapterIndex) {
261
+ if (chapters.includes(chapterIndex))
262
+ return;
263
+ chapters.push(chapterIndex);
264
+ chapters.sort((left, right) => left - right);
265
+ }
266
+ //# sourceMappingURL=merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/decompose/merge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import { type DecomposeSession } from "./llm.js";
2
+ /** 报告实体的落点口径:`entities.type`(第 7 种实体)+ `data.type` / `tags` / 名字后缀共用这个词 */
3
+ export declare const DECOMPOSE_REPORT_ENTITY_TYPE = "reference";
4
+ export declare const DECOMPOSE_REPORT_KIND = "\u62C6\u89E3\u62A5\u544A";
5
+ /** 全书剧情摘要长度上限(提示词按常量插值,落库前同口径截断) */
6
+ export declare const DECOMPOSE_REPORT_PLOT_MAX_CHARS = 1200;
7
+ /** 报告六段标题(顺序即正文顺序;§6.2 的六段) */
8
+ export declare const DECOMPOSE_REPORT_SECTIONS: readonly ["一、作品概览", "二、全书剧情摘要", "三、人物小传汇总", "四、结构与节奏", "五、已合并的别名组", "六、被阈值滤掉的单章线索"];
9
+ /** 报告实体名(`name` = 《书名》拆解报告;`data.type` / `tags` 用 DECOMPOSE_REPORT_KIND) */
10
+ export declare function decomposeReportName(bookName: string): string;
11
+ /** 章条目(章序 = 1-based 文件位置序;标题取大纲节点标题,摘要取批结果) */
12
+ export interface ReportChapter {
13
+ index: number;
14
+ title: string;
15
+ summary: string;
16
+ /** 章正文投影长度(`document_records.content_text`;读取投影,不解析块体) */
17
+ length: number;
18
+ }
19
+ /** 人物小传条目(落库人物:role + description + 出现章范围,§6.2 第 3 段) */
20
+ export interface ReportCharacter {
21
+ name: string;
22
+ role: string;
23
+ description: string;
24
+ chapters: readonly number[];
25
+ }
26
+ /** 已合并的别名组(§6 第 2 层的产物 + 模型给的依据,供人工核对) */
27
+ export interface ReportAliasGroup {
28
+ canonical: string;
29
+ aliases: readonly string[];
30
+ reason: string;
31
+ }
32
+ /** 六段报告的事实输入(全部来自服务端确定性数据 + 一次剧情摘要调用) */
33
+ export interface DecomposeReportFacts {
34
+ bookName: string;
35
+ chapters: readonly ReportChapter[];
36
+ batchCount: number;
37
+ characters: readonly ReportCharacter[];
38
+ chapterLengths: readonly {
39
+ index: number;
40
+ title: string;
41
+ length: number;
42
+ }[];
43
+ aliasGroups: readonly ReportAliasGroup[];
44
+ /** 第 6 段:被阈值滤掉的单章线索(人物名 / 关系文本) */
45
+ filteredCharacters: readonly string[];
46
+ filteredRelations: readonly string[];
47
+ /** 用户手工编辑过、重跑时不动的行(三路比对 keep-and-report,§6.1) */
48
+ keptUserEdited: readonly string[];
49
+ }
50
+ /** 报告正文(六段;纯文本小标题 + 段落,由调用方按行拆块) */
51
+ export declare function buildDecomposeReportText(facts: DecomposeReportFacts, plotSummary: string): string;
52
+ /**
53
+ * 全书剧情摘要调用(S4 的**唯一**模型调用):输入 = 各章摘要(不是原文,成本与总字数无关)。
54
+ * 无章摘要时不调用模型(无输入可聚合),由调用方按空文本落报告。
55
+ */
56
+ export declare function completeReportPlot(session: DecomposeSession, chapters: readonly ReportChapter[]): Promise<string>;
57
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/decompose/report.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGjD,2EAA2E;AAC3E,eAAO,MAAM,4BAA4B,cAAc,CAAC;AACxD,eAAO,MAAM,qBAAqB,6BAAS,CAAC;AAE5C,oCAAoC;AACpC,eAAO,MAAM,+BAA+B,OAAO,CAAC;AAEpD,+BAA+B;AAC/B,eAAO,MAAM,yBAAyB,qFAO5B,CAAC;AAEX,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,yDAAyD;AACzD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;IACvC,cAAc,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5E,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACzC,mCAAmC;IACnC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,iDAAiD;IACjD,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,oCAAoC;AACpC,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAyBjG;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,SAAS,aAAa,EAAE,GACjC,OAAO,CAAC,MAAM,CAAC,CAajB"}