# Vue工作台与智能体测试 打开 `http://127.0.0.1:8080/static/index.html#/test`。对话页继续使用原有聊天、附件上传、SSE、工具审批和历史接口,Markdown统一清理后显示,报告曲线可以点击放大。Vue、Markdown及清理库打包到本地,不依赖浏览器访问CDN。 ## 测试方式 主通风机测试页提供三个输入区,配置后点击“运行测试”。下方显示返回JSON、整体研判报告、Excel文件和实际请求记录。测试任务不自动推送结果平台。 1. **测定报告PDF**:选择内置原件或上传PDF,可选择多份以涵盖两台风机。文字版使用文本识别路径,扫描件使用视觉模型;请求中不预先填入报告识别事实。 2. **两台风机切换曲线**:设置1号→2号或2号→1号,以及停机至备用机启动的间隔(0~120分钟,支持小数)。页面实时绘制整机开停阶跃曲线。也可单独选择或上传开停JSON。 3. **两台风机风量数据**:设置切换前原运行风机的风量、切换后接替风机的风量,单位m³/min。页面实时绘制两条风量曲线及相对变化幅度。也可单独选择或上传风量JSON。 默认间隔6分钟、风量3800→3610m³/min。服务端按分钟生成完整时序,另插入准确的启动时刻,避免小数分钟被取整;两侧均覆盖稳定运行窗口。合成来源保存在内部证据中,报告参数始终来自本次PDF。 主通风机页面使用 **Skill 驱动的完整智能体**:模型自行规划,在沙箱编写并执行文档解析、计算和报告生成代码;保留网关取数,服务端只在提交时校验来源、文件格式和真实执行输出并归档,不复跑业务计算或固定七阶段。主通风机未声明旧流程 test_runner,工作台不提供绕过 Agent 的固定流程模式。 ## 每次独立运行 每次点击运行生成新的request_id、业务会话和独立workspace。agent只挂载本次资料、开停时序和风量数据,不继承其他运行的消息、文件或报告;同一网络请求重试仍按request_id幂等返回已有任务,不重复执行。 三项输入任务由服务器固定`document_cache_policy="off"`:每次仅基于本轮原件自主选择页面识别,既不读也不写共享识别缓存。PDF副本、运行时序JSON、脚本和派生结果保存到该次workspace,执行器另存受保护的代码快照和凭据。历史请求与结果保存在SQLite中供查看,不回填或注入下一次agent上下文。刷新页面只自动追踪尚未完成的任务;已完成历史可从“测试记录”手动打开。 ## 上传和选择资料 主通风机三个输入区分别接收PDF、开停JSON、风量JSON。资料库接口仍支持单份不超过50MB的PDF、PNG、JPEG、WebP、JSON、XLSX及CSV,其他业务智能体可使用通用测试入口。 - PDF直接作为本次识别附件;三项输入模式不允许额外夹带合成报告、任意文件路径或网关取数请求。 - 项目现有 `mock_switch_states.json`、`mock_airflow_series.json` 可直接上传并选择。设备身份、单位和明确的测点归属仍按业务模型校验;选择的时序替换请求中同设备同类型的样例序列。多个上传片段共同校验,不默默只用最后一个文件。 - 三项输入中的开停JSON须包含同一矿井两台风机的fan_state_records,风量JSON须分别提供两台风机各一条operating_series;也兼容项目现有的schema_version=1时序格式。每个输入槽完整替换对应模拟时序,不混入另一类资料。上传文件要与该次矿井、风机身份及时间范围对应。 - XLSX、CSV可打开工作表预览。当前主通风机的识别入口接收PDF、图片和结构化JSON,不将任意Excel列自动猜测为风机参数。 `TEST_LAB_SAMPLE_DIR` 指定内置资料目录。未配置时,本地开发会尝试项目同级 `陕西局代码/测试数据/`;目录不存在时可上传自己的PDF。上传库默认在 `data/test_lab/`。内置原件只读,执行时复制到新会话并保存SHA256。 ## Excel与JSON输出 返回JSON支持树形展开、完整业务结果/标准平台格式切换、复制和下载。Excel预览直接读取实际可下载的XLSX或CSV,支持工作表切换、合并单元格和常见数字格式;大文件仅预览前300行、60列并显示截断说明。 业务工具可在本地结果中返回: ```json {"artifacts":[{"filename":"实际结果.xlsx","path":"/workspace/results/actual.xlsx"}]} ``` 文件必须存在于该测试会话内;前端无法按任意磁盘路径读取文件。实际返回附件标记为“智能体返回附件”。若只有JSON,另提供“结构化结果导出”:主通风机包含研判结论、核心判识项目、基础参数,以及共同风量区间的性能比较数据。导出不重新计算或改写结论。该artifacts字段不改变对外结果平台JSON协议。 ## 接口与扩展 工作台接口位于 `/api/test-lab`:catalog、presets、assets(上传/内容/预览)、runs(提交/记录/状态/取消)、runs/{id}/artifacts(下载/预览)。身份沿用本地聊天的user_name约定;不把网关、模型或业务API凭证交给浏览器。`TEST_LAB_ENABLED=0`关闭工作台接口。 三项输入通过runs提交`main_fan_simulation`(矿井身份、停机时刻、切换方向、间隔、前后风量及可选曲线文件ID),`input={}`、`asset_ids`仅放PDF、`execution_mode="agent"`。服务端生成并校验真实业务输入,不接受客户端预置结论。 新增业务智能体后会自动进入选择列表。需要业务流程测试时,在 `register_business_agent` 声明异步 `test_runner`;它接收业务input、user_name、session_id,以及gateway、job_id、document_audit_dir关键字参数,返回该业务的实际结果。执行器应对内部模型调用自行做计费准入,纯计算部分无需模型配置。完整智能体模式始终沿用现有执行器。两种方式都保留会话并发、业务并发、停止感知、结果schema及原件验证。 ## 开发与验证 ```bash cd frontend npm ci npm run dev npm run build npm test npm run test:browser ``` Node要求22.18以上。构建写入static/index.html与static/ui,Python生产服务无需Node运行时。浏览器回归使用独立的8081测试站点,不调用真实模型或读取用户数据库;本机可使用Chrome,其他环境可安装Playwright Chromium或配置FRONTEND_CHROME_BIN。 后端回归:`.venv/bin/python -m pytest tests/test_test_lab.py`。也可运行 `scripts/check_frontend.py` 并打开8081查看Markdown回归结果。