dsh-data-domain-knowledge 0.1.0-alpha.2 → 0.1.0-alpha.4

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 (180) hide show
  1. package/README.md +147 -19
  2. package/cordis.patch.yml +25 -10
  3. package/lib/client.js +6400 -3326
  4. package/lib/doc-page.js +7761 -0
  5. package/lib/types/convert/host.d.ts.map +1 -1
  6. package/lib/types/convert/host.js +63 -11
  7. package/lib/types/convert/host.js.map +1 -1
  8. package/lib/types/convert/ingest.d.ts +7 -4
  9. package/lib/types/convert/ingest.d.ts.map +1 -1
  10. package/lib/types/convert/ingest.js +52 -14
  11. package/lib/types/convert/ingest.js.map +1 -1
  12. package/lib/types/convert/types.d.ts +2 -2
  13. package/lib/types/convert/types.d.ts.map +1 -1
  14. package/lib/types/convert/types.js +2 -2
  15. package/lib/types/convert/types.js.map +1 -1
  16. package/lib/types/diagnosis/cards.d.ts +8 -7
  17. package/lib/types/diagnosis/cards.d.ts.map +1 -1
  18. package/lib/types/diagnosis/cards.js +119 -49
  19. package/lib/types/diagnosis/cards.js.map +1 -1
  20. package/lib/types/diagnosis/run.d.ts +57 -0
  21. package/lib/types/diagnosis/run.d.ts.map +1 -0
  22. package/lib/types/diagnosis/run.js +245 -0
  23. package/lib/types/diagnosis/run.js.map +1 -0
  24. package/lib/types/diagnosis/schema.d.ts +25 -2
  25. package/lib/types/diagnosis/schema.d.ts.map +1 -1
  26. package/lib/types/diagnosis/schema.js +64 -25
  27. package/lib/types/diagnosis/schema.js.map +1 -1
  28. package/lib/types/diagnosis/seed-source.d.ts +17 -2
  29. package/lib/types/diagnosis/seed-source.d.ts.map +1 -1
  30. package/lib/types/diagnosis/seed-source.js +19 -2
  31. package/lib/types/diagnosis/seed-source.js.map +1 -1
  32. package/lib/types/diagnosis/seed.d.ts +32 -42
  33. package/lib/types/diagnosis/seed.d.ts.map +1 -1
  34. package/lib/types/diagnosis/seed.js +187 -51
  35. package/lib/types/diagnosis/seed.js.map +1 -1
  36. package/lib/types/diagnosis/store.d.ts +95 -25
  37. package/lib/types/diagnosis/store.d.ts.map +1 -1
  38. package/lib/types/diagnosis/store.js +297 -166
  39. package/lib/types/diagnosis/store.js.map +1 -1
  40. package/lib/types/diagnosis/types.d.ts +168 -16
  41. package/lib/types/diagnosis/types.d.ts.map +1 -1
  42. package/lib/types/diagnosis/types.js +1 -1
  43. package/lib/types/diagnosis/types.js.map +1 -1
  44. package/lib/types/document-page.d.ts +39 -0
  45. package/lib/types/document-page.d.ts.map +1 -0
  46. package/lib/types/document-page.js +43 -0
  47. package/lib/types/document-page.js.map +1 -0
  48. package/lib/types/extract-model.d.ts +67 -27
  49. package/lib/types/extract-model.d.ts.map +1 -1
  50. package/lib/types/extract-model.js +225 -97
  51. package/lib/types/extract-model.js.map +1 -1
  52. package/lib/types/extract.d.ts +16 -0
  53. package/lib/types/extract.d.ts.map +1 -1
  54. package/lib/types/extract.js +19 -2
  55. package/lib/types/extract.js.map +1 -1
  56. package/lib/types/fs-atomic.d.ts +11 -0
  57. package/lib/types/fs-atomic.d.ts.map +1 -0
  58. package/lib/types/fs-atomic.js +41 -0
  59. package/lib/types/fs-atomic.js.map +1 -0
  60. package/lib/types/index.d.ts.map +1 -1
  61. package/lib/types/index.js +466 -63
  62. package/lib/types/index.js.map +1 -1
  63. package/lib/types/intent/types.js +1 -1
  64. package/lib/types/intent/types.js.map +1 -1
  65. package/lib/types/knowledge-bases.d.ts +23 -12
  66. package/lib/types/knowledge-bases.d.ts.map +1 -1
  67. package/lib/types/knowledge-bases.js +37 -44
  68. package/lib/types/knowledge-bases.js.map +1 -1
  69. package/lib/types/layout.d.ts +3 -3
  70. package/lib/types/layout.d.ts.map +1 -1
  71. package/lib/types/layout.js +4 -4
  72. package/lib/types/layout.js.map +1 -1
  73. package/lib/types/migrate.d.ts +1 -1
  74. package/lib/types/migrate.js +2 -2
  75. package/lib/types/migrate.js.map +1 -1
  76. package/lib/types/model-text.d.ts +99 -0
  77. package/lib/types/model-text.d.ts.map +1 -0
  78. package/lib/types/model-text.js +103 -0
  79. package/lib/types/model-text.js.map +1 -0
  80. package/lib/types/present.d.ts +239 -0
  81. package/lib/types/present.d.ts.map +1 -0
  82. package/lib/types/present.js +255 -0
  83. package/lib/types/present.js.map +1 -0
  84. package/lib/types/recall-rank.d.ts +37 -0
  85. package/lib/types/recall-rank.d.ts.map +1 -1
  86. package/lib/types/recall-rank.js +41 -1
  87. package/lib/types/recall-rank.js.map +1 -1
  88. package/lib/types/runtime.d.ts +564 -31
  89. package/lib/types/runtime.d.ts.map +1 -1
  90. package/lib/types/runtime.js +2645 -292
  91. package/lib/types/runtime.js.map +1 -1
  92. package/lib/types/settings-schema.d.ts +4 -2
  93. package/lib/types/settings-schema.d.ts.map +1 -1
  94. package/lib/types/settings-schema.js +2 -0
  95. package/lib/types/settings-schema.js.map +1 -1
  96. package/lib/types/source-images.d.ts +118 -0
  97. package/lib/types/source-images.d.ts.map +1 -0
  98. package/lib/types/source-images.js +288 -0
  99. package/lib/types/source-images.js.map +1 -0
  100. package/lib/types/types.d.ts +356 -28
  101. package/lib/types/types.d.ts.map +1 -1
  102. package/lib/types/types.js +112 -18
  103. package/lib/types/types.js.map +1 -1
  104. package/lib/types/wiki-finalize.d.ts +140 -0
  105. package/lib/types/wiki-finalize.d.ts.map +1 -0
  106. package/lib/types/wiki-finalize.js +269 -0
  107. package/lib/types/wiki-finalize.js.map +1 -0
  108. package/lib/types/wiki-types.d.ts +10 -2
  109. package/lib/types/wiki-types.d.ts.map +1 -1
  110. package/lib/types/wiki-types.js +27 -30
  111. package/lib/types/wiki-types.js.map +1 -1
  112. package/package.json +4 -3
  113. package/preset/tita-data-agent/agent.cordis.yml +25 -10
  114. package/src/client/DirectoryPicker.tsx +12 -12
  115. package/src/client/DrawerSection.tsx +18 -0
  116. package/src/client/InfoHint.tsx +21 -8
  117. package/src/client/IntentTab.tsx +20 -26
  118. package/src/client/KnowledgeBaseTab.tsx +458 -158
  119. package/src/client/KnowledgePanel.tsx +44 -10
  120. package/src/client/KnowledgeStepRail.tsx +3 -0
  121. package/src/client/KnowledgeToolRow.tsx +331 -0
  122. package/src/client/NodeSettings.tsx +20 -22
  123. package/src/client/PreviewSections.tsx +178 -43
  124. package/src/client/RecallPanel.tsx +418 -127
  125. package/src/client/TypeDefinitionDrawer.tsx +154 -54
  126. package/src/client/WikiCardReview.tsx +266 -0
  127. package/src/client/WikiFlowCard.tsx +57 -95
  128. package/src/client/WikiTypeEditor.tsx +197 -95
  129. package/src/client/arch/AgentArchitectureGraph.tsx +30 -14
  130. package/src/client/arch/NodeLogicPanel.tsx +6 -3
  131. package/src/client/arch/model.ts +164 -26
  132. package/src/client/architecture.css +25 -10
  133. package/src/client/architecture.tsx +66 -41
  134. package/src/client/asset-images.ts +125 -0
  135. package/src/client/attribution/AttributionGraph.tsx +481 -34
  136. package/src/client/attribution/AttributionTab.tsx +501 -106
  137. package/src/client/attribution/CaseView.tsx +9 -14
  138. package/src/client/attribution/GraphStage.tsx +25 -18
  139. package/src/client/attribution/RunView.tsx +27 -9
  140. package/src/client/attribution/StageChrome.tsx +280 -140
  141. package/src/client/attribution/graph-options.ts +611 -47
  142. package/src/client/attribution/model.ts +559 -30
  143. package/src/client/convert/ConvertPanel.tsx +36 -4
  144. package/src/client/doc-page.css +134 -0
  145. package/src/client/doc-page.tsx +242 -0
  146. package/src/client/index.ts +18 -0
  147. package/src/client/panel-state.ts +105 -0
  148. package/src/client/problem-domains.ts +1 -1
  149. package/src/client/request.ts +36 -0
  150. package/src/client/styles.css +397 -54
  151. package/src/client/useFitScale.ts +15 -2
  152. package/src/client/wiki-type-groups.ts +86 -0
  153. package/src/convert/host.ts +68 -9
  154. package/src/convert/ingest.ts +61 -18
  155. package/src/convert/types.ts +2 -2
  156. package/src/diagnosis/cards.ts +120 -50
  157. package/src/diagnosis/run.ts +251 -0
  158. package/src/diagnosis/schema.ts +67 -26
  159. package/src/diagnosis/seed-source.ts +29 -4
  160. package/src/diagnosis/seed.ts +187 -85
  161. package/src/diagnosis/store.ts +310 -173
  162. package/src/diagnosis/types.ts +181 -16
  163. package/src/document-page.ts +51 -0
  164. package/src/extract-model.ts +254 -99
  165. package/src/extract.ts +35 -3
  166. package/src/fs-atomic.ts +41 -0
  167. package/src/index.ts +499 -62
  168. package/src/intent/types.ts +1 -1
  169. package/src/knowledge-bases.ts +50 -49
  170. package/src/layout.ts +4 -4
  171. package/src/migrate.ts +2 -2
  172. package/src/model-text.ts +126 -0
  173. package/src/present.ts +367 -0
  174. package/src/recall-rank.ts +57 -2
  175. package/src/runtime.ts +2802 -293
  176. package/src/settings-schema.ts +2 -0
  177. package/src/source-images.ts +326 -0
  178. package/src/types.ts +446 -45
  179. package/src/wiki-finalize.ts +310 -0
  180. package/src/wiki-types.ts +28 -32
@@ -0,0 +1,245 @@
1
+ /**
2
+ * 一次排查的记录 —— `01_source_raw/agent_diagnosis_case/` 那条 SourceRaw 的编解码。
3
+ *
4
+ * ## 为什么它是一条 SourceRaw,而不是一个自造的 jsonl
5
+ *
6
+ * 排查产物要能被 `query_source_truth` 读到、被卡片引用、被 SourceRaw 已有的治理覆盖
7
+ * (分类、版本、检索),就得是一条 SourceRaw。自造一个 jsonl 格式,等于在知识库旁边
8
+ * 再养一套只读不进链路的数据 —— 这也是 0021 §0.3 撤销 `05_diagnosis/` 的直接原因。
9
+ *
10
+ * ## 它与案例卡片的区别
11
+ *
12
+ * | | 谁写 | 性质 |
13
+ * | --- | --- | --- |
14
+ * | 这条 SourceRaw(`agent_diagnosis_case`) | **Agent**,每次排查结束自动写 | 跑出来的**过程记录** |
15
+ * | 案例卡片(`diagnosis/case`) | Agent 提议 → **人确认** | 归纳出来的**结论** |
16
+ *
17
+ * 同一件事可以有两条记录,它们不是重复:一个回答「当时怎么走的」,一个回答「结论是什么」。
18
+ * 而案例卡片必须经人确认 —— 它落在类型层收敛的那一侧,见 0021 §6.1。
19
+ *
20
+ * ## 三段式
21
+ *
22
+ * 与卡片同构:正文小节给人读、` ```json diagnosis-run ` 块给机器读。序和枚举一进散文,
23
+ * 归并算法就再也读不到它了。
24
+ */
25
+ /** 机器可读块的围栏标记。与卡片的 `json diagnosis` 分开,两种块不会互相误读。 */
26
+ const RUN_FENCE = 'json diagnosis-run';
27
+ /** 证据节点的标题取自 `result`;太长就截断,完整值仍在节点上。 */
28
+ const EVIDENCE_TITLE_CHARS = 60;
29
+ /**
30
+ * 一次排查的记录 → SourceRaw 正文。
31
+ *
32
+ * 正文按「现象 / 走过的路径 / 结论」三段组织:那是人打开这条来源时想看的三件事,
33
+ * 而机器要读的一切都在下面的块里。
34
+ */
35
+ export function renderRunSource(record) {
36
+ const path = record.path.length > 0
37
+ ? record.path.map(step => `- \`${step.label}\` ${step.note}${step.refuted ? '(否定)' : ''}`).join('\n')
38
+ : '(这次没有记录路径)';
39
+ const evidence = record.evidence.length > 0
40
+ ? record.evidence.map(item => `- \`${item.id}\` 跑 \`${item.checkPointId}\`:${item.result} —— ${verdictWord(item.verdict)}${item.why ? `,因为${item.why}` : ''}`).join('\n')
41
+ : '(这次没有产出证据)';
42
+ const conclusion = record.rootCause
43
+ ? [`**根因**:${record.rootCause.text}`, record.rootCause.fixAction ? `**修复**:${record.rootCause.fixAction}` : ''].filter(Boolean).join('\n\n')
44
+ : '(这次没有确认根因)';
45
+ const misleading = record.misleading && record.misleading.length > 0
46
+ ? `\n\n## 误导段\n\n${record.misleading.map(item => `- ${item.label}:浪费 ${item.wastedMinutes} 分钟。${item.why}`).join('\n')}`
47
+ : '';
48
+ return [
49
+ '## 现象',
50
+ '',
51
+ `入口现象 \`${record.symptomId}\`,开始于 ${record.startedAt},总耗时 ${record.durationMinutes} 分钟。`,
52
+ '',
53
+ '## 走过的路径',
54
+ '',
55
+ path,
56
+ '',
57
+ '## 每个检查点的产出',
58
+ '',
59
+ evidence,
60
+ '',
61
+ '## 结论',
62
+ '',
63
+ conclusion,
64
+ misleading,
65
+ '',
66
+ '```' + RUN_FENCE,
67
+ JSON.stringify(record, null, 2),
68
+ '```',
69
+ '',
70
+ ].join('\n');
71
+ }
72
+ function verdictWord(verdict) {
73
+ if (verdict === 'supports')
74
+ return '支持';
75
+ if (verdict === 'refutes')
76
+ return '否定';
77
+ return '给不出结论';
78
+ }
79
+ /** SourceRaw 正文 → 记录。块坏了或缺 runId 时返回 undefined(调用方如实报问题,不猜)。 */
80
+ export function parseRunSource(content) {
81
+ const match = content.match(new RegExp('```' + RUN_FENCE + '\\s*\\n([\\s\\S]*?)```'));
82
+ if (!match)
83
+ return undefined;
84
+ let value;
85
+ try {
86
+ value = JSON.parse(match[1]);
87
+ }
88
+ catch {
89
+ return undefined;
90
+ }
91
+ if (!value || typeof value !== 'object' || Array.isArray(value))
92
+ return undefined;
93
+ const record = value;
94
+ if (typeof record.runId !== 'string' || !record.runId.trim())
95
+ return undefined;
96
+ if (typeof record.symptomId !== 'string' || !record.symptomId.trim())
97
+ return undefined;
98
+ return {
99
+ runId: record.runId,
100
+ symptomId: record.symptomId,
101
+ startedAt: typeof record.startedAt === 'string' ? record.startedAt : '',
102
+ durationMinutes: typeof record.durationMinutes === 'number' ? record.durationMinutes : 0,
103
+ path: Array.isArray(record.path) ? record.path : [],
104
+ evidence: Array.isArray(record.evidence) ? record.evidence.filter(isEvidence) : [],
105
+ ...(record.rootCause && typeof record.rootCause === 'object' ? { rootCause: record.rootCause } : {}),
106
+ ...(Array.isArray(record.misleading) ? { misleading: record.misleading } : {}),
107
+ };
108
+ }
109
+ function isEvidence(value) {
110
+ if (!value || typeof value !== 'object')
111
+ return false;
112
+ const item = value;
113
+ return typeof item.id === 'string' && typeof item.checkPointId === 'string'
114
+ && (item.verdict === 'supports' || item.verdict === 'refutes' || item.verdict === 'inconclusive');
115
+ }
116
+ /** 根因节点 id:记录里给了就用它,没给就按假设 id 生成一个稳定的。 */
117
+ export function causeIdOf(record) {
118
+ if (!record.rootCause)
119
+ return undefined;
120
+ return record.rootCause.id?.trim() || `C-${record.rootCause.hypothesisId}`;
121
+ }
122
+ /**
123
+ * 记录 → 实例层节点与四条执行边。
124
+ *
125
+ * **它只产出执行产物**:`evidence` / `cause` 节点与 `produces` / `supports` / `refutes` /
126
+ * `confirmed_as`。类型层(现象、假设、检查点、失败原因)永远来自卡片 —— 把两者混在一起,
127
+ * 一次执行的结果就会被伪装成可复用的知识(§6.7 的边界表)。
128
+ */
129
+ export function runToGraph(record) {
130
+ const nodes = [];
131
+ const edges = [];
132
+ const problems = [];
133
+ const seen = new Set();
134
+ for (const item of record.evidence) {
135
+ if (seen.has(item.id))
136
+ problems.push(`证据 ${item.id} 在这次排查里出现了两次 —— 同一份产出只能有一个 id`);
137
+ seen.add(item.id);
138
+ const result = item.result ?? '';
139
+ nodes.push({
140
+ id: item.id,
141
+ kind: 'evidence',
142
+ layer: 'instance',
143
+ title: result.length > EVIDENCE_TITLE_CHARS ? `${result.slice(0, EVIDENCE_TITLE_CHARS)}…` : result || item.id,
144
+ summary: item.why,
145
+ query: item.query,
146
+ result,
147
+ verdict: item.verdict,
148
+ why: item.why,
149
+ at: item.at,
150
+ by: item.by,
151
+ ...(item.rawRef ? { rawRef: item.rawRef } : {}),
152
+ });
153
+ edges.push({ id: `run-${record.runId}-${item.checkPointId}-${item.id}`, source: item.checkPointId, target: item.id, kind: 'produces' });
154
+ // 给不出结论的证据**不挂支持 / 否定边**:它不是「弱支持」,它是没有结论。
155
+ // 把它挂成 supports 会让最贵的教训(便宜检查给不出结论)从模型里消失。
156
+ if (item.verdict !== 'inconclusive' && item.hypothesisId) {
157
+ edges.push({
158
+ id: `run-${record.runId}-${item.id}-${item.hypothesisId}`,
159
+ source: item.id,
160
+ target: item.hypothesisId,
161
+ kind: item.verdict === 'supports' ? 'supports' : 'refutes',
162
+ });
163
+ }
164
+ }
165
+ const causeId = causeIdOf(record);
166
+ if (record.rootCause && causeId) {
167
+ nodes.push({
168
+ id: causeId,
169
+ kind: 'cause',
170
+ layer: 'instance',
171
+ title: record.rootCause.text,
172
+ ...(record.rootCause.fixAction ? { summary: record.rootCause.fixAction } : {}),
173
+ ...(record.rootCause.confirmedAt ? { at: record.rootCause.confirmedAt } : {}),
174
+ });
175
+ edges.push({ id: `run-${record.runId}-${record.rootCause.hypothesisId}-${causeId}`, source: record.rootCause.hypothesisId, target: causeId, kind: 'confirmed_as' });
176
+ }
177
+ return { nodes, edges, problems };
178
+ }
179
+ /**
180
+ * 引用完整性:一次排查里的每个 id 都必须在图上真实存在。
181
+ *
182
+ * 缺了这条,一条写错 id 的诊断日志会在图上留下悬空的执行边 —— 而
183
+ * `validateDiagnosis` 只在读图之后才看得到,那时已经分不清是卡片错了还是日志错了。
184
+ *
185
+ * `knownIds` 要**同时包含卡片那部分与这次排查自己产出的那部分**:路径里的 `E1` / `C1`
186
+ * 正是这次排查自己写下的,只拿卡片图去比会把它们全判成悬空。
187
+ */
188
+ export function runReferenceProblems(record, knownIds) {
189
+ const ids = knownIds;
190
+ const problems = [];
191
+ if (!ids.has(record.symptomId))
192
+ problems.push(`诊断日志 ${record.runId} 的入口现象 ${record.symptomId} 不存在`);
193
+ for (const item of record.evidence) {
194
+ if (!ids.has(item.checkPointId))
195
+ problems.push(`诊断日志 ${record.runId} 的证据 ${item.id} 指向不存在的检查点 ${item.checkPointId}`);
196
+ if (item.hypothesisId && !ids.has(item.hypothesisId))
197
+ problems.push(`诊断日志 ${record.runId} 的证据 ${item.id} 指向不存在的假设 ${item.hypothesisId}`);
198
+ }
199
+ if (record.rootCause && !ids.has(record.rootCause.hypothesisId)) {
200
+ problems.push(`诊断日志 ${record.runId} 的根因指向不存在的假设 ${record.rootCause.hypothesisId}`);
201
+ }
202
+ for (const step of record.path) {
203
+ if (!ids.has(step.nodeId))
204
+ problems.push(`诊断日志 ${record.runId} 的路径节点 ${step.nodeId} 不存在`);
205
+ }
206
+ return problems;
207
+ }
208
+ /**
209
+ * 把一次排查归纳成一张**案例卡片**(还只是提议,要人确认才生效)。
210
+ *
211
+ * 归纳这一步是「过程记录 → 可复用知识」的那一跳,也是唯一需要人看的一跳:
212
+ * 路径里哪几步其实是误导、根因一句话怎么写,都是判断题。
213
+ */
214
+ /**
215
+ * 一次排查的案例卡片草案(0044 前叫 `caseProposalOf`)。
216
+ *
217
+ * 改名是因为它产出的东西**直接落卡**,不再是一条提议:名字里留着 `Proposal` 会让下一个
218
+ * 读的人继续在两个时代之间猜。函数体一行没动 —— 它本来就是「从一条排查记录编出一张案例卡」。
219
+ */
220
+ export function caseCardOf(record, symptomTitle) {
221
+ const rootCause = record.rootCause?.text ?? '(这次没有确认根因)';
222
+ const firstMisleading = record.misleading?.[0];
223
+ return {
224
+ entityId: `CASE-${record.runId}`,
225
+ entityType: 'diagnosis/case',
226
+ title: symptomTitle,
227
+ status: 'unreviewed',
228
+ sourceRefs: [],
229
+ sections: [
230
+ { heading: '现象', body: `入口现象 \`${record.symptomId}\`(${symptomTitle}),开始于 ${record.startedAt}。` },
231
+ { heading: '影响面', body: '(待补:这次影响到了谁、范围多大)' },
232
+ { heading: '排查过程', body: record.path.map(step => `- \`${step.label}\` ${step.note}${step.refuted ? '(否定)' : ''}`).join('\n') || '(没有记录路径)' },
233
+ { heading: '根因', body: rootCause },
234
+ { heading: '修复与防复发', body: record.rootCause?.fixAction ?? '(待补:修复动作与防复发措施)' },
235
+ ],
236
+ block: {
237
+ symptom: record.symptomId,
238
+ path: record.path,
239
+ duration_minutes: record.durationMinutes,
240
+ ...(firstMisleading ? { misleading: firstMisleading } : {}),
241
+ root_cause: rootCause,
242
+ },
243
+ };
244
+ }
245
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/diagnosis/run.ts"],"names":[],"mappings":"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"}
@@ -14,8 +14,11 @@ import type { AttributionGraphData, AttributionNodeKind } from './types.js';
14
14
  * 序和枚举一旦写进散文,归并算法就再也读不到它们了。
15
15
  * 3. **校验必须分三层报错**:格式 / 引用完整性 / 语义。混成同一个「校验失败」,
16
16
  * 人就学不会怎么写卡片。
17
+ *
18
+ * 两处更名(0021 v1.1 / v1.2):`check` → **`check_point`**(检查点)、
19
+ * `failure-mode` → **`failure_reason`**(失败原因)。kind 用下划线,卡片类型用连字符。
17
20
  */
18
- export type DiagnosisEntityType = 'diagnosis/symptom' | 'diagnosis/hypothesis' | 'diagnosis/check' | 'diagnosis/failure-mode' | 'diagnosis/case';
21
+ export type DiagnosisEntityType = 'diagnosis/symptom' | 'diagnosis/hypothesis' | 'diagnosis/check-point' | 'diagnosis/failure-reason' | 'diagnosis/case';
19
22
  export interface DiagnosisFieldSpec {
20
23
  name: string;
21
24
  /** 由系统回填,人工不得手写 —— 否则先验可以被人为篡改,优先分就失去意义。 */
@@ -40,6 +43,17 @@ export interface DiagnosisEntitySpec {
40
43
  * 「校验通过了但编译器不认」)。
41
44
  */
42
45
  export declare const DIAGNOSIS_ENTITY_TYPES: DiagnosisEntityType[];
46
+ /**
47
+ * 改名之前的两个 `entity_type`,以及它们对应的新名字。
48
+ *
49
+ * 留着这张表是为了**存量卡片不静默消失**:磁盘上还叫 `diagnosis/check` 的卡片,
50
+ * 如果读的时候直接判为「未知类型」,后果是这张卡片既不进 wikiNotes、也不上图,
51
+ * 而且没有任何报错。所以读取端按别名认,写入端做一次性迁移(见
52
+ * `runtime.migrateLegacyDiagnosisCards`)。
53
+ */
54
+ export declare const LEGACY_ENTITY_TYPES: Record<string, DiagnosisEntityType>;
55
+ /** 卡片里那个旧字段名 → 新字段名。`failure_mode` 改叫 `failure_reason`。 */
56
+ export declare const LEGACY_BLOCK_FIELDS: Record<string, string>;
43
57
  /** 不是 wiki 卡片、但仍属于同一张图的节点类型。校验不按卡片规则要求它们。 */
44
58
  export declare const NON_CARD_KINDS: AttributionNodeKind[];
45
59
  /** 所有类型共有的信封字段。 */
@@ -58,8 +72,17 @@ export declare function specOf(kind: AttributionNodeKind): DiagnosisEntitySpec |
58
72
  *
59
73
  * 分开报错不是洁癖:**格式错说明卡片没填完,引用错说明图断了,语义错说明这条知识
60
74
  * 本身没用**。三者对应的动作完全不同(补字段 / 修边 / 重写),混在一起就只能靠猜。
75
+ *
76
+ * 它同时是**提议阶段与确认阶段的前置**(0021 §6.5):两道都跑,是因为这两次修改
77
+ * 来自不同的人。
61
78
  */
62
79
  export declare function validateDiagnosis(graph: AttributionGraphData): DiagnosisIssue[];
63
- /** 空的模板卡:新人写卡片时看的是它,不是 schema。 */
80
+ /**
81
+ * 空的模板卡:新人写卡片时看的是它,不是 schema。
82
+ *
83
+ * 模板卡**由类型定义派生、不再落成磁盘文件**(0021 §6.6):模板是类型定义的一种
84
+ * 呈现,定义搬进设置,模板跟着走 —— 否则会出现「设置里改了、磁盘上那份没改」的
85
+ * 第二真源。
86
+ */
64
87
  export declare function templateCard(spec: DiagnosisEntitySpec): string;
65
88
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/diagnosis/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAmB,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAG5F;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,MAAM,mBAAmB,GAC3B,mBAAmB,GACnB,sBAAsB,GACtB,iBAAiB,GACjB,wBAAwB,GACxB,gBAAgB,CAAA;AAEpB,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,mBAAmB,CAAA;IAC/B,IAAI,EAAE,mBAAmB,CAAA;IACzB,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAA;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,qEAAqE;IACrE,MAAM,EAAE,kBAAkB,EAAE,CAAA;IAC5B,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EAMvD,CAAA;AAED,6CAA6C;AAC7C,eAAO,MAAM,cAAc,EAAE,mBAAmB,EAA8C,CAAA;AAE9F,mBAAmB;AACnB,eAAO,MAAM,kBAAkB,EAAE,kBAAkB,EAOlD,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,mBAAmB,EAyEnD,CAAA;AAKD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAA;AAErE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,mBAAmB,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAMD,wBAAgB,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG,mBAAmB,GAAG,SAAS,CAEjF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,GAAG,cAAc,EAAE,CAsE/E;AAED,kCAAkC;AAClC,wBAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAY9D"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/diagnosis/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAmB,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAG5F;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,mBAAmB,GAC3B,mBAAmB,GACnB,sBAAsB,GACtB,uBAAuB,GACvB,0BAA0B,GAC1B,gBAAgB,CAAA;AAEpB,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,mBAAmB,CAAA;IAC/B,IAAI,EAAE,mBAAmB,CAAA;IACzB,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAA;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,qEAAqE;IACrE,MAAM,EAAE,kBAAkB,EAAE,CAAA;IAC5B,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EAMvD,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAGnE,CAAA;AAED,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAEtD,CAAA;AAED,6CAA6C;AAC7C,eAAO,MAAM,cAAc,EAAE,mBAAmB,EAA8C,CAAA;AAE9F,mBAAmB;AACnB,eAAO,MAAM,kBAAkB,EAAE,kBAAkB,EAOlD,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,mBAAmB,EA0EnD,CAAA;AAKD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAA;AAErE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,mBAAmB,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAMD,wBAAgB,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG,mBAAmB,GAAG,SAAS,CAEjF;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,GAAG,cAAc,EAAE,CAgF/E;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAY9D"}
@@ -9,10 +9,26 @@ import { PROBLEM_CLASS_LABEL, problemClassIds, problemSubclassOf } from './probl
9
9
  export const DIAGNOSIS_ENTITY_TYPES = [
10
10
  'diagnosis/symptom',
11
11
  'diagnosis/hypothesis',
12
- 'diagnosis/check',
13
- 'diagnosis/failure-mode',
12
+ 'diagnosis/check-point',
13
+ 'diagnosis/failure-reason',
14
14
  'diagnosis/case',
15
15
  ];
16
+ /**
17
+ * 改名之前的两个 `entity_type`,以及它们对应的新名字。
18
+ *
19
+ * 留着这张表是为了**存量卡片不静默消失**:磁盘上还叫 `diagnosis/check` 的卡片,
20
+ * 如果读的时候直接判为「未知类型」,后果是这张卡片既不进 wikiNotes、也不上图,
21
+ * 而且没有任何报错。所以读取端按别名认,写入端做一次性迁移(见
22
+ * `runtime.migrateLegacyDiagnosisCards`)。
23
+ */
24
+ export const LEGACY_ENTITY_TYPES = {
25
+ 'diagnosis/check': 'diagnosis/check-point',
26
+ 'diagnosis/failure-mode': 'diagnosis/failure-reason',
27
+ };
28
+ /** 卡片里那个旧字段名 → 新字段名。`failure_mode` 改叫 `failure_reason`。 */
29
+ export const LEGACY_BLOCK_FIELDS = {
30
+ failure_mode: 'failure_reason',
31
+ };
16
32
  /** 不是 wiki 卡片、但仍属于同一张图的节点类型。校验不按卡片规则要求它们。 */
17
33
  export const NON_CARD_KINDS = ['asset', 'evidence', 'cause', 'unknown'];
18
34
  /** 所有类型共有的信封字段。 */
@@ -29,11 +45,11 @@ export const DIAGNOSIS_ENTITIES = [
29
45
  entityType: 'diagnosis/symptom',
30
46
  kind: 'symptom',
31
47
  layer: 'type',
32
- label: '现象类型',
48
+ label: '现象',
33
49
  fields: [
34
50
  { name: 'observable', note: '可观测口径:指标 + 维度 + 时间窗' },
35
51
  { name: 'entry_when', note: '什么条件下适用' },
36
- { name: 'problem_class', note: '问题大类:mandatory,取值只能来自 §4.5 的四个大类' },
52
+ { name: 'problem_class', note: '问题大类:必填,取值只能来自 §4.5 的四个大类' },
37
53
  { name: 'problem_subclass', note: '问题子类:必须属于所选大类;它同时决定 §5.1 的 shape / time_pattern' },
38
54
  ],
39
55
  sections: ['观测口径', '典型信号', '不适用的情况', '关联假设'],
@@ -46,34 +62,35 @@ export const DIAGNOSIS_ENTITIES = [
46
62
  fields: [
47
63
  { name: 'discriminator', note: '**一句可判真假的话** —— 它同时是查重的比对对象' },
48
64
  { name: 'not_when', note: '**反例边界**:什么情况下这个假设不成立。refutes 边在文档层的表达' },
49
- { name: 'failure_mode', note: '切面:upstream-missing | spec-change | data-processing | consumption | permission' },
50
- { name: 'verified_by', note: '引用的检查 id 列表' },
51
- { name: 'assets', note: '关联资产(表 / 指标 / 任务)' },
65
+ { name: 'failure_reason', note: '切面:upstream-missing | spec-change | data-processing | consumption | permission' },
66
+ { name: 'verified_by', note: '引用的检查点 id 列表' },
67
+ { name: 'assets', note: '这条假设**落在**哪些对象上(反向索引入口)。可写成 `"dwd_ord_di"`,或 `{ id, type }` 顺带声明种类' },
52
68
  { name: 'stats', system: true, note: 'prior / last_hit_at / refutes_count / case_count' },
53
69
  ],
54
70
  sections: ['判据', '反例边界', '典型信号', '关联检查', '案例索引'],
55
71
  },
56
72
  {
57
- entityType: 'diagnosis/check',
58
- kind: 'check',
73
+ entityType: 'diagnosis/check-point',
74
+ kind: 'check_point',
59
75
  layer: 'type',
60
- label: '检查',
76
+ label: '检查点',
61
77
  fields: [
62
78
  { name: 'cost_minutes', note: '耗时(分钟),优先分的分母' },
63
79
  { name: 'automation', note: 'auto | manual' },
64
80
  { name: 'owner', note: '执行人或角色' },
65
81
  { name: 'verdict_true', note: '**看到什么算真**' },
66
82
  { name: 'verdict_false', note: '**看到什么算假** —— 只写「算真」就无法否定假设' },
67
- { name: 'runbook', note: '怎么跑:SQL / 工具 / 找谁' },
83
+ { name: 'runbook', note: '怎么跑:SQL / 工具 / 找谁。**可复用的查询模板**写这里' },
68
84
  { name: 'side_effect', note: '是否有副作用(只读 / 会写)' },
85
+ { name: 'assets', note: '**查询依据**:这条检查要去查哪些对象(表 / 指标 / 任务 / 链路)。可写成 `"dwd_ord_di"`,或 `{ id, type }` 顺带声明种类' },
69
86
  ],
70
87
  sections: ['怎么跑', '判定阈值', '有结论与无结论的区分'],
71
88
  },
72
89
  {
73
- entityType: 'diagnosis/failure-mode',
74
- kind: 'failure-mode',
90
+ entityType: 'diagnosis/failure-reason',
91
+ kind: 'failure_reason',
75
92
  layer: 'type',
76
- label: '失败模式(切面)',
93
+ label: '失败原因',
77
94
  fields: [
78
95
  { name: 'code', note: '稳定编码' },
79
96
  { name: 'label', note: '界面词' },
@@ -88,7 +105,7 @@ export const DIAGNOSIS_ENTITIES = [
88
105
  label: '案例',
89
106
  fields: [
90
107
  { name: 'symptom', note: '入口现象 id' },
91
- { name: 'path', note: '**有序**节点序列:现象 → 假设 → 检查 → 证据 → 根因' },
108
+ { name: 'path', note: '**有序**节点序列:现象 → 假设 → 检查点 → 证据 → 根因' },
92
109
  { name: 'duration_minutes', note: '总耗时' },
93
110
  { name: 'misleading_edges', note: '误导边:节点 + 浪费的分钟数 + 为什么' },
94
111
  { name: 'root_cause', note: '根因一句话' },
@@ -98,7 +115,7 @@ export const DIAGNOSIS_ENTITIES = [
98
115
  sections: ['现象', '影响面', '排查过程', '根因', '修复与防复发'],
99
116
  },
100
117
  ];
101
- /** 语义校验用的判据:check 的标题必须**可执行**。 */
118
+ /** 语义校验用的判据:检查点的标题必须**可执行**。 */
102
119
  const VAGUE_CHECK_TITLES = /^(检查|看看|排查|确认)?\s*(一下)?\s*(数据质量|是不是|有没有问题|上游|下游)/;
103
120
  function fieldIssue(node, field, message) {
104
121
  return { level: 'format', entityId: node.id, field, message };
@@ -111,6 +128,9 @@ export function specOf(kind) {
111
128
  *
112
129
  * 分开报错不是洁癖:**格式错说明卡片没填完,引用错说明图断了,语义错说明这条知识
113
130
  * 本身没用**。三者对应的动作完全不同(补字段 / 修边 / 重写),混在一起就只能靠猜。
131
+ *
132
+ * 它同时是**提议阶段与确认阶段的前置**(0021 §6.5):两道都跑,是因为这两次修改
133
+ * 来自不同的人。
114
134
  */
115
135
  export function validateDiagnosis(graph) {
116
136
  const issues = [];
@@ -126,8 +146,8 @@ export function validateDiagnosis(graph) {
126
146
  issues.push(fieldIssue(node, 'discriminator', '假设必须有一句可判真假的判据'));
127
147
  if (!node.notWhen?.trim())
128
148
  issues.push(fieldIssue(node, 'notWhen', '假设必须写明反例边界 —— 否则查重会把相似情形并成一条'));
129
- if (!node.failureMode)
130
- issues.push(fieldIssue(node, 'failureMode', '假设必须归属一个失败模式切面'));
149
+ if (!node.failureReason)
150
+ issues.push(fieldIssue(node, 'failureReason', '假设必须归属一个失败原因切面'));
131
151
  }
132
152
  if (node.kind === 'symptom') {
133
153
  // 问题侧的分类是**必填**:留空的后果不是「少个字段」,而是这个现象在按问题筛选时
@@ -152,13 +172,26 @@ export function validateDiagnosis(graph) {
152
172
  // 分类字段只属于现象。假设上挂问题大类,会把「问题」和「原因」两根轴搅在一起。
153
173
  issues.push(fieldIssue(node, 'problemClass', '问题分类只能写在现象(symptom)上,不能挂在原因侧'));
154
174
  }
155
- if (node.kind === 'check') {
175
+ if (node.kind === 'check_point') {
156
176
  for (const [field, value] of [['costMinutes', node.costMinutes], ['automation', node.automation], ['owner', node.owner], ['verdictTrue', node.verdictTrue], ['verdictFalse', node.verdictFalse]]) {
157
177
  if (value === undefined || value === '')
158
- issues.push(fieldIssue(node, field, `检查缺少 ${field} —— 缺了它这一步就无法被自动化或复核`));
178
+ issues.push(fieldIssue(node, field, `检查点缺少 ${field} —— 缺了它这一步就无法被自动化或复核`));
179
+ }
180
+ // `assets[]` 是 v1.3 的必填:缺了它,这条检查**不知道去哪查**,
181
+ // 也就没法生成查询、判断影响面。
182
+ if (!node.assets || node.assets.length === 0) {
183
+ issues.push(fieldIssue(node, 'assets', '检查点必须写明查询依据(assets[])—— 缺了它这条检查不知道去哪查'));
159
184
  }
160
185
  }
161
- // `case` 节点只是图上的桩:案例的正文与路径住在 `cases.json` 里,由
186
+ if (node.kind === 'evidence') {
187
+ if (!node.query?.trim())
188
+ issues.push(fieldIssue(node, 'query', '证据必须记下这次实际跑的查询'));
189
+ if (!node.verdict)
190
+ issues.push(fieldIssue(node, 'verdict', '证据必须给出结论:supports / refutes / inconclusive'));
191
+ if (!node.why?.trim())
192
+ issues.push(fieldIssue(node, 'why', '证据必须说明「为什么这个结果算数或不算数」—— 采信与剔除都得能说理由'));
193
+ }
194
+ // `case` 节点只是图上的桩:案例的正文与路径住在案例卡片里,由
162
195
  // DiagnosisSnapshot.cases 校验,不在节点上重复要求。
163
196
  }
164
197
  // ── 第二层:引用完整性 ────────────────────────────────────────────────────
@@ -174,24 +207,30 @@ export function validateDiagnosis(graph) {
174
207
  const hasCheck = graph.edges.some(edge => edge.kind === 'verified_by' && edge.source === node.id);
175
208
  // 空区不是错,是**待办**:它是一条信息(这张图哪里还没建完),所以只提示不报错。
176
209
  if (!hasCheck)
177
- issues.push({ level: 'semantic', entityId: node.id, message: '空区:有假设但没有任何检查,拿不出成本,因此进不了排序' });
210
+ issues.push({ level: 'semantic', entityId: node.id, message: '空区:有假设但没有任何检查点,拿不出成本,因此进不了排序' });
178
211
  }
179
212
  // ── 第三层:语义 ──────────────────────────────────────────────────────────
180
213
  for (const node of graph.nodes) {
181
- if (node.kind !== 'check')
214
+ if (node.kind !== 'check_point')
182
215
  continue;
183
216
  if (VAGUE_CHECK_TITLES.test(node.title.trim())) {
184
217
  issues.push({
185
218
  level: 'semantic',
186
219
  entityId: node.id,
187
220
  field: 'title',
188
- message: `检查标题不可执行:「${node.title}」。必须能回答「谁、用什么、多久、看到什么算真、看到什么算假」`,
221
+ message: `检查点标题不可执行:「${node.title}」。必须能回答「谁、用什么、多久、看到什么算真、看到什么算假」`,
189
222
  });
190
223
  }
191
224
  }
192
225
  return issues;
193
226
  }
194
- /** 空的模板卡:新人写卡片时看的是它,不是 schema。 */
227
+ /**
228
+ * 空的模板卡:新人写卡片时看的是它,不是 schema。
229
+ *
230
+ * 模板卡**由类型定义派生、不再落成磁盘文件**(0021 §6.6):模板是类型定义的一种
231
+ * 呈现,定义搬进设置,模板跟着走 —— 否则会出现「设置里改了、磁盘上那份没改」的
232
+ * 第二真源。
233
+ */
195
234
  export function templateCard(spec) {
196
235
  const front = [
197
236
  `entity_type: ${spec.entityType}`,
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/diagnosis/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/diagnosis/schema.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,15 @@ export interface SeedSource {
2
2
  /** 稳定 id,用作 `external_id`,迁移与重跑都靠它幂等。 */
3
3
  id: string;
4
4
  title: string;
5
- /** 来源分类。排查手册与复盘都属于既有的 `question`(「问题排查文档」)。 */
6
- sourceType: 'question';
5
+ /**
6
+ * 来源分类。**两种**:
7
+ * - `question`:人写的手册与复盘(卡片 `source_refs` 指向这里);
8
+ * - `agent_diagnosis_case`:Agent 跑出来的三次排查记录(v1.1 新增的来源分类)。
9
+ *
10
+ * 边界裁决是「谁写的、是不是已经归纳过」:同一件事可以有两条来源,
11
+ * 一个回答「结论是什么」,一个回答「当时怎么走的」。
12
+ */
13
+ sourceType: 'question' | 'agent_diagnosis_case';
7
14
  content: string;
8
15
  }
9
16
  /**
@@ -16,5 +23,13 @@ export interface SeedSource {
16
23
  export declare const SEED_HANDBOOK = "# \u65E5\u62A5\u6307\u6807\u5F02\u5E38\u6392\u67E5\u624B\u518C\uFF08\u5185\u90E8\u7248\uFF09\n\n## \u8FD9\u4EFD\u624B\u518C\u89E3\u51B3\u4EC0\u4E48\n\n\u65E5\u62A5\u6307\u6807\u51FA\u73B0\u5F02\u5E38\u6CE2\u52A8\u65F6\uFF0C\u503C\u73ED\u540C\u5B66\u7684\u7B2C\u4E00\u53CD\u5E94\u901A\u5E38\u662F\u300C\u5148\u770B\u770B\u4E0A\u6E38\u300D\u3002\u8FD9\u53E5\u8BDD\u6CA1\u9519\uFF0C\u4F46\u5B83\u4E0D\u662F\u6D41\u7A0B\u3002\n\u624B\u518C\u628A\u300C\u5148\u770B\u4EC0\u4E48\u300D\u56FA\u5B9A\u4E0B\u6765\uFF1A**\u6BCF\u4E00\u8F6E\u53EA\u505A\u6210\u672C\u6700\u4F4E\u7684\u90A3\u4E2A\u68C0\u67E5**\uFF0C\u7528\u5B83\u7684\u7ED3\u8BBA\u53BB\u780D\u5019\u9009\uFF0C\u800C\u4E0D\u662F\n\u51ED\u5370\u8C61\u6311\u4E00\u4E2A\u65B9\u5411\u6DF1\u6316\u3002\n\n## \u73B0\u8C61\u5148\u5206\u56DB\u7C7B\n\n\u770B\u5230\u5F02\u5E38\u5148\u5224\u65AD\u5B83\u5C5E\u4E8E\u54EA\u4E00\u7C7B\uFF0C\u8FD9\u51B3\u5B9A\u4E86\u540E\u9762\u5F80\u54EA\u4E2A\u65B9\u5411\u627E\uFF1A\n\n- **\u7F3A\u5931**\uFF1A\u8BE5\u6709\u7684\u6CA1\u6709 \u2014\u2014 \u5168\u91CF\u4E3A 0\u3001\u5206\u533A\u6216\u8868\u672A\u4EA7\u51FA\u3001\u4EFB\u52A1\u62A5\u9519\u672A\u4EA7\u51FA\uFF1B\n- **\u504F\u5DEE**\uFF1A\u6709\uFF0C\u4F46\u5E45\u5EA6\u4E0D\u5BF9 \u2014\u2014 \u7A81\u964D\u3001\u7F13\u964D\u3001\u7A81\u589E\u3001\u7F13\u5347\uFF1B\n- **\u4E0D\u4E00\u81F4**\uFF1A\u6709\uFF0C\u4F46\u5BF9\u4E0D\u4E0A \u2014\u2014 \u4E0E\u6E90\u7CFB\u7EDF\u5BF9\u4E0D\u4E0A\u3001\u8DE8\u62A5\u8868\u52FE\u7A3D\u4E0D\u5E73\u3001\u53E3\u5F84\u53D8\u66F4\u540E\u4E0D\u4E00\u81F4\uFF1B\n- **\u7C92\u5EA6**\uFF1A\u6709\uFF0C\u4F46\u5207\u5206\u4E0D\u5BF9 \u2014\u2014 \u7EF4\u5EA6\u503C\u7F3A\u5931\u3001\u91CD\u590D\u8BA1\u6570\u3001\u6620\u5C04\u9519\u4F4D\u3002\n\n\u4E3A 0 \u548C\u7A81\u589E\u770B\u8D77\u6765\u76F8\u53CD\uFF0C\u4F46\u5B83\u4EEC\u7684\u5019\u9009\u539F\u56E0**\u6709\u91CD\u53E0**\uFF1A\u91CD\u590D / \u56DE\u5237\u65E2\u80FD\u9020\u6210\u653E\u5927\uFF0C\u4E5F\u80FD\u5728\u53BB\u91CD\u903B\u8F91\n\u4ECB\u5165\u540E\u9020\u6210\u9AA4\u964D\uFF1B\u4E0B\u6E38\u7F13\u5B58\u65E2\u80FD\u63A9\u76D6\u66F4\u65B0\uFF08\u770B\u8D77\u6765\u964D\u4E86\uFF09\uFF0C\u4E5F\u80FD\u91CD\u590D\u5C55\u793A\uFF08\u770B\u8D77\u6765\u6DA8\u4E86\uFF09\u3002\u6240\u4EE5\u4E0D\u8981\n\u6309\u300C\u6DA8\u8FD8\u662F\u8DCC\u300D\u53BB\u6392\u9664\u5047\u8BBE\uFF0C\u8981\u6309\u68C0\u67E5\u7ED3\u8BBA\u53BB\u780D\u3002\n\n## \u5019\u9009\u539F\u56E0\uFF08\u7C7B\u578B\u5C42\uFF09\n\n1. **\u4E0A\u6E38\u5206\u533A\u672A\u4EA7\u51FA** \u2014\u2014 \u5F53\u65E5 dwd / ods \u5206\u533A\u4E0D\u5B58\u5728 \u2192 \u6307\u6807\u5FC5\u7136\u4E3A 0\u3002\n \u53CD\u4F8B\uFF1A\u5206\u533A\u5B58\u5728\u4F46\u884C\u6570\u4E3A 0\uFF08\u90A3\u662F\u91CD\u590D / \u56DE\u5237\u7684\u53E6\u4E00\u9762\uFF09\uFF0C\u6216\u8005\u5206\u533A\u6B63\u5E38\u800C\u6307\u6807\u4ECD\u4E3A 0\uFF08\u90A3\u662F\u53E3\u5F84\u6216\u6D88\u8D39\u4FA7\uFF09\u3002\n2. **\u53E3\u5F84 / \u7248\u672C\u53D8\u66F4** \u2014\u2014 \u53E3\u5F84\u7248\u672C\u5207\u6362\u540E\uFF0C\u540C\u540D\u8BCD\u6307\u6807\u5728\u4E24\u7248\u5B9A\u4E49\u4E0B\u53E3\u5F84\u4E0D\u4E00\u81F4\u3002\n \u53CD\u4F8B\uFF1A\u53E3\u5F84\u672A\u53D8\u66F4\u65F6\u672C\u5047\u8BBE\u4E0D\u6210\u7ACB \u2014\u2014 \u4E0D\u8981\u7528\u300C\u540D\u5B57\u4E00\u6837\u300D\u5F53\u4F5C\u53E3\u5F84\u4E00\u81F4\u7684\u8BC1\u636E\u3002\n3. **\u7EF4\u8868\u6620\u5C04\u4E22\u5931** \u2014\u2014 \u7EF4\u8868 join \u540E unknown \u5360\u6BD4\u663E\u8457\u5347\u9AD8\uFF0C\u4E14\u7F3A\u53E3\u96C6\u4E2D\u5728\u65B0\u589E\u7EF4\u5EA6\u6210\u5458\u4E0A\u3002\n \u53CD\u4F8B\uFF1Aunknown \u5360\u6BD4\u6B63\u5E38\u65F6\u672C\u5047\u8BBE\u4E0D\u6210\u7ACB\uFF1B\u7F3A\u53E3\u5747\u5300\u5206\u5E03\u65F6\u5E94\u8F6C\u65F6\u95F4\u7A97\u53E3\u6216\u91CD\u590D / \u56DE\u5237\u3002\n4. **\u91CD\u590D / \u56DE\u5237** \u2014\u2014 \u4E3B\u952E\u4E0D\u552F\u4E00\uFF0C\u6216\u5206\u533A\u884C\u6570\u540C\u6BD4\u653E\u5927\u3002\u4E0A\u6E38\u91CD\u8DD1\u5199\u5165\u91CD\u590D\u884C \u2192 \u8BA1\u6570\u7C7B\u6307\u6807\u653E\u5927\u3002\n \u53CD\u4F8B\uFF1A\u4E3B\u952E\u552F\u4E00\u6027\u68C0\u67E5\u901A\u8FC7\u65F6\u672C\u5047\u8BBE\u4E0D\u6210\u7ACB \u2014\u2014 \u8FD9\u662F\u6700\u5E38\u88AB\u8BEF\u5224\u7684\u4E00\u6761\u3002\n5. **\u65F6\u95F4\u7A97\u53E3 / \u65F6\u533A** \u2014\u2014 \u5206\u533A\u5185\u4E8B\u4EF6\u65F6\u95F4\u8DE8\u51FA T-1 \u5355\u65E5\u7A97\u53E3\uFF0C\u4E14\u53EA\u6709\u5355\u65E5\u5F02\u5E38\u3002\n \u53CD\u4F8B\uFF1A\u76F8\u90BB\u65E5\u671F\u540C\u65F6\u5F02\u5E38\u65F6\u5E94\u8F6C\u53E3\u5F84\u53D8\u66F4\u3002\n6. **\u6743\u9650 / \u8FC7\u6EE4\u6761\u4EF6** \u2014\u2014 \u7ED3\u679C\u96C6\u88AB\u884C\u7EA7\u6743\u9650\u6216 where \u6761\u4EF6\u9759\u9ED8\u6536\u7A84\u3002\n \u53CD\u4F8B\uFF1A\u6743\u9650\u4E0E\u8FC7\u6EE4\u6761\u4EF6\u5728\u672C\u5468\u671F\u672A\u53D8\u66F4\u65F6\u672C\u5047\u8BBE\u4E0D\u6210\u7ACB\u3002\n7. **\u4E0B\u6E38 BI \u7F13\u5B58 / \u589E\u91CF** \u2014\u2014 BI \u5C55\u793A\u4FA7\u6EDE\u540E\uFF0C\u4F46\u76F4\u8FDE\u660E\u7EC6\u7684\u6570\u5B57\u6B63\u5E38\u3002\n \u53CD\u4F8B\uFF1A\u660E\u7EC6\u5BF9\u8D26\u4E00\u81F4\u65F6\u672C\u5047\u8BBE\u4E0D\u6210\u7ACB\u3002**\u6CE8\u610F\uFF1A\u67E5\u7F13\u5B58\u65F6\u95F4\u6233\u53EA\u8981 2 \u5206\u949F\uFF0C\u4F46\u5B83\u8FD4\u56DE\u300C\u6B63\u5E38\u300D\n \u5E76\u4E0D\u80FD\u5426\u5B9A\u8FD9\u6761\u5047\u8BBE** \u2014\u2014 \u8981\u5426\u5B9A\u5B83\u5FC5\u987B\u505A 35 \u5206\u949F\u7684\u4EBA\u5DE5\u660E\u7EC6\u5BF9\u8D26\u3002\n\n## \u68C0\u67E5\u7684\u6210\u672C\u610F\u8BC6\n\n\u6BCF\u4E2A\u5047\u8BBE\u4E0B\u9762\u6302\u7684\u68C0\u67E5\u8981\u5199\u6E05\u4E09\u4EF6\u4E8B\uFF1A\u591A\u4E45\u3001\u80FD\u4E0D\u80FD\u81EA\u52A8\u8DD1\u3001\u770B\u5230\u4EC0\u4E48\u7B97\u771F\u3001\u770B\u5230\u4EC0\u4E48\u7B97\u5047\u3002\n\u53EA\u5199\u300C\u7B97\u771F\u300D\u4E0D\u5199\u300C\u7B97\u5047\u300D\u7684\u68C0\u67E5\uFF0C\u7B49\u4E8E\u6CA1\u6709\u529E\u6CD5\u5426\u5B9A\u4EFB\u4F55\u5047\u8BBE\u3002\n\n\u6700\u8D35\u7684\u90A3\u6761\u77E5\u8BC6\u4E0D\u662F\u300C\u54EA\u4E2A\u68C0\u67E5\u6700\u51C6\u300D\uFF0C\u800C\u662F**\u54EA\u4E2A\u68C0\u67E5\u770B\u8D77\u6765\u4FBF\u5B9C\u5374\u6CA1\u6709\u7ED3\u8BBA**\u3002\n\u300C\u67E5\u7F13\u5B58\u65F6\u95F4\u6233\u300D\u5C31\u662F\u5178\u578B\uFF1A2 \u5206\u949F\u3001\u81EA\u52A8\u3001\u8FD4\u56DE\u6B63\u5E38 \u2014\u2014 \u7136\u540E\u503C\u73ED\u540C\u5B66\u4F1A\u4EE5\u4E3A\u6392\u9664\u4E86\u7F13\u5B58\uFF0C\n\u63A5\u7740\u5728\u522B\u7684\u65B9\u5411\u4E0A\u518D\u70E7\u56DB\u5341\u5206\u949F\u3002\u8FD9\u7C7B\u68C0\u67E5\u8981\u4E48\u6807\u6CE8\u300C\u65E0\u7ED3\u8BBA\u300D\uFF0C\u8981\u4E48\u8865\u4E00\u6B21\u771F\u6B63\u80FD\u8BC1\u4F2A\u7684\u68C0\u67E5\u3002\n\n## \u4E00\u6761\u7EAA\u5F8B\n\n**\u5426\u5B9A\u4E5F\u662F\u77E5\u8BC6\u3002** \u6BCF\u6B21\u6392\u67E5\u90FD\u8981\u628A\u300C\u5426\u5B9A\u4E86\u54EA\u6761\u5047\u8BBE\u3001\u56E0\u4E3A\u4EC0\u4E48\u300D\u8BB0\u4E0B\u6765\u3002\u53EA\u8BB0\u6210\u529F\u7684\u6392\u67E5\u4F1A\u8BA9\n\u540C\u4E00\u6279\u5047\u8BBE\u88AB\u53CD\u590D\u9A8C\u8BC1\uFF0C\u800C\u6C38\u8FDC\u4E0D\u4F1A\u88AB\u526A\u6389 \u2014\u2014 \u56FE\u4E0A\u4F1A\u957F\u51FA\u4E00\u5806\u50F5\u5C38\u8FB9\u3002\n";
17
24
  /** 三篇复盘:案例卡片的出处。正文就是案例的散文段(现象 / 影响面 / 排查过程 / 根因 / 修复)。 */
18
25
  export declare function seedCaseSources(): SeedSource[];
26
+ /**
27
+ * 三次排查的**过程记录**。
28
+ *
29
+ * 它们不由散文手写,而是从 `SEED_RUNS` **渲染**出来(`renderRunSource`)——
30
+ * 这正是运行时那条路径:一次排查结束 → 一条 `agent_diagnosis_case` 的 SourceRaw。
31
+ * 示例走同一条路,所以它同时也是这条路的回归夹具。
32
+ */
33
+ export declare function seedRunSources(): SeedSource[];
19
34
  export declare function seedSources(): SeedSource[];
20
35
  //# sourceMappingURL=seed-source.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"seed-source.d.ts","sourceRoot":"","sources":["../../../src/diagnosis/seed-source.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,UAAU;IACzB,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,+CAA+C;IAC/C,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,69NAoDzB,CAAA;AAED,0DAA0D;AAC1D,wBAAgB,eAAe,IAAI,UAAU,EAAE,CAY9C;AAED,wBAAgB,WAAW,IAAI,UAAU,EAAE,CAK1C"}
1
+ {"version":3,"file":"seed-source.d.ts","sourceRoot":"","sources":["../../../src/diagnosis/seed-source.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,UAAU;IACzB,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;;OAOG;IACH,UAAU,EAAE,UAAU,GAAG,sBAAsB,CAAA;IAC/C,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,69NAoDzB,CAAA;AAED,0DAA0D;AAC1D,wBAAgB,eAAe,IAAI,UAAU,EAAE,CAY9C;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,UAAU,EAAE,CAO7C;AAED,wBAAgB,WAAW,IAAI,UAAU,EAAE,CAM1C"}