import { emitApi } from "../core/http.js"; import { parseOptions, requiredNumber, requiredString } from "../core/options.js"; import { requireNetwork } from "../core/runtime.js"; import { addMinutesPreservingOffset, parseTime } from "../core/time.js"; import type { HandlerMap, RuntimeContext } from "../core/types.js"; function simulationRun(ctx: RuntimeContext, argv: string[]): Promise { const { values } = parseOptions(argv, { duration: "integer" }); const start = parseTime(requiredString(values, "start-time"), "--start-time"); const duration = requiredNumber(values, "duration"); const end = addMinutesPreservingOffset(start, duration); const network = requireNetwork(ctx); return emitApi( ctx, "触发模拟成功", { method: "POST", path: "/runsimulationmanuallybydate/", body: { name: network, start_time: start.replace(/\.\d+/, ""), duration }, requireNetworkCtx: true }, [ `tjwater-cli data timeseries realtime links --start-time ${start} --end-time ${end}`, `tjwater-cli data timeseries realtime nodes --start-time ${start} --end-time ${end}`, ], ); } export const simulationHandlers: HandlerMap = { "simulation run": simulationRun, };