51 lines
2.0 KiB
TypeScript
51 lines
2.0 KiB
TypeScript
import { tool } from "@opencode-ai/plugin";
|
|
import { callServerApiTool } from "./server_api_shared.js";
|
|
|
|
export default tool({
|
|
description:
|
|
"查询一个或多个 SCADA 资产在指定时间范围内的时序读数。调用前通常先用 list_scada_assets 获取资产 id;必须给出明确的 observed_from 和 observed_to,不要省略或自行扩大时间范围。",
|
|
args: {
|
|
asset_ids: tool.schema
|
|
.array(tool.schema.string().uuid())
|
|
.min(1)
|
|
.max(100)
|
|
.describe(
|
|
"SCADA asset UUID 数组,1 到 100 个。必须使用 list_scada_assets 返回的 assets[].scada_id,不要使用 GeoServer feature id/fid、external_id 或 site_external_id。",
|
|
),
|
|
observed_from: tool.schema
|
|
.string()
|
|
.datetime()
|
|
.describe(
|
|
"查询开始时间,ISO8601 datetime 字符串,必须包含时区,例如 2026-04-10T07:15:00Z 或 2026-04-10T15:15:00+08:00。包含该时刻。",
|
|
),
|
|
observed_to: tool.schema
|
|
.string()
|
|
.datetime()
|
|
.describe(
|
|
"查询结束时间,ISO8601 datetime 字符串,必须包含时区,且必须晚于 observed_from。服务端按半开区间处理:observed_at >= observed_from 且 observed_at < observed_to。",
|
|
),
|
|
granularity: tool.schema
|
|
.enum(["5m", "1h", "1d"])
|
|
.default("5m")
|
|
.describe(
|
|
"读数粒度:5m 为原始 5 分钟读数,1h 为小时聚合,1d 为日聚合。未指定时默认 5m。",
|
|
),
|
|
metrics: tool.schema
|
|
.array(
|
|
tool.schema.enum([
|
|
"conductivity_mean",
|
|
"level_mean",
|
|
"flow_mean",
|
|
"temperature_mean",
|
|
]),
|
|
)
|
|
.min(1)
|
|
.max(4)
|
|
.describe(
|
|
"要返回的指标数组,1 到 4 个。允许值:conductivity_mean(电导率均值)、level_mean(液位均值)、flow_mean(流量均值)、temperature_mean(温度均值)。",
|
|
),
|
|
},
|
|
execute: (args, context) =>
|
|
callServerApiTool("query_scada_readings", args, context.sessionID),
|
|
});
|