Explorar el Código

文档: §4 重算边界表修正 —— 本体层从 ⛔ 表移入 ✅ 表

上一版的 ⛔ 表头写着"包内没有生成端", 却仍列着 `objects.json` 一行, 而该行内容已经改成
"放进技术资料后可重算" —— 表头与内容自相矛盾。§4 这张表就是"数据驱动程度"的定义, 不能含糊。

- ✅ 表新增 3 行: `objects.json`(2340 对象) + `retrieval_index.json`(BM25 词法索引, 向量那半要
  Ollama bge-m3) 与 `turbine_params.parquet`(1706 条整定值), 各带来源与入口命令;
- ⛔ 表移除 `objects.json` 行, 并把 `tcm_compatible_replay\*` 一并归到"振动线 handoff"那行;
- 两处边界都补了前提说明: 本体层可重算**取决于技术资料在不在盘上**(place_raw_data --scope mech),
  技术资料缺失时 kb_ingest 打印 `⚠ 源缺失` 降级而非静默。
zhouyang.xie hace 1 mes
padre
commit
409e6612f4
Se han modificado 1 ficheros con 7 adiciones y 3 borrados
  1. 7 3
      docs/数据目录结构与落位约定_v0.2.md

+ 7 - 3
docs/数据目录结构与落位约定_v0.2.md

@@ -127,17 +127,21 @@
 | `workorders.parquet` | 风机故障记录 | `windscada_workorder_ingest.py`(1574 种内容复现 1566 种, 8 种差异已逐条定位) |
 | `oil_samples_index.parquet` | 油样报告 | `windscada_watch_channels_build.py`——**部分可重建**: 404/506 行(SGS 批, 文件名可解析)逐值一致; 见下表缺口 |
 | `powercurve_dev/bins` · `loss_monthly` · `curve_lenses/liveness` · `control_profile/schedule` · `stop_events` · `temp_bins` · `yaw_daily` · `hydraulic_accum` · `thermal_chain` · `system_aux` | scada_10min + alarms | `rebuild_from_raw.py --scada`(实测: `loss_monthly` 3729/3729、`powercurve_dev` 38/38、`powercurve_bins` 912/912 与随包基线**逐值完全一致**) |
+| `objects.json`(本体 2340 个对象)· `retrieval_index.json` | **厂商技术资料** `data\raw\西门子4.0技术资料`(不在场站目录下) | `python -m src.ontology.kb_ingest`;检索索引 `python -c "from src.ontology import retrieval as R; R.build(use_vec=False)"`(BM25 词法索引; 向量那半要 Ollama 的 `bge-m3`, 本机没装模型时会跳过并保持纯词法可用) |
+| `turbine_params.parquet`(1706 条整定值) | 同上, `Turbine+Parameters.*.xlsx` | `python -c "from src.ontology.maintenance import refresh_params as f; f()"` |
+
+> 本体层这三件的前提是**技术资料在盘上**(`place_raw_data.py --scope mech` 会落, 见 §2);技术资料不在时
+> `kb_ingest` 会打印 `⚠ 源缺失` 并降级 —— 不静默。
 
 **⛔ 包内没有生成端 / 源件不在数据包内**(只读不写, 因此 `data\raw` 换数据不会更新它们)
 
 | 产物 | 谁在读它 | 说明 |
 |---|---|---|
 | `oil_samples_index` 里的 **102 行华标 2026-07 批** | 数据层「油液化验」、油液时效胶囊 | 源件是一份**合并报告** `BG-2026-07-YP013 中广核新能源如东海上风电场.pdf`(一份覆盖多台, 台号/部件只在 PDF 表格里), **且该文件不在现场数据包里** → 清空重建会丢这 102 行。摄入脚本因此采取**合并语义**: 认不出的老行原样保留、绝不删(场景② 实测就出现了 506→404 的落差, 需现场补那份 PDF 才能从 raw 全量重建) |
-| `pc_monthly_bins` · `duty_monthly` · `thermal_monthly` · `sector_power` | 趋势件/热链/扇区 | 组级产物, v0.2.0 未附构建脚本 |
+| `pc_monthly_bins` · `duty_monthly` · `thermal_monthly` · `sector_power` | 趋势件/热链/扇区 | 组级产物, v0.2.0 未附构建脚本(全库只有读取方, 0 处写入方) |
 | `yaw_dynamic_monthly` · `yaw_press_monthly` · `yaw1min_liveness` · `yaw_err_clean` · `genbearing_monthly` · `mblub_monthly` | 偏航/温度/润滑面 | 同上 |
 | `structure.parquet` · `watch_channels_monthly.parquet` | 结构面/温度联动/融合 | 后者连包内注释都写着"须重建 `scripts\windscada_watch_channels_build.py`" —— 本版该脚本只产油样索引, 未含 watch_channels 月表 |
-| `objects.json`(本体) | 图谱检索、问答、维护页机理层 7 行 | 来源是厂商资料 `data\raw\西门子4.0技术资料`(**不在**场站目录下)。放进技术资料后**可重算**: `python -m src.ontology.kb_ingest` → 对象 2340 个(Doc 303 · AlarmCode 555 · WI 559 · 失效模式 150 · 维护任务 559); 另有 `python -c "from src.ontology.maintenance import refresh_params as f; f()"` → `turbine_params.parquet` 1706 条 |
-| `windcms\*` · `m5_cms_tcm\*` | CMS/融合 | 来源是**振动线 handoff(CMS 测点索引)**, 现场包里只有成品牌报告 PDF, 没有测点数据 → 仍 ⛔ |
+| `windcms\*` · `m5_cms_tcm\*` · `tcm_compatible_replay\*` | CMS/融合/TCM 兼容链 | 来源是**振动线 handoff(CMS 测点索引)**; 现场包里只有成品牌报告 PDF, 没有测点数据 → 仍 ⛔(`/cms/` 因此 503) |
 
 > **本体层的可重算性取决于技术资料在不在**: `kb_ingest.py` 的 `TECH = P.RAW_ROOT/'西门子4.0技术资料'`,
 > 且 `rd()` 要读 `故障处理/故障处理手册.xlsx`、`广核如海风电场西门子风机故障代码中英文对译表.xlsx`、