detail_页面依赖与重算台账_v0.1.md 12 KB

/detail 页面依赖与重算台账 v0.1

用户令 (2026-09-18): /detail 各页面不许用旧版产出补, 必须由 data/raw 重算; 旧版产物只可参照呈现样式与内容。逐页依赖见下表 (自动生成段)。

/detail 页面依赖与重算台账 (自动生成, 禁手改)

生成端: python scripts/detail_deps.py --write|场站 rudong|产物仓 outputs/rudong|盘上 1,775 件

用户令 (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 ○可选 17 2.0 MB raw-derived scripts/windscada_alarms_ingest.py (scada_alarms·scada_derived·scada_oil·scada_monthly·scada_workorders) 在位
ontology/turbine_params.parquet ○可选 1 0.1 MB raw-derived src/ontology/kb_ingest.py (ontology_core) 在位
m5_cms_tcm/handoff_vibration_v2.json ○可选 0 0.0 MB — — (vib_handoff_and_scans) 缺(页面降级)
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 ○可选 0 0.0 MB — — (pitch_shipped) 缺(页面降级)
pitch/pitch_zero_monthly.parquet ○可选 0 0.0 MB — — (pitch_shipped) 缺(页面降级)
/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.3 MB raw-derived src/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.3 MB raw-derived src/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 ✅必需 1 0.0 MB raw-derived src/windcms/report_std.py (windcms_report_std) 在位
/api/vibcms m5_cms_tcm/handoff_vibration_v2.json ○可选 0 0.0 MB — — (vib_handoff_and_scans) 缺(页面降级)
windcms/cache/* ○可选 1 2.2 MB raw-derived src/windcms/data.py (windcms_cache) 在位
/api/maint_survey ontology/objects.json ✅必需 1 4.3 MB raw-derived src/ontology/kb_ingest.py (ontology_core) 在位
/api/maint_std ontology/objects.json ✅必需 1 4.3 MB raw-derived src/ontology/kb_ingest.py (ontology_core) 在位
/api/maint_framework ontology/objects.json ✅必需 1 4.3 MB raw-derived src/ontology/kb_ingest.py (ontology_core) 在位
/api/dq_findings ontology/objects.json ✅必需 1 4.3 MB raw-derived src/ontology/kb_ingest.py (ontology_core) 在位
/api/ont_chain ontology/objects.json ✅必需 1 4.3 MB raw-derived src/ontology/kb_ingest.py (ontology_core) 在位
/api/ontology ontology/objects.json ✅必需 1 4.3 MB raw-derived src/ontology/kb_ingest.py (ontology_core) 在位
/api/facts guanlan/facts_contract_v0.json ✅必需 0 0.0 MB — — (guanlan_contract) 缺
guanlan/derived/detail_cards.json ✅必需 0 0.0 MB — — (guanlan_contract) 缺
/api/facts guanlan/derived/qa_refs.json ○可选 0 0.0 MB — — (guanlan_contract) 缺(页面降级)
guanlan/derived/portal_claims.json ○可选 0 0.0 MB — — (guanlan_contract) 缺(页面降级)

3 缺口与处置 (缺的件谁生成、能不能从 data/raw 重算)

接口 缺件 必需 生成端 能否由 data/raw 重算
/api/fleet m5_cms_tcm/handoff_vibration_v2.json 否 (无生成端) 不能: 振动六层链四步脚本未随包(oem_frequency_scan 等)⇒ 运行期不从交付包补(用户令 2026-09-17 ⇒ 需研发补生成端
/api/fleet pitch/pitch_daily.parquet 否 (无生成端) 不能: 无生成端 ⇒ 运行期不从交付包补(用户令 2026-09-17), 页面降级; 要出件须研发补生成端 ⇒ 需研发补生成端
/api/fleet pitch/pitch_zero_monthly.parquet 否 (无生成端) 不能: 无生成端 ⇒ 运行期不从交付包补(用户令 2026-09-17), 页面降级; 要出件须研发补生成端 ⇒ 需研发补生成端
/api/vibcms m5_cms_tcm/handoff_vibration_v2.json 否 (无生成端) 不能: 振动六层链四步脚本未随包(oem_frequency_scan 等)⇒ 运行期不从交付包补(用户令 2026-09-17 ⇒ 需研发补生成端
/api/facts guanlan/facts_contract_v0.json 是 (无生成端) 不能: 派生链的中间层: 它的"输入"本身是产物而非 data/raw ⇒ 与 raw 之间隔着不止一跳; 运行期不从交付包补( ⇒ 需研发补生成端
/api/facts guanlan/derived/detail_cards.json 是 (无生成端) 不能: 派生链的中间层: 它的"输入"本身是产物而非 data/raw ⇒ 与 raw 之间隔着不止一跳; 运行期不从交付包补( ⇒ 需研发补生成端
/api/facts guanlan/derived/qa_refs.json 否 (无生成端) 不能: 派生链的中间层: 它的"输入"本身是产物而非 data/raw ⇒ 与 raw 之间隔着不止一跳; 运行期不从交付包补( ⇒ 需研发补生成端
/api/facts guanlan/derived/portal_claims.json 否 (无生成端) 不能: 派生链的中间层: 它的"输入"本身是产物而非 data/raw ⇒ 与 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技术资料 src/ontology/kb_ingest.py
vib_handoff_and_scans — —
vib_fleet_scalar_z m5_cms_tcm scripts/rudong_fusion_run.py
pitch_shipped — —
scada_workorders 风机故障记录 scripts/windscada_workorder_ingest.py
guanlan_contract — —

5 复现

python scripts/detail_deps.py --probe        # 实测在线接口 (页面同路径: 网关 → 组件 /v2)
python scripts/products_restore_missing.py --refresh   # 重算后维护逐件来源台账
python scripts/rebuild_all.py               # 全量重算 (链上含 ⑤a 台账维护 → ⑤ 反向呼应审计)

P 实测 (本次运行, 走网关 28084 → 组件 /v2)

判读口径: 只认响应顶层的 err/error/no_products/no_report; /api/ask* /api/rpt_compose 依赖本机模型, 未启动时记「不适用」不算缺件。

页签 接口 判定 实测
overview /api/fleet 有数 HTTP 200 · 55,698 B
energy /api/fleet 有数 HTTP 200 · 55,698 B
component /api/fleet 有数 HTTP 200 · 55,698 B
/api/problem 有数 HTTP 200 · 16 B
/api/turbine 有数 HTTP 200 · 14,417 B
vibration /api/fleet 有数 HTTP 200 · 55,698 B
/api/vibcms 有数 HTTP 200 · 6,797 B
generation /api/curves 有数 HTTP 200 · 23,913 B
fault /api/fleet 有数 HTTP 200 · 55,698 B
decision /api/fleet 有数 HTTP 200 · 55,698 B
/api/ont_chain 有数 HTTP 200 · 288 B
assistant /api/fleet 有数 HTTP 200 · 55,698 B
/api/ask 有数 HTTP 404 · 3 B
/api/ask_status 有数 HTTP 200 · 173 B
/api/ask_models 有数 HTTP 200 · 137 B
/api/facts 报错 HTTP 503 · facts derived 缺失: [Errno 2] No such file or directory: 'F:\temp\app
/api/facts/claim — —
report /api/fleet 有数 HTTP 200 · 55,698 B
/api/facts 报错 HTTP 503 · facts derived 缺失: [Errno 2] No such file or directory: 'F:\temp\app
/api/rpt_compose 不适用(本机模型未启动) HTTP 200 · 本地模型不可达:
system /api/fleet 有数 HTTP 200 · 55,698 B
/api/maint_survey 有数 HTTP 200 · 7,498 B