fix: resume incomplete SCADA presentations

This commit is contained in:
2026-11-12 10:38:55 +08:00
parent db87323b69
commit 0be30b80bb
12 changed files with 420 additions and 5 deletions
+2
View File
@@ -55,6 +55,8 @@ SCADA地图定位、等级标记、表格与图表采用同一目标设备集合
同图最多100横轴槽、8组序列,每组与x_data对齐。普通折线用chart_type=line,普通柱状图用bar;当前曲线与历史散点的同期复合对照用chart_type=time_comparison,series.type分别为line和scatter。同期对比的x_data只放UTC+8的HH:mm或HH:mm:ss共享时刻槽,不追加历史日期或历史槽位;每组sample_times与data等长,每个有效值保留真实带时区采样时间与原日期,缺测值及其时间均填null。当前曲线使用同一窗口,历史每组来自此前某一天的对应窗口,历史点填到同一时刻槽;跨午夜时按窗口时间顺序排列。超限按对象分图或时间分段,保留目标设备覆盖;聚合时说明方法,各单位和各类业务含义分别展示。同主题同分组更新同一chart_id,保留图表供查看;报告保留关键结论和来源。
SCADA监测过程图填写chart.scada={role:current或comparison,metric:pressure或flow,unit,window_start,window_end},窗口为本轮完整三小时,截止非整刻仍按真实采样网格;超过100槽时连续分段并用不同稳定chart_id,分段scada窗口保持完整三小时,Server合并采样槽校验覆盖;历史散点仅保留完整窗口末三个采样槽;低频设备无计划采样槽时完整查询对应当天及历史窗口,以截止时刻单个null保留入口;每条series显式填写device_id和day_offset(当天0、此前七天1至7)。同期图逐设备保留当天和七天共8组,证据引用覆盖全部当前与历史采样;value_field默认monitored_value。缺测需完整查询证明,再保留null,Server生成scada.gaps;仅供参考的设备仍要展示。报告scada_device_ids列出监测明细表和展示目标的完整设备集合。Server按本轮累计目标校验当前总览及同期图,SCADA_PRESENTATION_INCOMPLETE表示必须按返回设备补图,不能删除目标、关闭窗口或声明不参与结论来绕过;报告和成功结束均校验。浏览器连接及显示回执不参与这项产物校验。
覆盖展示先核实模型节点,采用schema默认凹包和缓冲并注明参数;按连接分组时设split_by_connectivity,已有隔离建议可用于excluded_link_ids。只有result.map_payload.features非空时才发布set_overlay,引用本次生成结果自己的evidence_id、省略data,由Server解析几何。返回的data.presentation.command可直接作为command,另生成稳定request_id。缺少部分几何时展示有效部分并说明覆盖;全部缺失时展示可用点位或记录限制。
对象ID、数量、图层与样式遵循schema,坐标使用受控来源。展示失败时修正调用,仍失败则记录具体限制并继续独立分析。recorded表示请求已保存,浏览器跟随、连接和暂停由前端处理,收尾依据分析结果与发布回执。
File diff suppressed because one or more lines are too long
@@ -42,6 +42,8 @@ const reportFields = {
conclusion_boundary: text,
evidence_refs: tool.schema.array(text).default([]),
ui_blocks: taskReportUiBlocksSchema,
scada_device_ids: tool.schema.array(identifier).max(1000).optional()
.describe("SCADA devices listed in monitoring tables or used as display targets, including reference-only devices. Server checks their current and seven-day chart coverage."),
};
export const taskPublicationReportSchema = tool.schema.discriminatedUnion("outcome", [