workbench.md 9.2 KB

工作台数据与交付契约

八个宿主入口

工具 作用
prepare_main_fan_task 绑定任务身份、导出原始数据与规则,不做解析或分析
fetch_main_fan_data 按任务身份取得网关原件、设备和时序
query_fan_sensor_realtime 按部门、可选类型及页码查询安全监控实时传感器目录
query_fan_timeseries 按 node_id、dept_id 与起止时间重复查询原始曲线,返回完整数据文件
query_fan_equipment_realtime 查询重大设备主通风机系统(devOfSystem=30)实时数据,保留设备与测点字段
query_fan_equipment_timeseries 按重大设备node_id、dept_id与时间范围取得/zdsb/历史曲线
run_python 执行你自己编写的脚本,保存真实输出、代码快照与执行记录
submit_main_fan_report 核验交付文件与执行记录并归档,不重跑业务算法

文档解析、图像处理、参数比较、图表和报告生成由你在沙箱中编写代码完成。本地批次的开停、切换和风量已由宿主整理,直接读取prepared_data.agent_data_path,不调用以上取数工具或重新计算;批次流程见batch.md。文件读写和看图片使用框架内置的 read_file、write_file、edit_file 等通用工具。

可信任务文件

prepare_main_fan_task 返回实际 workflow_id 和 /workspace/exploration/<workflow_id>/ 下的路径:

文件 内容
input.json 完整 MainFanInput,包含 materials 和全部原始输入
data.json ScreeningInput 原始业务数据,没有自动 OCR、合并或计算结果
identities.json 本轮矿井、fan_pair、服务端 fan_id→fan_name 对应
rules.json 本轮冻结的规则与版本
submission.schema.json AgentAssessment 最终研判 JSON schema
operations.json 实际发生的准备、取数和代码执行操作

上述可信输入不要修改。需要清洗、归一化或合并事实时另写派生文件。网关取数会更新可信输入;取数后重新读文件,重新运行受影响的分析。

query_fan_timeseries 每次另存 queries/<query_id>/request.json、response.json(上游原始业务响应)、samples.json(metadata 和规范化 samples),均在本轮 exploration 目录。返回 python_paths.data 等相对路径可直接供 Python 使用;preview 仅为预览,分析须读取完整文件。每次查询保留独立文件和来源指纹,准备工具返回的 timeseries_queries 可找回查询记录。不会自动生成整机状态、切换事件或风量单位,仍由你核对来源并分析。

两个实时列表工具及重大设备历史工具也按次保存request.json、response.json与完整data_path;后者JSON的payload是未经字段改写的上游业务响应。准备工具的sensor_queries、equipment_queries分别保存相关查询记录,全部受来源指纹保护并可引用。实时工具一次一页,row_count/total/has_more/next_page只描述本页及分页状态;未知结构返回list_recognized=false、row_count=null,需自行读取payload。重大设备曲线未预设采样字段或单位,data_item_count只是上游data数组项数。两个系统部门和测点编码须各自核对。

input.json 的 materials[] 含原件 path、sha256,以及可选 filename、file_id、version。原始 PDF 和图片已在本会话 /workspace/uploads/,可直接用自己的脚本读取,无需固定文档检查工具。解析事实、中间结果和图表自由设计,不需要单独登记。

主要原始字段:

  • mine_code/mine_name/fan_id/fan_name/fan_pair/evaluation_time:对象与评价时间。
  • reports[]:可能已明确提供的报告事实;report_id、mine_name、fan_name、model、motor_model、rated_power_raw、rated_power_kw、日期和 evidence。points[] 为实测/折算数据行,curves[] 为图注数字。只提供 PDF 时 reports 可能为空,需要你实际读取原件。
  • devices[]:device_code、name、矿井身份及整机状态和角色。
  • operating_series[]:fan_id、metric、unit、sensor_id、mapping_confirmed、samples[{observed_at,value,status}]、evidence。保留实际单位,不默认都是m³/s。
  • fan_state_records[]:fan_id、observed_at、state(running/stopped/unknown)、complete_fan_state、event_type、evidence。
  • switch_records[]:明确提供的 event_id、from_fan_id/to_fan_id、from_stopped_at/to_started_at、switched_at、evidence;也可能为空,需要你从整机状态序列分析。
  • points[]/confirmed_bindings[]:独立监测点和确实提供的人工绑定,不能自行补确认。

rules.json 的curve是报告核心性能比较阈值:minimum_points、minimum_common_flow_coverage、mean_pressure_deviation_percent、maximum_pressure_deviation_percent、maximum_power_deviation_percent、efficiency_difference_points。计算与逐工况交付见性能表格比较方法。switch保留切换间隔和监测风量等规则,severity是额外配置的严重线,空值不是零;本地批次直接使用整理JSON的切换和风量结果,不因旧规则中仍有窗口或CV字段而重新处理监测数据。

沙箱路径与执行

准备工具和执行反馈中的 python_paths 直接给出代码可用路径。代码当前目录是本会话 workspace,因此工具中的 /workspace/exploration/ID/data.json 在代码内用 Path('exploration/ID/data.json')。可以定义辅助函数把虚拟路径移除 /workspace/ 前缀;不要把虚拟路径当作宿主绝对路径。

{
  "script_path": "/workspace/analyze.py",
  "workflow_id": "准备工具返回的实际ID",
  "output_paths": ["/workspace/report.md", "/workspace/assessment.json", "/workspace/facts.json"],
  "timeout_seconds": 60
}

环境支持标准库、numpy、pypdfium2、Pillow、cv2;不能联网或安装依赖。返回 ok 明确表示是否成功;outputs 只记录本次实际新建或改写的文件,未改写的预存文件列在 unchanged_outputs,不能冒充本次生成。输出 stdout/stderr 各最多64KiB,大数据写文件。单次默认最长120秒,单会话默认最多40次;实际限制由部署配置决定。仅将 exit_code=0 且 timed_out=false 的执行作为成功凭据。保留相关 run_id;receipt_path 是可回读的执行记录副本。

每次实际执行都应关联 workflow_id。提交的 Markdown、研判 JSON 和附件必须在所提供成功执行的声明输出中,文件哈希仍须一致。若先生成事实、后生成最终报告,可提供分别对应这些交付文件的多个 run_id;不用把所有临时执行都作为提交凭据。

研判 JSON

顶层允许字段为:

字段 内容
status completed 或 needs_materials,默认 completed;执行状态与业务结论分开
result_code NORMAL / WARNING / ABNORMAL / UNDETERMINED,必填
summary 本次业务结论的简短摘要,必填、非空,最多4000字符
data_detail 实际资料、监测时段、计算范围的简述
missing_materials 缺少关键材料时的简短说明数组
evidence 引用数组;确定结论至少有一条实际来源引用
details 任意结构的分析对象,可保存提取事实、冲突、窗口、指标、计算公式等

示例仅展示格式,不代表实际结论:

{
  "status": "completed",
  "result_code": "UNDETERMINED",
  "summary": "已提取所选页参数,尚未形成三项有效对照。",
  "data_detail": "本轮原件所选页面及明确提供的整机记录。",
  "evidence": [
    {"source": "/workspace/uploads/实际原件.pdf", "page": 3, "excerpt": "实际读取的原文"},
    {"source": "/workspace/exploration/实际ID/input.json", "pointer": "/fan_state_records", "excerpt": "实际使用的数据说明"}
  ],
  "details": {}
}

source 必须是准备工具列出的本轮原件、本轮 input.json/data.json、本轮prepared_data.agent_data_path及宿主导出的可信档案,或本轮实时/时序查询工具返回的 data_path/raw_path/request_path;page 是正整数物理页码,JSON 引用可用 pointer。来源指纹由宿主绑定,不能填写别的任务路径。details 不强制旧七阶段结构;所有数字必须是有效有限 JSON 数值,不能写 NaN/Infinity。

宿主不会重新计算 result_code、窗口或公式,也不会重新 OCR。你负责正确解释事实、遵守冻结规则,核对 summary、正文和 details 一致。

最终提交

{
  "workflow_id": "实际ID",
  "report_path": "/workspace/report.md",
  "calculations_path": "/workspace/assessment.json",
  "python_run_ids": ["对应成功执行的实际run_id"],
  "artifacts": ["/workspace/facts.json"]
}

Markdown 不超过1MB,研判 JSON 不超过4MB,附件最多20个。若任务要求网关,须先完成实际取数。宿主核验身份、原件与输入指纹、来源引用、交付格式和执行输出后保存正文、摘要、结论与附件,产生 analysis_id 和标准平台报文。核验不判断自然语言或算法正确性。

成功后 structured_response 已由宿主设置并结束调用;失败返回 ok=false,可修改代码重跑和重提。不要自行复制平台身份、生成 analysis_id 或追加另一份报告。