dsh-data-domain-knowledge 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +360 -0
- package/cordis.patch.yml +410 -0
- package/eval/README.md +76 -0
- package/eval/evaluate-retrieval.mjs +121 -0
- package/eval/queries.example.jsonl +2 -0
- package/lib/client.js +111415 -0
- package/lib/types/config-schema.d.ts +35 -0
- package/lib/types/config-schema.d.ts.map +1 -0
- package/lib/types/config-schema.js +34 -0
- package/lib/types/config-schema.js.map +1 -0
- package/lib/types/convert/core-loader.d.ts +32 -0
- package/lib/types/convert/core-loader.d.ts.map +1 -0
- package/lib/types/convert/core-loader.js +60 -0
- package/lib/types/convert/core-loader.js.map +1 -0
- package/lib/types/convert/host.d.ts +88 -0
- package/lib/types/convert/host.d.ts.map +1 -0
- package/lib/types/convert/host.js +479 -0
- package/lib/types/convert/host.js.map +1 -0
- package/lib/types/convert/ingest.d.ts +125 -0
- package/lib/types/convert/ingest.d.ts.map +1 -0
- package/lib/types/convert/ingest.js +228 -0
- package/lib/types/convert/ingest.js.map +1 -0
- package/lib/types/convert/settings-schema.d.ts +18 -0
- package/lib/types/convert/settings-schema.d.ts.map +1 -0
- package/lib/types/convert/settings-schema.js +26 -0
- package/lib/types/convert/settings-schema.js.map +1 -0
- package/lib/types/convert/types.d.ts +46 -0
- package/lib/types/convert/types.d.ts.map +1 -0
- package/lib/types/convert/types.js +41 -0
- package/lib/types/convert/types.js.map +1 -0
- package/lib/types/diagnosis/cards.d.ts +71 -0
- package/lib/types/diagnosis/cards.d.ts.map +1 -0
- package/lib/types/diagnosis/cards.js +482 -0
- package/lib/types/diagnosis/cards.js.map +1 -0
- package/lib/types/diagnosis/problem-classes.d.ts +51 -0
- package/lib/types/diagnosis/problem-classes.d.ts.map +1 -0
- package/lib/types/diagnosis/problem-classes.js +66 -0
- package/lib/types/diagnosis/problem-classes.js.map +1 -0
- package/lib/types/diagnosis/schema.d.ts +65 -0
- package/lib/types/diagnosis/schema.d.ts.map +1 -0
- package/lib/types/diagnosis/schema.js +208 -0
- package/lib/types/diagnosis/schema.js.map +1 -0
- package/lib/types/diagnosis/seed-source.d.ts +20 -0
- package/lib/types/diagnosis/seed-source.d.ts.map +1 -0
- package/lib/types/diagnosis/seed-source.js +96 -0
- package/lib/types/diagnosis/seed-source.js.map +1 -0
- package/lib/types/diagnosis/seed.d.ts +50 -0
- package/lib/types/diagnosis/seed.d.ts.map +1 -0
- package/lib/types/diagnosis/seed.js +242 -0
- package/lib/types/diagnosis/seed.js.map +1 -0
- package/lib/types/diagnosis/store.d.ts +81 -0
- package/lib/types/diagnosis/store.d.ts.map +1 -0
- package/lib/types/diagnosis/store.js +409 -0
- package/lib/types/diagnosis/store.js.map +1 -0
- package/lib/types/diagnosis/types.d.ts +124 -0
- package/lib/types/diagnosis/types.d.ts.map +1 -0
- package/lib/types/diagnosis/types.js +13 -0
- package/lib/types/diagnosis/types.js.map +1 -0
- package/lib/types/directory-picker.d.ts +94 -0
- package/lib/types/directory-picker.d.ts.map +1 -0
- package/lib/types/directory-picker.js +110 -0
- package/lib/types/directory-picker.js.map +1 -0
- package/lib/types/extract-model.d.ts +76 -0
- package/lib/types/extract-model.d.ts.map +1 -0
- package/lib/types/extract-model.js +193 -0
- package/lib/types/extract-model.js.map +1 -0
- package/lib/types/extract.d.ts +121 -0
- package/lib/types/extract.d.ts.map +1 -0
- package/lib/types/extract.js +549 -0
- package/lib/types/extract.js.map +1 -0
- package/lib/types/fts.d.ts +96 -0
- package/lib/types/fts.d.ts.map +1 -0
- package/lib/types/fts.js +184 -0
- package/lib/types/fts.js.map +1 -0
- package/lib/types/index.d.ts +39 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +1112 -0
- package/lib/types/index.js.map +1 -0
- package/lib/types/intent/engine.d.ts +108 -0
- package/lib/types/intent/engine.d.ts.map +1 -0
- package/lib/types/intent/engine.js +501 -0
- package/lib/types/intent/engine.js.map +1 -0
- package/lib/types/intent/host.d.ts +88 -0
- package/lib/types/intent/host.d.ts.map +1 -0
- package/lib/types/intent/host.js +389 -0
- package/lib/types/intent/host.js.map +1 -0
- package/lib/types/intent/preset-tools.d.ts +37 -0
- package/lib/types/intent/preset-tools.d.ts.map +1 -0
- package/lib/types/intent/preset-tools.js +45 -0
- package/lib/types/intent/preset-tools.js.map +1 -0
- package/lib/types/intent/settings-schema.d.ts +59 -0
- package/lib/types/intent/settings-schema.d.ts.map +1 -0
- package/lib/types/intent/settings-schema.js +57 -0
- package/lib/types/intent/settings-schema.js.map +1 -0
- package/lib/types/intent/store.d.ts +75 -0
- package/lib/types/intent/store.d.ts.map +1 -0
- package/lib/types/intent/store.js +139 -0
- package/lib/types/intent/store.js.map +1 -0
- package/lib/types/intent/tools.d.ts +63 -0
- package/lib/types/intent/tools.d.ts.map +1 -0
- package/lib/types/intent/tools.js +108 -0
- package/lib/types/intent/tools.js.map +1 -0
- package/lib/types/intent/types.d.ts +189 -0
- package/lib/types/intent/types.d.ts.map +1 -0
- package/lib/types/intent/types.js +62 -0
- package/lib/types/intent/types.js.map +1 -0
- package/lib/types/knowledge-bases.d.ts +266 -0
- package/lib/types/knowledge-bases.d.ts.map +1 -0
- package/lib/types/knowledge-bases.js +1107 -0
- package/lib/types/knowledge-bases.js.map +1 -0
- package/lib/types/layout.d.ts +262 -0
- package/lib/types/layout.d.ts.map +1 -0
- package/lib/types/layout.js +312 -0
- package/lib/types/layout.js.map +1 -0
- package/lib/types/migrate.d.ts +110 -0
- package/lib/types/migrate.d.ts.map +1 -0
- package/lib/types/migrate.js +280 -0
- package/lib/types/migrate.js.map +1 -0
- package/lib/types/recall-rank.d.ts +158 -0
- package/lib/types/recall-rank.d.ts.map +1 -0
- package/lib/types/recall-rank.js +261 -0
- package/lib/types/recall-rank.js.map +1 -0
- package/lib/types/runtime.d.ts +568 -0
- package/lib/types/runtime.d.ts.map +1 -0
- package/lib/types/runtime.js +3045 -0
- package/lib/types/runtime.js.map +1 -0
- package/lib/types/settings-schema.d.ts +117 -0
- package/lib/types/settings-schema.d.ts.map +1 -0
- package/lib/types/settings-schema.js +92 -0
- package/lib/types/settings-schema.js.map +1 -0
- package/lib/types/settings-volatile.d.ts +102 -0
- package/lib/types/settings-volatile.d.ts.map +1 -0
- package/lib/types/settings-volatile.js +114 -0
- package/lib/types/settings-volatile.js.map +1 -0
- package/lib/types/types.d.ts +799 -0
- package/lib/types/types.d.ts.map +1 -0
- package/lib/types/types.js +387 -0
- package/lib/types/types.js.map +1 -0
- package/lib/types/wiki-types.d.ts +68 -0
- package/lib/types/wiki-types.d.ts.map +1 -0
- package/lib/types/wiki-types.js +322 -0
- package/lib/types/wiki-types.js.map +1 -0
- package/package.json +101 -0
- package/preset/tita-data-agent/agent.cordis.yml +376 -0
- package/preset/tita-data-agent/preset.yml +3 -0
- package/python/requirements.txt +8 -0
- package/scripts/doctor.mjs +70 -0
- package/scripts/e2e-pipeline.mjs +355 -0
- package/scripts/install-agent-preset.mjs +92 -0
- package/scripts/setup-embedding.sh +34 -0
- package/scripts/sync-agent-preset.mjs +188 -0
- package/src/client/AgentPresetCard.tsx +247 -0
- package/src/client/DirectoryPicker.tsx +357 -0
- package/src/client/InfoHint.tsx +65 -0
- package/src/client/IntentLogicTab.tsx +185 -0
- package/src/client/IntentTab.tsx +715 -0
- package/src/client/KnowledgeBaseTab.tsx +1454 -0
- package/src/client/KnowledgeGraphView.tsx +306 -0
- package/src/client/KnowledgePanel.tsx +381 -0
- package/src/client/KnowledgeStepRail.tsx +60 -0
- package/src/client/NodeSettings.tsx +392 -0
- package/src/client/PreviewSections.tsx +116 -0
- package/src/client/RecallPanel.tsx +399 -0
- package/src/client/TypeDefinitionDrawer.tsx +215 -0
- package/src/client/WikiFlowCard.tsx +226 -0
- package/src/client/WikiTypeEditor.tsx +332 -0
- package/src/client/agent-preset.ts +121 -0
- package/src/client/arch/AgentArchitectureGraph.tsx +219 -0
- package/src/client/arch/NodeLogicPanel.tsx +133 -0
- package/src/client/arch/ProblemDetailPanel.tsx +88 -0
- package/src/client/arch/model.ts +691 -0
- package/src/client/architecture.css +191 -0
- package/src/client/architecture.tsx +530 -0
- package/src/client/attribution/AttributionGraph.tsx +104 -0
- package/src/client/attribution/AttributionTab.tsx +332 -0
- package/src/client/attribution/CaseView.tsx +102 -0
- package/src/client/attribution/GraphStage.tsx +87 -0
- package/src/client/attribution/RunView.tsx +184 -0
- package/src/client/attribution/StageChrome.tsx +403 -0
- package/src/client/attribution/ViewSwitch.tsx +107 -0
- package/src/client/attribution/graph-options.ts +381 -0
- package/src/client/attribution/model.ts +462 -0
- package/src/client/config-scope.ts +119 -0
- package/src/client/convert/ConvertPanel.tsx +594 -0
- package/src/client/convert/styles.css +138 -0
- package/src/client/convert/styles.ts +49 -0
- package/src/client/format.ts +39 -0
- package/src/client/graph/layout.ts +181 -0
- package/src/client/graph.css +113 -0
- package/src/client/index.ts +98 -0
- package/src/client/problem-domains.ts +114 -0
- package/src/client/styles.css +940 -0
- package/src/client/styles.ts +11 -0
- package/src/client/useFitScale.ts +68 -0
- package/src/config-schema.ts +45 -0
- package/src/convert/core-loader.ts +68 -0
- package/src/convert/host.ts +579 -0
- package/src/convert/ingest.ts +367 -0
- package/src/convert/settings-schema.ts +27 -0
- package/src/convert/types.ts +65 -0
- package/src/diagnosis/cards.ts +498 -0
- package/src/diagnosis/problem-classes.ts +117 -0
- package/src/diagnosis/schema.ts +260 -0
- package/src/diagnosis/seed-source.ts +107 -0
- package/src/diagnosis/seed.ts +291 -0
- package/src/diagnosis/store.ts +432 -0
- package/src/diagnosis/types.ts +152 -0
- package/src/directory-picker.ts +164 -0
- package/src/extract-model.ts +227 -0
- package/src/extract.ts +632 -0
- package/src/fts.ts +203 -0
- package/src/index.ts +1091 -0
- package/src/intent/README.md +63 -0
- package/src/intent/engine.ts +527 -0
- package/src/intent/host.ts +462 -0
- package/src/intent/preset-tools.ts +48 -0
- package/src/intent/settings-schema.ts +63 -0
- package/src/intent/store.ts +143 -0
- package/src/intent/tools.ts +139 -0
- package/src/intent/types.ts +245 -0
- package/src/knowledge-bases.ts +1160 -0
- package/src/layout.ts +350 -0
- package/src/migrate.ts +262 -0
- package/src/python/embedding_worker.py +471 -0
- package/src/recall-rank.ts +299 -0
- package/src/runtime.ts +3069 -0
- package/src/settings-schema.ts +94 -0
- package/src/settings-volatile.ts +122 -0
- package/src/types.ts +1140 -0
- package/src/wiki-types.ts +357 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Seed 图谱:与 0021 §11 的三个案例同源,用来说明「同一现象有多个根因、否定边有用、
|
|
3
|
+
* 误导边昂贵」。
|
|
4
|
+
*
|
|
5
|
+
* 它现在有两重身份:
|
|
6
|
+
* 1. **首次启动的起点** —— `DiagnosisStore.ensure()` 在 `05_diagnosis/` 为空时把它写成
|
|
7
|
+
* 真实的 jsonl,之后用户可以手改,不会被覆盖回去;
|
|
8
|
+
* 2. **回归样本** —— 上面那三条结论需要一个稳定的夹具,所以它不会被删除。
|
|
9
|
+
*/
|
|
10
|
+
export const SEED_GRAPH = {
|
|
11
|
+
nodes: [
|
|
12
|
+
// ── 类型层:问题侧(每个现象带问题大类 / 子类,见 0021 §4.5) ───────────
|
|
13
|
+
// 三个**具体**现象,而不是一个「指标报表 T-1 异常」—— 大类是切面,不是节点;
|
|
14
|
+
// 把「T-1 指标异常」这种泛指做成节点,等于让三个不同的故障在图上长得一模一样。
|
|
15
|
+
{
|
|
16
|
+
id: 'S1', kind: 'symptom', layer: 'type', title: '日报 GMV 为 0',
|
|
17
|
+
problemClass: 'missing', problemSubclass: 'missing-zero',
|
|
18
|
+
summary: '观测量:日报 GMV + 单日窗口;精确为 0 而不是偏低。',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: 'S2', kind: 'symptom', layer: 'type', title: '订单数只剩昨日 12%',
|
|
22
|
+
problemClass: 'deviation', problemSubclass: 'deviation-drop-sharp',
|
|
23
|
+
summary: '观测量:日报订单数 + 单日窗口;下降 88%,按渠道切开后缺口集中在新增渠道。',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
id: 'S3', kind: 'symptom', layer: 'type', title: 'DAU 突增 3.1 倍',
|
|
27
|
+
problemClass: 'deviation', problemSubclass: 'deviation-rise-sharp',
|
|
28
|
+
summary: '观测量:DAU + 单日窗口;放大 3.1 倍且只有 T-1 单日,相邻日期正常。',
|
|
29
|
+
},
|
|
30
|
+
{ id: 'H1', kind: 'hypothesis', layer: 'type', title: '上游分区未产出', failureMode: 'upstream-missing', reuseCount: 12,
|
|
31
|
+
summary: '当日 dwd / ods 分区不存在 → 指标必然为 0。反例:分区在但行数为 0 时不是它。',
|
|
32
|
+
discriminator: '当日 dwd / ods 分区不存在 → 指标必然为 0',
|
|
33
|
+
notWhen: '分区存在但行数为 0(那是 H4);分区正常而指标仍为 0(那是口径或消费侧)' },
|
|
34
|
+
{ id: 'H2', kind: 'hypothesis', layer: 'type', title: '口径 / 版本变更', failureMode: 'spec-change', reuseCount: 5,
|
|
35
|
+
summary: '口径版本切换未同步 → 同名词指标在不同版本下口径不同。',
|
|
36
|
+
discriminator: '口径版本切换后,同名词指标在两版定义下口径不一致',
|
|
37
|
+
notWhen: '口径未变更时本假设不成立 —— 不要用「名字一样」当作口径一致的证据' },
|
|
38
|
+
{ id: 'H3', kind: 'hypothesis', layer: 'type', title: '维表映射丢失', failureMode: 'data-processing', reuseCount: 4,
|
|
39
|
+
summary: '新渠道未补录维表 → join 落 unknown 后被 where 过滤。',
|
|
40
|
+
discriminator: '维表 join 后 unknown 占比显著升高,且缺口集中在新增维度成员上',
|
|
41
|
+
notWhen: 'unknown 占比正常时本假设不成立;缺口若均匀分布在各维度上,应转 H4 或 H5' },
|
|
42
|
+
{ id: 'H4', kind: 'hypothesis', layer: 'type', title: '重复 / 回刷', failureMode: 'data-processing', reuseCount: 6,
|
|
43
|
+
summary: '上游重跑写入重复行 → 计数类指标放大。',
|
|
44
|
+
discriminator: '主键不唯一,或分区行数同比放大',
|
|
45
|
+
notWhen: '主键唯一性检查通过(T4.1)时本假设不成立 —— 这是最常被误判的一条' },
|
|
46
|
+
{ id: 'H5', kind: 'hypothesis', layer: 'type', title: '时间窗口 / 时区', failureMode: 'data-processing', reuseCount: 2,
|
|
47
|
+
summary: '跨天事件被补写进 T-1 分区 → 单日指标异常放大。',
|
|
48
|
+
discriminator: '分区内事件时间跨天,且只有 T-1 单日异常',
|
|
49
|
+
notWhen: '相邻日期同时异常时应转 H2;事件时间落在单日内则应转 H4' },
|
|
50
|
+
{ id: 'H6', kind: 'hypothesis', layer: 'type', title: '权限 / 过滤条件', failureMode: 'permission', reuseCount: 1,
|
|
51
|
+
summary: '行级权限或 where 条件变更 → 结果集被静默收窄。',
|
|
52
|
+
discriminator: '结果集被行级权限或 where 条件静默收窄',
|
|
53
|
+
notWhen: '权限与过滤条件在本周期未变更时本假设不成立' },
|
|
54
|
+
{ id: 'H7', kind: 'hypothesis', layer: 'type', title: '下游 BI 缓存 / 增量', failureMode: 'consumption', reuseCount: 3,
|
|
55
|
+
summary: '缓存或增量刷新未触发 → 展示侧滞后,明细不受影响。',
|
|
56
|
+
discriminator: 'BI 展示侧滞后,但直连明细的数字正常',
|
|
57
|
+
notWhen: '明细对账一致(T7.2)时本假设不成立;注意 T7.1「缓存时间正常」不足以否定它' },
|
|
58
|
+
// `code` 是这张卡片的稳定标识:假设卡片里写的是编码(`failure_mode: data-processing`),
|
|
59
|
+
// 边要连到节点 —— 少了它,「编码 → 节点」就只能靠 F1..F5 的位置去猜。
|
|
60
|
+
{ id: 'F1', kind: 'failure-mode', layer: 'type', title: '上游未产出', code: 'upstream-missing' },
|
|
61
|
+
{ id: 'F2', kind: 'failure-mode', layer: 'type', title: '口径变更', code: 'spec-change' },
|
|
62
|
+
{ id: 'F3', kind: 'failure-mode', layer: 'type', title: '数据处理', code: 'data-processing' },
|
|
63
|
+
{ id: 'F4', kind: 'failure-mode', layer: 'type', title: '消费与展示', code: 'consumption' },
|
|
64
|
+
{ id: 'F5', kind: 'failure-mode', layer: 'type', title: '权限与过滤', code: 'permission' },
|
|
65
|
+
{ id: 'T1.1', kind: 'check', layer: 'type', title: '查分区存在性', costMinutes: 1, automation: 'auto', owner: '@duty',
|
|
66
|
+
summary: '分区 dwd_ord_di/dt 是否存在。不存在 → 支持 H1。',
|
|
67
|
+
verdictTrue: '分区不存在', verdictFalse: '分区存在' },
|
|
68
|
+
{ id: 'T1.2', kind: 'check', layer: 'type', title: '查任务实例状态', costMinutes: 1, automation: 'auto', owner: '@duty',
|
|
69
|
+
summary: '上游任务实例是否 failed。failed → 支持 H1。',
|
|
70
|
+
verdictTrue: '实例状态 failed', verdictFalse: '实例状态 success / running' },
|
|
71
|
+
{ id: 'T2.1', kind: 'check', layer: 'type', title: '口径版本对比', costMinutes: 15, automation: 'manual', owner: '@metric-owner',
|
|
72
|
+
summary: '对比近两次口径版本定义。口径变化 → 支持 H2。',
|
|
73
|
+
verdictTrue: '近两次口径定义不一致', verdictFalse: '口径定义逐字一致' },
|
|
74
|
+
{ id: 'T3.1', kind: 'check', layer: 'type', title: 'unknown 占比', costMinutes: 2, automation: 'auto', owner: '@duty',
|
|
75
|
+
summary: '维表 join 后 unknown 占比。显著升高 → 支持 H3。',
|
|
76
|
+
verdictTrue: 'unknown 占比 > 5%', verdictFalse: 'unknown 占比 ≤ 5%' },
|
|
77
|
+
{ id: 'T4.1', kind: 'check', layer: 'type', title: '主键唯一性', costMinutes: 3, automation: 'auto', owner: '@duty',
|
|
78
|
+
summary: '主键唯一性检查。通过 → 否定 H4。这是最常被误判的一条。',
|
|
79
|
+
verdictTrue: '存在重复主键', verdictFalse: '主键唯一 → 否定 H4' },
|
|
80
|
+
{ id: 'T5.1', kind: 'check', layer: 'type', title: '事件时间分布', costMinutes: 8, automation: 'auto', owner: '@duty',
|
|
81
|
+
summary: '分区内事件时间分布。跨天 → 支持 H5。',
|
|
82
|
+
verdictTrue: '分区内事件时间跨出 T-1 单日窗口', verdictFalse: '事件时间全部落在 T-1 内' },
|
|
83
|
+
{ id: 'T7.1', kind: 'check', layer: 'type', title: '查缓存时间戳', costMinutes: 2, automation: 'auto', owner: '@duty',
|
|
84
|
+
summary: '缓存时间正常并不能否定 H7 —— 便宜检查给不出结论。',
|
|
85
|
+
verdictTrue: '缓存时间戳过期', verdictFalse: '缓存时间正常 —— 注意:这一条**不足以**否定 H7' },
|
|
86
|
+
{ id: 'T7.2', kind: 'check', layer: 'type', title: '直连明细对账', costMinutes: 35, automation: 'manual', owner: '@analyst',
|
|
87
|
+
summary: '明细对账一致 → 否定 H7。要否定它必须做这次贵检查。',
|
|
88
|
+
verdictTrue: '明细与报表数字不一致', verdictFalse: '明细与报表一致 → 否定 H7' },
|
|
89
|
+
// ── 引用层 ────────────────────────────────────────────────────────────
|
|
90
|
+
{ id: 'dwd_ord_di', kind: 'asset', layer: 'reference', title: 'dwd_ord_di' },
|
|
91
|
+
{ id: 'ods_order_sync', kind: 'asset', layer: 'reference', title: 'ods_order_sync' },
|
|
92
|
+
{ id: 'dim_channel_df', kind: 'asset', layer: 'reference', title: 'dim_channel_df' },
|
|
93
|
+
// ── 实例层(默认折叠,展开后用于演示「证据与复用」) ────────────────────
|
|
94
|
+
// 案例节点是**图上的桩**:标题必须与 `SEED_CASES[].title` 是同一个字符串,否则同一份
|
|
95
|
+
// 知识会有两份标题(而且还真的不一致过:「只剩」vs「只有」)。画布要在标签前显示案例 id,
|
|
96
|
+
// 那是渲染层的事(见 `nodeStyleFor` 的 labelText)。
|
|
97
|
+
{ id: 'CASE-001', kind: 'case', layer: 'instance', title: '日报 GMV 为 0' },
|
|
98
|
+
{ id: 'CASE-002', kind: 'case', layer: 'instance', title: '订单数只有昨日 12%' },
|
|
99
|
+
{ id: 'CASE-003', kind: 'case', layer: 'instance', title: 'DAU 突增 3.1 倍' },
|
|
100
|
+
{ id: 'C1', kind: 'cause', layer: 'instance', title: 'C1 ODS 任务失败' },
|
|
101
|
+
{ id: 'C2', kind: 'cause', layer: 'instance', title: 'C2 渠道维表未补录' },
|
|
102
|
+
{ id: 'C3', kind: 'cause', layer: 'instance', title: 'C3 跨天事件补写' },
|
|
103
|
+
{ id: 'E1', kind: 'evidence', layer: 'instance', title: 'E1 分区不存在' },
|
|
104
|
+
{ id: 'E7', kind: 'evidence', layer: 'instance', title: 'E7 明细对账一致' },
|
|
105
|
+
],
|
|
106
|
+
edges: [
|
|
107
|
+
// 层内:现象 → 假设(含一条僵尸边,用来演示「权重过期」)
|
|
108
|
+
//
|
|
109
|
+
// **三个现象共享同一批假设,这是这张图最重要的性质。** 每条现象只连它真正可能的原因,
|
|
110
|
+
// 于是「同一个假设被几个现象指向」就成了它的复用读数;而「为 0」与「突增」两个看起来
|
|
111
|
+
// 相反的故障,会在 H4(重复 / 回刷)上相遇 —— 这正是案例各长一棵树时永远看不见的东西。
|
|
112
|
+
{ id: 'e-s1-h1', source: 'S1', target: 'H1', kind: 'may_be_caused_by' },
|
|
113
|
+
{ id: 'e-s1-h2', source: 'S1', target: 'H2', kind: 'may_be_caused_by', staleDays: 94 },
|
|
114
|
+
{ id: 'e-s1-h3', source: 'S1', target: 'H3', kind: 'may_be_caused_by' },
|
|
115
|
+
{ id: 'e-s1-h4', source: 'S1', target: 'H4', kind: 'may_be_caused_by' },
|
|
116
|
+
{ id: 'e-s1-h5', source: 'S1', target: 'H5', kind: 'may_be_caused_by' },
|
|
117
|
+
{ id: 'e-s1-h6', source: 'S1', target: 'H6', kind: 'may_be_caused_by' },
|
|
118
|
+
{ id: 'e-s1-h7', source: 'S1', target: 'H7', kind: 'may_be_caused_by' },
|
|
119
|
+
// 突降:产出缺失、重复回刷、维表过滤、缓存滞后都能造成下降;口径与权限这次不在列。
|
|
120
|
+
{ id: 'e-s2-h1', source: 'S2', target: 'H1', kind: 'may_be_caused_by' },
|
|
121
|
+
{ id: 'e-s2-h3', source: 'S2', target: 'H3', kind: 'may_be_caused_by' },
|
|
122
|
+
{ id: 'e-s2-h4', source: 'S2', target: 'H4', kind: 'may_be_caused_by' },
|
|
123
|
+
{ id: 'e-s2-h7', source: 'S2', target: 'H7', kind: 'may_be_caused_by' },
|
|
124
|
+
// 突增:放大只可能来自重复计数、跨天补写、缓存重复展示 —— 缺口类的原因在这里不成立。
|
|
125
|
+
{ id: 'e-s3-h4', source: 'S3', target: 'H4', kind: 'may_be_caused_by' },
|
|
126
|
+
{ id: 'e-s3-h5', source: 'S3', target: 'H5', kind: 'may_be_caused_by' },
|
|
127
|
+
{ id: 'e-s3-h7', source: 'S3', target: 'H7', kind: 'may_be_caused_by' },
|
|
128
|
+
// 层内:假设 → 检查(H6 故意没有,它就是图上的空区)
|
|
129
|
+
{ id: 'e-h1-t11', source: 'H1', target: 'T1.1', kind: 'verified_by' },
|
|
130
|
+
{ id: 'e-h1-t12', source: 'H1', target: 'T1.2', kind: 'verified_by' },
|
|
131
|
+
{ id: 'e-h2-t21', source: 'H2', target: 'T2.1', kind: 'verified_by' },
|
|
132
|
+
{ id: 'e-h3-t31', source: 'H3', target: 'T3.1', kind: 'verified_by' },
|
|
133
|
+
{ id: 'e-h4-t41', source: 'H4', target: 'T4.1', kind: 'verified_by' },
|
|
134
|
+
{ id: 'e-h5-t51', source: 'H5', target: 'T5.1', kind: 'verified_by' },
|
|
135
|
+
{ id: 'e-h7-t71', source: 'H7', target: 'T7.1', kind: 'verified_by' },
|
|
136
|
+
{ id: 'e-h7-t72', source: 'H7', target: 'T7.2', kind: 'verified_by' },
|
|
137
|
+
// 层内:假设 → 失败模式(切面)
|
|
138
|
+
{ id: 'e-h1-f1', source: 'H1', target: 'F1', kind: 'categorized_as' },
|
|
139
|
+
{ id: 'e-h2-f2', source: 'H2', target: 'F2', kind: 'categorized_as' },
|
|
140
|
+
{ id: 'e-h3-f3', source: 'H3', target: 'F3', kind: 'categorized_as' },
|
|
141
|
+
{ id: 'e-h4-f3', source: 'H4', target: 'F3', kind: 'categorized_as' },
|
|
142
|
+
{ id: 'e-h5-f3', source: 'H5', target: 'F3', kind: 'categorized_as' },
|
|
143
|
+
{ id: 'e-h6-f5', source: 'H6', target: 'F5', kind: 'categorized_as' },
|
|
144
|
+
{ id: 'e-h7-f4', source: 'H7', target: 'F4', kind: 'categorized_as' },
|
|
145
|
+
// 跨层:资产反向索引
|
|
146
|
+
{ id: 'e-a-dwd-h1', source: 'dwd_ord_di', target: 'H1', kind: 'indexed_from' },
|
|
147
|
+
{ id: 'e-a-ods-h1', source: 'ods_order_sync', target: 'H1', kind: 'indexed_from' },
|
|
148
|
+
{ id: 'e-a-dim-h3', source: 'dim_channel_df', target: 'H3', kind: 'indexed_from' },
|
|
149
|
+
// 跨层:检查产出证据、证据支持或否定假设
|
|
150
|
+
{ id: 'e-t11-e1', source: 'T1.1', target: 'E1', kind: 'produces' },
|
|
151
|
+
{ id: 'e-e1-h1', source: 'E1', target: 'H1', kind: 'supports' },
|
|
152
|
+
{ id: 'e-t72-e7', source: 'T7.2', target: 'E7', kind: 'produces' },
|
|
153
|
+
{ id: 'e-e7-h7', source: 'E7', target: 'H7', kind: 'refutes' },
|
|
154
|
+
// 跨层:假设确认成根因
|
|
155
|
+
{ id: 'e-h1-c1', source: 'H1', target: 'C1', kind: 'confirmed_as' },
|
|
156
|
+
{ id: 'e-h3-c2', source: 'H3', target: 'C2', kind: 'confirmed_as' },
|
|
157
|
+
{ id: 'e-h5-c3', source: 'H5', target: 'C3', kind: 'confirmed_as' },
|
|
158
|
+
// 跨层:案例实例化(三个案例各归各的现象,但收敛到**同一批假设**)
|
|
159
|
+
{ id: 'e-case1-s1', source: 'CASE-001', target: 'S1', kind: 'instance_of', count: 1 },
|
|
160
|
+
{ id: 'e-case2-s2', source: 'CASE-002', target: 'S2', kind: 'instance_of', count: 1 },
|
|
161
|
+
{ id: 'e-case3-s3', source: 'CASE-003', target: 'S3', kind: 'instance_of', count: 1 },
|
|
162
|
+
],
|
|
163
|
+
};
|
|
164
|
+
/** 三个 seed 案例,与上面图谱里的节点 id 对齐(0021 §11)。 */
|
|
165
|
+
export const SEED_CASES = [
|
|
166
|
+
{
|
|
167
|
+
id: 'CASE-001',
|
|
168
|
+
title: '日报 GMV 为 0',
|
|
169
|
+
symptomId: 'S1',
|
|
170
|
+
durationMinutes: 65,
|
|
171
|
+
rootCause: 'ODS 任务 ods_order_sync 02:40 失败且未启用重试,dwd_ord_di/dt 分区未产出。',
|
|
172
|
+
sections: [
|
|
173
|
+
{ heading: '现象', body: '2026-08-11 日报 GMV = 0,前一日 128.4 万。指标值精确为 0 而不是偏低。' },
|
|
174
|
+
{ heading: '影响面', body: '全量受影响,不随维度细分变化 —— 这个特征把「口径类」原因基本排除了。' },
|
|
175
|
+
{ heading: '排查过程', body: '先确认分区是否存在(1 分钟),再确认上游任务实例状态;随后被下游缓存方向带走约 40 分钟,最终用明细对账否定它。' },
|
|
176
|
+
{ heading: '根因', body: '上游 ODS 任务在 02:40 失败,重试未启用。分区缺失导致下游 dwd 无输入,指标落 0。' },
|
|
177
|
+
{ heading: '修复与防复发', body: '补 dwd_ord_di 分区;给 ods_order_sync 加失败告警与自动重试;分区存在性检查加入日报前置校验。' },
|
|
178
|
+
],
|
|
179
|
+
path: [
|
|
180
|
+
{ nodeId: 'S1', label: 'S1', note: '进入:日报 GMV = 0' },
|
|
181
|
+
{ nodeId: 'H1', label: 'H1', note: '按优先分 29 排第一' },
|
|
182
|
+
{ nodeId: 'T1.1', label: 'T1.1', note: '查分区存在性 → 分区不存在' },
|
|
183
|
+
{ nodeId: 'E1', label: 'E1', note: '产出证据,支持 H1' },
|
|
184
|
+
{ nodeId: 'C1', label: 'C1', note: '确认根因' },
|
|
185
|
+
],
|
|
186
|
+
misleading: {
|
|
187
|
+
nodeId: 'H7',
|
|
188
|
+
label: 'H7 下游 BI 缓存',
|
|
189
|
+
wastedMinutes: 40,
|
|
190
|
+
why: 'T7.1 查缓存时间戳只要 2 分钟且返回「正常」,但**这个便宜检查给不出结论**;要否定 H7 必须做 35 分钟的人工明细对账。浪费不发生在笨检查上,而发生在这种「便宜检查无结论、贵检查没人愿意先做」的夹缝里。',
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
id: 'CASE-002',
|
|
195
|
+
title: '订单数只有昨日 12%',
|
|
196
|
+
symptomId: 'S2',
|
|
197
|
+
durationMinutes: 22,
|
|
198
|
+
rootCause: '新增渠道未补录维表,dim_channel_df join 落 unknown 后被 where channel is not null 过滤。',
|
|
199
|
+
sections: [
|
|
200
|
+
{ heading: '现象', body: '订单数 8,412,前一日 70,110,下降 88%。' },
|
|
201
|
+
{ heading: '影响面', body: '按渠道维度切开后,缺口集中在新增的两个渠道 —— 这个线索直接指向维表而不是上游。' },
|
|
202
|
+
{ heading: '排查过程', body: '按优先分先做最便宜的分区存在性检查(1 分钟),分区在,H1 被否定;接着做 H4 的主键唯一性检查,通过,H4 也被否定;转查 H3 的 unknown 占比,88%,一击确认。两次否定各花不到 3 分钟。' },
|
|
203
|
+
{ heading: '根因', body: '新渠道未补录维表,join 落 unknown,被下游过滤条件静默丢弃。' },
|
|
204
|
+
{ heading: '修复与防复发', body: '补录渠道维表;把 unknown 占比纳入日常巡检;下游过滤改为「先报警再过滤」。' },
|
|
205
|
+
],
|
|
206
|
+
path: [
|
|
207
|
+
{ nodeId: 'S2', label: 'S2', note: '进入:订单数下降 88%' },
|
|
208
|
+
{ nodeId: 'H1', label: 'H1', note: '优先分第一(1 分钟的分区检查)' },
|
|
209
|
+
{ nodeId: 'T1.1', label: 'T1.1✗', note: '分区存在 → 否定 H1', refuted: true },
|
|
210
|
+
{ nodeId: 'H4', label: 'H4', note: '剩余先验最高' },
|
|
211
|
+
{ nodeId: 'T4.1', label: 'T4.1✗', note: '主键唯一性通过 → 否定 H4', refuted: true },
|
|
212
|
+
{ nodeId: 'H3', label: 'H3', note: '转向维表映射' },
|
|
213
|
+
{ nodeId: 'T3.1', label: 'T3.1', note: 'unknown 占比 88%' },
|
|
214
|
+
{ nodeId: 'C2', label: 'C2', note: '确认根因' },
|
|
215
|
+
],
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
id: 'CASE-003',
|
|
219
|
+
title: 'DAU 突增 3.1 倍',
|
|
220
|
+
symptomId: 'S3',
|
|
221
|
+
durationMinutes: 35,
|
|
222
|
+
rootCause: '上游重跑把跨天事件补写进 T-1 分区,事件时间与处理时间边界被跨越。',
|
|
223
|
+
sections: [
|
|
224
|
+
{ heading: '现象', body: 'DAU 112 万 → 347 万,无对应投放或活动。' },
|
|
225
|
+
{ heading: '影响面', body: '只有 T-1 单日放大,相邻日期正常 —— 这排除了口径变更(口径类会同时影响多天)。' },
|
|
226
|
+
{ heading: '排查过程', body: '主键唯一性通过,H4 被否定;再查缓存时间戳,返回「正常」但**这一条给不出结论**(与 CASE-001 是同一个坑);最后查事件时间分布,发现跨天事件,命中 H5。' },
|
|
227
|
+
{ heading: '根因', body: '上游重跑把跨天事件补写进 T-1 分区。' },
|
|
228
|
+
{ heading: '修复与防复发', body: '重跑加事件时间边界校验;分区写入前检查事件时间下界。' },
|
|
229
|
+
],
|
|
230
|
+
path: [
|
|
231
|
+
{ nodeId: 'S3', label: 'S3', note: '进入:DAU 突增 3.1×' },
|
|
232
|
+
{ nodeId: 'H4', label: 'H4', note: '优先分第一(重复数据会放大计数)' },
|
|
233
|
+
{ nodeId: 'T4.1', label: 'T4.1✗', note: '主键唯一性通过 → 否定 H4', refuted: true },
|
|
234
|
+
{ nodeId: 'H7', label: 'H7', note: '转向展示侧' },
|
|
235
|
+
{ nodeId: 'T7.1', label: 'T7.1~', note: '缓存时间正常 —— 但这一条给不出结论' },
|
|
236
|
+
{ nodeId: 'H5', label: 'H5', note: '转向时间窗口' },
|
|
237
|
+
{ nodeId: 'T5.1', label: 'T5.1', note: '事件时间跨天' },
|
|
238
|
+
{ nodeId: 'C3', label: 'C3', note: '确认根因' },
|
|
239
|
+
],
|
|
240
|
+
},
|
|
241
|
+
];
|
|
242
|
+
//# sourceMappingURL=seed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../../src/diagnosis/seed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { type AttributionCase } from './seed.js';
|
|
2
|
+
import { type DiagnosisIssue } from './schema.js';
|
|
3
|
+
import { cardPathOf, type DiagnosisCard } from './cards.js';
|
|
4
|
+
import type { AttributionGraphData } from './types.js';
|
|
5
|
+
import type { KnowledgeRuntime } from '../runtime.js';
|
|
6
|
+
/** 读取顺序的显式来源,界面据此说明「现在看到的是哪一份」。 */
|
|
7
|
+
export type DiagnosisSource = 'cards' | 'jsonl' | 'seed';
|
|
8
|
+
export interface DiagnosisSnapshot {
|
|
9
|
+
graph: AttributionGraphData;
|
|
10
|
+
cases: AttributionCase[];
|
|
11
|
+
issues: DiagnosisIssue[];
|
|
12
|
+
/** 数据是不是本次 ensure() 从 seed 写进去的。界面据此说明来源。 */
|
|
13
|
+
seeded: boolean;
|
|
14
|
+
/** 旧知识根是否在本次被前向迁移成卡片。 */
|
|
15
|
+
migrated: boolean;
|
|
16
|
+
/** 读的是哪一份真相。 */
|
|
17
|
+
source: DiagnosisSource;
|
|
18
|
+
/** 写卡片 / 迁移过程中发现的问题(写失败、迁移分歧)。必须能显示出来,不能只进日志。 */
|
|
19
|
+
problems: string[];
|
|
20
|
+
}
|
|
21
|
+
/** 只取运行时里真正要用的三件事:读根目录、落 SourceRaw、写卡片。 */
|
|
22
|
+
type DiagnosisHost = Pick<KnowledgeRuntime, 'rootDir' | 'addSource' | 'writeCard'>;
|
|
23
|
+
export declare class DiagnosisStore {
|
|
24
|
+
private readonly host;
|
|
25
|
+
constructor(host: DiagnosisHost);
|
|
26
|
+
private get dir();
|
|
27
|
+
private get cardsDir();
|
|
28
|
+
/**
|
|
29
|
+
* 幂等初始化。三种状态各自处理,互不覆盖:
|
|
30
|
+
*
|
|
31
|
+
* 1. 已有卡片 → 什么都不做(卡片是真相,人可能刚改过);
|
|
32
|
+
* 2. 没有卡片但有旧 jsonl → **前向迁移**:把旧图反推成卡片写出去,并**校验迁移无损**
|
|
33
|
+
* (重新编译一遍与旧图比对,不一致就不认这次迁移,继续按 jsonl 读 —— 宁可留在旧形态,
|
|
34
|
+
* 也不要静默丢知识);
|
|
35
|
+
* 3. 两者都没有 → 首次启动:先落手册与复盘的 SourceRaw,再把 seed 编译成卡片。
|
|
36
|
+
*/
|
|
37
|
+
ensure(): Promise<{
|
|
38
|
+
seeded: boolean;
|
|
39
|
+
migrated: boolean;
|
|
40
|
+
problems: string[];
|
|
41
|
+
}>;
|
|
42
|
+
snapshot(): Promise<DiagnosisSnapshot>;
|
|
43
|
+
/**
|
|
44
|
+
* 图。
|
|
45
|
+
*
|
|
46
|
+
* 有卡片:`cardsToGraph(卡片)` + 一次排查的产物;没有卡片:按旧 jsonl 读。
|
|
47
|
+
* 两条路径都返回同一种形状,调用方不需要知道现在是哪一代。
|
|
48
|
+
*/
|
|
49
|
+
readGraph(): Promise<AttributionGraphData>;
|
|
50
|
+
readCases(): Promise<AttributionCase[]>;
|
|
51
|
+
/** 读 `02_wiki/diagnosis/**` 下的全部卡片。解析不出来的文件按「不是卡片」跳过。 */
|
|
52
|
+
readCards(): Promise<DiagnosisCard[]>;
|
|
53
|
+
/** 写一批卡片。返回写失败的原因(schema 不认、出处不存在等),由调用方决定怎么显示。 */
|
|
54
|
+
private writeCards;
|
|
55
|
+
private seed;
|
|
56
|
+
private migrate;
|
|
57
|
+
/**
|
|
58
|
+
* 落原始材料。
|
|
59
|
+
*
|
|
60
|
+
* 一个细节:种子手册与三篇复盘在**非首次**运行时可能已经存在(用户的知识根里),
|
|
61
|
+
* `addSource` 用 `externalId` 幂等,所以重复调用不会写出第二份。
|
|
62
|
+
*/
|
|
63
|
+
private writeSources;
|
|
64
|
+
private readRunArtifacts;
|
|
65
|
+
private writeRunArtifacts;
|
|
66
|
+
/** 旧版的类型层快照。首次 seed 时也写一份:它让 `05_diagnosis/` 仍是一份可读的完整快照。 */
|
|
67
|
+
private writeLegacySnapshot;
|
|
68
|
+
private readLegacyGraph;
|
|
69
|
+
/**
|
|
70
|
+
* 是否存在**值得迁移的旧知识根**。
|
|
71
|
+
*
|
|
72
|
+
* 只看旧版的**类型层**分片,而且要求它真的有内容:`ensure()` 自己会为一次排查的产物
|
|
73
|
+
* (`evidence.jsonl` 等)建空占位文件 —— 若把空文件也算成「旧知识根」,首次启动会走进
|
|
74
|
+
* 迁移分支,然后在空图上白跑一趟。
|
|
75
|
+
*/
|
|
76
|
+
private legacyShardFiles;
|
|
77
|
+
private readLines;
|
|
78
|
+
private writeIfAbsent;
|
|
79
|
+
}
|
|
80
|
+
export { cardPathOf };
|
|
81
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/diagnosis/store.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,WAAW,CAAA;AAExE,OAAO,EAAuD,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AACtG,OAAO,EACS,UAAU,EACR,KAAK,aAAa,EACnC,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAmB,oBAAoB,EAAwC,MAAM,YAAY,CAAA;AAC7G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AA0DrD,mCAAmC;AACnC,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;AAExD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,oBAAoB,CAAA;IAC3B,KAAK,EAAE,eAAe,EAAE,CAAA;IACxB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,6CAA6C;IAC7C,MAAM,EAAE,OAAO,CAAA;IACf,yBAAyB;IACzB,QAAQ,EAAE,OAAO,CAAA;IACjB,gBAAgB;IAChB,MAAM,EAAE,eAAe,CAAA;IACvB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,2CAA2C;AAC3C,KAAK,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC,CAAA;AAElF,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,aAAa;IAEhD,OAAO,KAAK,GAAG,GAAkD;IACjE,OAAO,KAAK,QAAQ,GAAqE;IAEzF;;;;;;;;OAQG;IACG,MAAM,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAiB7E,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAoC5C;;;;;OAKG;IACG,SAAS,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAU1C,SAAS,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAY7C,yDAAyD;IACnD,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAS3C,mDAAmD;YACrC,UAAU;YAoBV,IAAI;YAYJ,OAAO;IA4BrB;;;;;OAKG;YACW,YAAY;YAkBZ,gBAAgB;YAkBhB,iBAAiB;IAW/B,6DAA6D;YAC/C,mBAAmB;YAUnB,eAAe;IAe7B;;;;;;OAMG;YACW,gBAAgB;YAQhB,SAAS;YAMT,aAAa;CAM5B;AAsED,OAAO,EAAE,UAAU,EAAE,CAAA"}
|