维护者 2026-10-21 反馈:报警效率与预警分析也应能取近 90 天数据,不应显示「最多支持31天」。
实测取证(2026-10-21,192.168.110.96:8301):
400 {"category":"INVALID_REQUEST","message":"efficiency window must not exceed 31 days"}(analysis/history 同句式)。history-analysis 前端已经这么做了(票 61:historyWindows() 分窗 + 合并);fetchHandlingEfficiency/fetchEventAnalysis 遇 >31 天则直接返回 UNAVAILABLE(unsupportedWindow()),界面挂「当前接口最多支持31天统计」提示。historyWindows 分窗(≤30 天/窗)并行取数 + 合并,与票 61 同一先例。handlingEfficiency 用合并后 stateCounts 重算、averageDuration 按 sampleCount 加权、workOrderStateCounts 按码求和);分析(totalCount 求和、dimensions 按 dimensionCode 合并、buckets 按 bucketCode 求和并重算 percentage)。verify/artifacts/t75/)+ 变异打红;按 AGENTS.md 跳过 build/dev/浏览器验证。services/warningResponseApi.js(fetchHandlingEfficiency/fetchEventAnalysis/unsupportedWindow)、components/WarningResponsePane.vue(31 天提示行)、domain/eventRange.js(historyWindows)。historyWindows)。票 61(服务端分页批次三)的「多窗合并范围」三分类。
fetchAggregated(分窗 + 合并统一出口)替代 unsupportedWindow 拦截;
mergeEfficiencyPayloads / mergeAnalysisPayloads 按 acceptance 逐字段实现并从服务导出(闸门直接消费,
不复刻第二份防漂移);7/30 天单窗路径零变化;「最多支持31天」提示撤除。+=→||= 对「前两窗为 0」的数据等价、"丢弃后窗空维度桶"不可观测,
改钉「末窗覆盖」才可观测——见 t75-mutations M2/M4 注释)。Status: resolved Type: task Blocked by: Labels: wayfinder:task
结论:90 天支持已在前端实现(后端零改动)。31 天/请求是后端既有契约(400 报文明说
efficiency window must not exceed 31 days),分窗是前端消费侧职责 —— 与票 61 历史事件多窗合并同一条先例。
改动(services/warningResponseApi.js + components/WarningResponsePane.vue):
fetchAggregated(path, options, hooks):统一出口 —— historyWindows 切窗(≤30 天/窗,天然满足 31 天契约);
单窗走原 fetchSection 路径(7/30 天行为零变化);多窗并行取原始载荷(toData 恒等),合并后再过一次域转换
—— 单窗/多窗最后走同一段 toHandlingEfficiency/toEventAnalysis,不分叉出两套口径。mergeEfficiencyPayloads(导出):durationTrend 时序拼接去重、events 各窗首页拼接、summary 计数求和、
handlingEfficiency 用合并后 stateCounts 重算(分子=已结案5,分母=可计入0–6,与后端 stateCounts 同一算法)、
averageDuration 按 sampleCount 加权(无样本如实 EMPTY)、workOrderStateCounts 按码求和。mergeAnalysisPayloads(导出):totalCount 求和、dimensions 按 dimensionCode 合并、buckets 按 bucketCode
求和 + percentage 重算(50%+25%=75% 的老错误被闸门 B4 钉住)。判据:t75 闸门 18/18 —— 证据载荷是 2026-10-21 对
192.168.110.96:8301 按 30 天切窗实取的 4 窗响应(artifacts/t75/,WARNING/ALARM 效率各 4 窗 + 分析 4 窗;
实测 w3 窗 WARNING 13 条、ALARM 90 条,w1/w2/w4 为空 —— 90 天数据真实存在,只是原来被前端自己挡掉)。
t75 变异 8/8。
变异的两条等价变异教训(记入 t75-mutations M2/M4 注释):
totalEvents += x 变 ||= x 对「前两窗为 0」的数据是等价变异(结果不变,闸门不红);分析端 w1/w2 的
维度桶为空数组,「丢弃后窗同码桶」同样不可观测 —— 换成「末窗覆盖」形态才打得出红。
回归:t13/t16/t19/t20/t39/t40/t42/t44(109+6/6)/t46/t56(9/9)/t61(39/39)/t64(17/17)/t65(51/51+27/27) 全绿。
未完成/如实记:
services/warningResponseApi.js 同时承载票 61 的既有未提交增量,与票 75 交叠在同一文件)。