async function jsonOrThrow(response, fallbackMessage) { if (response.ok) { if (response.status === 204) return null; return response.json(); } let detail = ""; try { const body = await response.json(); detail = body?.message || body?.err_msg || JSON.stringify(body); } catch { detail = await response.text(); } throw new Error(`${fallbackMessage}: ${response.status} ${detail || response.statusText}`); } export async function fetchOverview() { const response = await fetch("/api/runtime/overview"); return jsonOrThrow(response, "加载段运行态失败"); } async function postControl(path, label) { const response = await fetch(path, { method: "POST" }); return jsonOrThrow(response, label); } export const segmentControl = { startAuto: (id) => postControl(`/api/control/segment/${id}/start-auto`, "启动自动控制失败"), stopAuto: (id) => postControl(`/api/control/segment/${id}/stop-auto`, "停止自动控制失败"), ackFault: (id) => postControl(`/api/control/segment/${id}/ack-fault`, "故障确认失败"), reset: (id) => postControl(`/api/control/segment/${id}/reset`, "复位失败"), batchStart: () => postControl(`/api/control/segment/batch-start-auto`, "批量启动失败"), batchStop: () => postControl(`/api/control/segment/batch-stop-auto`, "批量停止失败"), };