| 123456789101112131415161718192021 |
- <!DOCTYPE html>
- <html lang="zh-CN"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_next/static/chunks/%5Broot-of-the-server%5D__5bf117b1._.css" data-precedence="next_static/chunks/[root-of-the-server]__5bf117b1._.css"><link rel="stylesheet" href="/_next/static/chunks/apps_web_src_components_platform-shell_module_d1f6c86b.css" data-precedence="next_static/chunks/apps_web_src_components_platform-shell_module_d1f6c86b.css"><link rel="preload" as="script" fetchpriority="low" href="/_next/static/chunks/%5Bturbopack%5D_browser_dev_hmr-client_hmr-client_ts_956a0d3a._.js"><script src="/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js" async=""></script><script src="/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js" async=""></script><script src="/_next/static/chunks/node_modules_next_dist_compiled_next-devtools_index_1dd7fb59.js" async=""></script><script src="/_next/static/chunks/node_modules_next_dist_compiled_a0e4c7b4._.js" async=""></script><script src="/_next/static/chunks/node_modules_next_dist_client_17643121._.js" async=""></script><script src="/_next/static/chunks/node_modules_next_dist_f3530cac._.js" async=""></script><script src="/_next/static/chunks/node_modules_%40swc_helpers_cjs_d80fb378._.js" async=""></script><script src="/_next/static/chunks/apps_web_a0ff3932._.js" async=""></script><script src="/_next/static/chunks/turbopack-apps_web_23a915ee._.js" async=""></script><script src="/_next/static/chunks/node_modules_next_dist_be32b49c._.js" async=""></script><script src="/_next/static/chunks/apps_web_src_app_favicon_ico_mjs_3852398f._.js" async=""></script><script src="/_next/static/chunks/apps_web_src_app_layout_tsx_1cf6b850._.js" async=""></script><script src="/_next/static/chunks/apps_web_src_59d3485f._.js" async=""></script><script src="/_next/static/chunks/node_modules_next_a760476a._.js" async=""></script><script src="/_next/static/chunks/apps_web_src_app_alerts_page_tsx_8198e933._.js" async=""></script><script src="/_next/static/chunks/node_modules_next_dist_client_components_builtin_global-error_1cf6b850.js" async=""></script><meta name="next-size-adjust" content=""><title>SentAI 巡检平台</title><meta name="description" content="AI 智能巡检与故障归因平台,阶段 1 外网网站巡检控制台。"><link rel="icon" href="/favicon.ico?favicon.0b3bf435.ico" sizes="256x256" type="image/x-icon"><script src="/_next/static/chunks/node_modules_next_dist_build_polyfills_polyfill-nomodule.js" nomodule=""></script><script src="/_next/static/chunks/%5Bturbopack%5D_browser_dev_hmr-client_hmr-client_ts_c8c997ce._.js"></script><script src="/_next/static/chunks/%5Bturbopack%5D_browser_dev_hmr-client_hmr-client_ts_c7192189._.js"></script><link rel="preload" href="/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2" as="font" crossorigin="" type="font/woff2"><link rel="preload" href="/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2" as="font" crossorigin="" type="font/woff2"><style>@font-face{font-family:'__nextjs-Geist';font-style:normal;font-weight:400 600;font-display:swap;src:url(/__nextjs_font/geist-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'__nextjs-Geist Mono';font-style:normal;font-weight:400 600;font-display:swap;src:url(/__nextjs_font/geist-mono-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'__nextjs-Geist';font-style:normal;font-weight:400 600;font-display:swap;src:url(/__nextjs_font/geist-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'__nextjs-Geist Mono';font-style:normal;font-weight:400 600;font-display:swap;src:url(/__nextjs_font/geist-mono-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}</style></head><body class="geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable"><div hidden=""><!--$--><!--/$--></div><main class="platform-shell-module__ooyAvq__page"><div class="platform-shell-module__ooyAvq__workspace"><aside class="platform-shell-module__ooyAvq__sidebar"><div class="platform-shell-module__ooyAvq__sidebarHeader"><div><p class="platform-shell-module__ooyAvq__pageKicker">SentAI Console</p><h2>后台工作台</h2><p>围绕资源管理、执行效率和排障路径设计,而不是堆叠零散功能。</p></div></div><div class="platform-shell-module__ooyAvq__navList"><a class="platform-shell-module__ooyAvq__navItem" data-active="false" href="/"><strong>平台概览</strong><span>先看整体状态与关键入口</span></a><a class="platform-shell-module__ooyAvq__navItem" data-active="false" href="/tasks"><strong>巡检任务</strong><span>管理网站巡检任务、步骤与调度</span></a><a class="platform-shell-module__ooyAvq__navItem" data-active="false" href="/reports"><strong>巡检报告</strong><span>按日期查看报告、截图与结论</span></a><a class="platform-shell-module__ooyAvq__navItem" data-active="false" href="/runs"><strong>执行记录</strong><span>定位单次执行、证据与失败原因</span></a><a class="platform-shell-module__ooyAvq__navItem" data-active="true" href="/alerts"><strong>告警事件</strong><span>汇总监测异常、日志分析结果与通知状态</span></a><a class="platform-shell-module__ooyAvq__navItem" data-active="false" href="/monitors"><strong>环境监测</strong><span>接入 Redis、MQ、ES、Java 与 HTTP 目标</span></a><a class="platform-shell-module__ooyAvq__navItem" data-active="false" href="/agents"><strong>Agent 节点</strong><span>部署节点、验证在线并控制监测能力</span></a></div></aside><section class="platform-shell-module__ooyAvq__mainContent"><section class="platform-shell-module__ooyAvq__panel"><header class="platform-shell-module__ooyAvq__pageHeader"><div><p class="platform-shell-module__ooyAvq__pageKicker">告警事件</p><h2>告警事件</h2><p>监测失败、访问异常和日志分析命中的问题会汇总到这里,并同步通知状态。</p></div><div class="platform-shell-module__ooyAvq__buttonRow"><span class="platform-shell-module__ooyAvq__statusChip" data-state="idle">已就绪</span></div></header></section><section class="platform-shell-module__ooyAvq__mainContent"><section class="platform-shell-module__ooyAvq__panel"><div class="platform-shell-module__ooyAvq__pageHeader"><div><p class="platform-shell-module__ooyAvq__pageKicker">事件总览</p><h2>当前告警池</h2></div><div class="platform-shell-module__ooyAvq__buttonRow"><button class="platform-shell-module__ooyAvq__secondaryButton" type="button">刷新数据</button></div></div><div class="platform-shell-module__ooyAvq__statsGrid"><article class="platform-shell-module__ooyAvq__statCard"><span>告警总数</span><strong>4</strong></article><article class="platform-shell-module__ooyAvq__statCard" data-tone="danger"><span>处理中</span><strong>4</strong></article><article class="platform-shell-module__ooyAvq__statCard" data-tone="danger"><span>紧急级别</span><strong>0</strong></article><article class="platform-shell-module__ooyAvq__statCard" data-tone="success"><span>已通知</span><strong>0</strong></article></div></section><section class="platform-shell-module__ooyAvq__runWorkspace"><section class="platform-shell-module__ooyAvq__runListPanel"><div class="platform-shell-module__ooyAvq__cardHeader"><div><h3>告警列表</h3><p>按状态和级别收敛问题,再看单条事件详情。</p></div></div><div class="platform-shell-module__ooyAvq__toolbar"><label class="platform-shell-module__ooyAvq__inlineField"><span>关键词</span><input placeholder="按标题、service_key、分类筛选" value=""></label><label class="platform-shell-module__ooyAvq__inlineField"><span>状态</span><select><option value="">全部状态</option><option value="open" selected="">处理中</option><option value="acknowledged">已确认</option><option value="resolved">已关闭</option></select></label><label class="platform-shell-module__ooyAvq__inlineField"><span>级别</span><select><option value="" selected="">全部级别</option><option value="critical">紧急</option><option value="major">严重</option><option value="warning">预警</option><option value="info">信息</option></select></label></div><div class="platform-shell-module__ooyAvq__runList"><article class="platform-shell-module__ooyAvq__runRow" data-active="true"><button class="platform-shell-module__ooyAvq__runRowButton" type="button"><div class="platform-shell-module__ooyAvq__runRowMain"><div class="platform-shell-module__ooyAvq__runRowHeader"><strong>监测已失败,但暂未命中明确日志模板</strong><span class="platform-shell-module__ooyAvq__badge" data-status="failed">严重</span></div><span class="platform-shell-module__ooyAvq__runMetaLine"><span>处理中</span><span>java-app-template</span><span>2026/3/24 23:17:19</span></span><span>当前已有失败结果,但日志模式尚不足以自动归因。</span></div><div class="platform-shell-module__ooyAvq__runRowSide"><span>unknown-failure</span><span>1 次</span></div></button></article><article class="platform-shell-module__ooyAvq__runRow" data-active="false"><button class="platform-shell-module__ooyAvq__runRowButton" type="button"><div class="platform-shell-module__ooyAvq__runRowMain"><div class="platform-shell-module__ooyAvq__runRowHeader"><strong>监测执行失败</strong><span class="platform-shell-module__ooyAvq__badge" data-status="failed">严重</span></div><span class="platform-shell-module__ooyAvq__runMetaLine"><span>处理中</span><span>infra-redis-template</span><span>2026/3/24 23:17:19</span></span><span>Redis 检测超时</span></div><div class="platform-shell-module__ooyAvq__runRowSide"><span>EXECUTION_ERROR</span><span>1 次</span></div></button></article><article class="platform-shell-module__ooyAvq__runRow" data-active="false"><button class="platform-shell-module__ooyAvq__runRowButton" type="button"><div class="platform-shell-module__ooyAvq__runRowMain"><div class="platform-shell-module__ooyAvq__runRowHeader"><strong>监测已失败,但暂未命中明确日志模板</strong><span class="platform-shell-module__ooyAvq__badge" data-status="failed">严重</span></div><span class="platform-shell-module__ooyAvq__runMetaLine"><span>处理中</span><span>infra-redis-template</span><span>2026/3/24 23:17:19</span></span><span>当前已有失败结果,但日志模式尚不足以自动归因。</span></div><div class="platform-shell-module__ooyAvq__runRowSide"><span>unknown-failure</span><span>1 次</span></div></button></article><article class="platform-shell-module__ooyAvq__runRow" data-active="false"><button class="platform-shell-module__ooyAvq__runRowButton" type="button"><div class="platform-shell-module__ooyAvq__runRowMain"><div class="platform-shell-module__ooyAvq__runRowHeader"><strong>监测执行失败</strong><span class="platform-shell-module__ooyAvq__badge" data-status="failed">严重</span></div><span class="platform-shell-module__ooyAvq__runMetaLine"><span>处理中</span><span>java-app-template</span><span>2026/3/24 23:17:19</span></span><span>fetch failed</span></div><div class="platform-shell-module__ooyAvq__runRowSide"><span>EXECUTION_ERROR</span><span>1 次</span></div></button></article></div></section><aside class="platform-shell-module__ooyAvq__runDetailPanel"><div class="platform-shell-module__ooyAvq__detailStack"><div class="platform-shell-module__ooyAvq__detailHeader"><div><p class="platform-shell-module__ooyAvq__pageKicker">告警详情</p><h3>监测已失败,但暂未命中明确日志模板</h3></div><span class="platform-shell-module__ooyAvq__badge" data-status="failed">严重</span></div><div class="platform-shell-module__ooyAvq__keyValueGrid"><div><span>状态</span><strong>处理中</strong></div><div><span>service_key</span><strong>java-app-template</strong></div><div><span>分类</span><strong>unknown-failure</strong></div><div><span>来源</span><strong>log-analysis</strong></div><div><span>首次发现</span><strong>2026/3/24 23:17:19</strong></div><div><span>最近发现</span><strong>2026/3/24 23:17:19</strong></div><div><span>通知结果</span><strong>skipped</strong></div><div><span>触发次数</span><strong>1</strong></div></div><article class="platform-shell-module__ooyAvq__detailCard"><div class="platform-shell-module__ooyAvq__cardHeader"><div><h3>摘要区</h3><p>先看当前事件结论与通知反馈。</p></div></div><div class="platform-shell-module__ooyAvq__metaList"><span>摘要:当前已有失败结果,但日志模式尚不足以自动归因。</span><span>通知说明:未配置 MONITORING_ALERT_WEBHOOK_URL</span></div></article><article class="platform-shell-module__ooyAvq__detailCard"><div class="platform-shell-module__ooyAvq__cardHeader"><div><h3>关联对象</h3><p>把告警与监测目标、运行记录串起来。</p></div></div><div class="platform-shell-module__ooyAvq__metaList"><span>目标:Java 应用接入模板</span><span>地址:http://192.168.1.20:8080</span><span>run_id:59af8fd5-9df3-4006-bb87-48f509038889</span><span>trace_id:b7c4edf6-2300-442e-b3da-989c341c657f</span></div><div class="platform-shell-module__ooyAvq__buttonRow"><a class="platform-shell-module__ooyAvq__linkButton" href="/monitors?targetId=monitor-java-template-seed">查看目标</a><a class="platform-shell-module__ooyAvq__secondaryButton" href="/monitors?targetId=monitor-java-template-seed&runId=59af8fd5-9df3-4006-bb87-48f509038889">查看监测记录</a><a class="platform-shell-module__ooyAvq__secondaryButton" href="/monitors/monitor-java-template-seed/edit">编辑目标</a></div></article><article class="platform-shell-module__ooyAvq__detailCard"><div class="platform-shell-module__ooyAvq__cardHeader"><div><h3>原始详情</h3><p>这里保留触发告警时的结构化内容。</p></div></div><pre class="platform-shell-module__ooyAvq__codeBlock">{
- "id": "issue-run-59af8fd5-9df3-4006-bb87-48f509038889",
- "title": "监测已失败,但暂未命中明确日志模板",
- "category": "unknown-failure",
- "severity": "major",
- "confidence": "low",
- "summary": "当前已有失败结果,但日志模式尚不足以自动归因。",
- "evidence": [],
- "possibleCauses": [
- "外部依赖瞬时异常",
- "采集窗口过短,关键日志未进入当前样本",
- "当前规则库尚未覆盖该异常模式"
- ],
- "recommendedActions": [
- "扩大日志采样窗口到最近 5-15 分钟",
- "补充该异常的样例日志进入规则库",
- "结合 metrics/details 与业务日志做二次判断"
- ],
- "templateIds": []
- }</pre></article><article class="platform-shell-module__ooyAvq__detailCard"><div class="platform-shell-module__ooyAvq__cardHeader"><div><h3>操作区</h3><p>支持确认、关闭和重新打开告警。</p></div></div><div class="platform-shell-module__ooyAvq__buttonRow"><button class="platform-shell-module__ooyAvq__secondaryButton" type="button">标记已确认</button><button class="platform-shell-module__ooyAvq__secondaryButton" type="button">关闭告警</button><button class="platform-shell-module__ooyAvq__secondaryButton" type="button">重新打开</button></div></article></div></aside></section></section></section></div></main><!--$--><!--/$--><script id="_R_">self.__next_r="Hrpv3O3rLRuivBPEog8vd"</script><script src="/_next/static/chunks/%5Bturbopack%5D_browser_dev_hmr-client_hmr-client_ts_956a0d3a._.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"8:I[\"[project]/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)\",[\"/_next/static/chunks/node_modules_next_dist_be32b49c._.js\",\"/_next/static/chunks/apps_web_src_app_favicon_ico_mjs_3852398f._.js\"],\"SegmentViewNode\"]\na:\"$Sreact.fragment\"\n1a:I[\"[project]/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)\",[\"/_next/static/chunks/node_modules_next_dist_be32b49c._.js\",\"/_next/static/chunks/apps_web_src_app_favicon_ico_mjs_3852398f._.js\"],\"default\"]\n1c:I[\"[project]/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)\",[\"/_next/static/chunks/node_modules_next_dist_be32b49c._.js\",\"/_next/static/chunks/apps_web_src_app_favicon_ico_mjs_3852398f._.js\"],\"default\"]\n34:I[\"[project]/apps/web/src/components/monitoring-alerts-console.tsx [app-client] (ecmascript)\",[\"/_next/static/chunks/apps_web_src_app_layout_tsx_1cf6b850._.js\",\"/_next/static/chunks/apps_web_src_59d3485f._.js\",\"/_next/static/chunks/node_modules_next_a760476a._.js\",\"/_next/static/chunks/apps_web_src_app_alerts_page_tsx_8198e933._.js\"],\"MonitoringAlertsConsole\"]\n3c:I[\"[project]/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)\",[\"/_next/static/chunks/node_modules_next_dist_be32b49c._.js\",\"/_next/static/chunks/apps_web_src_app_favicon_ico_mjs_3852398f._.js\"],\"OutletBoundary\"]\n3e:\"$Sreact.suspense\"\n47:I[\"[project]/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)\",[\"/_next/static/chunks/node_modules_next_dist_be32b49c._.js\",\"/_next/static/chunks/apps_web_src_app_favicon_ico_mjs_3852398f._.js\"],\"ViewportBoundary\"]\n4e:I[\"[project]/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)\",[\"/_next/static/chunks/node_modules_next_dist_be32b49c._.js\",\"/_next/static/chunks/apps_web_src_app_favicon_ico_mjs_3852398f._.js\"],\"MetadataBoundary\"]\n54:I[\"[project]/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)\",[\"/_next/static/chunks/node_modules_next_dist_client_components_builtin_global-error_1cf6b850.js\"],\"default\"]\n5c:I[\"[project]/node_modules/next/dist/lib/metadata/generate/icon-mark.js [app-client] (ecmascript)\",[\"/_next/static/chunks/node_modules_next_dist_be32b49c._.js\",\"/_next/static/chunks/apps_web_src_app_favicon_ico_mjs_3852398f._.js\"],\"IconMark\"]\n:HL[\"/_next/static/chunks/%5Broot-of-the-server%5D__5bf117b1._.css\",\"style\"]\n:HL[\"/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/chunks/apps_web_src_components_platform-shell_module_d1f6c86b.css\",\"style\"]\n:N1774366822375.3303\n3:\"$EObject.defineProperty(()=\u003e{ctx.componentMod.preloadStyle(fullHref,ctx.renderOpts.crossOrigin,ctx.nonce)},\\\"name\\\",{value:\\\"\\\"})\"\n4:\"$EObject.defineProperty(()=\u003e{ctx.componentMod.preloadFont(href,type,ctx.renderOpts.crossOrigin,ctx.nonce)},\\\"name\\\",{value:\\\"\\\"})\"\n5:\"$EObject.defineProperty(()=\u003e{ctx.componentMod.preloadFont(href,type,ctx.renderOpts.crossOrigin,ctx.nonce)},\\\"name\\\",{value:\\\"\\\"})\"\n6:\"$EObject.defineProperty(()=\u003e{ctx.componentMod.preloadStyle(fullHref,ctx.renderOpts.crossOrigin,ctx.nonce)},\\\"name\\\",{value:\\\"\\\"})\"\n2:{\"name\":\"Preloads\",\"key\":null,\"env\":\"Server\",\"stack\":[],\"props\":{\"preloadCallbacks\":[\"$3\",\"$4\",\"$5\",\"$6\"]}}\n7:[]\n9:[]\nb:[[\"Array.map\",\"\",0,0,0,0,false]]\nc:[[\"Array.map\",\"\",0,0,0,0,false]]\nf:I[\"[project]/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)\",[\"/_next/static/chunks/node_modules_next_dist_be32b49c._.js\",\"/_next/static/chunks/apps_web_src_app_favicon_ico_mjs_3852398f._.js\"],\"default\"]\n12:I[\"[project]/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)\",[\"/_next/static/chunks/node_modules_next_dist_be32b49c._.js\",\"/_next/static/chunks/apps_web_src_app_favicon_ico_mjs_3852398f._.js\"],\"default\"]\n13:{}\n14:[[\"Promise.all\",\"\",0,0,0,0,true]]\n11:{\"ch"])</script><script>self.__next_f.push([1,"ildren\":[\"$\",\"$L12\",null,\"$13\",null,\"$14\",1]}\n15:[[\"Promise.all\",\"\",0,0,0,0,true]]\n10:{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$a\",null,\"$11\",null,\"$15\",0],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$Y\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\",\"segmentViewBoundaries\":\"$Y\"}\n16:[[\"Promise.all\",\"\",0,0,0,0,true]]\ne:{\"name\":\"RootLayout\",\"key\":null,\"env\":\"Server\",\"stack\":[],\"props\":{\"children\":[\"$\",\"$Lf\",null,\"$10\",null,\"$16\",1],\"params\":\"$Y\"}}\n17:[[\"RootLayout\",\"D:\\\\soft\\\\codex\\\\SentAI\\\\apps\\\\web\\\\.next\\\\dev\\\\server\\\\chunks\\\\ssr\\\\[root-of-the-server]__17c47a56._.js\",79,263,78,1,false]]\n18:[[\"RootLayout\",\"D:\\\\soft\\\\codex\\\\SentAI\\\\apps\\\\web\\\\.next\\\\dev\\\\server\\\\chunks\\\\ssr\\\\[root-of-the-server]__17c47a56._.js\",81,270,78,1,false]]\n19:[[\"Promise.all\",\"\",0,0,0,0,true]]\n1b:[[\"Promise.all\",\"\",0,0,0,0,true]]\n1d:[]\n1f:{\"name\":\"NotFound\",\"key\":null,\"env\":\"Server\",\"stack\":[],\"props\":{}}\n20:{\"name\":\"HTTPAccessErrorFallback\",\"key\":null,\"env\":\"Server\",\"owner\":\"$1f\",\"stack\":[],\"props\":{\"status\":404,\"message\":\"This page could not be found.\"}}\n21:[]\n22:[]\n23:[]\n24:[]\n25:[]\n26:[]\n27:[]\n28:[[\"Promise.all\",\"\",0,0,0,0,true]]\n29:[[\"Promise.all\",\"\",0,0,0,0,true]]\n2a:[[\"Promise.all\",\"\",0,0,0,0,true]]\n2b:[[\"Promise.all\",\"\",0,0,0,0,true],[\"Promise.all\",\"\",0,0,0,0,true]]\n2c:[[\"Promise.all\",\"\",0,0,0,0,true],[\"Promise.all\",\"\",0,0,0,0,true]]\n2d:[[\"Promise.all\",\"\",0,0,0,0,true],[\"Promise.all\",\"\",0,0,0,0,true]]\n2e:[[\"Promise.all\",\"\",0,0,0,0,true],[\"Promise.all\",\"\",0,0,0,0,true]]\n30:{\"name\":\"AlertsPage\",\"key\":null,\"env\":\"Server\",\"stack\":[[\"Promise.all\",\"\",0,0,0,0,true],[\"Promise.all\",\"\",0,0,0,0,true]],\"props\":{\"params\":\"$@31\",\"searchParams\":\"$@32\"}}\n33:[[\"AlertsPage\",\"D:\\\\soft\\\\codex\\\\SentAI\\\\apps\\\\web\\\\.next\\\\dev\\\\server\\\\chunks\\\\ssr\\\\[root-of-the-server]__6d095fee._.js\",64,263,63,1,false]]\n35:[[\"Array.map\",\"\",0,0,0,0,false],[\"Array.map\",\"\",0,0,0,0,false]]\n36:[[\"Array.map\",\"\",0,0,0,0,false],[\"Array.map\",\"\",0,0,0,0,false],[\"Promise.all\",\"\",0,0,0,0,true]]\n37:[[\"Array.map\",\"\",0,0,0,0,false],[\"Array.map\",\"\",0,0,0,0,false],[\"Promise.all\",\"\",0,0,0,0,true]]\n38:[[\"Array.map\",\"\",0,0,0,0,false],[\"Array.map\",\"\",0,0,0,0,false],[\"Promise.all\",\"\",0,0,0,0,true]]\n3a:{\"name\":\"Next.MetadataOutlet\",\"key\":null,\"env\":\"Server\",\"stack\":[[\"Promise.all\",\"\",0,0,0,0,true],[\"Promise.all\",\"\",0,0,0,0,true]],\"props\":{}}\n3b:[]\n3d:[]\n40:[]\n"])</script><script>self.__next_f.push([1,"43:\"$EObject.defineProperty(function(type,config,children){for(var propName,i=2;i\u003carguments.length;i++)validateChildKeys(arguments[i]);i={};var key=null;if(null!=config)for(propName in didWarnAboutOldJSXRuntime||!(\\\"__self\\\"in config)||\\\"key\\\"in config||(didWarnAboutOldJSXRuntime=!0,console.warn(\\\"Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform\\\")),hasValidKey(config)\u0026\u0026(checkKeyStringCoercion(config.key),key=\\\"\\\"+config.key),config)hasOwnProperty.call(config,propName)\u0026\u0026\\\"key\\\"!==propName\u0026\u0026\\\"__self\\\"!==propName\u0026\u0026\\\"__source\\\"!==propName\u0026\u0026(i[propName]=config[propName]);var childrenLength=arguments.length-2;if(1===childrenLength)i.children=children;else if(1\u003cchildrenLength){for(var childArray=Array(childrenLength),_i=0;_i\u003cchildrenLength;_i++)childArray[_i]=arguments[_i+2];Object.freeze\u0026\u0026Object.freeze(childArray),i.children=childArray}if(type\u0026\u0026type.defaultProps)for(propName in childrenLength=type.defaultProps)void 0===i[propName]\u0026\u0026(i[propName]=childrenLength[propName]);return key\u0026\u0026function(props,displayName){function warnAboutAccessingKey(){specialPropKeyWarningShown||(specialPropKeyWarningShown=!0,console.error(\\\"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\\\",displayName))}warnAboutAccessingKey.isReactWarning=!0,Object.defineProperty(props,\\\"key\\\",{get:warnAboutAccessingKey,configurable:!0})}(i,\\\"function\\\"==typeof type?type.displayName||type.name||\\\"Unknown\\\":type),(propName=1e4\u003eReactSharedInternals.recentlyCreatedOwnerStacks++)?(childArray=Error.stackTraceLimit,Error.stackTraceLimit=10,childrenLength=Error(\\\"react-stack-top-frame\\\"),Error.stackTraceLimit=childArray):childrenLength=unknownOwnerDebugStack,ReactElement(type,key,i,getOwner(),childrenLength,propName?createTask(getTaskName(type)):unknownOwnerDebugTask)},\\\"name\\\",{value:\\\"\\\"})\"\n"])</script><script>self.__next_f.push([1,"42:{\"name\":\"NonIndex\",\"key\":null,\"env\":\"Server\",\"stack\":[],\"props\":{\"createElement\":\"$43\",\"pagePath\":\"/alerts\",\"statusCode\":200,\"isPossibleServerAction\":false}}\n45:{\"name\":\"ViewportWrapper\",\"key\":null,\"env\":\"Server\",\"stack\":[],\"props\":{}}\n46:[]\n49:{\"name\":\"Next.Viewport\",\"key\":null,\"env\":\"Server\",\"owner\":\"$45\",\"stack\":[],\"props\":{}}\n4b:{\"name\":\"MetadataWrapper\",\"key\":null,\"env\":\"Server\",\"stack\":[],\"props\":{}}\n4c:[]\n4d:[]\n4f:[]\n51:{\"name\":\"Next.Metadata\",\"key\":null,\"env\":\"Server\",\"owner\":\"$4b\",\"stack\":[],\"props\":{}}\n52:[]\n55:[]\n31:{}\n32:\n56:[]\n57:[]\n58:[]\n59:[]\n5a:[[\"Array.map\",\"\",0,0,0,0,false]]\n5b:[]\n1:D{\"time\":0.25469999999768334}\n1:D\"$2\"\n1:D{\"time\":0.3073999999978696}\n1:null\nd:D{\"time\":0.907100000003993}\nd:D\"$e\"\nd:D{\"time\":1.07039999999688}\n1e:D{\"time\":1.2574000000022352}\n1e:D\"$1f\"\n1e:D{\"time\":1.3404999999984284}\n1e:D\"$20\"\n1e:D{\"time\":1.443200000001525}\n1e:[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"},\"$20\",\"$21\",1],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}},\"$20\",\"$24\",1],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404},\"$20\",\"$25\",1],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"},\"$20\",\"$27\",1]},\"$20\",\"$26\",1]]},\"$20\",\"$23\",1]},\"$20\",\"$22\",1]]\nd:[\"$\",\"html\",null,{\"lang\":\"zh-CN\",\"children\":[\"$\",\"body\",null,{\"className\":\"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable\",\"children\":[\"$\",\"$L1a\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L1c\",null,{},null,\"$1b\",1],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[\"$\",\"$L8\",\"c-not-found\",{\"type\":\"not-found\",\"pagePath\":\"__next_builtin__not-found.js\",\"children\":[\"$1e\",[]]},null,\"$1d\",0],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\",\"segmentViewBoundaries\":[[\"$\",\"$L8\",null,{\"type\":\"boundary:not-found\",\"pagePath\":\"__next_builtin__not-found.js@boundary\"},null,\"$28\",1],\"$undefined\",\"$undefined\",[\"$\",\"$L8\",null,{\"type\":\"boundary:global-error\",\"pagePath\":\"__next_builtin__global-error.js\"},null,\"$29\",1]]},null,\"$19\",1]},\"$e\",\"$18\",1]},\"$e\",\"$17\",1]\n2f:D{\"time\":2.1459000000031665}\n2f:D\"$30\"\n2f:D{\"time\":2.2260000000023865}\n2f:[\"$\",\"$L34\",null,{},\"$30\",\"$33\",1]\n39:D{\"time\":2.4259000000020023}\n39:D\"$3a\"\n39:D{\"time\":3.639600000002247}\n39:[\"$\",\"$L3c\",null,{\"children\":[\"$\",\"$3e\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@3f\"},\"$3a\",\"$3d\",1]},\"$3a\",\"$3b\",1]\n41:D{\"time\":3.9188999999969383}\n41:D\"$42\"\n41:D{\"time\":3.9279999999998836}\n41:null\n44:D{\"time\":3.9896999999982654}\n44:D\"$45\"\n44:D{\"time\":4.048099999999977}\n48:D{\"time\":4.098700000002282}\n48:D\"$49\"\n44:[\"$\",\"$L47\",null,{\"children\":\"$L48\"},\"$45\",\"$46\",1]\n4a:D{\"time\":4.424700000003213}\n4a:D\"$4b\"\n4a:D{\"time\":4.495699999999488}\n50:D{\"time\":4.574200000002747}\n50:D\"$51\"\n4a:[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L4e\",null,{\"children\":[\"$\",\"$3e\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L50\"},\"$4b\",\"$4f\",1]},\"$4b\",\"$4d\",1]},\"$4b\",\"$4c\",1]\n53:[]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":\"$1\",\"b\":\"development\",\"c\":[\"\",\"alerts\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"alerts\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$L8\",\"layout\",{\"type\":\"layout\",\"pagePath\":\"/apps/web/src/app/layout.tsx\",\"children\":[\"$\",\"$a\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/%5Broot-of-the-server%5D__5bf117b1._.css\",\"precedence\":\"next_static/chunks/[root-of-the-server]__5bf117b1._.css\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"},null,\"$b\",0],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/apps_web_src_app_layout_tsx_1cf6b850._.js\",\"async\":true,\"nonce\":\"$undefined\"},null,\"$c\",0]],\"$d\"]},null,\"$9\",1]},null,\"$7\",0],{\"children\":[[\"$\",\"$a\",\"c\",{\"children\":[null,[\"$\",\"$L1a\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L1c\",null,{},null,\"$2c\",1],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\",\"segmentViewBoundaries\":[\"$undefined\",\"$undefined\",\"$undefined\",\"$undefined\"]},null,\"$2b\",1]]},null,\"$2a\",0],{\"children\":[[\"$\",\"$a\",\"c\",{\"children\":[[\"$\",\"$L8\",\"c-page\",{\"type\":\"page\",\"pagePath\":\"/apps/web/src/app/alerts/page.tsx\",\"children\":\"$2f\"},null,\"$2e\",1],[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/apps_web_src_components_platform-shell_module_d1f6c86b.css\",\"precedence\":\"next_static/chunks/apps_web_src_components_platform-shell_module_d1f6c86b.css\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"},null,\"$35\",0],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/apps_web_src_59d3485f._.js\",\"async\":true,\"nonce\":\"$undefined\"},null,\"$36\",0],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/node_modules_next_a760476a._.js\",\"async\":true,\"nonce\":\"$undefined\"},null,\"$37\",0],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/apps_web_src_app_alerts_page_tsx_8198e933._.js\",\"async\":true,\"nonce\":\"$undefined\"},null,\"$38\",0]],\"$39\"]},null,\"$2d\",0],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$a\",\"h\",{\"children\":[\"$41\",\"$44\",\"$4a\",[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"},null,\"$52\",1]]},null,\"$40\",0],false]],\"m\":\"$W53\",\"G\":[\"$54\",[\"$\",\"$L8\",\"ge-svn\",{\"type\":\"global-error\",\"pagePath\":\"__next_builtin__global-error.js\",\"children\":[]},null,\"$55\",0]],\"S\":false}\n"])</script><script>self.__next_f.push([1,"48:D{\"time\":11.563500000003842}\n48:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"},\"$3a\",\"$56\",0],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"},\"$3a\",\"$57\",0]]\n3f:D{\"time\":12.462299999999232}\n3f:null\n50:D{\"time\":12.478499999997439}\n50:[[\"$\",\"title\",\"0\",{\"children\":\"SentAI 巡检平台\"},\"$3a\",\"$58\",0],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"AI 智能巡检与故障归因平台,阶段 1 外网网站巡检控制台。\"},\"$3a\",\"$59\",0],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0b3bf435.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"},\"$3a\",\"$5a\",0],[\"$\",\"$L5c\",\"3\",{},\"$3a\",\"$5b\",0]]\n"])</script><script data-nextjs-dev-overlay="true" style="display: block; position: absolute;"><nextjs-portal style="--nextjs-dev-tools-scale: 1;"></nextjs-portal></script><next-route-announcer style="position: absolute;"></next-route-announcer></body></html>
|