cc-viewer 1.7.5 → 1.7.6
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.
- package/cli.js +19 -4
- package/dist/assets/{App-CcLQlV-O.js → App-3VM471BO.js} +2 -2
- package/dist/assets/{MdxEditorPanel-CAqHHy1X.js → MdxEditorPanel-BQ5MgI4D.js} +1 -1
- package/dist/assets/{Mobile-BxRd4DkS.js → Mobile-wwcXmnrU.js} +1 -1
- package/dist/assets/{UnifiedProxyRetryPage-DjL3NQXO.js → UnifiedProxyRetryPage-BpcKIn9N.js} +1 -1
- package/dist/assets/{index-DJ0AQwus.js → index-BjNLFJ0z.js} +2 -2
- package/dist/assets/{seqResourceLoaders-D1y8V4z5.js → seqResourceLoaders-CDRtUSxI.js} +2 -2
- package/dist/index.html +1 -1
- package/findcc.js +58 -0
- package/package.json +1 -1
- package/server/lib/interceptor-core.js +26 -15
- package/server/pty-manager.js +8 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as jsxRuntimeExports}from"./vendor-codemirror-_NbrtdQc.js";import{a as reactExports,I as Icon,b as _extends,S as Spin,E as Empty,C as Card,i as Statistic,j as Space,T as Tag,F as ForwardTable,k as Switch,B as Button,l as RefIcon$2}from"./vendor-antd-DeqwrDxf.js";import{R as RetryConfigForm}from"./App-CcLQlV-O.js";import{a as apiUrl,t}from"./index-DJ0AQwus.js";import{r as reportSwallowed}from"./seqResourceLoaders-D1y8V4z5.js";import"./vendor-mdxeditor-DG0Nyxw5.js";import"./vendor-qrcode-B3HN--HO.js";import"./vendor-xterm-DckPrCx1.js";import"./vendor-markdown-DOJHsAxX.js";import"./vendor-highlight-IFTJ9nxW.js";import"./vendor-virtuoso-BvrezPQx.js";var CheckCircleOutlined$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"check-circle",theme:"outlined"},CheckCircleOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:CheckCircleOutlined$1}))},RefIcon$1=reactExports.forwardRef(CheckCircleOutlined),CloseCircleOutlined$1={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm0 76c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm128.01 198.83c.03 0 .05.01.09.06l45.02 45.01a.2.2 0 01.05.09.12.12 0 010 .07c0 .02-.01.04-.05.08L557.25 512l127.87 127.86a.27.27 0 01.05.06v.02a.12.12 0 010 .07c0 .03-.01.05-.05.09l-45.02 45.02a.2.2 0 01-.09.05.12.12 0 01-.07 0c-.02 0-.04-.01-.08-.05L512 557.25 384.14 685.12c-.04.04-.06.05-.08.05a.12.12 0 01-.07 0c-.03 0-.05-.01-.09-.05l-45.02-45.02a.2.2 0 01-.05-.09.12.12 0 010-.07c0-.02.01-.04.06-.08L466.75 512 338.88 384.14a.27.27 0 01-.05-.06l-.01-.02a.12.12 0 010-.07c0-.03.01-.05.05-.09l45.02-45.02a.2.2 0 01.09-.05.12.12 0 01.07 0c.02 0 .04.01.08.06L512 466.75l127.86-127.86c.04-.05.06-.06.08-.06a.12.12 0 01.07 0z"}}]},name:"close-circle",theme:"outlined"},CloseCircleOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:CloseCircleOutlined$1}))},RefIcon=reactExports.forwardRef(CloseCircleOutlined);const styles$1_page="_page_1n4b9_1",styles$1_embedded="_embedded_1n4b9_9",styles$1_center="_center_1n4b9_14",styles$1_header="_header_1n4b9_21",styles$1_title="_title_1n4b9_30",styles$1_cardRow="_cardRow_1n4b9_36",styles$1_statCard="_statCard_1n4b9_43",styles$1_section="_section_1n4b9_48",styles$1_table="_table_1n4b9_52",styles$1_streakRow="_streakRow_1n4b9_56",styles$1_codeTags="_codeTags_1n4b9_63",styles$1_topRow="_topRow_1n4b9_71";function fmtMs(ms){return!ms||ms<=0?"-":ms<1e3?`${Math.round(ms)} ms`:`${(ms/1e3).toFixed(2)} s`}function statusColor(status){return 0===status?"default":status<400?"green":status<500?"orange":"red"}function ProxyStatsPage({embedded:embedded2}){const[data,setData]=reactExports.useState(null),[loading,setLoading]=reactExports.useState(!0),[autoRefresh,setAutoRefresh]=reactExports.useState(!0),timerRef=reactExports.useRef(null),fetchData=reactExports.useCallback(()=>{setLoading(!0),fetch(apiUrl("/api/proxy-stats")).then(res=>{if(!res.ok)throw new Error(`HTTP ${res.status}`);return res.json()}).then(d=>{setData(d.proxyStats),setLoading(!1)}).catch(err=>{reportSwallowed("proxyStats.fetch",err),setLoading(!1)})},[]);if(reactExports.useEffect(()=>{fetchData()},[fetchData]),reactExports.useEffect(()=>{if(autoRefresh)return timerRef.current=setInterval(fetchData,15e3),()=>clearInterval(timerRef.current)},[autoRefresh,fetchData]),loading&&!data)return jsxRuntimeExports.jsx("div",{className:styles$1_center,children:jsxRuntimeExports.jsx(Spin,{size:"large"})});if(!data||!data.summary||0===data.summary.totalRequests)return jsxRuntimeExports.jsxs("div",{className:embedded2?styles$1_embedded:styles$1_page,children:[!embedded2&&jsxRuntimeExports.jsx(ProxyStatsHeader,{onRefresh:fetchData,autoRefresh:autoRefresh,setAutoRefresh:setAutoRefresh}),jsxRuntimeExports.jsx("div",{className:styles$1_center,children:jsxRuntimeExports.jsx(Empty,{description:t("ui.proxyStats.noData")})})]});const s=data.summary,recentRecords=(data.recentRecords||[]).filter(r=>(Number(r.final_status)||0)>=400||(Number(r.retries)||0)>0||0===Number(r.final_status));return jsxRuntimeExports.jsxs("div",{className:embedded2?styles$1_embedded:styles$1_page,children:[!embedded2&&jsxRuntimeExports.jsx(ProxyStatsHeader,{onRefresh:fetchData,autoRefresh:autoRefresh,setAutoRefresh:setAutoRefresh}),jsxRuntimeExports.jsxs("div",{className:styles$1_cardRow,children:[jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.totalRequests"),value:s.totalRequests})}),jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.totalRetries"),value:s.totalRetries})}),jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.upstreamAvailability"),value:s.upstreamAvailabilityPct,suffix:"%"})}),jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.downstreamAvailability"),value:s.downstreamAvailabilityPct,suffix:"%"})}),jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.failedRequests"),value:s.totalFailed,valueStyle:{color:"#cf1322"}})}),jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.p95Duration"),value:fmtMs(s.p95Ms)})})]}),jsxRuntimeExports.jsxs(Card,{title:t("ui.proxyStats.availabilityAnalysis"),className:styles$1_section,children:[jsxRuntimeExports.jsxs("div",{className:styles$1_streakRow,children:[jsxRuntimeExports.jsxs(Space,{children:[jsxRuntimeExports.jsxs("span",{children:[t("ui.proxyStats.currentStreak"),":"]}),jsxRuntimeExports.jsxs(Tag,{icon:"success"===s.currentStreakType?jsxRuntimeExports.jsx(RefIcon$1,{}):jsxRuntimeExports.jsx(RefIcon,{}),color:"success"===s.currentStreakType?"green":"red",children:["success"===s.currentStreakType?t("ui.proxyStats.success"):t("ui.proxyStats.failure")," × ",s.currentStreakCount]})]}),jsxRuntimeExports.jsxs(Space,{children:[jsxRuntimeExports.jsxs("span",{children:[t("ui.proxyStats.worstFailureStreak"),":"]}),jsxRuntimeExports.jsx(Tag,{color:"red",children:s.worstFailureStreak})]})]}),jsxRuntimeExports.jsx(ForwardTable,{dataSource:data.byModel||[],rowKey:"model",size:"small",pagination:!1,className:styles$1_table,columns:[{title:t("ui.proxyStats.byModel"),dataIndex:"model",key:"model"},{title:t("ui.proxyStats.totalRequests"),dataIndex:"requests",key:"requests"},{title:t("ui.proxyStats.retries"),dataIndex:"retries",key:"retries"},{title:t("ui.proxyStats.upstreamAvailability"),dataIndex:"upstreamAvailabilityPct",key:"upAvail",render:v=>`${v}%`},{title:t("ui.proxyStats.downstreamAvailability"),dataIndex:"availabilityPct",key:"dsAvail",render:v=>`${v}%`},{title:t("ui.proxyStats.p95Duration"),dataIndex:"p95Ms",key:"p95",render:fmtMs}]})]}),jsxRuntimeExports.jsxs(Card,{title:t("ui.proxyStats.retryDistribution"),className:styles$1_section,children:[jsxRuntimeExports.jsx(ForwardTable,{dataSource:data.retryDistribution||[],rowKey:"retries",size:"small",pagination:!1,className:styles$1_table,columns:[{title:t("ui.proxyStats.retries"),dataIndex:"retries",key:"retries"},{title:t("ui.proxyStats.totalRequests"),dataIndex:"count",key:"count"}]}),jsxRuntimeExports.jsxs("div",{className:styles$1_codeTags,children:[jsxRuntimeExports.jsxs("span",{children:[t("ui.proxyStats.retryCodes"),":"]}),jsxRuntimeExports.jsx(Space,{wrap:!0,children:(data.retryCodes||[]).map(c=>jsxRuntimeExports.jsxs(Tag,{color:statusColor(c.code),children:[c.code," × ",c.count]},c.code))})]})]}),jsxRuntimeExports.jsxs(Card,{title:t("ui.proxyStats.durationAnalysis"),className:styles$1_section,children:[jsxRuntimeExports.jsxs("div",{className:styles$1_cardRow,children:[jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.p50Duration"),value:fmtMs(s.p50Ms)})}),jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.p95Duration"),value:fmtMs(s.p95Ms)})}),jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.p99Duration"),value:fmtMs(s.p99Ms)})}),jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.maxDuration"),value:fmtMs(s.maxMs)})}),jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.avgDuration"),value:fmtMs(s.avgMs)})})]}),jsxRuntimeExports.jsxs("div",{className:styles$1_topRow,children:[jsxRuntimeExports.jsx(ForwardTable,{title:()=>t("ui.proxyStats.slowest"),dataSource:data.slowest?[data.slowest]:[],rowKey:"ts",size:"small",pagination:!1,className:styles$1_table,columns:[{title:t("ui.proxyStats.colPath"),dataIndex:"path",key:"path",ellipsis:!0},{title:t("ui.proxyStats.colModel"),dataIndex:"model",key:"model",ellipsis:!0},{title:t("ui.proxyStats.attempts"),dataIndex:"attempts",key:"attempts"},{title:t("ui.proxyStats.durationAnalysis"),dataIndex:"duration_ms",key:"dur",render:fmtMs}]}),jsxRuntimeExports.jsx(ForwardTable,{title:()=>t("ui.proxyStats.fastest"),dataSource:data.fastest?[data.fastest]:[],rowKey:"ts",size:"small",pagination:!1,className:styles$1_table,columns:[{title:t("ui.proxyStats.colPath"),dataIndex:"path",key:"path",ellipsis:!0},{title:t("ui.proxyStats.colModel"),dataIndex:"model",key:"model",ellipsis:!0},{title:t("ui.proxyStats.attempts"),dataIndex:"attempts",key:"attempts"},{title:t("ui.proxyStats.durationAnalysis"),dataIndex:"duration_ms",key:"dur",render:fmtMs}]})]})]}),data.byPath&&data.byPath.length>0&&jsxRuntimeExports.jsx(Card,{title:t("ui.proxyStats.byPath"),className:styles$1_section,children:jsxRuntimeExports.jsx(ForwardTable,{dataSource:data.byPath,rowKey:"path",size:"small",pagination:!1,className:styles$1_table,columns:[{title:t("ui.proxyStats.colPath"),dataIndex:"path",key:"path",ellipsis:!0},{title:t("ui.proxyStats.totalRequests"),dataIndex:"requests",key:"requests"},{title:t("ui.proxyStats.retries"),dataIndex:"retries",key:"retries"},{title:t("ui.proxyStats.downstreamAvailability"),dataIndex:"availabilityPct",key:"avail",render:v=>`${v}%`}]})}),data.byProfile&&data.byProfile.length>0&&jsxRuntimeExports.jsx(Card,{title:t("ui.proxyStats.byProfile"),className:styles$1_section,children:jsxRuntimeExports.jsx(ForwardTable,{dataSource:data.byProfile,rowKey:"profile_id",size:"small",pagination:!1,className:styles$1_table,columns:[{title:t("ui.proxyStats.byProfile"),dataIndex:"profile_name",key:"profile_name"},{title:t("ui.proxyStats.totalRequests"),dataIndex:"requests",key:"requests"},{title:t("ui.proxyStats.retries"),dataIndex:"retries",key:"retries"},{title:t("ui.proxyStats.upstreamAvailability"),dataIndex:"upstreamAvailabilityPct",key:"upAvail",render:v=>`${v}%`},{title:t("ui.proxyStats.downstreamAvailability"),dataIndex:"availabilityPct",key:"dsAvail",render:v=>`${v}%`},{title:t("ui.proxyStats.p95Duration"),dataIndex:"p95Ms",key:"p95",render:fmtMs}]})}),jsxRuntimeExports.jsx(Card,{title:t("ui.proxyStats.recentErrors"),className:styles$1_section,children:jsxRuntimeExports.jsx(ForwardTable,{dataSource:recentRecords,rowKey:"ts",size:"small",pagination:{pageSize:20,size:"small"},className:styles$1_table,scroll:{x:"max-content"},columns:[{title:t("ui.proxyStats.colTime"),dataIndex:"ts",key:"ts",width:180,ellipsis:!0,render:v=>v?new Date(v).toLocaleString():"-"},{title:t("ui.proxyStats.colMethod"),dataIndex:"method",key:"method",width:70},{title:t("ui.proxyStats.colPath"),dataIndex:"path",key:"path",ellipsis:!0},{title:t("ui.proxyStats.colModel"),dataIndex:"model",key:"model",ellipsis:!0},{title:t("ui.proxyStats.colStatus"),dataIndex:"final_status",key:"status",width:70,render:v=>jsxRuntimeExports.jsx(Tag,{color:statusColor(v),children:v||"-"})},{title:t("ui.proxyStats.attempts"),dataIndex:"attempts",key:"attempts",width:80},{title:t("ui.proxyStats.retries"),dataIndex:"retries",key:"retries",width:80},{title:t("ui.proxyStats.durationAnalysis"),dataIndex:"duration_ms",key:"dur",width:100,render:fmtMs},{title:t("ui.proxyStats.retryCodes"),dataIndex:"retry_codes",key:"rc",width:120,render:v=>v&&v.length?v.map(c=>jsxRuntimeExports.jsx(Tag,{color:statusColor(c),children:c},c)):"-"}]})})]})}function ProxyStatsHeader({onRefresh:onRefresh,autoRefresh:autoRefresh,setAutoRefresh:setAutoRefresh}){return jsxRuntimeExports.jsxs("div",{className:styles$1_header,children:[jsxRuntimeExports.jsx(Space,{children:jsxRuntimeExports.jsx("h2",{className:styles$1_title,children:t("ui.proxyStats.title")})}),jsxRuntimeExports.jsxs(Space,{children:[jsxRuntimeExports.jsx("span",{children:t("ui.proxyStats.autoRefresh")}),jsxRuntimeExports.jsx(Switch,{checked:autoRefresh,onChange:setAutoRefresh,size:"small","aria-label":t("ui.proxyStats.autoRefresh")}),jsxRuntimeExports.jsx(Button,{icon:jsxRuntimeExports.jsx(RefIcon$2,{}),onClick:onRefresh,children:t("ui.proxyStats.refresh")})]})]})}const styles_container="_container_1idls_1",styles_leftPanel="_leftPanel_1idls_8",styles_leftHeader="_leftHeader_1idls_19",styles_panelTitle="_panelTitle_1idls_23",styles_rightPanel="_rightPanel_1idls_30";function UnifiedProxyRetryPage({retryConfig:retryConfig,retryDefaults:retryDefaults,onRetryConfigChange:onRetryConfigChange}){return jsxRuntimeExports.jsxs("div",{className:styles_container,children:[jsxRuntimeExports.jsxs("div",{className:styles_leftPanel,children:[jsxRuntimeExports.jsx("div",{className:styles_leftHeader,children:jsxRuntimeExports.jsx("h3",{className:styles_panelTitle,children:t("ui.retryConfig.title")})}),jsxRuntimeExports.jsx(RetryConfigForm,{config:retryConfig,defaults:retryDefaults,onSave:onRetryConfigChange,embedded:!0})]}),jsxRuntimeExports.jsx("div",{className:styles_rightPanel,children:jsxRuntimeExports.jsx(ProxyStatsPage,{embedded:!0})})]})}export{UnifiedProxyRetryPage as default};
|
|
1
|
+
import{j as jsxRuntimeExports}from"./vendor-codemirror-_NbrtdQc.js";import{a as reactExports,I as Icon,b as _extends,S as Spin,E as Empty,C as Card,i as Statistic,j as Space,T as Tag,F as ForwardTable,k as Switch,B as Button,l as RefIcon$2}from"./vendor-antd-DeqwrDxf.js";import{R as RetryConfigForm}from"./App-3VM471BO.js";import{a as apiUrl,t}from"./index-BjNLFJ0z.js";import{r as reportSwallowed}from"./seqResourceLoaders-CDRtUSxI.js";import"./vendor-mdxeditor-DG0Nyxw5.js";import"./vendor-qrcode-B3HN--HO.js";import"./vendor-xterm-DckPrCx1.js";import"./vendor-markdown-DOJHsAxX.js";import"./vendor-highlight-IFTJ9nxW.js";import"./vendor-virtuoso-BvrezPQx.js";var CheckCircleOutlined$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"check-circle",theme:"outlined"},CheckCircleOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:CheckCircleOutlined$1}))},RefIcon$1=reactExports.forwardRef(CheckCircleOutlined),CloseCircleOutlined$1={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm0 76c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm128.01 198.83c.03 0 .05.01.09.06l45.02 45.01a.2.2 0 01.05.09.12.12 0 010 .07c0 .02-.01.04-.05.08L557.25 512l127.87 127.86a.27.27 0 01.05.06v.02a.12.12 0 010 .07c0 .03-.01.05-.05.09l-45.02 45.02a.2.2 0 01-.09.05.12.12 0 01-.07 0c-.02 0-.04-.01-.08-.05L512 557.25 384.14 685.12c-.04.04-.06.05-.08.05a.12.12 0 01-.07 0c-.03 0-.05-.01-.09-.05l-45.02-45.02a.2.2 0 01-.05-.09.12.12 0 010-.07c0-.02.01-.04.06-.08L466.75 512 338.88 384.14a.27.27 0 01-.05-.06l-.01-.02a.12.12 0 010-.07c0-.03.01-.05.05-.09l45.02-45.02a.2.2 0 01.09-.05.12.12 0 01.07 0c.02 0 .04.01.08.06L512 466.75l127.86-127.86c.04-.05.06-.06.08-.06a.12.12 0 01.07 0z"}}]},name:"close-circle",theme:"outlined"},CloseCircleOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:CloseCircleOutlined$1}))},RefIcon=reactExports.forwardRef(CloseCircleOutlined);const styles$1_page="_page_1n4b9_1",styles$1_embedded="_embedded_1n4b9_9",styles$1_center="_center_1n4b9_14",styles$1_header="_header_1n4b9_21",styles$1_title="_title_1n4b9_30",styles$1_cardRow="_cardRow_1n4b9_36",styles$1_statCard="_statCard_1n4b9_43",styles$1_section="_section_1n4b9_48",styles$1_table="_table_1n4b9_52",styles$1_streakRow="_streakRow_1n4b9_56",styles$1_codeTags="_codeTags_1n4b9_63",styles$1_topRow="_topRow_1n4b9_71";function fmtMs(ms){return!ms||ms<=0?"-":ms<1e3?`${Math.round(ms)} ms`:`${(ms/1e3).toFixed(2)} s`}function statusColor(status){return 0===status?"default":status<400?"green":status<500?"orange":"red"}function ProxyStatsPage({embedded:embedded2}){const[data,setData]=reactExports.useState(null),[loading,setLoading]=reactExports.useState(!0),[autoRefresh,setAutoRefresh]=reactExports.useState(!0),timerRef=reactExports.useRef(null),fetchData=reactExports.useCallback(()=>{setLoading(!0),fetch(apiUrl("/api/proxy-stats")).then(res=>{if(!res.ok)throw new Error(`HTTP ${res.status}`);return res.json()}).then(d=>{setData(d.proxyStats),setLoading(!1)}).catch(err=>{reportSwallowed("proxyStats.fetch",err),setLoading(!1)})},[]);if(reactExports.useEffect(()=>{fetchData()},[fetchData]),reactExports.useEffect(()=>{if(autoRefresh)return timerRef.current=setInterval(fetchData,15e3),()=>clearInterval(timerRef.current)},[autoRefresh,fetchData]),loading&&!data)return jsxRuntimeExports.jsx("div",{className:styles$1_center,children:jsxRuntimeExports.jsx(Spin,{size:"large"})});if(!data||!data.summary||0===data.summary.totalRequests)return jsxRuntimeExports.jsxs("div",{className:embedded2?styles$1_embedded:styles$1_page,children:[!embedded2&&jsxRuntimeExports.jsx(ProxyStatsHeader,{onRefresh:fetchData,autoRefresh:autoRefresh,setAutoRefresh:setAutoRefresh}),jsxRuntimeExports.jsx("div",{className:styles$1_center,children:jsxRuntimeExports.jsx(Empty,{description:t("ui.proxyStats.noData")})})]});const s=data.summary,recentRecords=(data.recentRecords||[]).filter(r=>(Number(r.final_status)||0)>=400||(Number(r.retries)||0)>0||0===Number(r.final_status));return jsxRuntimeExports.jsxs("div",{className:embedded2?styles$1_embedded:styles$1_page,children:[!embedded2&&jsxRuntimeExports.jsx(ProxyStatsHeader,{onRefresh:fetchData,autoRefresh:autoRefresh,setAutoRefresh:setAutoRefresh}),jsxRuntimeExports.jsxs("div",{className:styles$1_cardRow,children:[jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.totalRequests"),value:s.totalRequests})}),jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.totalRetries"),value:s.totalRetries})}),jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.upstreamAvailability"),value:s.upstreamAvailabilityPct,suffix:"%"})}),jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.downstreamAvailability"),value:s.downstreamAvailabilityPct,suffix:"%"})}),jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.failedRequests"),value:s.totalFailed,valueStyle:{color:"#cf1322"}})}),jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.p95Duration"),value:fmtMs(s.p95Ms)})})]}),jsxRuntimeExports.jsxs(Card,{title:t("ui.proxyStats.availabilityAnalysis"),className:styles$1_section,children:[jsxRuntimeExports.jsxs("div",{className:styles$1_streakRow,children:[jsxRuntimeExports.jsxs(Space,{children:[jsxRuntimeExports.jsxs("span",{children:[t("ui.proxyStats.currentStreak"),":"]}),jsxRuntimeExports.jsxs(Tag,{icon:"success"===s.currentStreakType?jsxRuntimeExports.jsx(RefIcon$1,{}):jsxRuntimeExports.jsx(RefIcon,{}),color:"success"===s.currentStreakType?"green":"red",children:["success"===s.currentStreakType?t("ui.proxyStats.success"):t("ui.proxyStats.failure")," × ",s.currentStreakCount]})]}),jsxRuntimeExports.jsxs(Space,{children:[jsxRuntimeExports.jsxs("span",{children:[t("ui.proxyStats.worstFailureStreak"),":"]}),jsxRuntimeExports.jsx(Tag,{color:"red",children:s.worstFailureStreak})]})]}),jsxRuntimeExports.jsx(ForwardTable,{dataSource:data.byModel||[],rowKey:"model",size:"small",pagination:!1,className:styles$1_table,columns:[{title:t("ui.proxyStats.byModel"),dataIndex:"model",key:"model"},{title:t("ui.proxyStats.totalRequests"),dataIndex:"requests",key:"requests"},{title:t("ui.proxyStats.retries"),dataIndex:"retries",key:"retries"},{title:t("ui.proxyStats.upstreamAvailability"),dataIndex:"upstreamAvailabilityPct",key:"upAvail",render:v=>`${v}%`},{title:t("ui.proxyStats.downstreamAvailability"),dataIndex:"availabilityPct",key:"dsAvail",render:v=>`${v}%`},{title:t("ui.proxyStats.p95Duration"),dataIndex:"p95Ms",key:"p95",render:fmtMs}]})]}),jsxRuntimeExports.jsxs(Card,{title:t("ui.proxyStats.retryDistribution"),className:styles$1_section,children:[jsxRuntimeExports.jsx(ForwardTable,{dataSource:data.retryDistribution||[],rowKey:"retries",size:"small",pagination:!1,className:styles$1_table,columns:[{title:t("ui.proxyStats.retries"),dataIndex:"retries",key:"retries"},{title:t("ui.proxyStats.totalRequests"),dataIndex:"count",key:"count"}]}),jsxRuntimeExports.jsxs("div",{className:styles$1_codeTags,children:[jsxRuntimeExports.jsxs("span",{children:[t("ui.proxyStats.retryCodes"),":"]}),jsxRuntimeExports.jsx(Space,{wrap:!0,children:(data.retryCodes||[]).map(c=>jsxRuntimeExports.jsxs(Tag,{color:statusColor(c.code),children:[c.code," × ",c.count]},c.code))})]})]}),jsxRuntimeExports.jsxs(Card,{title:t("ui.proxyStats.durationAnalysis"),className:styles$1_section,children:[jsxRuntimeExports.jsxs("div",{className:styles$1_cardRow,children:[jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.p50Duration"),value:fmtMs(s.p50Ms)})}),jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.p95Duration"),value:fmtMs(s.p95Ms)})}),jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.p99Duration"),value:fmtMs(s.p99Ms)})}),jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.maxDuration"),value:fmtMs(s.maxMs)})}),jsxRuntimeExports.jsx(Card,{className:styles$1_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.avgDuration"),value:fmtMs(s.avgMs)})})]}),jsxRuntimeExports.jsxs("div",{className:styles$1_topRow,children:[jsxRuntimeExports.jsx(ForwardTable,{title:()=>t("ui.proxyStats.slowest"),dataSource:data.slowest?[data.slowest]:[],rowKey:"ts",size:"small",pagination:!1,className:styles$1_table,columns:[{title:t("ui.proxyStats.colPath"),dataIndex:"path",key:"path",ellipsis:!0},{title:t("ui.proxyStats.colModel"),dataIndex:"model",key:"model",ellipsis:!0},{title:t("ui.proxyStats.attempts"),dataIndex:"attempts",key:"attempts"},{title:t("ui.proxyStats.durationAnalysis"),dataIndex:"duration_ms",key:"dur",render:fmtMs}]}),jsxRuntimeExports.jsx(ForwardTable,{title:()=>t("ui.proxyStats.fastest"),dataSource:data.fastest?[data.fastest]:[],rowKey:"ts",size:"small",pagination:!1,className:styles$1_table,columns:[{title:t("ui.proxyStats.colPath"),dataIndex:"path",key:"path",ellipsis:!0},{title:t("ui.proxyStats.colModel"),dataIndex:"model",key:"model",ellipsis:!0},{title:t("ui.proxyStats.attempts"),dataIndex:"attempts",key:"attempts"},{title:t("ui.proxyStats.durationAnalysis"),dataIndex:"duration_ms",key:"dur",render:fmtMs}]})]})]}),data.byPath&&data.byPath.length>0&&jsxRuntimeExports.jsx(Card,{title:t("ui.proxyStats.byPath"),className:styles$1_section,children:jsxRuntimeExports.jsx(ForwardTable,{dataSource:data.byPath,rowKey:"path",size:"small",pagination:!1,className:styles$1_table,columns:[{title:t("ui.proxyStats.colPath"),dataIndex:"path",key:"path",ellipsis:!0},{title:t("ui.proxyStats.totalRequests"),dataIndex:"requests",key:"requests"},{title:t("ui.proxyStats.retries"),dataIndex:"retries",key:"retries"},{title:t("ui.proxyStats.downstreamAvailability"),dataIndex:"availabilityPct",key:"avail",render:v=>`${v}%`}]})}),data.byProfile&&data.byProfile.length>0&&jsxRuntimeExports.jsx(Card,{title:t("ui.proxyStats.byProfile"),className:styles$1_section,children:jsxRuntimeExports.jsx(ForwardTable,{dataSource:data.byProfile,rowKey:"profile_id",size:"small",pagination:!1,className:styles$1_table,columns:[{title:t("ui.proxyStats.byProfile"),dataIndex:"profile_name",key:"profile_name"},{title:t("ui.proxyStats.totalRequests"),dataIndex:"requests",key:"requests"},{title:t("ui.proxyStats.retries"),dataIndex:"retries",key:"retries"},{title:t("ui.proxyStats.upstreamAvailability"),dataIndex:"upstreamAvailabilityPct",key:"upAvail",render:v=>`${v}%`},{title:t("ui.proxyStats.downstreamAvailability"),dataIndex:"availabilityPct",key:"dsAvail",render:v=>`${v}%`},{title:t("ui.proxyStats.p95Duration"),dataIndex:"p95Ms",key:"p95",render:fmtMs}]})}),jsxRuntimeExports.jsx(Card,{title:t("ui.proxyStats.recentErrors"),className:styles$1_section,children:jsxRuntimeExports.jsx(ForwardTable,{dataSource:recentRecords,rowKey:"ts",size:"small",pagination:{pageSize:20,size:"small"},className:styles$1_table,scroll:{x:"max-content"},columns:[{title:t("ui.proxyStats.colTime"),dataIndex:"ts",key:"ts",width:180,ellipsis:!0,render:v=>v?new Date(v).toLocaleString():"-"},{title:t("ui.proxyStats.colMethod"),dataIndex:"method",key:"method",width:70},{title:t("ui.proxyStats.colPath"),dataIndex:"path",key:"path",ellipsis:!0},{title:t("ui.proxyStats.colModel"),dataIndex:"model",key:"model",ellipsis:!0},{title:t("ui.proxyStats.colStatus"),dataIndex:"final_status",key:"status",width:70,render:v=>jsxRuntimeExports.jsx(Tag,{color:statusColor(v),children:v||"-"})},{title:t("ui.proxyStats.attempts"),dataIndex:"attempts",key:"attempts",width:80},{title:t("ui.proxyStats.retries"),dataIndex:"retries",key:"retries",width:80},{title:t("ui.proxyStats.durationAnalysis"),dataIndex:"duration_ms",key:"dur",width:100,render:fmtMs},{title:t("ui.proxyStats.retryCodes"),dataIndex:"retry_codes",key:"rc",width:120,render:v=>v&&v.length?v.map(c=>jsxRuntimeExports.jsx(Tag,{color:statusColor(c),children:c},c)):"-"}]})})]})}function ProxyStatsHeader({onRefresh:onRefresh,autoRefresh:autoRefresh,setAutoRefresh:setAutoRefresh}){return jsxRuntimeExports.jsxs("div",{className:styles$1_header,children:[jsxRuntimeExports.jsx(Space,{children:jsxRuntimeExports.jsx("h2",{className:styles$1_title,children:t("ui.proxyStats.title")})}),jsxRuntimeExports.jsxs(Space,{children:[jsxRuntimeExports.jsx("span",{children:t("ui.proxyStats.autoRefresh")}),jsxRuntimeExports.jsx(Switch,{checked:autoRefresh,onChange:setAutoRefresh,size:"small","aria-label":t("ui.proxyStats.autoRefresh")}),jsxRuntimeExports.jsx(Button,{icon:jsxRuntimeExports.jsx(RefIcon$2,{}),onClick:onRefresh,children:t("ui.proxyStats.refresh")})]})]})}const styles_container="_container_1idls_1",styles_leftPanel="_leftPanel_1idls_8",styles_leftHeader="_leftHeader_1idls_19",styles_panelTitle="_panelTitle_1idls_23",styles_rightPanel="_rightPanel_1idls_30";function UnifiedProxyRetryPage({retryConfig:retryConfig,retryDefaults:retryDefaults,onRetryConfigChange:onRetryConfigChange}){return jsxRuntimeExports.jsxs("div",{className:styles_container,children:[jsxRuntimeExports.jsxs("div",{className:styles_leftPanel,children:[jsxRuntimeExports.jsx("div",{className:styles_leftHeader,children:jsxRuntimeExports.jsx("h3",{className:styles_panelTitle,children:t("ui.retryConfig.title")})}),jsxRuntimeExports.jsx(RetryConfigForm,{config:retryConfig,defaults:retryDefaults,onSave:onRetryConfigChange,embedded:!0})]}),jsxRuntimeExports.jsx("div",{className:styles_rightPanel,children:jsxRuntimeExports.jsx(ProxyStatsPage,{embedded:!0})})]})}export{UnifiedProxyRetryPage as default};
|