# /detail 页面依赖与重算台账 v0.1 用户令 (2026-09-18): `/detail` 各页面不许用旧版产出补, 必须由 `data/raw` 重算; 旧版产物只可参照**呈现样式与内容**。逐页依赖见下表 (自动生成段)。 # /detail 页面依赖与重算台账 (自动生成, 禁手改) > 生成端: `python scripts/detail_deps.py --write`|场站 `rudong`|产物仓 `outputs/rudong`|盘上 3,550 件 > > 用户令 (2026-09-18): **/detail 各页面不许用旧版产出补**, 只能参照旧版产物的呈现样式与内容, 数值必须由 `data/raw` 重算。本表把每页的取数接口与产物件逐条列清, 缺的写明怎么补。 ## 1 页面 → 取数接口 | 页签 | 页面 | 取数接口 | |---|---|---| | overview | 总览 | `/api/fleet` | | energy | 发电与损失 | `/api/fleet` | | component | 部件与系统 | `/api/fleet` | | | | `/api/problem` | | | | `/api/turbine` | | vibration | 振动评估(CMS) | `/api/fleet` | | | | `/api/vibcms` | | generation | 特性曲线 | `/api/curves` | | fault | 故障与可用率 | `/api/fleet` | | decision | 决策链 | `/api/fleet` | | | | `/api/ont_chain` | | assistant | 问答 | `/api/fleet` | | | | `/api/ask` | | | | `/api/ask_status` | | | | `/api/ask_models` | | | | `/api/facts` | | | | `/api/facts/claim` | | report | 报告 | `/api/fleet` | | | | `/api/facts` | | | | `/api/rpt_compose` | | system | 系统自查 | `/api/fleet` | | | | `/api/maint_survey` | 注: `/api/maint_std` `/api/maint_framework` `/api/dq_findings` `/api/ontology` 属**经典页** (`/?…`, 组件根), `/v2` 工作台不取它们 —— 但同一批本体产物 (ontology/objects.json) 仍然决定着它们能不能出数, 故一并列在 §2。 ## 2 接口 → 产物 → 来源 / 生成端 | 接口 | 产物 | 件 | 大小 | 台账来源 | 生成端(族) | 判定 | |---|---|---:|---:|---|---|---| | /api/fleet | `windscada/temp_monthly.parquet` ✅必需 | 1 | 0.1 MB | raw-derived | scripts/windscada_monthly_build.py (scada_monthly) | 在位 | | | `windscada/alarms.parquet` ✅必需 | 1 | 0.9 MB | raw-derived | scripts/windscada_alarms_ingest.py (scada_alarms) | 在位 | | | `windscada/loss_monthly.parquet` ✅必需 | 1 | 0.1 MB | raw-derived | src/windscada/perf/powercurve.py (scada_derived) | 在位 | | | `windscada/powercurve_bins.parquet` ✅必需 | 1 | 0.0 MB | raw-derived | src/windscada/perf/powercurve.py (scada_derived) | 在位 | | | `windscada/powercurve_dev.parquet` ✅必需 | 1 | 0.0 MB | raw-derived | src/windscada/perf/powercurve.py (scada_derived) | 在位 | | /api/fleet | `windscada/*.parquet` ○可选 | 56 | 592.2 MB | (未登记)·raw-derived | scripts/windscada_alarms_ingest.py (scada_alarms·scada_derived·scada_oil·scada_slim10min) | 在位 | | | `ontology/turbine_params.parquet` ○可选 | 1 | 0.1 MB | raw-derived | app_ontology/app_ontology_guanlan/ontology/kb_ingest.py (ontology_core) | 在位 | | | `m5_cms_tcm/handoff_vibration_v2.json` ○可选 | 1 | 0.1 MB | raw-derived | scripts/rudong_fusion_handoff.py (vib_fusion_handoff) | 在位 | | | `m5_cms_tcm/fleet_scalar_z.parquet` ○可选 | 1 | 0.7 MB | raw-derived | scripts/rudong_fusion_run.py (vib_fleet_scalar_z) | 在位 | | | `pitch/pitch_daily.parquet` ○可选 | 1 | 0.4 MB | raw-derived | scripts/pitch_face_build.py (pitch_face) | 在位 | | | `pitch/pitch_zero_monthly.parquet` ○可选 | 1 | 0.0 MB | raw-derived | scripts/pitch_face_build.py (pitch_face) | 在位 | | /api/curves | `windscada/powercurve_bins.parquet` ✅必需 | 1 | 0.0 MB | raw-derived | src/windscada/perf/powercurve.py (scada_derived) | 在位 | | /api/curves | `windscada/curve_lenses.parquet` ○可选 | 1 | 0.1 MB | raw-derived | src/windscada/perf/powercurve.py (scada_derived) | 在位 | | | `windscada/curve_liveness.parquet` ○可选 | 1 | 0.0 MB | raw-derived | src/windscada/perf/powercurve.py (scada_derived) | 在位 | | | `windscada/control_profile.parquet` ○可选 | 1 | 0.0 MB | raw-derived | src/windscada/perf/powercurve.py (scada_derived) | 在位 | | | `windscada/hydraulic_accum.parquet` ○可选 | 1 | 0.0 MB | raw-derived | src/windscada/perf/powercurve.py (scada_derived) | 在位 | | /api/problem | `windscada/alarms.parquet` ✅必需 | 1 | 0.9 MB | raw-derived | scripts/windscada_alarms_ingest.py (scada_alarms) | 在位 | | /api/problem | `ontology/objects.json` ○可选 | 1 | 4.5 MB | raw-derived | app_ontology/app_ontology_guanlan/ontology/kb_ingest.py (ontology_core) | 在位 | | | `windscada/workorders.parquet` ○可选 | 1 | 0.5 MB | raw-derived | scripts/windscada_workorder_ingest.py (scada_workorders) | 在位 | | /api/turbine | `windscada/alarms.parquet` ✅必需 | 1 | 0.9 MB | raw-derived | scripts/windscada_alarms_ingest.py (scada_alarms) | 在位 | | /api/turbine | `ontology/objects.json` ○可选 | 1 | 4.5 MB | raw-derived | app_ontology/app_ontology_guanlan/ontology/kb_ingest.py (ontology_core) | 在位 | | | `windscada/workorders.parquet` ○可选 | 1 | 0.5 MB | raw-derived | scripts/windscada_workorder_ingest.py (scada_workorders) | 在位 | | /api/vibcms | `windcms/报告_CMS振动状态评估报告_*.md` ✅必需 | 2 | 0.0 MB | raw-derived | src/windcms/report_std.py (windcms_report_std) | 在位 | | /api/vibcms | `m5_cms_tcm/handoff_vibration_v2.json` ○可选 | 1 | 0.1 MB | raw-derived | scripts/rudong_fusion_handoff.py (vib_fusion_handoff) | 在位 | | | `windcms/cache/*` ○可选 | 1 | 2.2 MB | raw-derived | src/windcms/data.py (windcms_cache) | 在位 | | /api/maint_survey | `ontology/objects.json` ✅必需 | 1 | 4.5 MB | raw-derived | app_ontology/app_ontology_guanlan/ontology/kb_ingest.py (ontology_core) | 在位 | | /api/maint_std | `ontology/objects.json` ✅必需 | 1 | 4.5 MB | raw-derived | app_ontology/app_ontology_guanlan/ontology/kb_ingest.py (ontology_core) | 在位 | | /api/maint_framework | `ontology/objects.json` ✅必需 | 1 | 4.5 MB | raw-derived | app_ontology/app_ontology_guanlan/ontology/kb_ingest.py (ontology_core) | 在位 | | /api/dq_findings | `ontology/objects.json` ✅必需 | 1 | 4.5 MB | raw-derived | app_ontology/app_ontology_guanlan/ontology/kb_ingest.py (ontology_core) | 在位 | | /api/ont_chain | `ontology/objects.json` ✅必需 | 1 | 4.5 MB | raw-derived | app_ontology/app_ontology_guanlan/ontology/kb_ingest.py (ontology_core) | 在位 | | /api/ontology | `ontology/objects.json` ✅必需 | 1 | 4.5 MB | raw-derived | app_ontology/app_ontology_guanlan/ontology/kb_ingest.py (ontology_core) | 在位 | | /api/facts | `guanlan/facts_contract_v0.json` ✅必需 | 1 | 0.0 MB | raw-derived | scripts/guanlan_facts_contract.py (guanlan_contract) | 在位 | | | `guanlan/derived/detail_cards.json` ✅必需 | 1 | 0.0 MB | raw-derived | scripts/guanlan_facts_contract.py (guanlan_contract) | 在位 | | /api/facts | `guanlan/derived/qa_refs.json` ○可选 | 1 | 0.0 MB | raw-derived | scripts/guanlan_facts_contract.py (guanlan_contract) | 在位 | | | `guanlan/derived/portal_claims.json` ○可选 | 1 | 0.0 MB | raw-derived | scripts/guanlan_facts_contract.py (guanlan_contract) | 在位 | ## 3 缺口与处置 (缺的件谁生成、能不能从 data/raw 重算) 无缺口: 表内每件产物都在位且来源已登记。 ## 4 与输入数据的对应 (重算口径) | 产物族 | 输入 (data/raw/<场站>/…) | 生成端 | |---|---|---| | scada_monthly | scada_10min | `scripts/windscada_monthly_build.py` | | scada_alarms | 故障报警 | `scripts/windscada_alarms_ingest.py` | | scada_derived | scada_10min | `src/windscada/perf/powercurve.py` | | ontology_core | 西门子4.0技术资料 | `app_ontology/app_ontology_guanlan/ontology/kb_ingest.py` | | vib_fusion_handoff | m5_cms_tcm | `scripts/rudong_fusion_handoff.py` | | vib_fleet_scalar_z | m5_cms_tcm | `scripts/rudong_fusion_run.py` | | pitch_face | scada_10min | `scripts/pitch_face_build.py` | | scada_workorders | 风机故障记录 | `scripts/windscada_workorder_ingest.py` | | guanlan_contract | scada_10min | `scripts/guanlan_facts_contract.py` | ## 5 复现 ``` python scripts/detail_deps.py --probe # 实测在线接口 (页面同路径: 网关 → 组件 /v2) python scripts/products_restore_missing.py --refresh # 重算后维护逐件来源台账 python scripts/rebuild_all.py # 全量重算 (链上含 ⑤a 台账维护 → ⑤ 反向呼应审计) ```