dsh-data-domain-knowledge 0.1.0-alpha.13 → 0.1.0-alpha.15

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 (266) hide show
  1. package/README.md +89 -56
  2. package/cordis.patch.yml +36 -129
  3. package/eval/benchmark-extraction-format.mjs +20 -0
  4. package/lib/client.js +3262 -4142
  5. package/lib/doc-page.js +1 -1
  6. package/lib/pages.js +1147 -364
  7. package/lib/types/axis-registry.d.ts +8 -1
  8. package/lib/types/axis-registry.d.ts.map +1 -1
  9. package/lib/types/axis-registry.js +62 -7
  10. package/lib/types/axis-registry.js.map +1 -1
  11. package/lib/types/convert/host.d.ts.map +1 -1
  12. package/lib/types/convert/host.js +3 -0
  13. package/lib/types/convert/host.js.map +1 -1
  14. package/lib/types/convert/ingest.d.ts +9 -0
  15. package/lib/types/convert/ingest.d.ts.map +1 -1
  16. package/lib/types/convert/ingest.js +68 -9
  17. package/lib/types/convert/ingest.js.map +1 -1
  18. package/lib/types/diagnosis/cards.d.ts +7 -3
  19. package/lib/types/diagnosis/cards.d.ts.map +1 -1
  20. package/lib/types/diagnosis/cards.js +13 -8
  21. package/lib/types/diagnosis/cards.js.map +1 -1
  22. package/lib/types/diagnosis/run.d.ts +4 -13
  23. package/lib/types/diagnosis/run.d.ts.map +1 -1
  24. package/lib/types/diagnosis/run.js +26 -16
  25. package/lib/types/diagnosis/run.js.map +1 -1
  26. package/lib/types/diagnosis/schema.js +2 -2
  27. package/lib/types/diagnosis/schema.js.map +1 -1
  28. package/lib/types/diagnosis/seed-source.d.ts +1 -1
  29. package/lib/types/diagnosis/seed-source.d.ts.map +1 -1
  30. package/lib/types/diagnosis/seed-source.js +5 -4
  31. package/lib/types/diagnosis/seed-source.js.map +1 -1
  32. package/lib/types/diagnosis/seed.d.ts +4 -4
  33. package/lib/types/diagnosis/seed.d.ts.map +1 -1
  34. package/lib/types/diagnosis/seed.js +6 -8
  35. package/lib/types/diagnosis/seed.js.map +1 -1
  36. package/lib/types/diagnosis/store.d.ts +18 -17
  37. package/lib/types/diagnosis/store.d.ts.map +1 -1
  38. package/lib/types/diagnosis/store.js +94 -66
  39. package/lib/types/diagnosis/store.js.map +1 -1
  40. package/lib/types/diagnosis/types.d.ts +10 -16
  41. package/lib/types/diagnosis/types.d.ts.map +1 -1
  42. package/lib/types/diagnosis/types.js.map +1 -1
  43. package/lib/types/environment/dsh-python.d.ts +77 -0
  44. package/lib/types/environment/dsh-python.d.ts.map +1 -0
  45. package/lib/types/environment/dsh-python.js +139 -0
  46. package/lib/types/environment/dsh-python.js.map +1 -0
  47. package/lib/types/environment/install.d.ts +9 -1
  48. package/lib/types/environment/install.d.ts.map +1 -1
  49. package/lib/types/environment/install.js +149 -24
  50. package/lib/types/environment/install.js.map +1 -1
  51. package/lib/types/environment/model-catalog.d.ts +34 -2
  52. package/lib/types/environment/model-catalog.d.ts.map +1 -1
  53. package/lib/types/environment/model-catalog.js +40 -2
  54. package/lib/types/environment/model-catalog.js.map +1 -1
  55. package/lib/types/environment/service.d.ts +13 -3
  56. package/lib/types/environment/service.d.ts.map +1 -1
  57. package/lib/types/environment/service.js +127 -23
  58. package/lib/types/environment/service.js.map +1 -1
  59. package/lib/types/environment/types.d.ts +9 -0
  60. package/lib/types/environment/types.d.ts.map +1 -1
  61. package/lib/types/events.d.ts +2 -0
  62. package/lib/types/events.d.ts.map +1 -1
  63. package/lib/types/events.js +13 -0
  64. package/lib/types/events.js.map +1 -1
  65. package/lib/types/extract-contract.d.ts +1 -1
  66. package/lib/types/extract-contract.d.ts.map +1 -1
  67. package/lib/types/extract-contract.js +34 -31
  68. package/lib/types/extract-contract.js.map +1 -1
  69. package/lib/types/extract-model.d.ts +2 -0
  70. package/lib/types/extract-model.d.ts.map +1 -1
  71. package/lib/types/extract-model.js.map +1 -1
  72. package/lib/types/extract-table-contract.d.ts +3 -0
  73. package/lib/types/extract-table-contract.d.ts.map +1 -0
  74. package/lib/types/extract-table-contract.js +30 -0
  75. package/lib/types/extract-table-contract.js.map +1 -0
  76. package/lib/types/extract-table.d.ts +8 -0
  77. package/lib/types/extract-table.d.ts.map +1 -0
  78. package/lib/types/extract-table.js +151 -0
  79. package/lib/types/extract-table.js.map +1 -0
  80. package/lib/types/extraction-runs.d.ts +30 -6
  81. package/lib/types/extraction-runs.d.ts.map +1 -1
  82. package/lib/types/extraction-runs.js +69 -8
  83. package/lib/types/extraction-runs.js.map +1 -1
  84. package/lib/types/fs-atomic.d.ts +0 -7
  85. package/lib/types/fs-atomic.d.ts.map +1 -1
  86. package/lib/types/fs-atomic.js +17 -2
  87. package/lib/types/fs-atomic.js.map +1 -1
  88. package/lib/types/images.d.ts +1 -1
  89. package/lib/types/images.d.ts.map +1 -1
  90. package/lib/types/images.js +2 -2
  91. package/lib/types/images.js.map +1 -1
  92. package/lib/types/index.d.ts.map +1 -1
  93. package/lib/types/index.js +232 -50
  94. package/lib/types/index.js.map +1 -1
  95. package/lib/types/intent/scope.d.ts.map +1 -1
  96. package/lib/types/intent/scope.js +1 -0
  97. package/lib/types/intent/scope.js.map +1 -1
  98. package/lib/types/intent/tools.d.ts +19 -0
  99. package/lib/types/intent/tools.d.ts.map +1 -1
  100. package/lib/types/intent/tools.js +37 -1
  101. package/lib/types/intent/tools.js.map +1 -1
  102. package/lib/types/knowledge-bases.d.ts.map +1 -1
  103. package/lib/types/knowledge-bases.js +5 -16
  104. package/lib/types/knowledge-bases.js.map +1 -1
  105. package/lib/types/knowledge.d.ts +3 -0
  106. package/lib/types/knowledge.d.ts.map +1 -1
  107. package/lib/types/knowledge.js +21 -5
  108. package/lib/types/knowledge.js.map +1 -1
  109. package/lib/types/materialize-snapshot.d.ts +49 -0
  110. package/lib/types/materialize-snapshot.d.ts.map +1 -0
  111. package/lib/types/materialize-snapshot.js +2 -0
  112. package/lib/types/materialize-snapshot.js.map +1 -0
  113. package/lib/types/model-text.d.ts +1 -1
  114. package/lib/types/model-text.d.ts.map +1 -1
  115. package/lib/types/model-text.js +5 -4
  116. package/lib/types/model-text.js.map +1 -1
  117. package/lib/types/oplog.d.ts.map +1 -1
  118. package/lib/types/oplog.js +7 -0
  119. package/lib/types/oplog.js.map +1 -1
  120. package/lib/types/pipeline/engine.d.ts +60 -0
  121. package/lib/types/pipeline/engine.d.ts.map +1 -0
  122. package/lib/types/pipeline/engine.js +338 -0
  123. package/lib/types/pipeline/engine.js.map +1 -0
  124. package/lib/types/pipeline/store.d.ts +73 -0
  125. package/lib/types/pipeline/store.d.ts.map +1 -0
  126. package/lib/types/pipeline/store.js +143 -0
  127. package/lib/types/pipeline/store.js.map +1 -0
  128. package/lib/types/pipeline/types.d.ts +101 -0
  129. package/lib/types/pipeline/types.d.ts.map +1 -0
  130. package/lib/types/pipeline/types.js +5 -0
  131. package/lib/types/pipeline/types.js.map +1 -0
  132. package/lib/types/present.d.ts +2 -0
  133. package/lib/types/present.d.ts.map +1 -1
  134. package/lib/types/present.js +9 -4
  135. package/lib/types/present.js.map +1 -1
  136. package/lib/types/retention.d.ts +39 -0
  137. package/lib/types/retention.d.ts.map +1 -0
  138. package/lib/types/retention.js +42 -0
  139. package/lib/types/retention.js.map +1 -0
  140. package/lib/types/runtime.d.ts +115 -5
  141. package/lib/types/runtime.d.ts.map +1 -1
  142. package/lib/types/runtime.js +862 -132
  143. package/lib/types/runtime.js.map +1 -1
  144. package/lib/types/source-evidence.d.ts +9 -1
  145. package/lib/types/source-evidence.d.ts.map +1 -1
  146. package/lib/types/source-evidence.js +13 -5
  147. package/lib/types/source-evidence.js.map +1 -1
  148. package/lib/types/store/axis-references.js +3 -3
  149. package/lib/types/store/axis-references.js.map +1 -1
  150. package/lib/types/store/derived.d.ts +1 -1
  151. package/lib/types/store/derived.d.ts.map +1 -1
  152. package/lib/types/store/derived.js +41 -7
  153. package/lib/types/store/derived.js.map +1 -1
  154. package/lib/types/store/knowledge-db.d.ts +18 -0
  155. package/lib/types/store/knowledge-db.d.ts.map +1 -1
  156. package/lib/types/store/knowledge-db.js +111 -6
  157. package/lib/types/store/knowledge-db.js.map +1 -1
  158. package/lib/types/store/migrate.js +1 -1
  159. package/lib/types/store/migrate.js.map +1 -1
  160. package/lib/types/trajectory-types.d.ts +172 -0
  161. package/lib/types/trajectory-types.d.ts.map +1 -0
  162. package/lib/types/trajectory-types.js +36 -0
  163. package/lib/types/trajectory-types.js.map +1 -0
  164. package/lib/types/types.d.ts +3 -4
  165. package/lib/types/types.d.ts.map +1 -1
  166. package/lib/types/types.js.map +1 -1
  167. package/lib/types/wiki-finalize.d.ts +16 -0
  168. package/lib/types/wiki-finalize.d.ts.map +1 -1
  169. package/lib/types/wiki-finalize.js +26 -0
  170. package/lib/types/wiki-finalize.js.map +1 -1
  171. package/lib/types/wiki-materialize.d.ts.map +1 -1
  172. package/lib/types/wiki-materialize.js +3 -15
  173. package/lib/types/wiki-materialize.js.map +1 -1
  174. package/lib/types/wiki-trial-types.d.ts +3 -0
  175. package/lib/types/wiki-trial-types.d.ts.map +1 -1
  176. package/lib/types/wiki-trial.d.ts +2 -0
  177. package/lib/types/wiki-trial.d.ts.map +1 -1
  178. package/lib/types/wiki-trial.js +31 -7
  179. package/lib/types/wiki-trial.js.map +1 -1
  180. package/package.json +6 -3
  181. package/preset/tita-data-agent/agent.cordis.yml +36 -129
  182. package/src/axis-registry.ts +57 -9
  183. package/src/client/AttributionEventGuide.tsx +10 -9
  184. package/src/client/CompileDialogs.tsx +10 -2
  185. package/src/client/EnvironmentSetup.tsx +76 -16
  186. package/src/client/ExpansionGraph.tsx +13 -7
  187. package/src/client/ExtractionTasksPage.tsx +543 -156
  188. package/src/client/ImportFilesDialog.tsx +2 -13
  189. package/src/client/IntentTab.tsx +3 -1
  190. package/src/client/KnowledgeBaseTab.tsx +139 -122
  191. package/src/client/KnowledgeLayerSection.tsx +19 -2
  192. package/src/client/KnowledgePanel.tsx +17 -3
  193. package/src/client/ListPager.tsx +15 -5
  194. package/src/client/MaterializeTrajectoryView.tsx +124 -0
  195. package/src/client/NodeSettings.tsx +90 -25
  196. package/src/client/NormalizeTrajectoryView.tsx +136 -0
  197. package/src/client/PipelineNotice.tsx +26 -0
  198. package/src/client/RecallPanel.tsx +55 -25
  199. package/src/client/TabGuide.tsx +4 -4
  200. package/src/client/TrialReportView.tsx +61 -16
  201. package/src/client/TypeDefinitionDrawer.tsx +33 -9
  202. package/src/client/WikiCardPreview.tsx +43 -10
  203. package/src/client/WikiFlowPanel.tsx +4 -4
  204. package/src/client/architecture.tsx +1 -1
  205. package/src/client/attribution/AttributionTab.tsx +37 -36
  206. package/src/client/attribution/CaseView.tsx +3 -1
  207. package/src/client/attribution/EventView.tsx +14 -4
  208. package/src/client/attribution/RunView.tsx +2 -2
  209. package/src/client/attribution/ViewSwitch.tsx +20 -5
  210. package/src/client/attribution/graph-options.ts +38 -31
  211. package/src/client/attribution/model.ts +16 -9
  212. package/src/client/graph/palette.ts +165 -0
  213. package/src/client/pages.css +224 -28
  214. package/src/client/pages.tsx +33 -11
  215. package/src/client/styles.css +61 -6
  216. package/src/client/wiki-trial.ts +30 -1
  217. package/src/convert/host.ts +3 -0
  218. package/src/convert/ingest.ts +73 -9
  219. package/src/diagnosis/cards.ts +13 -8
  220. package/src/diagnosis/run.ts +27 -17
  221. package/src/diagnosis/schema.ts +2 -2
  222. package/src/diagnosis/seed-source.ts +5 -4
  223. package/src/diagnosis/seed.ts +6 -8
  224. package/src/diagnosis/store.ts +99 -69
  225. package/src/diagnosis/types.ts +10 -16
  226. package/src/environment/dsh-python.ts +156 -0
  227. package/src/environment/install.ts +134 -19
  228. package/src/environment/model-catalog.ts +45 -3
  229. package/src/environment/service.ts +111 -23
  230. package/src/environment/types.ts +6 -0
  231. package/src/events.ts +12 -0
  232. package/src/extract-contract.ts +6 -3
  233. package/src/extract-model.ts +2 -0
  234. package/src/extract-table-contract.ts +29 -0
  235. package/src/extract-table.ts +126 -0
  236. package/src/extraction-runs.ts +70 -11
  237. package/src/fs-atomic.ts +19 -2
  238. package/src/images.ts +2 -2
  239. package/src/index.ts +207 -72
  240. package/src/intent/scope.ts +1 -0
  241. package/src/intent/tools.ts +38 -1
  242. package/src/knowledge-bases.ts +4 -12
  243. package/src/knowledge.ts +24 -4
  244. package/src/materialize-snapshot.ts +46 -0
  245. package/src/model-text.ts +5 -3
  246. package/src/oplog.ts +7 -0
  247. package/src/pipeline/engine.ts +312 -0
  248. package/src/pipeline/store.ts +147 -0
  249. package/src/pipeline/types.ts +92 -0
  250. package/src/present.ts +10 -4
  251. package/src/retention.ts +76 -0
  252. package/src/runtime.ts +853 -131
  253. package/src/source-evidence.ts +12 -5
  254. package/src/store/axis-references.ts +3 -3
  255. package/src/store/derived.ts +40 -7
  256. package/src/store/knowledge-db.ts +111 -5
  257. package/src/store/migrate.ts +1 -1
  258. package/src/trajectory-types.ts +142 -0
  259. package/src/types.ts +3 -4
  260. package/src/wiki-finalize.ts +28 -0
  261. package/src/wiki-materialize.ts +3 -14
  262. package/src/wiki-trial-types.ts +3 -0
  263. package/src/wiki-trial.ts +26 -7
  264. package/src/client/convert/ConvertPanel.tsx +0 -583
  265. package/src/client/convert/styles.css +0 -138
  266. package/src/client/convert/styles.ts +0 -49
@@ -1,6 +1,14 @@
1
1
  import type { Knowledge } from './knowledge.js';
2
2
  import type { KnowledgeDb } from './store/knowledge-db.js';
3
3
  /** Checking an evidence anchor does not establish whether a claim is true. */
4
- export declare function assessKnowledgeEvidence(knowledge: Knowledge, db: KnowledgeDb): Knowledge;
4
+ /**
5
+ * `bodies` 是可选的**来源正文预读**(documentId → 当前版本与正文)。批量路径(物化快照)
6
+ * 一次读完全部来源再传进来,于是每条知识不再各自 join 一次 blob、各做一次整份文档的
7
+ * flatten 与子串匹配 —— 那是 O(知识条数 × 文档大小)。不传时退回按需读取(单条判定)。
8
+ */
9
+ export declare function assessKnowledgeEvidence(knowledge: Knowledge, db: KnowledgeDb, bodies?: ReadonlyMap<string, {
10
+ version: number;
11
+ content: string;
12
+ }>): Knowledge;
5
13
  export declare function hasCurrentSupport(knowledge: Knowledge): boolean;
6
14
  //# sourceMappingURL=source-evidence.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"source-evidence.d.ts","sourceRoot":"","sources":["../../src/source-evidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,gBAAgB,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAE1D,8EAA8E;AAC9E,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,GAAG,SAAS,CAKxF;AAiBD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAG/D"}
1
+ {"version":3,"file":"source-evidence.d.ts","sourceRoot":"","sources":["../../src/source-evidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,gBAAgB,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAE1D,8EAA8E;AAC9E;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,CAK5J;AAmBD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAG/D"}
@@ -1,16 +1,24 @@
1
1
  /** Checking an evidence anchor does not establish whether a claim is true. */
2
- export function assessKnowledgeEvidence(knowledge, db) {
2
+ /**
3
+ * `bodies` 是可选的**来源正文预读**(documentId → 当前版本与正文)。批量路径(物化快照)
4
+ * 一次读完全部来源再传进来,于是每条知识不再各自 join 一次 blob、各做一次整份文档的
5
+ * flatten 与子串匹配 —— 那是 O(知识条数 × 文档大小)。不传时退回按需读取(单条判定)。
6
+ */
7
+ export function assessKnowledgeEvidence(knowledge, db, bodies) {
3
8
  return {
4
9
  ...knowledge,
5
- sources: knowledge.sources.map(source => assessSource(source, db)),
10
+ sources: knowledge.sources.map(source => assessSource(source, db, bodies)),
6
11
  };
7
12
  }
8
- function assessSource(source, db) {
13
+ function assessSource(source, db, bodies) {
14
+ if (source.withdrawn)
15
+ return { ...source, evidenceStatus: 'historical', quoteInCurrentVersion: false };
9
16
  if (!source.documentId)
10
17
  return { ...source, evidenceStatus: 'human' };
11
- const head = db.source(source.documentId);
18
+ const head = bodies?.get(source.documentId) ?? db.source(source.documentId);
12
19
  if (!head)
13
20
  return { ...source, evidenceStatus: 'missing', quoteInCurrentVersion: false };
21
+ const content = 'record' in head ? head.record.content : head.content;
14
22
  const flatten = (text) => text.replace(/\s+/g, '');
15
23
  const quote = flatten(source.quote);
16
24
  return {
@@ -18,7 +26,7 @@ function assessSource(source, db) {
18
26
  currentVersion: head.version,
19
27
  evidenceStatus: source.toVersion === undefined ? 'unversioned'
20
28
  : source.toVersion === head.version ? 'current' : 'historical',
21
- quoteInCurrentVersion: quote !== '' && flatten(head.record.content).includes(quote),
29
+ quoteInCurrentVersion: quote !== '' && flatten(content).includes(quote),
22
30
  };
23
31
  }
24
32
  export function hasCurrentSupport(knowledge) {
@@ -1 +1 @@
1
- {"version":3,"file":"source-evidence.js","sourceRoot":"","sources":["../../src/source-evidence.ts"],"names":[],"mappings":"AAGA,8EAA8E;AAC9E,MAAM,UAAU,uBAAuB,CAAC,SAAoB,EAAE,EAAe;IAC3E,OAAO;QACL,GAAG,SAAS;QACZ,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;KACnE,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,MAAuB,EAAE,EAAe;IAC5D,IAAI,CAAC,MAAM,CAAC,UAAU;QAAE,OAAO,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,CAAA;IACrE,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACzC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAA;IACxF,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAClE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACnC,OAAO;QACL,GAAG,MAAM;QACT,cAAc,EAAE,IAAI,CAAC,OAAO;QAC5B,cAAc,EAAE,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa;YAC5D,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY;QAChE,qBAAqB,EAAE,KAAK,KAAK,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;KACpF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAoB;IACpD,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,KAAK,OAAO;WACpE,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,MAAM,CAAC,qBAAqB,KAAK,IAAI,CAAC,CAAC,CAAA;AACtF,CAAC"}
1
+ {"version":3,"file":"source-evidence.js","sourceRoot":"","sources":["../../src/source-evidence.ts"],"names":[],"mappings":"AAGA,8EAA8E;AAC9E;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAAoB,EAAE,EAAe,EAAE,MAAkE;IAC/I,OAAO;QACL,GAAG,SAAS;QACZ,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;KAC3E,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,MAAuB,EAAE,EAAe,EAAE,MAAkE;IAChI,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAA;IACtG,IAAI,CAAC,MAAM,CAAC,UAAU;QAAE,OAAO,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,CAAA;IACrE,MAAM,IAAI,GAAG,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAC3E,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAA;IACxF,MAAM,OAAO,GAAG,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAA;IACrE,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAClE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACnC,OAAO;QACL,GAAG,MAAM;QACT,cAAc,EAAE,IAAI,CAAC,OAAO;QAC5B,cAAc,EAAE,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa;YAC5D,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY;QAChE,qBAAqB,EAAE,KAAK,KAAK,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;KACxE,CAAA;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAoB;IACpD,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,KAAK,OAAO;WACpE,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,MAAM,CAAC,qBAAqB,KAAK,IAAI,CAAC,CAAC,CAAA;AACtF,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { createHash } from 'node:crypto';
2
- import { compositeEventIdentity, eventEntityFromRecords } from '../events.js';
2
+ import { compositeEventIdentity, eventEntityFromRecords, stripEventReferenceSection } from '../events.js';
3
3
  import { cardCoordinateKey } from '../types.js';
4
4
  /** Runs inside the axis merge transaction on the same validated connection. */
5
5
  export function redirectAxisReferences(db, kind, fromId, intoId) {
@@ -27,7 +27,7 @@ export function redirectAxisReferences(db, kind, fromId, intoId) {
27
27
  const eventRefs = [...new Set([...db.cardEventIds(base.card.entityId), ...db.cardEventIds(row.card.entityId)])];
28
28
  const card = {
29
29
  ...base.card, coordinate: next,
30
- content: merged ? `${base.card.content}\n\n${row.card.content}` : row.card.content,
30
+ content: stripEventReferenceSection(merged ? `${base.card.content}\n\n${row.card.content}` : row.card.content),
31
31
  sourceRefs: [...new Set([...base.card.sourceRefs, ...row.card.sourceRefs])],
32
32
  annotations: [...new Map([...(base.card.annotations ?? []), ...(row.card.annotations ?? [])].map(annotation => [annotation.id, annotation])).values()],
33
33
  metadata: { ...base.card.metadata, layout: undefined, citations: undefined,
@@ -91,7 +91,7 @@ export function redirectAxisReferences(db, kind, fromId, intoId) {
91
91
  }
92
92
  if (redirects.size) {
93
93
  for (const row of db.cards()) {
94
- let content = row.card.content;
94
+ let content = stripEventReferenceSection(row.card.content);
95
95
  for (const [from, into] of redirects)
96
96
  content = content.replaceAll(from, into);
97
97
  if (content === row.card.content && !affectedCards.has(row.card.entityId))
@@ -1 +1 @@
1
- {"version":3,"file":"axis-references.js","sourceRoot":"","sources":["../../../src/store/axis-references.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"axis-references.js","sourceRoot":"","sources":["../../../src/store/axis-references.ts"],"names":[],"mappings":"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"}
@@ -145,7 +145,7 @@ export declare class DerivedDb {
145
145
  * 查询语法错误或索引损坏时**返回空数组而不抛**:关键词路是三条召回路线之一,
146
146
  * 它挂了不该把整次召回带走 —— 调用方在诊断里如实说明这一路没结果。
147
147
  */
148
- searchFts(query: string, limit: number): FtsHit[];
148
+ searchFts(query: string, limit: number, eligible?: ReadonlySet<string>): FtsHit[];
149
149
  /** 一句话说清这个库现在有什么。界面与诊断用。 */
150
150
  summary(): {
151
151
  artifacts: number;
@@ -1 +1 @@
1
- {"version":3,"file":"derived.d.ts","sourceRoot":"","sources":["../../../src/store/derived.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"derived.d.ts","sourceRoot":"","sources":["../../../src/store/derived.ts"],"names":[],"mappings":"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"}
@@ -125,12 +125,29 @@ export class DerivedDb {
125
125
  try {
126
126
  const owner = readPragma(db, 'application_id');
127
127
  const version = readPragma(db, 'user_version');
128
- if (userTableCount(db) === 0 && owner === 0) {
128
+ /**
129
+ * 属主标记为 0 = 这份文件从来没有被我们的初始化**写完过**。两种来源都要按「无主」处理:
130
+ *
131
+ * 1. 全新/空的文件(一张表都没有);
132
+ * 2. `schemaSql()` 已经建好表、`PRAGMA application_id` 还没写就被杀掉的那一次
133
+ * (崩溃、kill、磁盘满)。第二种原来会落到下面的「属主不对」分支,返回
134
+ * `NOT_A_DERIVED_DB` —— 而 `derivedHandle()` 会把这个结论缓存住,于是编译与召回
135
+ * **永久**失败,尽管这个文件按定义是可重建的。
136
+ *
137
+ * 但不能因此误伤别人的库:只有「文件里所有表都是我们自己建的」才认领重建,
138
+ * 出现陌生表就仍然拒绝打开(认错库比打不开糟)。
139
+ */
140
+ const tables = userTables(db);
141
+ const foreign = tables.filter(name => !['artifact', 'vector_index', 'fts'].includes(name));
142
+ if (owner === 0 && foreign.length === 0) {
143
+ db.exec('DROP TABLE IF EXISTS fts');
144
+ db.exec('DROP TABLE IF EXISTS artifact');
145
+ db.exec('DROP TABLE IF EXISTS vector_index');
129
146
  db.exec('PRAGMA journal_mode = WAL');
130
147
  db.exec(schemaSql());
131
148
  db.exec(`PRAGMA application_id = ${DERIVED_DB_APPLICATION_ID}`);
132
149
  db.exec(`PRAGMA user_version = ${DERIVED_DB_SCHEMA}`);
133
- return { ok: true, db: new DerivedDb(db, file), rebuilt: false };
150
+ return { ok: true, db: new DerivedDb(db, file), rebuilt: tables.length > 0 };
134
151
  }
135
152
  if (owner !== DERIVED_DB_APPLICATION_ID) {
136
153
  db.close();
@@ -280,12 +297,20 @@ export class DerivedDb {
280
297
  * 查询语法错误或索引损坏时**返回空数组而不抛**:关键词路是三条召回路线之一,
281
298
  * 它挂了不该把整次召回带走 —— 调用方在诊断里如实说明这一路没结果。
282
299
  */
283
- searchFts(query, limit) {
300
+ searchFts(query, limit, eligible) {
284
301
  const expression = matchExpression(query);
285
302
  if (expression === null || !this.hasFts())
286
303
  return [];
287
304
  try {
288
- const rows = this.raw('SELECT unit_id, bm25(fts) AS rank FROM fts WHERE fts MATCH ? ORDER BY rank LIMIT ?').all(expression, limit);
305
+ /*
306
+ * `eligible` 必须进 SQL。先 LIMIT 再在 JS 里过滤,会让已删除/停用卡片的死
307
+ * unitId 占满候选窗口(索引只在编译时重建,删除不会立刻反映到 fts 表)。
308
+ * 用 `json_each` 传一个 JSON 数组而不是拼参数列表:一个绑定参数,不受
309
+ * SQLITE_MAX_VARIABLE_NUMBER 限制。
310
+ */
311
+ const rows = (eligible === undefined
312
+ ? this.raw('SELECT unit_id, bm25(fts) AS rank FROM fts WHERE fts MATCH ? ORDER BY rank LIMIT ?').all(expression, limit)
313
+ : this.raw('SELECT unit_id, bm25(fts) AS rank FROM fts WHERE fts MATCH ? AND unit_id IN (SELECT value FROM json_each(?)) ORDER BY rank LIMIT ?').all(expression, JSON.stringify([...eligible]), limit));
289
314
  const parsed = rows
290
315
  .map(row => ({ unitId: String(row.unit_id ?? ''), raw: Number(row.rank ?? 0) }))
291
316
  .filter(row => row.unitId !== '' && Number.isFinite(row.raw));
@@ -297,6 +322,15 @@ export class DerivedDb {
297
322
  return parsed.map(row => ({ ...row, score: Math.max(0, Math.min(1, -row.raw / scale)) }));
298
323
  }
299
324
  catch {
325
+ /**
326
+ * `json_each` 不可用(SQLite 没编 JSON)或索引损坏时,**不能直接返回空**。
327
+ *
328
+ * 空数组会被上游读成「这一路没命中」,而实际是「这一路坏了」—— 正是这次要消灭的
329
+ * 那种静默降级。退回不带资格过滤的两参数查询:结果仍然正确(调用方还会过滤一遍),
330
+ * 只是候选窗口可能被已删除的条目占掉。真的连那条也失败,才认「没有结果」。
331
+ */
332
+ if (eligible !== undefined)
333
+ return this.searchFts(query, limit);
300
334
  return [];
301
335
  }
302
336
  }
@@ -313,8 +347,8 @@ function readPragma(db, name) {
313
347
  const first = row === undefined ? undefined : Object.values(row)[0];
314
348
  return typeof first === 'number' ? first : Number(first ?? 0);
315
349
  }
316
- function userTableCount(db) {
317
- const rows = db.prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'").all();
318
- return rows.length;
350
+ /** 文件里现有的表名。用来判断「这份文件是不是我们建的」。 */
351
+ function userTables(db) {
352
+ return db.prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'").all().map(row => String(row.name ?? ''));
319
353
  }
320
354
  //# sourceMappingURL=derived.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"derived.js","sourceRoot":"","sources":["../../../src/store/derived.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"derived.js","sourceRoot":"","sources":["../../../src/store/derived.ts"],"names":[],"mappings":"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"}
@@ -239,6 +239,8 @@ export declare class KnowledgeDb {
239
239
  private readonly db;
240
240
  readonly file: string;
241
241
  private transactionSequence;
242
+ /** 距离上一次保留裁剪又提交了几次写事务。 */
243
+ private writesSincePrune;
242
244
  private constructor();
243
245
  /**
244
246
  * 打开(必要时创建)一个知识库文件。
@@ -269,6 +271,22 @@ export declare class KnowledgeDb {
269
271
  * 说明不了自己改了什么的行。
270
272
  */
271
273
  transact<T>(entry: TreeEntry, fn: (tx: KnowledgeTx) => T): T;
274
+ /**
275
+ * 保留上限(0070)。
276
+ *
277
+ * 文档里写了保留策略,代码里一条 `DELETE` 都没有。这里补上**新数据**的上限,
278
+ * 且只裁「水位以上」的行 —— 升级那一刻已有的历史一行不动(见 `retention.ts`)。
279
+ *
280
+ * - `revision`:机器版本(`auto`)每个实体留最近 20 版;**命名版本永不裁**
281
+ * (`named` 是人对内容做的决定,保留策略里它是永久的)。
282
+ * - `pipeline_extractions`:抽取检查点同时是复用缓存,每份来源留最近 5 份;
283
+ * `pipeline_sources` 指着的那两份(当前抽取 / 当前归一)绝不删 ——
284
+ * 删了会让那份来源显示成「还没抽取」。
285
+ * - `blob`:水位以上、已经没有任何 revision 引用的才删。水位以下的 blob 一律留着,
286
+ * 因为老版本可能还在引用它们。
287
+ * - `tree`:操作台账,与处理日志同一量级。
288
+ */
289
+ private pruneRetention;
272
290
  /** 记一次**没有内容变更**的操作(迁移收尾、审核结论这一类)。 */
273
291
  recordOperation(entry: TreeEntry, manifest?: Record<string, number>): void;
274
292
  versions(kind: EntityKind, id: string): RevisionRow[];
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge-db.d.ts","sourceRoot":"","sources":["../../../src/store/knowledge-db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"knowledge-db.d.ts","sourceRoot":"","sources":["../../../src/store/knowledge-db.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,7 @@
29
29
  import { createHash } from 'node:crypto';
30
30
  import { mkdir } from 'node:fs/promises';
31
31
  import { dirname } from 'node:path';
32
+ import { applyRetention } from '../retention.js';
32
33
  import { KNOWLEDGE_DB_FILE } from '../layout.js';
33
34
  import { cardCoordinateKey, legacyCardStorageKey } from '../types.js';
34
35
  /** 知识库里那个文件的名字。定义在 `layout.ts`(布局的唯一真源),这里只是本模块的别名。 */
@@ -310,15 +311,26 @@ function rebuildCardTableForSchemaMigration(db) {
310
311
  head_version, created_at, updated_at, object_id, action_id, scene_id)
311
312
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
312
313
  `);
314
+ /** 已经用掉的落位键。同坐标多行时后面那些要退回身份键(见下面的说明)。 */
315
+ const used = new Set();
313
316
  for (const row of rows) {
314
317
  const entityId = String(row.entity_id ?? '');
315
318
  const objectId = String(row.object_id ?? '');
316
319
  const actionId = String(row.action_id ?? '');
317
320
  const sceneId = String(row.scene_id ?? '');
318
321
  const coordinate = coordinateOfRow({ object_id: objectId, action_id: actionId, scene_id: sceneId });
319
- const key = coordinate === undefined
322
+ let key = coordinate === undefined
320
323
  ? legacyCardStorageKey(entityId)
321
324
  : cardCoordinateKey(coordinate);
325
+ /**
326
+ * 同一坐标在旧表里可能有多行(那时还没有坐标唯一约束)。`coordinate_key` 是主键,
327
+ * 一旦冲突整次迁移就回滚 —— 而迁移在打开库时跑,于是**每次启动都打不开这个库**,
328
+ * 也没有修复路径。落在后面的那一行退回按 `entityId` 生成的身份键:两张卡都留住,
329
+ * 坐标冲突交给既有的审计路径去报。`entity_id` 在旧表里是唯一的,所以这个键不会重。
330
+ */
331
+ if (used.has(key))
332
+ key = legacyCardStorageKey(entityId);
333
+ used.add(key);
322
334
  insert.run(key, entityId, String(row.entity_type ?? 'card'), String(row.title ?? ''), String(row.status ?? 'active'), row.owner === null || row.owner === undefined ? null : String(row.owner), String(row.frontmatter ?? '{}'), Number(row.head_version ?? 0), String(row.created_at ?? ''), String(row.updated_at ?? ''), objectId, actionId, sceneId);
323
335
  }
324
336
  db.exec(`DROP TABLE ${quoteIdentifier('card')}`);
@@ -649,6 +661,8 @@ export class KnowledgeDb {
649
661
  db;
650
662
  file;
651
663
  transactionSequence = 0;
664
+ /** 距离上一次保留裁剪又提交了几次写事务。 */
665
+ writesSincePrune = 0;
652
666
  constructor(db, file) {
653
667
  this.db = db;
654
668
  this.file = file;
@@ -740,6 +754,8 @@ export class KnowledgeDb {
740
754
  }
741
755
  }
742
756
  close() {
757
+ // 关库前收一次尾:否则「最后一次裁剪之后新增的行」会一直留到下次打开。
758
+ this.pruneRetention();
743
759
  try {
744
760
  this.db.close();
745
761
  }
@@ -776,6 +792,17 @@ export class KnowledgeDb {
776
792
  const result = fn(tx);
777
793
  this.raw('UPDATE tree SET manifest = ? WHERE op_id = ?').run(tx.manifestJson(), entry.opId);
778
794
  this.db.exec(`RELEASE ${savepoint}`);
795
+ /**
796
+ * 裁剪**每 50 次写入**做一次,不是每次。
797
+ *
798
+ * 每次都做的话,一次卡片写入要额外跑一遍 `ROW_NUMBER()` 按实体分区的窗口(水位以上
799
+ * 收敛到约 20 版/实体,5000 个实体就是十万行排序)外加一次 blob 引用集比对 ——
800
+ * 那是把维护成本摊到每一次交互上。每 50 次一次,界面上感觉不到,库也照样有界。
801
+ */
802
+ if (++this.writesSincePrune >= 50) {
803
+ this.writesSincePrune = 0;
804
+ this.pruneRetention();
805
+ }
779
806
  return result;
780
807
  }
781
808
  catch (cause) {
@@ -786,6 +813,48 @@ export class KnowledgeDb {
786
813
  throw cause;
787
814
  }
788
815
  }
816
+ /**
817
+ * 保留上限(0070)。
818
+ *
819
+ * 文档里写了保留策略,代码里一条 `DELETE` 都没有。这里补上**新数据**的上限,
820
+ * 且只裁「水位以上」的行 —— 升级那一刻已有的历史一行不动(见 `retention.ts`)。
821
+ *
822
+ * - `revision`:机器版本(`auto`)每个实体留最近 20 版;**命名版本永不裁**
823
+ * (`named` 是人对内容做的决定,保留策略里它是永久的)。
824
+ * - `pipeline_extractions`:抽取检查点同时是复用缓存,每份来源留最近 5 份;
825
+ * `pipeline_sources` 指着的那两份(当前抽取 / 当前归一)绝不删 ——
826
+ * 删了会让那份来源显示成「还没抽取」。
827
+ * - `blob`:水位以上、已经没有任何 revision 引用的才删。水位以下的 blob 一律留着,
828
+ * 因为老版本可能还在引用它们。
829
+ * - `tree`:操作台账,与处理日志同一量级。
830
+ */
831
+ pruneRetention() {
832
+ /*
833
+ * 每一张都要先问在不在:`pipeline_extractions` 与 `pipeline_sources` 是**管线模块**
834
+ * 懒建的(`PipelineStore` 的构造函数),而 knowledge.db 可能被别的模块先打开、
835
+ * 也可能根本没跑过管线。少了这一步,这里会以「no such table」把**每一次写入**都打挂。
836
+ *
837
+ * 整个方法包在 try 里还有一层理由:裁剪是**尽力而为**的维护动作,它绝不能成为
838
+ * 一次已提交写入的失败原因。真出错时宁可不裁(库继续变大),也不让用户写不进去。
839
+ */
840
+ try {
841
+ if (tableExists(this.db, 'revision')) {
842
+ applyRetention(this.db, 'revision', { table: 'revision', key: 'rowid', keep: 20, where: "kind = 'auto'", groupBy: "entity_kind || '/' || entity_id" });
843
+ }
844
+ if (tableExists(this.db, 'pipeline_extractions') && tableExists(this.db, 'pipeline_sources')) {
845
+ applyRetention(this.db, 'pipeline_extractions', {
846
+ table: 'pipeline_extractions', key: 'rowid', keep: 5, groupBy: 'source_id',
847
+ where: "id NOT IN (SELECT extracted_id FROM pipeline_sources WHERE extracted_id IS NOT NULL) AND id NOT IN (SELECT normalized_id FROM pipeline_sources WHERE normalized_id IS NOT NULL)",
848
+ });
849
+ }
850
+ if (tableExists(this.db, 'blob') && tableExists(this.db, 'revision')) {
851
+ applyRetention(this.db, 'blob', { table: 'blob', key: 'rowid', keep: 0, where: 'hash NOT IN (SELECT blob_hash FROM revision)' });
852
+ }
853
+ if (tableExists(this.db, 'tree'))
854
+ applyRetention(this.db, 'tree', { table: 'tree', key: 'rowid', keep: 2000 });
855
+ }
856
+ catch { /* 裁剪是尽力而为:不让它成为写入失败的原因 */ }
857
+ }
789
858
  /** 记一次**没有内容变更**的操作(迁移收尾、审核结论这一类)。 */
790
859
  recordOperation(entry, manifest = {}) {
791
860
  this.raw('INSERT OR REPLACE INTO tree(op_id, at, actor, summary, manifest) VALUES (?, ?, ?, ?, ?)')
@@ -1084,12 +1153,13 @@ export class KnowledgeDb {
1084
1153
  * 名字拼成语法错误。
1085
1154
  */
1086
1155
  columnsOf(schema, table) {
1087
- const rows = this.raw('SELECT name, "notnull" AS not_null, dflt_value AS dflt FROM pragma_table_info(?, ?)')
1156
+ const rows = this.raw('SELECT name, "notnull" AS not_null, dflt_value AS dflt, pk FROM pragma_table_info(?, ?)')
1088
1157
  .all(table, schema);
1089
1158
  return rows.map(row => ({
1090
1159
  name: String(row.name ?? ''),
1091
1160
  notNull: Number(row.not_null ?? 0) === 1,
1092
1161
  hasDefault: row.dflt !== null && row.dflt !== undefined,
1162
+ pk: Number(row.pk ?? 0),
1093
1163
  }));
1094
1164
  }
1095
1165
  /**
@@ -1188,12 +1258,47 @@ export class KnowledgeDb {
1188
1258
  }
1189
1259
  const columns = shared.map(quoteIdentifier).join(', ');
1190
1260
  const expected = Number(this.db.prepare(`SELECT count(*) AS c FROM legacy.${quoteIdentifier(name)}`).get()?.c ?? 0);
1191
- this.db.exec(`INSERT OR IGNORE INTO main.${quoteIdentifier(name)} (${columns}) SELECT ${columns} FROM legacy.${quoteIdentifier(name)}`);
1261
+ /**
1262
+ * 「有没有丢行」要按**三个账**算(0070):`already`(插入**之前**主键就已存在)、
1263
+ * `inserted`(本次真的插进去的)、以及两者之外的 `unaccounted`
1264
+ * —— 被唯一索引 / 非空 / 检查约束挡掉的那些才是真的丢。
1265
+ *
1266
+ * **顺序很要紧**:`already` 必须在 `INSERT` 之前数。插完再数会把本次插入的行
1267
+ * 也算进去,重复计数恰好把丢行掩盖成 0(试过,就是这样漏掉一行的)。
1268
+ *
1269
+ * 原来那条 `copied < expected`(拿目标**总行数**比旧文件行数)则**永远不成立** ——
1270
+ * 每一次主键冲突都对应一行早就存在 —— 于是丢行之后调用方还会把旧库删掉。
1271
+ */
1272
+ const keyColumns = this.columnsOf('main', name).filter(column => column.pk > 0).map(column => column.name);
1273
+ const comparable = shared.filter(column => !keyColumns.includes(column));
1274
+ const already = keyColumns.length === 0 ? 0 : Number(this.db.prepare(`SELECT COUNT(*) AS c FROM legacy.${quoteIdentifier(name)} l WHERE EXISTS (
1275
+ SELECT 1 FROM main.${quoteIdentifier(name)} m WHERE ${keyColumns.map(column => `m.${quoteIdentifier(column)} IS l.${quoteIdentifier(column)}`).join(' AND ')}
1276
+ )`).get()?.c ?? 0);
1277
+ const run = this.db.prepare(`INSERT OR IGNORE INTO main.${quoteIdentifier(name)} (${columns}) SELECT ${columns} FROM legacy.${quoteIdentifier(name)}`).run();
1278
+ const inserted = Number(run?.changes ?? 0);
1192
1279
  const copied = Number(this.db.prepare(`SELECT count(*) AS c FROM main.${quoteIdentifier(name)}`).get()?.c ?? 0);
1193
1280
  tables[name] = copied;
1194
- // 目标里原本可能已经有行(重跑、或者两个来源都写过),所以判据是「不少于」。
1195
- if (copied < expected)
1196
- problems.push(`${name} 只拷进 ${copied} 行,原有 ${expected} 行`);
1281
+ if (keyColumns.length === 0) {
1282
+ if (inserted < expected)
1283
+ problems.push(`${name} 只拷进 ${inserted} 行(旧文件 ${expected} 行):这张表没有主键,无法逐行核对,旧文件不删`);
1284
+ }
1285
+ else {
1286
+ const unaccounted = expected - already - inserted;
1287
+ if (unaccounted > 0)
1288
+ problems.push(`${name} 有 ${unaccounted} 行没能进来(主键之外还有唯一索引 / 非空 / 检查约束挡住的行):旧文件不删`);
1289
+ /**
1290
+ * 纯主键表(例如 `entity_asset(entity_kind, entity_id, ref)`)没有可比的非键列:
1291
+ * 主键相同就是同一行。重跑时报「无法比对内容」是误报,会让旧文件永久留在磁盘上。
1292
+ */
1293
+ if (comparable.length > 0) {
1294
+ const onEq = keyColumns.map(column => `m.${quoteIdentifier(column)} = l.${quoteIdentifier(column)}`).join(' AND ');
1295
+ // `IS NOT` 而不是 `<>`:NULL 与任何值都不相等,用 `<>` 会把「一边是 NULL」漏判。
1296
+ const differs = Number(this.db.prepare(`SELECT COUNT(*) AS c FROM legacy.${quoteIdentifier(name)} l JOIN main.${quoteIdentifier(name)} m ON ${onEq}
1297
+ WHERE ${comparable.map(column => `m.${quoteIdentifier(column)} IS NOT l.${quoteIdentifier(column)}`).join(' OR ')}`).get()?.c ?? 0);
1298
+ if (differs > 0)
1299
+ problems.push(`${name} 有 ${differs} 行与目标库主键相同但内容不同:旧文件不删`);
1300
+ }
1301
+ }
1197
1302
  }
1198
1303
  catch (cause) {
1199
1304
  problems.push(`${name} 的行没拷成:${cause instanceof Error ? cause.message : String(cause)}`);