nxd-plugin 1.7.83 → 1.7.85

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/chunks/{component-AiChat-C1xBPkS5.mjs → component-AiChat-BXNBLM1G.mjs} +92 -93
  2. package/dist/chunks/{component-AqiMonitor-DoAVs1Jf.mjs → component-AqiMonitor-C_V1Nuf_.mjs} +1 -1
  3. package/dist/chunks/{component-ChartCumulativePre-BOIMPYxl.mjs → component-ChartCumulativePre-Bo28Bgaa.mjs} +2 -2
  4. package/dist/chunks/{component-ChartServiceMaterial-CmR3bmG_.mjs → component-ChartServiceMaterial-DELVCsKj.mjs} +2 -2
  5. package/dist/chunks/{component-Duty-gmt7ZcSc.mjs → component-Duty-dyZZ4vHt.mjs} +2 -2
  6. package/dist/chunks/{component-EarlyWarningStatistic-BWYWrz65.mjs → component-EarlyWarningStatistic-CBJfrRsV.mjs} +2 -2
  7. package/dist/chunks/component-Forecast72h-TFBSlUgI.mjs +543 -0
  8. package/dist/chunks/{component-GeologyLiveAlarm-CNpQPmGs.mjs → component-GeologyLiveAlarm-B9jBWXf0.mjs} +2 -2
  9. package/dist/chunks/component-HdForecastProducts-D4x_Y0OB.mjs +211 -0
  10. package/dist/chunks/{component-HdHeatService-ok6q8UuG.mjs → component-HdHeatService-Bf9XH3DP.mjs} +2 -2
  11. package/dist/chunks/{component-HdObservation-BmQdGJV6.mjs → component-HdObservation-rcQFHEfW.mjs} +51 -45
  12. package/dist/chunks/{component-HdPreSituation-LBpO58bE.mjs → component-HdPreSituation-CnRwuRGg.mjs} +168 -133
  13. package/dist/chunks/{component-HdRadarTime-D7hOn_ph.mjs → component-HdRadarTime-Gcn9dJky.mjs} +179 -148
  14. package/dist/chunks/{component-HdSeaCase-DYPQ7CdN.mjs → component-HdSeaCase-3-YFxSuM.mjs} +2 -2
  15. package/dist/chunks/component-HdServiceMarterial-ehquoNg2.mjs +317 -0
  16. package/dist/chunks/{component-HdServiceRequirements-DcXrcIIV.mjs → component-HdServiceRequirements-Bd4HJrpn.mjs} +38 -39
  17. package/dist/chunks/{component-HdStationTem-US6IRwbQ.mjs → component-HdStationTem-CbJkt6Ww.mjs} +100 -100
  18. package/dist/chunks/component-HdSuggestion-_JNJhwSK.mjs +161 -0
  19. package/dist/chunks/component-HdThreeWeatherTrend-HlRMLWm8.mjs +372 -0
  20. package/dist/chunks/component-HdWaveForcast-jNK-H1b1.mjs +269 -0
  21. package/dist/chunks/{component-HighQuality-B0OgPi3T.mjs → component-HighQuality-1iqLOQAF.mjs} +2 -2
  22. package/dist/chunks/{component-HighWayEarlyWarningRed-BTl2WWZ-.mjs → component-HighWayEarlyWarningRed-DlgG9rTx.mjs} +3 -3
  23. package/dist/chunks/{component-HighWayFreeze-B1aMHQWU.mjs → component-HighWayFreeze-CCp1Rxpz.mjs} +2 -2
  24. package/dist/chunks/{component-HighwayLiveAlarm-8u45ZdnN.mjs → component-HighwayLiveAlarm-D7PKi5rG.mjs} +2 -2
  25. package/dist/chunks/{component-HighwayLiveAlarmNew-DK827eVk.mjs → component-HighwayLiveAlarmNew-rH59lsj8.mjs} +3 -3
  26. package/dist/chunks/{component-HighwayStations-BzrbWP50.mjs → component-HighwayStations-DGt6Gsr9.mjs} +2 -2
  27. package/dist/chunks/component-HighwayWeatherForecast-CDLKFRNB.mjs +32194 -0
  28. package/dist/chunks/{component-IframeWeb-DuBssYPk.mjs → component-IframeWeb-vLIWvbJY.mjs} +1 -1
  29. package/dist/chunks/{component-ImageGeneration-3G3j7utC.mjs → component-ImageGeneration-BtM7MHcE.mjs} +1 -1
  30. package/dist/chunks/{component-IntroducePic-L8VH8Yq8.mjs → component-IntroducePic-D3FSEuKX.mjs} +1 -1
  31. package/dist/chunks/{component-LithiumBatteryMiningArea-DSFTVepN.mjs → component-LithiumBatteryMiningArea-B5aUe7T0.mjs} +2 -2
  32. package/dist/chunks/{component-MapPopup-BNc18syw.mjs → component-MapPopup-UmWWAPBE.mjs} +1 -1
  33. package/dist/chunks/{component-MaterialPreview-DhLUbjcT.mjs → component-MaterialPreview-1Hyl4bjM.mjs} +2 -2
  34. package/dist/chunks/{component-PieLegend-Haojhtet.mjs → component-PieLegend-C0Acehix.mjs} +1 -1
  35. package/dist/chunks/component-PrecipitationRanking-BOm_vb1L.mjs +740 -0
  36. package/dist/chunks/{component-RadarChart-BYMbkI3K.mjs → component-RadarChart-BXfMyPPi.mjs} +2 -2
  37. package/dist/chunks/{component-RadarLegend-CiGsla7a.mjs → component-RadarLegend-B2ajP_0M.mjs} +1 -1
  38. package/dist/chunks/{component-RadarShortTerm-yPc2UWpz.mjs → component-RadarShortTerm-BeGEjbHr.mjs} +4 -4
  39. package/dist/chunks/{component-RadarTime-CkqIaTJh.mjs → component-RadarTime-DGRztCiR.mjs} +2 -2
  40. package/dist/chunks/{component-RenderMarkdown-D590sXEf.mjs → component-RenderMarkdown-Dv-UVGrS.mjs} +2 -2
  41. package/dist/chunks/{component-ReservoirLiveAlarm-DTtKdDQS.mjs → component-ReservoirLiveAlarm-CRgl_ztt.mjs} +3 -3
  42. package/dist/chunks/{component-ServiceMaterial-BKbVQbKm.mjs → component-ServiceMaterial-BTWYke8W.mjs} +2 -2
  43. package/dist/chunks/{component-ServiceMaterialsBtn-CskK-Qiz.mjs → component-ServiceMaterialsBtn-C9m-epfv.mjs} +1 -1
  44. package/dist/chunks/{component-StationDialog-Bn7Fbk24.mjs → component-StationDialog-CnJuYTfB.mjs} +246 -177
  45. package/dist/chunks/{component-StationList-DRABlFdc.mjs → component-StationList-BcnqOIZY.mjs} +101 -85
  46. package/dist/chunks/{component-TimeBasedForecast-D1fJ4rGJ.mjs → component-TimeBasedForecast-C1yk1Iu-.mjs} +4 -4
  47. package/dist/chunks/{component-WarningLine-jN8sg45u.mjs → component-WarningLine-CcFfVzar.mjs} +2 -2
  48. package/dist/chunks/{component-WarningSignal-BkIKqyJB.mjs → component-WarningSignal-C0CnTLVH.mjs} +3 -3
  49. package/dist/chunks/{component-WeatherForecast-CYsbJhYt.mjs → component-WeatherForecast-BRml38Ik.mjs} +80 -76
  50. package/dist/chunks/{component-YCDataMonitor-vVlnkSzT.mjs → component-YCDataMonitor-DPMFqIFB.mjs} +108 -110
  51. package/dist/chunks/{component-YCDataService-okkY1-iU.mjs → component-YCDataService-B4PPV3Dp.mjs} +4 -4
  52. package/dist/chunks/{component-YCHome-BfpbxDIg.mjs → component-YCHome-C-_Hf_oA.mjs} +4 -4
  53. package/dist/chunks/{component-YCHomeLegend-CuT-BwNJ.mjs → component-YCHomeLegend-B-nlePS2.mjs} +1 -1
  54. package/dist/chunks/{component-YCLoginNew-KZoyW1EV.mjs → component-YCLoginNew-Bx2LoLJz.mjs} +3 -3
  55. package/dist/components/HdForecastProducts/HdForecastProducts.vue.d.ts +49 -0
  56. package/dist/components/HdPreSituation/HdPreSituation.vue.d.ts +0 -1
  57. package/dist/components/HdRadarTime/HdRadarTime.vue.d.ts +4 -2
  58. package/dist/components/HdServiceMarterial/HdServiceMarterial.vue.d.ts +54 -0
  59. package/dist/components/HdSuggestion/HdSuggestion.vue.d.ts +49 -0
  60. package/dist/components/HdThreeWeatherTrend/HdThreeWeatherTrend.vue.d.ts +71 -0
  61. package/dist/components/HdWaveForcast/HdWaveForcast.vue.d.ts +70 -0
  62. package/dist/components/PrecipitationRanking/PrecipitationRanking.vue.d.ts +5 -0
  63. package/dist/components/WeatherForecast/WeatherForecast.vue.d.ts +9 -0
  64. package/dist/index.d.ts +6 -1
  65. package/dist/nxd-plugin.mjs +56 -51
  66. package/dist/styles/component-Forecast72h.css +1 -1
  67. package/dist/styles/component-HdForecastProducts.css +1 -0
  68. package/dist/styles/component-HdObservation.css +1 -1
  69. package/dist/styles/component-HdPreSituation.css +1 -1
  70. package/dist/styles/component-HdRadarTime.css +1 -1
  71. package/dist/styles/component-HdServiceMarterial.css +1 -0
  72. package/dist/styles/component-HdServiceRequirements.css +1 -1
  73. package/dist/styles/component-HdStationTem.css +1 -1
  74. package/dist/styles/component-HdSuggestion.css +1 -0
  75. package/dist/styles/component-HdThreeWeatherTrend.css +1 -0
  76. package/dist/styles/component-HdWaveForcast.css +1 -0
  77. package/dist/styles/component-HighWayEarlyWarningRed.css +1 -1
  78. package/dist/styles/component-PrecipitationRanking.css +1 -1
  79. package/dist/styles/component-StationDialog.css +1 -1
  80. package/dist/styles/component-StationList.css +1 -1
  81. package/dist/styles/component-WeatherForecast.css +1 -1
  82. package/dist/styles/component-YCDataMonitor.css +1 -1
  83. package/dist/styles/component-YCLoginNew.css +1 -1
  84. package/package.json +1 -1
  85. package/dist/chunks/component-Forecast72h-BZ1kB2TJ.mjs +0 -427
  86. package/dist/chunks/component-HighwayWeatherForecast-DER5XGc3.mjs +0 -32251
  87. package/dist/chunks/component-PrecipitationRanking-BanKrD3J.mjs +0 -608
@@ -26368,10 +26368,13 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26368
26368
  }, Hl = { class: "file-card" }, Ul = { class: "file-meta" }, Wl = { class: "file-name" }, Gl = {
26369
26369
  key: 0,
26370
26370
  class: "file-ext"
26371
- }, Kl = ["onClick"], ql = ["src", "alt"], Jl = {
26371
+ }, Kl = ["onClick"], ql = {
26372
+ key: 0,
26373
+ class: "image-preview-overlay"
26374
+ }, Jl = ["src", "alt"], Yl = {
26372
26375
  key: 0,
26373
26376
  class: "preview-caption"
26374
- }, Yl = /* @__PURE__ */ m({
26377
+ }, Xl = /* @__PURE__ */ m({
26375
26378
  __name: "AiChatResponse",
26376
26379
  props: {
26377
26380
  message: {},
@@ -26386,13 +26389,13 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26386
26389
  let t = e, n = o(() => [...t.message.blocks || []].sort((e, t) => e.sort - t.sort)), r = o(() => n.value.filter((e) => e.type === "thinking")), d = o(() => !!t.message.reasoning_content?.trim() || (t.message.tools?.length ?? 0) > 0 || r.value.length > 0 || t.message.thinkingStatus === "thinking"), f = o(() => {
26387
26390
  let e = r.value[0];
26388
26391
  return !e || !e.steps || !e.steps.length ? [] : e.steps;
26389
- }), m = x(!d.value), h = o(() => !d.value || m.value), _ = o(() => n.value.filter((e) => e.type !== "thinking")), T = o(() => !!t.message.content?.trim()), M = o(() => (t.message.resources?.length ?? 0) > 0), N = o(() => !!t.message.audioUrl), P = o(() => {
26392
+ }), m = x(!d.value), h = o(() => !d.value || m.value), _ = o(() => n.value.filter((e) => e.type !== "thinking")), T = o(() => !!t.message.content?.trim()), A = o(() => (t.message.resources?.length ?? 0) > 0), M = o(() => !!t.message.audioUrl), N = o(() => {
26390
26393
  let e = t.message.structuredData;
26391
26394
  return e && (e.analysisText || e.distributionMapUrl || e.rawData || e.detailData);
26392
- }), F = o(() => {
26395
+ }), P = o(() => {
26393
26396
  let e = t.message.structuredData?.analysisText;
26394
26397
  return e ? typeof e == "string" ? e : typeof e == "object" && e.strings && Array.isArray(e.strings) ? e.strings.join("") : String(e) : "";
26395
- }), I = o(() => t.message.structuredData?.distributionMapUrl || ""), L = o(() => {
26398
+ }), F = o(() => t.message.structuredData?.distributionMapUrl || ""), I = o(() => {
26396
26399
  let e = t.message.structuredData;
26397
26400
  if (!e) return [];
26398
26401
  let n = e.detailData || e.rawData;
@@ -26403,18 +26406,18 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26403
26406
  return [];
26404
26407
  }
26405
26408
  return Array.isArray(n) ? n : [];
26406
- }), R = o(() => {
26407
- let e = L.value;
26409
+ }), L = o(() => {
26410
+ let e = I.value;
26408
26411
  return e.length ? Object.keys(e[0]) : [];
26409
- }), z = (e) => e ? /^(https?:)?\/\//i.test(e) || e.startsWith("data:") || !t.baseHttp ? e : t.baseHttp.replace(/\/$/, "") + (e.startsWith("/") ? e : `/${e}`) : "", B = x(null), ee = o(() => z(B.value?.url)), V = /* @__PURE__ */ new Map(), H = /* @__PURE__ */ new Map(), te = x(/* @__PURE__ */ new Set()), ne = (e, t) => {
26410
- e && V.set(t, e);
26411
- }, U = (e) => {
26412
- B.value = e;
26413
- }, W = () => {
26414
- B.value = null;
26415
- }, re = (e) => {
26416
- te.value.has(e) ? te.value.delete(e) : te.value.add(e);
26417
- }, G = (e) => te.value.has(e), K = async (e, t) => {
26412
+ }), R = (e) => e ? /^(https?:)?\/\//i.test(e) || e.startsWith("data:") || !t.baseHttp ? e : t.baseHttp.replace(/\/$/, "") + (e.startsWith("/") ? e : `/${e}`) : "", z = x(null), B = o(() => R(z.value?.url)), ee = /* @__PURE__ */ new Map(), V = /* @__PURE__ */ new Map(), H = x(/* @__PURE__ */ new Set()), te = (e, t) => {
26413
+ e && ee.set(t, e);
26414
+ }, ne = (e) => {
26415
+ z.value = e;
26416
+ }, U = () => {
26417
+ z.value = null;
26418
+ }, W = (e) => {
26419
+ H.value.has(e) ? H.value.delete(e) : H.value.add(e);
26420
+ }, re = (e) => H.value.has(e), G = async (e, t) => {
26418
26421
  if (!e) return;
26419
26422
  let n = t || "file";
26420
26423
  try {
@@ -26427,7 +26430,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26427
26430
  } catch {}
26428
26431
  let r = document.createElement("a");
26429
26432
  r.href = e, r.download = n, r.target = "_blank", document.body.appendChild(r), r.click(), document.body.removeChild(r);
26430
- }, q = (e, t) => {
26433
+ }, K = (e, t) => {
26431
26434
  let n = {
26432
26435
  ...e,
26433
26436
  ...t
@@ -26449,13 +26452,13 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26449
26452
  e && typeof e == "object" && (e.splitLine = { show: !1 });
26450
26453
  });
26451
26454
  }), n;
26452
- }, ie = () => {
26455
+ }, q = () => {
26453
26456
  n.value.forEach((e) => {
26454
26457
  if (e.type !== "echarts") return;
26455
- let n = V.get(e.sort);
26458
+ let n = ee.get(e.sort);
26456
26459
  if (!n) return;
26457
- let r = H.get(e.sort);
26458
- r || (r = j.init(n, void 0, { renderer: "canvas" }), H.set(e.sort, r));
26460
+ let r = V.get(e.sort);
26461
+ r || (r = j.init(n, void 0, { renderer: "canvas" }), V.set(e.sort, r));
26459
26462
  let i = t.theme === "dark" ? {
26460
26463
  backgroundColor: "transparent",
26461
26464
  textStyle: { color: "#e5e7eb" },
@@ -26500,25 +26503,25 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26500
26503
  xAxis: { splitLine: { show: !1 } },
26501
26504
  yAxis: { splitLine: { show: !1 } }
26502
26505
  };
26503
- r.setOption(q(i, e.option || {}), !0);
26506
+ r.setOption(K(i, e.option || {}), !0);
26504
26507
  });
26505
- }, ae = () => {
26506
- H.forEach((e) => e.dispose()), H.clear();
26508
+ }, ie = () => {
26509
+ V.forEach((e) => e.dispose()), V.clear();
26507
26510
  };
26508
26511
  v(() => {
26509
- ie(), window.addEventListener("resize", J);
26512
+ q(), window.addEventListener("resize", ae);
26510
26513
  }), y(() => {
26511
- ae(), window.removeEventListener("resize", J);
26514
+ ie(), window.removeEventListener("resize", ae);
26512
26515
  });
26513
- let J = () => {
26514
- H.forEach((e) => e.resize());
26516
+ let ae = () => {
26517
+ V.forEach((e) => e.resize());
26515
26518
  };
26516
26519
  return D(() => t.message.thinkingStatus, (e) => {
26517
26520
  e === "end" || e === "error" ? m.value = !0 : e === "thinking" && (m.value = !1);
26518
26521
  }, { immediate: !0 }), D(() => t.message, () => {
26519
- ae(), setTimeout(ie, 0);
26522
+ ie(), setTimeout(q, 0);
26520
26523
  }, { deep: !0 }), D(h, (e) => {
26521
- e && setTimeout(ie, 0);
26524
+ e && setTimeout(q, 0);
26522
26525
  }), (t, n) => (b(), l("div", { class: g(["AiChatResponse", `AiChatResponse--${e.theme}`]) }, [
26523
26526
  d.value ? (b(), s(Ac, {
26524
26527
  key: 0,
@@ -26541,25 +26544,25 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26541
26544
  class: "markdown-body",
26542
26545
  innerHTML: w(dc)(e.message.content || "")
26543
26546
  }, null, 8, il)])) : c("", !0),
26544
- M.value ? (b(), s(nl, {
26547
+ A.value ? (b(), s(nl, {
26545
26548
  key: 1,
26546
26549
  resources: e.message.resources || [],
26547
26550
  baseHttp: e.baseHttp
26548
26551
  }, null, 8, ["resources", "baseHttp"])) : c("", !0),
26549
- P.value ? (b(), l("div", al, [
26550
- F.value ? (b(), l("div", ol, [u("div", {
26552
+ N.value ? (b(), l("div", al, [
26553
+ P.value ? (b(), l("div", ol, [u("div", {
26551
26554
  class: "markdown-body",
26552
- innerHTML: w(dc)(F.value)
26555
+ innerHTML: w(dc)(P.value)
26553
26556
  }, null, 8, sl)])) : c("", !0),
26554
- I.value ? (b(), l("div", cl, [n[0] ||= u("div", { class: "block-title" }, "实况分布图", -1), u("div", ll, [u("img", {
26555
- src: z(I.value),
26557
+ F.value ? (b(), l("div", cl, [n[0] ||= u("div", { class: "block-title" }, "实况分布图", -1), u("div", ll, [u("img", {
26558
+ src: R(F.value),
26556
26559
  alt: "实况分布图",
26557
26560
  loading: "lazy"
26558
26561
  }, null, 8, ul)])])) : c("", !0),
26559
- L.value.length > 0 ? (b(), l("div", dl, [n[1] ||= u("div", { class: "block-title" }, "数据列表", -1), u("div", fl, [u("table", null, [u("thead", null, [u("tr", null, [(b(!0), l(i, null, S(R.value, (e) => (b(), l("th", { key: e }, C(e), 1))), 128))])]), u("tbody", null, [(b(!0), l(i, null, S(L.value, (e, t) => (b(), l("tr", { key: t }, [(b(!0), l(i, null, S(R.value, (t) => (b(), l("td", { key: t }, C(e[t] ?? ""), 1))), 128))]))), 128))])])])])) : c("", !0)
26562
+ I.value.length > 0 ? (b(), l("div", dl, [n[1] ||= u("div", { class: "block-title" }, "数据列表", -1), u("div", fl, [u("table", null, [u("thead", null, [u("tr", null, [(b(!0), l(i, null, S(L.value, (e) => (b(), l("th", { key: e }, C(e), 1))), 128))])]), u("tbody", null, [(b(!0), l(i, null, S(I.value, (e, t) => (b(), l("tr", { key: t }, [(b(!0), l(i, null, S(L.value, (t) => (b(), l("td", { key: t }, C(e[t] ?? ""), 1))), 128))]))), 128))])])])])) : c("", !0)
26560
26563
  ])) : c("", !0),
26561
- N.value ? (b(), l("div", pl, [u("audio", {
26562
- src: z(e.message.audioUrl),
26564
+ M.value ? (b(), l("div", pl, [u("audio", {
26565
+ src: R(e.message.audioUrl),
26563
26566
  controls: "",
26564
26567
  preload: "none",
26565
26568
  class: "ai-audio-player"
@@ -26576,13 +26579,13 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26576
26579
  class: g(`is-${e.align || "left"}`)
26577
26580
  }, C(t[e.key]), 3))), 128))]))), 128))])])])])) : e.type === "echarts" ? (b(), l("div", Sl, [e.title ? (b(), l("div", Cl, C(e.title), 1)) : c("", !0), u("div", {
26578
26581
  ref_for: !0,
26579
- ref: (t) => ne(t, e.sort),
26582
+ ref: (t) => te(t, e.sort),
26580
26583
  class: "echarts-container"
26581
26584
  }, null, 512)])) : e.type === "image" ? (b(), l("div", wl, [e.title ? (b(), l("div", Tl, C(e.title), 1)) : c("", !0), u("div", {
26582
26585
  class: "image-card",
26583
- onClick: (t) => U(e)
26586
+ onClick: (t) => ne(e)
26584
26587
  }, [u("img", {
26585
- src: z(e.url),
26588
+ src: R(e.url),
26586
26589
  alt: e.caption,
26587
26590
  loading: "lazy"
26588
26591
  }, null, 8, Dl), e.caption ? (b(), l("div", Ol, C(e.caption), 1)) : c("", !0)], 8, El)])) : e.type === "list" ? (b(), l("div", kl, [e.title ? (b(), l("div", Al, C(e.title), 1)) : c("", !0), u("ul", null, [(b(!0), l(i, null, S(e.items, (e, t) => (b(), l("li", { key: t }, C(e), 1))), 128))])])) : e.type === "fileList" ? (b(), l("div", jl, [e.title ? (b(), l("div", Ml, C(e.title), 1)) : c("", !0), u("div", Nl, [(b(!0), l(i, null, S(e.files, (e, t) => (b(), l("div", {
@@ -26590,7 +26593,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26590
26593
  class: "file-list-item"
26591
26594
  }, [u("div", {
26592
26595
  class: "file-list-header",
26593
- onClick: (e) => re(t)
26596
+ onClick: (e) => W(t)
26594
26597
  }, [
26595
26598
  n[3] ||= u("div", { class: "file-list-icon" }, [u("svg", {
26596
26599
  viewBox: "0 0 24 24",
@@ -26601,14 +26604,14 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26601
26604
  u("div", Fl, C(e.name), 1),
26602
26605
  e.size ? (b(), l("div", Il, C(e.size), 1)) : c("", !0),
26603
26606
  (b(), l("svg", {
26604
- class: g(["file-list-arrow", { "is-open": G(t) }]),
26607
+ class: g(["file-list-arrow", { "is-open": re(t) }]),
26605
26608
  viewBox: "0 0 24 24",
26606
26609
  fill: "currentColor"
26607
26610
  }, [...n[2] ||= [u("path", { d: "M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z" }, null, -1)]], 2))
26608
26611
  ], 8, Pl), k(u("div", Ll, [e.description ? (b(), l("p", Rl, C(e.description), 1)) : c("", !0), u("button", {
26609
26612
  class: "file-list-download",
26610
- onClick: (t) => K(z(e.url), e.name)
26611
- }, "下载", 8, zl)], 512), [[E, G(t)]])]))), 128))])])) : e.type === "file" ? (b(), l("div", Bl, [e.title ? (b(), l("div", Vl, C(e.title), 1)) : c("", !0), u("div", Hl, [
26613
+ onClick: (t) => G(R(e.url), e.name)
26614
+ }, "下载", 8, zl)], 512), [[E, re(t)]])]))), 128))])])) : e.type === "file" ? (b(), l("div", Bl, [e.title ? (b(), l("div", Vl, C(e.title), 1)) : c("", !0), u("div", Hl, [
26612
26615
  n[5] ||= u("div", { class: "file-icon" }, [u("svg", {
26613
26616
  viewBox: "0 0 24 24",
26614
26617
  width: "20",
@@ -26619,7 +26622,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26619
26622
  u("button", {
26620
26623
  class: "file-download",
26621
26624
  title: "下载",
26622
- onClick: (t) => K(z(e.fileUrl), e.name)
26625
+ onClick: (t) => G(R(e.fileUrl), e.name)
26623
26626
  }, [...n[4] ||= [u("svg", {
26624
26627
  viewBox: "0 0 24 24",
26625
26628
  fill: "currentColor"
@@ -26627,26 +26630,22 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26627
26630
  ])])) : c("", !0)], 64))), 128))
26628
26631
  ], 64)) : c("", !0),
26629
26632
  p(a, { name: "fade" }, {
26630
- default: O(() => [B.value ? (b(), l("div", {
26631
- key: 0,
26632
- class: "image-preview-overlay",
26633
- onClick: A(W, ["self"])
26634
- }, [
26633
+ default: O(() => [z.value ? (b(), l("div", ql, [
26635
26634
  u("button", {
26636
26635
  class: "preview-close",
26637
- onClick: W
26636
+ onClick: U
26638
26637
  }, "×"),
26639
26638
  u("img", {
26640
- src: ee.value,
26641
- alt: B.value.caption
26642
- }, null, 8, ql),
26643
- B.value.caption ? (b(), l("div", Jl, C(B.value.caption), 1)) : c("", !0)
26639
+ src: B.value,
26640
+ alt: z.value.caption
26641
+ }, null, 8, Jl),
26642
+ z.value.caption ? (b(), l("div", Yl, C(z.value.caption), 1)) : c("", !0)
26644
26643
  ])) : c("", !0)]),
26645
26644
  _: 1
26646
26645
  })
26647
26646
  ], 2));
26648
26647
  }
26649
- }), Xl = { categories: /* @__PURE__ */ JSON.parse("{\"knowledge\":{\"label\":\"查知识\",\"responses\":[{\"keywords\":[\"台风\",\"大风\",\"预警\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询台风预警及防御知识。\"},{\"type\":\"text\",\"content\":\"2. 检索台风数据库:获取当前编号台风“卡努”的位置、强度、移向移速。\"},{\"type\":\"text\",\"content\":\"3. 查询预警规则:根据风力影响范围匹配台风黄色预警标准。\"},{\"type\":\"text\",\"content\":\"4. 整理防御提示:结合沿海、农业、城市内涝等场景输出建议。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"## 🌀 台风预警信息\\n\\n今年第 6 号台风 **“卡努”** 预计将于 48 小时内影响本市沿海区域。\\n\\n### 影响时段\\n| 阶段 | 时间 | 风力 | 降雨 |\\n|------|------|------|------|\\n| 外围影响 | 今晚~明天上午 | 东北风 6-7 级 | 阵雨 |\\n| 主体影响 | 明天下午~后天 | 偏东风 8-10 级 | 暴雨到大暴雨 |\\n| 减弱远离 | 大后天 | 东南风 5-6 级 | 小雨 |\\n\\n### 防御提示\\n1. 沿海景区、海上作业平台请于今天 18 时前撤离人员。\\n2. 加固户外广告牌、脚手架、农业大棚等易被大风吹动的搭建物。\\n3. 低洼地区居民请提前备好沙袋,注意防范城市内涝。\\n\\n> 市气象台将每 3 小时滚动发布台风路径及风雨预报。\"}]},{\"keywords\":[\"雷达\",\"云图\",\"卫星\",\"回波\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:解读雷达回波实况。\"},{\"type\":\"text\",\"content\":\"2. 读取雷达拼图:分析回波强度、走向、移动速度。\"},{\"type\":\"text\",\"content\":\"3. 反演对流参数:回波顶高、VIL、质心高度等。\"},{\"type\":\"text\",\"content\":\"4. 生成解读文本:给出短时临近预报建议。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"## 📡 雷达回波实况解读\\n\\n当前我市上游 150 km 范围内存在一条东北-西南向对流回波带,强度 35-50 dBZ,正以约 40 km/h 向东南方向移动。\\n\\n### 回波特征\\n- **回波顶高**:9-12 km,属于发展旺盛的对流单体。\\n- **垂直液态水含量**:最大 45 kg/m²,伴有短时强降水风险。\\n- **移动方向**:自西北向东南,预计 1.5 小时后影响市区。\\n\\n### 建议\\n1. 短时强降水可能引发道路积水,建议避开低洼路段。\\n2. 雷电活跃时段尽量减少户外活动。\\n3. 可通过实时雷达拼图持续关注回波移动。\"}]},{\"keywords\":[\"农业\",\"农事\",\"作物\",\"墒情\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:获取农业气象服务建议。\"},{\"type\":\"text\",\"content\":\"2. 调用土壤墒情数据:各区县土壤相对湿度。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"region\",\"title\":\"区域\",\"align\":\"left\"},{\"key\":\"rh\",\"title\":\"土壤相对湿度\",\"align\":\"center\"},{\"key\":\"evaluate\",\"title\":\"评价\",\"align\":\"center\"}],\"data\":[{\"region\":\"西海岸新区\",\"rh\":\"78%\",\"evaluate\":\"适宜\"},{\"region\":\"即墨区\",\"rh\":\"65%\",\"evaluate\":\"略偏旱\"},{\"region\":\"平度市\",\"rh\":\"85%\",\"evaluate\":\"偏湿\"}]},{\"type\":\"text\",\"content\":\"3. 结合未来 7 天天气预报,生成农事建议。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"## 🌾 农业气象服务建议\\n\\n### 当前农田墒情\\n| 区域 | 土壤相对湿度 | 评价 | 建议 |\\n|------|------------|------|------|\\n| 西海岸新区 | 78% | 适宜 | 可正常播种夏玉米 |\\n| 即墨区 | 65% | 略偏旱 | 灌溉 1 次,确保出苗 |\\n| 平度市 | 85% | 偏湿 | 注意清沟理墒,防渍害 |\\n\\n### 未来 7 天农事建议\\n1. **今明两天**有小雨,雨后趁墒开展夏玉米、大豆等作物播种。\\n2. **周三至周五**以多云为主,利于田间管理,可喷施除草剂。\\n3. 周末有阵雨,抓紧收获成熟瓜果蔬菜,避免田间腐烂。\"}]},{\"default\":true,\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询指定位置当前及未来 24 小时气象概况。\"},{\"type\":\"text\",\"content\":\"2. 定位最近自动站:西海岸新区国家气象站。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"stationNumber\",\"title\":\"站号\",\"align\":\"center\"},{\"key\":\"stationName\",\"title\":\"站名\",\"align\":\"left\"},{\"key\":\"temperature\",\"title\":\"气温(°C)\",\"align\":\"right\"},{\"key\":\"relativeHumidity\",\"title\":\"相对湿度(%)\",\"align\":\"right\"},{\"key\":\"windDirectionTxt\",\"title\":\"风向\",\"align\":\"center\"},{\"key\":\"windSpeed\",\"title\":\"风速(m/s)\",\"align\":\"right\"}],\"data\":[{\"stationNumber\":\"54943\",\"stationName\":\"黄岛\",\"temperature\":\"26.3\",\"relativeHumidity\":\"78\",\"windDirectionTxt\":\"东南风\",\"windSpeed\":\"3.2\"}]},{\"type\":\"text\",\"content\":\"3. 融合数值预报:生成通俗防御建议。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"根据你提供的位置信息,我查询了当前及未来 24 小时气象概况 👇\\n\\n## 🌤️ 青岛市西海岸新区 · 气象概况\\n\\n### 当前实况\\n| 要素 | 数值 |\\n|------|------|\\n| 气温 | **26.3°C** |\\n| 相对湿度 | **78%** |\\n| 风向风力 | 东南风 **3~4 级** |\\n| 能见度 | **12 km** |\\n| 气压 | 1008 hPa |\\n\\n### 防御建议\\n1. **今夜至凌晨有小雨**,沿海路段能见度较低,出行请注意交通安全。\\n2. 明早气温降至 **20°C 左右**,体感偏凉,建议携带薄外套。\\n3. 明天白天转为多云,最高气温回升至 **28°C**,适宜户外活动。\\n\\n> 数据来源:气象大数据平台\"}]}]},\"data\":{\"label\":\"查数据\",\"responses\":[{\"keywords\":[\"台风\",\"路径\",\"风力\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询台风路径及强度变化数据。\"},{\"type\":\"text\",\"content\":\"2. 调用台风预报接口:获取未来 72 小时路径点。\"},{\"type\":\"text\",\"content\":\"3. 绘制趋势图表:中心气压变化曲线。\"},{\"type\":\"text\",\"content\":\"4. 输出结构化表格与预报图。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"#### 🌀 台风“卡努”未来 72 小时路径预报\"},{\"sort\":3,\"type\":\"table\",\"columns\":[{\"key\":\"time\",\"title\":\"时间\",\"align\":\"left\"},{\"key\":\"lon\",\"title\":\"经度\",\"align\":\"center\"},{\"key\":\"lat\",\"title\":\"纬度\",\"align\":\"center\"},{\"key\":\"level\",\"title\":\"强度等级\",\"align\":\"center\"},{\"key\":\"wind\",\"title\":\"近中心风力\",\"align\":\"center\"},{\"key\":\"dir\",\"title\":\"移向\",\"align\":\"center\"},{\"key\":\"speed\",\"title\":\"移速\",\"align\":\"right\"}],\"data\":[{\"time\":\"今天 20 时\",\"lon\":\"125.8°E\",\"lat\":\"28.4°N\",\"level\":\"强台风\",\"wind\":\"14 级\",\"dir\":\"西北\",\"speed\":\"12 km/h\"},{\"time\":\"明天 08 时\",\"lon\":\"124.9°E\",\"lat\":\"29.1°N\",\"level\":\"强台风\",\"wind\":\"15 级\",\"dir\":\"西北偏北\",\"speed\":\"10 km/h\"},{\"time\":\"明天 20 时\",\"lon\":\"123.7°E\",\"lat\":\"30.0°N\",\"level\":\"台风\",\"wind\":\"13 级\",\"dir\":\"北\",\"speed\":\"8 km/h\"},{\"time\":\"后天 08 时\",\"lon\":\"122.8°E\",\"lat\":\"31.2°N\",\"level\":\"强热带风暴\",\"wind\":\"11 级\",\"dir\":\"东北\",\"speed\":\"15 km/h\"}]},{\"sort\":4,\"type\":\"echarts\",\"title\":\"台风中心气压变化趋势\",\"option\":{\"grid\":{\"top\":40,\"right\":20,\"bottom\":30,\"left\":50},\"xAxis\":{\"type\":\"category\",\"data\":[\"今天\",\"明天\",\"后天\",\"大后天\"]},\"yAxis\":{\"type\":\"value\",\"name\":\"hPa\",\"min\":900},\"series\":[{\"type\":\"line\",\"data\":[955,940,965,985],\"smooth\":true,\"areaStyle\":{\"opacity\":0.2}}]}},{\"sort\":5,\"type\":\"image\",\"url\":\"https://picsum.photos/seed/typhoon_track/400/220\",\"caption\":\"台风路径概率预报图\"}]},{\"keywords\":[\"降水\",\"雨量\",\"降雨\",\"暴雨\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询未来 24 小时累计降水量。\"},{\"type\":\"text\",\"content\":\"2. 调用格点预报数据:各区县逐 6 小时降水量。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"district\",\"title\":\"区县\",\"align\":\"left\"},{\"key\":\"h06\",\"title\":\"0-6h\",\"align\":\"right\"},{\"key\":\"h12\",\"title\":\"6-12h\",\"align\":\"right\"},{\"key\":\"h18\",\"title\":\"12-18h\",\"align\":\"right\"},{\"key\":\"h24\",\"title\":\"18-24h\",\"align\":\"right\"},{\"key\":\"total\",\"title\":\"过程累计\",\"align\":\"right\"}],\"data\":[{\"district\":\"市南区\",\"h06\":\"5 mm\",\"h12\":\"15 mm\",\"h18\":\"35 mm\",\"h24\":\"12 mm\",\"total\":\"67 mm\"},{\"district\":\"崂山区\",\"h06\":\"8 mm\",\"h12\":\"25 mm\",\"h18\":\"55 mm\",\"h24\":\"20 mm\",\"total\":\"108 mm\"},{\"district\":\"西海岸新区\",\"h06\":\"10 mm\",\"h12\":\"30 mm\",\"h18\":\"60 mm\",\"h24\":\"22 mm\",\"total\":\"122 mm\"}]},{\"type\":\"text\",\"content\":\"3. 生成柱状图:直观展示各区县过程累计降水量。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"#### 🌧️ 未来 24 小时累计降水量预报\"},{\"sort\":3,\"type\":\"table\",\"columns\":[{\"key\":\"district\",\"title\":\"区县\",\"align\":\"left\"},{\"key\":\"h06\",\"title\":\"0-6h\",\"align\":\"right\"},{\"key\":\"h12\",\"title\":\"6-12h\",\"align\":\"right\"},{\"key\":\"h18\",\"title\":\"12-18h\",\"align\":\"right\"},{\"key\":\"h24\",\"title\":\"18-24h\",\"align\":\"right\"},{\"key\":\"total\",\"title\":\"过程累计\",\"align\":\"right\"}],\"data\":[{\"district\":\"市南区\",\"h06\":\"5 mm\",\"h12\":\"15 mm\",\"h18\":\"35 mm\",\"h24\":\"12 mm\",\"total\":\"67 mm\"},{\"district\":\"市北区\",\"h06\":\"3 mm\",\"h12\":\"12 mm\",\"h18\":\"28 mm\",\"h24\":\"10 mm\",\"total\":\"53 mm\"},{\"district\":\"李沧区\",\"h06\":\"4 mm\",\"h12\":\"18 mm\",\"h18\":\"42 mm\",\"h24\":\"15 mm\",\"total\":\"79 mm\"},{\"district\":\"崂山区\",\"h06\":\"8 mm\",\"h12\":\"25 mm\",\"h18\":\"55 mm\",\"h24\":\"20 mm\",\"total\":\"108 mm\"},{\"district\":\"城阳区\",\"h06\":\"6 mm\",\"h12\":\"20 mm\",\"h18\":\"38 mm\",\"h24\":\"14 mm\",\"total\":\"78 mm\"},{\"district\":\"西海岸新区\",\"h06\":\"10 mm\",\"h12\":\"30 mm\",\"h18\":\"60 mm\",\"h24\":\"22 mm\",\"total\":\"122 mm\"},{\"district\":\"即墨区\",\"h06\":\"7 mm\",\"h12\":\"22 mm\",\"h18\":\"45 mm\",\"h24\":\"16 mm\",\"total\":\"90 mm\"}]},{\"sort\":4,\"type\":\"echarts\",\"title\":\"各区县过程累计降水量\",\"option\":{\"grid\":{\"top\":40,\"right\":20,\"bottom\":50,\"left\":60},\"xAxis\":{\"type\":\"category\",\"data\":[\"市南\",\"市北\",\"李沧\",\"崂山\",\"城阳\",\"西海岸\",\"即墨\"],\"axisLabel\":{\"rotate\":30}},\"yAxis\":{\"type\":\"value\",\"name\":\"mm\"},\"series\":[{\"type\":\"bar\",\"data\":[67,53,79,108,78,122,90],\"itemStyle\":{\"color\":\"#22d3ee\"}}]}},{\"sort\":5,\"type\":\"image\",\"url\":\"https://picsum.photos/seed/rain_map/400/220\",\"caption\":\"24 小时降水预报图\"}]},{\"default\":true,\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询未来 7 天天气预报。\"},{\"type\":\"text\",\"content\":\"2. 调用城市预报数据:天气现象、气温、风向风力、降水概率。\"},{\"type\":\"text\",\"content\":\"3. 绘制气温趋势图:最高温与最低温双曲线。\"},{\"type\":\"text\",\"content\":\"4. 输出表格与趋势图。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"#### 🌦️ 青岛市未来 7 天天气预报\"},{\"sort\":3,\"type\":\"table\",\"columns\":[{\"key\":\"date\",\"title\":\"日期\",\"align\":\"left\"},{\"key\":\"weather\",\"title\":\"天气现象\",\"align\":\"left\"},{\"key\":\"max\",\"title\":\"最高温\",\"align\":\"right\"},{\"key\":\"min\",\"title\":\"最低温\",\"align\":\"right\"},{\"key\":\"wind\",\"title\":\"风向风力\",\"align\":\"left\"},{\"key\":\"rain\",\"title\":\"降水概率\",\"align\":\"right\"}],\"data\":[{\"date\":\"今天\",\"weather\":\"多云转小雨\",\"max\":\"28°C\",\"min\":\"21°C\",\"wind\":\"东南风 3-4 级\",\"rain\":\"60%\"},{\"date\":\"明天\",\"weather\":\"小雨转多云\",\"max\":\"26°C\",\"min\":\"19°C\",\"wind\":\"东北风 3 级\",\"rain\":\"40%\"},{\"date\":\"后天\",\"weather\":\"多云\",\"max\":\"29°C\",\"min\":\"20°C\",\"wind\":\"南风 2-3 级\",\"rain\":\"10%\"},{\"date\":\"周四\",\"weather\":\"晴\",\"max\":\"31°C\",\"min\":\"22°C\",\"wind\":\"南风 2 级\",\"rain\":\"0%\"},{\"date\":\"周五\",\"weather\":\"晴转多云\",\"max\":\"30°C\",\"min\":\"23°C\",\"wind\":\"东南风 3 级\",\"rain\":\"10%\"},{\"date\":\"周六\",\"weather\":\"多云转阴\",\"max\":\"28°C\",\"min\":\"22°C\",\"wind\":\"东风 3 级\",\"rain\":\"30%\"},{\"date\":\"周日\",\"weather\":\"阵雨\",\"max\":\"27°C\",\"min\":\"21°C\",\"wind\":\"东北风 3-4 级\",\"rain\":\"70%\"}]},{\"sort\":4,\"type\":\"echarts\",\"title\":\"未来 7 天气温趋势\",\"option\":{\"grid\":{\"top\":40,\"right\":20,\"bottom\":30,\"left\":40},\"legend\":{\"data\":[\"最高温\",\"最低温\"]},\"xAxis\":{\"type\":\"category\",\"data\":[\"今天\",\"明天\",\"后天\",\"周四\",\"周五\",\"周六\",\"周日\"]},\"yAxis\":{\"type\":\"value\",\"name\":\"°C\"},\"series\":[{\"name\":\"最高温\",\"type\":\"line\",\"data\":[28,26,29,31,30,28,27],\"smooth\":true,\"itemStyle\":{\"color\":\"#f59e0b\"}},{\"name\":\"最低温\",\"type\":\"line\",\"data\":[21,19,20,22,23,22,21],\"smooth\":true,\"itemStyle\":{\"color\":\"#22d3ee\"}}]}},{\"sort\":5,\"type\":\"image\",\"url\":\"https://picsum.photos/seed/weather_trend/400/220\",\"caption\":\"未来 7 天气温趋势图\"}]}]},\"material\":{\"label\":\"查材料\",\"responses\":[{\"keywords\":[\"海洋\",\"台风\",\"灾害\",\"防御\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:检索台风灾害防御相关材料。\"},{\"type\":\"text\",\"content\":\"2. 检索材料库:按关键词“台风”“灾害”“防御”匹配文档。\"},{\"type\":\"text\",\"content\":\"3. 筛选格式:PDF、XLSX、DOCX,保留权威来源。\"},{\"type\":\"text\",\"content\":\"4. 输出材料列表及摘要。\"}]},{\"sort\":2,\"type\":\"text\",\"content\":\"已检索到与台风灾害防御相关的材料,共 3 份:\"},{\"sort\":3,\"type\":\"fileList\",\"files\":[{\"name\":\"青岛市台风灾害防御应急预案.pdf\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"4.2 MB\",\"ext\":\"pdf\",\"description\":\"本预案明确了台风预警分级、应急响应启动条件、各部门职责分工及人员转移安置要求。\"},{\"name\":\"台风风险隐患清单.xlsx\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"1.8 MB\",\"ext\":\"xlsx\",\"description\":\"全市低洼易涝点、地质灾害隐患点、海上作业平台等风险隐患台账。\"},{\"name\":\"人员转移安置方案.docx\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"2.5 MB\",\"ext\":\"docx\",\"description\":\"受台风影响区域人员转移路线图、安置点分布及物资保障方案。\"}]}]},{\"default\":true,\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:检索海洋气象预报相关材料。\"},{\"type\":\"text\",\"content\":\"2. 检索材料库:按关键词“海洋”“预报”“精细化”匹配。\"},{\"type\":\"text\",\"content\":\"3. 筛选格式:DOC、PDF、PPTX,按时间倒序排列。\"},{\"type\":\"text\",\"content\":\"4. 输出材料列表及摘要。\"}]},{\"sort\":2,\"type\":\"text\",\"content\":\"已检索到海洋气象预报相关材料,共 3 份:\"},{\"sort\":3,\"type\":\"fileList\",\"files\":[{\"name\":\"精细化海洋预报(20260531).doc\",\"url\":\"http://58.59.29.51:11014/productFilePath/seaService/2026/5/31/%E7%B2%BE%E7%BB%86%E5%8C%96%E6%B5%B7%E6%B4%8B%E9%A2%84%E6%8A%A5%EF%BC%8820260531%EF%BC%89.doc\",\"size\":\"5.8 MB\",\"ext\":\"doc\",\"description\":\"海洋气象预报\"},{\"name\":\"气象灾害防御工作手册.pdf\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"3.6 MB\",\"ext\":\"pdf\",\"description\":\"面向基层网格员的灾害防御操作指南,包含预警信息接收、传播和应急处置流程。\"},{\"name\":\"防灾减灾宣传材料.pptx\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"8.2 MB\",\"ext\":\"pptx\",\"description\":\"面向社区、学校的防灾减灾科普宣传课件。\"}]}]}]},\"smartMake\":{\"label\":\"智能制作\",\"responses\":[{\"keywords\":[\"预警\",\"通知\",\"发文\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:需要生成一份气象灾害预警通知公文。\"},{\"type\":\"text\",\"content\":\"2. 匹配模板:选择《气象灾害预警通知》公文模板。\"},{\"type\":\"text\",\"content\":\"3. 填充要素:当前预警类型为台风黄色预警,影响时段为 24-48 小时,重点关注沿海区域。\"},{\"type\":\"text\",\"content\":\"4. 生成落款:青岛市气象局,日期为今日。\"},{\"type\":\"text\",\"content\":\"5. 输出格式:Word 文档,便于后续编辑和正式发文。\"}]},{\"sort\":2,\"type\":\"file\",\"title\":\"\",\"name\":\"气象灾害预警通知.docx\",\"fileUrl\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"ext\":\"docx\"}]},{\"keywords\":[\"报告\",\"总结\",\"分析\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:需要生成气象服务总结报告。\"},{\"type\":\"text\",\"content\":\"2. 梳理素材:调用近期天气预报、服务产品、用户反馈等数据。\"},{\"type\":\"text\",\"content\":\"3. 构建框架:包含服务概况、重点过程、服务效益、存在问题及下一步计划。\"},{\"type\":\"text\",\"content\":\"4. 图表插入:自动插入降水预报准确率、服务覆盖人次等统计图表。\"},{\"type\":\"text\",\"content\":\"5. 输出格式:PDF 文档,便于归档和报送。\"}]},{\"sort\":2,\"type\":\"file\",\"title\":\"\",\"name\":\"气象服务总结报告.pdf\",\"fileUrl\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"ext\":\"pdf\"}]},{\"default\":true,\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:需要基于自动站数据智能制作气象服务材料。\"},{\"type\":\"text\",\"content\":\"2. 数据获取:调用自动站接口,获取黄岛区共 17 个站点最新实况。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"stationNumber\",\"title\":\"站号\",\"align\":\"center\"},{\"key\":\"stationName\",\"title\":\"站名\",\"align\":\"left\"},{\"key\":\"observationTime\",\"title\":\"观测时间\",\"align\":\"center\"},{\"key\":\"temperature\",\"title\":\"气温(°C)\",\"align\":\"right\"},{\"key\":\"relativeHumidity\",\"title\":\"相对湿度(%)\",\"align\":\"right\"},{\"key\":\"windDirectionTxt\",\"title\":\"风向\",\"align\":\"center\"},{\"key\":\"windSpeed\",\"title\":\"风速(m/s)\",\"align\":\"right\"},{\"key\":\"weatherinfo\",\"title\":\"天气\",\"align\":\"center\"}],\"data\":[{\"stationNumber\":\"54943\",\"stationName\":\"黄岛\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.3\",\"relativeHumidity\":\"65\",\"windDirectionTxt\":\"东风\",\"windSpeed\":\"1.8\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0002\",\"stationName\":\"黄岛金沙滩\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.7\",\"relativeHumidity\":\"60\",\"windDirectionTxt\":\"北风\",\"windSpeed\":\"2.5\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0008\",\"stationName\":\"黄岛琅琊\",\"observationTime\":\"8/7 10\",\"temperature\":\"32.4\",\"relativeHumidity\":\"61\",\"windDirectionTxt\":\"东风\",\"windSpeed\":\"1.7\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0063\",\"stationName\":\"黄岛大涧山\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.6\",\"relativeHumidity\":\"58\",\"windDirectionTxt\":\"东北风\",\"windSpeed\":\"2.4\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0076\",\"stationName\":\"黄岛滨海杜鹃花区气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.9\",\"relativeHumidity\":\"缺测\",\"windDirectionTxt\":\"东风\",\"windSpeed\":\"1.3\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0167\",\"stationName\":\"黄岛隐珠气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.6\",\"relativeHumidity\":\"55\",\"windDirectionTxt\":\"西北风\",\"windSpeed\":\"3.0\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0189\",\"stationName\":\"黄岛竹岔岛\",\"observationTime\":\"8/7 10\",\"temperature\":\"30.8\",\"relativeHumidity\":\"74\",\"windDirectionTxt\":\"缺测\",\"windSpeed\":\"0.0\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0192\",\"stationName\":\"黄岛灵山岛\",\"observationTime\":\"8/7 10\",\"temperature\":\"29.5\",\"relativeHumidity\":\"62\",\"windDirectionTxt\":\"东北风\",\"windSpeed\":\"0.3\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0197\",\"stationName\":\"黄岛台子沟\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.1\",\"relativeHumidity\":\"缺测\",\"windDirectionTxt\":\"东风\",\"windSpeed\":\"2.0\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0199\",\"stationName\":\"黄岛轮渡\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.4\",\"relativeHumidity\":\"60\",\"windDirectionTxt\":\"西北风\",\"windSpeed\":\"0.9\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0200\",\"stationName\":\"黄岛董家口港\",\"observationTime\":\"8/7 10\",\"temperature\":\"30.4\",\"relativeHumidity\":\"62\",\"windDirectionTxt\":\"东南风\",\"windSpeed\":\"2.7\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0206\",\"stationName\":\"黄岛实验中学气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.3\",\"relativeHumidity\":\"54\",\"windDirectionTxt\":\"西南风\",\"windSpeed\":\"2.6\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0212\",\"stationName\":\"黄岛前湾港码头\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.0\",\"relativeHumidity\":\"54\",\"windDirectionTxt\":\"东北风\",\"windSpeed\":\"3.4\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0231\",\"stationName\":\"黄岛泊里气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.0\",\"relativeHumidity\":\"55\",\"windDirectionTxt\":\"缺测\",\"windSpeed\":\"缺测\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0263\",\"stationName\":\"黄岛薛家岛气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"30.8\",\"relativeHumidity\":\"75\",\"windDirectionTxt\":\"东南风\",\"windSpeed\":\"3.2\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0267\",\"stationName\":\"黄岛区小珠山气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.4\",\"relativeHumidity\":\"缺测\",\"windDirectionTxt\":\"北风\",\"windSpeed\":\"3.1\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0501\",\"stationName\":\"黄岛滨海气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.1\",\"relativeHumidity\":\"55\",\"windDirectionTxt\":\"北风\",\"windSpeed\":\"2.5\",\"weatherinfo\":\"晴天\"}]},{\"type\":\"text\",\"content\":\"3. 降水分析:获取黄岛区近 3 小时累计降水量。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"stationName\",\"title\":\"站名\",\"align\":\"left\"},{\"key\":\"rainfall1h\",\"title\":\"1h降水(mm)\",\"align\":\"right\"},{\"key\":\"rainfall3h\",\"title\":\"3h降水(mm)\",\"align\":\"right\"},{\"key\":\"rainfall6h\",\"title\":\"6h降水(mm)\",\"align\":\"right\"},{\"key\":\"rainfall12h\",\"title\":\"12h降水(mm)\",\"align\":\"right\"}],\"data\":[{\"stationName\":\"黄岛\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.2\",\"rainfall12h\":\"1.5\"},{\"stationName\":\"黄岛金沙滩\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.0\",\"rainfall12h\":\"0.8\"},{\"stationName\":\"黄岛琅琊\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.1\",\"rainfall6h\":\"0.5\",\"rainfall12h\":\"2.1\"},{\"stationName\":\"黄岛大涧山\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.3\",\"rainfall12h\":\"1.2\"},{\"stationName\":\"黄岛滨海杜鹃花区气象观测站\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.1\",\"rainfall12h\":\"0.9\"},{\"stationName\":\"黄岛隐珠气象观测站\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.4\",\"rainfall12h\":\"1.8\"},{\"stationName\":\"黄岛竹岔岛\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.2\",\"rainfall6h\":\"0.6\",\"rainfall12h\":\"2.4\"},{\"stationName\":\"黄岛灵山岛\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.2\",\"rainfall12h\":\"1.0\"}]},{\"type\":\"text\",\"content\":\"4. 数据解析:原始返回为 JSON 格式,已提取关键字段。\"},{\"type\":\"markdown\",\"content\":\"JSON 结构示例:\\n```json\\n{\\n \\\"msg\\\": \\\"success\\\",\\n \\\"code\\\": 0,\\n \\\"dataType\\\": 14,\\n \\\"ds\\\": [\\n {\\n \\\"stationNumber\\\": \\\"54943\\\",\\n \\\"stationName\\\": \\\"黄岛\\\",\\n \\\"observationTime\\\": \\\"8/7 10\\\",\\n \\\"temperature\\\": \\\"33.3\\\",\\n \\\"relativeHumidity\\\": \\\"65\\\",\\n \\\"windDirectionTxt\\\": \\\"东风\\\",\\n \\\"windSpeed\\\": \\\"1.8\\\",\\n \\\"weatherinfo\\\": \\\"晴天\\\"\\n }\\n ]\\n}\\n```\"},{\"type\":\"text\",\"content\":\"5. 生成服务材料:基于以上数据生成 Word 文档。\"}]},{\"sort\":2,\"type\":\"file\",\"title\":\"\",\"name\":\"智能制作成果.docx\",\"fileUrl\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"ext\":\"docx\"}]}]}}") }, Zl = class {
26648
+ }), Zl = { categories: /* @__PURE__ */ JSON.parse("{\"knowledge\":{\"label\":\"查知识\",\"responses\":[{\"keywords\":[\"台风\",\"大风\",\"预警\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询台风预警及防御知识。\"},{\"type\":\"text\",\"content\":\"2. 检索台风数据库:获取当前编号台风“卡努”的位置、强度、移向移速。\"},{\"type\":\"text\",\"content\":\"3. 查询预警规则:根据风力影响范围匹配台风黄色预警标准。\"},{\"type\":\"text\",\"content\":\"4. 整理防御提示:结合沿海、农业、城市内涝等场景输出建议。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"## 🌀 台风预警信息\\n\\n今年第 6 号台风 **“卡努”** 预计将于 48 小时内影响本市沿海区域。\\n\\n### 影响时段\\n| 阶段 | 时间 | 风力 | 降雨 |\\n|------|------|------|------|\\n| 外围影响 | 今晚~明天上午 | 东北风 6-7 级 | 阵雨 |\\n| 主体影响 | 明天下午~后天 | 偏东风 8-10 级 | 暴雨到大暴雨 |\\n| 减弱远离 | 大后天 | 东南风 5-6 级 | 小雨 |\\n\\n### 防御提示\\n1. 沿海景区、海上作业平台请于今天 18 时前撤离人员。\\n2. 加固户外广告牌、脚手架、农业大棚等易被大风吹动的搭建物。\\n3. 低洼地区居民请提前备好沙袋,注意防范城市内涝。\\n\\n> 市气象台将每 3 小时滚动发布台风路径及风雨预报。\"}]},{\"keywords\":[\"雷达\",\"云图\",\"卫星\",\"回波\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:解读雷达回波实况。\"},{\"type\":\"text\",\"content\":\"2. 读取雷达拼图:分析回波强度、走向、移动速度。\"},{\"type\":\"text\",\"content\":\"3. 反演对流参数:回波顶高、VIL、质心高度等。\"},{\"type\":\"text\",\"content\":\"4. 生成解读文本:给出短时临近预报建议。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"## 📡 雷达回波实况解读\\n\\n当前我市上游 150 km 范围内存在一条东北-西南向对流回波带,强度 35-50 dBZ,正以约 40 km/h 向东南方向移动。\\n\\n### 回波特征\\n- **回波顶高**:9-12 km,属于发展旺盛的对流单体。\\n- **垂直液态水含量**:最大 45 kg/m²,伴有短时强降水风险。\\n- **移动方向**:自西北向东南,预计 1.5 小时后影响市区。\\n\\n### 建议\\n1. 短时强降水可能引发道路积水,建议避开低洼路段。\\n2. 雷电活跃时段尽量减少户外活动。\\n3. 可通过实时雷达拼图持续关注回波移动。\"}]},{\"keywords\":[\"农业\",\"农事\",\"作物\",\"墒情\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:获取农业气象服务建议。\"},{\"type\":\"text\",\"content\":\"2. 调用土壤墒情数据:各区县土壤相对湿度。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"region\",\"title\":\"区域\",\"align\":\"left\"},{\"key\":\"rh\",\"title\":\"土壤相对湿度\",\"align\":\"center\"},{\"key\":\"evaluate\",\"title\":\"评价\",\"align\":\"center\"}],\"data\":[{\"region\":\"西海岸新区\",\"rh\":\"78%\",\"evaluate\":\"适宜\"},{\"region\":\"即墨区\",\"rh\":\"65%\",\"evaluate\":\"略偏旱\"},{\"region\":\"平度市\",\"rh\":\"85%\",\"evaluate\":\"偏湿\"}]},{\"type\":\"text\",\"content\":\"3. 结合未来 7 天天气预报,生成农事建议。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"## 🌾 农业气象服务建议\\n\\n### 当前农田墒情\\n| 区域 | 土壤相对湿度 | 评价 | 建议 |\\n|------|------------|------|------|\\n| 西海岸新区 | 78% | 适宜 | 可正常播种夏玉米 |\\n| 即墨区 | 65% | 略偏旱 | 灌溉 1 次,确保出苗 |\\n| 平度市 | 85% | 偏湿 | 注意清沟理墒,防渍害 |\\n\\n### 未来 7 天农事建议\\n1. **今明两天**有小雨,雨后趁墒开展夏玉米、大豆等作物播种。\\n2. **周三至周五**以多云为主,利于田间管理,可喷施除草剂。\\n3. 周末有阵雨,抓紧收获成熟瓜果蔬菜,避免田间腐烂。\"}]},{\"default\":true,\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询指定位置当前及未来 24 小时气象概况。\"},{\"type\":\"text\",\"content\":\"2. 定位最近自动站:西海岸新区国家气象站。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"stationNumber\",\"title\":\"站号\",\"align\":\"center\"},{\"key\":\"stationName\",\"title\":\"站名\",\"align\":\"left\"},{\"key\":\"temperature\",\"title\":\"气温(°C)\",\"align\":\"right\"},{\"key\":\"relativeHumidity\",\"title\":\"相对湿度(%)\",\"align\":\"right\"},{\"key\":\"windDirectionTxt\",\"title\":\"风向\",\"align\":\"center\"},{\"key\":\"windSpeed\",\"title\":\"风速(m/s)\",\"align\":\"right\"}],\"data\":[{\"stationNumber\":\"54943\",\"stationName\":\"黄岛\",\"temperature\":\"26.3\",\"relativeHumidity\":\"78\",\"windDirectionTxt\":\"东南风\",\"windSpeed\":\"3.2\"}]},{\"type\":\"text\",\"content\":\"3. 融合数值预报:生成通俗防御建议。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"根据你提供的位置信息,我查询了当前及未来 24 小时气象概况 👇\\n\\n## 🌤️ 青岛市西海岸新区 · 气象概况\\n\\n### 当前实况\\n| 要素 | 数值 |\\n|------|------|\\n| 气温 | **26.3°C** |\\n| 相对湿度 | **78%** |\\n| 风向风力 | 东南风 **3~4 级** |\\n| 能见度 | **12 km** |\\n| 气压 | 1008 hPa |\\n\\n### 防御建议\\n1. **今夜至凌晨有小雨**,沿海路段能见度较低,出行请注意交通安全。\\n2. 明早气温降至 **20°C 左右**,体感偏凉,建议携带薄外套。\\n3. 明天白天转为多云,最高气温回升至 **28°C**,适宜户外活动。\\n\\n> 数据来源:气象大数据平台\"}]}]},\"data\":{\"label\":\"查数据\",\"responses\":[{\"keywords\":[\"台风\",\"路径\",\"风力\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询台风路径及强度变化数据。\"},{\"type\":\"text\",\"content\":\"2. 调用台风预报接口:获取未来 72 小时路径点。\"},{\"type\":\"text\",\"content\":\"3. 绘制趋势图表:中心气压变化曲线。\"},{\"type\":\"text\",\"content\":\"4. 输出结构化表格与预报图。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"#### 🌀 台风“卡努”未来 72 小时路径预报\"},{\"sort\":3,\"type\":\"table\",\"columns\":[{\"key\":\"time\",\"title\":\"时间\",\"align\":\"left\"},{\"key\":\"lon\",\"title\":\"经度\",\"align\":\"center\"},{\"key\":\"lat\",\"title\":\"纬度\",\"align\":\"center\"},{\"key\":\"level\",\"title\":\"强度等级\",\"align\":\"center\"},{\"key\":\"wind\",\"title\":\"近中心风力\",\"align\":\"center\"},{\"key\":\"dir\",\"title\":\"移向\",\"align\":\"center\"},{\"key\":\"speed\",\"title\":\"移速\",\"align\":\"right\"}],\"data\":[{\"time\":\"今天 20 时\",\"lon\":\"125.8°E\",\"lat\":\"28.4°N\",\"level\":\"强台风\",\"wind\":\"14 级\",\"dir\":\"西北\",\"speed\":\"12 km/h\"},{\"time\":\"明天 08 时\",\"lon\":\"124.9°E\",\"lat\":\"29.1°N\",\"level\":\"强台风\",\"wind\":\"15 级\",\"dir\":\"西北偏北\",\"speed\":\"10 km/h\"},{\"time\":\"明天 20 时\",\"lon\":\"123.7°E\",\"lat\":\"30.0°N\",\"level\":\"台风\",\"wind\":\"13 级\",\"dir\":\"北\",\"speed\":\"8 km/h\"},{\"time\":\"后天 08 时\",\"lon\":\"122.8°E\",\"lat\":\"31.2°N\",\"level\":\"强热带风暴\",\"wind\":\"11 级\",\"dir\":\"东北\",\"speed\":\"15 km/h\"}]},{\"sort\":4,\"type\":\"echarts\",\"title\":\"台风中心气压变化趋势\",\"option\":{\"grid\":{\"top\":40,\"right\":20,\"bottom\":30,\"left\":50},\"xAxis\":{\"type\":\"category\",\"data\":[\"今天\",\"明天\",\"后天\",\"大后天\"]},\"yAxis\":{\"type\":\"value\",\"name\":\"hPa\",\"min\":900},\"series\":[{\"type\":\"line\",\"data\":[955,940,965,985],\"smooth\":true,\"areaStyle\":{\"opacity\":0.2}}]}},{\"sort\":5,\"type\":\"image\",\"url\":\"https://picsum.photos/seed/typhoon_track/400/220\",\"caption\":\"台风路径概率预报图\"}]},{\"keywords\":[\"降水\",\"雨量\",\"降雨\",\"暴雨\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询未来 24 小时累计降水量。\"},{\"type\":\"text\",\"content\":\"2. 调用格点预报数据:各区县逐 6 小时降水量。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"district\",\"title\":\"区县\",\"align\":\"left\"},{\"key\":\"h06\",\"title\":\"0-6h\",\"align\":\"right\"},{\"key\":\"h12\",\"title\":\"6-12h\",\"align\":\"right\"},{\"key\":\"h18\",\"title\":\"12-18h\",\"align\":\"right\"},{\"key\":\"h24\",\"title\":\"18-24h\",\"align\":\"right\"},{\"key\":\"total\",\"title\":\"过程累计\",\"align\":\"right\"}],\"data\":[{\"district\":\"市南区\",\"h06\":\"5 mm\",\"h12\":\"15 mm\",\"h18\":\"35 mm\",\"h24\":\"12 mm\",\"total\":\"67 mm\"},{\"district\":\"崂山区\",\"h06\":\"8 mm\",\"h12\":\"25 mm\",\"h18\":\"55 mm\",\"h24\":\"20 mm\",\"total\":\"108 mm\"},{\"district\":\"西海岸新区\",\"h06\":\"10 mm\",\"h12\":\"30 mm\",\"h18\":\"60 mm\",\"h24\":\"22 mm\",\"total\":\"122 mm\"}]},{\"type\":\"text\",\"content\":\"3. 生成柱状图:直观展示各区县过程累计降水量。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"#### 🌧️ 未来 24 小时累计降水量预报\"},{\"sort\":3,\"type\":\"table\",\"columns\":[{\"key\":\"district\",\"title\":\"区县\",\"align\":\"left\"},{\"key\":\"h06\",\"title\":\"0-6h\",\"align\":\"right\"},{\"key\":\"h12\",\"title\":\"6-12h\",\"align\":\"right\"},{\"key\":\"h18\",\"title\":\"12-18h\",\"align\":\"right\"},{\"key\":\"h24\",\"title\":\"18-24h\",\"align\":\"right\"},{\"key\":\"total\",\"title\":\"过程累计\",\"align\":\"right\"}],\"data\":[{\"district\":\"市南区\",\"h06\":\"5 mm\",\"h12\":\"15 mm\",\"h18\":\"35 mm\",\"h24\":\"12 mm\",\"total\":\"67 mm\"},{\"district\":\"市北区\",\"h06\":\"3 mm\",\"h12\":\"12 mm\",\"h18\":\"28 mm\",\"h24\":\"10 mm\",\"total\":\"53 mm\"},{\"district\":\"李沧区\",\"h06\":\"4 mm\",\"h12\":\"18 mm\",\"h18\":\"42 mm\",\"h24\":\"15 mm\",\"total\":\"79 mm\"},{\"district\":\"崂山区\",\"h06\":\"8 mm\",\"h12\":\"25 mm\",\"h18\":\"55 mm\",\"h24\":\"20 mm\",\"total\":\"108 mm\"},{\"district\":\"城阳区\",\"h06\":\"6 mm\",\"h12\":\"20 mm\",\"h18\":\"38 mm\",\"h24\":\"14 mm\",\"total\":\"78 mm\"},{\"district\":\"西海岸新区\",\"h06\":\"10 mm\",\"h12\":\"30 mm\",\"h18\":\"60 mm\",\"h24\":\"22 mm\",\"total\":\"122 mm\"},{\"district\":\"即墨区\",\"h06\":\"7 mm\",\"h12\":\"22 mm\",\"h18\":\"45 mm\",\"h24\":\"16 mm\",\"total\":\"90 mm\"}]},{\"sort\":4,\"type\":\"echarts\",\"title\":\"各区县过程累计降水量\",\"option\":{\"grid\":{\"top\":40,\"right\":20,\"bottom\":50,\"left\":60},\"xAxis\":{\"type\":\"category\",\"data\":[\"市南\",\"市北\",\"李沧\",\"崂山\",\"城阳\",\"西海岸\",\"即墨\"],\"axisLabel\":{\"rotate\":30}},\"yAxis\":{\"type\":\"value\",\"name\":\"mm\"},\"series\":[{\"type\":\"bar\",\"data\":[67,53,79,108,78,122,90],\"itemStyle\":{\"color\":\"#22d3ee\"}}]}},{\"sort\":5,\"type\":\"image\",\"url\":\"https://picsum.photos/seed/rain_map/400/220\",\"caption\":\"24 小时降水预报图\"}]},{\"default\":true,\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询未来 7 天天气预报。\"},{\"type\":\"text\",\"content\":\"2. 调用城市预报数据:天气现象、气温、风向风力、降水概率。\"},{\"type\":\"text\",\"content\":\"3. 绘制气温趋势图:最高温与最低温双曲线。\"},{\"type\":\"text\",\"content\":\"4. 输出表格与趋势图。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"#### 🌦️ 青岛市未来 7 天天气预报\"},{\"sort\":3,\"type\":\"table\",\"columns\":[{\"key\":\"date\",\"title\":\"日期\",\"align\":\"left\"},{\"key\":\"weather\",\"title\":\"天气现象\",\"align\":\"left\"},{\"key\":\"max\",\"title\":\"最高温\",\"align\":\"right\"},{\"key\":\"min\",\"title\":\"最低温\",\"align\":\"right\"},{\"key\":\"wind\",\"title\":\"风向风力\",\"align\":\"left\"},{\"key\":\"rain\",\"title\":\"降水概率\",\"align\":\"right\"}],\"data\":[{\"date\":\"今天\",\"weather\":\"多云转小雨\",\"max\":\"28°C\",\"min\":\"21°C\",\"wind\":\"东南风 3-4 级\",\"rain\":\"60%\"},{\"date\":\"明天\",\"weather\":\"小雨转多云\",\"max\":\"26°C\",\"min\":\"19°C\",\"wind\":\"东北风 3 级\",\"rain\":\"40%\"},{\"date\":\"后天\",\"weather\":\"多云\",\"max\":\"29°C\",\"min\":\"20°C\",\"wind\":\"南风 2-3 级\",\"rain\":\"10%\"},{\"date\":\"周四\",\"weather\":\"晴\",\"max\":\"31°C\",\"min\":\"22°C\",\"wind\":\"南风 2 级\",\"rain\":\"0%\"},{\"date\":\"周五\",\"weather\":\"晴转多云\",\"max\":\"30°C\",\"min\":\"23°C\",\"wind\":\"东南风 3 级\",\"rain\":\"10%\"},{\"date\":\"周六\",\"weather\":\"多云转阴\",\"max\":\"28°C\",\"min\":\"22°C\",\"wind\":\"东风 3 级\",\"rain\":\"30%\"},{\"date\":\"周日\",\"weather\":\"阵雨\",\"max\":\"27°C\",\"min\":\"21°C\",\"wind\":\"东北风 3-4 级\",\"rain\":\"70%\"}]},{\"sort\":4,\"type\":\"echarts\",\"title\":\"未来 7 天气温趋势\",\"option\":{\"grid\":{\"top\":40,\"right\":20,\"bottom\":30,\"left\":40},\"legend\":{\"data\":[\"最高温\",\"最低温\"]},\"xAxis\":{\"type\":\"category\",\"data\":[\"今天\",\"明天\",\"后天\",\"周四\",\"周五\",\"周六\",\"周日\"]},\"yAxis\":{\"type\":\"value\",\"name\":\"°C\"},\"series\":[{\"name\":\"最高温\",\"type\":\"line\",\"data\":[28,26,29,31,30,28,27],\"smooth\":true,\"itemStyle\":{\"color\":\"#f59e0b\"}},{\"name\":\"最低温\",\"type\":\"line\",\"data\":[21,19,20,22,23,22,21],\"smooth\":true,\"itemStyle\":{\"color\":\"#22d3ee\"}}]}},{\"sort\":5,\"type\":\"image\",\"url\":\"https://picsum.photos/seed/weather_trend/400/220\",\"caption\":\"未来 7 天气温趋势图\"}]}]},\"material\":{\"label\":\"查材料\",\"responses\":[{\"keywords\":[\"海洋\",\"台风\",\"灾害\",\"防御\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:检索台风灾害防御相关材料。\"},{\"type\":\"text\",\"content\":\"2. 检索材料库:按关键词“台风”“灾害”“防御”匹配文档。\"},{\"type\":\"text\",\"content\":\"3. 筛选格式:PDF、XLSX、DOCX,保留权威来源。\"},{\"type\":\"text\",\"content\":\"4. 输出材料列表及摘要。\"}]},{\"sort\":2,\"type\":\"text\",\"content\":\"已检索到与台风灾害防御相关的材料,共 3 份:\"},{\"sort\":3,\"type\":\"fileList\",\"files\":[{\"name\":\"青岛市台风灾害防御应急预案.pdf\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"4.2 MB\",\"ext\":\"pdf\",\"description\":\"本预案明确了台风预警分级、应急响应启动条件、各部门职责分工及人员转移安置要求。\"},{\"name\":\"台风风险隐患清单.xlsx\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"1.8 MB\",\"ext\":\"xlsx\",\"description\":\"全市低洼易涝点、地质灾害隐患点、海上作业平台等风险隐患台账。\"},{\"name\":\"人员转移安置方案.docx\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"2.5 MB\",\"ext\":\"docx\",\"description\":\"受台风影响区域人员转移路线图、安置点分布及物资保障方案。\"}]}]},{\"default\":true,\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:检索海洋气象预报相关材料。\"},{\"type\":\"text\",\"content\":\"2. 检索材料库:按关键词“海洋”“预报”“精细化”匹配。\"},{\"type\":\"text\",\"content\":\"3. 筛选格式:DOC、PDF、PPTX,按时间倒序排列。\"},{\"type\":\"text\",\"content\":\"4. 输出材料列表及摘要。\"}]},{\"sort\":2,\"type\":\"text\",\"content\":\"已检索到海洋气象预报相关材料,共 3 份:\"},{\"sort\":3,\"type\":\"fileList\",\"files\":[{\"name\":\"精细化海洋预报(20260531).doc\",\"url\":\"http://58.59.29.51:11014/productFilePath/seaService/2026/5/31/%E7%B2%BE%E7%BB%86%E5%8C%96%E6%B5%B7%E6%B4%8B%E9%A2%84%E6%8A%A5%EF%BC%8820260531%EF%BC%89.doc\",\"size\":\"5.8 MB\",\"ext\":\"doc\",\"description\":\"海洋气象预报\"},{\"name\":\"气象灾害防御工作手册.pdf\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"3.6 MB\",\"ext\":\"pdf\",\"description\":\"面向基层网格员的灾害防御操作指南,包含预警信息接收、传播和应急处置流程。\"},{\"name\":\"防灾减灾宣传材料.pptx\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"8.2 MB\",\"ext\":\"pptx\",\"description\":\"面向社区、学校的防灾减灾科普宣传课件。\"}]}]}]},\"smartMake\":{\"label\":\"智能制作\",\"responses\":[{\"keywords\":[\"预警\",\"通知\",\"发文\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:需要生成一份气象灾害预警通知公文。\"},{\"type\":\"text\",\"content\":\"2. 匹配模板:选择《气象灾害预警通知》公文模板。\"},{\"type\":\"text\",\"content\":\"3. 填充要素:当前预警类型为台风黄色预警,影响时段为 24-48 小时,重点关注沿海区域。\"},{\"type\":\"text\",\"content\":\"4. 生成落款:青岛市气象局,日期为今日。\"},{\"type\":\"text\",\"content\":\"5. 输出格式:Word 文档,便于后续编辑和正式发文。\"}]},{\"sort\":2,\"type\":\"file\",\"title\":\"\",\"name\":\"气象灾害预警通知.docx\",\"fileUrl\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"ext\":\"docx\"}]},{\"keywords\":[\"报告\",\"总结\",\"分析\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:需要生成气象服务总结报告。\"},{\"type\":\"text\",\"content\":\"2. 梳理素材:调用近期天气预报、服务产品、用户反馈等数据。\"},{\"type\":\"text\",\"content\":\"3. 构建框架:包含服务概况、重点过程、服务效益、存在问题及下一步计划。\"},{\"type\":\"text\",\"content\":\"4. 图表插入:自动插入降水预报准确率、服务覆盖人次等统计图表。\"},{\"type\":\"text\",\"content\":\"5. 输出格式:PDF 文档,便于归档和报送。\"}]},{\"sort\":2,\"type\":\"file\",\"title\":\"\",\"name\":\"气象服务总结报告.pdf\",\"fileUrl\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"ext\":\"pdf\"}]},{\"default\":true,\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:需要基于自动站数据智能制作气象服务材料。\"},{\"type\":\"text\",\"content\":\"2. 数据获取:调用自动站接口,获取黄岛区共 17 个站点最新实况。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"stationNumber\",\"title\":\"站号\",\"align\":\"center\"},{\"key\":\"stationName\",\"title\":\"站名\",\"align\":\"left\"},{\"key\":\"observationTime\",\"title\":\"观测时间\",\"align\":\"center\"},{\"key\":\"temperature\",\"title\":\"气温(°C)\",\"align\":\"right\"},{\"key\":\"relativeHumidity\",\"title\":\"相对湿度(%)\",\"align\":\"right\"},{\"key\":\"windDirectionTxt\",\"title\":\"风向\",\"align\":\"center\"},{\"key\":\"windSpeed\",\"title\":\"风速(m/s)\",\"align\":\"right\"},{\"key\":\"weatherinfo\",\"title\":\"天气\",\"align\":\"center\"}],\"data\":[{\"stationNumber\":\"54943\",\"stationName\":\"黄岛\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.3\",\"relativeHumidity\":\"65\",\"windDirectionTxt\":\"东风\",\"windSpeed\":\"1.8\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0002\",\"stationName\":\"黄岛金沙滩\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.7\",\"relativeHumidity\":\"60\",\"windDirectionTxt\":\"北风\",\"windSpeed\":\"2.5\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0008\",\"stationName\":\"黄岛琅琊\",\"observationTime\":\"8/7 10\",\"temperature\":\"32.4\",\"relativeHumidity\":\"61\",\"windDirectionTxt\":\"东风\",\"windSpeed\":\"1.7\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0063\",\"stationName\":\"黄岛大涧山\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.6\",\"relativeHumidity\":\"58\",\"windDirectionTxt\":\"东北风\",\"windSpeed\":\"2.4\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0076\",\"stationName\":\"黄岛滨海杜鹃花区气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.9\",\"relativeHumidity\":\"缺测\",\"windDirectionTxt\":\"东风\",\"windSpeed\":\"1.3\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0167\",\"stationName\":\"黄岛隐珠气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.6\",\"relativeHumidity\":\"55\",\"windDirectionTxt\":\"西北风\",\"windSpeed\":\"3.0\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0189\",\"stationName\":\"黄岛竹岔岛\",\"observationTime\":\"8/7 10\",\"temperature\":\"30.8\",\"relativeHumidity\":\"74\",\"windDirectionTxt\":\"缺测\",\"windSpeed\":\"0.0\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0192\",\"stationName\":\"黄岛灵山岛\",\"observationTime\":\"8/7 10\",\"temperature\":\"29.5\",\"relativeHumidity\":\"62\",\"windDirectionTxt\":\"东北风\",\"windSpeed\":\"0.3\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0197\",\"stationName\":\"黄岛台子沟\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.1\",\"relativeHumidity\":\"缺测\",\"windDirectionTxt\":\"东风\",\"windSpeed\":\"2.0\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0199\",\"stationName\":\"黄岛轮渡\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.4\",\"relativeHumidity\":\"60\",\"windDirectionTxt\":\"西北风\",\"windSpeed\":\"0.9\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0200\",\"stationName\":\"黄岛董家口港\",\"observationTime\":\"8/7 10\",\"temperature\":\"30.4\",\"relativeHumidity\":\"62\",\"windDirectionTxt\":\"东南风\",\"windSpeed\":\"2.7\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0206\",\"stationName\":\"黄岛实验中学气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.3\",\"relativeHumidity\":\"54\",\"windDirectionTxt\":\"西南风\",\"windSpeed\":\"2.6\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0212\",\"stationName\":\"黄岛前湾港码头\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.0\",\"relativeHumidity\":\"54\",\"windDirectionTxt\":\"东北风\",\"windSpeed\":\"3.4\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0231\",\"stationName\":\"黄岛泊里气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.0\",\"relativeHumidity\":\"55\",\"windDirectionTxt\":\"缺测\",\"windSpeed\":\"缺测\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0263\",\"stationName\":\"黄岛薛家岛气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"30.8\",\"relativeHumidity\":\"75\",\"windDirectionTxt\":\"东南风\",\"windSpeed\":\"3.2\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0267\",\"stationName\":\"黄岛区小珠山气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.4\",\"relativeHumidity\":\"缺测\",\"windDirectionTxt\":\"北风\",\"windSpeed\":\"3.1\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0501\",\"stationName\":\"黄岛滨海气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.1\",\"relativeHumidity\":\"55\",\"windDirectionTxt\":\"北风\",\"windSpeed\":\"2.5\",\"weatherinfo\":\"晴天\"}]},{\"type\":\"text\",\"content\":\"3. 降水分析:获取黄岛区近 3 小时累计降水量。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"stationName\",\"title\":\"站名\",\"align\":\"left\"},{\"key\":\"rainfall1h\",\"title\":\"1h降水(mm)\",\"align\":\"right\"},{\"key\":\"rainfall3h\",\"title\":\"3h降水(mm)\",\"align\":\"right\"},{\"key\":\"rainfall6h\",\"title\":\"6h降水(mm)\",\"align\":\"right\"},{\"key\":\"rainfall12h\",\"title\":\"12h降水(mm)\",\"align\":\"right\"}],\"data\":[{\"stationName\":\"黄岛\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.2\",\"rainfall12h\":\"1.5\"},{\"stationName\":\"黄岛金沙滩\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.0\",\"rainfall12h\":\"0.8\"},{\"stationName\":\"黄岛琅琊\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.1\",\"rainfall6h\":\"0.5\",\"rainfall12h\":\"2.1\"},{\"stationName\":\"黄岛大涧山\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.3\",\"rainfall12h\":\"1.2\"},{\"stationName\":\"黄岛滨海杜鹃花区气象观测站\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.1\",\"rainfall12h\":\"0.9\"},{\"stationName\":\"黄岛隐珠气象观测站\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.4\",\"rainfall12h\":\"1.8\"},{\"stationName\":\"黄岛竹岔岛\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.2\",\"rainfall6h\":\"0.6\",\"rainfall12h\":\"2.4\"},{\"stationName\":\"黄岛灵山岛\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.2\",\"rainfall12h\":\"1.0\"}]},{\"type\":\"text\",\"content\":\"4. 数据解析:原始返回为 JSON 格式,已提取关键字段。\"},{\"type\":\"markdown\",\"content\":\"JSON 结构示例:\\n```json\\n{\\n \\\"msg\\\": \\\"success\\\",\\n \\\"code\\\": 0,\\n \\\"dataType\\\": 14,\\n \\\"ds\\\": [\\n {\\n \\\"stationNumber\\\": \\\"54943\\\",\\n \\\"stationName\\\": \\\"黄岛\\\",\\n \\\"observationTime\\\": \\\"8/7 10\\\",\\n \\\"temperature\\\": \\\"33.3\\\",\\n \\\"relativeHumidity\\\": \\\"65\\\",\\n \\\"windDirectionTxt\\\": \\\"东风\\\",\\n \\\"windSpeed\\\": \\\"1.8\\\",\\n \\\"weatherinfo\\\": \\\"晴天\\\"\\n }\\n ]\\n}\\n```\"},{\"type\":\"text\",\"content\":\"5. 生成服务材料:基于以上数据生成 Word 文档。\"}]},{\"sort\":2,\"type\":\"file\",\"title\":\"\",\"name\":\"智能制作成果.docx\",\"fileUrl\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"ext\":\"docx\"}]}]}}") }, Ql = class {
26650
26649
  controller = null;
26651
26650
  currentRequestId = 0;
26652
26651
  abort() {
@@ -26704,46 +26703,46 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26704
26703
  this.currentRequestId === r && (this.controller = null);
26705
26704
  }
26706
26705
  }
26707
- }, Ql = { class: "AiChat__headerActions" }, $l = ["title"], eu = {
26706
+ }, $l = { class: "AiChat__headerActions" }, eu = ["title"], tu = {
26708
26707
  key: 0,
26709
26708
  class: "AiChat__message AiChat__message--user"
26710
- }, tu = { class: "AiChat__content" }, nu = { class: "AiChat__bubble AiChat__bubble--user" }, ru = { class: "AiChat__time" }, iu = {
26709
+ }, nu = { class: "AiChat__content" }, ru = { class: "AiChat__bubble AiChat__bubble--user" }, iu = { class: "AiChat__time" }, au = {
26711
26710
  key: 1,
26712
26711
  class: "AiChat__message"
26713
- }, au = { class: "AiChat__content" }, ou = { class: "AiChat__bubble" }, su = {
26712
+ }, ou = { class: "AiChat__content" }, su = { class: "AiChat__bubble" }, cu = {
26714
26713
  key: 1,
26715
26714
  class: "AiChat__typing"
26716
- }, cu = {
26715
+ }, lu = {
26717
26716
  key: 0,
26718
26717
  class: "AiChat__meta"
26719
- }, lu = { class: "AiChat__time" }, uu = {
26718
+ }, uu = { class: "AiChat__time" }, du = {
26720
26719
  key: 0,
26721
26720
  class: "AiChat__actions"
26722
- }, du = {
26721
+ }, fu = {
26723
26722
  key: 1,
26724
26723
  class: "AiChat__empty"
26725
- }, fu = {
26724
+ }, pu = {
26726
26725
  key: 2,
26727
26726
  class: "AiChat__contentWrapper"
26728
- }, pu = { class: "AiChat__headerActions" }, mu = {
26727
+ }, mu = { class: "AiChat__headerActions" }, hu = {
26729
26728
  key: 0,
26730
26729
  class: "AiChat__message AiChat__message--user"
26731
- }, hu = { class: "AiChat__content" }, gu = { class: "AiChat__bubble AiChat__bubble--user" }, _u = { class: "AiChat__time" }, vu = {
26730
+ }, gu = { class: "AiChat__content" }, _u = { class: "AiChat__bubble AiChat__bubble--user" }, vu = { class: "AiChat__time" }, yu = {
26732
26731
  key: 1,
26733
26732
  class: "AiChat__message"
26734
- }, yu = { class: "AiChat__content" }, bu = { class: "AiChat__bubble" }, xu = {
26733
+ }, bu = { class: "AiChat__content" }, xu = { class: "AiChat__bubble" }, Su = {
26735
26734
  key: 1,
26736
26735
  class: "AiChat__typing"
26737
- }, Su = {
26736
+ }, Cu = {
26738
26737
  key: 0,
26739
26738
  class: "AiChat__meta"
26740
- }, Cu = { class: "AiChat__time" }, wu = {
26739
+ }, wu = { class: "AiChat__time" }, Tu = {
26741
26740
  key: 0,
26742
26741
  class: "AiChat__actions"
26743
- }, Tu = ["onClick"], Eu = {
26742
+ }, Eu = ["onClick"], Du = {
26744
26743
  key: 0,
26745
26744
  class: "AiChat__typeTabDivider"
26746
- }, Du = { class: "AiChat__inputBar" }, Ou = { class: "AiChat__textareaWrap" }, ku = ["placeholder"], Au = ["disabled"], ju = /* @__PURE__ */ m({
26745
+ }, Ou = { class: "AiChat__inputBar" }, ku = { class: "AiChat__textareaWrap" }, Au = ["placeholder"], ju = ["disabled"], Mu = /* @__PURE__ */ m({
26747
26746
  __name: "AiChat",
26748
26747
  props: {
26749
26748
  baseHttp: { default: "" },
@@ -26791,7 +26790,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26791
26790
  width: typeof a.width == "number" ? `${a.width}px` : a.width,
26792
26791
  height: typeof a.height == "number" ? `${a.height}px` : a.height,
26793
26792
  transform: `translate3d(${y.value}px, ${E.value}px, 0)`
26794
- }), I = x(null), L = x(null), R = x(!1), z = x(""), B = x(a.defaultType), ee = x(""), V = x(!1), H = null, te = x(""), ne = new Zl(), U = "", W = x(a.appKey || ""), re = [], G = async () => {
26793
+ }), I = x(null), L = x(null), R = x(!1), z = x(""), B = x(a.defaultType), ee = x(""), V = x(!1), H = null, te = x(""), ne = new Ql(), U = "", W = x(a.appKey || ""), re = [], G = async () => {
26795
26794
  if (!a.username || !a.password) return console.warn("[AiChat] 未配置 username/password,跳过登录"), a.appKey || "";
26796
26795
  console.log("[AiChat] 正在登录...");
26797
26796
  try {
@@ -26804,7 +26803,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26804
26803
  } catch (e) {
26805
26804
  return console.error("[AiChat] 登录失败:", e), a.appKey || "";
26806
26805
  }
26807
- }, K = o(() => !!I.value || !!L.value || R.value), q = x(), ie = x(), ae = x(Xl), J = o(() => {
26806
+ }, K = o(() => !!I.value || !!L.value || R.value), q = x(), ie = x(), ae = x(Zl), J = o(() => {
26808
26807
  let e = ae.value.categories || {};
26809
26808
  return Object.keys(e).map((t) => ({
26810
26809
  value: t,
@@ -27042,13 +27041,13 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27042
27041
  B.value = e, f("changeType", e);
27043
27042
  }, _e = async () => {
27044
27043
  if (!a.mockData) {
27045
- ae.value = Xl;
27044
+ ae.value = Zl;
27046
27045
  return;
27047
27046
  }
27048
27047
  if (typeof a.mockData == "string") try {
27049
- ae.value = await xt(a.mockData.startsWith("http") ? a.mockData : `${a.baseHttp}${a.mockData}`, !0) || Xl;
27048
+ ae.value = await xt(a.mockData.startsWith("http") ? a.mockData : `${a.baseHttp}${a.mockData}`, !0) || Zl;
27050
27049
  } catch (e) {
27051
- f("error", e), ae.value = Xl;
27050
+ f("error", e), ae.value = Zl;
27052
27051
  }
27053
27052
  else ae.value = a.mockData;
27054
27053
  };
@@ -27280,7 +27279,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27280
27279
  key: 0,
27281
27280
  class: "AiChat__header",
27282
27281
  onPointerdown: n[2] ||= A((...e) => w(N) && w(N)(...e), ["prevent"])
27283
- }, [n[12] ||= d("<div class=\"AiChat__title\"><svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"currentColor\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z\"></path></svg><span>AI 智能助手</span><span class=\"AiChat__status\"><span class=\"AiChat__statusDot\"></span> 在线 </span></div>", 1), u("div", Ql, [u("button", {
27282
+ }, [n[12] ||= d("<div class=\"AiChat__title\"><svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"currentColor\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z\"></path></svg><span>AI 智能助手</span><span class=\"AiChat__status\"><span class=\"AiChat__statusDot\"></span> 在线 </span></div>", 1), u("div", $l, [u("button", {
27284
27283
  class: "AiChat__headerBtn",
27285
27284
  title: m.value ? "退出全屏" : "全屏",
27286
27285
  onClick: P,
@@ -27290,7 +27289,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27290
27289
  width: "16",
27291
27290
  height: "16",
27292
27291
  fill: "currentColor"
27293
- }, [u("path", { d: "M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z" })], -1)]], 40, $l), u("button", {
27292
+ }, [u("path", { d: "M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z" })], -1)]], 40, eu), u("button", {
27294
27293
  class: "AiChat__headerBtn AiChat__headerBtn--close",
27295
27294
  onClick: Me,
27296
27295
  onPointerdown: n[1] ||= A(() => {}, ["stop"]),
@@ -27301,17 +27300,17 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27301
27300
  ref_key: "bodyRef",
27302
27301
  ref: q,
27303
27302
  class: "AiChat__body"
27304
- }, [I.value || L.value ? (b(), l(i, { key: 0 }, [I.value ? (b(), l("div", eu, [n[13] ||= u("div", { class: "AiChat__avatar AiChat__avatar--user" }, [u("svg", {
27303
+ }, [I.value || L.value ? (b(), l(i, { key: 0 }, [I.value ? (b(), l("div", tu, [n[13] ||= u("div", { class: "AiChat__avatar AiChat__avatar--user" }, [u("svg", {
27305
27304
  viewBox: "0 0 24 24",
27306
27305
  width: "16",
27307
27306
  height: "16",
27308
27307
  fill: "currentColor"
27309
- }, [u("path", { d: "M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z" })])], -1), u("div", tu, [u("div", nu, C(I.value.content), 1), u("div", ru, C(I.value.time), 1)])])) : c("", !0), L.value || R.value ? (b(), l("div", iu, [n[20] ||= u("div", { class: "AiChat__avatar AiChat__avatar--ai" }, [u("svg", {
27308
+ }, [u("path", { d: "M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z" })])], -1), u("div", nu, [u("div", ru, C(I.value.content), 1), u("div", iu, C(I.value.time), 1)])])) : c("", !0), L.value || R.value ? (b(), l("div", au, [n[20] ||= u("div", { class: "AiChat__avatar AiChat__avatar--ai" }, [u("svg", {
27310
27309
  viewBox: "0 0 24 24",
27311
27310
  width: "16",
27312
27311
  height: "16",
27313
27312
  fill: "currentColor"
27314
- }, [u("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z" })])], -1), u("div", au, [u("div", ou, [L.value ? (b(), s(Yl, {
27313
+ }, [u("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z" })])], -1), u("div", ou, [u("div", su, [L.value ? (b(), s(Xl, {
27315
27314
  key: 0,
27316
27315
  message: L.value,
27317
27316
  theme: e.theme,
@@ -27322,11 +27321,11 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27322
27321
  "theme",
27323
27322
  "isFullscreen",
27324
27323
  "baseHttp"
27325
- ])) : R.value ? (b(), l("div", su, [...n[14] ||= [
27324
+ ])) : R.value ? (b(), l("div", cu, [...n[14] ||= [
27326
27325
  u("span", null, null, -1),
27327
27326
  u("span", null, null, -1),
27328
27327
  u("span", null, null, -1)
27329
- ]])) : c("", !0)]), L.value ? (b(), l("div", cu, [u("div", lu, C(L.value.time), 1), L.value.thinkingStatus === "end" ? (b(), l("div", uu, [
27328
+ ]])) : c("", !0)]), L.value ? (b(), l("div", lu, [u("div", uu, C(L.value.time), 1), L.value.thinkingStatus === "end" ? (b(), l("div", du, [
27330
27329
  p(a, {
27331
27330
  content: "复制",
27332
27331
  placement: "top"
@@ -27377,7 +27376,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27377
27376
  }), u("span", null, "导出")], -1)]]),
27378
27377
  _: 1
27379
27378
  })
27380
- ])) : c("", !0)])) : c("", !0)])])) : c("", !0)], 64)) : (b(), l("div", du, " 选择类型后输入问题,AI 将为你解答 "))], 512)) : K.value ? (b(), l("div", fu, [u("header", {
27379
+ ])) : c("", !0)])) : c("", !0)])])) : c("", !0)], 64)) : (b(), l("div", fu, " 选择类型后输入问题,AI 将为你解答 "))], 512)) : K.value ? (b(), l("div", pu, [u("header", {
27381
27380
  class: "AiChat__contentHeader",
27382
27381
  onPointerdown: n[5] ||= A((...e) => w(N) && w(N)(...e), ["prevent"])
27383
27382
  }, [n[22] ||= u("div", { class: "AiChat__contentTitle" }, [u("svg", {
@@ -27385,7 +27384,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27385
27384
  width: "16",
27386
27385
  height: "16",
27387
27386
  fill: "currentColor"
27388
- }, [u("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z" })]), u("span", null, "AI 智能助手")], -1), u("div", pu, [u("button", {
27387
+ }, [u("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z" })]), u("span", null, "AI 智能助手")], -1), u("div", mu, [u("button", {
27389
27388
  class: "AiChat__headerBtn",
27390
27389
  title: "全屏",
27391
27390
  onClick: P,
@@ -27404,7 +27403,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27404
27403
  ref_key: "bodyRef",
27405
27404
  ref: q,
27406
27405
  class: "AiChat__contentPanel"
27407
- }, [I.value || L.value ? (b(), l(i, { key: 0 }, [I.value ? (b(), l("div", mu, [u("div", hu, [u("div", gu, C(I.value.content), 1), u("div", _u, C(I.value.time), 1)])])) : c("", !0), L.value || R.value ? (b(), l("div", vu, [u("div", yu, [u("div", bu, [L.value ? (b(), s(Yl, {
27406
+ }, [I.value || L.value ? (b(), l(i, { key: 0 }, [I.value ? (b(), l("div", hu, [u("div", gu, [u("div", _u, C(I.value.content), 1), u("div", vu, C(I.value.time), 1)])])) : c("", !0), L.value || R.value ? (b(), l("div", yu, [u("div", bu, [u("div", xu, [L.value ? (b(), s(Xl, {
27408
27407
  key: 0,
27409
27408
  message: L.value,
27410
27409
  theme: e.theme,
@@ -27415,11 +27414,11 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27415
27414
  "theme",
27416
27415
  "isFullscreen",
27417
27416
  "baseHttp"
27418
- ])) : R.value ? (b(), l("div", xu, [...n[23] ||= [
27417
+ ])) : R.value ? (b(), l("div", Su, [...n[23] ||= [
27419
27418
  u("span", null, null, -1),
27420
27419
  u("span", null, null, -1),
27421
27420
  u("span", null, null, -1)
27422
- ]])) : c("", !0)]), L.value ? (b(), l("div", Su, [u("div", Cu, C(L.value.time), 1), L.value.thinkingStatus === "end" ? (b(), l("div", wu, [
27421
+ ]])) : c("", !0)]), L.value ? (b(), l("div", Cu, [u("div", wu, C(L.value.time), 1), L.value.thinkingStatus === "end" ? (b(), l("div", Tu, [
27423
27422
  p(a, {
27424
27423
  content: "复制",
27425
27424
  placement: "top"
@@ -27480,7 +27479,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27480
27479
  }, [(b(!0), l(i, null, S(J.value, (e, t) => (b(), l(i, { key: e.value }, [u("button", {
27481
27480
  class: g(["AiChat__typeTab", { "AiChat__typeTab--active": B.value === e.value }]),
27482
27481
  onClick: (t) => ge(e.value)
27483
- }, C(e.label), 11, Tu), t < J.value.length - 1 ? (b(), l("span", Eu)) : c("", !0)], 64))), 128))], 34), u("div", Du, [u("div", Ou, [k(u("input", {
27482
+ }, C(e.label), 11, Eu), t < J.value.length - 1 ? (b(), l("span", Du)) : c("", !0)], 64))), 128))], 34), u("div", Ou, [u("div", ku, [k(u("input", {
27484
27483
  ref_key: "textareaRef",
27485
27484
  ref: ie,
27486
27485
  "onUpdate:modelValue": n[7] ||= (e) => z.value = e,
@@ -27489,7 +27488,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27489
27488
  onKeydown: he,
27490
27489
  onInput: Oe,
27491
27490
  onPointerdown: n[8] ||= A(() => {}, ["stop"])
27492
- }, null, 40, ku), [[T, z.value]])]), u("button", {
27491
+ }, null, 40, Au), [[T, z.value]])]), u("button", {
27493
27492
  class: "AiChat__send",
27494
27493
  disabled: !z.value.trim() || R.value || V.value,
27495
27494
  onClick: ce,
@@ -27500,10 +27499,10 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27500
27499
  width: "16",
27501
27500
  height: "16",
27502
27501
  fill: "currentColor"
27503
- }, [u("path", { d: "M2.01 21L23 12 2.01 3 2 10l15 2-15 2z" })], -1)]], 40, Au)])], 34)
27502
+ }, [u("path", { d: "M2.01 21L23 12 2.01 3 2 10l15 2-15 2z" })], -1)]], 40, ju)])], 34)
27504
27503
  ], 6);
27505
27504
  };
27506
27505
  }
27507
27506
  });
27508
27507
  //#endregion
27509
- export { St as a, ht as i, Ct as n, bt as o, xt as r, ju as t };
27508
+ export { St as a, ht as i, Ct as n, bt as o, xt as r, Mu as t };