فهرست منبع

尾月样本少也如实出: 记下用户令 2026-09-20 的裁决 (保持现状)

用户裁决: 补充件最后的时间戳 2026-09-01 00:00 让 temp_monthly 多出"只有 1 行的 2026-09",
时间窗里多一格 —— **保持现状, 如实反映源件** (不加入"最少样本"门、不裁尾段)。
- scripts/windscada_monthly_build.py::build_temp_monthly 文档写清为什么不做这个门:
  产物=当前 data/raw 的函数; 源件里有这个时间戳就该看得见, 加门会让"数据到没到"变成猜的;
  要少这一格应由现场裁掉那个时间戳, 不在本器里静默过滤。
- docs/输入数据放置指导_v0.1.md §4 同步这条口径。
复核: temp_monthly 月份 21(末 2026-07/2026-08/2026-09), 2026-09 一行; /api/fleet months 含之。
zhouyang.xie 3 هفته پیش
والد
کامیت
cf18220e7c
2فایلهای تغییر یافته به همراه11 افزوده شده و 0 حذف شده
  1. 5 0
      docs/输入数据放置指导_v0.1.md
  2. 6 0
      scripts/windscada_monthly_build.py

+ 5 - 0
docs/输入数据放置指导_v0.1.md

@@ -83,6 +83,11 @@ python scripts\rebuild_all.py --auto    # 先扫一遍再重算: 新数据落在
 若想让服务自己盯着(每 N 分钟扫一次、可选自动重算):`configs\serve.json` 的 `raw_watch`
 (默认关:`{"enabled": false, "minutes": 30, "auto_rebuild": false}`)。
 
+★ **尾月样本很少也如实出**(用户令 2026-09-20 裁决「保持现状」):实测补充件最后一个时间戳是
+`2026-09-01 00:00`,于是 `temp_monthly` 里会多出一个**只有 1 行的 2026-09**,时间窗里也就多一格。
+口径 = **产物是当前 `data/raw` 的函数** —— 源件里有这个时间戳就该看得见;加"最少样本"门会让
+"数据到没到"变成猜的。要少这一格,把那个时间戳裁掉、或让现场别导出月初那一行即可。
+
 ★ **产物 = 当前 `data/raw` 的函数**(用户令 2026-09-20「重算时要根据该目录最新的变化重算」):
 **删掉/换掉源件**后重算, 那些行就不再产出(脚本会大声报出"哪几个源件已不在盘、少了多少行、涉及哪些月",
 好让人分清误删与现场撤数)。报警台账按**键集合并集**去重(键 = Name/Alarmcode/TimeOn),

+ 6 - 0
scripts/windscada_monthly_build.py

@@ -92,6 +92,12 @@ def build_temp_monthly(cfg, turbines=None, progress=True):
     """→ (长表 DataFrame[turbine, channel, month, med], 明细 dict)
 
     规则: 每台 × 每月 × 每个温度通道, 在 p ≥ 500kW 行上的中位数。
+
+    ★**不做"样本太少就不出月"的门** (用户令 2026-09-20 裁决: 保持现状、如实反映源件):
+      实测 2026-09 只有 1 行(补充件 `WTG01-B2.csv` 的最后一个时间戳 `2026-09-01 00:00`),
+      该月照样出一行 —— 页面时间窗按月过滤时它就"一格数据"。理由是**产物=当前 data/raw 的函数**:
+      源件里有这个时间戳, 就该看得见; 加"最少样本"门会让"数据到没到"这件事变成猜的。
+      要少这一格, 现场把那个时间戳裁掉或让现场别导出月初那一行即可, 不在本器里静默过滤。
     """
     chans = temp_channels(cfg)
     rows, info = [], {}