dsh-data-domain-knowledge 0.1.0-alpha.2 → 0.1.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -7
- package/cordis.patch.yml +11 -5
- package/lib/client.js +5557 -3056
- package/lib/doc-page.js +7740 -0
- package/lib/types/convert/host.d.ts.map +1 -1
- package/lib/types/convert/host.js +36 -9
- package/lib/types/convert/host.js.map +1 -1
- package/lib/types/diagnosis/cards.d.ts +8 -7
- package/lib/types/diagnosis/cards.d.ts.map +1 -1
- package/lib/types/diagnosis/cards.js +119 -49
- package/lib/types/diagnosis/cards.js.map +1 -1
- package/lib/types/diagnosis/run.d.ts +51 -0
- package/lib/types/diagnosis/run.d.ts.map +1 -0
- package/lib/types/diagnosis/run.js +239 -0
- package/lib/types/diagnosis/run.js.map +1 -0
- package/lib/types/diagnosis/schema.d.ts +25 -2
- package/lib/types/diagnosis/schema.d.ts.map +1 -1
- package/lib/types/diagnosis/schema.js +64 -25
- package/lib/types/diagnosis/schema.js.map +1 -1
- package/lib/types/diagnosis/seed-source.d.ts +17 -2
- package/lib/types/diagnosis/seed-source.d.ts.map +1 -1
- package/lib/types/diagnosis/seed-source.js +18 -1
- package/lib/types/diagnosis/seed-source.js.map +1 -1
- package/lib/types/diagnosis/seed.d.ts +32 -42
- package/lib/types/diagnosis/seed.d.ts.map +1 -1
- package/lib/types/diagnosis/seed.js +187 -51
- package/lib/types/diagnosis/seed.js.map +1 -1
- package/lib/types/diagnosis/store.d.ts +114 -26
- package/lib/types/diagnosis/store.d.ts.map +1 -1
- package/lib/types/diagnosis/store.js +336 -167
- package/lib/types/diagnosis/store.js.map +1 -1
- package/lib/types/diagnosis/types.d.ts +168 -16
- package/lib/types/diagnosis/types.d.ts.map +1 -1
- package/lib/types/diagnosis/types.js +1 -1
- package/lib/types/diagnosis/types.js.map +1 -1
- package/lib/types/document-page.d.ts +39 -0
- package/lib/types/document-page.d.ts.map +1 -0
- package/lib/types/document-page.js +43 -0
- package/lib/types/document-page.js.map +1 -0
- package/lib/types/fs-atomic.d.ts +12 -0
- package/lib/types/fs-atomic.d.ts.map +1 -0
- package/lib/types/fs-atomic.js +42 -0
- package/lib/types/fs-atomic.js.map +1 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +214 -24
- package/lib/types/index.js.map +1 -1
- package/lib/types/knowledge-bases.d.ts +10 -2
- package/lib/types/knowledge-bases.d.ts.map +1 -1
- package/lib/types/knowledge-bases.js +20 -18
- package/lib/types/knowledge-bases.js.map +1 -1
- package/lib/types/proposals.d.ts +166 -0
- package/lib/types/proposals.d.ts.map +1 -0
- package/lib/types/proposals.js +238 -0
- package/lib/types/proposals.js.map +1 -0
- package/lib/types/runtime.d.ts +199 -7
- package/lib/types/runtime.d.ts.map +1 -1
- package/lib/types/runtime.js +728 -145
- package/lib/types/runtime.js.map +1 -1
- package/lib/types/settings-schema.d.ts +2 -2
- package/lib/types/types.d.ts +61 -10
- package/lib/types/types.d.ts.map +1 -1
- package/lib/types/types.js +56 -8
- package/lib/types/types.js.map +1 -1
- package/lib/types/wiki-types.d.ts +8 -1
- package/lib/types/wiki-types.d.ts.map +1 -1
- package/lib/types/wiki-types.js +16 -25
- package/lib/types/wiki-types.js.map +1 -1
- package/package.json +4 -3
- package/preset/tita-data-agent/agent.cordis.yml +11 -5
- package/src/client/DirectoryPicker.tsx +12 -12
- package/src/client/InfoHint.tsx +21 -8
- package/src/client/IntentTab.tsx +20 -26
- package/src/client/KnowledgeBaseTab.tsx +190 -80
- package/src/client/KnowledgePanel.tsx +42 -9
- package/src/client/KnowledgeStepRail.tsx +3 -0
- package/src/client/NodeSettings.tsx +20 -22
- package/src/client/PreviewSections.tsx +87 -33
- package/src/client/ProposalReview.tsx +313 -0
- package/src/client/TypeDefinitionDrawer.tsx +72 -38
- package/src/client/WikiTypeEditor.tsx +193 -77
- package/src/client/arch/AgentArchitectureGraph.tsx +143 -14
- package/src/client/arch/NodeLogicPanel.tsx +6 -3
- package/src/client/arch/model.ts +164 -26
- package/src/client/architecture.css +29 -9
- package/src/client/architecture.tsx +54 -29
- package/src/client/attribution/AttributionGraph.tsx +481 -34
- package/src/client/attribution/AttributionTab.tsx +507 -106
- package/src/client/attribution/CaseView.tsx +9 -14
- package/src/client/attribution/GraphStage.tsx +25 -18
- package/src/client/attribution/RunView.tsx +27 -9
- package/src/client/attribution/StageChrome.tsx +296 -140
- package/src/client/attribution/graph-options.ts +611 -47
- package/src/client/attribution/model.ts +559 -30
- package/src/client/convert/ConvertPanel.tsx +6 -1
- package/src/client/doc-page.css +134 -0
- package/src/client/doc-page.tsx +263 -0
- package/src/client/panel-state.ts +105 -0
- package/src/client/request.ts +36 -0
- package/src/client/styles.css +317 -43
- package/src/client/useFitScale.ts +15 -2
- package/src/client/wiki-type-groups.ts +86 -0
- package/src/convert/host.ts +41 -7
- package/src/diagnosis/cards.ts +120 -50
- package/src/diagnosis/run.ts +245 -0
- package/src/diagnosis/schema.ts +67 -26
- package/src/diagnosis/seed-source.ts +28 -3
- package/src/diagnosis/seed.ts +187 -85
- package/src/diagnosis/store.ts +358 -174
- package/src/diagnosis/types.ts +181 -16
- package/src/document-page.ts +51 -0
- package/src/fs-atomic.ts +42 -0
- package/src/index.ts +209 -22
- package/src/knowledge-bases.ts +20 -18
- package/src/proposals.ts +337 -0
- package/src/runtime.ts +736 -135
- package/src/types.ts +113 -19
- package/src/wiki-types.ts +17 -27
|
@@ -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-
|
|
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: '
|
|
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: '
|
|
50
|
-
{ name: 'verified_by', note: '
|
|
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: '
|
|
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-
|
|
74
|
-
kind: '
|
|
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
|
-
/**
|
|
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.
|
|
130
|
-
issues.push(fieldIssue(node, '
|
|
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 === '
|
|
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,
|
|
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
|
-
|
|
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 !== '
|
|
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:
|
|
221
|
+
message: `检查点标题不可执行:「${node.title}」。必须能回答「谁、用什么、多久、看到什么算真、看到什么算假」`,
|
|
189
222
|
});
|
|
190
223
|
}
|
|
191
224
|
}
|
|
192
225
|
return issues;
|
|
193
226
|
}
|
|
194
|
-
/**
|
|
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":"AACA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;
|
|
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
|
-
/**
|
|
6
|
-
|
|
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":"
|
|
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"}
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
* 手册与复盘是**人写的散文**(就是下面这些字面量),卡片是从它们编译出来的结构化提取。
|
|
13
13
|
* 两者内容会有重叠 —— 那是正常的:卡片是散文的投影,不是它的替代品。
|
|
14
14
|
*/
|
|
15
|
-
import { SEED_CASES } from './seed.js';
|
|
15
|
+
import { SEED_CASES, SEED_RUNS } from './seed.js';
|
|
16
|
+
import { renderRunSource } from './run.js';
|
|
16
17
|
/**
|
|
17
18
|
* 排查手册:**类型层知识的出处**。
|
|
18
19
|
*
|
|
@@ -87,10 +88,26 @@ export function seedCaseSources() {
|
|
|
87
88
|
].join('\n'),
|
|
88
89
|
}));
|
|
89
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* 三次排查的**过程记录**。
|
|
93
|
+
*
|
|
94
|
+
* 它们不由散文手写,而是从 `SEED_RUNS` **渲染**出来(`renderRunSource`)——
|
|
95
|
+
* 这正是运行时那条路径:一次排查结束 → 一条 `agent_diagnosis_case` 的 SourceRaw。
|
|
96
|
+
* 示例走同一条路,所以它同时也是这条路的回归夹具。
|
|
97
|
+
*/
|
|
98
|
+
export function seedRunSources() {
|
|
99
|
+
return SEED_RUNS.map(record => ({
|
|
100
|
+
id: record.runId,
|
|
101
|
+
title: `AI 诊断日志 · ${record.symptomId} · ${record.runId}`,
|
|
102
|
+
sourceType: 'agent_diagnosis_case',
|
|
103
|
+
content: renderRunSource(record),
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
90
106
|
export function seedSources() {
|
|
91
107
|
return [
|
|
92
108
|
{ id: 'handbook', title: '日报指标异常排查手册(内部版)', sourceType: 'question', content: SEED_HANDBOOK },
|
|
93
109
|
...seedCaseSources(),
|
|
110
|
+
...seedRunSources(),
|
|
94
111
|
];
|
|
95
112
|
}
|
|
96
113
|
//# sourceMappingURL=seed-source.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed-source.js","sourceRoot":"","sources":["../../../src/diagnosis/seed-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"seed-source.js","sourceRoot":"","sources":["../../../src/diagnosis/seed-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAkB1C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoD5B,CAAA;AAED,0DAA0D;AAC1D,MAAM,UAAU,eAAe;IAC7B,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;QACjC,UAAU,EAAE,UAAU;QACtB,OAAO,EAAE;YACP,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;YAC5B,EAAE;YACF,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACpF,QAAQ,IAAI,CAAC,eAAe,MAAM;SACnC,CAAC,IAAI,CAAC,IAAI,CAAC;KACb,CAAC,CAAC,CAAA;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9B,EAAE,EAAE,MAAM,CAAC,KAAK;QAChB,KAAK,EAAE,aAAa,MAAM,CAAC,SAAS,MAAM,MAAM,CAAC,KAAK,EAAE;QACxD,UAAU,EAAE,sBAA+B;QAC3C,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC;KACjC,CAAC,CAAC,CAAA;AACL,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO;QACL,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE;QAC5F,GAAG,eAAe,EAAE;QACpB,GAAG,cAAc,EAAE;KACpB,CAAA;AACH,CAAC"}
|
|
@@ -1,50 +1,40 @@
|
|
|
1
|
-
import type { AttributionGraphData } from './types.js';
|
|
1
|
+
import type { AttributionCase, AttributionGraphData, DiagnosisRunRecord } from './types.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* 内置**示例**:一份排查手册 + 三篇复盘 + 三次排查日志 + 由它们编出来的那张图。
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* - `sections` 是给人读、给向量召回的散文(可 diff、可评审、可追溯);
|
|
7
|
-
* - `path` 是给图和剪枝用的结构(有序、可判真假、带被否定的分支)。
|
|
5
|
+
* 它现在只有一重身份:**用户点了「载入内置示例」才写进去的样例,以及回归夹具**。
|
|
8
6
|
*
|
|
9
|
-
*
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
export interface AttributionCase {
|
|
23
|
-
id: string;
|
|
24
|
-
title: string;
|
|
25
|
-
symptomId: string;
|
|
26
|
-
sections: CaseSection[];
|
|
27
|
-
path: CasePathStep[];
|
|
28
|
-
durationMinutes: number;
|
|
29
|
-
/** 误导段:最贵的那条知识。没有它,下次还会有人在同一个假设上烧掉四十分钟。 */
|
|
30
|
-
misleading?: {
|
|
31
|
-
nodeId: string;
|
|
32
|
-
label: string;
|
|
33
|
-
wastedMinutes: number;
|
|
34
|
-
why: string;
|
|
35
|
-
};
|
|
36
|
-
rootCause: string;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Seed 图谱:与 0021 §11 的三个案例同源,用来说明「同一现象有多个根因、否定边有用、
|
|
40
|
-
* 误导边昂贵」。
|
|
7
|
+
* 原来是两重(另一重是「首次启动的起点」,由 `DiagnosisStore.ensure()` 自动写入)。
|
|
8
|
+
* 实跑反馈把它去掉了:这份示例长得像真的业务文档,而它落在用户自己的
|
|
9
|
+
* `01_source_truth/` 与 `02_wiki/` 里 —— 新装一台机器,一打开「智能归因」就凭空多出
|
|
10
|
+
* 几份来源和几十张卡片,读起来像「我的知识库内容跟着包过来了」。示例没有被删除
|
|
11
|
+
* (它仍然是稳定夹具,`tests/diagnosis-cards.test.mjs` 逐字段对着它断言),
|
|
12
|
+
* 只是不再自动落盘 —— 入口是 `DiagnosisStore.loadSample()`。
|
|
13
|
+
*
|
|
14
|
+
* **两条来源分类、两个作者**(v1.1 起):
|
|
15
|
+
*
|
|
16
|
+
* | 来源分类 | 谁写 | 装什么 |
|
|
17
|
+
* | --- | --- | --- |
|
|
18
|
+
* | `question` | 人 | 手册与复盘 —— 卡片 `source_refs` 指向这里 |
|
|
19
|
+
* | `agent_diagnosis_case` | Agent | 一次排查的过程记录(`SEED_RUNS`) |
|
|
41
20
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* 2. **回归样本** —— 上面那三条结论需要一个稳定的夹具,所以它不会被删除。
|
|
21
|
+
* `SEED_GRAPH` 里**只有卡片定义得了的东西**:类型层、引用层资产、案例桩,以及六种卡片边。
|
|
22
|
+
* `evidence` / `cause` 与四条执行边由 `SEED_RUNS` 读时解析出来 —— 把「上次查到什么」
|
|
23
|
+
* 写进卡片,等于让一份可复用的知识绑死在一次执行上。
|
|
46
24
|
*/
|
|
47
25
|
export declare const SEED_GRAPH: AttributionGraphData;
|
|
48
|
-
/** 三个 seed
|
|
26
|
+
/** 三个 seed 案例卡片,与上面图谱里的节点 id 对齐(0021 §11)。 */
|
|
49
27
|
export declare const SEED_CASES: AttributionCase[];
|
|
28
|
+
/**
|
|
29
|
+
* 三次排查的**过程记录**(`agent_diagnosis_case`)。
|
|
30
|
+
*
|
|
31
|
+
* 它们与 `SEED_CASES` 一一对应,但**不是同一份东西**:这里是 Agent 跑出来的原始记录
|
|
32
|
+
* (每条检查点真跑了什么、看到什么、这个结果算不算数),`SEED_CASES` 是之后归纳出来的
|
|
33
|
+
* 案例卡片(要经人确认才生效)。一个回答「当时怎么走的」,一个回答「结论是什么」。
|
|
34
|
+
*
|
|
35
|
+
* `E7` 是 CASE-001 里那次**贵的否定**:T7.2 直连明细对账推翻了 H7。它不在案例的
|
|
36
|
+
* 主路径上(主路径早就确认了 H1),但它是这次排查最贵的一条知识 —— 40 分钟的误导段
|
|
37
|
+
* 正是靠它收尾的。
|
|
38
|
+
*/
|
|
39
|
+
export declare const SEED_RUNS: DiagnosisRunRecord[];
|
|
50
40
|
//# sourceMappingURL=seed.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../../src/diagnosis/seed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../../src/diagnosis/seed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAE3F;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,UAAU,EAAE,oBA4KxB,CAAA;AAED,8CAA8C;AAC9C,eAAO,MAAM,UAAU,EAAE,eAAe,EA4EvC,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,EAAE,kBAAkB,EAuGzC,CAAA"}
|