import{a as zt}from"./element-plus-CqiD73Lu.js";import{r as I,aP as Kt,o as J,V as St,x as d,y as n,z as e,L as b,K as y,al as de,aT as Xe,aV as Mt,aq as A,aY as yt,C as S,O as U,c as Re,P as v,q as pt,I as $e,an as Z,Q as fe,ac as we,a5 as ft,R as ke,B as et,u as ye,J as Ze,Y as dt}from"./vue-vendor-Bsazo-x0.js";import{c as z,s as K,_ as ct}from"./index-ClbrlfkC.js";import{C as Tt}from"./ConfirmModal-Cr_OZGcD.js";import{C as mt}from"./CustomDropdown-CaXjbZnR.js";import"./vendor-Dr8jvgFu.js";const ut=I(!1),Ct=I({title:"",message:"",confirmText:"继续",cancelText:"取消"}),Pe=I(null);function Vt(){return{showConfirmModal:ut,confirmOptions:Ct,showConfirm:(X,T,L="继续",G="取消")=>new Promise(g=>{Ct.value={title:X,message:T,confirmText:L,cancelText:G},Pe.value=g,ut.value=!0}),handleConfirm:()=>{ut.value=!1,Pe.value&&(Pe.value(!0),Pe.value=null)},handleCancel:()=>{ut.value=!1,Pe.value&&(Pe.value(!1),Pe.value=null)}}}const Rt=Kt("accounts",()=>{const ne=I([]),ue=I([]),x=I([]),X=I([]),T=I([]),L=I([]),G=I([]),g=I(!1),c=I(null),M=I(""),k=I("asc"),j=async()=>{g.value=!0,c.value=null;try{const m=await z.get("/admin/claude-accounts");if(m.success)ne.value=m.data||[];else throw new Error(m.message||"获取Claude账户失败")}catch(m){throw c.value=m.message,m}finally{g.value=!1}},E=async()=>{g.value=!0,c.value=null;try{const m=await z.get("/admin/claude-console-accounts");if(m.success)ue.value=m.data||[];else throw new Error(m.message||"获取Claude Console账户失败")}catch(m){throw c.value=m.message,m}finally{g.value=!1}},D=async()=>{g.value=!0,c.value=null;try{const m=await z.get("/admin/bedrock-accounts");if(m.success)x.value=m.data||[];else throw new Error(m.message||"获取Bedrock账户失败")}catch(m){throw c.value=m.message,m}finally{g.value=!1}},Q=async()=>{g.value=!0,c.value=null;try{const m=await z.get("/admin/gemini-accounts");if(m.success)X.value=m.data||[];else throw new Error(m.message||"获取Gemini账户失败")}catch(m){throw c.value=m.message,m}finally{g.value=!1}},Y=async()=>{g.value=!0,c.value=null;try{const m=await z.get("/admin/openai-accounts");if(m.success)T.value=m.data||[];else throw new Error(m.message||"获取OpenAI账户失败")}catch(m){throw c.value=m.message,m}finally{g.value=!1}},N=async()=>{g.value=!0,c.value=null;try{const m=await z.get("/admin/azure-openai-accounts");if(m.success)L.value=m.data||[];else throw new Error(m.message||"获取Azure OpenAI账户失败")}catch(m){throw c.value=m.message,m}finally{g.value=!1}},u=async()=>{g.value=!0,c.value=null;try{const m=await z.get("/admin/openai-responses-accounts");if(m.success)G.value=m.data||[];else throw new Error(m.message||"获取OpenAI-Responses账户失败")}catch(m){throw c.value=m.message,m}finally{g.value=!1}};return{claudeAccounts:ne,claudeConsoleAccounts:ue,bedrockAccounts:x,geminiAccounts:X,openaiAccounts:T,azureOpenaiAccounts:L,openaiResponsesAccounts:G,loading:g,error:c,sortBy:M,sortOrder:k,fetchClaudeAccounts:j,fetchClaudeConsoleAccounts:E,fetchBedrockAccounts:D,fetchGeminiAccounts:Q,fetchOpenAIAccounts:Y,fetchAzureOpenAIAccounts:N,fetchOpenAIResponsesAccounts:u,fetchAllAccounts:async()=>{g.value=!0,c.value=null;try{await Promise.all([j(),E(),D(),Q(),Y(),N(),u()])}catch(m){throw c.value=m.message,m}finally{g.value=!1}},createClaudeAccount:async m=>{g.value=!0,c.value=null;try{const p=await z.post("/admin/claude-accounts",m);if(p.success)return await j(),p.data;throw new Error(p.message||"创建Claude账户失败")}catch(p){throw c.value=p.message,p}finally{g.value=!1}},createClaudeConsoleAccount:async m=>{g.value=!0,c.value=null;try{const p=await z.post("/admin/claude-console-accounts",m);if(p.success)return await E(),p.data;throw new Error(p.message||"创建Claude Console账户失败")}catch(p){throw c.value=p.message,p}finally{g.value=!1}},createBedrockAccount:async m=>{g.value=!0,c.value=null;try{const p=await z.post("/admin/bedrock-accounts",m);if(p.success)return await D(),p.data;throw new Error(p.message||"创建Bedrock账户失败")}catch(p){throw c.value=p.message,p}finally{g.value=!1}},createGeminiAccount:async m=>{g.value=!0,c.value=null;try{const p=await z.post("/admin/gemini-accounts",m);if(p.success)return await Q(),p.data;throw new Error(p.message||"创建Gemini账户失败")}catch(p){throw c.value=p.message,p}finally{g.value=!1}},createOpenAIAccount:async m=>{g.value=!0,c.value=null;try{const p=await z.post("/admin/openai-accounts",m);if(p.success)return await Y(),p.data;throw new Error(p.message||"创建OpenAI账户失败")}catch(p){throw c.value=p.message,p}finally{g.value=!1}},createAzureOpenAIAccount:async m=>{g.value=!0,c.value=null;try{const p=await z.post("/admin/azure-openai-accounts",m);if(p.success)return await N(),p.data;throw new Error(p.message||"创建Azure OpenAI账户失败")}catch(p){throw c.value=p.message,p}finally{g.value=!1}},createOpenAIResponsesAccount:async m=>{g.value=!0,c.value=null;try{const p=await z.post("/admin/openai-responses-accounts",m);if(p.success)return await u(),p.data;throw new Error(p.message||"创建OpenAI-Responses账户失败")}catch(p){throw c.value=p.message,p}finally{g.value=!1}},updateClaudeAccount:async(m,p)=>{g.value=!0,c.value=null;try{const C=await z.put(`/admin/claude-accounts/${m}`,p);if(C.success)return await j(),C;throw new Error(C.message||"更新Claude账户失败")}catch(C){throw c.value=C.message,C}finally{g.value=!1}},updateClaudeConsoleAccount:async(m,p)=>{g.value=!0,c.value=null;try{const C=await z.put(`/admin/claude-console-accounts/${m}`,p);if(C.success)return await E(),C;throw new Error(C.message||"更新Claude Console账户失败")}catch(C){throw c.value=C.message,C}finally{g.value=!1}},updateBedrockAccount:async(m,p)=>{g.value=!0,c.value=null;try{const C=await z.put(`/admin/bedrock-accounts/${m}`,p);if(C.success)return await D(),C;throw new Error(C.message||"更新Bedrock账户失败")}catch(C){throw c.value=C.message,C}finally{g.value=!1}},updateGeminiAccount:async(m,p)=>{g.value=!0,c.value=null;try{const C=await z.put(`/admin/gemini-accounts/${m}`,p);if(C.success)return await Q(),C;throw new Error(C.message||"更新Gemini账户失败")}catch(C){throw c.value=C.message,C}finally{g.value=!1}},updateOpenAIAccount:async(m,p)=>{g.value=!0,c.value=null;try{const C=await z.put(`/admin/openai-accounts/${m}`,p);if(C.success)return await Y(),C;throw new Error(C.message||"更新OpenAI账户失败")}catch(C){throw c.value=C.message,C}finally{g.value=!1}},updateAzureOpenAIAccount:async(m,p)=>{g.value=!0,c.value=null;try{const C=await z.put(`/admin/azure-openai-accounts/${m}`,p);if(C.success)return await N(),C;throw new Error(C.message||"更新Azure OpenAI账户失败")}catch(C){throw c.value=C.message,C}finally{g.value=!1}},updateOpenAIResponsesAccount:async(m,p)=>{g.value=!0,c.value=null;try{const C=await z.put(`/admin/openai-responses-accounts/${m}`,p);if(C.success)return await u(),C;throw new Error(C.message||"更新OpenAI-Responses账户失败")}catch(C){throw c.value=C.message,C}finally{g.value=!1}},toggleAccount:async(m,p)=>{g.value=!0,c.value=null;try{let C;m==="claude"?C=`/admin/claude-accounts/${p}/toggle`:m==="claude-console"?C=`/admin/claude-console-accounts/${p}/toggle`:m==="bedrock"?C=`/admin/bedrock-accounts/${p}/toggle`:m==="gemini"?C=`/admin/gemini-accounts/${p}/toggle`:m==="openai"?C=`/admin/openai-accounts/${p}/toggle`:m==="azure_openai"?C=`/admin/azure-openai-accounts/${p}/toggle`:m==="openai-responses"?C=`/admin/openai-responses-accounts/${p}/toggle`:C=`/admin/openai-accounts/${p}/toggle`;const ce=await z.put(C);if(ce.success)return m==="claude"?await j():m==="claude-console"?await E():m==="bedrock"?await D():m==="gemini"?await Q():m==="openai"?await Y():m==="azure_openai"?await N():m==="openai-responses"?await u():await Y(),ce;throw new Error(ce.message||"切换状态失败")}catch(C){throw c.value=C.message,C}finally{g.value=!1}},deleteAccount:async(m,p)=>{g.value=!0,c.value=null;try{let C;m==="claude"?C=`/admin/claude-accounts/${p}`:m==="claude-console"?C=`/admin/claude-console-accounts/${p}`:m==="bedrock"?C=`/admin/bedrock-accounts/${p}`:m==="gemini"?C=`/admin/gemini-accounts/${p}`:m==="openai"?C=`/admin/openai-accounts/${p}`:m==="azure_openai"?C=`/admin/azure-openai-accounts/${p}`:m==="openai-responses"?C=`/admin/openai-responses-accounts/${p}`:C=`/admin/openai-accounts/${p}`;const ce=await z.delete(C);if(ce.success)return m==="claude"?await j():m==="claude-console"?await E():m==="bedrock"?await D():m==="gemini"?await Q():m==="openai"?await Y():m==="azure_openai"?await N():m==="openai-responses"?await u():await Y(),ce;throw new Error(ce.message||"删除失败")}catch(C){throw c.value=C.message,C}finally{g.value=!1}},refreshClaudeToken:async m=>{g.value=!0,c.value=null;try{const p=await z.post(`/admin/claude-accounts/${m}/refresh`);if(p.success)return await j(),p;throw new Error(p.message||"Token刷新失败")}catch(p){throw c.value=p.message,p}finally{g.value=!1}},generateClaudeAuthUrl:async m=>{try{const p=await z.post("/admin/claude-accounts/generate-auth-url",m);if(p.success)return p.data;throw new Error(p.message||"生成授权URL失败")}catch(p){throw c.value=p.message,p}},exchangeClaudeCode:async m=>{try{const p=await z.post("/admin/claude-accounts/exchange-code",m);if(p.success)return p.data;throw new Error(p.message||"交换授权码失败")}catch(p){throw c.value=p.message,p}},generateClaudeSetupTokenUrl:async m=>{try{const p=await z.post("/admin/claude-accounts/generate-setup-token-url",m);if(p.success)return p.data;throw new Error(p.message||"生成Setup Token URL失败")}catch(p){throw c.value=p.message,p}},exchangeClaudeSetupTokenCode:async m=>{try{const p=await z.post("/admin/claude-accounts/exchange-setup-token-code",m);if(p.success)return p.data;throw new Error(p.message||"交换Setup Token授权码失败")}catch(p){throw c.value=p.message,p}},generateGeminiAuthUrl:async m=>{try{const p=await z.post("/admin/gemini-accounts/generate-auth-url",m);if(p.success)return p.data;throw new Error(p.message||"生成授权URL失败")}catch(p){throw c.value=p.message,p}},exchangeGeminiCode:async m=>{try{const p=await z.post("/admin/gemini-accounts/exchange-code",m);if(p.success)return p.data;throw new Error(p.message||"交换授权码失败")}catch(p){throw c.value=p.message,p}},generateOpenAIAuthUrl:async m=>{try{const p=await z.post("/admin/openai-accounts/generate-auth-url",m);if(p.success)return p.data;throw new Error(p.message||"生成授权URL失败")}catch(p){throw c.value=p.message,p}},exchangeOpenAICode:async m=>{try{const p=await z.post("/admin/openai-accounts/exchange-code",m);if(p.success)return p.data;throw new Error(p.message||"交换授权码失败")}catch(p){throw c.value=p.message,p}},sortAccounts:m=>{M.value===m?k.value=k.value==="asc"?"desc":"asc":(M.value=m,k.value="asc")},reset:()=>{ne.value=[],ue.value=[],x.value=[],X.value=[],T.value=[],L.value=[],G.value=[],g.value=!1,c.value=null,M.value="",k.value="asc"}}}),Pt={class:"space-y-4"},Ot={class:"flex items-center justify-between"},Lt={class:"flex cursor-pointer items-center"},jt={key:0,class:"space-y-4 rounded-lg border border-gray-200 bg-gray-50 p-4 dark:border-gray-600 dark:bg-gray-800"},Dt={class:"grid grid-cols-2 gap-4"},Et={class:"space-y-4"},Wt={class:"flex items-center"},qt={key:0,class:"grid grid-cols-2 gap-4"},Gt={class:"relative"},Nt=["type"],xt={__name:"ProxyConfig",props:{modelValue:{type:Object,default:()=>({enabled:!1,type:"socks5",host:"",port:"",username:"",password:""})}},emits:["update:modelValue"],setup(ne,{emit:ue}){const x=ne,X=ue,T=I({...x.modelValue}),L=I(!!(T.value.username||T.value.password)),G=I(!1);J(()=>x.modelValue,M=>{JSON.stringify(M)!==JSON.stringify(T.value)&&(T.value={...M},L.value=!!(M.username||M.password))},{deep:!0}),J(()=>T.value.enabled,()=>{c()}),J(()=>T.value.type,()=>{c()}),J(()=>T.value.host,()=>{c()}),J(()=>T.value.port,()=>{c()}),J(()=>T.value.username,()=>{c()}),J(()=>T.value.password,()=>{c()}),J(L,M=>{M||(T.value.username="",T.value.password="",c())});let g=null;function c(){g&&clearTimeout(g),g=setTimeout(()=>{const M={...T.value};L.value||(M.username="",M.password=""),X("update:modelValue",M)},100)}return St(()=>{g&&clearTimeout(g)}),(M,k)=>(n(),d("div",Pt,[e("div",Ot,[k[9]||(k[9]=e("h4",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"代理设置 (可选)",-1)),e("label",Lt,[y(e("input",{"onUpdate:modelValue":k[0]||(k[0]=j=>T.value.enabled=j),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[de,T.value.enabled]]),k[8]||(k[8]=e("span",{class:"ml-2 text-sm text-gray-700 dark:text-gray-300"},"启用代理",-1))])]),T.value.enabled?(n(),d("div",jt,[k[17]||(k[17]=Xe('
配置代理以访问受限的网络资源。支持 SOCKS5 和 HTTP 代理。
请确保代理服务器稳定可用,否则会影响账户的正常使用。
',1)),e("div",null,[k[11]||(k[11]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"代理类型",-1)),y(e("select",{"onUpdate:modelValue":k[1]||(k[1]=j=>T.value.type=j),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200"},k[10]||(k[10]=[e("option",{value:"socks5"},"SOCKS5",-1),e("option",{value:"http"},"HTTP",-1),e("option",{value:"https"},"HTTPS",-1)]),512),[[Mt,T.value.type]])]),e("div",Dt,[e("div",null,[k[12]||(k[12]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"主机地址",-1)),y(e("input",{"onUpdate:modelValue":k[2]||(k[2]=j=>T.value.host=j),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如: 192.168.1.100",type:"text"},null,512),[[A,T.value.host]])]),e("div",null,[k[13]||(k[13]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"端口",-1)),y(e("input",{"onUpdate:modelValue":k[3]||(k[3]=j=>T.value.port=j),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如: 1080",type:"number"},null,512),[[A,T.value.port]])])]),e("div",Et,[e("div",Wt,[y(e("input",{id:"proxyAuth","onUpdate:modelValue":k[4]||(k[4]=j=>L.value=j),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[de,L.value]]),k[14]||(k[14]=e("label",{class:"ml-2 cursor-pointer text-sm text-gray-700 dark:text-gray-300",for:"proxyAuth"}," 需要身份验证 ",-1))]),L.value?(n(),d("div",qt,[e("div",null,[k[15]||(k[15]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"用户名",-1)),y(e("input",{"onUpdate:modelValue":k[5]||(k[5]=j=>T.value.username=j),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"代理用户名",type:"text"},null,512),[[A,T.value.username]])]),e("div",null,[k[16]||(k[16]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"密码",-1)),e("div",Gt,[y(e("input",{"onUpdate:modelValue":k[6]||(k[6]=j=>T.value.password=j),class:"form-input w-full border-gray-300 pr-10 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"代理密码",type:G.value?"text":"password"},null,8,Nt),[[yt,T.value.password]]),e("button",{class:"absolute inset-y-0 right-0 flex items-center pr-3 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-400",type:"button",onClick:k[7]||(k[7]=j=>G.value=!G.value)},[e("i",{class:S(G.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])])])])):b("",!0)]),k[18]||(k[18]=e("div",{class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-700 dark:bg-blue-900/30"},[e("p",{class:"text-xs text-blue-700 dark:text-blue-300"},[e("i",{class:"fas fa-info-circle mr-1"}),e("strong",null,"提示:"),U("代理设置将用于所有与此账户相关的API请求。请确保代理服务器支持HTTPS流量转发。 ")])],-1))])):b("",!0)]))}},Ft={class:"space-y-6"},Qt={key:0},_t={class:"rounded-lg border border-blue-200 bg-blue-50 p-6 dark:border-blue-700 dark:bg-blue-900/30"},Bt={class:"flex items-start gap-4"},Ht={class:"flex-1"},Jt={class:"space-y-4"},Yt={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},Zt={class:"flex items-start gap-3"},Xt={class:"flex-1"},es=["disabled"],ts={key:0,class:"fas fa-link mr-2"},ss={key:1,class:"loading-spinner mr-2"},as={key:1,class:"space-y-3"},rs={class:"flex items-center gap-2"},ls=["value"],os={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},ns={class:"flex items-start gap-3"},is={class:"flex-1"},ds={class:"space-y-3"},us={key:1},ps={class:"rounded-lg border border-green-200 bg-green-50 p-6 dark:border-green-700 dark:bg-green-900/30"},gs={class:"flex items-start gap-4"},ms={class:"flex-1"},ys={class:"space-y-4"},xs={class:"rounded-lg border border-green-300 bg-white/80 p-4 dark:border-green-600 dark:bg-gray-800/80"},fs={class:"flex items-start gap-3"},cs={class:"flex-1"},bs=["disabled"],vs={key:0,class:"fas fa-link mr-2"},ks={key:1,class:"loading-spinner mr-2"},ws={key:1,class:"space-y-3"},hs={class:"flex items-center gap-2"},As=["value"],$s={class:"rounded-lg border border-green-300 bg-white/80 p-4 dark:border-green-600 dark:bg-gray-800/80"},Cs={class:"flex items-start gap-3"},Is={class:"flex-1"},Us={class:"space-y-3"},Ts={key:2},Vs={class:"rounded-lg border border-orange-200 bg-orange-50 p-6 dark:border-orange-700 dark:bg-orange-900/30"},Rs={class:"flex items-start gap-4"},zs={class:"flex-1"},Ks={class:"space-y-4"},Ss={class:"rounded-lg border border-orange-300 bg-white/80 p-4 dark:border-orange-600 dark:bg-gray-800/80"},Ms={class:"flex items-start gap-3"},Ps={class:"flex-1"},Os=["disabled"],Ls={key:0,class:"fas fa-link mr-2"},js={key:1,class:"loading-spinner mr-2"},Ds={key:1,class:"space-y-3"},Es={class:"flex items-center gap-2"},Ws=["value"],qs={class:"rounded-lg border border-orange-300 bg-white/80 p-4 dark:border-orange-600 dark:bg-gray-800/80"},Gs={class:"flex items-start gap-3"},Ns={class:"flex-1"},Fs={class:"space-y-3"},Qs={class:"flex gap-3 pt-4"},_s=["disabled"],Bs={key:0,class:"loading-spinner mr-2"},Hs={__name:"OAuthFlow",props:{platform:{type:String,required:!0},proxy:{type:Object,default:null}},emits:["success","back"],setup(ne,{emit:ue}){const x=ne,X=ue,T=Rt(),L=I(!1),G=I(!1),g=I(""),c=I(""),M=I(!1),k=I(""),j=Re(()=>g.value&&c.value.trim());J(c,N=>{if(!N||typeof N!="string")return;const u=N.trim();if(!u)return;if(u.startsWith("http://")||u.startsWith("https://"))if(u.startsWith("http://localhost:45462")||u.startsWith("http://localhost:1455"))try{const oe=new URL(u).searchParams.get("code");oe?(c.value=oe,K("成功提取授权码!","success"),console.log("Successfully extracted authorization code from URL")):K("URL 中未找到授权码参数,请检查链接是否正确","error")}catch(O){console.error("Failed to parse URL:",O),K("链接格式错误,请检查是否为完整的 URL","error")}else if(x.platform==="gemini"||x.platform==="openai")try{const oe=new URL(u).searchParams.get("code");oe&&(c.value=oe,K("成功提取授权码!","success"))}catch{}else K("请粘贴以 http://localhost:1455 或 http://localhost:45462 开头的链接","error")});const E=async()=>{var N;L.value=!0;try{const u=(N=x.proxy)!=null&&N.enabled?{proxy:{type:x.proxy.type,host:x.proxy.host,port:parseInt(x.proxy.port),username:x.proxy.username||null,password:x.proxy.password||null}}:{};if(x.platform==="claude"){const f=await T.generateClaudeAuthUrl(u);g.value=f.authUrl,k.value=f.sessionId}else if(x.platform==="gemini"){const f=await T.generateGeminiAuthUrl(u);g.value=f.authUrl,k.value=f.sessionId}else if(x.platform==="openai"){const f=await T.generateOpenAIAuthUrl(u);g.value=f.authUrl,k.value=f.sessionId}}catch(u){K(u.message||"生成授权链接失败","error")}finally{L.value=!1}},D=()=>{g.value="",c.value="",E()},Q=async()=>{try{await navigator.clipboard.writeText(g.value),M.value=!0,K("链接已复制","success"),setTimeout(()=>{M.value=!1},2e3)}catch{const u=document.createElement("input");u.value=g.value,document.body.appendChild(u),u.select(),document.execCommand("copy"),document.body.removeChild(u),M.value=!0,K("链接已复制","success"),setTimeout(()=>{M.value=!1},2e3)}},Y=async()=>{var N;if(j.value){G.value=!0;try{let u={};x.platform==="claude"?u={sessionId:k.value,callbackUrl:c.value.trim()}:x.platform==="gemini"?u={code:c.value.trim(),sessionId:k.value}:x.platform==="openai"&&(u={code:c.value.trim(),sessionId:k.value}),(N=x.proxy)!=null&&N.enabled&&(u.proxy={type:x.proxy.type,host:x.proxy.host,port:parseInt(x.proxy.port),username:x.proxy.username||null,password:x.proxy.password||null});let f;x.platform==="claude"?f=await T.exchangeClaudeCode(u):x.platform==="gemini"?f=await T.exchangeGeminiCode(u):x.platform==="openai"&&(f=await T.exchangeOpenAICode(u)),X("success",f)}catch(u){K(u.message||"授权失败,请检查授权码是否正确","error")}finally{G.value=!1}}};return(N,u)=>(n(),d("div",Ft,[ne.platform==="claude"?(n(),d("div",Qt,[e("div",_t,[e("div",Bt,[u[15]||(u[15]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-link text-white"})],-1)),e("div",Ht,[u[13]||(u[13]=e("h4",{class:"mb-3 font-semibold text-blue-900 dark:text-blue-200"},"Claude 账户授权",-1)),u[14]||(u[14]=e("p",{class:"mb-4 text-sm text-blue-800 dark:text-blue-300"}," 请按照以下步骤完成 Claude 账户的授权: ",-1)),e("div",Jt,[e("div",Yt,[e("div",Zt,[u[6]||(u[6]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",Xt,[u[5]||(u[5]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 点击下方按钮生成授权链接 ",-1)),g.value?(n(),d("div",as,[e("div",rs,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:g.value},null,8,ls),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:Q},[e("i",{class:S(M.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-blue-600 hover:text-blue-700",onClick:D},u[4]||(u[4]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),U("重新生成 ",-1)]))])):(n(),d("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:L.value,onClick:E},[L.value?(n(),d("div",ss)):(n(),d("i",ts)),U(" "+v(L.value?"生成中...":"生成授权链接"),1)],8,es))])])]),u[12]||(u[12]=Xe(' 2
在浏览器中打开链接并完成授权
请在新标签页中打开授权链接,登录您的 Claude 账户并授权。
注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。
',1)),e("div",os,[e("div",ns,[u[11]||(u[11]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",is,[u[9]||(u[9]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 输入 Authorization Code ",-1)),u[10]||(u[10]=e("p",{class:"mb-3 text-sm text-blue-700 dark:text-blue-300"},[U(" 授权完成后,页面会显示一个 "),e("strong",null,"Authorization Code"),U(",请将其复制并粘贴到下方输入框: ")],-1)),e("div",ds,[e("div",null,[u[7]||(u[7]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-key mr-2 text-blue-500"}),U("Authorization Code ")],-1)),y(e("textarea",{"onUpdate:modelValue":u[0]||(u[0]=f=>c.value=f),class:"form-input w-full resize-none font-mono text-sm",placeholder:"粘贴从Claude页面获取的Authorization Code...",rows:"3"},null,512),[[A,c.value]])]),u[8]||(u[8]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),U(" 请粘贴从Claude页面复制的Authorization Code ")],-1))])])])])])])])])])):ne.platform==="gemini"?(n(),d("div",us,[e("div",ps,[e("div",gs,[u[27]||(u[27]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-green-500"},[e("i",{class:"fas fa-robot text-white"})],-1)),e("div",ms,[u[25]||(u[25]=e("h4",{class:"mb-3 font-semibold text-green-900 dark:text-green-200"},"Gemini 账户授权",-1)),u[26]||(u[26]=e("p",{class:"mb-4 text-sm text-green-800 dark:text-green-300"}," 请按照以下步骤完成 Gemini 账户的授权: ",-1)),e("div",ys,[e("div",xs,[e("div",fs,[u[18]||(u[18]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-green-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",cs,[u[17]||(u[17]=e("p",{class:"mb-2 font-medium text-green-900 dark:text-green-200"}," 点击下方按钮生成授权链接 ",-1)),g.value?(n(),d("div",ws,[e("div",hs,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:g.value},null,8,As),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:Q},[e("i",{class:S(M.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-green-600 hover:text-green-700",onClick:D},u[16]||(u[16]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),U("重新生成 ",-1)]))])):(n(),d("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:L.value,onClick:E},[L.value?(n(),d("div",ks)):(n(),d("i",vs)),U(" "+v(L.value?"生成中...":"生成授权链接"),1)],8,bs))])])]),u[24]||(u[24]=Xe(' 2
在浏览器中打开链接并完成授权
请在新标签页中打开授权链接,登录您的 Gemini 账户并授权。
注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。
',1)),e("div",$s,[e("div",Cs,[u[23]||(u[23]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-green-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",Is,[u[21]||(u[21]=e("p",{class:"mb-2 font-medium text-green-900 dark:text-green-200"}," 输入 Authorization Code ",-1)),u[22]||(u[22]=e("p",{class:"mb-3 text-sm text-green-700 dark:text-green-300"}," 授权完成后,页面会显示一个 Authorization Code,请将其复制并粘贴到下方输入框: ",-1)),e("div",Us,[e("div",null,[u[19]||(u[19]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-key mr-2 text-green-500"}),U("Authorization Code ")],-1)),y(e("textarea",{"onUpdate:modelValue":u[1]||(u[1]=f=>c.value=f),class:"form-input w-full resize-none font-mono text-sm",placeholder:"粘贴从Gemini页面获取的Authorization Code...",rows:"3"},null,512),[[A,c.value]])]),u[20]||(u[20]=e("div",{class:"mt-2 space-y-1"},[e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},[e("i",{class:"fas fa-check-circle mr-1 text-green-500"}),U(" 请粘贴从Gemini页面复制的Authorization Code ")])],-1))])])])])])])])])])):ne.platform==="openai"?(n(),d("div",Ts,[e("div",Vs,[e("div",Rs,[u[39]||(u[39]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-orange-500"},[e("i",{class:"fas fa-brain text-white"})],-1)),e("div",zs,[u[37]||(u[37]=e("h4",{class:"mb-3 font-semibold text-orange-900 dark:text-orange-200"},"OpenAI 账户授权",-1)),u[38]||(u[38]=e("p",{class:"mb-4 text-sm text-orange-800 dark:text-orange-300"}," 请按照以下步骤完成 OpenAI 账户的授权: ",-1)),e("div",Ks,[e("div",Ss,[e("div",Ms,[u[30]||(u[30]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-orange-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",Ps,[u[29]||(u[29]=e("p",{class:"mb-2 font-medium text-orange-900 dark:text-orange-200"}," 点击下方按钮生成授权链接 ",-1)),g.value?(n(),d("div",Ds,[e("div",Es,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:g.value},null,8,Ws),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:Q},[e("i",{class:S(M.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-orange-600 hover:text-orange-700",onClick:D},u[28]||(u[28]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),U("重新生成 ",-1)]))])):(n(),d("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:L.value,onClick:E},[L.value?(n(),d("div",js)):(n(),d("i",Ls)),U(" "+v(L.value?"生成中...":"生成授权链接"),1)],8,Os))])])]),u[36]||(u[36]=Xe(' 2
在浏览器中打开链接并完成授权
请在新标签页中打开授权链接,登录您的 OpenAI 账户并授权。
重要提示:授权后页面可能会加载较长时间,请耐心等待。
当浏览器地址栏变为 http://localhost:1455/... 开头时,表示授权已完成。
注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。
',1)),e("div",qs,[e("div",Gs,[u[35]||(u[35]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-orange-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",Ns,[u[33]||(u[33]=e("p",{class:"mb-2 font-medium text-orange-900 dark:text-orange-200"}," 输入授权链接或 Code ",-1)),u[34]||(u[34]=e("p",{class:"mb-3 text-sm text-orange-700 dark:text-orange-300"},[U(" 授权完成后,当页面地址变为 "),e("strong",{class:"font-mono"},"http://localhost:1455/..."),U(" 时: ")],-1)),e("div",Fs,[e("div",null,[u[31]||(u[31]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-link mr-2 text-orange-500"}),U("授权链接或 Code ")],-1)),y(e("textarea",{"onUpdate:modelValue":u[2]||(u[2]=f=>c.value=f),class:"form-input w-full resize-none font-mono text-sm",placeholder:`方式1:复制完整的链接(http://localhost:1455/auth/callback?code=...)
方式2:仅复制 code 参数的值
系统会自动识别并提取所需信息`,rows:"3"},null,512),[[A,c.value]])]),u[32]||(u[32]=Xe('提示:您可以直接复制整个链接或仅复制 code 参数值,系统会自动识别。
• 完整链接示例:http://localhost:1455/auth/callback?code=ac_4hm8...
• 仅 Code 示例:ac_4hm8iqmx9A2fzMy_cwye7U3W7...
',1))])])])])])])])])])):b("",!0),e("div",Qs,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:u[3]||(u[3]=f=>N.$emit("back"))}," 上一步 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:!j.value||G.value,type:"button",onClick:Y},[G.value?(n(),d("div",Bs)):b("",!0),U(" "+v(G.value?"验证中...":"完成授权"),1)],8,_s)])]))}},Js={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},Ys={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-4xl overflow-y-auto p-4 sm:p-6 md:p-8"},Zs={class:"mb-4 flex items-center justify-between sm:mb-6"},Xs={class:"mb-6"},ea={key:0,class:"mb-6 rounded-lg border border-blue-200 bg-blue-50 p-4"},ta={class:"space-y-4"},sa={class:"flex gap-4"},aa={class:"flex cursor-pointer items-center"},ra={class:"flex cursor-pointer items-center"},la={class:"flex cursor-pointer items-center"},oa={class:"flex gap-3"},na=["disabled"],ia={key:0,class:"loading-spinner mr-2"},da={class:"space-y-4"},ua={key:0,class:"py-8 text-center"},pa={key:1,class:"rounded-lg bg-gray-50 py-8 text-center"},ga={key:2,class:"grid grid-cols-1 gap-4 md:grid-cols-2"},ma={class:"mb-3 flex items-start justify-between"},ya={class:"flex-1"},xa={class:"font-semibold text-gray-900"},fa={class:"mt-1 text-sm text-gray-500"},ca={class:"ml-4 flex items-center gap-2"},ba={class:"flex items-center justify-between text-sm text-gray-600"},va={class:"flex items-center gap-4"},ka={class:"flex items-center gap-2"},wa=["onClick"],ha=["disabled","onClick"],Aa={key:1,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},$a={class:"modal-content w-full max-w-lg p-4 sm:p-6"},Ca={class:"space-y-4"},Ia={class:"rounded-lg bg-gray-100 px-3 py-2 text-sm text-gray-600"},Ua={class:"flex gap-3 pt-4"},Ta=["disabled"],Va={key:0,class:"loading-spinner mr-2"},Ra={__name:"GroupManagementModal",emits:["close","refresh"],setup(ne,{emit:ue}){const x=ue,X=I(!0),T=I(!1),L=I([]),G=I(!1),g=I(!1),c=I({name:"",platform:"claude",description:""}),M=I(!1),k=I(!1),j=I(null),E=I({name:"",platform:"",description:""}),D=W=>W?new Date(W).toLocaleDateString("zh-CN"):"-",Q=async()=>{T.value=!0;try{const W=await z.get("/admin/account-groups");L.value=W.data||[]}catch{K("加载分组列表失败","error")}finally{T.value=!1}},Y=async()=>{var W,w;if(!c.value.name||!c.value.platform){K("请填写必填项","error");return}g.value=!0;try{await z.post("/admin/account-groups",{name:c.value.name,platform:c.value.platform,description:c.value.description}),K("分组创建成功","success"),N(),await Q(),x("refresh")}catch(P){K(((w=(W=P.response)==null?void 0:W.data)==null?void 0:w.error)||"创建分组失败","error")}finally{g.value=!1}},N=()=>{G.value=!1,c.value={name:"",platform:"claude",description:""}},u=W=>{j.value=W,E.value={name:W.name,platform:W.platform,description:W.description||""},M.value=!0},f=async()=>{var W,w;if(!E.value.name){K("请填写分组名称","error");return}k.value=!0;try{await z.put(`/admin/account-groups/${j.value.id}`,{name:E.value.name,description:E.value.description}),K("分组更新成功","success"),O(),await Q(),x("refresh")}catch(P){K(((w=(W=P.response)==null?void 0:W.data)==null?void 0:w.error)||"更新分组失败","error")}finally{k.value=!1}},O=()=>{M.value=!1,j.value=null,E.value={name:"",platform:"",description:""}},oe=async W=>{var w,P;if(W.memberCount>0){K("分组内还有成员,无法删除","error");return}if(confirm(`确定要删除分组 "${W.name}" 吗?`))try{await z.delete(`/admin/account-groups/${W.id}`),K("分组删除成功","success"),await Q(),x("refresh")}catch(xe){K(((P=(w=xe.response)==null?void 0:w.data)==null?void 0:P.error)||"删除分组失败","error")}};return pt(()=>{Q()}),(W,w)=>(n(),$e(ft,{to:"body"},[X.value?(n(),d("div",Js,[e("div",Ys,[e("div",Zs,[w[10]||(w[10]=e("div",{class:"flex items-center gap-2 sm:gap-3"},[e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-purple-500 to-purple-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-layer-group text-sm text-white sm:text-base"})]),e("h3",{class:"text-lg font-bold text-gray-900 sm:text-xl"},"账户分组管理")],-1)),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600",onClick:w[0]||(w[0]=P=>W.$emit("close"))},w[9]||(w[9]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("div",Xs,[e("button",{class:"btn btn-primary px-4 py-2",onClick:w[1]||(w[1]=P=>G.value=!0)},w[11]||(w[11]=[e("i",{class:"fas fa-plus mr-2"},null,-1),U(" 创建新分组 ",-1)]))]),G.value?(n(),d("div",ea,[w[18]||(w[18]=e("h4",{class:"mb-4 text-lg font-semibold text-gray-900"},"创建新分组",-1)),e("div",ta,[e("div",null,[w[12]||(w[12]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"分组名称 *",-1)),y(e("input",{"onUpdate:modelValue":w[2]||(w[2]=P=>c.value.name=P),class:"form-input w-full",placeholder:"输入分组名称",type:"text"},null,512),[[A,c.value.name]])]),e("div",null,[w[16]||(w[16]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"平台类型 *",-1)),e("div",sa,[e("label",aa,[y(e("input",{"onUpdate:modelValue":w[3]||(w[3]=P=>c.value.platform=P),class:"mr-2",type:"radio",value:"claude"},null,512),[[Z,c.value.platform]]),w[13]||(w[13]=e("span",{class:"text-sm text-gray-700"},"Claude",-1))]),e("label",ra,[y(e("input",{"onUpdate:modelValue":w[4]||(w[4]=P=>c.value.platform=P),class:"mr-2",type:"radio",value:"gemini"},null,512),[[Z,c.value.platform]]),w[14]||(w[14]=e("span",{class:"text-sm text-gray-700"},"Gemini",-1))]),e("label",la,[y(e("input",{"onUpdate:modelValue":w[5]||(w[5]=P=>c.value.platform=P),class:"mr-2",type:"radio",value:"openai"},null,512),[[Z,c.value.platform]]),w[15]||(w[15]=e("span",{class:"text-sm text-gray-700"},"OpenAI",-1))])])]),e("div",null,[w[17]||(w[17]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"描述 (可选)",-1)),y(e("textarea",{"onUpdate:modelValue":w[6]||(w[6]=P=>c.value.description=P),class:"form-input w-full resize-none",placeholder:"分组描述...",rows:"2"},null,512),[[A,c.value.description]])]),e("div",oa,[e("button",{class:"btn btn-primary px-4 py-2",disabled:!c.value.name||!c.value.platform||g.value,onClick:Y},[g.value?(n(),d("div",ia)):b("",!0),U(" "+v(g.value?"创建中...":"创建"),1)],8,na),e("button",{class:"btn btn-secondary px-4 py-2",onClick:N},"取消")])])])):b("",!0),e("div",da,[T.value?(n(),d("div",ua,w[19]||(w[19]=[e("div",{class:"loading-spinner-lg mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500"},"加载中...",-1)]))):L.value.length===0?(n(),d("div",pa,w[20]||(w[20]=[e("i",{class:"fas fa-layer-group mb-4 text-4xl text-gray-300"},null,-1),e("p",{class:"text-gray-500"},"暂无分组",-1)]))):(n(),d("div",ga,[(n(!0),d(fe,null,we(L.value,P=>(n(),d("div",{key:P.id,class:"rounded-lg border bg-white p-4 transition-shadow hover:shadow-md"},[e("div",ma,[e("div",ya,[e("h4",xa,v(P.name),1),e("p",fa,v(P.description||"暂无描述"),1)]),e("div",ca,[e("span",{class:S(["rounded-full px-2 py-1 text-xs font-medium",P.platform==="claude"?"bg-purple-100 text-purple-700":P.platform==="gemini"?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-700"])},v(P.platform==="claude"?"Claude":P.platform==="gemini"?"Gemini":"OpenAI"),3)])]),e("div",ba,[e("div",va,[e("span",null,[w[21]||(w[21]=e("i",{class:"fas fa-users mr-1"},null,-1)),U(" "+v(P.memberCount||0)+" 个成员 ",1)]),e("span",null,[w[22]||(w[22]=e("i",{class:"fas fa-clock mr-1"},null,-1)),U(" "+v(D(P.createdAt)),1)])]),e("div",ka,[e("button",{class:"text-blue-600 transition-colors hover:text-blue-800",title:"编辑",onClick:xe=>u(P)},w[23]||(w[23]=[e("i",{class:"fas fa-edit"},null,-1)]),8,wa),e("button",{class:"text-red-600 transition-colors hover:text-red-800",disabled:P.memberCount>0,title:"删除",onClick:xe=>oe(P)},w[24]||(w[24]=[e("i",{class:"fas fa-trash"},null,-1)]),8,ha)])])]))),128))]))])])])):b("",!0),M.value?(n(),d("div",Aa,[e("div",$a,[e("div",{class:"mb-4 flex items-center justify-between"},[w[26]||(w[26]=e("h3",{class:"text-lg font-bold text-gray-900"},"编辑分组",-1)),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600",onClick:O},w[25]||(w[25]=[e("i",{class:"fas fa-times"},null,-1)]))]),e("div",Ca,[e("div",null,[w[27]||(w[27]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"分组名称 *",-1)),y(e("input",{"onUpdate:modelValue":w[7]||(w[7]=P=>E.value.name=P),class:"form-input w-full",placeholder:"输入分组名称",type:"text"},null,512),[[A,E.value.name]])]),e("div",null,[w[29]||(w[29]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"平台类型",-1)),e("div",Ia,[U(v(E.value.platform==="claude"?"Claude":E.value.platform==="gemini"?"Gemini":"OpenAI")+" ",1),w[28]||(w[28]=e("span",{class:"ml-2 text-xs text-gray-500"},"(不可修改)",-1))])]),e("div",null,[w[30]||(w[30]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"描述 (可选)",-1)),y(e("textarea",{"onUpdate:modelValue":w[8]||(w[8]=P=>E.value.description=P),class:"form-input w-full resize-none",placeholder:"分组描述...",rows:"2"},null,512),[[A,E.value.description]])]),e("div",Ua,[e("button",{class:"btn btn-primary flex-1 px-4 py-2",disabled:!E.value.name||k.value,onClick:f},[k.value?(n(),d("div",Va)):b("",!0),U(" "+v(k.value?"更新中...":"更新"),1)],8,Ta),e("button",{class:"btn btn-secondary flex-1 px-4 py-2",onClick:O},"取消")])])])])):b("",!0)]))}},za={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},Ka={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-2xl overflow-y-auto p-4 sm:p-6 md:p-8"},Sa={class:"mb-4 flex items-center justify-between sm:mb-6"},Ma={class:"flex items-center gap-2 sm:gap-3"},Pa={class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"},Oa={key:0,class:"mb-4 flex items-center justify-center sm:mb-8"},La={class:"flex items-center space-x-2 sm:space-x-4"},ja={class:"flex items-center"},Da={class:"flex items-center"},Ea={key:1},Wa={class:"space-y-6"},qa={key:0},Ga={class:"space-y-3"},Na={class:"grid grid-cols-3 gap-2"},Fa={class:"p-3"},Qa={class:"flex items-center justify-between"},_a={key:0,class:"flex h-5 w-5 items-center justify-center rounded-full bg-indigo-500"},Ba={class:"p-3"},Ha={class:"flex items-center justify-between"},Ja={key:0,class:"flex h-5 w-5 items-center justify-center rounded-full bg-emerald-500"},Ya={class:"p-3"},Za={class:"flex items-center justify-between"},Xa={key:0,class:"flex h-5 w-5 items-center justify-center rounded-full bg-blue-500"},er={key:0,class:"animate-fadeIn rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-gray-800/50"},tr={class:"grid grid-cols-2 gap-2 sm:grid-cols-3"},sr={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-indigo-500"},ar={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-purple-500"},rr={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-orange-500"},lr={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-cyan-500"},or={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-emerald-500"},nr={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-teal-500"},ir={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-blue-500"},dr={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-blue-500"},ur={key:1},pr={class:"flex flex-wrap gap-4"},gr={key:0,class:"flex cursor-pointer items-center"},mr={class:"flex cursor-pointer items-center"},yr={class:"flex cursor-pointer items-center"},xr={key:0,class:"mt-1 text-xs text-red-500"},fr={class:"flex gap-4"},cr={class:"flex cursor-pointer items-center"},br={class:"flex cursor-pointer items-center"},vr={class:"flex cursor-pointer items-center"},kr={key:2},wr={class:"flex gap-2"},hr={class:"flex-1"},Ar={class:"max-h-48 space-y-2 overflow-y-auto rounded-md border p-3 dark:border-gray-600 dark:bg-gray-700"},$r={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},Cr=["value"],Ir={class:"text-sm text-gray-700 dark:text-gray-200"},Ur={key:3},Tr={key:4,class:"space-y-4"},Vr={key:0,class:"mt-1 text-xs text-red-500"},Rr={key:0,class:"mt-1 text-xs text-red-500"},zr={key:0,class:"mt-1 text-xs text-red-500"},Kr={key:5,class:"space-y-4"},Sr={key:0,class:"mt-1 text-xs text-red-500"},Mr={key:0,class:"mt-1 text-xs text-red-500"},Pr={key:0,class:"mt-1 text-xs text-red-500"},Or={class:"flex flex-wrap gap-2"},Lr=["value"],jr={class:"text-sm text-gray-700 dark:text-gray-300"},Dr={key:6},Er={class:"mb-3"},Wr={class:"inline-flex cursor-pointer items-center"},qr={key:0},Gr={key:7,class:"space-y-4"},Nr={key:0,class:"mt-1 text-xs text-red-500"},Fr={key:0,class:"mt-1 text-xs text-red-500"},Qr={class:"grid grid-cols-2 gap-4"},_r={class:"mb-3 space-y-2"},Br=["onUpdate:modelValue"],Hr=["onUpdate:modelValue"],Jr=["onClick"],Yr={class:"mt-3 flex flex-wrap gap-2"},Zr={class:"mb-3"},Xr={class:"inline-flex cursor-pointer items-center"},el={key:0},tl={key:8,class:"space-y-4"},sl={class:"relative"},al=["type"],rl={key:9},ll={class:"flex gap-4"},ol={class:"flex cursor-pointer items-center"},nl={class:"flex cursor-pointer items-center"},il={key:10,class:"mt-4"},dl={class:"flex items-start"},ul={key:11,class:"mt-4"},pl={class:"flex items-start"},gl={class:"ml-3"},ml={key:0,class:"mt-1"},yl={class:"flex items-center justify-between"},xl={class:"text-xs text-green-600 dark:text-green-400"},fl=["disabled"],cl={key:0,class:"fas fa-trash-alt mr-1"},bl={key:1,class:"loading-spinner mr-1"},vl={key:1,class:"mt-1"},kl={key:12,class:"mt-4"},wl={class:"flex items-start"},hl={class:"ml-3 flex-1"},Al={key:0,class:"mt-3"},$l={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-gray-800/50"},Cl={class:"flex items-center gap-2"},Il={class:"block w-full select-all break-all rounded bg-gray-100 px-3 py-2 font-mono text-xs text-gray-700 dark:bg-gray-900 dark:text-gray-300"},Ul={class:"text-blue-600 dark:text-blue-400"},Tl={class:"text-gray-500 dark:text-gray-500"},Vl={class:"text-blue-600 dark:text-blue-400"},Rl={key:13,class:"space-y-4 rounded-lg border border-blue-200 bg-blue-50 p-4"},zl={class:"mb-4 flex items-start gap-3"},Kl={key:0,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},Sl={key:1,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},Ml={key:2,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},Pl={class:"mb-2 mt-2 rounded-lg border border-blue-300 bg-white/80 p-3 dark:border-blue-600 dark:bg-gray-800/80"},Ol={key:0,class:"text-xs text-blue-800 dark:text-blue-300"},Ll={key:1,class:"text-xs text-blue-800 dark:text-blue-300"},jl={key:2,class:"text-xs text-blue-800 dark:text-blue-300"},Dl={key:0},El={key:1},Wl={key:0,class:"mt-1 text-xs text-red-500"},ql={key:2},Gl={key:0,class:"mt-1 text-xs text-red-500"},Nl={key:3},Fl={class:"flex gap-3 pt-4"},Ql=["disabled"],_l=["disabled"],Bl={key:0,class:"loading-spinner mr-2"},Hl={key:3,class:"space-y-6"},Jl={key:0},Yl={class:"rounded-lg border border-blue-200 bg-blue-50 p-6 dark:border-blue-700 dark:bg-blue-900/30"},Zl={class:"flex items-start gap-4"},Xl={class:"flex-1"},eo={class:"space-y-4"},to={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},so={class:"flex items-start gap-3"},ao={class:"flex-1"},ro=["disabled"],lo={key:0,class:"fas fa-link mr-2"},oo={key:1,class:"loading-spinner mr-2"},no={key:1,class:"space-y-3"},io={class:"flex items-center gap-2"},uo=["value"],po={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},go={class:"flex items-start gap-3"},mo={class:"flex-1"},yo={class:"space-y-3"},xo={class:"flex gap-3 pt-4"},fo=["disabled"],co={key:0,class:"loading-spinner mr-2"},bo={key:4,class:"space-y-6"},vo={class:"flex gap-4"},ko={class:"flex cursor-pointer items-center"},wo={class:"flex cursor-pointer items-center"},ho={class:"flex cursor-pointer items-center"},Ao={key:0},$o={class:"flex gap-2"},Co={class:"flex-1"},Io={class:"max-h-48 space-y-2 overflow-y-auto rounded-md border p-3 dark:border-gray-600 dark:bg-gray-700"},Uo={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},To=["value"],Vo={class:"text-sm text-gray-700 dark:text-gray-200"},Ro={key:1},zo={key:2},Ko={class:"flex gap-4"},So={class:"flex cursor-pointer items-center"},Mo={class:"flex cursor-pointer items-center"},Po={key:3,class:"mt-4"},Oo={class:"flex items-start"},Lo={key:4,class:"mt-4"},jo={class:"flex items-start"},Do={class:"ml-3"},Eo={key:0,class:"mt-1"},Wo={class:"flex items-center justify-between"},qo={class:"text-xs text-green-600 dark:text-green-400"},Go=["disabled"],No={key:0,class:"fas fa-trash-alt mr-1"},Fo={key:1,class:"loading-spinner mr-1"},Qo={key:1,class:"mt-1"},_o={key:5,class:"mt-4"},Bo={class:"flex items-start"},Ho={class:"ml-3 flex-1"},Jo={key:0,class:"mt-3"},Yo={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-gray-800/50"},Zo={class:"flex items-center gap-2"},Xo={class:"block w-full select-all break-all rounded bg-gray-100 px-3 py-2 font-mono text-xs text-gray-700 dark:bg-gray-900 dark:text-gray-300"},en={class:"text-blue-600 dark:text-blue-400"},tn={class:"text-gray-500 dark:text-gray-500"},sn={class:"text-blue-600 dark:text-blue-400"},an={key:6,class:"space-y-4"},rn={class:"grid grid-cols-2 gap-4"},ln={key:0,class:"rounded-lg bg-gray-50 p-4 dark:bg-gray-800"},on={class:"mb-2 flex items-center justify-between"},nn={class:"text-sm text-gray-500 dark:text-gray-400"},dn={class:"relative h-2 w-full rounded-full bg-gray-200 dark:bg-gray-700"},un={class:"mt-2 flex items-center justify-between text-xs"},pn={class:"text-gray-500 dark:text-gray-400"},gn={class:"text-gray-500 dark:text-gray-400"},mn={class:"mb-3 space-y-2"},yn=["onUpdate:modelValue"],xn=["onUpdate:modelValue"],fn=["onClick"],cn={class:"mt-3 flex flex-wrap gap-2"},bn={class:"mb-3"},vn={class:"inline-flex cursor-pointer items-center"},kn={key:0},wn={key:7,class:"space-y-4"},hn={class:"relative"},An=["type"],$n={class:"grid grid-cols-2 gap-4"},Cn={key:8,class:"space-y-4"},In={class:"mb-3"},Un={class:"inline-flex cursor-pointer items-center"},Tn={key:0},Vn={key:9,class:"space-y-4"},Rn={key:0,class:"mt-1 text-xs text-red-500"},zn={key:0,class:"mt-1 text-xs text-red-500"},Kn={key:0,class:"mt-1 text-xs text-red-500"},Sn={class:"flex flex-wrap gap-2"},Mn=["value"],Pn={class:"text-sm text-gray-700 dark:text-gray-300"},On={key:10,class:"rounded-lg border border-amber-200 bg-amber-50 p-4 dark:border-amber-700 dark:bg-amber-900/30"},Ln={class:"space-y-4"},jn={class:"flex gap-3 pt-4"},Dn=["disabled"],En={key:0,class:"loading-spinner mr-2"},Wn={__name:"AccountForm",props:{account:{type:Object,default:null}},emits:["close","success","platform-changed"],setup(ne,{emit:ue}){var it,Je,o,a,R,l,F,te,pe,se,be,Ie,Ue,ie,Te,B,H,ge,me,Ye,bt,vt,kt,wt,ht,At,$t;const x=ne,X=ue,T=Rt(),{showConfirmModal:L,confirmOptions:G,showConfirm:g,handleConfirm:c,handleCancel:M}=Vt(),k=Re(()=>!!x.account),j=I(!0),E=I(1),D=I(!1),Q=I(!1),Y=I(!1),N=I(!1),u=I(""),f=I(""),O=I(!1),oe=I(""),W=I(""),w=I(!1),P=I(""),xe=i=>["claude","claude-console","bedrock"].includes(i)?"claude":["openai","openai-responses","azure_openai"].includes(i)?"openai":i==="gemini"?"gemini":"",ze=()=>{var i;return(i=x.account)!=null&&i.proxy&&x.account.proxy.host&&x.account.proxy.port?{enabled:!0,type:x.account.proxy.type||"socks5",host:x.account.proxy.host,port:x.account.proxy.port,username:x.account.proxy.username||"",password:x.account.proxy.password||""}:{enabled:!1,type:"socks5",host:"",port:"",username:"",password:""}},s=I({platform:((it=x.account)==null?void 0:it.platform)||"claude",addType:(()=>{var t;const i=((t=x.account)==null?void 0:t.platform)||"claude";return i==="gemini"||i==="openai"?"oauth":i==="claude"?"setup-token":"manual"})(),name:((Je=x.account)==null?void 0:Je.name)||"",description:((o=x.account)==null?void 0:o.description)||"",accountType:((a=x.account)==null?void 0:a.accountType)||"shared",subscriptionType:"claude_max",autoStopOnWarning:((R=x.account)==null?void 0:R.autoStopOnWarning)||!1,useUnifiedUserAgent:((l=x.account)==null?void 0:l.useUnifiedUserAgent)||!1,useUnifiedClientId:((F=x.account)==null?void 0:F.useUnifiedClientId)||!1,unifiedClientId:((te=x.account)==null?void 0:te.unifiedClientId)||"",groupId:"",groupIds:[],projectId:((pe=x.account)==null?void 0:pe.projectId)||"",accessToken:"",refreshToken:"",proxy:ze(),apiUrl:((se=x.account)==null?void 0:se.apiUrl)||"",apiKey:((be=x.account)==null?void 0:be.apiKey)||"",priority:((Ie=x.account)==null?void 0:Ie.priority)||50,baseApi:((Ue=x.account)==null?void 0:Ue.baseApi)||"",rateLimitDuration:((ie=x.account)==null?void 0:ie.rateLimitDuration)||60,supportedModels:(()=>{var t;const i=(t=x.account)==null?void 0:t.supportedModels;return i?typeof i=="object"&&!Array.isArray(i)?Object.keys(i):Array.isArray(i)?i:[]:[]})(),userAgent:((Te=x.account)==null?void 0:Te.userAgent)||"",enableRateLimit:x.account?x.account.rateLimitDuration>0:!0,dailyQuota:((B=x.account)==null?void 0:B.dailyQuota)||0,dailyUsage:((H=x.account)==null?void 0:H.dailyUsage)||0,quotaResetTime:((ge=x.account)==null?void 0:ge.quotaResetTime)||"00:00",accessKeyId:((me=x.account)==null?void 0:me.accessKeyId)||"",secretAccessKey:((Ye=x.account)==null?void 0:Ye.secretAccessKey)||"",region:((bt=x.account)==null?void 0:bt.region)||"",sessionToken:((vt=x.account)==null?void 0:vt.sessionToken)||"",defaultModel:((kt=x.account)==null?void 0:kt.defaultModel)||"",smallFastModel:((wt=x.account)==null?void 0:wt.smallFastModel)||"",azureEndpoint:((ht=x.account)==null?void 0:ht.azureEndpoint)||"",apiVersion:((At=x.account)==null?void 0:At.apiVersion)||"",deploymentName:(($t=x.account)==null?void 0:$t.deploymentName)||""}),ee=I([]),Ce=()=>{var i;(i=x.account)!=null&&i.supportedModels&&(typeof x.account.supportedModels=="object"&&!Array.isArray(x.account.supportedModels)?ee.value=Object.entries(x.account.supportedModels).map(([t,r])=>({from:t,to:r})):Array.isArray(x.account.supportedModels)&&(ee.value=x.account.supportedModels.map(t=>({from:t,to:t}))))},$=I({name:"",refreshToken:"",accessToken:"",apiUrl:"",apiKey:"",accessKeyId:"",secretAccessKey:"",region:"",azureEndpoint:"",deploymentName:""}),qe=Re(()=>{var i;return((i=s.value.name)==null?void 0:i.trim())&&s.value.platform}),Ge=Re(()=>u.value&&f.value.trim()),Oe=()=>{var i;return!k.value||!((i=x.account)!=null&&i.id)?0:typeof s.value.dailyUsage=="number"?s.value.dailyUsage:0},Me=Re(()=>!s.value.dailyQuota||s.value.dailyQuota<=0?0:Oe()/s.value.dailyQuota*100),Ne=async()=>{var i;if(!(!k.value||!((i=x.account)!=null&&i.id)))try{const t=await z.get(`/admin/claude-console-accounts/${x.account.id}/usage`);t&&(s.value.dailyUsage=t.dailyUsage||0)}catch{}},Le=i=>{P.value=i,i==="claude"?s.value.platform="claude":i==="openai"?s.value.platform="openai":i==="gemini"&&(s.value.platform="gemini")},je=async()=>{if($.value.name="",!qe.value){(!s.value.name||s.value.name.trim()==="")&&($.value.name="请填写账户名称");return}if(s.value.accountType==="group"&&(!s.value.groupIds||s.value.groupIds.length===0)){K("请选择一个分组","error");return}s.value.accountType==="group"&&(s.value.groupIds&&s.value.groupIds.length>0?s.value.groupId=s.value.groupIds[0]:s.value.groupId=""),!(s.value.platform==="gemini"&&E.value===1&&s.value.addType==="oauth"&&(!s.value.projectId||s.value.projectId.trim()==="")&&!await g("项目 ID 未填写",`您尚未填写项目 ID。
如果您的Google账号绑定了Google Cloud或被识别为Workspace账号,需要提供项目 ID。
如果您使用的是普通个人账号,可以继续不填写。`,"继续","返回填写"))&&(E.value=2)},De=async()=>{var i;Y.value=!0;try{const t=(i=s.value.proxy)!=null&&i.enabled?{proxy:{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}}:{},r=await T.generateClaudeSetupTokenUrl(t);u.value=r.authUrl,oe.value=r.sessionId}catch(t){K(t.message||"生成Setup Token授权链接失败","error")}finally{Y.value=!1}},Fe=()=>{u.value="",f.value="",De()},tt=async()=>{try{await navigator.clipboard.writeText(u.value),O.value=!0,K("链接已复制","success"),setTimeout(()=>{O.value=!1},2e3)}catch{const t=document.createElement("textarea");t.value=u.value,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();try{document.execCommand("copy")?(O.value=!0,K("链接已复制","success")):K("复制失败,请手动复制","error")}catch{K("复制失败,请手动复制","error")}document.body.removeChild(t),setTimeout(()=>{O.value=!1},2e3)}},st=async()=>{var i;if(Ge.value){N.value=!0;try{const t={sessionId:oe.value,callbackUrl:f.value.trim()};(i=s.value.proxy)!=null&&i.enabled&&(t.proxy={type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null});const r=await T.exchangeClaudeSetupTokenCode(t);s.value.useUnifiedClientId&&!s.value.unifiedClientId&&(s.value.unifiedClientId=ve()),await Ee(r)}catch(t){K(t.message||"Setup Token授权失败,请检查授权码是否正确","error")}finally{N.value=!1}}},Ee=async i=>{var t,r,_,q,Ae,V;D.value=!0;try{s.value.platform==="claude"&&s.value.useUnifiedClientId&&!s.value.unifiedClientId&&(s.value.unifiedClientId=ve());const h={name:s.value.name,description:s.value.description,accountType:s.value.accountType,groupId:s.value.accountType==="group"?s.value.groupId:void 0,groupIds:s.value.accountType==="group"?s.value.groupIds:void 0,proxy:s.value.proxy.enabled?{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}:null};s.value.platform==="claude"?(h.claudeAiOauth=i.claudeAiOauth||i,h.priority=s.value.priority||50,h.autoStopOnWarning=s.value.autoStopOnWarning||!1,h.useUnifiedUserAgent=s.value.useUnifiedUserAgent||!1,h.useUnifiedClientId=s.value.useUnifiedClientId||!1,h.unifiedClientId=s.value.unifiedClientId||"",h.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}):s.value.platform==="gemini"?(h.geminiOauth=i.tokens||i,s.value.projectId&&(h.projectId=s.value.projectId),h.priority=s.value.priority||50):s.value.platform==="openai"&&(h.openaiOauth=i.tokens||i,h.accountInfo=i.accountInfo,h.priority=s.value.priority||50);let ae;s.value.platform==="claude"?ae=await T.createClaudeAccount(h):s.value.platform==="openai"?ae=await T.createOpenAIAccount(h):ae=await T.createGeminiAccount(h),X("success",ae)}catch(h){const ae=((r=(t=h.response)==null?void 0:t.data)==null?void 0:r.error)||h.message||"账户创建失败",re=((q=(_=h.response)==null?void 0:_.data)==null?void 0:q.suggestion)||"",le=((V=(Ae=h.response)==null?void 0:Ae.data)==null?void 0:V.errorDetails)||null;let Ve=ae;re&&(Ve+=`
${re}`),le&&le.error_description?Ve+=`
详细信息: ${le.error_description}`:le&&le.error&&le.error.message&&(Ve+=`
详细信息: ${le.error.message}`),K(Ve,"error","",8e3)}finally{D.value=!1}},Qe=async()=>{var t,r,_,q,Ae,V;$.value.name="",$.value.accessToken="",$.value.apiUrl="",$.value.apiKey="";let i=!1;if((!s.value.name||s.value.name.trim()==="")&&($.value.name="请填写账户名称",i=!0),s.value.platform==="claude-console"&&((!s.value.apiUrl||s.value.apiUrl.trim()==="")&&($.value.apiUrl="请填写 API URL",i=!0),(!s.value.apiKey||s.value.apiKey.trim()==="")&&($.value.apiKey="请填写 API Key",i=!0)),s.value.platform==="openai-responses"?((!s.value.baseApi||s.value.baseApi.trim()==="")&&($.value.baseApi="请填写 API 基础地址",i=!0),(!s.value.apiKey||s.value.apiKey.trim()==="")&&($.value.apiKey="请填写 API 密钥",i=!0)):s.value.platform==="bedrock"?((!s.value.accessKeyId||s.value.accessKeyId.trim()==="")&&($.value.accessKeyId="请填写 AWS 访问密钥 ID",i=!0),(!s.value.secretAccessKey||s.value.secretAccessKey.trim()==="")&&($.value.secretAccessKey="请填写 AWS 秘密访问密钥",i=!0),(!s.value.region||s.value.region.trim()==="")&&($.value.region="请选择 AWS 区域",i=!0)):s.value.platform==="azure_openai"?((!s.value.azureEndpoint||s.value.azureEndpoint.trim()==="")&&($.value.azureEndpoint="请填写 Azure Endpoint",i=!0),(!s.value.deploymentName||s.value.deploymentName.trim()==="")&&($.value.deploymentName="请填写部署名称",i=!0),(!s.value.apiKey||s.value.apiKey.trim()==="")&&($.value.apiKey="请填写 API Key",i=!0)):s.value.addType==="manual"&&(s.value.platform==="openai"?(!s.value.refreshToken||s.value.refreshToken.trim()==="")&&($.value.refreshToken="请填写 Refresh Token",i=!0):(!s.value.accessToken||s.value.accessToken.trim()==="")&&($.value.accessToken="请填写 Access Token",i=!0)),s.value.accountType==="group"&&(!s.value.groupIds||s.value.groupIds.length===0)&&(K("请选择一个分组","error"),i=!0),s.value.accountType==="group"&&(s.value.groupIds&&s.value.groupIds.length>0?s.value.groupId=s.value.groupIds[0]:s.value.groupId=""),!i){D.value=!0;try{const h={name:s.value.name,description:s.value.description,accountType:s.value.accountType,groupId:s.value.accountType==="group"?s.value.groupId:void 0,groupIds:s.value.accountType==="group"?s.value.groupIds:void 0,proxy:s.value.proxy.enabled?{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}:null};if(s.value.platform==="claude"){const re=s.value.refreshToken?6e5:31536e6;s.value.useUnifiedClientId&&!s.value.unifiedClientId&&(s.value.unifiedClientId=ve()),h.claudeAiOauth={accessToken:s.value.accessToken,refreshToken:s.value.refreshToken||"",expiresAt:Date.now()+re,scopes:[]},h.priority=s.value.priority||50,h.autoStopOnWarning=s.value.autoStopOnWarning||!1,h.useUnifiedUserAgent=s.value.useUnifiedUserAgent||!1,h.useUnifiedClientId=s.value.useUnifiedClientId||!1,h.unifiedClientId=s.value.unifiedClientId||"",h.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}}else if(s.value.platform==="gemini"){const re=s.value.refreshToken?6e5:31536e6;h.geminiOauth={access_token:s.value.accessToken,refresh_token:s.value.refreshToken||"",scope:"https://www.googleapis.com/auth/cloud-platform",token_type:"Bearer",expiry_date:Date.now()+re},s.value.projectId&&(h.projectId=s.value.projectId),h.priority=s.value.priority||50}else if(s.value.platform==="openai"){const re=s.value.refreshToken?6e5:31536e6;h.openaiOauth={idToken:"",accessToken:s.value.accessToken||"",refreshToken:s.value.refreshToken,expires_in:Math.floor(re/1e3)},h.accountInfo={accountId:"",chatgptUserId:"",organizationId:"",organizationRole:"",organizationTitle:"",planType:"",email:"",emailVerified:!1},h.needsImmediateRefresh=!0,h.requireRefreshSuccess=!0,h.priority=s.value.priority||50}else s.value.platform==="claude-console"?(h.apiUrl=s.value.apiUrl,h.apiKey=s.value.apiKey,h.priority=s.value.priority||50,h.supportedModels=lt()||{},h.userAgent=s.value.userAgent||null,h.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0,h.dailyQuota=s.value.dailyQuota||0,h.quotaResetTime=s.value.quotaResetTime||"00:00"):s.value.platform==="openai-responses"?(h.baseApi=s.value.baseApi,h.apiKey=s.value.apiKey,h.userAgent=s.value.userAgent||"",h.priority=s.value.priority||50,h.rateLimitDuration=60,h.dailyQuota=s.value.dailyQuota||0,h.quotaResetTime=s.value.quotaResetTime||"00:00"):s.value.platform==="bedrock"?(h.awsCredentials={accessKeyId:s.value.accessKeyId,secretAccessKey:s.value.secretAccessKey,sessionToken:s.value.sessionToken||null},h.region=s.value.region,h.defaultModel=s.value.defaultModel||null,h.smallFastModel=s.value.smallFastModel||null,h.priority=s.value.priority||50,h.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0):s.value.platform==="azure_openai"&&(h.azureEndpoint=s.value.azureEndpoint,h.apiKey=s.value.apiKey,h.apiVersion=s.value.apiVersion||"2024-02-01",h.deploymentName=s.value.deploymentName,h.supportedModels=Array.isArray(s.value.supportedModels)?s.value.supportedModels:[],h.priority=s.value.priority||50,h.isActive=s.value.isActive!==!1,h.schedulable=s.value.schedulable!==!1);let ae;if(s.value.platform==="claude")ae=await T.createClaudeAccount(h);else if(s.value.platform==="claude-console")ae=await T.createClaudeConsoleAccount(h);else if(s.value.platform==="openai-responses")ae=await T.createOpenAIResponsesAccount(h);else if(s.value.platform==="bedrock")ae=await T.createBedrockAccount(h);else if(s.value.platform==="openai")ae=await T.createOpenAIAccount(h);else if(s.value.platform==="azure_openai")ae=await T.createAzureOpenAIAccount(h);else if(s.value.platform==="gemini")ae=await T.createGeminiAccount(h);else throw new Error(`不支持的平台: ${s.value.platform}`);X("success",ae)}catch(h){const ae=((r=(t=h.response)==null?void 0:t.data)==null?void 0:r.error)||h.message||"账户创建失败",re=((q=(_=h.response)==null?void 0:_.data)==null?void 0:q.suggestion)||"",le=((V=(Ae=h.response)==null?void 0:Ae.data)==null?void 0:V.errorDetails)||null;let Ve=ae;re&&(Ve+=`
${re}`),le&&le.error_description?Ve+=`
详细信息: ${le.error_description}`:le&&le.error&&le.error.message&&(Ve+=`
详细信息: ${le.error.message}`),K(Ve,"error","",8e3)}finally{D.value=!1}}},_e=async()=>{var i,t,r,_,q,Ae;if($.value.name="",!s.value.name||s.value.name.trim()===""){$.value.name="请填写账户名称";return}if(s.value.accountType==="group"&&(!s.value.groupIds||s.value.groupIds.length===0)){K("请选择一个分组","error");return}if(s.value.accountType==="group"&&(s.value.groupIds&&s.value.groupIds.length>0?s.value.groupId=s.value.groupIds[0]:s.value.groupId=""),!(s.value.platform==="gemini"&&(!s.value.projectId||s.value.projectId.trim()==="")&&!await g("项目 ID 未填写",`您尚未填写项目 ID。
如果您的Google账号绑定了Google Cloud或被识别为Workspace账号,需要提供项目 ID。
如果您使用的是普通个人账号,可以继续不填写。`,"继续保存","返回填写"))){D.value=!0;try{const V={name:s.value.name,description:s.value.description,accountType:s.value.accountType,groupId:s.value.accountType==="group"?s.value.groupId:void 0,groupIds:s.value.accountType==="group"?s.value.groupIds:void 0,proxy:s.value.proxy.enabled?{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}:null};if(s.value.accessToken||s.value.refreshToken){if(x.account.platform==="claude"){const h=s.value.refreshToken?6e5:31536e6;V.claudeAiOauth={accessToken:s.value.accessToken||"",refreshToken:s.value.refreshToken||"",expiresAt:Date.now()+h,scopes:x.account.scopes||[]}}else if(x.account.platform==="gemini"){const h=s.value.refreshToken?6e5:31536e6;V.geminiOauth={access_token:s.value.accessToken||"",refresh_token:s.value.refreshToken||"",scope:"https://www.googleapis.com/auth/cloud-platform",token_type:"Bearer",expiry_date:Date.now()+h}}else if(x.account.platform==="openai"){const h=s.value.refreshToken?6e5:31536e6;V.openaiOauth={idToken:"",accessToken:s.value.accessToken||"",refreshToken:s.value.refreshToken||"",expires_in:Math.floor(h/1e3)},s.value.refreshToken&&s.value.refreshToken!==x.account.refreshToken&&(V.needsImmediateRefresh=!0,V.requireRefreshSuccess=!0)}}if(x.account.platform==="gemini"&&(V.projectId=s.value.projectId||""),x.account.platform==="claude"&&(s.value.useUnifiedClientId&&!s.value.unifiedClientId&&(s.value.unifiedClientId=ve()),V.priority=s.value.priority||50,V.autoStopOnWarning=s.value.autoStopOnWarning||!1,V.useUnifiedUserAgent=s.value.useUnifiedUserAgent||!1,V.useUnifiedClientId=s.value.useUnifiedClientId||!1,V.unifiedClientId=s.value.unifiedClientId||"",V.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}),x.account.platform==="openai"&&(V.priority=s.value.priority||50),x.account.platform==="gemini"&&(V.priority=s.value.priority||50),x.account.platform==="claude-console"&&(V.apiUrl=s.value.apiUrl,s.value.apiKey&&(V.apiKey=s.value.apiKey),V.priority=s.value.priority||50,V.supportedModels=lt()||{},V.userAgent=s.value.userAgent||null,V.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0,V.dailyQuota=s.value.dailyQuota||0,V.quotaResetTime=s.value.quotaResetTime||"00:00"),x.account.platform==="openai-responses"&&(V.baseApi=s.value.baseApi,s.value.apiKey&&(V.apiKey=s.value.apiKey),V.userAgent=s.value.userAgent||"",V.priority=s.value.priority||50,V.dailyQuota=s.value.dailyQuota||0,V.quotaResetTime=s.value.quotaResetTime||"00:00"),x.account.platform==="bedrock"&&((s.value.accessKeyId||s.value.secretAccessKey||s.value.sessionToken)&&(V.awsCredentials={},s.value.accessKeyId&&(V.awsCredentials.accessKeyId=s.value.accessKeyId),s.value.secretAccessKey&&(V.awsCredentials.secretAccessKey=s.value.secretAccessKey),s.value.sessionToken!==void 0&&(V.awsCredentials.sessionToken=s.value.sessionToken||null)),s.value.region&&(V.region=s.value.region),V.defaultModel=s.value.defaultModel||null,V.smallFastModel=s.value.smallFastModel||null,V.priority=s.value.priority||50,V.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0),x.account.platform==="azure_openai"&&(V.azureEndpoint=s.value.azureEndpoint,V.apiVersion=s.value.apiVersion||"2024-02-01",V.deploymentName=s.value.deploymentName,V.supportedModels=Array.isArray(s.value.supportedModels)?s.value.supportedModels:[],V.priority=s.value.priority||50,s.value.apiKey&&s.value.apiKey.trim()&&(V.apiKey=s.value.apiKey)),x.account.platform==="claude")await T.updateClaudeAccount(x.account.id,V);else if(x.account.platform==="claude-console")await T.updateClaudeConsoleAccount(x.account.id,V);else if(x.account.platform==="openai-responses")await T.updateOpenAIResponsesAccount(x.account.id,V);else if(x.account.platform==="bedrock")await T.updateBedrockAccount(x.account.id,V);else if(x.account.platform==="openai")await T.updateOpenAIAccount(x.account.id,V);else if(x.account.platform==="azure_openai")await T.updateAzureOpenAIAccount(x.account.id,V);else if(x.account.platform==="gemini")await T.updateGeminiAccount(x.account.id,V);else throw new Error(`不支持的平台: ${x.account.platform}`);X("success")}catch(V){const h=((t=(i=V.response)==null?void 0:i.data)==null?void 0:t.error)||V.message||"账户更新失败",ae=((_=(r=V.response)==null?void 0:r.data)==null?void 0:_.suggestion)||"",re=((Ae=(q=V.response)==null?void 0:q.data)==null?void 0:Ae.errorDetails)||null;let le=h;ae&&(le+=`
${ae}`),re&&re.error_description?le+=`
详细信息: ${re.error_description}`:re&&re.error&&re.error.message&&(le+=`
详细信息: ${re.error.message}`),K(le,"error","",8e3)}finally{D.value=!1}}};J(()=>s.value.name,()=>{var i;$.value.name&&((i=s.value.name)!=null&&i.trim())&&($.value.name="")}),J(()=>s.value.accessToken,()=>{var i;$.value.accessToken&&((i=s.value.accessToken)!=null&&i.trim())&&($.value.accessToken="")}),J(()=>s.value.apiUrl,()=>{var i;$.value.apiUrl&&((i=s.value.apiUrl)!=null&&i.trim())&&($.value.apiUrl="")}),J(()=>s.value.apiKey,()=>{var i;$.value.apiKey&&((i=s.value.apiKey)!=null&&i.trim())&&($.value.apiKey="")}),J(()=>s.value.azureEndpoint,()=>{var i;$.value.azureEndpoint&&((i=s.value.azureEndpoint)!=null&&i.trim())&&($.value.azureEndpoint="")}),J(()=>s.value.deploymentName,()=>{var i;$.value.deploymentName&&((i=s.value.deploymentName)!=null&&i.trim())&&($.value.deploymentName="")});const Ke=I([]),Se=I(!1),m=I(!1),p=Re(()=>{let i=s.value.platform;return s.value.platform==="claude-console"?i="claude":s.value.platform==="openai-responses"&&(i="openai"),Ke.value.filter(t=>t.platform===i)}),C=async()=>{Se.value=!0;try{const i=await z.get("/admin/account-groups");Ke.value=i.data||[]}catch{K("加载分组列表失败","error"),Ke.value=[]}finally{Se.value=!1}},ce=async()=>{await C(),K("分组列表已刷新","success")},at=()=>{m.value=!0},gt=async()=>{await C()};J(()=>s.value.platform,i=>{i==="claude-console"||i==="bedrock"||i==="openai-responses"?s.value.addType="manual":i==="claude"?s.value.addType="setup-token":(i==="gemini"||i==="openai")&&(s.value.addType="oauth"),s.value.accountType==="group"&&(s.value.groupId="",s.value.groupIds=[])}),J(()=>s.value.groupIds,i=>{s.value.accountType==="group"&&(i&&i.length>0?s.value.groupId=i[0]:s.value.groupId="")},{deep:!0}),J(f,i=>{if(!i||typeof i!="string")return;const t=i.trim();if(!t)return;if(t.startsWith("http://")||t.startsWith("https://"))if(t.startsWith("http://localhost:45462"))try{const q=new URL(t).searchParams.get("code");q?(f.value=q,K("成功提取授权码!","success")):K("URL 中未找到授权码参数,请检查链接是否正确","error")}catch{K("链接格式错误,请检查是否为完整的 URL","error")}else K("请粘贴以 http://localhost:45462 开头的链接","error")}),J(()=>s.value.platform,i=>{k.value||X("platform-changed",i)}),J(()=>s.value.accountType,i=>{i==="group"&&Ke.value.length===0&&C()}),J(()=>s.value.groupId,i=>{i==="__new__"&&(s.value.groupId="",m.value=!0)});const Be=()=>{ee.value.push({from:"",to:""})},rt=i=>{ee.value.splice(i,1)},he=(i,t)=>{if(ee.value.some(_=>_.from===i)){K(`模型 ${i} 的映射已存在`,"info");return}ee.value.push({from:i,to:t}),K(`已添加映射: ${i} → ${t}`,"success")},lt=()=>{const i={};return ee.value.forEach(t=>{t.from&&t.to&&(i[t.from]=t.to)}),Object.keys(i).length>0?i:null};J(()=>x.account,i=>{if(i){Ce();const t=i.proxy&&i.proxy.host&&i.proxy.port?{enabled:!0,type:i.proxy.type||"socks5",host:i.proxy.host,port:i.proxy.port,username:i.proxy.username||"",password:i.proxy.password||""}:{enabled:!1,type:"socks5",host:"",port:"",username:"",password:""};let r="";i.accountType==="group"&&(r=i.groupId||i.groupInfo&&i.groupInfo.id||"");let _="claude_max";if(i.subscriptionInfo){const q=typeof i.subscriptionInfo=="string"?JSON.parse(i.subscriptionInfo):i.subscriptionInfo;q.accountType?_=q.accountType:q.hasClaudeMax?_="claude_max":q.hasClaudePro?_="claude_pro":_="claude_free"}s.value={platform:i.platform,addType:"oauth",name:i.name,description:i.description||"",accountType:i.accountType||"shared",subscriptionType:_,autoStopOnWarning:i.autoStopOnWarning||!1,useUnifiedUserAgent:i.useUnifiedUserAgent||!1,useUnifiedClientId:i.useUnifiedClientId||!1,unifiedClientId:i.unifiedClientId||"",groupId:r,groupIds:[],projectId:i.projectId||"",accessToken:"",refreshToken:"",proxy:t,apiUrl:i.apiUrl||"",apiKey:"",priority:i.priority||50,supportedModels:(()=>{const q=i.supportedModels;return q?typeof q=="object"&&!Array.isArray(q)?Object.keys(q):Array.isArray(q)?q:[]:[]})(),userAgent:i.userAgent||"",enableRateLimit:!!(i.rateLimitDuration&&i.rateLimitDuration>0),rateLimitDuration:i.rateLimitDuration||60,accessKeyId:"",secretAccessKey:"",region:i.region||"",sessionToken:"",defaultModel:i.defaultModel||"",smallFastModel:i.smallFastModel||"",azureEndpoint:i.azureEndpoint||"",apiVersion:i.apiVersion||"",deploymentName:i.deploymentName||"",baseApi:i.baseApi||"",dailyQuota:i.dailyQuota||0,dailyUsage:i.dailyUsage||0,quotaResetTime:i.quotaResetTime||"00:00"},i.platform==="claude-console"&&Ne(),i.accountType==="group"&&C().then(async()=>{const q=[];if(i.groupInfo&&i.groupInfo.id)s.value.groupId=i.groupInfo.id,q.push(i.groupInfo.id);else if(i.groupId)s.value.groupId=i.groupId,q.push(i.groupId);else if(i.groupIds&&Array.isArray(i.groupIds)&&i.groupIds.length>0)s.value.groupId=i.groupIds[0],q.push(...i.groupIds);else{const Ae=Ke.value.map(async V=>{try{((await z.get(`/admin/account-groups/${V.id}/members`)).data||[]).some(re=>re.id===i.id)&&(q.push(V.id),s.value.groupId||(s.value.groupId=V.id))}catch{}});await Promise.all(Ae)}s.value.groupIds=q})}},{immediate:!0});const ot=async()=>{try{const i=await z.get("/admin/claude-code-version");i.success&&i.userAgent?W.value=i.userAgent:W.value=""}catch{W.value=""}},He=async()=>{w.value=!0;try{(await z.post("/admin/claude-code-version/clear")).success?(W.value="",K("统一User-Agent缓存已清除","success")):K("清除缓存失败","error")}catch(i){K("清除缓存失败:"+(i.message||"未知错误"),"error")}finally{w.value=!1}},ve=()=>{const i=new Uint8Array(32);return crypto.getRandomValues(i),Array.from(i,t=>t.toString(16).padStart(2,"0")).join("")},We=()=>{s.value.unifiedClientId=ve(),K("已生成新的客户端标识","success")},nt=()=>{s.value.useUnifiedClientId&&(s.value.useUnifiedUserAgent=!0,s.value.unifiedClientId||(s.value.unifiedClientId=ve()))};return pt(()=>{var i;P.value=xe(s.value.platform),ot(),k.value&&((i=x.account)==null?void 0:i.platform)==="claude-console"&&Ne()}),J(()=>s.value.platform,i=>{i==="claude"&&ot()}),(i,t)=>(n(),$e(ft,{to:"body"},[j.value?(n(),d("div",za,[e("div",Ka,[e("div",Sa,[e("div",Ma,[t[115]||(t[115]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-green-500 to-green-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-user-circle text-sm text-white sm:text-base"})],-1)),e("h3",Pa,v(k.value?"编辑账户":"添加账户"),1)]),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600",onClick:t[0]||(t[0]=r=>i.$emit("close"))},t[116]||(t[116]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),!k.value&&(s.value.addType==="oauth"||s.value.addType==="setup-token")?(n(),d("div",Oa,[e("div",La,[e("div",ja,[e("div",{class:S(["flex h-6 w-6 items-center justify-center rounded-full text-xs font-semibold sm:h-8 sm:w-8 sm:text-sm",E.value>=1?"bg-blue-500 text-white":"bg-gray-200 text-gray-500"])}," 1 ",2),t[117]||(t[117]=e("span",{class:"ml-1.5 text-xs font-medium text-gray-700 dark:text-gray-300 sm:ml-2 sm:text-sm"},"基本信息",-1))]),t[119]||(t[119]=e("div",{class:"h-0.5 w-4 bg-gray-300 sm:w-8"},null,-1)),e("div",Da,[e("div",{class:S(["flex h-6 w-6 items-center justify-center rounded-full text-xs font-semibold sm:h-8 sm:w-8 sm:text-sm",E.value>=2?"bg-blue-500 text-white":"bg-gray-200 text-gray-500"])}," 2 ",2),t[118]||(t[118]=e("span",{class:"ml-1.5 text-xs font-medium text-gray-700 dark:text-gray-300 sm:ml-2 sm:text-sm"},"授权认证",-1))])])])):b("",!0),E.value===1&&!k.value?(n(),d("div",Ea,[e("div",Wa,[k.value?b("",!0):(n(),d("div",qa,[t[149]||(t[149]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择平台",-1)),e("div",Ga,[e("div",Na,[e("div",{class:S(["group relative cursor-pointer overflow-hidden rounded-lg border-2 transition-all duration-200",[P.value==="claude"?"border-indigo-500 bg-gradient-to-br from-indigo-50 to-purple-50 shadow-md dark:from-indigo-900/20 dark:to-purple-900/20":"border-gray-200 bg-white hover:border-indigo-300 hover:shadow dark:border-gray-700 dark:bg-gray-800 dark:hover:border-indigo-600"]]),onClick:t[1]||(t[1]=r=>Le("claude"))},[e("div",Fa,[e("div",Qa,[t[121]||(t[121]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-md bg-gradient-to-br from-indigo-500 to-purple-600"},[e("i",{class:"fas fa-brain text-sm text-white"})],-1)),P.value==="claude"?(n(),d("div",_a,t[120]||(t[120]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)]),t[122]||(t[122]=e("h4",{class:"mt-2 text-sm font-semibold text-gray-900 dark:text-gray-100"}," Claude ",-1)),t[123]||(t[123]=e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"Anthropic",-1))])],2),e("div",{class:S(["group relative cursor-pointer overflow-hidden rounded-lg border-2 transition-all duration-200",[P.value==="openai"?"border-emerald-500 bg-gradient-to-br from-emerald-50 to-teal-50 shadow-md dark:from-emerald-900/20 dark:to-teal-900/20":"border-gray-200 bg-white hover:border-emerald-300 hover:shadow dark:border-gray-700 dark:bg-gray-800 dark:hover:border-emerald-600"]]),onClick:t[2]||(t[2]=r=>Le("openai"))},[e("div",Ba,[e("div",Ha,[t[125]||(t[125]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-md bg-gradient-to-br from-emerald-500 to-teal-600"},[e("svg",{class:"h-5 w-5 text-white",fill:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},[e("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.8956zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4069-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z"})])],-1)),P.value==="openai"?(n(),d("div",Ja,t[124]||(t[124]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)]),t[126]||(t[126]=e("h4",{class:"mt-2 text-sm font-semibold text-gray-900 dark:text-gray-100"}," OpenAI ",-1)),t[127]||(t[127]=e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"GPT 系列",-1))])],2),e("div",{class:S(["group relative cursor-pointer overflow-hidden rounded-lg border-2 transition-all duration-200",[P.value==="gemini"?"border-blue-500 bg-gradient-to-br from-blue-50 to-indigo-50 shadow-md dark:from-blue-900/20 dark:to-indigo-900/20":"border-gray-200 bg-white hover:border-blue-300 hover:shadow dark:border-gray-700 dark:bg-gray-800 dark:hover:border-blue-600"]]),onClick:t[3]||(t[3]=r=>Le("gemini"))},[e("div",Ya,[e("div",Za,[t[129]||(t[129]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-md bg-gradient-to-br from-blue-500 to-indigo-600"},[e("i",{class:"fab fa-google text-sm text-white"})],-1)),P.value==="gemini"?(n(),d("div",Xa,t[128]||(t[128]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)]),t[130]||(t[130]=e("h4",{class:"mt-2 text-sm font-semibold text-gray-900 dark:text-gray-100"}," Gemini ",-1)),t[131]||(t[131]=e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"Google AI",-1))])],2)]),P.value?(n(),d("div",er,[t[148]||(t[148]=e("p",{class:"mb-2 text-xs font-medium text-gray-700 dark:text-gray-300"}," 选择具体平台类型: ",-1)),e("div",tr,[P.value==="claude"?(n(),d(fe,{key:0},[e("label",{class:S(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[s.value.platform==="claude"?"border-indigo-500 bg-indigo-50 dark:border-indigo-400 dark:bg-indigo-900/30":"border-gray-300 bg-white hover:border-indigo-400 hover:bg-indigo-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-indigo-500 dark:hover:bg-indigo-900/20"]])},[y(e("input",{"onUpdate:modelValue":t[4]||(t[4]=r=>s.value.platform=r),class:"sr-only",type:"radio",value:"claude"},null,512),[[Z,s.value.platform]]),t[133]||(t[133]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fas fa-brain text-sm text-indigo-600 dark:text-indigo-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"Claude Code"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"官方")])],-1)),s.value.platform==="claude"?(n(),d("div",sr,t[132]||(t[132]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)],2),e("label",{class:S(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[s.value.platform==="claude-console"?"border-purple-500 bg-purple-50 dark:border-purple-400 dark:bg-purple-900/30":"border-gray-300 bg-white hover:border-purple-400 hover:bg-purple-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-purple-500 dark:hover:bg-purple-900/20"]])},[y(e("input",{"onUpdate:modelValue":t[5]||(t[5]=r=>s.value.platform=r),class:"sr-only",type:"radio",value:"claude-console"},null,512),[[Z,s.value.platform]]),t[135]||(t[135]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fas fa-terminal text-sm text-purple-600 dark:text-purple-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"Claude Console"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"标准API")])],-1)),s.value.platform==="claude-console"?(n(),d("div",ar,t[134]||(t[134]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)],2),e("label",{class:S(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[s.value.platform==="bedrock"?"border-orange-500 bg-orange-50 dark:border-orange-400 dark:bg-orange-900/30":"border-gray-300 bg-white hover:border-orange-400 hover:bg-orange-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-orange-500 dark:hover:bg-orange-900/20"]])},[y(e("input",{"onUpdate:modelValue":t[6]||(t[6]=r=>s.value.platform=r),class:"sr-only",type:"radio",value:"bedrock"},null,512),[[Z,s.value.platform]]),t[137]||(t[137]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fab fa-aws text-sm text-orange-600 dark:text-orange-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"Bedrock"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"AWS")])],-1)),s.value.platform==="bedrock"?(n(),d("div",rr,t[136]||(t[136]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)],2),e("label",{class:S(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[s.value.platform==="ccr"?"border-cyan-500 bg-cyan-50 dark:border-cyan-400 dark:bg-cyan-900/30":"border-gray-300 bg-white hover:border-cyan-400 hover:bg-cyan-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-cyan-500 dark:hover:bg-cyan-900/20"]])},[y(e("input",{"onUpdate:modelValue":t[7]||(t[7]=r=>s.value.platform=r),class:"sr-only",type:"radio",value:"ccr"},null,512),[[Z,s.value.platform]]),t[139]||(t[139]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fas fa-code-branch text-sm text-cyan-600 dark:text-cyan-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"CCR"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"Claude Code Router")])],-1)),s.value.platform==="ccr"?(n(),d("div",lr,t[138]||(t[138]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)],2)],64)):b("",!0),P.value==="openai"?(n(),d(fe,{key:1},[e("label",{class:S(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[s.value.platform==="openai"?"border-emerald-500 bg-emerald-50 dark:border-emerald-400 dark:bg-emerald-900/30":"border-gray-300 bg-white hover:border-emerald-400 hover:bg-emerald-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-emerald-500 dark:hover:bg-emerald-900/20"]])},[y(e("input",{"onUpdate:modelValue":t[8]||(t[8]=r=>s.value.platform=r),class:"sr-only",type:"radio",value:"openai"},null,512),[[Z,s.value.platform]]),t[141]||(t[141]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fas fa-robot text-sm text-emerald-600 dark:text-emerald-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"Codex Cli"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"官方")])],-1)),s.value.platform==="openai"?(n(),d("div",or,t[140]||(t[140]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)],2),e("label",{class:S(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[s.value.platform==="openai-responses"?"border-teal-500 bg-teal-50 dark:border-teal-400 dark:bg-teal-900/30":"border-gray-300 bg-white hover:border-teal-400 hover:bg-teal-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-teal-500 dark:hover:bg-teal-900/20"]])},[y(e("input",{"onUpdate:modelValue":t[9]||(t[9]=r=>s.value.platform=r),class:"sr-only",type:"radio",value:"openai-responses"},null,512),[[Z,s.value.platform]]),t[143]||(t[143]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fas fa-server text-sm text-teal-600 dark:text-teal-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"Responses"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"Openai-Responses")])],-1)),s.value.platform==="openai-responses"?(n(),d("div",nr,t[142]||(t[142]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)],2),e("label",{class:S(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[s.value.platform==="azure_openai"?"border-blue-500 bg-blue-50 dark:border-blue-400 dark:bg-blue-900/30":"border-gray-300 bg-white hover:border-blue-400 hover:bg-blue-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-blue-500 dark:hover:bg-blue-900/20"]])},[y(e("input",{"onUpdate:modelValue":t[10]||(t[10]=r=>s.value.platform=r),class:"sr-only",type:"radio",value:"azure_openai"},null,512),[[Z,s.value.platform]]),t[145]||(t[145]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fab fa-microsoft text-sm text-blue-600 dark:text-blue-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"Azure"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"Azure Openai")])],-1)),s.value.platform==="azure_openai"?(n(),d("div",ir,t[144]||(t[144]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)],2)],64)):b("",!0),P.value==="gemini"?(n(),d("label",{key:2,class:S(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[s.value.platform==="gemini"?"border-blue-500 bg-blue-50 dark:border-blue-400 dark:bg-blue-900/30":"border-gray-300 bg-white hover:border-blue-400 hover:bg-blue-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-blue-500 dark:hover:bg-blue-900/20"]])},[y(e("input",{"onUpdate:modelValue":t[11]||(t[11]=r=>s.value.platform=r),class:"sr-only",type:"radio",value:"gemini"},null,512),[[Z,s.value.platform]]),t[147]||(t[147]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fab fa-google text-sm text-blue-600 dark:text-blue-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"Gemini Cli"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"官方")])],-1)),s.value.platform==="gemini"?(n(),d("div",dr,t[146]||(t[146]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):b("",!0)],2)):b("",!0)])])):b("",!0)])])),!k.value&&s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"&&s.value.platform!=="azure_openai"&&s.value.platform!=="openai-responses"&&s.value.platform!=="ccr"?(n(),d("div",ur,[t[153]||(t[153]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"添加方式",-1)),e("div",pr,[s.value.platform==="claude"?(n(),d("label",gr,[y(e("input",{"onUpdate:modelValue":t[12]||(t[12]=r=>s.value.addType=r),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"setup-token"},null,512),[[Z,s.value.addType]]),t[150]||(t[150]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Setup Token (推荐)",-1))])):b("",!0),e("label",mr,[y(e("input",{"onUpdate:modelValue":t[13]||(t[13]=r=>s.value.addType=r),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"oauth"},null,512),[[Z,s.value.addType]]),t[151]||(t[151]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"OAuth 授权",-1))]),e("label",yr,[y(e("input",{"onUpdate:modelValue":t[14]||(t[14]=r=>s.value.addType=r),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"manual"},null,512),[[Z,s.value.addType]]),t[152]||(t[152]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"手动输入 Access Token",-1))])])])):b("",!0),e("div",null,[t[154]||(t[154]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称",-1)),y(e("input",{"onUpdate:modelValue":t[15]||(t[15]=r=>s.value.name=r),class:S(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":$.value.name}]),placeholder:"为账户设置一个易识别的名称",required:"",type:"text"},null,2),[[A,s.value.name]]),$.value.name?(n(),d("p",xr,v($.value.name),1)):b("",!0)]),e("div",null,[t[155]||(t[155]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),y(e("textarea",{"onUpdate:modelValue":t[16]||(t[16]=r=>s.value.description=r),class:"form-input w-full resize-none border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"账户用途说明...",rows:"3"},null,512),[[A,s.value.description]])]),e("div",null,[t[159]||(t[159]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户类型",-1)),e("div",fr,[e("label",cr,[y(e("input",{"onUpdate:modelValue":t[17]||(t[17]=r=>s.value.accountType=r),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"shared"},null,512),[[Z,s.value.accountType]]),t[156]||(t[156]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"共享账户",-1))]),e("label",br,[y(e("input",{"onUpdate:modelValue":t[18]||(t[18]=r=>s.value.accountType=r),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"dedicated"},null,512),[[Z,s.value.accountType]]),t[157]||(t[157]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"专属账户",-1))]),e("label",vr,[y(e("input",{"onUpdate:modelValue":t[19]||(t[19]=r=>s.value.accountType=r),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"group"},null,512),[[Z,s.value.accountType]]),t[158]||(t[158]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"分组调度",-1))])]),t[160]||(t[160]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 共享账户:供所有API Key使用;专属账户:仅供特定API Key使用;分组调度:加入分组供分组内调度 ",-1))]),s.value.accountType==="group"?(n(),d("div",kr,[t[162]||(t[162]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择分组 *",-1)),e("div",wr,[e("div",hr,[e("div",Ar,[p.value.length===0?(n(),d("div",$r," 暂无可用分组 ")):b("",!0),(n(!0),d(fe,null,we(p.value,r=>(n(),d("label",{key:r.id,class:"flex cursor-pointer items-center gap-2 rounded-md p-2 hover:bg-gray-50 dark:hover:bg-gray-600"},[y(e("input",{"onUpdate:modelValue":t[20]||(t[20]=_=>s.value.groupIds=_),class:"rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",value:r.id},null,8,Cr),[[de,s.value.groupIds]]),e("span",Ir,v(r.name)+" ("+v(r.memberCount||0)+" 个成员) ",1)]))),128)),e("div",{class:"border-t pt-2 dark:border-gray-600"},[e("button",{class:"flex items-center gap-2 text-sm text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300",type:"button",onClick:at},t[161]||(t[161]=[e("i",{class:"fas fa-plus"},null,-1),U(" 新建分组 ",-1)]))])])]),e("button",{class:"rounded-md border border-gray-300 bg-white px-3 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:hover:bg-gray-600",type:"button",onClick:ce},[e("i",{class:S(["fas fa-sync-alt",{"animate-spin":Se.value}])},null,2)])])])):b("",!0),s.value.platform==="gemini"?(n(),d("div",Ur,[t[163]||(t[163]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"项目 ID (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[21]||(t[21]=r=>s.value.projectId=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:verdant-wares-464411-k9",type:"text"},null,512),[[A,s.value.projectId]]),t[164]||(t[164]=e("div",{class:"mt-2 rounded-lg border border-yellow-200 bg-yellow-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-yellow-600"}),e("div",{class:"text-xs text-yellow-700"},[e("p",{class:"mb-1 font-medium"},"Google Cloud/Workspace 账号需要提供项目 ID"),e("p",null," 某些 Google 账号(特别是绑定了 Google Cloud 的账号)会被识别为 Workspace 账号,需要提供额外的项目 ID。 "),e("div",{class:"mt-2 rounded border border-yellow-300 bg-white p-2"},[e("p",{class:"mb-1 font-medium"},"如何获取项目 ID:"),e("ol",{class:"ml-2 list-inside list-decimal space-y-1"},[e("li",null,[U(" 访问 "),e("a",{class:"font-medium text-blue-600 hover:underline",href:"https://console.cloud.google.com/welcome",target:"_blank"},"Google Cloud Console")]),e("li",null,[U(" 复制"),e("span",{class:"font-semibold text-red-600"},"项目 ID(Project ID)"),U(",通常是字符串格式 ")]),e("li",{class:"text-red-600"}," ⚠️ 注意:要复制项目 ID(Project ID),不要复制项目编号(Project Number)! ")])]),e("p",{class:"mt-2"},[e("strong",null,"提示:"),U("如果您的账号是普通个人账号(未绑定 Google Cloud),请留空此字段。 ")])])])],-1))])):b("",!0),s.value.platform==="bedrock"&&!k.value?(n(),d("div",Tr,[e("div",null,[t[165]||(t[165]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 访问密钥 ID *",-1)),y(e("input",{"onUpdate:modelValue":t[22]||(t[22]=r=>s.value.accessKeyId=r),class:S(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":$.value.accessKeyId}]),placeholder:"请输入 AWS Access Key ID",required:"",type:"text"},null,2),[[A,s.value.accessKeyId]]),$.value.accessKeyId?(n(),d("p",Vr,v($.value.accessKeyId),1)):b("",!0)]),e("div",null,[t[166]||(t[166]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 秘密访问密钥 *",-1)),y(e("input",{"onUpdate:modelValue":t[23]||(t[23]=r=>s.value.secretAccessKey=r),class:S(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":$.value.secretAccessKey}]),placeholder:"请输入 AWS Secret Access Key",required:"",type:"password"},null,2),[[A,s.value.secretAccessKey]]),$.value.secretAccessKey?(n(),d("p",Rr,v($.value.secretAccessKey),1)):b("",!0)]),e("div",null,[t[167]||(t[167]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 区域 *",-1)),y(e("input",{"onUpdate:modelValue":t[24]||(t[24]=r=>s.value.region=r),class:S(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":$.value.region}]),placeholder:"例如:us-east-1",required:"",type:"text"},null,2),[[A,s.value.region]]),$.value.region?(n(),d("p",zr,v($.value.region),1)):b("",!0),t[168]||(t[168]=e("div",{class:"mt-2 rounded-lg border border-blue-200 bg-blue-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-blue-600"}),e("div",{class:"text-xs text-blue-700"},[e("p",{class:"mb-1 font-medium"},"常用 AWS 区域参考:"),e("div",{class:"grid grid-cols-2 gap-1 text-xs"},[e("span",null,"• us-east-1 (美国东部)"),e("span",null,"• us-west-2 (美国西部)"),e("span",null,"• eu-west-1 (欧洲爱尔兰)"),e("span",null,"• ap-southeast-1 (新加坡)"),e("span",null,"• ap-northeast-1 (东京)"),e("span",null,"• eu-central-1 (法兰克福)")]),e("p",{class:"mt-2 text-blue-600"},"💡 请输入完整的区域代码,如 us-east-1")])])],-1))]),e("div",null,[t[169]||(t[169]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"会话令牌 (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[25]||(t[25]=r=>s.value.sessionToken=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"如果使用临时凭证,请输入会话令牌",type:"password"},null,512),[[A,s.value.sessionToken]]),t[170]||(t[170]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 仅在使用临时 AWS 凭证时需要填写 ",-1))]),e("div",null,[t[171]||(t[171]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"默认主模型 (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[26]||(t[26]=r=>s.value.defaultModel=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:us.anthropic.claude-sonnet-4-20250514-v1:0",type:"text"},null,512),[[A,s.value.defaultModel]]),t[172]||(t[172]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空将使用系统默认模型。支持 inference profile ID 或 ARN ",-1)),t[173]||(t[173]=e("div",{class:"mt-2 rounded-lg border border-amber-200 bg-amber-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-amber-600"}),e("div",{class:"text-xs text-amber-700"},[e("p",{class:"mb-1 font-medium"},"Bedrock 模型配置说明:"),e("ul",{class:"list-inside list-disc space-y-1 text-xs"},[e("li",null,"支持 Inference Profile ID(推荐)"),e("li",null,"支持 Application Inference Profile ARN"),e("li",null,"常用模型:us.anthropic.claude-sonnet-4-20250514-v1:0"),e("li",null,"留空将使用系统配置的默认模型")])])])],-1))]),e("div",null,[t[174]||(t[174]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"小快速模型 (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[27]||(t[27]=r=>s.value.smallFastModel=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:us.anthropic.claude-3-5-haiku-20241022-v1:0",type:"text"},null,512),[[A,s.value.smallFastModel]]),t[175]||(t[175]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 用于快速响应的轻量级模型,留空将使用系统默认 ",-1))])])):b("",!0),s.value.platform==="azure_openai"&&!k.value?(n(),d("div",Kr,[e("div",null,[t[176]||(t[176]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Azure Endpoint *",-1)),y(e("input",{"onUpdate:modelValue":t[28]||(t[28]=r=>s.value.azureEndpoint=r),class:S(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":$.value.azureEndpoint}]),placeholder:"https://your-resource.openai.azure.com",required:"",type:"url"},null,2),[[A,s.value.azureEndpoint]]),$.value.azureEndpoint?(n(),d("p",Sr,v($.value.azureEndpoint),1)):b("",!0),t[177]||(t[177]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," Azure OpenAI 资源的终结点 URL,格式:https://your-resource.openai.azure.com ",-1))]),e("div",null,[t[178]||(t[178]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 版本",-1)),y(e("input",{"onUpdate:modelValue":t[29]||(t[29]=r=>s.value.apiVersion=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"2024-02-01",type:"text"},null,512),[[A,s.value.apiVersion]]),t[179]||(t[179]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," Azure OpenAI API 版本,默认使用最新稳定版本 2024-02-01 ",-1))]),e("div",null,[t[180]||(t[180]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"部署名称 *",-1)),y(e("input",{"onUpdate:modelValue":t[30]||(t[30]=r=>s.value.deploymentName=r),class:S(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":$.value.deploymentName}]),placeholder:"gpt-4",required:"",type:"text"},null,2),[[A,s.value.deploymentName]]),$.value.deploymentName?(n(),d("p",Mr,v($.value.deploymentName),1)):b("",!0),t[181]||(t[181]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 在 Azure OpenAI Studio 中创建的部署名称 ",-1))]),e("div",null,[t[182]||(t[182]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key *",-1)),y(e("input",{"onUpdate:modelValue":t[31]||(t[31]=r=>s.value.apiKey=r),class:S(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":$.value.apiKey}]),placeholder:"请输入 Azure OpenAI API Key",required:"",type:"password"},null,2),[[A,s.value.apiKey]]),$.value.apiKey?(n(),d("p",Pr,v($.value.apiKey),1)):b("",!0),t[183]||(t[183]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 从 Azure 门户获取的 API 密钥 ",-1))]),e("div",null,[t[184]||(t[184]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"支持的模型",-1)),e("div",Or,[(n(),d(fe,null,we(["gpt-4","gpt-4-turbo","gpt-4o","gpt-4o-mini","gpt-5","gpt-5-mini","gpt-35-turbo","gpt-35-turbo-16k","codex-mini"],r=>e("label",{key:r,class:"flex cursor-pointer items-center"},[y(e("input",{"onUpdate:modelValue":t[32]||(t[32]=_=>s.value.supportedModels=_),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",value:r},null,8,Lr),[[de,s.value.supportedModels]]),e("span",jr,v(r),1)])),64))]),t[185]||(t[185]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 选择此部署支持的模型类型 ",-1))])])):b("",!0),s.value.platform==="bedrock"&&!k.value?(n(),d("div",Dr,[e("div",null,[t[190]||(t[190]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",Er,[e("label",Wr,[y(e("input",{"onUpdate:modelValue":t[33]||(t[33]=r=>s.value.enableRateLimit=r),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[de,s.value.enableRateLimit]]),t[186]||(t[186]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制",-1))]),t[187]||(t[187]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),d("div",qr,[t[188]||(t[188]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),y(e("input",{"onUpdate:modelValue":t[34]||(t[34]=r=>s.value.rateLimitDuration=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"默认60分钟",type:"number"},null,512),[[A,s.value.rateLimitDuration,void 0,{number:!0}]]),t[189]||(t[189]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):b("",!0)])])):b("",!0),s.value.platform==="claude-console"&&!k.value?(n(),d("div",Gr,[e("div",null,[t[191]||(t[191]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API URL *",-1)),y(e("input",{"onUpdate:modelValue":t[35]||(t[35]=r=>s.value.apiUrl=r),class:S(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":$.value.apiUrl}]),placeholder:"例如:https://api.example.com",required:"",type:"text"},null,2),[[A,s.value.apiUrl]]),$.value.apiUrl?(n(),d("p",Nr,v($.value.apiUrl),1)):b("",!0)]),e("div",null,[t[192]||(t[192]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key *",-1)),y(e("input",{"onUpdate:modelValue":t[36]||(t[36]=r=>s.value.apiKey=r),class:S(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":$.value.apiKey}]),placeholder:"请输入API Key",required:"",type:"password"},null,2),[[A,s.value.apiKey]]),$.value.apiKey?(n(),d("p",Fr,v($.value.apiKey),1)):b("",!0)]),e("div",Qr,[e("div",null,[t[193]||(t[193]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 每日额度限制 ($) ",-1)),y(e("input",{"onUpdate:modelValue":t[37]||(t[37]=r=>s.value.dailyQuota=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:"0",placeholder:"0 表示不限制",step:"0.01",type:"number"},null,512),[[A,s.value.dailyQuota,void 0,{number:!0}]]),t[194]||(t[194]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 设置每日使用额度,0 表示不限制 ",-1))]),e("div",null,[t[195]||(t[195]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 额度重置时间 ",-1)),y(e("input",{"onUpdate:modelValue":t[38]||(t[38]=r=>s.value.quotaResetTime=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",placeholder:"00:00",type:"time"},null,512),[[A,s.value.quotaResetTime]]),t[196]||(t[196]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 每日自动重置额度的时间 ",-1))])]),e("div",null,[t[200]||(t[200]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"模型映射表 (可选)",-1)),t[201]||(t[201]=e("div",{class:"mb-3 rounded-lg bg-blue-50 p-3 dark:bg-blue-900/30"},[e("p",{class:"text-xs text-blue-700 dark:text-blue-400"},[e("i",{class:"fas fa-info-circle mr-1"}),U(" 留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。 ")])],-1)),e("div",_r,[(n(!0),d(fe,null,we(ee.value,(r,_)=>(n(),d("div",{key:_,class:"flex items-center gap-2"},[y(e("input",{"onUpdate:modelValue":q=>r.from=q,class:"form-input flex-1 border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"原始模型名称",type:"text"},null,8,Br),[[A,r.from]]),t[198]||(t[198]=e("i",{class:"fas fa-arrow-right text-gray-400 dark:text-gray-500"},null,-1)),y(e("input",{"onUpdate:modelValue":q=>r.to=q,class:"form-input flex-1 border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"映射后的模型名称",type:"text"},null,8,Hr),[[A,r.to]]),e("button",{class:"rounded-lg p-2 text-red-500 transition-colors hover:bg-red-50 dark:hover:bg-red-900/20",type:"button",onClick:q=>rt(_)},t[197]||(t[197]=[e("i",{class:"fas fa-trash"},null,-1)]),8,Jr)]))),128))]),e("button",{class:"w-full rounded-lg border-2 border-dashed border-gray-300 px-4 py-2 text-gray-600 transition-colors hover:border-gray-400 hover:text-gray-700 dark:border-gray-600 dark:text-gray-400 dark:hover:border-gray-500 dark:hover:text-gray-300",type:"button",onClick:Be},t[199]||(t[199]=[e("i",{class:"fas fa-plus mr-2"},null,-1),U(" 添加模型映射 ",-1)])),e("div",Yr,[e("button",{class:"rounded-lg bg-blue-100 px-3 py-1 text-xs text-blue-700 transition-colors hover:bg-blue-200 dark:bg-blue-900/30 dark:text-blue-400 dark:hover:bg-blue-900/50",type:"button",onClick:t[39]||(t[39]=r=>he("claude-sonnet-4-20250514","claude-sonnet-4-20250514"))}," + Sonnet 4 "),e("button",{class:"rounded-lg bg-purple-100 px-3 py-1 text-xs text-purple-700 transition-colors hover:bg-purple-200 dark:bg-purple-900/30 dark:text-purple-400 dark:hover:bg-purple-900/50",type:"button",onClick:t[40]||(t[40]=r=>he("claude-opus-4-1-20250805","claude-opus-4-1-20250805"))}," + Opus 4.1 "),e("button",{class:"rounded-lg bg-green-100 px-3 py-1 text-xs text-green-700 transition-colors hover:bg-green-200 dark:bg-green-900/30 dark:text-green-400 dark:hover:bg-green-900/50",type:"button",onClick:t[41]||(t[41]=r=>he("claude-3-5-haiku-20241022","claude-3-5-haiku-20241022"))}," + Haiku 3.5 "),e("button",{class:"rounded-lg bg-orange-100 px-3 py-1 text-xs text-orange-700 transition-colors hover:bg-orange-200 dark:bg-orange-900/30 dark:text-orange-400 dark:hover:bg-orange-900/50",type:"button",onClick:t[42]||(t[42]=r=>he("claude-opus-4-1-20250805","claude-sonnet-4-20250514"))}," + Opus 4.1 → Sonnet 4 ")]),t[202]||(t[202]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空表示支持所有模型。如果指定模型,请求中的模型不在列表内将不会调度到此账号 ",-1))]),e("div",null,[t[203]||(t[203]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[43]||(t[43]=r=>s.value.userAgent=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[A,s.value.userAgent]]),t[204]||(t[204]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),e("div",null,[t[209]||(t[209]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",Zr,[e("label",Xr,[y(e("input",{"onUpdate:modelValue":t[44]||(t[44]=r=>s.value.enableRateLimit=r),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[de,s.value.enableRateLimit]]),t[205]||(t[205]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制",-1))]),t[206]||(t[206]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),d("div",el,[t[207]||(t[207]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),y(e("input",{"onUpdate:modelValue":t[45]||(t[45]=r=>s.value.rateLimitDuration=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"默认60分钟",type:"number"},null,512),[[A,s.value.rateLimitDuration,void 0,{number:!0}]]),t[208]||(t[208]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):b("",!0)])])):b("",!0),s.value.platform==="openai-responses"&&!k.value?(n(),d("div",tl,[e("div",null,[t[210]||(t[210]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 基础地址 *",-1)),y(e("input",{"onUpdate:modelValue":t[46]||(t[46]=r=>s.value.baseApi=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"https://api.example.com/v1",required:"",type:"url"},null,512),[[A,s.value.baseApi]]),t[211]||(t[211]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 第三方 OpenAI 兼容 API 的基础地址,不要包含具体路径 ",-1))]),e("div",null,[t[212]||(t[212]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 密钥 *",-1)),e("div",sl,[y(e("input",{"onUpdate:modelValue":t[47]||(t[47]=r=>s.value.apiKey=r),class:"form-input w-full border-gray-300 pr-10 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"sk-xxxxxxxxxxxx",required:"",type:Q.value?"text":"password"},null,8,al),[[yt,s.value.apiKey]]),e("button",{class:"absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-400",type:"button",onClick:t[48]||(t[48]=r=>Q.value=!Q.value)},[e("i",{class:S(Q.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])]),t[213]||(t[213]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 第三方服务提供的 API 密钥 ",-1))]),e("div",null,[t[214]||(t[214]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[49]||(t[49]=r=>s.value.userAgent=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空则透传原始请求的 User-Agent",type:"text"},null,512),[[A,s.value.userAgent]]),t[215]||(t[215]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 可选项。如果设置,所有请求将使用此 User-Agent;否则透传客户端的 User-Agent ",-1))]),y(e("input",{"onUpdate:modelValue":t[50]||(t[50]=r=>s.value.rateLimitDuration=r),type:"hidden",value:"60"},null,512),[[A,s.value.rateLimitDuration,void 0,{number:!0}]])])):b("",!0),s.value.platform==="claude"?(n(),d("div",rl,[t[218]||(t[218]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"订阅类型",-1)),e("div",ll,[e("label",ol,[y(e("input",{"onUpdate:modelValue":t[51]||(t[51]=r=>s.value.subscriptionType=r),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_max"},null,512),[[Z,s.value.subscriptionType]]),t[216]||(t[216]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Max",-1))]),e("label",nl,[y(e("input",{"onUpdate:modelValue":t[52]||(t[52]=r=>s.value.subscriptionType=r),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_pro"},null,512),[[Z,s.value.subscriptionType]]),t[217]||(t[217]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Pro",-1))])]),t[219]||(t[219]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),U(" Pro 账号不支持 Claude Opus 4 模型 ")],-1))])):b("",!0),s.value.platform==="claude"?(n(),d("div",il,[e("label",dl,[y(e("input",{"onUpdate:modelValue":t[53]||(t[53]=r=>s.value.autoStopOnWarning=r),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[de,s.value.autoStopOnWarning]]),t[220]||(t[220]=e("div",{class:"ml-3"},[e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 5小时使用量接近限制时自动停止调度 "),e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 当系统检测到账户接近5小时使用限制时,自动暂停调度该账户。进入新的时间窗口后会自动恢复调度。 ")],-1))])])):b("",!0),s.value.platform==="claude"?(n(),d("div",ul,[e("label",pl,[y(e("input",{"onUpdate:modelValue":t[54]||(t[54]=r=>s.value.useUnifiedUserAgent=r),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[de,s.value.useUnifiedUserAgent]]),e("div",gl,[t[222]||(t[222]=e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 使用统一 Claude Code 版本 ",-1)),t[223]||(t[223]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 开启后将使用从真实 Claude Code 客户端捕获的统一 User-Agent,提高兼容性 ",-1)),W.value?(n(),d("div",ml,[e("div",yl,[e("p",xl," 💡 当前统一版本:"+v(W.value),1),e("button",{class:"ml-2 text-xs text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300",disabled:w.value,type:"button",onClick:He},[w.value?(n(),d("div",bl)):(n(),d("i",cl)),U(" "+v(w.value?"清除中...":"清除缓存"),1)],8,fl)])])):(n(),d("div",vl,t[221]||(t[221]=[e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," ⏳ 等待从 Claude Code 客户端捕获 User-Agent ",-1),e("p",{class:"mt-1 text-xs text-gray-400 dark:text-gray-500"}," 💡 提示:如果长时间未能捕获,请确认有 Claude Code 客户端正在使用此账户, 或联系开发者检查 User-Agent 格式是否发生变化 ",-1)])))])])])):b("",!0),s.value.platform==="claude"?(n(),d("div",kl,[e("label",wl,[y(e("input",{"onUpdate:modelValue":t[55]||(t[55]=r=>s.value.useUnifiedClientId=r),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",onChange:nt},null,544),[[de,s.value.useUnifiedClientId]]),e("div",hl,[t[227]||(t[227]=e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 使用统一的客户端标识 ",-1)),t[228]||(t[228]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 开启后将使用固定的客户端标识,使所有请求看起来来自同一个客户端,减少特征 ",-1)),s.value.useUnifiedClientId?(n(),d("div",Al,[e("div",$l,[e("div",{class:"mb-2 flex items-center justify-between"},[t[225]||(t[225]=e("span",{class:"text-xs font-medium text-gray-600 dark:text-gray-400"},"客户端标识 ID",-1)),e("button",{class:"rounded-md bg-blue-100 px-2.5 py-1 text-xs font-medium text-blue-700 transition-colors hover:bg-blue-200 dark:bg-blue-900/30 dark:text-blue-400 dark:hover:bg-blue-900/50",type:"button",onClick:We},t[224]||(t[224]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),U(" 重新生成 ",-1)]))]),e("div",Cl,[e("code",Il,[e("span",Ul,v(s.value.unifiedClientId.substring(0,8)),1),e("span",Tl,v(s.value.unifiedClientId.substring(8,56)),1),e("span",Vl,v(s.value.unifiedClientId.substring(56)),1)])]),t[226]||(t[226]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1 text-blue-500"}),U(" 此ID将替换请求中的user_id客户端部分,保留session部分用于粘性会话 ")],-1))])])):b("",!0)])])])):b("",!0),e("div",null,[t[229]||(t[229]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"调度优先级 (1-100)",-1)),y(e("input",{"onUpdate:modelValue":t[56]||(t[56]=r=>s.value.priority=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",max:"100",min:"1",placeholder:"数字越小优先级越高,默认50",type:"number"},null,512),[[A,s.value.priority,void 0,{number:!0}]]),t[230]||(t[230]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 数字越小优先级越高,建议范围:1-100 ",-1))]),s.value.addType==="manual"&&s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"&&s.value.platform!=="azure_openai"&&s.value.platform!=="openai-responses"?(n(),d("div",Rl,[e("div",zl,[t[236]||(t[236]=e("div",{class:"mt-1 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-info text-sm text-white"})],-1)),e("div",null,[t[234]||(t[234]=e("h5",{class:"mb-2 font-semibold text-blue-900 dark:text-blue-300"}," 手动输入 Token ",-1)),s.value.platform==="claude"?(n(),d("p",Kl," 请输入有效的 Claude Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):s.value.platform==="gemini"?(n(),d("p",Sl," 请输入有效的 Gemini Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):s.value.platform==="openai"?(n(),d("p",Ml," 请输入有效的 OpenAI Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):b("",!0),e("div",Pl,[t[233]||(t[233]=e("p",{class:"mb-1 text-sm font-medium text-blue-900 dark:text-blue-300"},[e("i",{class:"fas fa-folder-open mr-1"}),U(" 获取 Access Token 的方法: ")],-1)),s.value.platform==="claude"?(n(),d("p",Ol,t[231]||(t[231]=[U(" 请从已登录 Claude Code 的机器上获取 ",-1),e("code",{class:"rounded bg-blue-100 px-1 py-0.5 font-mono dark:bg-blue-900/50"},"~/.claude/.credentials.json",-1),U(" 文件中的凭证, 请勿使用 Claude 官网 API Keys 页面的密钥。 ",-1)]))):s.value.platform==="gemini"?(n(),d("p",Ll,t[232]||(t[232]=[U(" 请从已登录 Gemini CLI 的机器上获取 ",-1),e("code",{class:"rounded bg-blue-100 px-1 py-0.5 font-mono dark:bg-blue-900/50"},"~/.config/gemini/credentials.json",-1),U(" 文件中的凭证。 ",-1)]))):s.value.platform==="openai"?(n(),d("p",jl," 请从已登录 OpenAI 账户的机器上获取认证凭证, 或通过 OAuth 授权流程获取 Access Token。 ")):b("",!0)]),t[235]||(t[235]=e("p",{class:"text-xs text-blue-600 dark:text-blue-400"}," 💡 如果未填写 Refresh Token,Token 过期后需要手动更新。 ",-1))])]),s.value.platform==="openai"?(n(),d("div",Dl,[t[237]||(t[237]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Access Token (可选)",-1)),y(e("textarea",{"onUpdate:modelValue":t[57]||(t[57]=r=>s.value.accessToken=r),class:"form-input w-full resize-none border-gray-300 font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"可选:如果不填写,系统会自动通过 Refresh Token 获取...",rows:"4"},null,512),[[A,s.value.accessToken]]),t[238]||(t[238]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),U(" Access Token 可选填。如果不提供,系统会通过 Refresh Token 自动获取。 ")],-1))])):(n(),d("div",El,[t[239]||(t[239]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Access Token *",-1)),y(e("textarea",{"onUpdate:modelValue":t[58]||(t[58]=r=>s.value.accessToken=r),class:S(["form-input w-full resize-none border-gray-300 font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":$.value.accessToken}]),placeholder:"请输入 Access Token...",required:"",rows:"4"},null,2),[[A,s.value.accessToken]]),$.value.accessToken?(n(),d("p",Wl,v($.value.accessToken),1)):b("",!0)])),s.value.platform==="openai"?(n(),d("div",ql,[t[240]||(t[240]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Refresh Token *",-1)),y(e("textarea",{"onUpdate:modelValue":t[59]||(t[59]=r=>s.value.refreshToken=r),class:S(["form-input w-full resize-none border-gray-300 font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":$.value.refreshToken}]),placeholder:"请输入 Refresh Token(必填)...",required:"",rows:"4"},null,2),[[A,s.value.refreshToken]]),$.value.refreshToken?(n(),d("p",Gl,v($.value.refreshToken),1)):b("",!0),t[241]||(t[241]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),U(" 系统将使用 Refresh Token 自动获取 Access Token 和用户信息 ")],-1))])):(n(),d("div",Nl,[t[242]||(t[242]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Refresh Token (可选)",-1)),y(e("textarea",{"onUpdate:modelValue":t[60]||(t[60]=r=>s.value.refreshToken=r),class:"form-input w-full resize-none border-gray-300 font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"请输入 Refresh Token...",rows:"4"},null,512),[[A,s.value.refreshToken]])]))])):b("",!0),ke(xt,{modelValue:s.value.proxy,"onUpdate:modelValue":t[61]||(t[61]=r=>s.value.proxy=r)},null,8,["modelValue"]),e("div",Fl,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:t[62]||(t[62]=r=>i.$emit("close"))}," 取消 "),(s.value.addType==="oauth"||s.value.addType==="setup-token")&&s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"&&s.value.platform!=="azure_openai"&&s.value.platform!=="openai-responses"?(n(),d("button",{key:0,class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:D.value,type:"button",onClick:je}," 下一步 ",8,Ql)):(n(),d("button",{key:1,class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:D.value,type:"button",onClick:Qe},[D.value?(n(),d("div",Bl)):b("",!0),U(" "+v(D.value?"创建中...":"创建"),1)],8,_l))])])])):b("",!0),E.value===2&&s.value.addType==="oauth"?(n(),$e(Hs,{key:2,platform:s.value.platform,proxy:s.value.proxy,onBack:t[63]||(t[63]=r=>E.value=1),onSuccess:Ee},null,8,["platform","proxy"])):b("",!0),E.value===2&&s.value.addType==="setup-token"?(n(),d("div",Hl,[s.value.platform==="claude"?(n(),d("div",Jl,[e("div",Yl,[e("div",Zl,[t[254]||(t[254]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-key text-white"})],-1)),e("div",Xl,[t[252]||(t[252]=e("h4",{class:"mb-3 font-semibold text-blue-900 dark:text-blue-200"}," Claude Setup Token 授权 ",-1)),t[253]||(t[253]=e("p",{class:"mb-4 text-sm text-blue-800 dark:text-blue-300"}," 请按照以下步骤通过 Setup Token 完成 Claude 账户的授权: ",-1)),e("div",eo,[e("div",to,[e("div",so,[t[245]||(t[245]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",ao,[t[244]||(t[244]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 点击下方按钮生成授权链接 ",-1)),u.value?(n(),d("div",no,[e("div",io,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:u.value},null,8,uo),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:tt},[e("i",{class:S(O.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-blue-600 hover:text-blue-700",onClick:Fe},t[243]||(t[243]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),U("重新生成 ",-1)]))])):(n(),d("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:Y.value,onClick:De},[Y.value?(n(),d("div",oo)):(n(),d("i",lo)),U(" "+v(Y.value?"生成中...":"生成 Setup Token 授权链接"),1)],8,ro))])])]),t[251]||(t[251]=e("div",{class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},[e("div",{class:"flex items-start gap-3"},[e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 2 "),e("div",{class:"flex-1"},[e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 在浏览器中打开链接并完成授权 "),e("p",{class:"mb-2 text-sm text-blue-700 dark:text-blue-300"}," 请在新标签页中打开授权链接,登录您的 Claude 账户并授权 Claude Code。 "),e("div",{class:"rounded border border-yellow-300 bg-yellow-50 p-3 dark:border-yellow-700 dark:bg-yellow-900/30"},[e("p",{class:"text-xs text-yellow-800 dark:text-yellow-300"},[e("i",{class:"fas fa-exclamation-triangle mr-1"}),e("strong",null,"注意:"),U("如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。 ")])])])])],-1)),e("div",po,[e("div",go,[t[250]||(t[250]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",mo,[t[248]||(t[248]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 输入 Authorization Code ",-1)),t[249]||(t[249]=e("p",{class:"mb-3 text-sm text-blue-700 dark:text-blue-300"}," 授权完成后,从返回页面复制 Authorization Code,并粘贴到下方输入框: ",-1)),e("div",yo,[e("div",null,[t[246]||(t[246]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-key mr-2 text-blue-500"}),U("Authorization Code ")],-1)),y(e("textarea",{"onUpdate:modelValue":t[64]||(t[64]=r=>f.value=r),class:"form-input w-full resize-none border-gray-300 font-mono text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"粘贴从Claude Code授权页面获取的Authorization Code...",rows:"3"},null,512),[[A,f.value]])]),t[247]||(t[247]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),U(" 请粘贴从Claude Code授权页面复制的Authorization Code ")],-1))])])])])])])])])])):b("",!0),e("div",xo,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:t[65]||(t[65]=r=>E.value=1)}," 上一步 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:!Ge.value||N.value,type:"button",onClick:st},[N.value?(n(),d("div",co)):b("",!0),U(" "+v(N.value?"验证中...":"完成授权"),1)],8,fo)])])):b("",!0),k.value?(n(),d("div",bo,[e("div",null,[t[255]||(t[255]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称",-1)),y(e("input",{"onUpdate:modelValue":t[66]||(t[66]=r=>s.value.name=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"为账户设置一个易识别的名称",required:"",type:"text"},null,512),[[A,s.value.name]])]),e("div",null,[t[256]||(t[256]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),y(e("textarea",{"onUpdate:modelValue":t[67]||(t[67]=r=>s.value.description=r),class:"form-input w-full resize-none border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"账户用途说明...",rows:"3"},null,512),[[A,s.value.description]])]),e("div",null,[t[260]||(t[260]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户类型",-1)),e("div",vo,[e("label",ko,[y(e("input",{"onUpdate:modelValue":t[68]||(t[68]=r=>s.value.accountType=r),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"shared"},null,512),[[Z,s.value.accountType]]),t[257]||(t[257]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"共享账户",-1))]),e("label",wo,[y(e("input",{"onUpdate:modelValue":t[69]||(t[69]=r=>s.value.accountType=r),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"dedicated"},null,512),[[Z,s.value.accountType]]),t[258]||(t[258]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"专属账户",-1))]),e("label",ho,[y(e("input",{"onUpdate:modelValue":t[70]||(t[70]=r=>s.value.accountType=r),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"group"},null,512),[[Z,s.value.accountType]]),t[259]||(t[259]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"分组调度",-1))])]),t[261]||(t[261]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 共享账户:供所有API Key使用;专属账户:仅供特定API Key使用;分组调度:加入分组供分组内调度 ",-1))]),s.value.accountType==="group"?(n(),d("div",Ao,[t[263]||(t[263]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择分组 *",-1)),e("div",$o,[e("div",Co,[e("div",Io,[p.value.length===0?(n(),d("div",Uo," 暂无可用分组 ")):b("",!0),(n(!0),d(fe,null,we(p.value,r=>(n(),d("label",{key:r.id,class:"flex cursor-pointer items-center gap-2 rounded-md p-2 hover:bg-gray-50 dark:hover:bg-gray-600"},[y(e("input",{"onUpdate:modelValue":t[71]||(t[71]=_=>s.value.groupIds=_),class:"rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",value:r.id},null,8,To),[[de,s.value.groupIds]]),e("span",Vo,v(r.name)+" ("+v(r.memberCount||0)+" 个成员) ",1)]))),128)),e("div",{class:"border-t pt-2 dark:border-gray-600"},[e("button",{class:"flex items-center gap-2 text-sm text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-300",type:"button",onClick:at},t[262]||(t[262]=[e("i",{class:"fas fa-plus"},null,-1),U(" 新建分组 ",-1)]))])])]),e("button",{class:"rounded-md border border-gray-300 bg-white px-3 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:hover:bg-gray-600",type:"button",onClick:ce},[e("i",{class:S(["fas fa-sync-alt",{"animate-spin":Se.value}])},null,2)])])])):b("",!0),s.value.platform==="gemini"?(n(),d("div",Ro,[t[264]||(t[264]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"项目 ID (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[72]||(t[72]=r=>s.value.projectId=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:verdant-wares-464411-k9",type:"text"},null,512),[[A,s.value.projectId]]),t[265]||(t[265]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," Google Cloud/Workspace 账号可能需要提供项目 ID ",-1))])):b("",!0),s.value.platform==="claude"?(n(),d("div",zo,[t[268]||(t[268]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"订阅类型",-1)),e("div",Ko,[e("label",So,[y(e("input",{"onUpdate:modelValue":t[73]||(t[73]=r=>s.value.subscriptionType=r),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_max"},null,512),[[Z,s.value.subscriptionType]]),t[266]||(t[266]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Max",-1))]),e("label",Mo,[y(e("input",{"onUpdate:modelValue":t[74]||(t[74]=r=>s.value.subscriptionType=r),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_pro"},null,512),[[Z,s.value.subscriptionType]]),t[267]||(t[267]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Pro",-1))])]),t[269]||(t[269]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),U(" Pro 账号不支持 Claude Opus 4 模型 ")],-1))])):b("",!0),s.value.platform==="claude"?(n(),d("div",Po,[e("label",Oo,[y(e("input",{"onUpdate:modelValue":t[75]||(t[75]=r=>s.value.autoStopOnWarning=r),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[de,s.value.autoStopOnWarning]]),t[270]||(t[270]=e("div",{class:"ml-3"},[e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 5小时使用量接近限制时自动停止调度 "),e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 当系统检测到账户接近5小时使用限制时,自动暂停调度该账户。进入新的时间窗口后会自动恢复调度。 ")],-1))])])):b("",!0),s.value.platform==="claude"?(n(),d("div",Lo,[e("label",jo,[y(e("input",{"onUpdate:modelValue":t[76]||(t[76]=r=>s.value.useUnifiedUserAgent=r),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[de,s.value.useUnifiedUserAgent]]),e("div",Do,[t[272]||(t[272]=e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 使用统一 Claude Code 版本 ",-1)),t[273]||(t[273]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 开启后将使用从真实 Claude Code 客户端捕获的统一 User-Agent,提高兼容性 ",-1)),W.value?(n(),d("div",Eo,[e("div",Wo,[e("p",qo," 💡 当前统一版本:"+v(W.value),1),e("button",{class:"ml-2 text-xs text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300",disabled:w.value,type:"button",onClick:He},[w.value?(n(),d("div",Fo)):(n(),d("i",No)),U(" "+v(w.value?"清除中...":"清除缓存"),1)],8,Go)])])):(n(),d("div",Qo,t[271]||(t[271]=[e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," ⏳ 等待从 Claude Code 客户端捕获 User-Agent ",-1),e("p",{class:"mt-1 text-xs text-gray-400 dark:text-gray-500"}," 💡 提示:如果长时间未能捕获,请确认有 Claude Code 客户端正在使用此账户, 或联系开发者检查 User-Agent 格式是否发生变化 ",-1)])))])])])):b("",!0),s.value.platform==="claude"?(n(),d("div",_o,[e("label",Bo,[y(e("input",{"onUpdate:modelValue":t[77]||(t[77]=r=>s.value.useUnifiedClientId=r),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",onChange:nt},null,544),[[de,s.value.useUnifiedClientId]]),e("div",Ho,[t[277]||(t[277]=e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 使用统一的客户端标识 ",-1)),t[278]||(t[278]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 开启后将使用固定的客户端标识,使所有请求看起来来自同一个客户端,减少特征 ",-1)),s.value.useUnifiedClientId?(n(),d("div",Jo,[e("div",Yo,[e("div",{class:"mb-2 flex items-center justify-between"},[t[275]||(t[275]=e("span",{class:"text-xs font-medium text-gray-600 dark:text-gray-400"},"客户端标识 ID",-1)),e("button",{class:"rounded-md bg-blue-100 px-2.5 py-1 text-xs font-medium text-blue-700 transition-colors hover:bg-blue-200 dark:bg-blue-900/30 dark:text-blue-400 dark:hover:bg-blue-900/50",type:"button",onClick:We},t[274]||(t[274]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),U(" 重新生成 ",-1)]))]),e("div",Zo,[e("code",Xo,[e("span",en,v(s.value.unifiedClientId.substring(0,8)),1),e("span",tn,v(s.value.unifiedClientId.substring(8,56)),1),e("span",sn,v(s.value.unifiedClientId.substring(56)),1)])]),t[276]||(t[276]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1 text-blue-500"}),U(" 此ID将替换请求中的user_id客户端部分,保留session部分用于粘性会话 ")],-1))])])):b("",!0)])])])):b("",!0),e("div",null,[t[279]||(t[279]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"调度优先级 (1-100)",-1)),y(e("input",{"onUpdate:modelValue":t[78]||(t[78]=r=>s.value.priority=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",max:"100",min:"1",placeholder:"数字越小优先级越高",type:"number"},null,512),[[A,s.value.priority,void 0,{number:!0}]]),t[280]||(t[280]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 数字越小优先级越高,建议范围:1-100 ",-1))]),s.value.platform==="claude-console"?(n(),d("div",an,[e("div",null,[t[281]||(t[281]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API URL",-1)),y(e("input",{"onUpdate:modelValue":t[79]||(t[79]=r=>s.value.apiUrl=r),class:"form-input w-full",placeholder:"例如:https://api.example.com",required:"",type:"text"},null,512),[[A,s.value.apiUrl]])]),e("div",null,[t[282]||(t[282]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API Key",-1)),y(e("input",{"onUpdate:modelValue":t[80]||(t[80]=r=>s.value.apiKey=r),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[A,s.value.apiKey]]),t[283]||(t[283]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 API Key",-1))]),e("div",rn,[e("div",null,[t[284]||(t[284]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 每日额度限制 ($) ",-1)),y(e("input",{"onUpdate:modelValue":t[81]||(t[81]=r=>s.value.dailyQuota=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:"0",placeholder:"0 表示不限制",step:"0.01",type:"number"},null,512),[[A,s.value.dailyQuota,void 0,{number:!0}]]),t[285]||(t[285]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 设置每日使用额度,0 表示不限制 ",-1))]),e("div",null,[t[286]||(t[286]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 额度重置时间 ",-1)),y(e("input",{"onUpdate:modelValue":t[82]||(t[82]=r=>s.value.quotaResetTime=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",placeholder:"00:00",type:"time"},null,512),[[A,s.value.quotaResetTime]]),t[287]||(t[287]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},"每日自动重置额度的时间",-1))])]),k.value&&s.value.dailyQuota>0?(n(),d("div",ln,[e("div",on,[t[288]||(t[288]=e("span",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"}," 今日使用情况 ",-1)),e("span",nn," $"+v(Oe().toFixed(4))+" / $"+v(s.value.dailyQuota.toFixed(2)),1)]),e("div",dn,[e("div",{class:S(["absolute left-0 top-0 h-full rounded-full transition-all",Me.value>=90?"bg-red-500":Me.value>=70?"bg-yellow-500":"bg-green-500"]),style:et({width:`${Math.min(Me.value,100)}%`})},null,6)]),e("div",un,[e("span",pn," 剩余: $"+v(Math.max(0,s.value.dailyQuota-Oe()).toFixed(2)),1),e("span",gn,v(Me.value.toFixed(1))+"% 已使用 ",1)])])):b("",!0),e("div",null,[t[292]||(t[292]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"模型映射表 (可选)",-1)),t[293]||(t[293]=e("div",{class:"mb-3 rounded-lg bg-blue-50 p-3"},[e("p",{class:"text-xs text-blue-700"},[e("i",{class:"fas fa-info-circle mr-1"}),U(" 留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。 ")])],-1)),e("div",mn,[(n(!0),d(fe,null,we(ee.value,(r,_)=>(n(),d("div",{key:_,class:"flex items-center gap-2"},[y(e("input",{"onUpdate:modelValue":q=>r.from=q,class:"form-input flex-1",placeholder:"原始模型名称",type:"text"},null,8,yn),[[A,r.from]]),t[290]||(t[290]=e("i",{class:"fas fa-arrow-right text-gray-400"},null,-1)),y(e("input",{"onUpdate:modelValue":q=>r.to=q,class:"form-input flex-1",placeholder:"映射后的模型名称",type:"text"},null,8,xn),[[A,r.to]]),e("button",{class:"rounded-lg p-2 text-red-500 transition-colors hover:bg-red-50",type:"button",onClick:q=>rt(_)},t[289]||(t[289]=[e("i",{class:"fas fa-trash"},null,-1)]),8,fn)]))),128))]),e("button",{class:"w-full rounded-lg border-2 border-dashed border-gray-300 px-4 py-2 text-gray-600 transition-colors hover:border-gray-400 hover:text-gray-700",type:"button",onClick:Be},t[291]||(t[291]=[e("i",{class:"fas fa-plus mr-2"},null,-1),U(" 添加模型映射 ",-1)])),e("div",cn,[e("button",{class:"rounded-lg bg-blue-100 px-3 py-1 text-xs text-blue-700 transition-colors hover:bg-blue-200",type:"button",onClick:t[83]||(t[83]=r=>he("claude-sonnet-4-20250514","claude-sonnet-4-20250514"))}," + Sonnet 4 "),e("button",{class:"rounded-lg bg-purple-100 px-3 py-1 text-xs text-purple-700 transition-colors hover:bg-purple-200",type:"button",onClick:t[84]||(t[84]=r=>he("claude-opus-4-1-20250805","claude-opus-4-1-20250805"))}," + Opus 4.1 "),e("button",{class:"rounded-lg bg-green-100 px-3 py-1 text-xs text-green-700 transition-colors hover:bg-green-200",type:"button",onClick:t[85]||(t[85]=r=>he("claude-3-5-haiku-20241022","claude-3-5-haiku-20241022"))}," + Haiku 3.5 "),e("button",{class:"rounded-lg bg-orange-100 px-3 py-1 text-xs text-orange-700 transition-colors hover:bg-orange-200",type:"button",onClick:t[86]||(t[86]=r=>he("claude-opus-4-1-20250805","claude-sonnet-4-20250514"))}," + Opus 4.1 → Sonnet 4 ")]),t[294]||(t[294]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空表示支持所有模型。如果指定模型,请求中的模型不在列表内将不会调度到此账号 ",-1))]),e("div",null,[t[295]||(t[295]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"自定义 User-Agent (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[87]||(t[87]=r=>s.value.userAgent=r),class:"form-input w-full",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[A,s.value.userAgent]]),t[296]||(t[296]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),e("div",null,[t[301]||(t[301]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流机制",-1)),e("div",bn,[e("label",vn,[y(e("input",{"onUpdate:modelValue":t[88]||(t[88]=r=>s.value.enableRateLimit=r),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200",type:"checkbox"},null,512),[[de,s.value.enableRateLimit]]),t[297]||(t[297]=e("span",{class:"text-sm text-gray-700"},"启用限流机制",-1))]),t[298]||(t[298]=e("p",{class:"mt-1 text-xs text-gray-500"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),d("div",kn,[t[299]||(t[299]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流时间 (分钟)",-1)),y(e("input",{"onUpdate:modelValue":t[89]||(t[89]=r=>s.value.rateLimitDuration=r),class:"form-input w-full",min:"1",type:"number"},null,512),[[A,s.value.rateLimitDuration,void 0,{number:!0}]]),t[300]||(t[300]=e("p",{class:"mt-1 text-xs text-gray-500"},"账号被限流后暂停调度的时间(分钟)",-1))])):b("",!0)])])):b("",!0),s.value.platform==="openai-responses"?(n(),d("div",wn,[e("div",null,[t[302]||(t[302]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API 基础地址",-1)),y(e("input",{"onUpdate:modelValue":t[90]||(t[90]=r=>s.value.baseApi=r),class:"form-input w-full",placeholder:"https://api.example.com/v1",type:"url"},null,512),[[A,s.value.baseApi]])]),e("div",null,[t[303]||(t[303]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API 密钥",-1)),e("div",hn,[y(e("input",{"onUpdate:modelValue":t[91]||(t[91]=r=>s.value.apiKey=r),class:"form-input w-full pr-10",placeholder:"留空表示不更新",type:Q.value?"text":"password"},null,8,An),[[yt,s.value.apiKey]]),e("button",{class:"absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600",type:"button",onClick:t[92]||(t[92]=r=>Q.value=!Q.value)},[e("i",{class:S(Q.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])]),t[304]||(t[304]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 API Key",-1))]),e("div",null,[t[305]||(t[305]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"自定义 User-Agent",-1)),y(e("input",{"onUpdate:modelValue":t[93]||(t[93]=r=>s.value.userAgent=r),class:"form-input w-full",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[A,s.value.userAgent]]),t[306]||(t[306]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),y(e("input",{"onUpdate:modelValue":t[94]||(t[94]=r=>s.value.rateLimitDuration=r),type:"hidden"},null,512),[[A,s.value.rateLimitDuration,void 0,{number:!0}]]),e("div",$n,[e("div",null,[t[307]||(t[307]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 每日额度限制 ($) ",-1)),y(e("input",{"onUpdate:modelValue":t[95]||(t[95]=r=>s.value.dailyQuota=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:"0",placeholder:"0 表示不限制",step:"0.01",type:"number"},null,512),[[A,s.value.dailyQuota,void 0,{number:!0}]])]),e("div",null,[t[308]||(t[308]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 额度重置时间 ",-1)),y(e("input",{"onUpdate:modelValue":t[96]||(t[96]=r=>s.value.quotaResetTime=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",type:"time"},null,512),[[A,s.value.quotaResetTime]])])])])):b("",!0),s.value.platform==="bedrock"?(n(),d("div",Cn,[e("div",null,[t[309]||(t[309]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 访问密钥 ID",-1)),y(e("input",{"onUpdate:modelValue":t[97]||(t[97]=r=>s.value.accessKeyId=r),class:"form-input w-full",placeholder:"留空表示不更新",type:"text"},null,512),[[A,s.value.accessKeyId]]),t[310]||(t[310]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 AWS Access Key ID",-1))]),e("div",null,[t[311]||(t[311]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 秘密访问密钥",-1)),y(e("input",{"onUpdate:modelValue":t[98]||(t[98]=r=>s.value.secretAccessKey=r),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[A,s.value.secretAccessKey]]),t[312]||(t[312]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 AWS Secret Access Key",-1))]),e("div",null,[t[313]||(t[313]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 区域",-1)),y(e("input",{"onUpdate:modelValue":t[99]||(t[99]=r=>s.value.region=r),class:"form-input w-full",placeholder:"例如:us-east-1",type:"text"},null,512),[[A,s.value.region]]),t[314]||(t[314]=e("div",{class:"mt-2 rounded-lg border border-blue-200 bg-blue-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-blue-600"}),e("div",{class:"text-xs text-blue-700"},[e("p",{class:"mb-1 font-medium"},"常用 AWS 区域参考:"),e("div",{class:"grid grid-cols-2 gap-1 text-xs"},[e("span",null,"• us-east-1 (美国东部)"),e("span",null,"• us-west-2 (美国西部)"),e("span",null,"• eu-west-1 (欧洲爱尔兰)"),e("span",null,"• ap-southeast-1 (新加坡)"),e("span",null,"• ap-northeast-1 (东京)"),e("span",null,"• eu-central-1 (法兰克福)")])])])],-1))]),e("div",null,[t[315]||(t[315]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"会话令牌 (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[100]||(t[100]=r=>s.value.sessionToken=r),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[A,s.value.sessionToken]])]),e("div",null,[t[316]||(t[316]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"默认主模型 (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[101]||(t[101]=r=>s.value.defaultModel=r),class:"form-input w-full",placeholder:"例如:us.anthropic.claude-sonnet-4-20250514-v1:0",type:"text"},null,512),[[A,s.value.defaultModel]]),t[317]||(t[317]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空将使用系统默认模型。支持 inference profile ID 或 ARN ",-1))]),e("div",null,[t[318]||(t[318]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"小快速模型 (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[102]||(t[102]=r=>s.value.smallFastModel=r),class:"form-input w-full",placeholder:"例如:us.anthropic.claude-3-5-haiku-20241022-v1:0",type:"text"},null,512),[[A,s.value.smallFastModel]]),t[319]||(t[319]=e("p",{class:"mt-1 text-xs text-gray-500"},"用于快速响应的轻量级模型,留空将使用系统默认",-1))]),e("div",null,[t[324]||(t[324]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流机制",-1)),e("div",In,[e("label",Un,[y(e("input",{"onUpdate:modelValue":t[103]||(t[103]=r=>s.value.enableRateLimit=r),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200",type:"checkbox"},null,512),[[de,s.value.enableRateLimit]]),t[320]||(t[320]=e("span",{class:"text-sm text-gray-700"},"启用限流机制",-1))]),t[321]||(t[321]=e("p",{class:"mt-1 text-xs text-gray-500"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),d("div",Tn,[t[322]||(t[322]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流时间 (分钟)",-1)),y(e("input",{"onUpdate:modelValue":t[104]||(t[104]=r=>s.value.rateLimitDuration=r),class:"form-input w-full",min:"1",type:"number"},null,512),[[A,s.value.rateLimitDuration,void 0,{number:!0}]]),t[323]||(t[323]=e("p",{class:"mt-1 text-xs text-gray-500"},"账号被限流后暂停调度的时间(分钟)",-1))])):b("",!0)])])):b("",!0),s.value.platform==="azure_openai"?(n(),d("div",Vn,[e("div",null,[t[325]||(t[325]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Azure Endpoint",-1)),y(e("input",{"onUpdate:modelValue":t[105]||(t[105]=r=>s.value.azureEndpoint=r),class:S(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":$.value.azureEndpoint}]),placeholder:"https://your-resource.openai.azure.com",type:"url"},null,2),[[A,s.value.azureEndpoint]]),$.value.azureEndpoint?(n(),d("p",Rn,v($.value.azureEndpoint),1)):b("",!0)]),e("div",null,[t[326]||(t[326]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 版本",-1)),y(e("input",{"onUpdate:modelValue":t[106]||(t[106]=r=>s.value.apiVersion=r),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"2024-02-01",type:"text"},null,512),[[A,s.value.apiVersion]]),t[327]||(t[327]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," Azure OpenAI API 版本,默认使用最新稳定版本 2024-02-01 ",-1))]),e("div",null,[t[328]||(t[328]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"部署名称",-1)),y(e("input",{"onUpdate:modelValue":t[107]||(t[107]=r=>s.value.deploymentName=r),class:S(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":$.value.deploymentName}]),placeholder:"gpt-4",type:"text"},null,2),[[A,s.value.deploymentName]]),$.value.deploymentName?(n(),d("p",zn,v($.value.deploymentName),1)):b("",!0)]),e("div",null,[t[329]||(t[329]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key",-1)),y(e("input",{"onUpdate:modelValue":t[108]||(t[108]=r=>s.value.apiKey=r),class:S(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":$.value.apiKey}]),placeholder:"留空表示不更新",type:"password"},null,2),[[A,s.value.apiKey]]),$.value.apiKey?(n(),d("p",Kn,v($.value.apiKey),1)):b("",!0),t[330]||(t[330]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},"留空表示不更新 API Key",-1))]),e("div",null,[t[331]||(t[331]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"支持的模型",-1)),e("div",Sn,[(n(),d(fe,null,we(["gpt-4","gpt-4-turbo","gpt-4o","gpt-4o-mini","gpt-5","gpt-5-mini","gpt-35-turbo","gpt-35-turbo-16k","codex-mini"],r=>e("label",{key:r,class:"flex cursor-pointer items-center"},[y(e("input",{"onUpdate:modelValue":t[109]||(t[109]=_=>s.value.supportedModels=_),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",value:r},null,8,Mn),[[de,s.value.supportedModels]]),e("span",Pn,v(r),1)])),64))]),t[332]||(t[332]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},"选择此部署支持的模型类型",-1))])])):b("",!0),s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"&&s.value.platform!=="azure_openai"&&s.value.platform!=="openai-responses"?(n(),d("div",On,[t[335]||(t[335]=e("div",{class:"mb-4 flex items-start gap-3"},[e("div",{class:"mt-1 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-amber-500"},[e("i",{class:"fas fa-key text-sm text-white"})]),e("div",null,[e("h5",{class:"mb-2 font-semibold text-amber-900 dark:text-amber-300"},"更新 Token"),e("p",{class:"mb-2 text-sm text-amber-800 dark:text-amber-300"}," 可以更新 Access Token 和 Refresh Token。为了安全起见,不会显示当前的 Token 值。 "),e("p",{class:"text-xs text-amber-600 dark:text-amber-400"},"💡 留空表示不更新该字段。")])],-1)),e("div",Ln,[e("div",null,[t[333]||(t[333]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新的 Access Token",-1)),y(e("textarea",{"onUpdate:modelValue":t[110]||(t[110]=r=>s.value.accessToken=r),class:"form-input w-full resize-none border-gray-300 font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空表示不更新...",rows:"4"},null,512),[[A,s.value.accessToken]])]),e("div",null,[t[334]||(t[334]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新的 Refresh Token",-1)),y(e("textarea",{"onUpdate:modelValue":t[111]||(t[111]=r=>s.value.refreshToken=r),class:"form-input w-full resize-none border-gray-300 font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空表示不更新...",rows:"4"},null,512),[[A,s.value.refreshToken]])])])])):b("",!0),ke(xt,{modelValue:s.value.proxy,"onUpdate:modelValue":t[112]||(t[112]=r=>s.value.proxy=r)},null,8,["modelValue"]),e("div",jn,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:t[113]||(t[113]=r=>i.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:D.value,type:"button",onClick:_e},[D.value?(n(),d("div",En)):b("",!0),U(" "+v(D.value?"更新中...":"更新"),1)],8,Dn)])])):b("",!0)])])):b("",!0),ke(Tt,{"cancel-text":ye(G).cancelText,"confirm-text":ye(G).confirmText,message:ye(G).message,show:ye(L),title:ye(G).title,onCancel:ye(M),onConfirm:ye(c)},null,8,["cancel-text","confirm-text","message","show","title","onCancel","onConfirm"]),m.value?(n(),$e(Ra,{key:1,onClose:t[114]||(t[114]=r=>m.value=!1),onRefresh:gt})):b("",!0)]))}},It=ct(Wn,[["__scopeId","data-v-abc833b6"]]),qn={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},Gn={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-2xl overflow-y-auto p-4 sm:p-6 md:p-8"},Nn={class:"mb-4 flex items-center justify-between sm:mb-6"},Fn={class:"flex items-center gap-2 sm:gap-3"},Qn={class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"},_n={class:"space-y-6"},Bn={key:0,class:"mt-1 text-xs text-red-500"},Hn={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},Jn={key:0,class:"mt-1 text-xs text-red-500"},Yn={class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},Zn=["placeholder","required"],Xn={key:0,class:"mt-1 text-xs text-red-500"},ei={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},ti={class:"mb-3"},si={class:"inline-flex cursor-pointer items-center"},ai={key:0},ri={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},li={class:"mb-3 space-y-2"},oi=["onUpdate:modelValue"],ni=["onUpdate:modelValue"],ii=["onClick"],di={class:"mt-2 flex gap-3"},ui=["disabled"],pi={key:0,class:"loading-spinner mr-2"},gi={__name:"CcrAccountForm",props:{account:{type:Object,default:null}},emits:["close","success"],setup(ne,{emit:ue}){const x=ne,X=ue,T=I(!0),L=Re(()=>!!x.account),G=I(!1),g=I({name:"",description:"",apiUrl:"",apiKey:"",priority:50,userAgent:"",rateLimitDuration:60,dailyQuota:0,quotaResetTime:"00:00",proxy:null,supportedModels:{}}),c=I(!0),M=I({}),k=I([]),j=()=>{const u={};for(const f of k.value){const O=(f.from||"").trim(),oe=(f.to||"").trim();O&&oe&&(u[O]=oe)}return u},E=()=>{k.value.push({from:"",to:""})},D=u=>{k.value.splice(u,1)},Q=()=>{const u={};return(!g.value.name||g.value.name.trim().length===0)&&(u.name="名称不能为空"),(!g.value.apiUrl||g.value.apiUrl.trim().length===0)&&(u.apiUrl="API URL 不能为空"),!L.value&&(!g.value.apiKey||g.value.apiKey.trim().length===0)&&(u.apiKey="API Key 不能为空"),M.value=u,Object.keys(u).length===0},Y=async()=>{if(Q()){G.value=!0;try{if(L.value){const u={name:g.value.name,description:g.value.description,apiUrl:g.value.apiUrl,priority:g.value.priority,userAgent:g.value.userAgent,rateLimitDuration:c.value?Number(g.value.rateLimitDuration||60):0,dailyQuota:Number(g.value.dailyQuota||0),quotaResetTime:g.value.quotaResetTime||"00:00",proxy:g.value.proxy||null,supportedModels:j()};g.value.apiKey&&g.value.apiKey.trim().length>0&&(u.apiKey=g.value.apiKey);const f=await z.put(`/admin/ccr-accounts/${x.account.id}`,u);f.success?(K("保存成功","success"),X("success")):K(f.message||"保存失败","error")}else{const u={name:g.value.name,description:g.value.description,apiUrl:g.value.apiUrl,apiKey:g.value.apiKey,priority:Number(g.value.priority||50),supportedModels:j(),userAgent:g.value.userAgent,rateLimitDuration:c.value?Number(g.value.rateLimitDuration||60):0,proxy:g.value.proxy,accountType:"shared",dailyQuota:Number(g.value.dailyQuota||0),quotaResetTime:g.value.quotaResetTime||"00:00"},f=await z.post("/admin/ccr-accounts",u);f.success?(K("创建成功","success"),X("success")):K(f.message||"创建失败","error")}}catch(u){K(u.message||"请求失败","error")}finally{G.value=!1}}},N=()=>{if(!x.account)return;const u=x.account;g.value.name=u.name||"",g.value.description=u.description||"",g.value.apiUrl=u.apiUrl||"",g.value.priority=Number(u.priority||50),g.value.userAgent=u.userAgent||"",g.value.rateLimitDuration=Number(u.rateLimitDuration||60),g.value.dailyQuota=Number(u.dailyQuota||0),g.value.quotaResetTime=u.quotaResetTime||"00:00",g.value.proxy=u.proxy||null,c.value=g.value.rateLimitDuration>0,k.value=[];const f=u.supportedModels||{};if(f&&typeof f=="object")for(const O of Object.keys(f))k.value.push({from:O,to:f[O]})};return pt(()=>{L.value&&N()}),J(()=>x.account,()=>{L.value&&N()}),(u,f)=>(n(),$e(ft,{to:"body"},[T.value?(n(),d("div",qn,[e("div",Gn,[e("div",Nn,[e("div",Fn,[f[13]||(f[13]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-teal-500 to-emerald-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-code-branch text-sm text-white sm:text-base"})],-1)),e("h3",Qn,v(L.value?"编辑 CCR 账户":"添加 CCR 账户"),1)]),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600",onClick:f[0]||(f[0]=O=>u.$emit("close"))},f[14]||(f[14]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("div",_n,[e("div",null,[f[15]||(f[15]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称 *",-1)),y(e("input",{"onUpdate:modelValue":f[1]||(f[1]=O=>g.value.name=O),class:S(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"border-red-500":M.value.name}]),placeholder:"为账户设置一个易识别的名称",required:"",type:"text"},null,2),[[A,g.value.name]]),M.value.name?(n(),d("p",Bn,v(M.value.name),1)):b("",!0)]),e("div",null,[f[16]||(f[16]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),y(e("textarea",{"onUpdate:modelValue":f[2]||(f[2]=O=>g.value.description=O),class:"form-input w-full resize-none border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",placeholder:"账户用途说明...",rows:"3"},null,512),[[A,g.value.description]])]),e("div",Hn,[e("div",null,[f[17]||(f[17]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API URL *",-1)),y(e("input",{"onUpdate:modelValue":f[3]||(f[3]=O=>g.value.apiUrl=O),class:S(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"border-red-500":M.value.apiUrl}]),placeholder:"例如:https://api.example.com/v1/messages",required:"",type:"text"},null,2),[[A,g.value.apiUrl]]),M.value.apiUrl?(n(),d("p",Jn,v(M.value.apiUrl),1)):b("",!0)]),e("div",null,[e("label",Yn,"API Key "+v(L.value?"(留空不更新)":"*"),1),y(e("input",{"onUpdate:modelValue":f[4]||(f[4]=O=>g.value.apiKey=O),class:S(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"border-red-500":M.value.apiKey}]),placeholder:L.value?"留空表示不更新":"必填",required:!L.value,type:"password"},null,10,Zn),[[A,g.value.apiKey]]),M.value.apiKey?(n(),d("p",Xn,v(M.value.apiKey),1)):b("",!0)])]),e("div",ei,[e("div",null,[f[18]||(f[18]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"优先级",-1)),y(e("input",{"onUpdate:modelValue":f[5]||(f[5]=O=>g.value.priority=O),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",max:"100",min:"1",placeholder:"默认50,数字越小优先级越高",type:"number"},null,512),[[A,g.value.priority,void 0,{number:!0}]]),f[19]||(f[19]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 建议范围:1-100,数字越小优先级越高 ",-1))]),e("div",null,[f[20]||(f[20]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),y(e("input",{"onUpdate:modelValue":f[6]||(f[6]=O=>g.value.userAgent=O),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[A,g.value.userAgent]])])]),e("div",null,[f[24]||(f[24]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",ti,[e("label",si,[y(e("input",{"onUpdate:modelValue":f[7]||(f[7]=O=>c.value=O),class:"mr-2 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[de,c.value]]),f[21]||(f[21]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制(429 时暂停调度)",-1))])]),c.value?(n(),d("div",ai,[f[22]||(f[22]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),y(e("input",{"onUpdate:modelValue":f[8]||(f[8]=O=>g.value.rateLimitDuration=O),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:"1",placeholder:"默认60分钟",type:"number"},null,512),[[A,g.value.rateLimitDuration,void 0,{number:!0}]]),f[23]||(f[23]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):b("",!0)]),e("div",ri,[e("div",null,[f[25]||(f[25]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"每日额度限制 ($)",-1)),y(e("input",{"onUpdate:modelValue":f[9]||(f[9]=O=>g.value.dailyQuota=O),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:"0",placeholder:"0 表示不限制",step:"0.01",type:"number"},null,512),[[A,g.value.dailyQuota,void 0,{number:!0}]]),f[26]||(f[26]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 设置每日使用额度,0 表示不限制 ",-1))]),e("div",null,[f[27]||(f[27]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"额度重置时间",-1)),y(e("input",{"onUpdate:modelValue":f[10]||(f[10]=O=>g.value.quotaResetTime=O),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",placeholder:"00:00",type:"time"},null,512),[[A,g.value.quotaResetTime]]),f[28]||(f[28]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},"每日自动重置额度的时间",-1))])]),e("div",null,[f[32]||(f[32]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"模型映射表 (可选)",-1)),f[33]||(f[33]=e("div",{class:"mb-3 rounded-lg bg-blue-50 p-3 dark:bg-blue-900/30"},[e("p",{class:"text-xs text-blue-700 dark:text-blue-400"},[e("i",{class:"fas fa-info-circle mr-1"}),U(" 留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。 ")])],-1)),e("div",li,[(n(!0),d(fe,null,we(k.value,(O,oe)=>(n(),d("div",{key:oe,class:"flex items-center gap-2"},[y(e("input",{"onUpdate:modelValue":W=>O.from=W,class:"form-input flex-1 border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"原始模型名称",type:"text"},null,8,oi),[[A,O.from]]),f[30]||(f[30]=e("i",{class:"fas fa-arrow-right text-gray-400 dark:text-gray-500"},null,-1)),y(e("input",{"onUpdate:modelValue":W=>O.to=W,class:"form-input flex-1 border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"映射后的模型名称",type:"text"},null,8,ni),[[A,O.to]]),e("button",{class:"rounded-lg p-2 text-red-500 transition-colors hover:bg-red-50 dark:hover:bg-red-900/20",type:"button",onClick:W=>D(oe)},f[29]||(f[29]=[e("i",{class:"fas fa-trash"},null,-1)]),8,ii)]))),128))]),e("button",{class:"w-full rounded-lg border-2 border-dashed border-gray-300 px-4 py-2 text-gray-600 transition-colors hover:border-gray-400 hover:text-gray-700 dark:border-gray-600 dark:text-gray-400 dark:hover:border-gray-500 dark:hover:text-gray-300",type:"button",onClick:E},f[31]||(f[31]=[e("i",{class:"fas fa-plus mr-2"},null,-1),U(" 添加模型映射 ",-1)]))]),e("div",null,[ke(xt,{modelValue:g.value.proxy,"onUpdate:modelValue":f[11]||(f[11]=O=>g.value.proxy=O)},null,8,["modelValue"])]),e("div",di,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:f[12]||(f[12]=O=>u.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:G.value,type:"button",onClick:Y},[G.value?(n(),d("div",pi)):b("",!0),U(" "+v(G.value?L.value?"保存中...":"创建中...":L.value?"保存":"创建"),1)],8,ui)])])])])):b("",!0)]))}},Ut=ct(gi,[["__scopeId","data-v-2a6e42b7"]]),mi={class:"accounts-container"},yi={class:"card p-4 sm:p-6"},xi={class:"mb-4 flex flex-col gap-4 sm:mb-6"},fi={class:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},ci={class:"flex flex-col gap-3 sm:flex-row sm:flex-wrap sm:items-center sm:gap-3"},bi={class:"group relative min-w-[160px]"},vi={class:"group relative min-w-[140px]"},ki={class:"group relative min-w-[160px]"},wi={class:"relative"},hi=["disabled"],Ai={key:0,class:"py-12 text-center"},$i={key:1,class:"py-12 text-center"},Ci={key:2,class:"table-container hidden md:block"},Ii={class:"w-full table-fixed"},Ui={class:"bg-gray-50/80 backdrop-blur-sm dark:bg-gray-700/80"},Ti={key:1,class:"fas fa-sort ml-1 text-gray-400"},Vi={key:1,class:"fas fa-sort ml-1 text-gray-400"},Ri={key:1,class:"fas fa-sort ml-1 text-gray-400"},zi={key:1,class:"fas fa-sort ml-1 text-gray-400"},Ki={class:"w-[10%] min-w-[100px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"},Si={class:"flex items-center gap-2"},Mi={class:"divide-y divide-gray-200/50 dark:divide-gray-600/50"},Pi={class:"px-3 py-4"},Oi={class:"flex items-center"},Li={class:"min-w-0"},ji={class:"flex items-center gap-2"},Di=["title"],Ei={key:0,class:"inline-flex items-center rounded-full bg-purple-100 px-2 py-0.5 text-xs font-medium text-purple-800"},Wi={key:1,class:"inline-flex items-center rounded-full bg-blue-100 px-2 py-0.5 text-xs font-medium text-blue-800"},qi={key:2,class:"inline-flex items-center rounded-full bg-green-100 px-2 py-0.5 text-xs font-medium text-green-800"},Gi={key:0,class:"my-2 flex flex-wrap items-center gap-2"},Ni=["title"],Fi=["title"],Qi={class:"px-3 py-4"},_i={class:"flex items-center gap-1"},Bi={key:0,class:"flex items-center gap-1.5 rounded-lg border border-yellow-200 bg-gradient-to-r from-yellow-100 to-amber-100 px-2.5 py-1"},Hi={class:"text-xs font-medium text-yellow-700"},Ji={key:1,class:"flex items-center gap-1.5 rounded-lg border border-purple-200 bg-gradient-to-r from-purple-100 to-pink-100 px-2.5 py-1"},Yi={key:2,class:"flex items-center gap-1.5 rounded-lg border border-orange-200 bg-gradient-to-r from-orange-100 to-red-100 px-2.5 py-1"},Zi={key:3,class:"flex items-center gap-1.5 rounded-lg border border-gray-700 bg-gray-100 bg-gradient-to-r from-gray-100 to-gray-100 px-2.5 py-1"},Xi={class:"text-xs font-medium text-gray-950"},ed={key:4,class:"flex items-center gap-1.5 rounded-lg border border-blue-200 bg-gradient-to-r from-blue-100 to-cyan-100 px-2.5 py-1 dark:border-blue-700 dark:from-blue-900/20 dark:to-cyan-900/20"},td={key:5,class:"flex items-center gap-1.5 rounded-lg border border-teal-200 bg-gradient-to-r from-teal-100 to-green-100 px-2.5 py-1 dark:border-teal-700 dark:from-teal-900/20 dark:to-green-900/20"},sd={key:6,class:"flex items-center gap-1.5 rounded-lg border border-indigo-200 bg-gradient-to-r from-indigo-100 to-blue-100 px-2.5 py-1"},ad={class:"text-xs font-semibold text-indigo-800"},rd={class:"text-xs font-medium text-indigo-700"},ld={key:7,class:"flex items-center gap-1.5 rounded-lg border border-teal-200 bg-gradient-to-r from-teal-100 to-emerald-100 px-2.5 py-1 dark:border-teal-700 dark:from-teal-900/20 dark:to-emerald-900/20"},od={key:8,class:"flex items-center gap-1.5 rounded-lg border border-gray-200 bg-gradient-to-r from-gray-100 to-gray-200 px-2.5 py-1"},nd={class:"whitespace-nowrap px-3 py-4"},id={class:"flex flex-col gap-1"},dd={key:0,class:"inline-flex items-center rounded-full bg-yellow-100 px-3 py-1 text-xs font-semibold text-yellow-800"},ud={key:0},pd={key:1,class:"inline-flex items-center rounded-full bg-gray-100 px-3 py-1 text-xs font-semibold text-gray-700"},gd=["title"],md={key:3,class:"text-xs text-gray-500 dark:text-gray-400"},yd={class:"whitespace-nowrap px-3 py-4"},xd={key:0,class:"flex items-center gap-2"},fd={class:"h-2 w-16 rounded-full bg-gray-200"},cd={class:"min-w-[20px] text-xs font-medium text-gray-700 dark:text-gray-200"},bd={key:1,class:"text-sm text-gray-400"},vd={class:"px-3 py-4 text-sm text-gray-600"},kd=["title"],wd={key:1,class:"text-gray-400"},hd={class:"whitespace-nowrap px-3 py-4 text-sm"},Ad={key:0,class:"space-y-1"},$d={class:"flex items-center gap-2"},Cd={class:"text-sm font-medium text-gray-900 dark:text-gray-100"},Id={class:"flex items-center gap-2"},Ud={class:"text-xs text-gray-600 dark:text-gray-300"},Td={class:"flex items-center gap-2"},Vd={class:"text-xs text-gray-600 dark:text-gray-300"},Rd={key:0,class:"text-xs text-gray-500 dark:text-gray-400"},zd={key:1,class:"text-xs text-gray-400"},Kd={class:"whitespace-nowrap px-3 py-4"},Sd={key:0,class:"space-y-2"},Md={key:0,class:"flex items-center gap-3 text-xs"},Pd={class:"flex items-center gap-1"},Od={class:"font-medium text-gray-900 dark:text-gray-100"},Ld={class:"flex items-center gap-1"},jd={class:"font-medium text-gray-900 dark:text-gray-100"},Dd={class:"flex items-center gap-2"},Ed={class:"h-2 w-24 rounded-full bg-gray-200 dark:bg-gray-700"},Wd={class:"min-w-[32px] text-xs font-medium text-gray-700 dark:text-gray-200"},qd={class:"text-xs text-gray-600 dark:text-gray-400"},Gd={key:0,class:"font-medium text-indigo-600 dark:text-indigo-400"},Nd={key:1,class:"space-y-2"},Fd={key:0},Qd={class:"flex items-center justify-between text-xs"},_d={class:"font-medium text-gray-700 dark:text-gray-200"},Bd={class:"flex items-center gap-2"},Hd={class:"h-2 w-24 rounded-full bg-gray-200 dark:bg-gray-700"},Jd={class:"min-w-[32px] text-xs font-medium text-gray-700 dark:text-gray-200"},Yd={class:"text-xs text-gray-600 dark:text-gray-400"},Zd={class:"ml-2 text-gray-400"},Xd={key:1,class:"text-sm text-gray-400"},eu={key:2,class:"text-sm text-gray-400"},tu={key:3,class:"text-sm text-gray-400"},su={class:"whitespace-nowrap px-3 py-4 text-sm text-gray-600 dark:text-gray-300"},au={class:"whitespace-nowrap px-3 py-4 text-sm font-medium"},ru={class:"flex flex-wrap items-center gap-1"},lu=["disabled","title","onClick"],ou=["disabled","title","onClick"],nu={class:"ml-1"},iu=["onClick"],du=["onClick"],uu={key:3,class:"space-y-3 md:hidden"},pu={class:"mb-3 flex items-start justify-between"},gu={class:"flex items-center gap-3"},mu={class:"text-sm font-semibold text-gray-900"},yu={class:"mt-0.5 flex items-center gap-2"},xu={class:"text-xs text-gray-500 dark:text-gray-400"},fu={class:"text-xs text-gray-500 dark:text-gray-400"},cu={class:"mb-3 grid grid-cols-2 gap-3"},bu={class:"space-y-1"},vu={class:"flex items-center gap-1.5"},ku={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},wu={class:"flex items-center gap-1.5"},hu={class:"text-xs text-gray-600 dark:text-gray-400"},Au={class:"flex items-center gap-1.5"},$u={class:"text-xs text-gray-600 dark:text-gray-400"},Cu={key:0,class:"space-y-1"},Iu={class:"flex items-center gap-1.5"},Uu={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},Tu={class:"flex items-center gap-1.5"},Vu={class:"text-xs text-gray-600 dark:text-gray-400"},Ru={key:1,class:"text-sm font-semibold text-gray-400"},zu={class:"mb-3 space-y-2"},Ku={key:0,class:"space-y-1.5 rounded-lg bg-gray-50 p-2 dark:bg-gray-700"},Su={class:"flex items-center justify-between text-xs"},Mu={class:"flex items-center gap-1"},Pu={class:"font-medium text-gray-700 dark:text-gray-200"},Ou={class:"h-2 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-600"},Lu={class:"flex items-center justify-between text-xs"},ju={class:"text-gray-500 dark:text-gray-400"},Du={key:0,class:"font-medium text-indigo-600"},Eu={key:1,class:"text-gray-500"},Wu={class:"flex items-center justify-between text-xs"},qu={class:"text-gray-700 dark:text-gray-200"},Gu={key:1,class:"flex items-center justify-between text-xs"},Nu={class:"text-gray-700 dark:text-gray-200"},Fu={class:"flex items-center justify-between text-xs"},Qu={class:"font-medium text-gray-700 dark:text-gray-200"},_u={class:"mt-3 flex gap-2 border-t border-gray-100 pt-3"},Bu=["disabled","onClick"],Hu=["onClick"],Ju=["onClick"],Yu={__name:"AccountsView",setup(ne){const{showConfirmModal:ue,confirmOptions:x,showConfirm:X,handleConfirm:T,handleCancel:L}=Vt(),G=I([]),g=I(!1),c=I("name"),M=I(""),k=I("asc"),j=I([]),E=I([]),D=I("all"),Q=I("all"),Y=I(!1),N=I(!1),u=I(!1),f=I(new Map),O=I([{value:"name",label:"按名称排序",icon:"fa-font"},{value:"dailyTokens",label:"按今日Token排序",icon:"fa-coins"},{value:"dailyRequests",label:"按今日请求数排序",icon:"fa-chart-line"},{value:"totalTokens",label:"按总Token排序",icon:"fa-database"},{value:"lastUsed",label:"按最后使用排序",icon:"fa-clock"}]),oe=I([{value:"all",label:"所有平台",icon:"fa-globe"},{value:"claude",label:"Claude",icon:"fa-brain"},{value:"claude-console",label:"Claude Console",icon:"fa-terminal"},{value:"gemini",label:"Gemini",icon:"fa-google"},{value:"openai",label:"OpenAi",icon:"fa-openai"},{value:"azure_openai",label:"Azure OpenAI",icon:"fab fa-microsoft"},{value:"bedrock",label:"Bedrock",icon:"fab fa-aws"},{value:"openai-responses",label:"OpenAI-Responses",icon:"fa-server"},{value:"ccr",label:"CCR",icon:"fa-code-branch"}]),W=Re(()=>{const o=[{value:"all",label:"所有账户",icon:"fa-globe"},{value:"ungrouped",label:"未分组账户",icon:"fa-user"}];return E.value.forEach(a=>{o.push({value:a.id,label:`${a.name} (${a.platform==="claude"?"Claude":a.platform==="gemini"?"Gemini":"OpenAI"})`,icon:a.platform==="claude"?"fa-brain":a.platform==="gemini"?"fa-robot":"fa-openai"})}),o}),w=I(!1),P=I(null),xe=I(!1),ze=I(null),s=Re(()=>{const o=G.value;return M.value?[...o].sort((R,l)=>{var pe,se,be,Ie,Ue,ie,Te,B,H,ge,me,Ye;let F=R[M.value],te=l[M.value];return M.value==="dailyTokens"?(F=((se=(pe=R.usage)==null?void 0:pe.daily)==null?void 0:se.allTokens)||0,te=((Ie=(be=l.usage)==null?void 0:be.daily)==null?void 0:Ie.allTokens)||0):M.value==="dailyRequests"?(F=((ie=(Ue=R.usage)==null?void 0:Ue.daily)==null?void 0:ie.requests)||0,te=((B=(Te=l.usage)==null?void 0:Te.daily)==null?void 0:B.requests)||0):M.value==="totalTokens"&&(F=((ge=(H=R.usage)==null?void 0:H.total)==null?void 0:ge.allTokens)||0,te=((Ye=(me=l.usage)==null?void 0:me.total)==null?void 0:Ye.allTokens)||0),M.value==="lastUsed"&&(F=R.lastUsedAt?new Date(R.lastUsedAt).getTime():0,te=l.lastUsedAt?new Date(l.lastUsedAt).getTime():0),M.value==="status"&&(F=R.isActive?1:0,te=l.isActive?1:0),Fte?k.value==="asc"?1:-1:0}):o}),ee=async(o=!1)=>{g.value=!0;try{if(D.value&&D.value!=="all"&&D.value!=="ungrouped"){const B=await z.get(`/admin/account-groups/${D.value}/members`);if(B.success){G.value=B.data,g.value=!1;return}}const a={};Q.value!=="all"&&(a.platform=Q.value),D.value==="ungrouped"&&(a.groupId=D.value);const R=[];if(Q.value==="all")R.push(z.get("/admin/claude-accounts",{params:a}),z.get("/admin/claude-console-accounts",{params:a}),z.get("/admin/bedrock-accounts",{params:a}),z.get("/admin/gemini-accounts",{params:a}),z.get("/admin/openai-accounts",{params:a}),z.get("/admin/azure-openai-accounts",{params:a}),z.get("/admin/openai-responses-accounts",{params:a}),z.get("/admin/ccr-accounts",{params:a}));else switch(Q.value){case"claude":R.push(z.get("/admin/claude-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"claude-console":R.push(Promise.resolve({success:!0,data:[]}),z.get("/admin/claude-console-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"bedrock":R.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),z.get("/admin/bedrock-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"gemini":R.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),z.get("/admin/gemini-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"openai":R.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),z.get("/admin/openai-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"azure_openai":R.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),z.get("/admin/azure-openai-accounts",{params:a}),Promise.resolve({success:!0,data:[]}));break;case"openai-responses":R.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),z.get("/admin/openai-responses-accounts",{params:a}));break;case"ccr":R.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),z.get("/admin/ccr-accounts",{params:a}));break;default:R.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break}await Promise.all([Ge(o),Oe(o)]);const[l,F,te,pe,se,be,Ie,Ue]=await Promise.all(R),ie=[];if(l.success){const B=(l.data||[]).map(H=>{const ge=j.value.filter(me=>me.claudeAccountId===H.id).length;return{...H,platform:"claude",boundApiKeysCount:ge}});ie.push(...B)}if(F.success){const B=(F.data||[]).map(H=>({...H,platform:"claude-console",boundApiKeysCount:0}));ie.push(...B)}if(te.success){const B=(te.data||[]).map(H=>({...H,platform:"bedrock",boundApiKeysCount:0}));ie.push(...B)}if(pe.success){const B=(pe.data||[]).map(H=>{const ge=j.value.filter(me=>me.geminiAccountId===H.id).length;return{...H,platform:"gemini",boundApiKeysCount:ge}});ie.push(...B)}if(se.success){const B=(se.data||[]).map(H=>{const ge=j.value.filter(me=>me.openaiAccountId===H.id).length;return{...H,platform:"openai",boundApiKeysCount:ge}});ie.push(...B)}if(be&&be.success){const B=(be.data||[]).map(H=>{const ge=j.value.filter(me=>me.azureOpenaiAccountId===H.id).length;return{...H,platform:"azure_openai",boundApiKeysCount:ge}});ie.push(...B)}if(Ie&&Ie.success){const B=(Ie.data||[]).map(H=>{const ge=j.value.filter(me=>me.openaiAccountId===`responses:${H.id}`).length;return{...H,platform:"openai-responses",boundApiKeysCount:ge}});ie.push(...B)}if(Ue&&Ue.success){const B=(Ue.data||[]).map(H=>({...H,platform:"ccr",boundApiKeysCount:0}));ie.push(...B)}let Te=ie;D.value!=="all"&&(D.value==="ungrouped"?Te=ie.filter(B=>!B.groupInfos||B.groupInfos.length===0):Te=ie.filter(B=>!B.groupInfos||B.groupInfos.length===0?!1:B.groupInfos.some(H=>H.id===D.value))),G.value=Te}catch{K("加载账户失败","error")}finally{g.value=!1}},Ce=o=>{o&&(M.value===o?k.value=k.value==="asc"?"desc":"asc":(M.value=o,k.value="asc"))},$=o=>{if(o==null)return"0";const a=Number(o);return a>=1e6?(a/1e6).toFixed(2):a>=1e3?(a/1e6).toFixed(4):(a/1e6).toFixed(6)},qe=o=>{if(!o)return"从未使用";const a=new Date(o),l=new Date-a;return l<6e4?"刚刚":l<36e5?`${Math.floor(l/6e4)} 分钟前`:l<864e5?`${Math.floor(l/36e5)} 小时前`:l<6048e5?`${Math.floor(l/864e5)} 天前`:a.toLocaleDateString("zh-CN")},Ge=async(o=!1)=>{if(!(!o&&Y.value))try{const a=await z.get("/admin/api-keys");a.success&&(j.value=a.data||[],Y.value=!0)}catch{}},Oe=async(o=!1)=>{if(!(!o&&N.value))try{const a=await z.get("/admin/account-groups");a.success&&(E.value=a.data||[],N.value=!0)}catch{}},Me=()=>{Y.value=!1,N.value=!1,u.value=!1,f.value.clear()},Ne=()=>{ee()},Le=()=>{ee()},je=o=>{if(!o||!o.host||!o.port)return null;const a=o.type==="socks5"?"S5":o.type.toUpperCase();let R=o.host;R.length>15&&(R=R.substring(0,12)+"...");let l=`${a}://${R}:${o.port}`;return o.username&&(l=`${a}://***@${R}:${o.port}`),l},De=(o,a)=>{if(!o||!a)return"--";const R=new Date(o),l=new Date(a),F=R.getHours().toString().padStart(2,"0"),te=R.getMinutes().toString().padStart(2,"0"),pe=l.getHours().toString().padStart(2,"0"),se=l.getMinutes().toString().padStart(2,"0");return`${F}:${te} - ${pe}:${se}`},Fe=o=>{if(!o||o<=0)return"已结束";const a=Math.floor(o/60),R=o%60;return a>0?`${a}小时${R}分钟`:`${R}分钟`},tt=o=>{if(!o||o<=0)return"";o=Math.floor(o);const a=Math.floor(o/1440),R=o%1440,l=Math.floor(R/60),F=R%60;return a>0?l>0?`${a}天${l}小时`:`${a}天`:l>0?F>0?`${l}小时${F}分钟`:`${l}小时`:`${F}分钟`},st=()=>{P.value=null,w.value=!0},Ee=()=>{w.value=!1,P.value=null},Qe=o=>{ze.value=o,xe.value=!0},_e=async o=>{const a=j.value.filter(l=>l.claudeAccountId===o.id||l.geminiAccountId===o.id||l.openaiAccountId===o.id).length;if(a>0){K(`无法删除此账号,有 ${a} 个API Key绑定到此账号,请先解绑所有API Key`,"error");return}if(await X("删除账户",`确定要删除账户 "${o.name}" 吗?
此操作不可恢复。`,"删除","取消"))try{let l;o.platform==="claude"?l=`/admin/claude-accounts/${o.id}`:o.platform==="claude-console"?l=`/admin/claude-console-accounts/${o.id}`:o.platform==="bedrock"?l=`/admin/bedrock-accounts/${o.id}`:o.platform==="openai"?l=`/admin/openai-accounts/${o.id}`:o.platform==="azure_openai"?l=`/admin/azure-openai-accounts/${o.id}`:o.platform==="openai-responses"?l=`/admin/openai-responses-accounts/${o.id}`:o.platform==="ccr"?l=`/admin/ccr-accounts/${o.id}`:l=`/admin/gemini-accounts/${o.id}`;const F=await z.delete(l);F.success?(K("账户已删除","success"),u.value=!1,ee()):K(F.message||"删除失败","error")}catch{K("删除失败","error")}},Ke=async o=>{if(o.isResetting)return;let a=!1;if(window.showConfirm?a=await window.showConfirm("重置账户状态","确定要重置此账户的所有异常状态吗?这将清除限流状态、401错误计数等所有异常标记。","确定重置","取消"):a=confirm("确定要重置此账户的所有异常状态吗?"),!!a)try{o.isResetting=!0;let R="";if(o.platform==="openai")R=`/admin/openai-accounts/${o.id}/reset-status`;else if(o.platform==="openai-responses")R=`/admin/openai-responses-accounts/${o.id}/reset-status`;else if(o.platform==="claude")R=`/admin/claude-accounts/${o.id}/reset-status`;else if(o.platform==="claude-console")R=`/admin/claude-console-accounts/${o.id}/reset-status`;else if(o.platform==="ccr")R=`/admin/ccr-accounts/${o.id}/reset-status`;else{K("不支持的账户类型","error"),o.isResetting=!1;return}const l=await z.post(R);l.success?(K("账户状态已重置","success"),ee(!0)):K(l.message||"状态重置失败","error")}catch{K("状态重置失败","error")}finally{o.isResetting=!1}},Se=async o=>{if(!o.isTogglingSchedulable)try{o.isTogglingSchedulable=!0;let a;if(o.platform==="claude")a=`/admin/claude-accounts/${o.id}/toggle-schedulable`;else if(o.platform==="claude-console")a=`/admin/claude-console-accounts/${o.id}/toggle-schedulable`;else if(o.platform==="bedrock")a=`/admin/bedrock-accounts/${o.id}/toggle-schedulable`;else if(o.platform==="gemini")a=`/admin/gemini-accounts/${o.id}/toggle-schedulable`;else if(o.platform==="openai")a=`/admin/openai-accounts/${o.id}/toggle-schedulable`;else if(o.platform==="azure_openai")a=`/admin/azure-openai-accounts/${o.id}/toggle-schedulable`;else if(o.platform==="openai-responses")a=`/admin/openai-responses-accounts/${o.id}/toggle-schedulable`;else if(o.platform==="ccr")a=`/admin/ccr-accounts/${o.id}/toggle-schedulable`;else{K("该账户类型暂不支持调度控制","warning");return}const R=await z.put(a);R.success?(o.schedulable=R.schedulable,K(R.schedulable?"已启用调度":"已禁用调度","success")):K(R.message||"操作失败","error")}catch{K("切换调度状态失败","error")}finally{o.isTogglingSchedulable=!1}},m=()=>{w.value=!1,K("账户创建成功","success"),Me(),ee()},p=()=>{xe.value=!1,K("账户更新成功","success"),u.value=!1,ee()},C=o=>!o.lastRefreshAt||o.lastRefreshAt===""?"Setup":"OAuth",ce=()=>"OAuth",at=()=>"OAuth",gt=o=>{if(o.subscriptionInfo)try{const a=typeof o.subscriptionInfo=="string"?JSON.parse(o.subscriptionInfo):o.subscriptionInfo;return a.hasClaudeMax===!0?"Claude Max":a.hasClaudePro===!0?"Claude Pro":"Claude Free"}catch{return"Claude"}return"Claude"},Be=o=>{if(o.schedulable!==!1)return null;if(o.platform==="claude-console"){if(o.status==="unauthorized")return"API Key无效或已过期(401错误)";if(o.overloadStatus==="overloaded")return"服务过载(529错误)";if(o.rateLimitStatus==="limited")return"触发限流(429错误)";if(o.status==="blocked"&&o.errorMessage)return o.errorMessage}if(o.platform==="claude"){if(o.status==="unauthorized")return"认证失败(401错误)";if(o.status==="temp_error"&&o.errorMessage||o.status==="error"&&o.errorMessage)return o.errorMessage;if(o.isRateLimited)return"触发限流(429错误)";if(o.stoppedReason)return o.stoppedReason}if(o.platform==="openai"){if(o.status==="unauthorized")return"认证失败(401错误)";if(o.rateLimitStatus&&o.rateLimitStatus.isRateLimited||o.isRateLimited)return"触发限流(429错误)";if(o.status==="error"&&o.errorMessage)return o.errorMessage}if(o.platform==="openai-responses"){if(o.status==="unauthorized")return"认证失败(401错误)";if(o.rateLimitStatus&&o.rateLimitStatus.isRateLimited||o.isRateLimited)return"触发限流(429错误)";if(o.status==="error"&&o.errorMessage)return o.errorMessage;if(o.status==="rateLimited")return"触发限流(429错误)"}return o.stoppedReason?o.stoppedReason:o.errorMessage?o.errorMessage:"手动停止调度"},rt=o=>o.status==="blocked"?"已封锁":o.status==="unauthorized"?"异常":o.isRateLimited||o.status==="rate_limited"||o.rateLimitStatus&&o.rateLimitStatus.isRateLimited||o.rateLimitStatus==="limited"?"限流中":o.status==="temp_error"?"临时异常":o.status==="error"||!o.isActive?"错误":o.schedulable===!1?"已暂停":"正常",he=o=>o.status==="blocked"||o.status==="unauthorized"?"bg-red-100 text-red-800":o.isRateLimited||o.status==="rate_limited"||o.rateLimitStatus&&o.rateLimitStatus.isRateLimited||o.rateLimitStatus==="limited"||o.status==="temp_error"?"bg-orange-100 text-orange-800":o.status==="error"||!o.isActive?"bg-red-100 text-red-800":o.schedulable===!1?"bg-gray-100 text-gray-800":"bg-green-100 text-green-800",lt=o=>o.status==="blocked"||o.status==="unauthorized"?"bg-red-500":o.isRateLimited||o.status==="rate_limited"||o.rateLimitStatus&&o.rateLimitStatus.isRateLimited||o.rateLimitStatus==="limited"||o.status==="temp_error"?"bg-orange-500":o.status==="error"||!o.isActive?"bg-red-500":o.schedulable===!1?"bg-gray-500":"bg-green-500",ot=o=>qe(o),He=o=>{if(!o)return"bg-gradient-to-r from-blue-500 to-indigo-600";const a=String(o).toLowerCase();return a==="rejected"?"bg-gradient-to-r from-red-500 to-red-600":a==="allowed_warning"?"bg-gradient-to-r from-yellow-500 to-orange-500":"bg-gradient-to-r from-blue-500 to-indigo-600"},ve=o=>!o||o===0?"0.0000":o<1e-4?o.toExponential(2):o<.01?o.toFixed(6):o<1?o.toFixed(4):o.toFixed(2),We=o=>{var l,F;const a=Number(((F=(l=o==null?void 0:o.usage)==null?void 0:l.daily)==null?void 0:F.cost)||0),R=Number((o==null?void 0:o.dailyQuota)||0);return!R||R<=0?0:a/R*100},nt=o=>o>=90?"bg-red-500":o>=70?"bg-yellow-500":"bg-green-500",it=o=>{var l,F;const a=Number(((F=(l=o==null?void 0:o.usage)==null?void 0:l.daily)==null?void 0:F.cost)||0),R=Number((o==null?void 0:o.dailyQuota)||0);return!R||R<=0?"0.00":Math.max(0,R-a).toFixed(2)},Je=o=>!o.usage||!o.usage.daily?"0.0000":o.usage.daily.cost!==void 0?ve(o.usage.daily.cost):"0.0000";return J(c,o=>{const a={name:"name",dailyTokens:"dailyTokens",dailyRequests:"dailyRequests",totalTokens:"totalTokens",lastUsed:"lastUsed"};a[o]&&Ce(a[o])}),pt(()=>{ee(!0)}),(o,a)=>{const R=zt;return n(),d("div",mi,[e("div",yi,[e("div",xi,[a[20]||(a[20]=e("div",null,[e("h3",{class:"mb-1 text-lg font-bold text-gray-900 dark:text-gray-100 sm:mb-2 sm:text-xl"}," 账户管理 "),e("p",{class:"text-sm text-gray-600 dark:text-gray-400 sm:text-base"}," 管理您的 Claude、Gemini、OpenAI、Azure OpenAI、OpenAI-Responses 与 CCR 账户及代理配置 ")],-1)),e("div",fi,[e("div",ci,[e("div",bi,[a[14]||(a[14]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-indigo-500 to-blue-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),ke(mt,{modelValue:c.value,"onUpdate:modelValue":a[0]||(a[0]=l=>c.value=l),icon:"fa-sort-amount-down","icon-color":"text-indigo-500",options:O.value,placeholder:"选择排序",onChange:a[1]||(a[1]=l=>Ce())},null,8,["modelValue","options"])]),e("div",vi,[a[15]||(a[15]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-blue-500 to-indigo-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),ke(mt,{modelValue:Q.value,"onUpdate:modelValue":a[2]||(a[2]=l=>Q.value=l),icon:"fa-server","icon-color":"text-blue-500",options:oe.value,placeholder:"选择平台",onChange:Ne},null,8,["modelValue","options"])]),e("div",ki,[a[16]||(a[16]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-purple-500 to-pink-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),ke(mt,{modelValue:D.value,"onUpdate:modelValue":a[3]||(a[3]=l=>D.value=l),icon:"fa-layer-group","icon-color":"text-purple-500",options:W.value,placeholder:"选择分组",onChange:Le},null,8,["modelValue","options"])]),e("div",wi,[ke(R,{content:"刷新数据 (Ctrl/⌘+点击强制刷新所有缓存)",effect:"dark",placement:"bottom"},{default:Ze(()=>[e("button",{class:"group relative flex items-center justify-center gap-2 rounded-lg border border-gray-200 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm transition-all duration-200 hover:border-gray-300 hover:shadow-md disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:border-gray-500 sm:w-auto",disabled:g.value,onClick:[a[4]||(a[4]=dt(l=>ee(!0),["ctrl","exact"])),a[5]||(a[5]=dt(l=>ee(!1),["exact"])),a[6]||(a[6]=dt(l=>ee(!0),["meta","exact"]))]},[a[17]||(a[17]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-green-500 to-teal-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),e("i",{class:S(["fas relative text-green-500",g.value?"fa-spinner fa-spin":"fa-sync-alt"])},null,2),a[18]||(a[18]=e("span",{class:"relative"},"刷新",-1))],8,hi)]),_:1})])]),e("button",{class:"flex w-full items-center justify-center gap-2 rounded-lg bg-gradient-to-r from-green-500 to-green-600 px-5 py-2.5 text-sm font-medium text-white shadow-md transition-all duration-200 hover:from-green-600 hover:to-green-700 hover:shadow-lg sm:w-auto",onClick:dt(st,["stop"])},a[19]||(a[19]=[e("i",{class:"fas fa-plus"},null,-1),e("span",null,"添加账户",-1)]))])]),g.value?(n(),d("div",Ai,a[21]||(a[21]=[e("div",{class:"loading-spinner mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500 dark:text-gray-400"},"正在加载账户...",-1)]))):s.value.length===0?(n(),d("div",$i,a[22]||(a[22]=[e("div",{class:"mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-gray-100 dark:bg-gray-700"},[e("i",{class:"fas fa-user-circle text-xl text-gray-400"})],-1),e("p",{class:"text-lg text-gray-500 dark:text-gray-400"},"暂无账户",-1),e("p",{class:"mt-2 text-sm text-gray-400 dark:text-gray-500"},"点击上方按钮添加您的第一个账户",-1)]))):(n(),d("div",Ci,[e("table",Ii,[e("thead",Ui,[e("tr",null,[e("th",{class:"w-[22%] min-w-[180px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:a[7]||(a[7]=l=>Ce("name"))},[a[23]||(a[23]=U(" 名称 ",-1)),M.value==="name"?(n(),d("i",{key:0,class:S(["fas",k.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),d("i",Ti))]),e("th",{class:"w-[15%] min-w-[120px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:a[8]||(a[8]=l=>Ce("platform"))},[a[24]||(a[24]=U(" 平台/类型 ",-1)),M.value==="platform"?(n(),d("i",{key:0,class:S(["fas",k.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),d("i",Vi))]),e("th",{class:"w-[12%] min-w-[100px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:a[9]||(a[9]=l=>Ce("status"))},[a[25]||(a[25]=U(" 状态 ",-1)),M.value==="status"?(n(),d("i",{key:0,class:S(["fas",k.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),d("i",Ri))]),e("th",{class:"w-[8%] min-w-[80px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:a[10]||(a[10]=l=>Ce("priority"))},[a[26]||(a[26]=U(" 优先级 ",-1)),M.value==="priority"?(n(),d("i",{key:0,class:S(["fas",k.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),d("i",zi))]),a[30]||(a[30]=e("th",{class:"w-[10%] min-w-[100px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 代理 ",-1)),a[31]||(a[31]=e("th",{class:"w-[10%] min-w-[90px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 今日使用 ",-1)),e("th",Ki,[e("div",Si,[a[29]||(a[29]=e("span",null,"会话窗口",-1)),ke(R,{placement:"top"},{content:Ze(()=>a[27]||(a[27]=[e("div",{class:"space-y-2"},[e("div",null,"会话窗口进度表示5小时窗口的时间进度"),e("div",{class:"space-y-1 text-xs"},[e("div",{class:"flex items-center gap-2"},[e("div",{class:"h-2 w-16 rounded bg-gradient-to-r from-blue-500 to-indigo-600"}),e("span",null,"正常:请求正常处理")]),e("div",{class:"flex items-center gap-2"},[e("div",{class:"h-2 w-16 rounded bg-gradient-to-r from-yellow-500 to-orange-500"}),e("span",null,"警告:接近限制")]),e("div",{class:"flex items-center gap-2"},[e("div",{class:"h-2 w-16 rounded bg-gradient-to-r from-red-500 to-red-600"}),e("span",null,"拒绝:达到速率限制")])])],-1)])),default:Ze(()=>[a[28]||(a[28]=e("i",{class:"fas fa-question-circle cursor-help text-xs text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-400"},null,-1))]),_:1,__:[28]})])]),a[32]||(a[32]=e("th",{class:"w-[8%] min-w-[80px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 最后使用 ",-1)),a[33]||(a[33]=e("th",{class:"w-[15%] min-w-[180px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 操作 ",-1))])]),e("tbody",Mi,[(n(!0),d(fe,null,we(s.value,l=>{var F,te,pe;return n(),d("tr",{key:l.id,class:"table-row"},[e("td",Pi,[e("div",Oi,[a[38]||(a[38]=e("div",{class:"mr-2 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-gradient-to-br from-green-500 to-green-600"},[e("i",{class:"fas fa-user-circle text-xs text-white"})],-1)),e("div",Li,[e("div",ji,[e("div",{class:"truncate text-sm font-semibold text-gray-900 dark:text-gray-100",title:l.name},v(l.name),9,Di),l.accountType==="dedicated"?(n(),d("span",Ei,a[34]||(a[34]=[e("i",{class:"fas fa-lock mr-1"},null,-1),U("专属 ",-1)]))):l.accountType==="group"?(n(),d("span",Wi,a[35]||(a[35]=[e("i",{class:"fas fa-layer-group mr-1"},null,-1),U("分组调度 ",-1)]))):(n(),d("span",qi,a[36]||(a[36]=[e("i",{class:"fas fa-share-alt mr-1"},null,-1),U("共享 ",-1)])))]),l.groupInfos&&l.groupInfos.length>0?(n(),d("div",Gi,[(n(!0),d(fe,null,we(l.groupInfos,se=>(n(),d("span",{key:se.id,class:"inline-flex items-center rounded-full bg-gray-100 px-2 py-0.5 text-xs font-medium text-gray-600 dark:bg-gray-700 dark:text-gray-400",title:`所属分组: ${se.name}`},[a[37]||(a[37]=e("i",{class:"fas fa-folder mr-1"},null,-1)),U(v(se.name),1)],8,Ni))),128))])):b("",!0),e("div",{class:"truncate text-xs text-gray-500 dark:text-gray-400",title:l.id},v(l.id),9,Fi)])])]),e("td",Qi,[e("div",_i,[l.platform==="gemini"?(n(),d("div",Bi,[a[39]||(a[39]=e("i",{class:"fas fa-robot text-xs text-yellow-700"},null,-1)),a[40]||(a[40]=e("span",{class:"text-xs font-semibold text-yellow-800"},"Gemini",-1)),a[41]||(a[41]=e("span",{class:"mx-1 h-4 w-px bg-yellow-300"},null,-1)),e("span",Hi,v(ce()),1)])):l.platform==="claude-console"?(n(),d("div",Ji,a[42]||(a[42]=[e("i",{class:"fas fa-terminal text-xs text-purple-700"},null,-1),e("span",{class:"text-xs font-semibold text-purple-800"},"Console",-1),e("span",{class:"mx-1 h-4 w-px bg-purple-300"},null,-1),e("span",{class:"text-xs font-medium text-purple-700"},"API Key",-1)]))):l.platform==="bedrock"?(n(),d("div",Yi,a[43]||(a[43]=[e("i",{class:"fab fa-aws text-xs text-orange-700"},null,-1),e("span",{class:"text-xs font-semibold text-orange-800"},"Bedrock",-1),e("span",{class:"mx-1 h-4 w-px bg-orange-300"},null,-1),e("span",{class:"text-xs font-medium text-orange-700"},"AWS",-1)]))):l.platform==="openai"?(n(),d("div",Zi,[a[44]||(a[44]=e("div",{class:"fa-openai"},null,-1)),a[45]||(a[45]=e("span",{class:"text-xs font-semibold text-gray-950"},"OpenAi",-1)),a[46]||(a[46]=e("span",{class:"mx-1 h-4 w-px bg-gray-400"},null,-1)),e("span",Xi,v(at()),1)])):l.platform==="azure_openai"?(n(),d("div",ed,a[47]||(a[47]=[e("i",{class:"fab fa-microsoft text-xs text-blue-700 dark:text-blue-400"},null,-1),e("span",{class:"text-xs font-semibold text-blue-800 dark:text-blue-300"},"Azure OpenAI",-1),e("span",{class:"mx-1 h-4 w-px bg-blue-300 dark:bg-blue-600"},null,-1),e("span",{class:"text-xs font-medium text-blue-700 dark:text-blue-400"},"API Key",-1)]))):l.platform==="openai-responses"?(n(),d("div",td,a[48]||(a[48]=[e("i",{class:"fas fa-server text-xs text-teal-700 dark:text-teal-400"},null,-1),e("span",{class:"text-xs font-semibold text-teal-800 dark:text-teal-300"},"OpenAI-Responses",-1),e("span",{class:"mx-1 h-4 w-px bg-teal-300 dark:bg-teal-600"},null,-1),e("span",{class:"text-xs font-medium text-teal-700 dark:text-teal-400"},"API Key",-1)]))):l.platform==="claude"||l.platform==="claude-oauth"?(n(),d("div",sd,[a[49]||(a[49]=e("i",{class:"fas fa-brain text-xs text-indigo-700"},null,-1)),e("span",ad,v(gt(l)),1),a[50]||(a[50]=e("span",{class:"mx-1 h-4 w-px bg-indigo-300"},null,-1)),e("span",rd,v(C(l)),1)])):l.platform==="ccr"?(n(),d("div",ld,a[51]||(a[51]=[e("i",{class:"fas fa-code-branch text-xs text-teal-700 dark:text-teal-400"},null,-1),e("span",{class:"text-xs font-semibold text-teal-800 dark:text-teal-300"},"CCR",-1),e("span",{class:"mx-1 h-4 w-px bg-teal-300 dark:bg-teal-600"},null,-1),e("span",{class:"text-xs font-medium text-teal-700 dark:text-teal-300"},"Relay",-1)]))):(n(),d("div",od,a[52]||(a[52]=[e("i",{class:"fas fa-question text-xs text-gray-700"},null,-1),e("span",{class:"text-xs font-semibold text-gray-800"},"未知",-1)])))])]),e("td",nd,[e("div",id,[e("span",{class:S(["inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold",l.status==="blocked"?"bg-orange-100 text-orange-800":l.status==="unauthorized"?"bg-red-100 text-red-800":l.status==="temp_error"?"bg-orange-100 text-orange-800":l.isActive?"bg-green-100 text-green-800":"bg-red-100 text-red-800"])},[e("div",{class:S(["mr-2 h-2 w-2 rounded-full",l.status==="blocked"?"bg-orange-500":l.status==="unauthorized"?"bg-red-500":l.status==="temp_error"?"bg-orange-500":l.isActive?"bg-green-500":"bg-red-500"])},null,2),U(" "+v(l.status==="blocked"?"已封锁":l.status==="unauthorized"?"异常":l.status==="temp_error"?"临时异常":l.isActive?"正常":"异常"),1)],2),l.rateLimitStatus&&l.rateLimitStatus.isRateLimited||l.rateLimitStatus==="limited"?(n(),d("span",dd,[a[53]||(a[53]=e("i",{class:"fas fa-exclamation-triangle mr-1"},null,-1)),a[54]||(a[54]=U(" 限流中 ",-1)),l.rateLimitStatus&&typeof l.rateLimitStatus=="object"&&l.rateLimitStatus.minutesRemaining>0?(n(),d("span",ud,"("+v(tt(l.rateLimitStatus.minutesRemaining))+")",1)):b("",!0)])):b("",!0),l.schedulable===!1?(n(),d("span",pd,[a[56]||(a[56]=e("i",{class:"fas fa-pause-circle mr-1"},null,-1)),a[57]||(a[57]=U(" 不可调度 ",-1)),Be(l)?(n(),$e(R,{key:0,content:Be(l),effect:"dark",placement:"top"},{default:Ze(()=>a[55]||(a[55]=[e("i",{class:"fas fa-question-circle ml-1 cursor-help text-gray-500"},null,-1)])),_:2,__:[55]},1032,["content"])):b("",!0)])):b("",!0),l.status==="blocked"&&l.errorMessage?(n(),d("span",{key:2,class:"mt-1 max-w-xs truncate text-xs text-gray-500 dark:text-gray-400",title:l.errorMessage},v(l.errorMessage),9,gd)):b("",!0),l.accountType==="dedicated"?(n(),d("span",md," 绑定: "+v(l.boundApiKeysCount||0)+" 个API Key ",1)):b("",!0)])]),e("td",yd,[l.platform==="claude"||l.platform==="claude-console"||l.platform==="bedrock"||l.platform==="gemini"||l.platform==="openai"||l.platform==="azure_openai"||l.platform==="ccr"?(n(),d("div",xd,[e("div",fd,[e("div",{class:"h-2 rounded-full bg-gradient-to-r from-green-500 to-blue-600 transition-all duration-300",style:et({width:101-(l.priority||50)+"%"})},null,4)]),e("span",cd,v(l.priority||50),1)])):(n(),d("div",bd,a[58]||(a[58]=[e("span",{class:"text-xs"},"N/A",-1)])))]),e("td",vd,[je(l.proxy)?(n(),d("div",{key:0,class:"break-all rounded bg-blue-50 px-2 py-1 font-mono text-xs",title:je(l.proxy)},v(je(l.proxy)),9,kd)):(n(),d("div",wd,"无代理"))]),e("td",hd,[l.usage&&l.usage.daily?(n(),d("div",Ad,[e("div",$d,[a[59]||(a[59]=e("div",{class:"h-2 w-2 rounded-full bg-blue-500"},null,-1)),e("span",Cd,v(l.usage.daily.requests||0)+" 次",1)]),e("div",Id,[a[60]||(a[60]=e("div",{class:"h-2 w-2 rounded-full bg-purple-500"},null,-1)),e("span",Ud,v($(l.usage.daily.allTokens||0))+"M",1)]),e("div",Td,[a[61]||(a[61]=e("div",{class:"h-2 w-2 rounded-full bg-green-500"},null,-1)),e("span",Vd,"$"+v(Je(l)),1)]),l.usage.averages&&l.usage.averages.rpm>0?(n(),d("div",Rd," 平均 "+v(l.usage.averages.rpm.toFixed(2))+" RPM ",1)):b("",!0)])):(n(),d("div",zd,"暂无数据"))]),e("td",Kd,[l.platform==="claude"&&l.sessionWindow&&l.sessionWindow.hasActiveWindow?(n(),d("div",Sd,[l.usage&&l.usage.sessionWindow?(n(),d("div",Md,[e("div",Pd,[a[62]||(a[62]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-purple-500"},null,-1)),e("span",Od,v($(l.usage.sessionWindow.totalTokens))+"M ",1)]),e("div",Ld,[a[63]||(a[63]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-green-500"},null,-1)),e("span",jd," $"+v(ve(l.usage.sessionWindow.totalCost)),1)])])):b("",!0),e("div",Dd,[e("div",Ed,[e("div",{class:S(["h-2 rounded-full transition-all duration-300",He(l.sessionWindow.sessionWindowStatus)]),style:et({width:l.sessionWindow.progress+"%"})},null,6)]),e("span",Wd,v(l.sessionWindow.progress)+"% ",1)]),e("div",qd,[e("div",null,v(De(l.sessionWindow.windowStart,l.sessionWindow.windowEnd)),1),l.sessionWindow.remainingTime>0?(n(),d("div",Gd," 剩余 "+v(Fe(l.sessionWindow.remainingTime)),1)):b("",!0)])])):l.platform==="claude-console"?(n(),d("div",Nd,[Number(l.dailyQuota)>0?(n(),d("div",Fd,[e("div",Qd,[a[64]||(a[64]=e("span",{class:"text-gray-600 dark:text-gray-300"},"额度进度",-1)),e("span",_d,v(We(l).toFixed(1))+"% ",1)]),e("div",Bd,[e("div",Hd,[e("div",{class:S(["h-2 rounded-full transition-all duration-300",nt(We(l))]),style:et({width:Math.min(100,We(l))+"%"})},null,6)]),e("span",Jd," $"+v(ve(((te=(F=l.usage)==null?void 0:F.daily)==null?void 0:te.cost)||0))+" / $"+v(Number(l.dailyQuota).toFixed(2)),1)]),e("div",Yd,[U(" 剩余 $"+v(it(l))+" ",1),e("span",Zd,"重置 "+v(l.quotaResetTime||"00:00"),1)])])):(n(),d("div",Xd,a[65]||(a[65]=[e("i",{class:"fas fa-minus"},null,-1)])))])):l.platform==="claude"?(n(),d("div",eu,a[66]||(a[66]=[e("i",{class:"fas fa-minus"},null,-1)]))):(n(),d("div",tu,a[67]||(a[67]=[e("span",{class:"text-xs"},"N/A",-1)])))]),e("td",su,v(qe(l.lastUsedAt)),1),e("td",au,[e("div",ru,[(l.platform==="claude"||l.platform==="claude-console"||l.platform==="openai"||l.platform==="openai-responses")&&(l.status==="unauthorized"||l.status!=="active"||(pe=l.rateLimitStatus)!=null&&pe.isRateLimited||l.rateLimitStatus==="limited"||!l.isActive)?(n(),d("button",{key:0,class:S(["rounded px-2.5 py-1 text-xs font-medium transition-colors",l.isResetting?"cursor-not-allowed bg-gray-100 text-gray-400":"bg-yellow-100 text-yellow-700 hover:bg-yellow-200"]),disabled:l.isResetting,title:l.isResetting?"重置中...":"重置所有异常状态",onClick:se=>Ke(l)},[e("i",{class:S(["fas fa-redo",l.isResetting?"animate-spin":""])},null,2),a[68]||(a[68]=e("span",{class:"ml-1"},"重置状态",-1))],10,lu)):b("",!0),e("button",{class:S(["rounded px-2.5 py-1 text-xs font-medium transition-colors",l.isTogglingSchedulable?"cursor-not-allowed bg-gray-100 text-gray-400":l.schedulable?"bg-green-100 text-green-700 hover:bg-green-200":"bg-gray-100 text-gray-700 hover:bg-gray-200"]),disabled:l.isTogglingSchedulable,title:l.schedulable?"点击禁用调度":"点击启用调度",onClick:se=>Se(l)},[e("i",{class:S(["fas",l.schedulable?"fa-toggle-on":"fa-toggle-off"])},null,2),e("span",nu,v(l.schedulable?"调度":"停用"),1)],10,ou),e("button",{class:"rounded bg-blue-100 px-2.5 py-1 text-xs font-medium text-blue-700 transition-colors hover:bg-blue-200",title:"编辑账户",onClick:se=>Qe(l)},a[69]||(a[69]=[e("i",{class:"fas fa-edit"},null,-1),e("span",{class:"ml-1"},"编辑",-1)]),8,iu),e("button",{class:"rounded bg-red-100 px-2.5 py-1 text-xs font-medium text-red-700 transition-colors hover:bg-red-200",title:"删除账户",onClick:se=>_e(l)},a[70]||(a[70]=[e("i",{class:"fas fa-trash"},null,-1),e("span",{class:"ml-1"},"删除",-1)]),8,du)])])])}),128))])])])),!g.value&&s.value.length>0?(n(),d("div",uu,[(n(!0),d(fe,null,we(s.value,l=>{var F,te,pe,se;return n(),d("div",{key:l.id,class:"card p-4 transition-shadow hover:shadow-lg"},[e("div",pu,[e("div",gu,[e("div",{class:S(["flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg",l.platform==="claude"?"bg-gradient-to-br from-purple-500 to-purple-600":l.platform==="bedrock"?"bg-gradient-to-br from-orange-500 to-red-600":l.platform==="azure_openai"?"bg-gradient-to-br from-blue-500 to-cyan-600":l.platform==="openai"?"bg-gradient-to-br from-gray-600 to-gray-700":l.platform==="ccr"?"bg-gradient-to-br from-teal-500 to-emerald-600":"bg-gradient-to-br from-blue-500 to-blue-600"])},[e("i",{class:S(["text-sm text-white",l.platform==="claude"?"fas fa-brain":l.platform==="bedrock"?"fab fa-aws":l.platform==="azure_openai"?"fab fa-microsoft":l.platform==="openai"?"fas fa-openai":l.platform==="ccr"?"fas fa-code-branch":"fas fa-robot"])},null,2)],2),e("div",null,[e("h4",mu,v(l.name||l.email),1),e("div",yu,[e("span",xu,v(l.platform),1),a[71]||(a[71]=e("span",{class:"text-xs text-gray-400"},"|",-1)),e("span",fu,v(l.type),1)])])]),e("span",{class:S(["inline-flex items-center rounded-full px-2 py-1 text-xs font-semibold",he(l)])},[e("div",{class:S(["mr-1.5 h-1.5 w-1.5 rounded-full",lt(l)])},null,2),U(" "+v(rt(l)),1)],2)]),e("div",cu,[e("div",null,[a[75]||(a[75]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"今日使用",-1)),e("div",bu,[e("div",vu,[a[72]||(a[72]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-blue-500"},null,-1)),e("p",ku,v(((te=(F=l.usage)==null?void 0:F.daily)==null?void 0:te.requests)||0)+" 次 ",1)]),e("div",wu,[a[73]||(a[73]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-purple-500"},null,-1)),e("p",hu,v($(((se=(pe=l.usage)==null?void 0:pe.daily)==null?void 0:se.allTokens)||0))+"M ",1)]),e("div",Au,[a[74]||(a[74]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-green-500"},null,-1)),e("p",$u," $"+v(Je(l)),1)])])]),e("div",null,[a[78]||(a[78]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"会话窗口",-1)),l.usage&&l.usage.sessionWindow?(n(),d("div",Cu,[e("div",Iu,[a[76]||(a[76]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-purple-500"},null,-1)),e("p",Uu,v($(l.usage.sessionWindow.totalTokens))+"M ",1)]),e("div",Tu,[a[77]||(a[77]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-green-500"},null,-1)),e("p",Vu," $"+v(ve(l.usage.sessionWindow.totalCost)),1)])])):(n(),d("div",Ru,"-"))])]),e("div",zu,[l.platform==="claude"&&l.sessionWindow&&l.sessionWindow.hasActiveWindow?(n(),d("div",Ku,[e("div",Su,[e("div",Mu,[a[80]||(a[80]=e("span",{class:"font-medium text-gray-600 dark:text-gray-300"},"会话窗口",-1)),ke(R,{content:"会话窗口进度不代表使用量,仅表示距离下一个5小时窗口的剩余时间",placement:"top"},{default:Ze(()=>a[79]||(a[79]=[e("i",{class:"fas fa-question-circle cursor-help text-xs text-gray-400 hover:text-gray-600"},null,-1)])),_:1,__:[79]})]),e("span",Pu,v(l.sessionWindow.progress)+"% ",1)]),e("div",Ou,[e("div",{class:S(["h-full transition-all duration-300",He(l.sessionWindow.sessionWindowStatus)]),style:et({width:l.sessionWindow.progress+"%"})},null,6)]),e("div",Lu,[e("span",ju,v(De(l.sessionWindow.windowStart,l.sessionWindow.windowEnd)),1),l.sessionWindow.remainingTime>0?(n(),d("span",Du," 剩余 "+v(Fe(l.sessionWindow.remainingTime)),1)):(n(),d("span",Eu," 已结束 "))])])):b("",!0),e("div",Wu,[a[81]||(a[81]=e("span",{class:"text-gray-500 dark:text-gray-400"},"最后使用",-1)),e("span",qu,v(l.lastUsedAt?ot(l.lastUsedAt):"从未使用"),1)]),l.proxyConfig&&l.proxyConfig.type!=="none"?(n(),d("div",Gu,[a[82]||(a[82]=e("span",{class:"text-gray-500 dark:text-gray-400"},"代理",-1)),e("span",Nu,v(l.proxyConfig.type.toUpperCase()),1)])):b("",!0),e("div",Fu,[a[83]||(a[83]=e("span",{class:"text-gray-500 dark:text-gray-400"},"优先级",-1)),e("span",Qu,v(l.priority||50),1)])]),e("div",_u,[e("button",{class:S(["flex flex-1 items-center justify-center gap-1 rounded-lg px-3 py-2 text-xs transition-colors",l.schedulable?"bg-gray-50 text-gray-600 hover:bg-gray-100":"bg-green-50 text-green-600 hover:bg-green-100"]),disabled:l.isTogglingSchedulable,onClick:be=>Se(l)},[e("i",{class:S(["fas",l.schedulable?"fa-pause":"fa-play"])},null,2),U(" "+v(l.schedulable?"暂停":"启用"),1)],10,Bu),e("button",{class:"flex-1 rounded-lg bg-gray-50 px-3 py-2 text-xs text-gray-600 transition-colors hover:bg-gray-100",onClick:be=>Qe(l)},a[84]||(a[84]=[e("i",{class:"fas fa-edit mr-1"},null,-1),U(" 编辑 ",-1)]),8,Hu),e("button",{class:"rounded-lg bg-red-50 px-3 py-2 text-xs text-red-600 transition-colors hover:bg-red-100",onClick:be=>_e(l)},a[85]||(a[85]=[e("i",{class:"fas fa-trash"},null,-1)]),8,Ju)])])}),128))])):b("",!0)]),w.value&&(!P.value||P.value!=="ccr")?(n(),$e(It,{key:0,onClose:Ee,onPlatformChanged:a[11]||(a[11]=l=>P.value=l),onSuccess:m})):w.value&&P.value==="ccr"?(n(),$e(Ut,{key:1,onClose:Ee,onSuccess:m})):b("",!0),xe.value&&ze.value&&ze.value.platform==="ccr"?(n(),$e(Ut,{key:2,account:ze.value,onClose:a[12]||(a[12]=l=>xe.value=!1),onSuccess:p},null,8,["account"])):xe.value?(n(),$e(It,{key:3,account:ze.value,onClose:a[13]||(a[13]=l=>xe.value=!1),onSuccess:p},null,8,["account"])):b("",!0),ke(Tt,{"cancel-text":ye(x).cancelText,"confirm-text":ye(x).confirmText,message:ye(x).message,show:ye(ue),title:ye(x).title,onCancel:ye(L),onConfirm:ye(T)},null,8,["cancel-text","confirm-text","message","show","title","onCancel","onConfirm"])])}}},r0=ct(Yu,[["__scopeId","data-v-d5215c36"]]);export{r0 as default};