import{e as da,f as ua}from"./element-plus-BQHxDbdW.js";import{r as w,aP as pa,o as he,V as Or,x as n,y as o,z as e,L as m,K as v,al as Oe,aT as zt,O as c,aq as P,aa as ga,P as u,aV as Vr,aY as dr,C,c as ie,Z as ya,an as _e,Q as Ce,q as ur,I as Ye,ac as Be,a5 as jt,R as He,B as Qe,u as at,aX as ma,aU as ca,D as Gr,_ as xa,J as Pt,Y as Ut}from"./vue-vendor-R8HMg95E.js";import{c as F,s as L,_ as pr,a as fa,A as Xr}from"./index-aIDoCTCr.js";import{C as sa}from"./ConfirmModal-CG9kmTpT.js";import{C as ba}from"./chart-yFHxLHpB.js";import{C as jr,_ as va}from"./ActionDropdown-CEhNJGL_.js";import"./vendor-Dr8jvgFu.js";const Rr=w(!1),ea=w({title:"",message:"",confirmText:"继续",cancelText:"取消"}),Lt=w(null);function la(){return{showConfirmModal:Rr,confirmOptions:ea,showConfirm:(N,U,B="继续",R="取消")=>new Promise(K=>{ea.value={title:N,message:U,confirmText:B,cancelText:R},Lt.value=K,Rr.value=!0}),handleConfirm:()=>{Rr.value=!1,Lt.value&&(Lt.value(!0),Lt.value=null)},handleCancel:()=>{Rr.value=!1,Lt.value&&(Lt.value(!1),Lt.value=null)}}}const oa=pa("accounts",()=>{const J=w([]),Ve=w([]),g=w([]),N=w([]),U=w([]),B=w([]),R=w([]),K=w([]),x=w(!1),k=w(null),G=w(""),fe=w("asc"),Y=async()=>{x.value=!0,k.value=null;try{const f=await F.get("/admin/claude-accounts");if(f.success)J.value=f.data||[];else throw new Error(f.message||"获取Claude账户失败")}catch(f){throw k.value=f.message,f}finally{x.value=!1}},pe=async()=>{x.value=!0,k.value=null;try{const f=await F.get("/admin/claude-console-accounts");if(f.success)Ve.value=f.data||[];else throw new Error(f.message||"获取Claude Console账户失败")}catch(f){throw k.value=f.message,f}finally{x.value=!1}},Z=async()=>{x.value=!0,k.value=null;try{const f=await F.get("/admin/bedrock-accounts");if(f.success)g.value=f.data||[];else throw new Error(f.message||"获取Bedrock账户失败")}catch(f){throw k.value=f.message,f}finally{x.value=!1}},X=async()=>{x.value=!0,k.value=null;try{const f=await F.get("/admin/gemini-accounts");if(f.success)N.value=f.data||[];else throw new Error(f.message||"获取Gemini账户失败")}catch(f){throw k.value=f.message,f}finally{x.value=!1}},V=async()=>{x.value=!0,k.value=null;try{const f=await F.get("/admin/openai-accounts");if(f.success)U.value=f.data||[];else throw new Error(f.message||"获取OpenAI账户失败")}catch(f){throw k.value=f.message,f}finally{x.value=!1}},h=async()=>{x.value=!0,k.value=null;try{const f=await F.get("/admin/azure-openai-accounts");if(f.success)B.value=f.data||[];else throw new Error(f.message||"获取Azure OpenAI账户失败")}catch(f){throw k.value=f.message,f}finally{x.value=!1}},y=async()=>{x.value=!0,k.value=null;try{const f=await F.get("/admin/openai-responses-accounts");if(f.success)R.value=f.data||[];else throw new Error(f.message||"获取OpenAI-Responses账户失败")}catch(f){throw k.value=f.message,f}finally{x.value=!1}},z=async()=>{x.value=!0,k.value=null;try{const f=await F.get("/admin/droid-accounts");if(f.success)K.value=f.data||[];else throw new Error(f.message||"获取Droid账户失败")}catch(f){throw k.value=f.message,f}finally{x.value=!1}};return{claudeAccounts:J,claudeConsoleAccounts:Ve,bedrockAccounts:g,geminiAccounts:N,openaiAccounts:U,azureOpenaiAccounts:B,openaiResponsesAccounts:R,droidAccounts:K,loading:x,error:k,sortBy:G,sortOrder:fe,fetchClaudeAccounts:Y,fetchClaudeConsoleAccounts:pe,fetchBedrockAccounts:Z,fetchGeminiAccounts:X,fetchOpenAIAccounts:V,fetchAzureOpenAIAccounts:h,fetchOpenAIResponsesAccounts:y,fetchDroidAccounts:z,fetchAllAccounts:async()=>{x.value=!0,k.value=null;try{await Promise.all([Y(),pe(),Z(),X(),V(),h(),y(),z()])}catch(f){throw k.value=f.message,f}finally{x.value=!1}},createClaudeAccount:async f=>{x.value=!0,k.value=null;try{const p=await F.post("/admin/claude-accounts",f);if(p.success)return await Y(),p.data;throw new Error(p.message||"创建Claude账户失败")}catch(p){throw k.value=p.message,p}finally{x.value=!1}},createClaudeConsoleAccount:async f=>{x.value=!0,k.value=null;try{const p=await F.post("/admin/claude-console-accounts",f);if(p.success)return await pe(),p.data;throw new Error(p.message||"创建Claude Console账户失败")}catch(p){throw k.value=p.message,p}finally{x.value=!1}},createBedrockAccount:async f=>{x.value=!0,k.value=null;try{const p=await F.post("/admin/bedrock-accounts",f);if(p.success)return await Z(),p.data;throw new Error(p.message||"创建Bedrock账户失败")}catch(p){throw k.value=p.message,p}finally{x.value=!1}},createGeminiAccount:async f=>{x.value=!0,k.value=null;try{const p=await F.post("/admin/gemini-accounts",f);if(p.success)return await X(),p.data;throw new Error(p.message||"创建Gemini账户失败")}catch(p){throw k.value=p.message,p}finally{x.value=!1}},createOpenAIAccount:async f=>{x.value=!0,k.value=null;try{const p=await F.post("/admin/openai-accounts",f);if(p.success)return await V(),p.data;throw new Error(p.message||"创建OpenAI账户失败")}catch(p){throw k.value=p.message,p}finally{x.value=!1}},createDroidAccount:async f=>{x.value=!0,k.value=null;try{const p=await F.post("/admin/droid-accounts",f);if(p.success)return await z(),p.data;throw new Error(p.message||"创建Droid账户失败")}catch(p){throw k.value=p.message,p}finally{x.value=!1}},updateDroidAccount:async(f,p)=>{x.value=!0,k.value=null;try{const D=await F.put(`/admin/droid-accounts/${f}`,p);if(D.success)return await z(),D.data;throw new Error(D.message||"更新Droid账户失败")}catch(D){throw k.value=D.message,D}finally{x.value=!1}},createAzureOpenAIAccount:async f=>{x.value=!0,k.value=null;try{const p=await F.post("/admin/azure-openai-accounts",f);if(p.success)return await h(),p.data;throw new Error(p.message||"创建Azure OpenAI账户失败")}catch(p){throw k.value=p.message,p}finally{x.value=!1}},createOpenAIResponsesAccount:async f=>{x.value=!0,k.value=null;try{const p=await F.post("/admin/openai-responses-accounts",f);if(p.success)return await y(),p.data;throw new Error(p.message||"创建OpenAI-Responses账户失败")}catch(p){throw k.value=p.message,p}finally{x.value=!1}},createGeminiApiAccount:async f=>{x.value=!0,k.value=null;try{const p=await F.post("/admin/gemini-api-accounts",f);if(p.success)return await X(),p.data;throw new Error(p.message||"创建Gemini API账户失败")}catch(p){throw k.value=p.message,p}finally{x.value=!1}},updateClaudeAccount:async(f,p)=>{x.value=!0,k.value=null;try{const D=await F.put(`/admin/claude-accounts/${f}`,p);if(D.success)return await Y(),D;throw new Error(D.message||"更新Claude账户失败")}catch(D){throw k.value=D.message,D}finally{x.value=!1}},updateClaudeConsoleAccount:async(f,p)=>{x.value=!0,k.value=null;try{const D=await F.put(`/admin/claude-console-accounts/${f}`,p);if(D.success)return await pe(),D;throw new Error(D.message||"更新Claude Console账户失败")}catch(D){throw k.value=D.message,D}finally{x.value=!1}},updateBedrockAccount:async(f,p)=>{x.value=!0,k.value=null;try{const D=await F.put(`/admin/bedrock-accounts/${f}`,p);if(D.success)return await Z(),D;throw new Error(D.message||"更新Bedrock账户失败")}catch(D){throw k.value=D.message,D}finally{x.value=!1}},updateGeminiAccount:async(f,p)=>{x.value=!0,k.value=null;try{const D=await F.put(`/admin/gemini-accounts/${f}`,p);if(D.success)return await X(),D;throw new Error(D.message||"更新Gemini账户失败")}catch(D){throw k.value=D.message,D}finally{x.value=!1}},updateOpenAIAccount:async(f,p)=>{x.value=!0,k.value=null;try{const D=await F.put(`/admin/openai-accounts/${f}`,p);if(D.success)return await V(),D;throw new Error(D.message||"更新OpenAI账户失败")}catch(D){throw k.value=D.message,D}finally{x.value=!1}},updateAzureOpenAIAccount:async(f,p)=>{x.value=!0,k.value=null;try{const D=await F.put(`/admin/azure-openai-accounts/${f}`,p);if(D.success)return await h(),D;throw new Error(D.message||"更新Azure OpenAI账户失败")}catch(D){throw k.value=D.message,D}finally{x.value=!1}},updateOpenAIResponsesAccount:async(f,p)=>{x.value=!0,k.value=null;try{const D=await F.put(`/admin/openai-responses-accounts/${f}`,p);if(D.success)return await y(),D;throw new Error(D.message||"更新OpenAI-Responses账户失败")}catch(D){throw k.value=D.message,D}finally{x.value=!1}},updateGeminiApiAccount:async(f,p)=>{x.value=!0,k.value=null;try{const D=await F.put(`/admin/gemini-api-accounts/${f}`,p);if(D.success)return await X(),D;throw new Error(D.message||"更新Gemini API账户失败")}catch(D){throw k.value=D.message,D}finally{x.value=!1}},toggleAccount:async(f,p)=>{x.value=!0,k.value=null;try{let D;f==="claude"?D=`/admin/claude-accounts/${p}/toggle`:f==="claude-console"?D=`/admin/claude-console-accounts/${p}/toggle`:f==="bedrock"?D=`/admin/bedrock-accounts/${p}/toggle`:f==="gemini"?D=`/admin/gemini-accounts/${p}/toggle`:f==="openai"?D=`/admin/openai-accounts/${p}/toggle`:f==="azure_openai"?D=`/admin/azure-openai-accounts/${p}/toggle`:f==="openai-responses"?D=`/admin/openai-responses-accounts/${p}/toggle`:D=`/admin/openai-accounts/${p}/toggle`;const Xe=await F.put(D);if(Xe.success)return f==="claude"?await Y():f==="claude-console"?await pe():f==="bedrock"?await Z():f==="gemini"?await X():f==="openai"?await V():f==="azure_openai"?await h():f==="openai-responses"?await y():await V(),Xe;throw new Error(Xe.message||"切换状态失败")}catch(D){throw k.value=D.message,D}finally{x.value=!1}},deleteAccount:async(f,p)=>{x.value=!0,k.value=null;try{let D;f==="claude"?D=`/admin/claude-accounts/${p}`:f==="claude-console"?D=`/admin/claude-console-accounts/${p}`:f==="bedrock"?D=`/admin/bedrock-accounts/${p}`:f==="gemini"?D=`/admin/gemini-accounts/${p}`:f==="openai"?D=`/admin/openai-accounts/${p}`:f==="azure_openai"?D=`/admin/azure-openai-accounts/${p}`:f==="openai-responses"?D=`/admin/openai-responses-accounts/${p}`:D=`/admin/openai-accounts/${p}`;const Xe=await F.delete(D);if(Xe.success)return f==="claude"?await Y():f==="claude-console"?await pe():f==="bedrock"?await Z():f==="gemini"?await X():f==="openai"?await V():f==="azure_openai"?await h():f==="openai-responses"?await y():await V(),Xe;throw new Error(Xe.message||"删除失败")}catch(D){throw k.value=D.message,D}finally{x.value=!1}},refreshClaudeToken:async f=>{x.value=!0,k.value=null;try{const p=await F.post(`/admin/claude-accounts/${f}/refresh`);if(p.success)return await Y(),p;throw new Error(p.message||"Token刷新失败")}catch(p){throw k.value=p.message,p}finally{x.value=!1}},generateClaudeAuthUrl:async f=>{try{const p=await F.post("/admin/claude-accounts/generate-auth-url",f);if(p.success)return p.data;throw new Error(p.message||"生成授权URL失败")}catch(p){throw k.value=p.message,p}},exchangeClaudeCode:async f=>{try{const p=await F.post("/admin/claude-accounts/exchange-code",f);if(p.success)return p.data;throw new Error(p.message||"交换授权码失败")}catch(p){throw k.value=p.message,p}},generateClaudeSetupTokenUrl:async f=>{try{const p=await F.post("/admin/claude-accounts/generate-setup-token-url",f);if(p.success)return p.data;throw new Error(p.message||"生成Setup Token URL失败")}catch(p){throw k.value=p.message,p}},exchangeClaudeSetupTokenCode:async f=>{try{const p=await F.post("/admin/claude-accounts/exchange-setup-token-code",f);if(p.success)return p.data;throw new Error(p.message||"交换Setup Token授权码失败")}catch(p){throw k.value=p.message,p}},oauthWithCookie:async f=>{try{const p=await F.post("/admin/claude-accounts/oauth-with-cookie",f);if(p.success)return p.data;throw new Error(p.message||"Cookie授权失败")}catch(p){throw k.value=p.message,p}},oauthSetupTokenWithCookie:async f=>{try{const p=await F.post("/admin/claude-accounts/setup-token-with-cookie",f);if(p.success)return p.data;throw new Error(p.message||"Cookie授权失败")}catch(p){throw k.value=p.message,p}},generateGeminiAuthUrl:async f=>{try{const p=await F.post("/admin/gemini-accounts/generate-auth-url",f);if(p.success)return p.data;throw new Error(p.message||"生成授权URL失败")}catch(p){throw k.value=p.message,p}},exchangeGeminiCode:async f=>{try{const p=await F.post("/admin/gemini-accounts/exchange-code",f);if(p.success)return p.data;throw new Error(p.message||"交换授权码失败")}catch(p){throw k.value=p.message,p}},generateOpenAIAuthUrl:async f=>{try{const p=await F.post("/admin/openai-accounts/generate-auth-url",f);if(p.success)return p.data;throw new Error(p.message||"生成授权URL失败")}catch(p){throw k.value=p.message,p}},exchangeOpenAICode:async f=>{try{const p=await F.post("/admin/openai-accounts/exchange-code",f);if(p.success)return p.data;throw new Error(p.message||"交换授权码失败")}catch(p){throw k.value=p.message,p}},generateDroidAuthUrl:async f=>{k.value=null;try{const p=await F.post("/admin/droid-accounts/generate-auth-url",f);if(p.success)return p.data;throw new Error(p.message||"生成授权URL失败")}catch(p){throw k.value=p.message,p}},exchangeDroidCode:async f=>{k.value=null;try{return await F.post("/admin/droid-accounts/exchange-code",f)}catch(p){throw k.value=p.message,p}},sortAccounts:f=>{G.value===f?fe.value=fe.value==="asc"?"desc":"asc":(G.value=f,fe.value="asc")},reset:()=>{J.value=[],Ve.value=[],g.value=[],N.value=[],U.value=[],B.value=[],R.value=[],K.value=[],x.value=!1,k.value=null,G.value="",fe.value="asc"}}}),ka={class:"space-y-4"},ha={class:"flex items-center justify-between"},wa={class:"flex cursor-pointer items-center"},$a={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"},Aa={class:"relative"},Ca={key:0,class:"mt-1 text-xs text-red-500"},Ua={key:1,class:"mt-1 text-xs text-green-500"},Ia={class:"grid grid-cols-2 gap-4"},Ta={class:"space-y-4"},_a={class:"flex items-center"},Ka={key:0,class:"grid grid-cols-2 gap-4"},Ma={class:"relative"},Sa=["type"],Wr={__name:"ProxyConfig",props:{modelValue:{type:Object,default:()=>({enabled:!1,type:"socks5",host:"",port:"",username:"",password:""})}},emits:["update:modelValue"],setup(J,{emit:Ve}){const g=J,N=Ve,U=w({...g.modelValue}),B=w(!!(U.value.username||U.value.password)),R=w(!1),K=w(""),x=w(""),k=w(!1);he(()=>g.modelValue,V=>{JSON.stringify(V)!==JSON.stringify(U.value)&&(U.value={...V},B.value=!!(V.username||V.password))},{deep:!0}),he(()=>U.value.enabled,()=>{fe()}),he(()=>U.value.type,()=>{fe()}),he(()=>U.value.host,()=>{fe()}),he(()=>U.value.port,()=>{fe()}),he(()=>U.value.username,()=>{fe()}),he(()=>U.value.password,()=>{fe()}),he(B,V=>{V||(U.value.username="",U.value.password="",fe())});let G=null;function fe(){G&&clearTimeout(G),G=setTimeout(()=>{const V={...U.value};B.value||(V.username="",V.password=""),N("update:modelValue",V)},100)}function Y(){if(x.value="",k.value=!1,!!K.value)try{const V=K.value.split("#")[0].trim();if(!V)return;const h=/^(socks5|https?):\/\/(?:([^:@]+):([^@]+)@)?([^:]+):(\d+)$/i,y=V.match(h);if(!y){const we=/^([^:]+):(\d+)$/,ue=V.match(we);if(ue){U.value.type="socks5",U.value.host=ue[1],U.value.port=ue[2],U.value.username="",U.value.password="",B.value=!1,k.value=!0,fe(),setTimeout(()=>{k.value=!1},3e3);return}x.value="无效的代理URL格式,请检查输入";return}const[,z,ee,E,_,q]=y;U.value.type=z.toLowerCase(),U.value.host=_,U.value.port=q,ee&&E?(U.value.username=decodeURIComponent(ee),U.value.password=decodeURIComponent(E),B.value=!0):(U.value.username="",U.value.password="",B.value=!1),k.value=!0,fe(),setTimeout(()=>{k.value=!1},3e3)}catch{x.value="解析失败,请检查URL格式"}}function pe(){K.value="",x.value="",k.value=!1}function Z(){setTimeout(()=>{Y()},0)}function X(){const V=K.value.trim();V.includes("://")?(/^(socks5|https?):\/\/[^:]+:\d+/i.test(V)||/^(socks5|https?):\/\/[^:@]+:[^@]+@[^:]+:\d+/i.test(V))&&Y():/^[^:]+:\d{2,5}$/.test(V)&&Y()}return Or(()=>{G&&clearTimeout(G)}),(V,h)=>(o(),n("div",ka,[e("div",ha,[h[10]||(h[10]=e("h4",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"代理设置 (可选)",-1)),e("label",wa,[v(e("input",{"onUpdate:modelValue":h[0]||(h[0]=y=>U.value.enabled=y),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[Oe,U.value.enabled]]),h[9]||(h[9]=e("span",{class:"ml-2 text-sm text-gray-700 dark:text-gray-300"},"启用代理",-1))])]),U.value.enabled?(o(),n("div",$a,[h[22]||(h[22]=zt('

配置代理以访问受限的网络资源。支持 SOCKS5 和 HTTP 代理。

请确保代理服务器稳定可用,否则会影响账户的正常使用。

',1)),e("div",null,[h[14]||(h[14]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},[c(" 快速配置 "),e("span",{class:"ml-1 text-xs font-normal text-gray-500 dark:text-gray-400"}," (粘贴完整代理URL自动填充) ")],-1)),e("div",Aa,[v(e("input",{"onUpdate:modelValue":h[1]||(h[1]=y=>K.value=y),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:"例如: socks5://username:password@host:port 或 http://host:port",type:"text",onInput:X,onKeyup:ga(Y,["enter"]),onPaste:Z},null,544),[[P,K.value]]),K.value?(o(),n("button",{key:0,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:pe},h[11]||(h[11]=[e("i",{class:"fas fa-times"},null,-1)]))):m("",!0)]),x.value?(o(),n("p",Ca,[h[12]||(h[12]=e("i",{class:"fas fa-exclamation-circle mr-1"},null,-1)),c(" "+u(x.value),1)])):k.value?(o(),n("p",Ua,h[13]||(h[13]=[e("i",{class:"fas fa-check-circle mr-1"},null,-1),c(" 代理配置已自动填充 ",-1)]))):m("",!0)]),h[23]||(h[23]=e("div",{class:"my-3 border-t border-gray-200 dark:border-gray-600"},null,-1)),e("div",null,[h[16]||(h[16]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"代理类型",-1)),v(e("select",{"onUpdate:modelValue":h[2]||(h[2]=y=>U.value.type=y),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200"},h[15]||(h[15]=[e("option",{value:"socks5"},"SOCKS5",-1),e("option",{value:"http"},"HTTP",-1),e("option",{value:"https"},"HTTPS",-1)]),512),[[Vr,U.value.type]])]),e("div",Ia,[e("div",null,[h[17]||(h[17]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"主机地址",-1)),v(e("input",{"onUpdate:modelValue":h[3]||(h[3]=y=>U.value.host=y),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),[[P,U.value.host]])]),e("div",null,[h[18]||(h[18]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"端口",-1)),v(e("input",{"onUpdate:modelValue":h[4]||(h[4]=y=>U.value.port=y),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),[[P,U.value.port]])])]),e("div",Ta,[e("div",_a,[v(e("input",{id:"proxyAuth","onUpdate:modelValue":h[5]||(h[5]=y=>B.value=y),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[Oe,B.value]]),h[19]||(h[19]=e("label",{class:"ml-2 cursor-pointer text-sm text-gray-700 dark:text-gray-300",for:"proxyAuth"}," 需要身份验证 ",-1))]),B.value?(o(),n("div",Ka,[e("div",null,[h[20]||(h[20]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"用户名",-1)),v(e("input",{"onUpdate:modelValue":h[6]||(h[6]=y=>U.value.username=y),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),[[P,U.value.username]])]),e("div",null,[h[21]||(h[21]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"密码",-1)),e("div",Ma,[v(e("input",{"onUpdate:modelValue":h[7]||(h[7]=y=>U.value.password=y),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:R.value?"text":"password"},null,8,Sa),[[dr,U.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:h[8]||(h[8]=y=>R.value=!R.value)},[e("i",{class:C(R.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])])])])):m("",!0)]),h[24]||(h[24]=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,"提示:"),c("代理设置将用于所有与此账户相关的API请求。请确保代理服务器支持HTTPS流量转发。 ")])],-1))])):m("",!0)]))}},Da={class:"space-y-6"},Pa={key:0},La={class:"rounded-lg border border-blue-200 bg-blue-50 p-6 dark:border-blue-700 dark:bg-blue-900/30"},za={class:"flex items-start gap-4"},ja={class:"flex-1"},Ra={class:"mb-4"},Va={class:"flex gap-4"},Oa={class:"flex cursor-pointer items-center gap-2"},Ea={class:"flex cursor-pointer items-center gap-2"},Na={key:0,class:"space-y-4"},Fa={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},qa={class:"mb-4"},Ga={class:"mb-2 flex items-center gap-2 text-sm font-semibold text-gray-700 dark:text-gray-300"},Wa={key:0,class:"rounded-full bg-blue-500 px-2 py-0.5 text-xs text-white"},Ba={key:0,class:"mt-1 text-xs text-blue-600 dark:text-blue-400"},Qa={key:0,class:"mb-4 rounded-lg border border-amber-200 bg-amber-50 p-3 dark:border-amber-700 dark:bg-amber-900/30"},Ha={key:1,class:"mb-4 rounded-lg border border-red-200 bg-red-50 p-3 dark:border-red-700 dark:bg-red-900/30"},Ja={class:"text-sm text-red-600 dark:text-red-400"},Ya=["disabled"],Za={key:0,class:"loading-spinner mr-2"},Xa={key:1,class:"fas fa-magic mr-2"},es={key:1},ts={class:"space-y-4"},rs={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},as={class:"flex items-start gap-3"},ss={class:"flex-1"},ls=["disabled"],os={key:0,class:"fas fa-link mr-2"},ns={key:1,class:"loading-spinner mr-2"},is={key:1,class:"space-y-3"},ds={class:"flex items-center gap-2"},us=["value"],ps={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},gs={class:"flex items-start gap-3"},ys={class:"flex-1"},ms={class:"space-y-3"},cs={key:1},xs={class:"rounded-lg border border-green-200 bg-green-50 p-6 dark:border-green-700 dark:bg-green-900/30"},fs={class:"flex items-start gap-4"},bs={class:"flex-1"},vs={class:"mb-4"},ks={class:"text-sm text-green-800 dark:text-green-300"},hs={class:"font-semibold"},ws={class:"space-y-4"},$s={class:"rounded-lg border border-green-300 bg-white/80 p-4 dark:border-green-600 dark:bg-gray-800/80"},As={class:"flex items-start gap-3"},Cs={class:"flex-1"},Us=["disabled"],Is={key:0,class:"fas fa-link mr-2"},Ts={key:1,class:"loading-spinner mr-2"},_s={key:1,class:"space-y-3"},Ks={class:"flex items-center gap-2"},Ms=["value"],Ss={class:"rounded-lg border border-green-300 bg-white/80 p-4 dark:border-green-600 dark:bg-gray-800/80"},Ds={class:"flex items-start gap-3"},Ps={class:"flex-1"},Ls={class:"space-y-3"},zs={key:2},js={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"},Vs={class:"flex-1"},Os={class:"space-y-4"},Es={class:"rounded-lg border border-orange-300 bg-white/80 p-4 dark:border-orange-600 dark:bg-gray-800/80"},Ns={class:"flex items-start gap-3"},Fs={class:"flex-1"},qs=["disabled"],Gs={key:0,class:"fas fa-link mr-2"},Ws={key:1,class:"loading-spinner mr-2"},Bs={key:1,class:"space-y-3"},Qs={class:"flex items-center gap-2"},Hs=["value"],Js={class:"rounded-lg border border-orange-300 bg-white/80 p-4 dark:border-orange-600 dark:bg-gray-800/80"},Ys={class:"flex items-start gap-3"},Zs={class:"flex-1"},Xs={class:"space-y-3"},el={key:3},tl={class:"rounded-lg border border-cyan-200 bg-cyan-50 p-6 dark:border-cyan-700 dark:bg-cyan-900/30"},rl={class:"flex items-start gap-4"},al={class:"flex-1"},sl={class:"space-y-4"},ll={class:"rounded-lg border border-cyan-300 bg-white/80 p-4 dark:border-cyan-600 dark:bg-gray-800/80"},ol={class:"flex items-start gap-3"},nl={class:"flex-1"},il=["disabled"],dl={key:0,class:"fas fa-link mr-2"},ul={key:1,class:"loading-spinner mr-2"},pl={key:1,class:"space-y-4"},gl={class:"space-y-2"},yl={class:"flex flex-col gap-2 rounded-md border border-cyan-200 bg-white p-3 dark:border-cyan-700 dark:bg-gray-800"},ml={class:"flex items-center gap-2"},cl=["value"],xl={class:"space-y-2"},fl={class:"flex items-center justify-between rounded-md border border-cyan-200 bg-cyan-50 px-4 py-3 dark:border-cyan-700 dark:bg-cyan-900/30"},bl={class:"font-mono text-xl font-semibold text-cyan-700 dark:text-cyan-200"},vl={class:"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},kl={class:"flex gap-3 pt-4"},hl=["disabled"],wl={key:0,class:"loading-spinner mr-2"},$l={__name:"OAuthFlow",props:{platform:{type:String,required:!0},proxy:{type:Object,default:null}},emits:["success","back"],setup(J,{expose:Ve,emit:g}){const N=J,U=g,B=oa(),R=w(!1),K=w(!1),x=w(""),k=w(""),G=w(!1),fe=ie(()=>N.platform==="gemini-antigravity"?"antigravity":"gemini-cli"),Y=w(""),pe=w(""),Z=w(""),X=w(""),V=w(0);let h=null;const y=w("manual"),z=w(""),ee=w(!1),E=w(""),_=w(!1),q=w({current:0,total:0}),we=ie(()=>z.value.split(` `).map(de=>de.trim()).filter(de=>de.length>0).length),ue=ie(()=>N.platform==="droid"?!!Y.value:x.value&&k.value.trim()),$e=ie(()=>{if(!V.value||V.value<=0)return"00:00";const de=Math.floor(V.value/60),r=V.value%60;return`${de.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`}),Le=de=>{if(Q(),!de||de<=0){V.value=0;return}V.value=Math.floor(de),h=setInterval(()=>{V.value<=1?(V.value=0,Q()):V.value-=1},1e3)},Q=()=>{h&&(clearInterval(h),h=null)};he(k,de=>{if(N.platform==="droid"||!de||typeof de!="string")return;const r=de.trim();if(!r)return;if(r.startsWith("http://")||r.startsWith("https://"))if(r.startsWith("http://localhost:45462")||r.startsWith("http://localhost:1455"))try{const qe=new URL(r).searchParams.get("code");qe?(k.value=qe,L("成功提取授权码!","success"),console.log("Successfully extracted authorization code from URL")):L("URL 中未找到授权码参数,请检查链接是否正确","error")}catch(ke){console.error("Failed to parse URL:",ke),L("链接格式错误,请检查是否为完整的 URL","error")}else if(N.platform==="gemini"||N.platform==="gemini-antigravity"||N.platform==="openai")try{const qe=new URL(r).searchParams.get("code");qe&&(k.value=qe,L("成功提取授权码!","success"))}catch{}else L("请粘贴以 http://localhost:1455 或 http://localhost:45462 开头的链接","error")});const I=async()=>{var de;Q(),x.value="",k.value="",pe.value="",Z.value="",X.value="",V.value=0,Y.value="",G.value=!1,R.value=!0;try{const r=(de=N.proxy)!=null&&de.enabled?{proxy:{type:N.proxy.type,host:N.proxy.host,port:parseInt(N.proxy.port),username:N.proxy.username||null,password:N.proxy.password||null}}:{};if(N.platform==="claude"){const W=await B.generateClaudeAuthUrl(r);x.value=W.authUrl,Y.value=W.sessionId}else if(N.platform==="gemini"||N.platform==="gemini-antigravity"){const W=await B.generateGeminiAuthUrl({...r,oauthProvider:fe.value});x.value=W.authUrl,Y.value=W.sessionId}else if(N.platform==="openai"){const W=await B.generateOpenAIAuthUrl(r);x.value=W.authUrl,Y.value=W.sessionId}else if(N.platform==="droid"){const W=await B.generateDroidAuthUrl(r);x.value=W.verificationUriComplete||W.verificationUri,Z.value=W.verificationUri,X.value=W.verificationUriComplete||W.verificationUri,pe.value=W.userCode,Le(W.expiresIn||300),Y.value=W.sessionId}}catch(r){L(r.message||"生成授权链接失败","error")}finally{R.value=!1}},Ue=()=>{Q(),x.value="",k.value="",pe.value="",Z.value="",X.value="",V.value=0,Y.value="",I()},re=async()=>{if(!x.value){L("请先生成授权链接","warning");return}try{await navigator.clipboard.writeText(x.value),G.value=!0,L("链接已复制","success"),setTimeout(()=>{G.value=!1},2e3)}catch{const r=document.createElement("input");r.value=x.value,document.body.appendChild(r),r.select(),document.execCommand("copy"),document.body.removeChild(r),G.value=!0,L("链接已复制","success"),setTimeout(()=>{G.value=!1},2e3)}},Ne=async()=>{if(!pe.value){L("请先生成授权验证码","warning");return}try{await navigator.clipboard.writeText(pe.value),L("验证码已复制","success")}catch{const r=document.createElement("input");r.value=pe.value,document.body.appendChild(r),r.select(),document.execCommand("copy"),document.body.removeChild(r),L("验证码已复制","success")}},H=()=>{X.value?window.open(X.value,"_blank","noopener"):Z.value&&window.open(Z.value,"_blank","noopener")},$=async()=>{var de;if(ue.value){K.value=!0;try{let r={};N.platform==="claude"?r={sessionId:Y.value,callbackUrl:k.value.trim()}:N.platform==="gemini"||N.platform==="gemini-antigravity"?r={code:k.value.trim(),sessionId:Y.value,oauthProvider:fe.value}:N.platform==="openai"?r={code:k.value.trim(),sessionId:Y.value}:N.platform==="droid"&&(r={sessionId:Y.value}),(de=N.proxy)!=null&&de.enabled&&(r.proxy={type:N.proxy.type,host:N.proxy.host,port:parseInt(N.proxy.port),username:N.proxy.username||null,password:N.proxy.password||null});let W;if(N.platform==="claude")W=await B.exchangeClaudeCode(r);else if(N.platform==="gemini"||N.platform==="gemini-antigravity")W=await B.exchangeGeminiCode(r),W&&(W.oauthProvider=fe.value);else if(N.platform==="openai")W=await B.exchangeOpenAICode(r);else if(N.platform==="droid"){const ke=await B.exchangeDroidCode(r);if(!ke.success){if(ke.pending){const qe=ke.message||"授权尚未完成,请在浏览器确认后稍候再次尝试。";L(qe,"info"),typeof ke.expiresIn=="number"&&ke.expiresIn>=0&&Le(ke.expiresIn);return}throw new Error(ke.message||"授权失败,请重试")}W=ke.data,Q()}U("success",W)}catch(r){L(r.message||"授权失败,请检查授权码是否正确","error")}finally{K.value=!1}}};ya(()=>{Q()});const j=async()=>{var qe;const de=z.value.split(` `).map(De=>De.trim()).filter(De=>De.length>0);if(de.length===0){E.value="请输入至少一个 sessionKey";return}ee.value=!0,E.value="",q.value={current:0,total:de.length};const r=(qe=N.proxy)!=null&&qe.enabled?{type:N.proxy.type,host:N.proxy.host,port:parseInt(N.proxy.port),username:N.proxy.username||null,password:N.proxy.password||null}:null,W=[],ke=[];for(let De=0;De0?U("success",W):ee.value=!1,ke.length>0&&W.length===0?E.value="全部授权失败,请检查 sessionKey 是否有效":ke.length>0&&(E.value=`${ke.length} 个授权失败`)},ce=()=>{z.value="",E.value="",ee.value=!1,q.value={current:0,total:0}},ge=()=>{ce(),x.value="",k.value="",Y.value=""};return Ve({resetCookieAuth:ce}),(de,r)=>(o(),n("div",Da,[J.platform==="claude"?(o(),n("div",Pa,[e("div",La,[e("div",za,[r[29]||(r[29]=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",ja,[r[28]||(r[28]=e("h4",{class:"mb-3 font-semibold text-blue-900 dark:text-blue-200"},"Claude 账户授权",-1)),e("div",Ra,[r[10]||(r[10]=e("label",{class:"mb-2 block text-sm font-medium text-blue-800 dark:text-blue-300"}," 选择授权方式 ",-1)),e("div",Va,[e("label",Oa,[v(e("input",{"onUpdate:modelValue":r[0]||(r[0]=W=>y.value=W),class:"text-blue-600 focus:ring-blue-500",name:"claude-auth-method",type:"radio",value:"manual",onChange:ge},null,544),[[_e,y.value]]),r[8]||(r[8]=e("span",{class:"text-sm text-blue-900 dark:text-blue-200"},"手动授权",-1))]),e("label",Ea,[v(e("input",{"onUpdate:modelValue":r[1]||(r[1]=W=>y.value=W),class:"text-blue-600 focus:ring-blue-500",name:"claude-auth-method",type:"radio",value:"cookie",onChange:ge},null,544),[[_e,y.value]]),r[9]||(r[9]=e("span",{class:"text-sm text-blue-900 dark:text-blue-200"},"Cookie自动授权",-1))])])]),y.value==="cookie"?(o(),n("div",Na,[e("div",Fa,[r[17]||(r[17]=e("p",{class:"mb-3 text-sm text-blue-700 dark:text-blue-300"}," 使用 claude.ai 的 sessionKey 自动完成 OAuth 授权流程,无需手动打开浏览器。 ",-1)),e("div",qa,[e("label",Ga,[r[12]||(r[12]=e("i",{class:"fas fa-cookie text-blue-500"},null,-1)),r[13]||(r[13]=c(" sessionKey ",-1)),we.value>1?(o(),n("span",Wa,u(we.value)+" 个 ",1)):m("",!0),e("button",{class:"text-blue-500 hover:text-blue-600",type:"button",onClick:r[2]||(r[2]=W=>_.value=!_.value)},r[11]||(r[11]=[e("i",{class:"fas fa-question-circle"},null,-1)]))]),v(e("textarea",{"onUpdate:modelValue":r[3]||(r[3]=W=>z.value=W),class:"form-input w-full resize-y font-mono text-sm",placeholder:`每行一个 sessionKey,例如: sk-ant-sid01-xxxxx... sk-ant-sid01-yyyyy...`,rows:"3"},null,512),[[P,z.value]]),we.value>1?(o(),n("p",Ba,[r[14]||(r[14]=e("i",{class:"fas fa-info-circle mr-1"},null,-1)),c(" 将批量创建 "+u(we.value)+" 个账户 ",1)])):m("",!0)]),_.value?(o(),n("div",Qa,r[15]||(r[15]=[zt('
如何获取 sessionKey
  1. 在浏览器中登录 claude.ai
  2. F12 打开开发者工具
  3. 切换到 Application(应用)标签页
  4. 在左侧找到 Cookieshttps://claude.ai
  5. 找到键为 sessionKey 的那一行
  6. 复制其 Value(值)列的内容

sessionKey 通常以 sk-ant-sid01- 开头

',3)]))):m("",!0),E.value?(o(),n("div",Ha,[e("p",Ja,[r[16]||(r[16]=e("i",{class:"fas fa-exclamation-circle mr-1"},null,-1)),c(" "+u(E.value),1)])])):m("",!0),e("button",{class:"btn btn-primary w-full px-4 py-3 text-base font-semibold",disabled:ee.value||!z.value.trim(),type:"button",onClick:j},[ee.value?(o(),n("div",Za)):(o(),n("i",Xa)),ee.value&&q.value.total>1?(o(),n(Ce,{key:2},[c(" 正在授权 "+u(q.value.current)+"/"+u(q.value.total)+"... ",1)],64)):ee.value?(o(),n(Ce,{key:3},[c(" 正在授权... ")],64)):(o(),n(Ce,{key:4},[c(" 开始自动授权 ")],64))],8,Ya)])])):(o(),n("div",es,[r[27]||(r[27]=e("p",{class:"mb-4 text-sm text-blue-800 dark:text-blue-300"}," 请按照以下步骤完成 Claude 账户的授权: ",-1)),e("div",ts,[e("div",rs,[e("div",as,[r[20]||(r[20]=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",ss,[r[19]||(r[19]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 点击下方按钮生成授权链接 ",-1)),x.value?(o(),n("div",is,[e("div",ds,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:x.value},null,8,us),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:re},[e("i",{class:C(G.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:Ue},r[18]||(r[18]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),c("重新生成 ",-1)]))])):(o(),n("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:R.value,onClick:I},[R.value?(o(),n("div",ns)):(o(),n("i",os)),c(" "+u(R.value?"生成中...":"生成授权链接"),1)],8,ls))])])]),r[26]||(r[26]=zt('
2

在浏览器中打开链接并完成授权

请在新标签页中打开授权链接,登录您的 Claude 账户并授权。

注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。

',1)),e("div",ps,[e("div",gs,[r[25]||(r[25]=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",ys,[r[23]||(r[23]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 输入 Authorization Code ",-1)),r[24]||(r[24]=e("p",{class:"mb-3 text-sm text-blue-700 dark:text-blue-300"},[c(" 授权完成后,页面会显示一个 "),e("strong",null,"Authorization Code"),c(",请将其复制并粘贴到下方输入框: ")],-1)),e("div",ms,[e("div",null,[r[21]||(r[21]=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"}),c("Authorization Code ")],-1)),v(e("textarea",{"onUpdate:modelValue":r[4]||(r[4]=W=>k.value=W),class:"form-input w-full resize-none font-mono text-sm",placeholder:"粘贴从Claude页面获取的Authorization Code...",rows:"3"},null,512),[[P,k.value]])]),r[22]||(r[22]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),c(" 请粘贴从Claude页面复制的Authorization Code ")],-1))])])])])])]))])])])])):J.platform==="gemini"?(o(),n("div",cs,[e("div",xs,[e("div",fs,[r[43]||(r[43]=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",bs,[r[41]||(r[41]=e("h4",{class:"mb-3 font-semibold text-green-900 dark:text-green-200"},"Gemini 账户授权",-1)),r[42]||(r[42]=e("p",{class:"mb-4 text-sm text-green-800 dark:text-green-300"}," 请按照以下步骤完成 Gemini 账户的授权: ",-1)),e("div",vs,[e("p",ks,[r[30]||(r[30]=e("i",{class:"fas fa-info-circle mr-1"},null,-1)),r[31]||(r[31]=c(" 授权类型:",-1)),e("span",hs,u(J.platform==="gemini-antigravity"?"Antigravity OAuth":"Gemini CLI OAuth"),1)])]),e("div",ws,[e("div",$s,[e("div",As,[r[34]||(r[34]=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,[r[33]||(r[33]=e("p",{class:"mb-2 font-medium text-green-900 dark:text-green-200"}," 点击下方按钮生成授权链接 ",-1)),x.value?(o(),n("div",_s,[e("div",Ks,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:x.value},null,8,Ms),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:re},[e("i",{class:C(G.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:Ue},r[32]||(r[32]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),c("重新生成 ",-1)]))])):(o(),n("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:R.value,onClick:I},[R.value?(o(),n("div",Ts)):(o(),n("i",Is)),c(" "+u(R.value?"生成中...":"生成授权链接"),1)],8,Us))])])]),r[40]||(r[40]=zt('
2

在浏览器中打开链接并完成授权

请在新标签页中打开授权链接,登录您的 Gemini 账户并授权。

注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。

',1)),e("div",Ss,[e("div",Ds,[r[39]||(r[39]=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",Ps,[r[37]||(r[37]=e("p",{class:"mb-2 font-medium text-green-900 dark:text-green-200"}," 输入 Authorization Code ",-1)),r[38]||(r[38]=e("p",{class:"mb-3 text-sm text-green-700 dark:text-green-300"}," 授权完成后,页面会显示一个 Authorization Code,请将其复制并粘贴到下方输入框: ",-1)),e("div",Ls,[e("div",null,[r[35]||(r[35]=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"}),c("Authorization Code ")],-1)),v(e("textarea",{"onUpdate:modelValue":r[5]||(r[5]=W=>k.value=W),class:"form-input w-full resize-none font-mono text-sm",placeholder:"粘贴从Gemini页面获取的Authorization Code...",rows:"3"},null,512),[[P,k.value]])]),r[36]||(r[36]=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"}),c(" 请粘贴从Gemini页面复制的Authorization Code ")])],-1))])])])])])])])])])):J.platform==="openai"?(o(),n("div",zs,[e("div",js,[e("div",Rs,[r[55]||(r[55]=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",Vs,[r[53]||(r[53]=e("h4",{class:"mb-3 font-semibold text-orange-900 dark:text-orange-200"},"OpenAI 账户授权",-1)),r[54]||(r[54]=e("p",{class:"mb-4 text-sm text-orange-800 dark:text-orange-300"}," 请按照以下步骤完成 OpenAI 账户的授权: ",-1)),e("div",Os,[e("div",Es,[e("div",Ns,[r[46]||(r[46]=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",Fs,[r[45]||(r[45]=e("p",{class:"mb-2 font-medium text-orange-900 dark:text-orange-200"}," 点击下方按钮生成授权链接 ",-1)),x.value?(o(),n("div",Bs,[e("div",Qs,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:x.value},null,8,Hs),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:re},[e("i",{class:C(G.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:Ue},r[44]||(r[44]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),c("重新生成 ",-1)]))])):(o(),n("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:R.value,onClick:I},[R.value?(o(),n("div",Ws)):(o(),n("i",Gs)),c(" "+u(R.value?"生成中...":"生成授权链接"),1)],8,qs))])])]),r[52]||(r[52]=zt('
2

在浏览器中打开链接并完成授权

请在新标签页中打开授权链接,登录您的 OpenAI 账户并授权。

重要提示:授权后页面可能会加载较长时间,请耐心等待。

当浏览器地址栏变为 http://localhost:1455/... 开头时,表示授权已完成。

注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。

',1)),e("div",Js,[e("div",Ys,[r[51]||(r[51]=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",Zs,[r[49]||(r[49]=e("p",{class:"mb-2 font-medium text-orange-900 dark:text-orange-200"}," 输入授权链接或 Code ",-1)),r[50]||(r[50]=e("p",{class:"mb-3 text-sm text-orange-700 dark:text-orange-300"},[c(" 授权完成后,当页面地址变为 "),e("strong",{class:"font-mono"},"http://localhost:1455/..."),c(" 时: ")],-1)),e("div",Xs,[e("div",null,[r[47]||(r[47]=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"}),c("授权链接或 Code ")],-1)),v(e("textarea",{"onUpdate:modelValue":r[6]||(r[6]=W=>k.value=W),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),[[P,k.value]])]),r[48]||(r[48]=zt('

提示:您可以直接复制整个链接或仅复制 code 参数值,系统会自动识别。

• 完整链接示例:http://localhost:1455/auth/callback?code=ac_4hm8...

• 仅 Code 示例:ac_4hm8iqmx9A2fzMy_cwye7U3W7...

',1))])])])])])])])])])):J.platform==="droid"?(o(),n("div",el,[e("div",tl,[e("div",rl,[r[67]||(r[67]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-cyan-500"},[e("i",{class:"fas fa-robot text-white"})],-1)),e("div",al,[r[65]||(r[65]=e("h4",{class:"mb-3 font-semibold text-cyan-900 dark:text-cyan-200"},"Droid 账户授权",-1)),r[66]||(r[66]=e("p",{class:"mb-4 text-sm text-cyan-800 dark:text-cyan-300"}," 请按照以下步骤完成 Factory (Droid) 账户的授权: ",-1)),e("div",sl,[e("div",ll,[e("div",ol,[r[63]||(r[63]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-cyan-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",nl,[r[62]||(r[62]=e("p",{class:"mb-2 font-medium text-cyan-900 dark:text-cyan-200"}," 点击下方按钮生成授权链接 ",-1)),x.value?(o(),n("div",pl,[e("div",gl,[r[58]||(r[58]=e("label",{class:"text-xs font-semibold text-gray-600 dark:text-gray-300"},"授权链接",-1)),e("div",yl,[e("div",ml,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:x.value},null,8,cl),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:re},[e("i",{class:C(G.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("div",{class:"flex flex-wrap items-center gap-2"},[e("button",{class:"inline-flex items-center gap-1 rounded-md border border-cyan-200 bg-white px-3 py-1.5 text-xs font-medium text-cyan-600 shadow-sm transition-colors hover:border-cyan-300 hover:bg-cyan-50 dark:border-cyan-700 dark:bg-cyan-900/40 dark:text-cyan-200 dark:hover:border-cyan-500 dark:hover:bg-cyan-900/60",onClick:H},r[56]||(r[56]=[e("i",{class:"fas fa-external-link-alt text-xs"},null,-1),c(" 在新标签中打开 ",-1)])),e("button",{class:"inline-flex items-center gap-1 rounded-md px-3 py-1.5 text-xs font-medium text-cyan-600 transition-colors hover:text-cyan-700 dark:text-cyan-300 dark:hover:text-cyan-200",onClick:Ue},r[57]||(r[57]=[e("i",{class:"fas fa-sync-alt text-xs"},null,-1),c("重新生成 ",-1)]))])])]),e("div",xl,[r[60]||(r[60]=e("label",{class:"text-xs font-semibold text-gray-600 dark:text-gray-300"},"授权验证码",-1)),e("div",fl,[e("span",bl,u(pe.value||"------"),1),e("button",{class:"rounded-lg bg-white px-3 py-1 text-sm text-cyan-600 transition-colors hover:bg-cyan-100 dark:bg-cyan-800 dark:text-cyan-200 dark:hover:bg-cyan-700",onClick:Ne},r[59]||(r[59]=[e("i",{class:"fas fa-copy mr-1"},null,-1),c("复制 ",-1)]))])]),e("div",vl,[e("span",null,[r[61]||(r[61]=e("i",{class:"fas fa-hourglass-half mr-1 text-cyan-500"},null,-1)),c(" 剩余有效期:"+u($e.value),1)])])])):(o(),n("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:R.value,onClick:I},[R.value?(o(),n("div",ul)):(o(),n("i",dl)),c(" "+u(R.value?"生成中...":"生成授权链接"),1)],8,il))])])]),r[64]||(r[64]=zt('
2

在浏览器中打开链接并完成授权

在浏览器中打开授权页面,输入上方验证码并登录 Factory / Droid 账户,最后点击允许授权。

3

完成授权后点击下方“完成授权”按钮,系统会自动获取访问令牌。

若提示授权仍在等待确认,请稍候片刻后系统会自动重试。

',2))])])])])])):m("",!0),e("div",kl,[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:r[7]||(r[7]=W=>de.$emit("back"))}," 上一步 "),J.platform==="claude"&&y.value==="cookie"?m("",!0):(o(),n("button",{key:0,class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:!ue.value||K.value,type:"button",onClick:$},[K.value?(o(),n("div",wl)):m("",!0),c(" "+u(K.value?"验证中...":"完成授权"),1)],8,hl))])]))}},Al={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},Cl={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"},Ul={class:"mb-4 flex items-center justify-between sm:mb-6"},Il={class:"mb-6"},Tl={key:0,class:"mb-6 rounded-lg border border-blue-200 bg-blue-50 p-4"},_l={class:"space-y-4"},Kl={class:"flex gap-4"},Ml={class:"flex cursor-pointer items-center"},Sl={class:"flex cursor-pointer items-center"},Dl={class:"flex cursor-pointer items-center"},Pl={class:"flex cursor-pointer items-center"},Ll={class:"flex gap-3"},zl=["disabled"],jl={key:0,class:"loading-spinner mr-2"},Rl={class:"space-y-4"},Vl={key:0,class:"py-8 text-center"},Ol={key:1,class:"rounded-lg bg-gray-50 py-8 text-center"},El={key:2,class:"grid grid-cols-1 gap-4 md:grid-cols-2"},Nl={class:"mb-3 flex items-start justify-between"},Fl={class:"flex-1"},ql={class:"font-semibold text-gray-900"},Gl={class:"mt-1 text-sm text-gray-500"},Wl={class:"ml-4 flex items-center gap-2"},Bl={class:"flex items-center justify-between text-sm text-gray-600"},Ql={class:"flex items-center gap-4"},Hl={class:"flex items-center gap-2"},Jl=["onClick"],Yl=["disabled","onClick"],Zl={key:1,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},Xl={class:"modal-content w-full max-w-lg p-4 sm:p-6"},eo={class:"space-y-4"},to={class:"rounded-lg bg-gray-100 px-3 py-2 text-sm text-gray-600"},ro={class:"flex gap-3 pt-4"},ao=["disabled"],so={key:0,class:"loading-spinner mr-2"},lo={__name:"GroupManagementModal",emits:["close","refresh"],setup(J,{emit:Ve}){const g=Ve,N=w(!0),U=w(!1),B=w([]),R=w(!1),K=w(!1),x=w({name:"",platform:"claude",description:""}),k=w(!1),G=w(!1),fe=w(null),Y=w({name:"",platform:"",description:""}),pe=E=>E?new Date(E).toLocaleDateString("zh-CN"):"-",Z=async()=>{U.value=!0;try{const E=await F.get("/admin/account-groups");B.value=E.data||[]}catch{L("加载分组列表失败","error")}finally{U.value=!1}},X=async()=>{var E,_;if(!x.value.name||!x.value.platform){L("请填写必填项","error");return}K.value=!0;try{await F.post("/admin/account-groups",{name:x.value.name,platform:x.value.platform,description:x.value.description}),L("分组创建成功","success"),V(),await Z(),g("refresh")}catch(q){L(((_=(E=q.response)==null?void 0:E.data)==null?void 0:_.error)||"创建分组失败","error")}finally{K.value=!1}},V=()=>{R.value=!1,x.value={name:"",platform:"claude",description:""}},h=E=>{fe.value=E,Y.value={name:E.name,platform:E.platform,description:E.description||""},k.value=!0},y=async()=>{var E,_;if(!Y.value.name){L("请填写分组名称","error");return}G.value=!0;try{await F.put(`/admin/account-groups/${fe.value.id}`,{name:Y.value.name,description:Y.value.description}),L("分组更新成功","success"),z(),await Z(),g("refresh")}catch(q){L(((_=(E=q.response)==null?void 0:E.data)==null?void 0:_.error)||"更新分组失败","error")}finally{G.value=!1}},z=()=>{k.value=!1,fe.value=null,Y.value={name:"",platform:"",description:""}},ee=async E=>{var _,q;if(E.memberCount>0){L("分组内还有成员,无法删除","error");return}if(confirm(`确定要删除分组 "${E.name}" 吗?`))try{await F.delete(`/admin/account-groups/${E.id}`),L("分组删除成功","success"),await Z(),g("refresh")}catch(we){L(((q=(_=we.response)==null?void 0:_.data)==null?void 0:q.error)||"删除分组失败","error")}};return ur(()=>{Z()}),(E,_)=>(o(),Ye(jt,{to:"body"},[N.value?(o(),n("div",Al,[e("div",Cl,[e("div",Ul,[_[11]||(_[11]=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:_[0]||(_[0]=q=>E.$emit("close"))},_[10]||(_[10]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("div",Il,[e("button",{class:"btn btn-primary px-4 py-2",onClick:_[1]||(_[1]=q=>R.value=!0)},_[12]||(_[12]=[e("i",{class:"fas fa-plus mr-2"},null,-1),c(" 创建新分组 ",-1)]))]),R.value?(o(),n("div",Tl,[_[20]||(_[20]=e("h4",{class:"mb-4 text-lg font-semibold text-gray-900"},"创建新分组",-1)),e("div",_l,[e("div",null,[_[13]||(_[13]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"分组名称 *",-1)),v(e("input",{"onUpdate:modelValue":_[2]||(_[2]=q=>x.value.name=q),class:"form-input w-full",placeholder:"输入分组名称",type:"text"},null,512),[[P,x.value.name]])]),e("div",null,[_[18]||(_[18]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"平台类型 *",-1)),e("div",Kl,[e("label",Ml,[v(e("input",{"onUpdate:modelValue":_[3]||(_[3]=q=>x.value.platform=q),class:"mr-2",type:"radio",value:"claude"},null,512),[[_e,x.value.platform]]),_[14]||(_[14]=e("span",{class:"text-sm text-gray-700"},"Claude",-1))]),e("label",Sl,[v(e("input",{"onUpdate:modelValue":_[4]||(_[4]=q=>x.value.platform=q),class:"mr-2",type:"radio",value:"gemini"},null,512),[[_e,x.value.platform]]),_[15]||(_[15]=e("span",{class:"text-sm text-gray-700"},"Gemini",-1))]),e("label",Dl,[v(e("input",{"onUpdate:modelValue":_[5]||(_[5]=q=>x.value.platform=q),class:"mr-2",type:"radio",value:"openai"},null,512),[[_e,x.value.platform]]),_[16]||(_[16]=e("span",{class:"text-sm text-gray-700"},"OpenAI",-1))]),e("label",Pl,[v(e("input",{"onUpdate:modelValue":_[6]||(_[6]=q=>x.value.platform=q),class:"mr-2",type:"radio",value:"droid"},null,512),[[_e,x.value.platform]]),_[17]||(_[17]=e("span",{class:"text-sm text-gray-700"},"Droid",-1))])])]),e("div",null,[_[19]||(_[19]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"描述 (可选)",-1)),v(e("textarea",{"onUpdate:modelValue":_[7]||(_[7]=q=>x.value.description=q),class:"form-input w-full resize-none",placeholder:"分组描述...",rows:"2"},null,512),[[P,x.value.description]])]),e("div",Ll,[e("button",{class:"btn btn-primary px-4 py-2",disabled:!x.value.name||!x.value.platform||K.value,onClick:X},[K.value?(o(),n("div",jl)):m("",!0),c(" "+u(K.value?"创建中...":"创建"),1)],8,zl),e("button",{class:"btn btn-secondary px-4 py-2",onClick:V},"取消")])])])):m("",!0),e("div",Rl,[U.value?(o(),n("div",Vl,_[21]||(_[21]=[e("div",{class:"loading-spinner-lg mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500"},"加载中...",-1)]))):B.value.length===0?(o(),n("div",Ol,_[22]||(_[22]=[e("i",{class:"fas fa-layer-group mb-4 text-4xl text-gray-300"},null,-1),e("p",{class:"text-gray-500"},"暂无分组",-1)]))):(o(),n("div",El,[(o(!0),n(Ce,null,Be(B.value,q=>(o(),n("div",{key:q.id,class:"rounded-lg border bg-white p-4 transition-shadow hover:shadow-md"},[e("div",Nl,[e("div",Fl,[e("h4",ql,u(q.name),1),e("p",Gl,u(q.description||"暂无描述"),1)]),e("div",Wl,[e("span",{class:C(["rounded-full px-2 py-1 text-xs font-medium",q.platform==="claude"?"bg-purple-100 text-purple-700":q.platform==="gemini"?"bg-blue-100 text-blue-700":q.platform==="openai"?"bg-gray-100 text-gray-700":"bg-cyan-100 text-cyan-700"])},u(q.platform==="claude"?"Claude":q.platform==="gemini"?"Gemini":q.platform==="openai"?"OpenAI":"Droid"),3)])]),e("div",Bl,[e("div",Ql,[e("span",null,[_[23]||(_[23]=e("i",{class:"fas fa-users mr-1"},null,-1)),c(" "+u(q.memberCount||0)+" 个成员 ",1)]),e("span",null,[_[24]||(_[24]=e("i",{class:"fas fa-clock mr-1"},null,-1)),c(" "+u(pe(q.createdAt)),1)])]),e("div",Hl,[e("button",{class:"text-blue-600 transition-colors hover:text-blue-800",title:"编辑",onClick:we=>h(q)},_[25]||(_[25]=[e("i",{class:"fas fa-edit"},null,-1)]),8,Jl),e("button",{class:"text-red-600 transition-colors hover:text-red-800",disabled:q.memberCount>0,title:"删除",onClick:we=>ee(q)},_[26]||(_[26]=[e("i",{class:"fas fa-trash"},null,-1)]),8,Yl)])])]))),128))]))])])])):m("",!0),k.value?(o(),n("div",Zl,[e("div",Xl,[e("div",{class:"mb-4 flex items-center justify-between"},[_[28]||(_[28]=e("h3",{class:"text-lg font-bold text-gray-900"},"编辑分组",-1)),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600",onClick:z},_[27]||(_[27]=[e("i",{class:"fas fa-times"},null,-1)]))]),e("div",eo,[e("div",null,[_[29]||(_[29]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"分组名称 *",-1)),v(e("input",{"onUpdate:modelValue":_[8]||(_[8]=q=>Y.value.name=q),class:"form-input w-full",placeholder:"输入分组名称",type:"text"},null,512),[[P,Y.value.name]])]),e("div",null,[_[31]||(_[31]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"平台类型",-1)),e("div",to,[c(u(Y.value.platform==="claude"?"Claude":Y.value.platform==="gemini"?"Gemini":"OpenAI")+" ",1),_[30]||(_[30]=e("span",{class:"ml-2 text-xs text-gray-500"},"(不可修改)",-1))])]),e("div",null,[_[32]||(_[32]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"描述 (可选)",-1)),v(e("textarea",{"onUpdate:modelValue":_[9]||(_[9]=q=>Y.value.description=q),class:"form-input w-full resize-none",placeholder:"分组描述...",rows:"2"},null,512),[[P,Y.value.description]])]),e("div",ro,[e("button",{class:"btn btn-primary flex-1 px-4 py-2",disabled:!Y.value.name||G.value,onClick:y},[G.value?(o(),n("div",so)):m("",!0),c(" "+u(G.value?"更新中...":"更新"),1)],8,ao),e("button",{class:"btn btn-secondary flex-1 px-4 py-2",onClick:z},"取消")])])])])):m("",!0)]))}},oo={key:0,class:"modal fixed inset-0 z-[60] flex items-center justify-center p-3 sm:p-4"},no={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"},io={class:"mb-4 flex items-center justify-between sm:mb-6"},uo={class:"flex items-center gap-2 sm:gap-3"},po={class:"text-xs text-gray-500 dark:text-gray-400 sm:text-sm"},go={class:"flex items-center gap-2"},yo=["disabled"],mo={key:0,class:"py-8 text-center"},co={key:1,class:"rounded-lg bg-gray-50 py-8 text-center dark:bg-gray-800"},xo={key:2},fo={class:"mb-4 space-y-3"},bo={class:"rounded-lg border border-gray-200 bg-white p-3 shadow-sm dark:border-gray-700 dark:bg-gray-800"},vo={class:"mb-3 flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between"},ko={class:"flex items-center gap-2"},ho={class:"flex gap-1"},wo={class:"flex flex-1 items-center gap-2 lg:max-w-md"},$o={class:"relative flex-1"},Ao={class:"flex gap-1"},Co={class:"flex flex-wrap items-center justify-between gap-2"},Uo={class:"flex flex-wrap items-center gap-2"},Io=["disabled"],To=["disabled"],_o=["disabled"],Ko=["disabled"],Mo={class:"flex items-center gap-2 rounded-md bg-purple-50 px-3 py-1.5 dark:bg-purple-900/20"},So={class:"text-xs font-medium text-purple-700 dark:text-purple-300"},Do={class:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3"},Po={key:0,class:"absolute -left-2 -top-2 z-10"},Lo=["title"],zo={class:"flex flex-col gap-3"},jo={class:"flex items-start justify-between gap-2"},Ro=["title"],Vo={class:"flex items-center gap-1"},Oo=["onClick"],Eo=["disabled","onClick"],No={key:0,class:"loading-spinner-sm"},Fo={key:1,class:"fas fa-redo"},qo=["disabled","onClick"],Go={key:0,class:"loading-spinner-sm"},Wo={key:1,class:"fas fa-trash"},Bo={class:"flex flex-wrap items-center gap-3 text-xs text-gray-600 dark:text-gray-400"},Qo={key:0},Ho={key:0,class:"mt-4 flex items-center justify-between"},Jo={class:"text-sm text-gray-600 dark:text-gray-400"},Yo={class:"flex items-center gap-2"},Zo=["disabled"],Xo=["disabled"],en={class:"px-3 py-1.5 text-sm font-medium text-gray-700 dark:text-gray-300"},tn=["disabled"],rn=["disabled"],an={__name:"ApiKeyManagementModal",props:{accountId:{type:String,required:!0},accountName:{type:String,default:""}},emits:["close","refresh"],setup(J,{emit:Ve}){const g=J,N=Ve,U=w(!0),B=w(!1),R=w(null),K=w(null),x=w([]),k=w(1),G=w(15),fe=w(!1),Y=w("all"),pe=w(""),Z=w("fuzzy"),X=w(!1),V=H=>!H||H.length<12?H:`${H.substring(0,8)}...${H.substring(H.length-4)}`,h=ie(()=>{let H=x.value;if(Y.value!=="all"&&(H=H.filter($=>$.status===Y.value)),pe.value.trim()){const $=pe.value.trim();H=H.filter(j=>{const ce=j.key;return Z.value==="exact"?ce===$:ce.toLowerCase().includes($.toLowerCase())})}return H}),y=ie(()=>h.value.length),z=ie(()=>Math.ceil(y.value/G.value)),ee=ie(()=>{const H=(k.value-1)*G.value,$=H+G.value;return h.value.slice(H,$)}),E=ie(()=>x.value.filter(H=>H.status==="active").length),_=ie(()=>x.value.filter(H=>H.status==="error").length),q=async()=>{B.value=!0;try{const $=(await F.get(`/admin/droid-accounts/${g.accountId}`)).data;let j=[];if(Array.isArray($.apiKeys))j=$.apiKeys;else if(typeof $.apiKeys=="string")try{j=JSON.parse($.apiKeys)}catch(ge){console.error("Failed to parse apiKeys:",ge)}const ce=j.map(ge=>typeof ge=="string"?{key:ge,usageCount:0,status:"active",lastUsedAt:null,errorMessage:""}:typeof ge=="object"&&ge!==null?{key:ge.key||ge.apiKey||"",usageCount:ge.usageCount||ge.count||0,status:ge.status||"active",lastUsedAt:ge.lastUsedAt||ge.lastUsed||null,errorMessage:ge.errorMessage||""}:{key:String(ge),usageCount:0,status:"active",lastUsedAt:null,errorMessage:""});x.value=ce.sort((ge,de)=>ge.lastUsedAt&&de.lastUsedAt?new Date(de.lastUsedAt)-new Date(ge.lastUsedAt):ge.lastUsedAt&&!de.lastUsedAt?-1:!ge.lastUsedAt&&de.lastUsedAt?1:(de.usageCount||0)-(ge.usageCount||0))}catch(H){console.error("Failed to load API keys:",H),L("加载 API Key 失败","error")}finally{B.value=!1,k.value=1}},we=async H=>{var $,j;if(confirm(`确定要删除 API Key "${V(H.key)}" 吗?`)){R.value=H.key;try{const ce={removeApiKeys:[H.key],apiKeyUpdateMode:"delete"};await F.put(`/admin/droid-accounts/${g.accountId}`,ce),L("API Key 已删除","success"),await q(),N("refresh")}catch(ce){console.error("Failed to delete API key:",ce),L(((j=($=ce.response)==null?void 0:$.data)==null?void 0:j.error)||"删除 API Key 失败","error")}finally{R.value=null}}},ue=async H=>{var $,j;if(confirm(`确定要重置 API Key "${V(H.key)}" 的状态吗?这将清除错误信息并恢复为正常状态。`)){K.value=H.key;try{const ce={apiKeys:[{key:H.key,status:"active",errorMessage:""}],apiKeyUpdateMode:"update"};await F.put(`/admin/droid-accounts/${g.accountId}`,ce),L("API Key 状态已重置","success"),await q(),N("refresh")}catch(ce){console.error("Failed to reset API key status:",ce),L(((j=($=ce.response)==null?void 0:$.data)==null?void 0:j.error)||"重置 API Key 状态失败","error")}finally{K.value=null}}},$e=async()=>{var $,j;const H=x.value.filter(ce=>ce.status==="error");if(H.length===0){L("没有异常状态的 API Key","warning");return}if(confirm(`确定要删除所有 ${H.length} 个异常状态的 API Key 吗?此操作不可恢复!`)){X.value=!0;try{const ge={removeApiKeys:H.map(de=>de.key),apiKeyUpdateMode:"delete"};await F.put(`/admin/droid-accounts/${g.accountId}`,ge),L(`成功删除 ${H.length} 个异常 API Key`,"success"),await q(),N("refresh")}catch(ce){console.error("Failed to delete error API keys:",ce),L(((j=($=ce.response)==null?void 0:$.data)==null?void 0:j.error)||"批量删除失败","error")}finally{X.value=!1}}},Le=async()=>{var H,$;if(x.value.length===0){L("没有可删除的 API Key","warning");return}if(confirm(`确定要删除所有 ${x.value.length} 个 API Key 吗?此操作不可恢复! 请再次确认:这将删除该账户下的所有 API Key。`)&&confirm("最后确认:真的要删除所有 API Key 吗?")){X.value=!0;try{const j=x.value.map(ge=>ge.key),ce={removeApiKeys:j,apiKeyUpdateMode:"delete"};await F.put(`/admin/droid-accounts/${g.accountId}`,ce),L(`成功删除所有 ${j.length} 个 API Key`,"success"),await q(),N("refresh")}catch(j){console.error("Failed to delete all API keys:",j),L((($=(H=j.response)==null?void 0:H.data)==null?void 0:$.error)||"批量删除失败","error")}finally{X.value=!1}}},Q=H=>{let $=[],j="";if(H==="error"?($=x.value.filter(W=>W.status==="error"),j=`error_api_keys_${g.accountName}_${new Date().toISOString().split("T")[0]}.txt`):($=x.value,j=`all_api_keys_${g.accountName}_${new Date().toISOString().split("T")[0]}.txt`),$.length===0){L("没有可导出的 API Key","warning");return}const ce=$.map(W=>W.key).join(` `),ge=new Blob([ce],{type:"text/plain;charset=utf-8"}),de=URL.createObjectURL(ge),r=document.createElement("a");r.href=de,r.download=j,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(de),L(`成功导出 ${$.length} 个 API Key`,"success")},I=async H=>{if(typeof navigator<"u"&&navigator.clipboard&&typeof navigator.clipboard.writeText=="function"&&(typeof window>"u"||window.isSecureContext!==!1)){await navigator.clipboard.writeText(H);return}if(typeof document>"u")throw new Error("clipboard unavailable");const j=document.createElement("textarea");j.value=H,j.setAttribute("readonly",""),j.style.position="fixed",j.style.opacity="0",j.style.pointerEvents="none",document.body.appendChild(j),j.select();try{const ce=document.execCommand("copy");if(document.body.removeChild(j),!ce)throw new Error("execCommand failed")}catch(ce){throw document.body.removeChild(j),ce}},Ue=async H=>{try{await I(H),L("API Key 已复制","success")}catch($){console.error("Failed to copy:",$),L("复制失败,请手动复制","error")}},re=async()=>{if(!(!x.value.length||fe.value)){fe.value=!0;try{const H=x.value.map($=>$.key).join(` `);await I(H),L(`已复制 ${x.value.length} 条 API Key`,"success")}catch(H){console.error("Failed to copy all keys:",H),L("复制全部 API Key 失败,请手动复制","error")}finally{fe.value=!1}}},Ne=H=>{if(!H)return"-";try{return new Date(H).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return"-"}};return ur(()=>{q()}),(H,$)=>(o(),Ye(jt,{to:"body"},[U.value?(o(),n("div",oo,[e("div",no,[e("div",io,[e("div",uo,[$[14]||($[14]=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-key text-sm text-white sm:text-base"})],-1)),e("div",null,[$[13]||($[13]=e("h3",{class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"}," API Key 管理 ",-1)),e("p",po,u(J.accountName),1)])]),e("div",go,[e("button",{class:"flex items-center gap-2 rounded-lg border border-purple-200 bg-white/90 px-3 py-1.5 text-xs font-semibold text-purple-600 shadow-sm transition-all duration-200 hover:border-purple-300 hover:bg-purple-50 hover:text-purple-700 focus:outline-none focus:ring-2 focus:ring-purple-200 disabled:cursor-not-allowed disabled:opacity-60 dark:border-purple-600/60 dark:bg-purple-900/20 dark:text-purple-200 dark:hover:border-purple-500 dark:hover:bg-purple-900/40 dark:hover:text-purple-100 dark:focus:ring-purple-500/40 sm:text-sm",disabled:B.value||x.value.length===0||fe.value,onClick:re},[e("i",{class:C(["text-sm sm:text-base",fe.value?"fas fa-spinner fa-spin":"fas fa-clipboard-list"])},null,2),$[15]||($[15]=e("span",null,"复制全部 Key",-1))],8,yo),e("button",{class:"flex h-9 w-9 items-center justify-center rounded-full bg-gray-100 text-gray-400 transition-colors hover:text-gray-600 dark:bg-gray-800 dark:text-gray-400 dark:hover:text-gray-200 sm:h-10 sm:w-10",title:"关闭",onClick:$[0]||($[0]=j=>H.$emit("close"))},$[16]||($[16]=[e("i",{class:"fas fa-times text-base sm:text-lg"},null,-1)]))])]),B.value?(o(),n("div",mo,$[17]||($[17]=[e("div",{class:"loading-spinner-lg mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500 dark:text-gray-400"},"加载中...",-1)]))):m("",!0),!B.value&&x.value.length===0?(o(),n("div",co,$[18]||($[18]=[e("i",{class:"fas fa-key mb-4 text-4xl text-gray-300 dark:text-gray-600"},null,-1),e("p",{class:"text-gray-500 dark:text-gray-400"},"暂无 API Key",-1)]))):m("",!0),!B.value&&x.value.length>0?(o(),n("div",xo,[e("div",fo,[e("div",bo,[e("div",vo,[e("div",ko,[$[21]||($[21]=e("i",{class:"fas fa-filter text-gray-400 dark:text-gray-500"},null,-1)),$[22]||($[22]=e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"},"筛选:",-1)),e("div",ho,[e("button",{class:C(["rounded-md px-3 py-1.5 text-xs font-medium transition-colors",Y.value==="all"?"bg-purple-500 text-white shadow-sm":"bg-gray-100 text-gray-600 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-400 dark:hover:bg-gray-600"]),onClick:$[1]||($[1]=j=>Y.value="all")}," 全部 ("+u(x.value.length)+") ",3),e("button",{class:C(["rounded-md px-3 py-1.5 text-xs font-medium transition-colors",Y.value==="active"?"bg-green-500 text-white shadow-sm":"bg-gray-100 text-gray-600 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-400 dark:hover:bg-gray-600"]),onClick:$[2]||($[2]=j=>Y.value="active")},[$[19]||($[19]=e("i",{class:"fas fa-check-circle mr-1"},null,-1)),c(" 正常 ("+u(E.value)+") ",1)],2),e("button",{class:C(["rounded-md px-3 py-1.5 text-xs font-medium transition-colors",Y.value==="error"?"bg-red-500 text-white shadow-sm":"bg-gray-100 text-gray-600 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-400 dark:hover:bg-gray-600"]),onClick:$[3]||($[3]=j=>Y.value="error")},[$[20]||($[20]=e("i",{class:"fas fa-exclamation-triangle mr-1"},null,-1)),c(" 异常 ("+u(_.value)+") ",1)],2)])]),e("div",wo,[e("div",$o,[v(e("input",{"onUpdate:modelValue":$[4]||($[4]=j=>pe.value=j),class:"w-full rounded-md border border-gray-300 bg-gray-50 py-2 pl-10 pr-3 text-sm text-gray-700 transition-colors placeholder:text-gray-400 focus:border-purple-500 focus:bg-white focus:outline-none focus:ring-2 focus:ring-purple-500/20 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-300 dark:placeholder:text-gray-500 dark:focus:border-purple-400 dark:focus:bg-gray-800",placeholder:"搜索 API Key...",type:"text"},null,512),[[P,pe.value]]),$[23]||($[23]=e("i",{class:"fas fa-search absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 dark:text-gray-500"},null,-1))]),e("div",Ao,[e("button",{class:C(["rounded-md px-2.5 py-2 text-xs font-medium transition-colors",Z.value==="fuzzy"?"bg-purple-500 text-white shadow-sm":"bg-gray-100 text-gray-600 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-400 dark:hover:bg-gray-600"]),title:"模糊搜索:包含查询字符串即可",onClick:$[5]||($[5]=j=>Z.value="fuzzy")},$[24]||($[24]=[e("i",{class:"fas fa-search mr-1"},null,-1),c(" 模糊 ",-1)]),2),e("button",{class:C(["rounded-md px-2.5 py-2 text-xs font-medium transition-colors",Z.value==="exact"?"bg-purple-500 text-white shadow-sm":"bg-gray-100 text-gray-600 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-400 dark:hover:bg-gray-600"]),title:"精确搜索:完全匹配完整 Key",onClick:$[6]||($[6]=j=>Z.value="exact")},$[25]||($[25]=[e("i",{class:"fas fa-equals mr-1"},null,-1),c(" 精确 ",-1)]),2)])])]),$[35]||($[35]=e("div",{class:"my-3 border-t border-gray-200 dark:border-gray-700"},null,-1)),e("div",Co,[e("div",Uo,[$[30]||($[30]=e("span",{class:"text-xs font-medium text-gray-500 dark:text-gray-400"},"批量操作:",-1)),e("button",{class:"group rounded-md bg-gradient-to-r from-red-500 to-red-600 px-3 py-1.5 text-xs font-medium text-white shadow-sm transition-all hover:from-red-600 hover:to-red-700 hover:shadow disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:shadow-sm",disabled:_.value===0||X.value,title:"删除所有异常状态的 API Key",onClick:$e},$[26]||($[26]=[e("i",{class:"fas fa-trash-alt mr-1"},null,-1),c(" 删除异常 ",-1)]),8,Io),e("button",{class:"group rounded-md bg-gradient-to-r from-red-600 to-red-700 px-3 py-1.5 text-xs font-medium text-white shadow-sm transition-all hover:from-red-700 hover:to-red-800 hover:shadow disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:shadow-sm",disabled:x.value.length===0||X.value,title:"删除所有 API Key",onClick:Le},$[27]||($[27]=[e("i",{class:"fas fa-trash mr-1"},null,-1),c(" 删除全部 ",-1)]),8,To),$[31]||($[31]=e("div",{class:"mx-1 h-5 w-px bg-gray-300 dark:bg-gray-600"},null,-1)),e("button",{class:"rounded-md bg-gradient-to-r from-blue-500 to-blue-600 px-3 py-1.5 text-xs font-medium text-white shadow-sm transition-all hover:from-blue-600 hover:to-blue-700 hover:shadow disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:shadow-sm",disabled:_.value===0,title:"导出所有异常状态的 API Key",onClick:$[7]||($[7]=j=>Q("error"))},$[28]||($[28]=[e("i",{class:"fas fa-download mr-1"},null,-1),c(" 导出异常 ",-1)]),8,_o),e("button",{class:"rounded-md bg-gradient-to-r from-blue-600 to-blue-700 px-3 py-1.5 text-xs font-medium text-white shadow-sm transition-all hover:from-blue-700 hover:to-blue-800 hover:shadow disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:shadow-sm",disabled:x.value.length===0,title:"导出所有 API Key",onClick:$[8]||($[8]=j=>Q("all"))},$[29]||($[29]=[e("i",{class:"fas fa-file-export mr-1"},null,-1),c(" 导出全部 ",-1)]),8,Ko)]),e("div",Mo,[$[34]||($[34]=e("i",{class:"fas fa-info-circle text-purple-500 dark:text-purple-400"},null,-1)),e("span",So,[$[32]||($[32]=c(" 显示 ",-1)),e("strong",null,u(h.value.length),1),$[33]||($[33]=c(" 个 ",-1))])])])])]),e("div",Do,[(o(!0),n(Ce,null,Be(ee.value,(j,ce)=>(o(),n("div",{key:ce,class:"relative rounded-lg border border-gray-200 bg-white p-4 transition-all hover:shadow-md dark:border-gray-700 dark:bg-gray-800"},[(j.status==="error"||j.status==="disabled")&&j.errorMessage?(o(),n("div",Po,[e("span",{class:C(["inline-flex items-center justify-center rounded-full px-2 py-0.5 text-[10px] font-semibold shadow-sm",[j.status==="error"?"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400":"bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400"]]),title:`错误状态码: ${j.errorMessage}`},u(j.errorMessage),11,Lo)])):m("",!0),e("div",zo,[e("div",jo,[e("span",{class:"flex-1 break-all font-mono text-xs font-medium text-gray-900 dark:text-gray-100",title:j.key},u(V(j.key)),9,Ro),e("div",Vo,[e("button",{class:"text-xs text-gray-500 transition-colors hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200",title:"复制 API Key",onClick:ge=>Ue(j.key)},$[36]||($[36]=[e("i",{class:"fas fa-copy"},null,-1)]),8,Oo),j.status==="error"||j.status==="disabled"?(o(),n("button",{key:0,class:C(["text-xs transition-colors disabled:cursor-not-allowed disabled:opacity-50",[j.status==="error"?"text-orange-500 hover:text-orange-700 dark:text-orange-400 dark:hover:text-orange-300":"text-yellow-500 hover:text-yellow-700 dark:text-yellow-400 dark:hover:text-yellow-300"]]),disabled:K.value===j.key,title:"重置状态",onClick:ge=>ue(j)},[K.value===j.key?(o(),n("div",No)):(o(),n("i",Fo))],10,Eo)):m("",!0),e("button",{class:"text-xs text-red-500 transition-colors hover:text-red-700 disabled:cursor-not-allowed disabled:opacity-50 dark:text-red-400 dark:hover:text-red-600",disabled:R.value===j.key,onClick:ge=>we(j)},[R.value===j.key?(o(),n("div",Go)):(o(),n("i",Wo))],8,qo)])]),e("div",Bo,[e("div",null,[e("span",{class:C([j.status==="active"?"text-green-600 dark:text-green-400":j.status==="error"?"text-red-600 dark:text-red-400":"text-yellow-600 dark:text-yellow-400"])},[e("i",{class:C(["mr-1",[j.status==="active"?"fas fa-check-circle":j.status==="error"?"fas fa-exclamation-triangle":"fas fa-exclamation-circle"]])},null,2),c(" "+u(j.status==="active"?"正常":j.status==="error"?"异常":j.status==="disabled"?"禁用":j.status||"未知"),1)],2)]),e("div",null,[e("span",null,[$[37]||($[37]=c("使用: ",-1)),e("strong",null,u(j.usageCount||0),1),$[38]||($[38]=c("次",-1))])]),j.lastUsedAt?(o(),n("div",Qo,[e("span",null,u(Ne(j.lastUsedAt)),1)])):m("",!0)])])]))),128))]),z.value>1?(o(),n("div",Ho,[e("div",Jo," 显示 "+u((k.value-1)*G.value+1)+"-"+u(Math.min(k.value*G.value,y.value))+" 项,共 "+u(y.value)+" 项 ",1),e("div",Yo,[e("button",{class:"rounded-lg bg-gray-100 px-3 py-1.5 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-200 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:k.value===1,onClick:$[9]||($[9]=j=>k.value=1)},$[39]||($[39]=[e("i",{class:"fas fa-angle-double-left"},null,-1)]),8,Zo),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1.5 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-200 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:k.value===1,onClick:$[10]||($[10]=j=>k.value--)},$[40]||($[40]=[e("i",{class:"fas fa-angle-left"},null,-1)]),8,Xo),e("span",en,u(k.value)+" / "+u(z.value),1),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1.5 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-200 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:k.value===z.value,onClick:$[11]||($[11]=j=>k.value++)},$[41]||($[41]=[e("i",{class:"fas fa-angle-right"},null,-1)]),8,tn),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1.5 text-sm font-medium text-gray-700 transition-colors hover:bg-gray-200 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:k.value===z.value,onClick:$[12]||($[12]=j=>k.value=z.value)},$[42]||($[42]=[e("i",{class:"fas fa-angle-double-right"},null,-1)]),8,rn)])])):m("",!0)])):m("",!0)])])):m("",!0)]))}},sn={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},ln={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"},on={class:"mb-4 flex items-center justify-between sm:mb-6"},nn={class:"flex items-center gap-2 sm:gap-3"},dn={class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"},un={key:0,class:"mb-4 flex items-center justify-center sm:mb-8"},pn={class:"flex items-center space-x-2 sm:space-x-4"},gn={class:"flex items-center"},yn={class:"flex items-center"},mn={key:1},cn={class:"space-y-6"},xn={key:0},fn={class:"space-y-3"},bn={class:"grid grid-cols-2 gap-2 sm:grid-cols-4"},vn={class:"p-3"},kn={class:"flex items-center justify-between"},hn={key:0,class:"flex h-5 w-5 items-center justify-center rounded-full bg-indigo-500"},wn={class:"p-3"},$n={class:"flex items-center justify-between"},An={key:0,class:"flex h-5 w-5 items-center justify-center rounded-full bg-emerald-500"},Cn={class:"p-3"},Un={class:"flex items-center justify-between"},In={key:0,class:"flex h-5 w-5 items-center justify-center rounded-full bg-blue-500"},Tn={class:"p-3"},_n={class:"flex items-center justify-between"},Kn={key:0,class:"flex h-5 w-5 items-center justify-center rounded-full bg-rose-500"},Mn={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"},Sn={class:"grid grid-cols-2 gap-2 sm:grid-cols-3"},Dn={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-indigo-500"},Pn={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-purple-500"},Ln={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-orange-500"},zn={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-cyan-500"},jn={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-emerald-500"},Rn={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-teal-500"},Vn={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-blue-500"},On={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-blue-500"},En={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-purple-500"},Nn={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-amber-500"},Fn={key:0,class:"absolute right-1 top-1 flex h-4 w-4 items-center justify-center rounded-full bg-rose-500"},qn={key:1},Gn={class:"flex flex-wrap gap-4"},Wn={class:"flex cursor-pointer items-center"},Bn={class:"text-sm text-gray-700 dark:text-gray-300"},Qn={key:0},Hn={key:0,class:"flex cursor-pointer items-center"},Jn={class:"flex cursor-pointer items-center"},Yn={key:1,class:"flex cursor-pointer items-center"},Zn={key:0,class:"mt-1 text-xs text-red-500"},Xn={class:"flex gap-4"},ei={class:"flex cursor-pointer items-center"},ti={class:"flex cursor-pointer items-center"},ri={class:"flex cursor-pointer items-center"},ai={key:2},si={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-gray-800"},li={key:0,class:"mt-3"},oi=["min"],ni={key:1,class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},ii={key:2,class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},di={key:3},ui={class:"flex gap-2"},pi={class:"flex-1"},gi={class:"max-h-48 space-y-2 overflow-y-auto rounded-md border p-3 dark:border-gray-600 dark:bg-gray-700"},yi={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},mi=["value"],ci={class:"text-sm text-gray-700 dark:text-gray-200"},xi={key:4},fi={key:5,class:"space-y-4"},bi={key:0,class:"mt-1 text-xs text-red-500"},vi={key:0,class:"mt-1 text-xs text-red-500"},ki={key:0,class:"mt-1 text-xs text-red-500"},hi={key:6,class:"space-y-4"},wi={key:0,class:"mt-1 text-xs text-red-500"},$i={key:0,class:"mt-1 text-xs text-red-500"},Ai={key:0,class:"mt-1 text-xs text-red-500"},Ci={class:"flex flex-wrap gap-2"},Ui=["value"],Ii={class:"text-sm text-gray-700 dark:text-gray-300"},Ti={key:7},_i={class:"mb-3"},Ki={class:"inline-flex cursor-pointer items-center"},Mi={key:0},Si={key:8,class:"space-y-4"},Di={key:0,class:"mt-1 text-xs text-red-500"},Pi={key:0,class:"mt-1 text-xs text-red-500"},Li={class:"grid grid-cols-2 gap-4"},zi={class:"mb-4 flex gap-2"},ji={key:0},Ri={class:"mb-3 grid grid-cols-2 gap-2"},Vi=["value"],Oi={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Ei={class:"text-xs text-gray-500 dark:text-gray-400"},Ni={key:0},Fi={key:1},qi={class:"mb-3 space-y-2"},Gi=["onUpdate:modelValue"],Wi=["onUpdate:modelValue"],Bi=["onClick"],Qi={class:"mt-3 flex flex-wrap gap-2"},Hi={class:"mb-3"},Ji={class:"inline-flex cursor-pointer items-center"},Yi={key:0},Zi={key:0},Xi={class:"inline-flex cursor-pointer items-center"},ed={key:9,class:"space-y-4"},td={class:"relative"},rd=["type"],ad={key:10,class:"space-y-4"},sd={key:0,class:"mt-1 text-xs text-red-500 dark:text-red-400"},ld={class:"relative"},od=["type"],nd={key:11},id={class:"flex gap-4"},dd={class:"flex cursor-pointer items-center"},ud={class:"flex cursor-pointer items-center"},pd={key:12,class:"mt-4"},gd={class:"flex items-start"},yd={key:13,class:"mt-4"},md={class:"flex items-start"},cd={class:"ml-3"},xd={key:0,class:"mt-1"},fd={class:"flex items-center justify-between"},bd={class:"text-xs text-green-600 dark:text-green-400"},vd=["disabled"],kd={key:0,class:"fas fa-trash-alt mr-1"},hd={key:1,class:"loading-spinner mr-1"},wd={key:1,class:"mt-1"},$d={key:14,class:"mt-4"},Ad={class:"flex items-start"},Cd={class:"ml-3 flex-1"},Ud={key:0,class:"mt-3"},Id={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-gray-800/50"},Td={class:"flex items-center gap-2"},_d={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"},Kd={class:"text-blue-600 dark:text-blue-400"},Md={class:"text-gray-500 dark:text-gray-500"},Sd={class:"text-blue-600 dark:text-blue-400"},Dd={key:15,class:"space-y-4 rounded-lg border border-blue-200 bg-blue-50 p-4"},Pd={class:"mb-4 flex items-start gap-3"},Ld={key:0,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},zd={key:1,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},jd={key:2,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},Rd={key:3,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},Vd={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"},Od={key:0,class:"text-xs text-blue-800 dark:text-blue-300"},Ed={key:1,class:"text-xs text-blue-800 dark:text-blue-300"},Nd={key:2,class:"text-xs text-blue-800 dark:text-blue-300"},Fd={key:3,class:"text-xs text-blue-800 dark:text-blue-300"},qd={key:4,class:"text-xs text-blue-600 dark:text-blue-400"},Gd={key:5,class:"text-xs text-red-600 dark:text-red-400"},Wd={key:0},Bd={key:1},Qd={key:0,class:"mt-1 text-xs text-red-500"},Hd={key:2},Jd={key:0,class:"mt-1 text-xs text-red-500"},Yd={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Zd={key:3},Xd={key:4},e0={key:16,class:"space-y-4 rounded-lg border border-purple-200 bg-purple-50 p-4 dark:border-purple-700 dark:bg-purple-900/30"},t0={key:0,class:"mt-1 text-xs text-red-500"},r0={class:"flex gap-3 pt-4"},a0=["disabled"],s0=["disabled"],l0={key:0,class:"loading-spinner mr-2"},o0={key:3,class:"space-y-6"},n0={key:0},i0={class:"rounded-lg border border-blue-200 bg-blue-50 p-6 dark:border-blue-700 dark:bg-blue-900/30"},d0={class:"flex items-start gap-4"},u0={class:"flex-1"},p0={class:"mb-4"},g0={class:"flex flex-wrap gap-4"},y0={class:"flex cursor-pointer items-center"},m0={class:"flex cursor-pointer items-center"},c0={key:0,class:"space-y-4"},x0={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},f0={class:"flex items-start gap-3"},b0={class:"flex-1"},v0=["disabled"],k0={key:0,class:"fas fa-link mr-2"},h0={key:1,class:"loading-spinner mr-2"},w0={key:1,class:"space-y-3"},$0={class:"flex items-center gap-2"},A0=["value"],C0={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},U0={class:"flex items-start gap-3"},I0={class:"flex-1"},T0={class:"space-y-3"},_0={key:1,class:"space-y-4"},K0={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},M0={class:"space-y-4"},S0={class:"mb-2 flex items-center gap-2 text-sm font-semibold text-gray-700 dark:text-gray-300"},D0={key:0,class:"rounded-full bg-blue-500 px-2 py-0.5 text-xs text-white"},P0={key:0,class:"mt-1 text-xs text-blue-600 dark:text-blue-400"},L0={key:1,class:"mt-1 text-xs text-red-500"},z0={key:0,class:"mt-3 rounded border border-gray-200 bg-gray-50 p-3 dark:border-gray-600 dark:bg-gray-700"},j0=["disabled"],R0={key:0,class:"loading-spinner mr-2"},V0={key:1,class:"fas fa-magic mr-2"},O0={class:"flex gap-3 pt-4"},E0=["disabled"],N0={key:0,class:"loading-spinner mr-2"},F0={key:4,class:"space-y-6"},q0={class:"flex gap-4"},G0={class:"flex cursor-pointer items-center"},W0={class:"flex cursor-pointer items-center"},B0={class:"flex cursor-pointer items-center"},Q0={key:0},H0={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-gray-800"},J0={key:0,class:"mt-3"},Y0=["min"],Z0={key:1,class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},X0={key:2,class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},eu={key:1},tu={class:"flex gap-2"},ru={class:"flex-1"},au={class:"max-h-48 space-y-2 overflow-y-auto rounded-md border p-3 dark:border-gray-600 dark:bg-gray-700"},su={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},lu=["value"],ou={class:"text-sm text-gray-700 dark:text-gray-200"},nu={key:2},iu={key:3},du={class:"flex gap-4"},uu={class:"flex cursor-pointer items-center"},pu={class:"flex cursor-pointer items-center"},gu={key:4,class:"mt-4"},yu={class:"flex items-start"},mu={key:5,class:"mt-4"},cu={class:"flex items-start"},xu={class:"ml-3"},fu={key:0,class:"mt-1"},bu={class:"flex items-center justify-between"},vu={class:"text-xs text-green-600 dark:text-green-400"},ku=["disabled"],hu={key:0,class:"fas fa-trash-alt mr-1"},wu={key:1,class:"loading-spinner mr-1"},$u={key:1,class:"mt-1"},Au={key:6,class:"mt-4"},Cu={class:"flex items-start"},Uu={class:"ml-3 flex-1"},Iu={key:0,class:"mt-3"},Tu={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-gray-800/50"},_u={class:"flex items-center gap-2"},Ku={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"},Mu={class:"text-blue-600 dark:text-blue-400"},Su={class:"text-gray-500 dark:text-gray-500"},Du={class:"text-blue-600 dark:text-blue-400"},Pu={key:7,class:"space-y-4"},Lu={class:"grid grid-cols-2 gap-4"},zu={key:0,class:"rounded-lg bg-gray-50 p-4 dark:bg-gray-800"},ju={class:"mb-2 flex items-center justify-between"},Ru={class:"text-sm text-gray-500 dark:text-gray-400"},Vu={class:"relative h-2 w-full rounded-full bg-gray-200 dark:bg-gray-700"},Ou={class:"mt-2 flex items-center justify-between text-xs"},Eu={class:"text-gray-500 dark:text-gray-400"},Nu={class:"text-gray-500 dark:text-gray-400"},Fu={class:"mb-4 flex gap-2"},qu={key:0},Gu={class:"mb-3 grid grid-cols-2 gap-2"},Wu=["value"],Bu={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Qu={class:"text-xs text-gray-500 dark:text-gray-400"},Hu={key:0},Ju={key:1},Yu={class:"mb-3 space-y-2"},Zu=["onUpdate:modelValue"],Xu=["onUpdate:modelValue"],ep=["onClick"],tp={class:"mt-3 flex flex-wrap gap-2"},rp={class:"mb-3"},ap={class:"inline-flex cursor-pointer items-center"},sp={key:0},lp={key:1},op={class:"inline-flex cursor-pointer items-center"},np={key:8,class:"space-y-4"},ip={class:"relative"},dp=["type"],up={class:"grid grid-cols-2 gap-4"},pp={key:9,class:"space-y-4"},gp={key:0,class:"mt-1 text-xs text-red-500 dark:text-red-400"},yp={class:"relative"},mp=["type"],cp={key:10,class:"space-y-4"},xp={class:"mb-3"},fp={class:"inline-flex cursor-pointer items-center"},bp={key:0},vp={key:11,class:"space-y-4"},kp={key:0,class:"mt-1 text-xs text-red-500"},hp={key:0,class:"mt-1 text-xs text-red-500"},wp={key:0,class:"mt-1 text-xs text-red-500"},$p={class:"flex flex-wrap gap-2"},Ap=["value"],Cp={class:"text-sm text-gray-700 dark:text-gray-300"},Up={key:12,class:"rounded-lg border border-purple-200 bg-purple-50 p-4 dark:border-purple-700 dark:bg-purple-900/30"},Ip={class:"mb-4 flex items-start gap-3"},Tp={class:"flex-1"},_p={class:"mb-2 flex items-center justify-between"},Kp={class:"mb-1 text-sm text-purple-800 dark:text-purple-200"},Mp={class:"space-y-4"},Sp={key:0,class:"mt-1 text-xs text-red-500"},Dp={class:"space-y-2"},Pp={class:"flex items-center justify-between"},Lp={class:"text-xs text-purple-600 dark:text-purple-300"},zp={class:"relative grid h-11 grid-cols-3 overflow-hidden rounded-2xl border border-purple-200/80 bg-gradient-to-r from-purple-50/80 via-white to-purple-50/80 shadow-inner dark:border-purple-700/70 dark:from-purple-900/40 dark:via-purple-900/20 dark:to-purple-900/40"},jp=["onClick"],Rp={class:"text-xs text-purple-700 dark:text-purple-300"},Vp={key:13,class:"rounded-lg border border-amber-200 bg-amber-50 p-4 dark:border-amber-700 dark:bg-amber-900/30"},Op={class:"space-y-4"},Ep={key:14},Np={class:"flex gap-3 pt-4"},Fp=["disabled"],qp={key:0,class:"loading-spinner mr-2"},Gp={__name:"AccountForm",props:{account:{type:Object,default:null}},emits:["close","success","platform-changed"],setup(J,{emit:Ve}){var fr,br,vr,kr,hr,Ht,Et,Jt,Yt,wr,yt,mt,$r,Zt,Nt,Xt,Ar,er,Ft,Cr,tr,qt,rr,ar,Ur,Ir,Tr,sr,_r,lr,Kr,Mr,or;const g=J,N=Ve,U=oa(),{showConfirmModal:B,confirmOptions:R,showConfirm:K,handleConfirm:x,handleCancel:k}=la(),G=ie(()=>!!g.account),fe=w(!0),Y=w(null),pe=w(1),Z=w(!1),X=w(!1),V=w(!1),h=w(!1),y=w(""),z=w(""),ee=w(!1),E=w(""),_=w("manual"),q=w(""),we=w(!1),ue=w(""),$e=w(!1),Le=w({current:0,total:0}),Q=ie(()=>q.value.split(` `).map(d=>d.trim()).filter(d=>d.length>0).length),I=w(""),Ue=w(!1),re=w(""),Ne=w(!1),H=d=>["claude","claude-console","ccr","bedrock"].includes(d)?"claude":["openai","openai-responses","azure_openai"].includes(d)?"openai":["gemini","gemini-antigravity","gemini-api"].includes(d)?"gemini":d==="droid"?"droid":"",$=()=>({enabled:!1,type:"socks5",host:"",port:"",username:"",password:""}),j=d=>{if(!d)return null;let t=d;if(typeof d=="string")try{t=JSON.parse(d)}catch{return null}if(t&&typeof t=="object"&&t.proxy&&typeof t.proxy=="object"&&(t=t.proxy),!t||typeof t!="object")return null;const ae=typeof t.host=="string"?t.host.trim():t.host!==void 0&&t.host!==null?String(t.host).trim():"",ye=t.port!==void 0&&t.port!==null?String(t.port).trim():"",i=typeof t.type=="string"&&t.type.trim()?t.type.trim():"socks5",se=typeof t.username=="string"?t.username:t.username!==void 0&&t.username!==null?String(t.username):"",le=typeof t.password=="string"?t.password:t.password!==void 0&&t.password!==null?String(t.password):"";return{type:i,host:ae,port:ye,username:se,password:le}},ce=d=>{const t=j(d);return t&&t.host&&t.port?{enabled:!0,type:t.type||"socks5",host:t.host,port:t.port,username:t.username||"",password:t.password||""}:$()},ge=d=>{if(!d||!d.enabled)return null;const t=(d.host||"").trim(),ae=Number.parseInt(d.port,10);if(!t||Number.isNaN(ae)||ae<=0)return null;const ye=d.username?d.username.trim():"",i=d.password?d.password.trim():"";return{type:d.type||"socks5",host:t,port:ae,username:ye||null,password:i||null}},de=()=>{var d;return ce((d=g.account)==null?void 0:d.proxy)},r=w({platform:((fr=g.account)==null?void 0:fr.platform)||"claude",addType:(()=>{var t;const d=((t=g.account)==null?void 0:t.platform)||"claude";return d==="gemini"||d==="gemini-antigravity"||d==="openai"||d==="claude"?"oauth":"manual"})(),name:((br=g.account)==null?void 0:br.name)||"",description:((vr=g.account)==null?void 0:vr.description)||"",accountType:((kr=g.account)==null?void 0:kr.accountType)||"shared",authenticationMethod:((hr=g.account)==null?void 0:hr.authenticationMethod)||"",subscriptionType:"claude_max",autoStopOnWarning:((Ht=g.account)==null?void 0:Ht.autoStopOnWarning)||!1,useUnifiedUserAgent:((Et=g.account)==null?void 0:Et.useUnifiedUserAgent)||!1,useUnifiedClientId:((Jt=g.account)==null?void 0:Jt.useUnifiedClientId)||!1,unifiedClientId:((Yt=g.account)==null?void 0:Yt.unifiedClientId)||"",groupId:"",groupIds:[],projectId:((wr=g.account)==null?void 0:wr.projectId)||"",accessToken:"",refreshToken:"",apiKeysInput:"",apiKeyUpdateMode:"append",proxy:de(),apiUrl:((yt=g.account)==null?void 0:yt.apiUrl)||"",apiKey:((mt=g.account)==null?void 0:mt.apiKey)||"",priority:(($r=g.account)==null?void 0:$r.priority)||50,endpointType:((Zt=g.account)==null?void 0:Zt.endpointType)||"anthropic",baseApi:((Nt=g.account)==null?void 0:Nt.baseApi)||"",baseUrl:((Xt=g.account)==null?void 0:Xt.baseUrl)||"https://generativelanguage.googleapis.com",rateLimitDuration:((Ar=g.account)==null?void 0:Ar.rateLimitDuration)||60,supportedModels:(()=>{var t;const d=(t=g.account)==null?void 0:t.supportedModels;return d?typeof d=="object"&&!Array.isArray(d)?Object.keys(d):Array.isArray(d)?d:[]:[]})(),userAgent:((er=g.account)==null?void 0:er.userAgent)||"",enableRateLimit:g.account?g.account.rateLimitDuration>0:!0,disableAutoProtection:((Ft=g.account)==null?void 0:Ft.disableAutoProtection)===!0,dailyQuota:((Cr=g.account)==null?void 0:Cr.dailyQuota)||0,dailyUsage:((tr=g.account)==null?void 0:tr.dailyUsage)||0,quotaResetTime:((qt=g.account)==null?void 0:qt.quotaResetTime)||"00:00",maxConcurrentTasks:((rr=g.account)==null?void 0:rr.maxConcurrentTasks)||0,accessKeyId:((ar=g.account)==null?void 0:ar.accessKeyId)||"",secretAccessKey:((Ur=g.account)==null?void 0:Ur.secretAccessKey)||"",region:((Ir=g.account)==null?void 0:Ir.region)||"",sessionToken:((Tr=g.account)==null?void 0:Tr.sessionToken)||"",defaultModel:((sr=g.account)==null?void 0:sr.defaultModel)||"",smallFastModel:((_r=g.account)==null?void 0:_r.smallFastModel)||"",azureEndpoint:((lr=g.account)==null?void 0:lr.azureEndpoint)||"",apiVersion:((Kr=g.account)==null?void 0:Kr.apiVersion)||"",deploymentName:((Mr=g.account)==null?void 0:Mr.deploymentName)||"",expireDuration:(()=>{var d;return(d=g.account)!=null&&d.expiresAt?"custom":""})(),customExpireDate:(()=>{var d;return(d=g.account)!=null&&d.expiresAt?new Date(g.account.expiresAt).toISOString().slice(0,16):""})(),expiresAt:((or=g.account)==null?void 0:or.expiresAt)||null}),W=w("whitelist"),ke=w(["claude-sonnet-4-20250514","claude-sonnet-4-5-20250929","claude-3-5-haiku-20241022"]),qe=[{value:"claude-opus-4-5-20251101",label:"Claude Opus 4.5",color:"blue"},{value:"claude-sonnet-4-20250514",label:"Claude Sonnet 4",color:"blue"},{value:"claude-sonnet-4-5-20250929",label:"Claude Sonnet 4.5",color:"indigo"},{value:"claude-3-5-haiku-20241022",label:"Claude 3.5 Haiku",color:"green"},{value:"claude-haiku-4-5-20251001",label:"Claude Haiku 4.5",color:"emerald"},{value:"claude-opus-4-20250514",label:"Claude Opus 4",color:"purple"},{value:"claude-opus-4-1-20250805",label:"Claude Opus 4.1",color:"purple"},{value:"deepseek-chat",label:"DeepSeek Chat",color:"cyan"},{value:"Qwen",label:"Qwen",color:"orange"},{value:"Kimi",label:"Kimi",color:"pink"},{value:"GLM",label:"GLM",color:"teal"}],De=w([]),ot=()=>{var d;if((d=g.account)!=null&&d.supportedModels)if(typeof g.account.supportedModels=="object"&&!Array.isArray(g.account.supportedModels)){const t=Object.entries(g.account.supportedModels);t.every(([ye,i])=>ye===i)?(W.value="whitelist",ke.value=t.map(([ye])=>ye),De.value=t.map(([ye,i])=>({from:ye,to:i}))):(W.value="mapping",De.value=t.map(([ye,i])=>({from:ye,to:i})))}else Array.isArray(g.account.supportedModels)&&(W.value="whitelist",ke.value=g.account.supportedModels,De.value=g.account.supportedModels.map(t=>({from:t,to:t})))},it=d=>{if(!d||typeof d!="string")return[];const t=d.split(/\r?\n/).map(ye=>ye.trim()).filter(ye=>ye.length>0);return t.length===0?[]:Array.from(new Set(t))},st=[{value:"append",label:"追加模式",description:"保留现有 Key,并在末尾追加新 Key 列表。"},{value:"replace",label:"覆盖模式",description:"先清空旧 Key,再写入上方的新 Key 列表。"},{value:"delete",label:"删除模式",description:"输入要移除的 Key,可精准删除失效或被封禁的 Key。"}],ct=ie(()=>{const d=Math.max(st.findIndex(ae=>ae.value===r.value.apiKeyUpdateMode),0),t=100/st.length;return{width:`${t}%`,left:`${d*t}%`}}),kt=ie(()=>{const d=st.find(t=>t.value===r.value.apiKeyUpdateMode);return d?d.label:st[0].label}),xt=ie(()=>{const d=st.find(t=>t.value===r.value.apiKeyUpdateMode);return d?d.description:st[0].description}),T=w({name:"",refreshToken:"",accessToken:"",apiKeys:"",apiUrl:"",apiKey:"",baseApi:"",accessKeyId:"",secretAccessKey:"",region:"",azureEndpoint:"",deploymentName:""}),It=ie(()=>{var d;return((d=r.value.name)==null?void 0:d.trim())&&r.value.platform}),ht=ie(()=>y.value&&z.value.trim()),ft=()=>{var d;return!G.value||!((d=g.account)!=null&&d.id)?0:typeof r.value.dailyUsage=="number"?r.value.dailyUsage:0},Ze=ie(()=>!r.value.dailyQuota||r.value.dailyQuota<=0?0:ft()/r.value.dailyQuota*100),dt=ie(()=>{if(!g.account||g.account.platform!=="droid")return 0;let d=0;if(Array.isArray(g.account.apiKeys))d=g.account.apiKeys.length;else if(typeof g.account.apiKeys=="string")try{const ae=JSON.parse(g.account.apiKeys);Array.isArray(ae)&&(d=ae.length)}catch{d=0}const t=g.account.apiKeyCount??g.account.apiKeysCount??g.account.api_key_count??d;return Number(t)||0}),f=ie(()=>{var t,ae,ye;if(!G.value||r.value.platform!=="droid")return!1;const d=r.value.authenticationMethod||((t=g.account)==null?void 0:t.authenticationMethod)||((ae=g.account)==null?void 0:ae.authMethod)||((ye=g.account)==null?void 0:ye.authentication_mode)||"";return typeof d!="string"?!1:d.trim().toLowerCase()==="api_key"}),p=async()=>{var d;if(!(!G.value||!((d=g.account)!=null&&d.id)))try{const t=await F.get(`/admin/claude-console-accounts/${g.account.id}/usage`);t&&(r.value.dailyUsage=t.dailyUsage||0)}catch{}},D=d=>{re.value=d,d==="claude"?r.value.platform="claude":d==="openai"?r.value.platform="openai":d==="gemini"?r.value.platform="gemini":d==="droid"&&(r.value.platform="droid")},Xe=async()=>{if(T.value.name="",!It.value){(!r.value.name||r.value.name.trim()==="")&&(T.value.name="请填写账户名称");return}if(r.value.accountType==="group"&&(!r.value.groupIds||r.value.groupIds.length===0)){L("请选择一个分组","error");return}r.value.accountType==="group"&&(r.value.groupIds&&r.value.groupIds.length>0?r.value.groupId=r.value.groupIds[0]:r.value.groupId=""),!((r.value.platform==="gemini"||r.value.platform==="gemini-antigravity")&&pe.value===1&&r.value.addType==="oauth"&&(!r.value.projectId||r.value.projectId.trim()==="")&&!await K("项目 ID 未填写",`您尚未填写项目 ID。 如果您的Google账号绑定了Google Cloud或被识别为Workspace账号,需要提供项目 ID。 如果您使用的是普通个人账号,可以继续不填写。`,"继续","返回填写"))&&(pe.value=2)},Tt=async()=>{V.value=!0;try{const d=ge(r.value.proxy),t=d?{proxy:d}:{},ae=await U.generateClaudeSetupTokenUrl(t);y.value=ae.authUrl,E.value=ae.sessionId}catch(d){L(d.message||"生成Setup Token授权链接失败","error")}finally{V.value=!1}},bt=()=>{y.value="",z.value="",Tt()},_t=async()=>{try{await navigator.clipboard.writeText(y.value),ee.value=!0,L("链接已复制","success"),setTimeout(()=>{ee.value=!1},2e3)}catch{const t=document.createElement("textarea");t.value=y.value,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();try{document.execCommand("copy")?(ee.value=!0,L("链接已复制","success")):L("复制失败,请手动复制","error")}catch{L("复制失败,请手动复制","error")}document.body.removeChild(t),setTimeout(()=>{ee.value=!1},2e3)}},Rt=async()=>{if(ht.value){h.value=!0;try{const d={sessionId:E.value,callbackUrl:z.value.trim()},t=ge(r.value.proxy);t&&(d.proxy=t);const ae=await U.exchangeClaudeSetupTokenCode(d);r.value.useUnifiedClientId&&!r.value.unifiedClientId&&(r.value.unifiedClientId=ut()),await pt(ae)}catch(d){L(d.message||"Setup Token授权失败,请检查授权码是否正确","error")}finally{h.value=!1}}},wt=async()=>{const d=q.value.split(` `).map(se=>se.trim()).filter(se=>se.length>0);if(d.length===0){ue.value="请输入至少一个 sessionKey";return}we.value=!0,ue.value="",Le.value={current:0,total:d.length};const t=r.value.addType==="setup-token",ae=ge(r.value.proxy),ye=[],i=[];for(let se=0;se0)try{await pt(ye)}finally{we.value=!1}else we.value=!1;i.length>0&&ye.length===0?ue.value="全部授权失败,请检查 sessionKey 是否有效":i.length>0&&(ue.value=`${i.length} 个授权失败`)},Vt=()=>{q.value="",ue.value="",$e.value=!1,Le.value={current:0,total:0}},Kt=()=>{_.value==="manual"?Vt():(y.value="",z.value="",E.value="")},vt=(d,t,ae)=>{var le,Pe;const ye=ge(r.value.proxy),i=d.claudeAiOauth||d,se={name:t,description:r.value.description,accountType:r.value.accountType,groupId:r.value.accountType==="group"?r.value.groupId:void 0,groupIds:r.value.accountType==="group"?r.value.groupIds:void 0,expiresAt:r.value.expiresAt||void 0,proxy:ye,claudeAiOauth:i,priority:r.value.priority||50,autoStopOnWarning:r.value.autoStopOnWarning||!1,useUnifiedUserAgent:r.value.useUnifiedUserAgent||!1,useUnifiedClientId:r.value.useUnifiedClientId||!1,unifiedClientId:ae,subscriptionInfo:{accountType:r.value.subscriptionType||"claude_max",hasClaudeMax:r.value.subscriptionType==="claude_max",hasClaudePro:r.value.subscriptionType==="claude_pro",manuallySet:!0}};if(i){const ze={},Ke=i.extInfo;Ke!=null&&Ke.org_uuid&&(ze.org_uuid=Ke.org_uuid),Ke!=null&&Ke.account_uuid&&(ze.account_uuid=Ke.account_uuid),Ke||((le=i.organization)!=null&&le.uuid&&(ze.org_uuid=i.organization.uuid),(Pe=i.account)!=null&&Pe.uuid&&(ze.account_uuid=i.account.uuid)),Object.keys(ze).length>0&&(se.extInfo=ze)}return se},pt=async d=>{var t,ae,ye,i,se,le,Pe,ze,Ke;Z.value=!0;try{const M=r.value.platform;if(M==="claude"&&Array.isArray(d)){const Me=d,je=Me.length>1,Se=r.value.name,lt=[],rt=[];for(let Ct=0;Ct0){const Ct=je?`成功创建 ${lt.length}/${Me.length} 个账户`:"账户创建成功";L(Ct,"success"),N("success",lt[0])}rt.length>0&&L(`${rt.length} 个账户创建失败`,"error");return}const S=Array.isArray(d)?d[0]:d;r.value.platform==="claude"&&r.value.useUnifiedClientId&&!r.value.unifiedClientId&&(r.value.unifiedClientId=ut());const be=ge(r.value.proxy),O={name:r.value.name,description:r.value.description,accountType:r.value.accountType,groupId:r.value.accountType==="group"?r.value.groupId:void 0,groupIds:r.value.accountType==="group"?r.value.groupIds:void 0,expiresAt:r.value.expiresAt||void 0,proxy:be};if(M==="claude"){const Me=S.claudeAiOauth||S;if(O.claudeAiOauth=Me,Me){const je={},Se=Me.extInfo;if(Se&&typeof Se=="object"&&(Se.org_uuid&&(je.org_uuid=Se.org_uuid),Se.account_uuid&&(je.account_uuid=Se.account_uuid)),!Se){const lt=(t=Me.organization)==null?void 0:t.uuid,rt=(ae=Me.account)==null?void 0:ae.uuid;lt&&(je.org_uuid=lt),rt&&(je.account_uuid=rt)}Object.keys(je).length>0&&(O.extInfo=je)}O.priority=r.value.priority||50,O.autoStopOnWarning=r.value.autoStopOnWarning||!1,O.useUnifiedUserAgent=r.value.useUnifiedUserAgent||!1,O.useUnifiedClientId=r.value.useUnifiedClientId||!1,O.unifiedClientId=r.value.unifiedClientId||"",O.subscriptionInfo={accountType:r.value.subscriptionType||"claude_max",hasClaudeMax:r.value.subscriptionType==="claude_max",hasClaudePro:r.value.subscriptionType==="claude_pro",manuallySet:!0}}else if(M==="gemini"||M==="gemini-antigravity")O.geminiOauth=S.tokens||S,O.oauthProvider=M==="gemini-antigravity"?"antigravity":S.oauthProvider||"gemini-cli",r.value.projectId&&(O.projectId=r.value.projectId),O.priority=r.value.priority||50;else if(M==="openai")O.openaiOauth=S.tokens||S,O.accountInfo=S.accountInfo,O.priority=r.value.priority||50;else if(M==="droid"){const Me=S.tokens||S||{},je={accessToken:Me.accessToken||Me.access_token||"",refreshToken:Me.refreshToken||Me.refresh_token||"",expiresAt:Me.expiresAt||Me.expires_at||"",expiresIn:Me.expiresIn||Me.expires_in||null,tokenType:Me.tokenType||Me.token_type||"Bearer",organizationId:Me.organizationId||Me.organization_id||"",authenticationMethod:Me.authenticationMethod||Me.authentication_method||""};if(!je.refreshToken){Z.value=!1,L("授权成功但未返回 Refresh Token,请确认已授予离线访问权限后重试。","error");return}if(O.refreshToken=je.refreshToken,O.accessToken=je.accessToken,O.expiresAt=je.expiresAt,je.expiresIn!==null&&je.expiresIn!==void 0&&(O.expiresIn=je.expiresIn),O.priority=r.value.priority||50,O.endpointType=r.value.endpointType||"anthropic",O.platform="droid",O.tokenType=je.tokenType,O.authenticationMethod=je.authenticationMethod,je.organizationId&&(O.organizationId=je.organizationId),Me.user){const Se=Me.user,lt=[];typeof Se.first_name=="string"&&Se.first_name.trim()&<.push(Se.first_name.trim()),typeof Se.last_name=="string"&&Se.last_name.trim()&<.push(Se.last_name.trim());const rt=lt.join(" ").trim()||(typeof Se.name=="string"?Se.name.trim():"")||(typeof Se.display_name=="string"?Se.display_name.trim():"");typeof Se.email=="string"&&Se.email.trim()&&(O.ownerEmail=Se.email.trim()),rt?(O.ownerName=rt,O.ownerDisplayName=rt):O.ownerEmail&&(O.ownerName=O.ownerName||O.ownerEmail,O.ownerDisplayName=O.ownerDisplayName||O.ownerEmail),typeof Se.id=="string"&&Se.id.trim()&&(O.userId=Se.id.trim())}}let Te;M==="claude"?Te=await U.createClaudeAccount(O):M==="gemini"?Te=await U.createGeminiAccount(O):M==="openai"?Te=await U.createOpenAIAccount(O):M==="droid"?Te=await U.createDroidAccount(O):Te=await U.createGeminiAccount(O),N("success",Te)}catch(M){const S=((i=(ye=M.response)==null?void 0:ye.data)==null?void 0:i.error)||M.message||"账户创建失败",be=((le=(se=M.response)==null?void 0:se.data)==null?void 0:le.suggestion)||"",O=((ze=(Pe=M.response)==null?void 0:Pe.data)==null?void 0:ze.errorDetails)||null;let Te=S;be&&(Te+=` ${be}`),O&&O.error_description?Te+=` 详细信息: ${O.error_description}`:O&&O.error&&O.error.message&&(Te+=` 详细信息: ${O.error.message}`),L(Te,"error","",8e3)}finally{Z.value=!1,(Ke=Y.value)==null||Ke.resetCookieAuth()}},Ot=async()=>{var t,ae,ye,i,se,le,Pe,ze;T.value.name="",T.value.accessToken="",T.value.refreshToken="",T.value.apiUrl="",T.value.apiKey="",T.value.apiKeys="";let d=!1;if((!r.value.name||r.value.name.trim()==="")&&(T.value.name="请填写账户名称",d=!0),r.value.platform==="claude-console"&&((!r.value.apiUrl||r.value.apiUrl.trim()==="")&&(T.value.apiUrl="请填写 API URL",d=!0),(!r.value.apiKey||r.value.apiKey.trim()==="")&&(T.value.apiKey="请填写 API Key",d=!0)),r.value.platform==="ccr"&&((!r.value.apiUrl||r.value.apiUrl.trim()==="")&&(T.value.apiUrl="请填写 API URL",d=!0),(!r.value.apiKey||r.value.apiKey.trim()==="")&&(T.value.apiKey="请填写 API Key",d=!0)),r.value.platform==="openai-responses"?((!r.value.baseApi||r.value.baseApi.trim()==="")&&(T.value.baseApi="请填写 API 基础地址",d=!0),(!r.value.apiKey||r.value.apiKey.trim()==="")&&(T.value.apiKey="请填写 API 密钥",d=!0)):r.value.platform==="bedrock"?((!r.value.accessKeyId||r.value.accessKeyId.trim()==="")&&(T.value.accessKeyId="请填写 AWS 访问密钥 ID",d=!0),(!r.value.secretAccessKey||r.value.secretAccessKey.trim()==="")&&(T.value.secretAccessKey="请填写 AWS 秘密访问密钥",d=!0),(!r.value.region||r.value.region.trim()==="")&&(T.value.region="请选择 AWS 区域",d=!0)):r.value.platform==="azure_openai"?((!r.value.azureEndpoint||r.value.azureEndpoint.trim()==="")&&(T.value.azureEndpoint="请填写 Azure Endpoint",d=!0),(!r.value.deploymentName||r.value.deploymentName.trim()==="")&&(T.value.deploymentName="请填写部署名称",d=!0),(!r.value.apiKey||r.value.apiKey.trim()==="")&&(T.value.apiKey="请填写 API Key",d=!0)):r.value.addType==="manual"?r.value.platform==="openai"?(!r.value.refreshToken||r.value.refreshToken.trim()==="")&&(T.value.refreshToken="请填写 Refresh Token",d=!0):r.value.platform==="gemini"?(!r.value.accessToken||r.value.accessToken.trim()==="")&&(T.value.accessToken="请填写 Access Token",d=!0):r.value.platform==="droid"?((!r.value.accessToken||r.value.accessToken.trim()==="")&&(T.value.accessToken="请填写 Access Token",d=!0),(!r.value.refreshToken||r.value.refreshToken.trim()==="")&&(T.value.refreshToken="请填写 Refresh Token",d=!0)):r.value.platform==="claude"&&(!r.value.accessToken||r.value.accessToken.trim()==="")&&(T.value.accessToken="请填写 Access Token",d=!0):r.value.addType==="apikey"&&(r.value.platform==="gemini-api"?((!r.value.apiKey||r.value.apiKey.trim()==="")&&(T.value.apiKey="请填写 API Key",d=!0),!r.value.baseUrl||r.value.baseUrl.trim()===""?(T.value.baseUrl="请填写 API 基础地址",d=!0):r.value.baseUrl.trim().endsWith("/models")||(T.value.baseUrl="API 基础地址必须以 /models 结尾",d=!0)):it(r.value.apiKeysInput).length===0&&(T.value.apiKeys="请至少填写一个 API Key",d=!0)),r.value.accountType==="group"&&(!r.value.groupIds||r.value.groupIds.length===0)&&(L("请选择一个分组","error"),d=!0),r.value.accountType==="group"&&(r.value.groupIds&&r.value.groupIds.length>0?r.value.groupId=r.value.groupIds[0]:r.value.groupId=""),!d){Z.value=!0;try{const Ke=ge(r.value.proxy),M={name:r.value.name,description:r.value.description,accountType:r.value.accountType,groupId:r.value.accountType==="group"?r.value.groupId:void 0,groupIds:r.value.accountType==="group"?r.value.groupIds:void 0,expiresAt:r.value.expiresAt||void 0,proxy:Ke};if(r.value.platform==="claude"){const be=r.value.refreshToken?6e5:31536e6;r.value.useUnifiedClientId&&!r.value.unifiedClientId&&(r.value.unifiedClientId=ut()),M.claudeAiOauth={accessToken:r.value.accessToken,refreshToken:r.value.refreshToken||"",expiresAt:Date.now()+be,scopes:[]},M.priority=r.value.priority||50,M.autoStopOnWarning=r.value.autoStopOnWarning||!1,M.useUnifiedUserAgent=r.value.useUnifiedUserAgent||!1,M.useUnifiedClientId=r.value.useUnifiedClientId||!1,M.unifiedClientId=r.value.unifiedClientId||"",M.subscriptionInfo={accountType:r.value.subscriptionType||"claude_max",hasClaudeMax:r.value.subscriptionType==="claude_max",hasClaudePro:r.value.subscriptionType==="claude_pro",manuallySet:!0}}else if(r.value.platform==="gemini"){const be=r.value.refreshToken?6e5:31536e6;M.geminiOauth={access_token:r.value.accessToken,refresh_token:r.value.refreshToken||"",scope:"https://www.googleapis.com/auth/cloud-platform",token_type:"Bearer",expiry_date:Date.now()+be},r.value.projectId&&(M.projectId=r.value.projectId),M.priority=r.value.priority||50}else if(r.value.platform==="openai"){const be=r.value.refreshToken?6e5:31536e6;M.openaiOauth={idToken:"",accessToken:r.value.accessToken||"",refreshToken:r.value.refreshToken,expires_in:Math.floor(be/1e3)},M.accountInfo={accountId:"",chatgptUserId:"",organizationId:"",organizationRole:"",organizationTitle:"",planType:"",email:"",emailVerified:!1},M.needsImmediateRefresh=!0,M.requireRefreshSuccess=!0,M.priority=r.value.priority||50}else if(r.value.platform==="droid")if(M.priority=r.value.priority||50,M.endpointType=r.value.endpointType||"anthropic",M.platform="droid",r.value.addType==="apikey"){const be=it(r.value.apiKeysInput);M.apiKeys=be,M.authenticationMethod="api_key",M.isActive=!0,M.schedulable=!0}else{const be=((t=r.value.accessToken)==null?void 0:t.trim())||"",O=((ae=r.value.refreshToken)==null?void 0:ae.trim())||"",Te=new Date(Date.now()+8*60*60*1e3).toISOString();M.accessToken=be,M.refreshToken=O,M.expiresAt=Te,M.expiresIn=8*60*60,M.tokenType="Bearer",M.authenticationMethod="manual"}else r.value.platform==="claude-console"||r.value.platform==="ccr"?(M.apiUrl=r.value.apiUrl,M.apiKey=r.value.apiKey,M.priority=r.value.priority||50,M.supportedModels=Wt()||{},M.userAgent=r.value.userAgent||null,M.rateLimitDuration=r.value.enableRateLimit?r.value.rateLimitDuration||60:0,r.value.platform==="claude-console"&&(M.disableAutoProtection=!!r.value.disableAutoProtection),M.dailyQuota=r.value.dailyQuota||0,M.quotaResetTime=r.value.quotaResetTime||"00:00",M.maxConcurrentTasks=r.value.maxConcurrentTasks||0):r.value.platform==="openai-responses"?(M.baseApi=r.value.baseApi,M.apiKey=r.value.apiKey,M.userAgent=r.value.userAgent||"",M.priority=r.value.priority||50,M.rateLimitDuration=60,M.dailyQuota=r.value.dailyQuota||0,M.quotaResetTime=r.value.quotaResetTime||"00:00"):r.value.platform==="gemini-antigravity"?(M.oauthProvider="antigravity",M.priority=r.value.priority||50):r.value.platform==="gemini-api"?(M.baseUrl=r.value.baseUrl||"https://generativelanguage.googleapis.com",M.apiKey=r.value.apiKey,M.priority=r.value.priority||50,M.supportedModels=Array.isArray(r.value.supportedModels)?r.value.supportedModels:[]):r.value.platform==="bedrock"?(M.awsCredentials={accessKeyId:r.value.accessKeyId,secretAccessKey:r.value.secretAccessKey,sessionToken:r.value.sessionToken||null},M.region=r.value.region,M.defaultModel=r.value.defaultModel||null,M.smallFastModel=r.value.smallFastModel||null,M.priority=r.value.priority||50,M.rateLimitDuration=r.value.enableRateLimit?r.value.rateLimitDuration||60:0):r.value.platform==="azure_openai"&&(M.azureEndpoint=r.value.azureEndpoint,M.apiKey=r.value.apiKey,M.apiVersion=r.value.apiVersion||"2024-02-01",M.deploymentName=r.value.deploymentName,M.supportedModels=Array.isArray(r.value.supportedModels)?r.value.supportedModels:[],M.priority=r.value.priority||50,M.isActive=r.value.isActive!==!1,M.schedulable=r.value.schedulable!==!1);let S;if(r.value.platform==="claude")S=await U.createClaudeAccount(M);else if(r.value.platform==="claude-console"||r.value.platform==="ccr")S=await U.createClaudeConsoleAccount(M);else if(r.value.platform==="droid")S=await U.createDroidAccount(M);else if(r.value.platform==="openai-responses")S=await U.createOpenAIResponsesAccount(M);else if(r.value.platform==="bedrock")S=await U.createBedrockAccount(M);else if(r.value.platform==="openai")S=await U.createOpenAIAccount(M);else if(r.value.platform==="azure_openai")S=await U.createAzureOpenAIAccount(M);else if(r.value.platform==="gemini"||r.value.platform==="gemini-antigravity")S=await U.createGeminiAccount(M);else if(r.value.platform==="gemini-api")S=await U.createGeminiApiAccount(M);else throw new Error(`不支持的平台: ${r.value.platform}`);N("success",S)}catch(Ke){const M=((i=(ye=Ke.response)==null?void 0:ye.data)==null?void 0:i.error)||Ke.message||"账户创建失败",S=((le=(se=Ke.response)==null?void 0:se.data)==null?void 0:le.suggestion)||"",be=((ze=(Pe=Ke.response)==null?void 0:Pe.data)==null?void 0:ze.errorDetails)||null;let O=M;S&&(O+=` ${S}`),be&&be.error_description?O+=` 详细信息: ${be.error_description}`:be&&be.error&&be.error.message&&(O+=` 详细信息: ${be.error.message}`),L(O,"error","",8e3)}finally{Z.value=!1}}},nt=async()=>{var d,t,ae,ye,i,se,le,Pe,ze,Ke;if(T.value.name="",T.value.apiKeys="",T.value.baseUrl="",!r.value.name||r.value.name.trim()===""){T.value.name="请填写账户名称";return}if(r.value.platform==="gemini-api"){const M=((d=r.value.baseUrl)==null?void 0:d.trim())||"";if(!M){T.value.baseUrl="请填写 API 基础地址";return}if(!M.endsWith("/models")){T.value.baseUrl="API 基础地址必须以 /models 结尾";return}}if(r.value.accountType==="group"&&(!r.value.groupIds||r.value.groupIds.length===0)){L("请选择一个分组","error");return}if(r.value.accountType==="group"&&(r.value.groupIds&&r.value.groupIds.length>0?r.value.groupId=r.value.groupIds[0]:r.value.groupId=""),!(r.value.platform==="gemini"&&(!r.value.projectId||r.value.projectId.trim()==="")&&!await K("项目 ID 未填写",`您尚未填写项目 ID。 如果您的Google账号绑定了Google Cloud或被识别为Workspace账号,需要提供项目 ID。 如果您使用的是普通个人账号,可以继续不填写。`,"继续保存","返回填写"))){Z.value=!0;try{const M=ge(r.value.proxy),S={name:r.value.name,description:r.value.description,accountType:r.value.accountType,groupId:r.value.accountType==="group"?r.value.groupId:void 0,groupIds:r.value.accountType==="group"?r.value.groupIds:void 0,expiresAt:r.value.expiresAt||void 0,proxy:M};if(r.value.accessToken||r.value.refreshToken){const be=((t=r.value.accessToken)==null?void 0:t.trim())||"",O=((ae=r.value.refreshToken)==null?void 0:ae.trim())||"";if(g.account.platform==="claude"){const Te=r.value.refreshToken?6e5:31536e6;S.claudeAiOauth={accessToken:be||"",refreshToken:O||"",expiresAt:Date.now()+Te,scopes:g.account.scopes||[]}}else if(g.account.platform==="gemini"){const Te=r.value.refreshToken?6e5:31536e6;S.geminiOauth={access_token:be||"",refresh_token:O||"",scope:"https://www.googleapis.com/auth/cloud-platform",token_type:"Bearer",expiry_date:Date.now()+Te}}else if(g.account.platform==="openai"){const Te=r.value.refreshToken?6e5:31536e6;S.openaiOauth={idToken:"",accessToken:be||"",refreshToken:O||"",expires_in:Math.floor(Te/1e3)},O&&O!==g.account.refreshToken&&(S.needsImmediateRefresh=!0,S.requireRefreshSuccess=!0)}else g.account.platform==="droid"&&(be&&(S.accessToken=be),O&&(S.refreshToken=O))}if(g.account.platform==="droid"){const be=((ye=r.value.apiKeysInput)==null?void 0:ye.trim())||"",O=r.value.apiKeyUpdateMode||"append";if(O==="delete"){if(!be){T.value.apiKeys="请填写需要删除的 API Key",Z.value=!1;return}const Te=it(be);if(Te.length===0){T.value.apiKeys="请填写需要删除的 API Key",Z.value=!1;return}S.removeApiKeys=Te,S.apiKeyUpdateMode="delete"}else{if(be){const Te=it(be);if(Te.length===0){T.value.apiKeys="请至少填写一个 API Key",Z.value=!1;return}S.apiKeys=Te}else O==="replace"&&(S.apiKeys=[]);(O!=="append"||be)&&(S.apiKeyUpdateMode=O)}f.value&&(S.authenticationMethod="api_key")}if(g.account.platform==="gemini"&&(S.projectId=r.value.projectId||""),g.account.platform==="droid"&&(S.priority=r.value.priority||50,S.endpointType=r.value.endpointType||"anthropic"),g.account.platform==="claude"&&(r.value.useUnifiedClientId&&!r.value.unifiedClientId&&(r.value.unifiedClientId=ut()),S.priority=r.value.priority||50,S.autoStopOnWarning=r.value.autoStopOnWarning||!1,S.useUnifiedUserAgent=r.value.useUnifiedUserAgent||!1,S.useUnifiedClientId=r.value.useUnifiedClientId||!1,S.unifiedClientId=r.value.unifiedClientId||"",S.subscriptionInfo={accountType:r.value.subscriptionType||"claude_max",hasClaudeMax:r.value.subscriptionType==="claude_max",hasClaudePro:r.value.subscriptionType==="claude_pro",manuallySet:!0}),g.account.platform==="openai"&&(S.priority=r.value.priority||50),g.account.platform==="gemini"&&(S.priority=r.value.priority||50),g.account.platform==="claude-console"&&(S.apiUrl=r.value.apiUrl,r.value.apiKey&&(S.apiKey=r.value.apiKey),S.priority=r.value.priority||50,S.supportedModels=Wt()||{},S.userAgent=r.value.userAgent||null,S.rateLimitDuration=r.value.enableRateLimit?r.value.rateLimitDuration||60:0,S.disableAutoProtection=!!r.value.disableAutoProtection,S.dailyQuota=r.value.dailyQuota||0,S.quotaResetTime=r.value.quotaResetTime||"00:00",S.maxConcurrentTasks=r.value.maxConcurrentTasks||0),g.account.platform==="openai-responses"&&(S.baseApi=r.value.baseApi,r.value.apiKey&&(S.apiKey=r.value.apiKey),S.userAgent=r.value.userAgent||"",S.priority=r.value.priority||50,S.dailyQuota=r.value.dailyQuota||0,S.quotaResetTime=r.value.quotaResetTime||"00:00"),g.account.platform==="bedrock"&&((r.value.accessKeyId||r.value.secretAccessKey||r.value.sessionToken)&&(S.awsCredentials={},r.value.accessKeyId&&(S.awsCredentials.accessKeyId=r.value.accessKeyId),r.value.secretAccessKey&&(S.awsCredentials.secretAccessKey=r.value.secretAccessKey),r.value.sessionToken!==void 0&&(S.awsCredentials.sessionToken=r.value.sessionToken||null)),r.value.region&&(S.region=r.value.region),S.defaultModel=r.value.defaultModel||null,S.smallFastModel=r.value.smallFastModel||null,S.priority=r.value.priority||50,S.rateLimitDuration=r.value.enableRateLimit?r.value.rateLimitDuration||60:0),g.account.platform==="azure_openai"&&(S.azureEndpoint=r.value.azureEndpoint,S.apiVersion=r.value.apiVersion||"2024-02-01",S.deploymentName=r.value.deploymentName,S.supportedModels=Array.isArray(r.value.supportedModels)?r.value.supportedModels:[],S.priority=r.value.priority||50,r.value.apiKey&&r.value.apiKey.trim()&&(S.apiKey=r.value.apiKey)),g.account.platform==="gemini-api"&&(S.baseUrl=r.value.baseUrl||"https://generativelanguage.googleapis.com",r.value.apiKey&&r.value.apiKey.trim()&&(S.apiKey=r.value.apiKey),S.priority=r.value.priority||50,S.supportedModels=Array.isArray(r.value.supportedModels)?r.value.supportedModels:[]),g.account.platform==="claude")await U.updateClaudeAccount(g.account.id,S);else if(g.account.platform==="claude-console")await U.updateClaudeConsoleAccount(g.account.id,S);else if(g.account.platform==="openai-responses")await U.updateOpenAIResponsesAccount(g.account.id,S);else if(g.account.platform==="bedrock")await U.updateBedrockAccount(g.account.id,S);else if(g.account.platform==="openai")await U.updateOpenAIAccount(g.account.id,S);else if(g.account.platform==="azure_openai")await U.updateAzureOpenAIAccount(g.account.id,S);else if(g.account.platform==="gemini")await U.updateGeminiAccount(g.account.id,S);else if(g.account.platform==="gemini-api")await U.updateGeminiApiAccount(g.account.id,S);else if(g.account.platform==="droid")await U.updateDroidAccount(g.account.id,S);else throw new Error(`不支持的平台: ${g.account.platform}`);N("success")}catch(M){const S=((se=(i=M.response)==null?void 0:i.data)==null?void 0:se.error)||M.message||"账户更新失败",be=((Pe=(le=M.response)==null?void 0:le.data)==null?void 0:Pe.suggestion)||"",O=((Ke=(ze=M.response)==null?void 0:ze.data)==null?void 0:Ke.errorDetails)||null;let Te=S;be&&(Te+=` ${be}`),O&&O.error_description?Te+=` 详细信息: ${O.error_description}`:O&&O.error&&O.error.message&&(Te+=` 详细信息: ${O.error.message}`),L(Te,"error","",8e3)}finally{Z.value=!1}}};he(()=>r.value.name,()=>{var d;T.value.name&&((d=r.value.name)!=null&&d.trim())&&(T.value.name="")}),he(()=>r.value.accessToken,()=>{var d;T.value.accessToken&&((d=r.value.accessToken)!=null&&d.trim())&&(T.value.accessToken="")}),he(()=>r.value.refreshToken,()=>{var d;T.value.refreshToken&&((d=r.value.refreshToken)!=null&&d.trim())&&(T.value.refreshToken="")}),he(()=>r.value.apiUrl,()=>{var d;T.value.apiUrl&&((d=r.value.apiUrl)!=null&&d.trim())&&(T.value.apiUrl="")}),he(()=>r.value.apiKey,()=>{var d;T.value.apiKey&&((d=r.value.apiKey)!=null&&d.trim())&&(T.value.apiKey="")}),he(()=>r.value.azureEndpoint,()=>{var d;T.value.azureEndpoint&&((d=r.value.azureEndpoint)!=null&&d.trim())&&(T.value.azureEndpoint="")}),he(()=>r.value.deploymentName,()=>{var d;T.value.deploymentName&&((d=r.value.deploymentName)!=null&&d.trim())&&(T.value.deploymentName="")});const Fe=w([]),Mt=w(!1),et=w(!1),gt=ie(()=>{let d=r.value.platform;return r.value.platform==="claude-console"||r.value.platform==="ccr"?d="claude":r.value.platform==="openai-responses"?d="openai":r.value.platform==="gemini-api"&&(d="gemini"),Fe.value.filter(t=>t.platform===d)}),St=async()=>{Mt.value=!0;try{const d=await F.get("/admin/account-groups");Fe.value=d.data||[]}catch{L("加载分组列表失败","error"),Fe.value=[]}finally{Mt.value=!1}},Gt=async()=>{await St(),L("分组列表已刷新","success")},gr=()=>{et.value=!0},Er=async()=>{await St()},$t=async()=>{var t;if(!((t=g.account)!=null&&t.id))return;const d=[typeof U.fetchDroidAccounts=="function"?U.fetchDroidAccounts:null,typeof U.fetchAllAccounts=="function"?U.fetchAllAccounts:null].filter(Boolean);for(const ae of d)try{await ae();return}catch(ye){console.error("刷新账户列表失败:",ye)}};he(()=>r.value.platform,d=>{d==="claude-console"||d==="ccr"||d==="bedrock"||d==="openai-responses"?r.value.addType="manual":d==="claude"||d==="gemini"||d==="openai"?r.value.addType="oauth":(d==="gemini-api"||d==="azure_openai")&&(r.value.addType="apikey"),r.value.accountType==="group"&&(r.value.groupId="",r.value.groupIds=[])}),he(()=>r.value.groupIds,d=>{r.value.accountType==="group"&&(d&&d.length>0?r.value.groupId=d[0]:r.value.groupId="")},{deep:!0}),he(()=>r.value.addType,(d,t)=>{d!==t&&(d==="apikey"?(r.value.accessToken="",r.value.refreshToken="",T.value.accessToken="",T.value.refreshToken="",r.value.authenticationMethod="api_key",r.value.apiKeyUpdateMode="append"):t==="apikey"&&(r.value.apiKeysInput="",r.value.apiKeyUpdateMode="append",T.value.apiKeys="",G.value||(r.value.authenticationMethod="")))}),he(()=>r.value.apiKeyUpdateMode,(d,t)=>{d!==t&&T.value.apiKeys&&(T.value.apiKeys="")}),he(()=>r.value.apiKeysInput,d=>{if(!T.value.apiKeys)return;const t=it(d),ae=r.value.apiKeyUpdateMode;if(ae==="append"&&t.length>0){T.value.apiKeys="";return}if(ae==="replace"){(t.length>0||!d||d.trim()==="")&&(T.value.apiKeys="");return}ae==="delete"&&t.length>0&&(T.value.apiKeys="")}),he(z,d=>{if(!d||typeof d!="string")return;const t=d.trim();if(!t)return;if(t.startsWith("http://")||t.startsWith("https://"))if(t.startsWith("http://localhost:45462"))try{const i=new URL(t).searchParams.get("code");i?(z.value=i,L("成功提取授权码!","success")):L("URL 中未找到授权码参数,请检查链接是否正确","error")}catch{L("链接格式错误,请检查是否为完整的 URL","error")}else L("请粘贴以 http://localhost:45462 开头的链接","error")}),he(()=>r.value.platform,d=>{G.value||N("platform-changed",d)}),he(()=>r.value.accountType,d=>{d==="group"&&Fe.value.length===0&&St()}),he(()=>r.value.groupId,d=>{d==="__new__"&&(r.value.groupId="",et.value=!0)});const Je=()=>{De.value.push({from:"",to:""})},yr=d=>{De.value.splice(d,1)},Ge=(d,t)=>{if(De.value.some(ye=>ye.from===d)){L(`模型 ${d} 的映射已存在`,"info");return}De.value.push({from:d,to:t}),L(`已添加映射: ${d} → ${t}`,"success")},Wt=()=>{const d={};return W.value==="whitelist"?ke.value.forEach(t=>{d[t]=t}):De.value.forEach(t=>{t.from&&t.to&&(d[t.from]=t.to)}),Object.keys(d).length>0?d:null};he(()=>g.account,d=>{if(d){ot();const t=ce(d.proxy),ae=typeof d.authenticationMethod=="string"?d.authenticationMethod.trim().toLowerCase():"",ye=ae==="api_key"?"apikey":ae==="manual"?"manual":"oauth";let i="";d.accountType==="group"&&(i=d.groupId||d.groupInfo&&d.groupInfo.id||"");let se="claude_max";if(d.subscriptionInfo){const le=typeof d.subscriptionInfo=="string"?JSON.parse(d.subscriptionInfo):d.subscriptionInfo;le.accountType?se=le.accountType:le.hasClaudeMax?se="claude_max":le.hasClaudePro?se="claude_pro":se="claude_free"}r.value={platform:d.platform,addType:ye,name:d.name,description:d.description||"",accountType:d.accountType||"shared",subscriptionType:se,autoStopOnWarning:d.autoStopOnWarning||!1,useUnifiedUserAgent:d.useUnifiedUserAgent||!1,useUnifiedClientId:d.useUnifiedClientId||!1,unifiedClientId:d.unifiedClientId||"",groupId:i,groupIds:[],projectId:d.projectId||"",accessToken:"",refreshToken:"",authenticationMethod:d.authenticationMethod||"",apiKeysInput:"",apiKeyUpdateMode:"append",proxy:t,apiUrl:d.apiUrl||"",apiKey:"",priority:d.priority||50,supportedModels:(()=>{const le=d.supportedModels;return le?typeof le=="object"&&!Array.isArray(le)?Object.keys(le):Array.isArray(le)?le:[]:[]})(),userAgent:d.userAgent||"",enableRateLimit:!!(d.rateLimitDuration&&d.rateLimitDuration>0),rateLimitDuration:d.rateLimitDuration||60,accessKeyId:"",secretAccessKey:"",region:d.region||"",sessionToken:"",defaultModel:d.defaultModel||"",smallFastModel:d.smallFastModel||"",azureEndpoint:d.azureEndpoint||"",apiVersion:d.apiVersion||"",deploymentName:d.deploymentName||"",baseApi:d.baseApi||"",baseUrl:d.baseUrl||"https://generativelanguage.googleapis.com",dailyQuota:d.dailyQuota||0,dailyUsage:d.dailyUsage||0,quotaResetTime:d.quotaResetTime||"00:00",maxConcurrentTasks:d.maxConcurrentTasks||0,disableAutoProtection:d.disableAutoProtection===!0},d.platform==="claude-console"&&p(),d.accountType==="group"&&St().then(async()=>{const le=[];if(d.groupInfos&&Array.isArray(d.groupInfos)&&d.groupInfos.length>0)d.groupInfos.forEach(Pe=>{Pe&&Pe.id&&le.push(Pe.id)}),le.length>0&&(r.value.groupId=le[0]);else if(d.groupInfo&&d.groupInfo.id)r.value.groupId=d.groupInfo.id,le.push(d.groupInfo.id);else if(d.groupId)r.value.groupId=d.groupId,le.push(d.groupId);else if(d.groupIds&&Array.isArray(d.groupIds)&&d.groupIds.length>0)r.value.groupId=d.groupIds[0],le.push(...d.groupIds);else{const Pe=Fe.value.map(async ze=>{try{((await F.get(`/admin/account-groups/${ze.id}/members`)).data||[]).some(S=>S.id===d.id)&&(le.push(ze.id),r.value.groupId||(r.value.groupId=ze.id))}catch{}});await Promise.all(Pe)}r.value.groupIds=le})}},{immediate:!0});const tt=async()=>{try{const d=await F.get("/admin/claude-code-version");d.success&&d.userAgent?I.value=d.userAgent:I.value=""}catch{I.value=""}},mr=async()=>{Ue.value=!0;try{(await F.post("/admin/claude-code-version/clear")).success?(I.value="",L("统一User-Agent缓存已清除","success")):L("清除缓存失败","error")}catch(d){L("清除缓存失败:"+(d.message||"未知错误"),"error")}finally{Ue.value=!1}},ut=()=>{const d=new Uint8Array(32);return crypto.getRandomValues(d),Array.from(d,t=>t.toString(16).padStart(2,"0")).join("")},At=()=>{r.value.unifiedClientId=ut(),L("已生成新的客户端标识","success")},cr=()=>{r.value.useUnifiedClientId&&(r.value.useUnifiedUserAgent=!0,r.value.unifiedClientId||(r.value.unifiedClientId=ut()))},Dt=ie(()=>{const d=new Date;return d.setMinutes(d.getMinutes()+1),d.toISOString().slice(0,16)}),Bt=()=>{if(!r.value.expireDuration){r.value.expiresAt=null;return}if(r.value.expireDuration==="custom")return;const d=new Date,ae=r.value.expireDuration.match(/(\d+)([d])/);if(ae){const[,ye,i]=ae,se=parseInt(ye);i==="d"&&d.setDate(d.getDate()+se),r.value.expiresAt=d.toISOString()}},xr=()=>{r.value.customExpireDate&&(r.value.expiresAt=new Date(r.value.customExpireDate).toISOString())},Qt=d=>d?new Date(d).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}):"";return ur(()=>{var d;re.value=H(r.value.platform),G.value&&ot(),tt(),G.value&&((d=g.account)==null?void 0:d.platform)==="claude-console"&&p()}),he(()=>r.value.platform,d=>{d==="claude"&&tt()}),(d,t)=>{var ae,ye;return o(),Ye(jt,{to:"body"},[fe.value?(o(),n("div",sn,[e("div",ln,[e("div",on,[e("div",nn,[t[162]||(t[162]=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",dn,u(G.value?"编辑账户":"添加账户"),1)]),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600",onClick:t[0]||(t[0]=i=>d.$emit("close"))},t[163]||(t[163]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),!G.value&&(r.value.addType==="oauth"||r.value.addType==="setup-token")?(o(),n("div",un,[e("div",pn,[e("div",gn,[e("div",{class:C(["flex h-6 w-6 items-center justify-center rounded-full text-xs font-semibold sm:h-8 sm:w-8 sm:text-sm",pe.value>=1?"bg-blue-500 text-white":"bg-gray-200 text-gray-500"])}," 1 ",2),t[164]||(t[164]=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[166]||(t[166]=e("div",{class:"h-0.5 w-4 bg-gray-300 sm:w-8"},null,-1)),e("div",yn,[e("div",{class:C(["flex h-6 w-6 items-center justify-center rounded-full text-xs font-semibold sm:h-8 sm:w-8 sm:text-sm",pe.value>=2?"bg-blue-500 text-white":"bg-gray-200 text-gray-500"])}," 2 ",2),t[165]||(t[165]=e("span",{class:"ml-1.5 text-xs font-medium text-gray-700 dark:text-gray-300 sm:ml-2 sm:text-sm"},"授权认证",-1))])])])):m("",!0),pe.value===1&&!G.value?(o(),n("div",mn,[e("div",cn,[G.value?m("",!0):(o(),n("div",xn,[t[206]||(t[206]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择平台",-1)),e("div",fn,[e("div",bn,[e("div",{class:C(["group relative cursor-pointer overflow-hidden rounded-lg border-2 transition-all duration-200",[re.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]=i=>D("claude"))},[e("div",vn,[e("div",kn,[t[168]||(t[168]=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)),re.value==="claude"?(o(),n("div",hn,t[167]||(t[167]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):m("",!0)]),t[169]||(t[169]=e("h4",{class:"mt-2 text-sm font-semibold text-gray-900 dark:text-gray-100"}," Claude ",-1)),t[170]||(t[170]=e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"Anthropic",-1))])],2),e("div",{class:C(["group relative cursor-pointer overflow-hidden rounded-lg border-2 transition-all duration-200",[re.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]=i=>D("openai"))},[e("div",wn,[e("div",$n,[t[172]||(t[172]=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)),re.value==="openai"?(o(),n("div",An,t[171]||(t[171]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):m("",!0)]),t[173]||(t[173]=e("h4",{class:"mt-2 text-sm font-semibold text-gray-900 dark:text-gray-100"}," OpenAI ",-1)),t[174]||(t[174]=e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"GPT 系列",-1))])],2),e("div",{class:C(["group relative cursor-pointer overflow-hidden rounded-lg border-2 transition-all duration-200",[re.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]=i=>D("gemini"))},[e("div",Cn,[e("div",Un,[t[176]||(t[176]=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)),re.value==="gemini"?(o(),n("div",In,t[175]||(t[175]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):m("",!0)]),t[177]||(t[177]=e("h4",{class:"mt-2 text-sm font-semibold text-gray-900 dark:text-gray-100"}," Gemini ",-1)),t[178]||(t[178]=e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"Google AI",-1))])],2),e("div",{class:C(["group relative cursor-pointer overflow-hidden rounded-lg border-2 transition-all duration-200",[re.value==="droid"?"border-rose-500 bg-gradient-to-br from-rose-50 to-orange-50 shadow-md dark:from-rose-900/20 dark:to-orange-900/20":"border-gray-200 bg-white hover:border-rose-300 hover:shadow dark:border-gray-700 dark:bg-gray-800 dark:hover:border-rose-600"]]),onClick:t[4]||(t[4]=i=>D("droid"))},[e("div",Tn,[e("div",_n,[t[180]||(t[180]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-md bg-gradient-to-br from-rose-500 to-orange-500"},[e("i",{class:"fas fa-robot text-sm text-white"})],-1)),re.value==="droid"?(o(),n("div",Kn,t[179]||(t[179]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):m("",!0)]),t[181]||(t[181]=e("h4",{class:"mt-2 text-sm font-semibold text-gray-900 dark:text-gray-100"}," Droid ",-1)),t[182]||(t[182]=e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},"Claude Droid",-1))])],2)]),re.value?(o(),n("div",Mn,[t[205]||(t[205]=e("p",{class:"mb-2 text-xs font-medium text-gray-700 dark:text-gray-300"}," 选择具体平台类型: ",-1)),e("div",Sn,[re.value==="claude"?(o(),n(Ce,{key:0},[e("label",{class:C(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[r.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"]])},[v(e("input",{"onUpdate:modelValue":t[5]||(t[5]=i=>r.value.platform=i),class:"sr-only",type:"radio",value:"claude"},null,512),[[_e,r.value.platform]]),t[184]||(t[184]=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)),r.value.platform==="claude"?(o(),n("div",Dn,t[183]||(t[183]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):m("",!0)],2),e("label",{class:C(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[r.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"]])},[v(e("input",{"onUpdate:modelValue":t[6]||(t[6]=i=>r.value.platform=i),class:"sr-only",type:"radio",value:"claude-console"},null,512),[[_e,r.value.platform]]),t[186]||(t[186]=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)),r.value.platform==="claude-console"?(o(),n("div",Pn,t[185]||(t[185]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):m("",!0)],2),e("label",{class:C(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[r.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"]])},[v(e("input",{"onUpdate:modelValue":t[7]||(t[7]=i=>r.value.platform=i),class:"sr-only",type:"radio",value:"bedrock"},null,512),[[_e,r.value.platform]]),t[188]||(t[188]=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)),r.value.platform==="bedrock"?(o(),n("div",Ln,t[187]||(t[187]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):m("",!0)],2),e("label",{class:C(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[r.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"]])},[v(e("input",{"onUpdate:modelValue":t[8]||(t[8]=i=>r.value.platform=i),class:"sr-only",type:"radio",value:"ccr"},null,512),[[_e,r.value.platform]]),t[190]||(t[190]=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)),r.value.platform==="ccr"?(o(),n("div",zn,t[189]||(t[189]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):m("",!0)],2)],64)):m("",!0),re.value==="openai"?(o(),n(Ce,{key:1},[e("label",{class:C(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[r.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"]])},[v(e("input",{"onUpdate:modelValue":t[9]||(t[9]=i=>r.value.platform=i),class:"sr-only",type:"radio",value:"openai"},null,512),[[_e,r.value.platform]]),t[192]||(t[192]=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)),r.value.platform==="openai"?(o(),n("div",jn,t[191]||(t[191]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):m("",!0)],2),e("label",{class:C(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[r.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"]])},[v(e("input",{"onUpdate:modelValue":t[10]||(t[10]=i=>r.value.platform=i),class:"sr-only",type:"radio",value:"openai-responses"},null,512),[[_e,r.value.platform]]),t[194]||(t[194]=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)),r.value.platform==="openai-responses"?(o(),n("div",Rn,t[193]||(t[193]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):m("",!0)],2),e("label",{class:C(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[r.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"]])},[v(e("input",{"onUpdate:modelValue":t[11]||(t[11]=i=>r.value.platform=i),class:"sr-only",type:"radio",value:"azure_openai"},null,512),[[_e,r.value.platform]]),t[196]||(t[196]=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)),r.value.platform==="azure_openai"?(o(),n("div",Vn,t[195]||(t[195]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):m("",!0)],2)],64)):m("",!0),re.value==="gemini"?(o(),n(Ce,{key:2},[e("label",{class:C(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[r.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"]])},[v(e("input",{"onUpdate:modelValue":t[12]||(t[12]=i=>r.value.platform=i),class:"sr-only",type:"radio",value:"gemini"},null,512),[[_e,r.value.platform]]),t[198]||(t[198]=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)),r.value.platform==="gemini"?(o(),n("div",On,t[197]||(t[197]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):m("",!0)],2),e("label",{class:C(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[r.value.platform==="gemini-antigravity"?"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"]])},[v(e("input",{"onUpdate:modelValue":t[13]||(t[13]=i=>r.value.platform=i),class:"sr-only",type:"radio",value:"gemini-antigravity"},null,512),[[_e,r.value.platform]]),t[200]||(t[200]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fas fa-rocket 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"},"Antigravity"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"OAuth")])],-1)),r.value.platform==="gemini-antigravity"?(o(),n("div",En,t[199]||(t[199]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):m("",!0)],2),e("label",{class:C(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[r.value.platform==="gemini-api"?"border-amber-500 bg-amber-50 dark:border-amber-400 dark:bg-amber-900/30":"border-gray-300 bg-white hover:border-amber-400 hover:bg-amber-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-amber-500 dark:hover:bg-amber-900/20"]])},[v(e("input",{"onUpdate:modelValue":t[14]||(t[14]=i=>r.value.platform=i),class:"sr-only",type:"radio",value:"gemini-api"},null,512),[[_e,r.value.platform]]),t[202]||(t[202]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fas fa-key text-sm text-amber-600 dark:text-amber-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"Gemini API"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"API Key")])],-1)),r.value.platform==="gemini-api"?(o(),n("div",Nn,t[201]||(t[201]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):m("",!0)],2)],64)):m("",!0),re.value==="droid"?(o(),n("label",{key:3,class:C(["group relative flex cursor-pointer items-center rounded-md border p-2 transition-all",[r.value.platform==="droid"?"border-rose-500 bg-rose-50 dark:border-rose-400 dark:bg-rose-900/30":"border-gray-300 bg-white hover:border-rose-400 hover:bg-rose-50/50 dark:border-gray-600 dark:bg-gray-700 dark:hover:border-rose-500 dark:hover:bg-rose-900/20"]])},[v(e("input",{"onUpdate:modelValue":t[15]||(t[15]=i=>r.value.platform=i),class:"sr-only",type:"radio",value:"droid"},null,512),[[_e,r.value.platform]]),t[204]||(t[204]=e("div",{class:"flex items-center gap-2"},[e("i",{class:"fas fa-robot text-sm text-rose-600 dark:text-rose-400"}),e("div",null,[e("span",{class:"block text-xs font-medium text-gray-900 dark:text-gray-100"},"Droid 专属"),e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"官方")])],-1)),r.value.platform==="droid"?(o(),n("div",Fn,t[203]||(t[203]=[e("i",{class:"fas fa-check text-xs text-white"},null,-1)]))):m("",!0)],2)):m("",!0)])])):m("",!0)])])),!G.value&&r.value.platform!=="claude-console"&&r.value.platform!=="ccr"&&r.value.platform!=="bedrock"&&r.value.platform!=="azure_openai"&&r.value.platform!=="openai-responses"&&r.value.platform!=="gemini-api"?(o(),n("div",qn,[t[211]||(t[211]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"添加方式",-1)),e("div",Gn,[e("label",Wn,[v(e("input",{"onUpdate:modelValue":t[16]||(t[16]=i=>r.value.addType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"oauth"},null,512),[[_e,r.value.addType]]),e("span",Bn,[t[207]||(t[207]=c(" OAuth 授权",-1)),r.value.platform==="claude"||r.value.platform==="openai"?(o(),n("span",Qn," (用量可视化)")):m("",!0)])]),r.value.platform==="claude"?(o(),n("label",Hn,[v(e("input",{"onUpdate:modelValue":t[17]||(t[17]=i=>r.value.addType=i),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),[[_e,r.value.addType]]),t[208]||(t[208]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Setup Token (效期长)",-1))])):m("",!0),e("label",Jn,[v(e("input",{"onUpdate:modelValue":t[18]||(t[18]=i=>r.value.addType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"manual"},null,512),[[_e,r.value.addType]]),t[209]||(t[209]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"手动输入 Access Token",-1))]),r.value.platform==="droid"?(o(),n("label",Yn,[v(e("input",{"onUpdate:modelValue":t[19]||(t[19]=i=>r.value.addType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"apikey"},null,512),[[_e,r.value.addType]]),t[210]||(t[210]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"使用 API Key (支持多个)",-1))])):m("",!0)])])):m("",!0),e("div",null,[t[212]||(t[212]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称",-1)),v(e("input",{"onUpdate:modelValue":t[20]||(t[20]=i=>r.value.name=i),class:C(["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":T.value.name}]),placeholder:"为账户设置一个易识别的名称",required:"",type:"text"},null,2),[[P,r.value.name]]),T.value.name?(o(),n("p",Zn,u(T.value.name),1)):m("",!0)]),e("div",null,[t[213]||(t[213]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),v(e("textarea",{"onUpdate:modelValue":t[21]||(t[21]=i=>r.value.description=i),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),[[P,r.value.description]])]),e("div",null,[t[217]||(t[217]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户类型",-1)),e("div",Xn,[e("label",ei,[v(e("input",{"onUpdate:modelValue":t[22]||(t[22]=i=>r.value.accountType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"shared"},null,512),[[_e,r.value.accountType]]),t[214]||(t[214]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"共享账户",-1))]),e("label",ti,[v(e("input",{"onUpdate:modelValue":t[23]||(t[23]=i=>r.value.accountType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"dedicated"},null,512),[[_e,r.value.accountType]]),t[215]||(t[215]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"专属账户",-1))]),e("label",ri,[v(e("input",{"onUpdate:modelValue":t[24]||(t[24]=i=>r.value.accountType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"group"},null,512),[[_e,r.value.accountType]]),t[216]||(t[216]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"分组调度",-1))])]),t[218]||(t[218]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 共享账户:供所有API Key使用;专属账户:仅供特定API Key使用;分组调度:加入分组供分组内调度 ",-1))]),!G.value&&r.value.platform!=="gemini-api"?(o(),n("div",ai,[t[222]||(t[222]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"到期时间 (可选)",-1)),e("div",si,[v(e("select",{"onUpdate:modelValue":t[25]||(t[25]=i=>r.value.expireDuration=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",onChange:Bt},t[219]||(t[219]=[e("option",{value:""},"永不过期",-1),e("option",{value:"30d"},"30 天",-1),e("option",{value:"90d"},"90 天",-1),e("option",{value:"180d"},"180 天",-1),e("option",{value:"365d"},"365 天",-1),e("option",{value:"custom"},"自定义日期",-1)]),544),[[Vr,r.value.expireDuration]]),r.value.expireDuration==="custom"?(o(),n("div",li,[v(e("input",{"onUpdate:modelValue":t[26]||(t[26]=i=>r.value.customExpireDate=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:Dt.value,type:"datetime-local",onChange:xr},null,40,oi),[[P,r.value.customExpireDate]])])):m("",!0),r.value.expiresAt?(o(),n("p",ni,[t[220]||(t[220]=e("i",{class:"fas fa-calendar-alt mr-1"},null,-1)),c(" 将于 "+u(Qt(r.value.expiresAt))+" 过期 ",1)])):(o(),n("p",ii,t[221]||(t[221]=[e("i",{class:"fas fa-infinity mr-1"},null,-1),c(" 账户永不过期 ",-1)])))]),t[223]||(t[223]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置 Claude Max/Pro 订阅的到期时间,到期后将停止调度此账户 ",-1))])):m("",!0),r.value.accountType==="group"?(o(),n("div",di,[t[225]||(t[225]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择分组 *",-1)),e("div",ui,[e("div",pi,[e("div",gi,[gt.value.length===0?(o(),n("div",yi," 暂无可用分组 ")):m("",!0),(o(!0),n(Ce,null,Be(gt.value,i=>(o(),n("label",{key:i.id,class:"flex cursor-pointer items-center gap-2 rounded-md p-2 hover:bg-gray-50 dark:hover:bg-gray-600"},[v(e("input",{"onUpdate:modelValue":t[27]||(t[27]=se=>r.value.groupIds=se),class:"rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",value:i.id},null,8,mi),[[Oe,r.value.groupIds]]),e("span",ci,u(i.name)+" ("+u(i.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:gr},t[224]||(t[224]=[e("i",{class:"fas fa-plus"},null,-1),c(" 新建分组 ",-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:Gt},[e("i",{class:C(["fas fa-sync-alt",{"animate-spin":Mt.value}])},null,2)])])])):m("",!0),r.value.platform==="gemini"||r.value.platform==="gemini-antigravity"?(o(),n("div",xi,[t[226]||(t[226]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"项目 ID (可选)",-1)),v(e("input",{"onUpdate:modelValue":t[28]||(t[28]=i=>r.value.projectId=i),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),[[P,r.value.projectId]]),t[227]||(t[227]=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,[c(" 访问 "),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,[c(" 复制"),e("span",{class:"font-semibold text-red-600"},"项目 ID(Project ID)"),c(",通常是字符串格式 ")]),e("li",{class:"text-red-600"}," ⚠️ 注意:要复制项目 ID(Project ID),不要复制项目编号(Project Number)! ")])]),e("p",{class:"mt-2"},[e("strong",null,"提示:"),c("如果您的账号是普通个人账号(未绑定 Google Cloud),请留空此字段。 ")])])])],-1))])):m("",!0),r.value.platform==="bedrock"&&!G.value?(o(),n("div",fi,[e("div",null,[t[228]||(t[228]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 访问密钥 ID *",-1)),v(e("input",{"onUpdate:modelValue":t[29]||(t[29]=i=>r.value.accessKeyId=i),class:C(["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":T.value.accessKeyId}]),placeholder:"请输入 AWS Access Key ID",required:"",type:"text"},null,2),[[P,r.value.accessKeyId]]),T.value.accessKeyId?(o(),n("p",bi,u(T.value.accessKeyId),1)):m("",!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"},"AWS 秘密访问密钥 *",-1)),v(e("input",{"onUpdate:modelValue":t[30]||(t[30]=i=>r.value.secretAccessKey=i),class:C(["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":T.value.secretAccessKey}]),placeholder:"请输入 AWS Secret Access Key",required:"",type:"password"},null,2),[[P,r.value.secretAccessKey]]),T.value.secretAccessKey?(o(),n("p",vi,u(T.value.secretAccessKey),1)):m("",!0)]),e("div",null,[t[230]||(t[230]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 区域 *",-1)),v(e("input",{"onUpdate:modelValue":t[31]||(t[31]=i=>r.value.region=i),class:C(["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":T.value.region}]),placeholder:"例如:us-east-1",required:"",type:"text"},null,2),[[P,r.value.region]]),T.value.region?(o(),n("p",ki,u(T.value.region),1)):m("",!0),t[231]||(t[231]=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[232]||(t[232]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"会话令牌 (可选)",-1)),v(e("input",{"onUpdate:modelValue":t[32]||(t[32]=i=>r.value.sessionToken=i),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),[[P,r.value.sessionToken]]),t[233]||(t[233]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 仅在使用临时 AWS 凭证时需要填写 ",-1))]),e("div",null,[t[234]||(t[234]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"默认主模型 (可选)",-1)),v(e("input",{"onUpdate:modelValue":t[33]||(t[33]=i=>r.value.defaultModel=i),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),[[P,r.value.defaultModel]]),t[235]||(t[235]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空将使用系统默认模型。支持 inference profile ID 或 ARN ",-1)),t[236]||(t[236]=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[237]||(t[237]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"小快速模型 (可选)",-1)),v(e("input",{"onUpdate:modelValue":t[34]||(t[34]=i=>r.value.smallFastModel=i),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),[[P,r.value.smallFastModel]]),t[238]||(t[238]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 用于快速响应的轻量级模型,留空将使用系统默认 ",-1))])])):m("",!0),r.value.platform==="azure_openai"&&!G.value?(o(),n("div",hi,[e("div",null,[t[239]||(t[239]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Azure Endpoint *",-1)),v(e("input",{"onUpdate:modelValue":t[35]||(t[35]=i=>r.value.azureEndpoint=i),class:C(["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":T.value.azureEndpoint}]),placeholder:"https://your-resource.openai.azure.com",required:"",type:"url"},null,2),[[P,r.value.azureEndpoint]]),T.value.azureEndpoint?(o(),n("p",wi,u(T.value.azureEndpoint),1)):m("",!0),t[240]||(t[240]=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[241]||(t[241]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 版本",-1)),v(e("input",{"onUpdate:modelValue":t[36]||(t[36]=i=>r.value.apiVersion=i),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),[[P,r.value.apiVersion]]),t[242]||(t[242]=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[243]||(t[243]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"部署名称 *",-1)),v(e("input",{"onUpdate:modelValue":t[37]||(t[37]=i=>r.value.deploymentName=i),class:C(["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":T.value.deploymentName}]),placeholder:"gpt-4",required:"",type:"text"},null,2),[[P,r.value.deploymentName]]),T.value.deploymentName?(o(),n("p",$i,u(T.value.deploymentName),1)):m("",!0),t[244]||(t[244]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 在 Azure OpenAI Studio 中创建的部署名称 ",-1))]),e("div",null,[t[245]||(t[245]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key *",-1)),v(e("input",{"onUpdate:modelValue":t[38]||(t[38]=i=>r.value.apiKey=i),class:C(["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":T.value.apiKey}]),placeholder:"请输入 Azure OpenAI API Key",required:"",type:"password"},null,2),[[P,r.value.apiKey]]),T.value.apiKey?(o(),n("p",Ai,u(T.value.apiKey),1)):m("",!0),t[246]||(t[246]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 从 Azure 门户获取的 API 密钥 ",-1))]),e("div",null,[t[247]||(t[247]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"支持的模型",-1)),e("div",Ci,[(o(),n(Ce,null,Be(["gpt-4","gpt-4-turbo","gpt-4o","gpt-4o-mini","gpt-5","gpt-5-mini","gpt-35-turbo","gpt-35-turbo-16k","codex-mini"],i=>e("label",{key:i,class:"flex cursor-pointer items-center"},[v(e("input",{"onUpdate:modelValue":t[39]||(t[39]=se=>r.value.supportedModels=se),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",value:i},null,8,Ui),[[Oe,r.value.supportedModels]]),e("span",Ii,u(i),1)])),64))]),t[248]||(t[248]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 选择此部署支持的模型类型 ",-1))])])):m("",!0),r.value.platform==="bedrock"&&!G.value?(o(),n("div",Ti,[e("div",null,[t[253]||(t[253]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",_i,[e("label",Ki,[v(e("input",{"onUpdate:modelValue":t[40]||(t[40]=i=>r.value.enableRateLimit=i),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),[[Oe,r.value.enableRateLimit]]),t[249]||(t[249]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制",-1))]),t[250]||(t[250]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),r.value.enableRateLimit?(o(),n("div",Mi,[t[251]||(t[251]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),v(e("input",{"onUpdate:modelValue":t[41]||(t[41]=i=>r.value.rateLimitDuration=i),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),[[P,r.value.rateLimitDuration,void 0,{number:!0}]]),t[252]||(t[252]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):m("",!0)])])):m("",!0),(r.value.platform==="claude-console"||r.value.platform==="ccr")&&!G.value?(o(),n("div",Si,[e("div",null,[t[254]||(t[254]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API URL *",-1)),v(e("input",{"onUpdate:modelValue":t[42]||(t[42]=i=>r.value.apiUrl=i),class:C(["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":T.value.apiUrl}]),placeholder:"例如:https://api.example.com",required:"",type:"text"},null,2),[[P,r.value.apiUrl]]),T.value.apiUrl?(o(),n("p",Di,u(T.value.apiUrl),1)):m("",!0)]),e("div",null,[t[255]||(t[255]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key *",-1)),v(e("input",{"onUpdate:modelValue":t[43]||(t[43]=i=>r.value.apiKey=i),class:C(["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":T.value.apiKey}]),placeholder:"请输入API Key",required:"",type:"password"},null,2),[[P,r.value.apiKey]]),T.value.apiKey?(o(),n("p",Pi,u(T.value.apiKey),1)):m("",!0)]),e("div",Li,[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)),v(e("input",{"onUpdate:modelValue":t[44]||(t[44]=i=>r.value.dailyQuota=i),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),[[P,r.value.dailyQuota,void 0,{number:!0}]]),t[257]||(t[257]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 设置每日使用额度,0 表示不限制 ",-1))]),e("div",null,[t[258]||(t[258]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 额度重置时间 ",-1)),v(e("input",{"onUpdate:modelValue":t[45]||(t[45]=i=>r.value.quotaResetTime=i),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),[[P,r.value.quotaResetTime]]),t[259]||(t[259]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 每日自动重置额度的时间 ",-1))])]),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)),v(e("input",{"onUpdate:modelValue":t[46]||(t[46]=i=>r.value.maxConcurrentTasks=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:"0",placeholder:"0 表示不限制",type:"number"},null,512),[[P,r.value.maxConcurrentTasks,void 0,{number:!0}]]),t[261]||(t[261]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 限制该账户的并发请求数量,0 表示不限制 ",-1))]),e("div",null,[t[269]||(t[269]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"模型限制 (可选)",-1)),e("div",zi,[e("button",{class:C(["flex-1 rounded-lg px-4 py-2 text-sm font-medium transition-all",W.value==="whitelist"?"bg-blue-500 text-white shadow-md":"border border-gray-300 text-gray-600 hover:border-blue-300 dark:border-gray-600 dark:text-gray-400 dark:hover:border-blue-500"]),type:"button",onClick:t[47]||(t[47]=i=>W.value="whitelist")},t[262]||(t[262]=[e("i",{class:"fas fa-check-circle mr-2"},null,-1),c(" 模型白名单 ",-1)]),2),e("button",{class:C(["flex-1 rounded-lg px-4 py-2 text-sm font-medium transition-all",W.value==="mapping"?"bg-purple-500 text-white shadow-md":"border border-gray-300 text-gray-600 hover:border-purple-300 dark:border-gray-600 dark:text-gray-400 dark:hover:border-purple-500"]),type:"button",onClick:t[48]||(t[48]=i=>W.value="mapping")},t[263]||(t[263]=[e("i",{class:"fas fa-random mr-2"},null,-1),c(" 模型映射 ",-1)]),2)]),W.value==="whitelist"?(o(),n("div",ji,[t[264]||(t[264]=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"}),c(" 选择允许使用此账户的模型。留空表示支持所有模型。 ")])],-1)),e("div",Ri,[(o(),n(Ce,null,Be(qe,i=>e("label",{key:i.value,class:C(["flex cursor-pointer items-center rounded-lg border p-3 transition-all hover:bg-gray-50 dark:border-gray-600 dark:hover:bg-gray-700",ke.value.includes(i.value)?"border-blue-500 bg-blue-50 dark:border-blue-400 dark:bg-blue-900/30":"border-gray-300"])},[v(e("input",{"onUpdate:modelValue":t[49]||(t[49]=se=>ke.value=se),class:"mr-2 text-blue-600 focus:ring-blue-500",type:"checkbox",value:i.value},null,8,Vi),[[Oe,ke.value]]),e("span",Oi,u(i.label),1)],2)),64))]),e("p",Ei,[c(" 已选择 "+u(ke.value.length)+" 个模型 ",1),ke.value.length===0?(o(),n("span",Ni,"(支持所有模型)")):m("",!0)])])):(o(),n("div",Fi,[t[268]||(t[268]=e("div",{class:"mb-3 rounded-lg bg-purple-50 p-3 dark:bg-purple-900/30"},[e("p",{class:"text-xs text-purple-700 dark:text-purple-400"},[e("i",{class:"fas fa-info-circle mr-1"}),c(" 配置模型映射关系。左侧是客户端请求的模型,右侧是实际发送给API的模型。 ")])],-1)),e("div",qi,[(o(!0),n(Ce,null,Be(De.value,(i,se)=>(o(),n("div",{key:se,class:"flex items-center gap-2"},[v(e("input",{"onUpdate:modelValue":le=>i.from=le,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,Gi),[[P,i.from]]),t[266]||(t[266]=e("i",{class:"fas fa-arrow-right text-gray-400 dark:text-gray-500"},null,-1)),v(e("input",{"onUpdate:modelValue":le=>i.to=le,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,Wi),[[P,i.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:le=>yr(se)},t[265]||(t[265]=[e("i",{class:"fas fa-trash"},null,-1)]),8,Bi)]))),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:Je},t[267]||(t[267]=[e("i",{class:"fas fa-plus mr-2"},null,-1),c(" 添加模型映射 ",-1)])),e("div",Qi,[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[50]||(t[50]=i=>Ge("claude-opus-4-5-20251101","claude-opus-4-5-20251101"))}," + Opus 4.5 "),e("button",{class:"rounded-lg bg-indigo-100 px-3 py-1 text-xs text-indigo-700 transition-colors hover:bg-indigo-200 dark:bg-indigo-900/30 dark:text-indigo-400 dark:hover:bg-indigo-900/50",type:"button",onClick:t[51]||(t[51]=i=>Ge("claude-sonnet-4-5-20250929","claude-sonnet-4-5-20250929"))}," + Sonnet 4.5 "),e("button",{class:"rounded-lg bg-emerald-100 px-3 py-1 text-xs text-emerald-700 transition-colors hover:bg-emerald-200 dark:bg-emerald-900/30 dark:text-emerald-400 dark:hover:bg-emerald-900/50",type:"button",onClick:t[52]||(t[52]=i=>Ge("claude-haiku-4-5-20251001","claude-haiku-4-5-20251001"))}," + Haiku 4.5 "),e("button",{class:"rounded-lg bg-cyan-100 px-3 py-1 text-xs text-cyan-700 transition-colors hover:bg-cyan-200 dark:bg-cyan-900/30 dark:text-cyan-400 dark:hover:bg-cyan-900/50",type:"button",onClick:t[53]||(t[53]=i=>Ge("deepseek-chat","deepseek-chat"))}," + DeepSeek "),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[54]||(t[54]=i=>Ge("Qwen","Qwen"))}," + Qwen "),e("button",{class:"rounded-lg bg-pink-100 px-3 py-1 text-xs text-pink-700 transition-colors hover:bg-pink-200 dark:bg-pink-900/30 dark:text-pink-400 dark:hover:bg-pink-900/50",type:"button",onClick:t[55]||(t[55]=i=>Ge("Kimi","Kimi"))}," + Kimi "),e("button",{class:"rounded-lg bg-teal-100 px-3 py-1 text-xs text-teal-700 transition-colors hover:bg-teal-200 dark:bg-teal-900/30 dark:text-teal-400 dark:hover:bg-teal-900/50",type:"button",onClick:t[56]||(t[56]=i=>Ge("GLM","GLM"))}," + GLM "),e("button",{class:"rounded-lg bg-amber-100 px-3 py-1 text-xs text-amber-700 transition-colors hover:bg-amber-200 dark:bg-amber-900/30 dark:text-amber-400 dark:hover:bg-amber-900/50",type:"button",onClick:t[57]||(t[57]=i=>Ge("claude-opus-4-1-20250805","claude-sonnet-4-20250514"))}," + Opus → Sonnet ")])]))]),e("div",null,[t[270]||(t[270]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),v(e("input",{"onUpdate:modelValue":t[58]||(t[58]=i=>r.value.userAgent=i),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),[[P,r.value.userAgent]]),t[271]||(t[271]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),e("div",null,[t[276]||(t[276]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",Hi,[e("label",Ji,[v(e("input",{"onUpdate:modelValue":t[59]||(t[59]=i=>r.value.enableRateLimit=i),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),[[Oe,r.value.enableRateLimit]]),t[272]||(t[272]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制",-1))]),t[273]||(t[273]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),r.value.enableRateLimit?(o(),n("div",Yi,[t[274]||(t[274]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),v(e("input",{"onUpdate:modelValue":t[60]||(t[60]=i=>r.value.rateLimitDuration=i),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),[[P,r.value.rateLimitDuration,void 0,{number:!0}]]),t[275]||(t[275]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):m("",!0)]),r.value.platform==="claude-console"?(o(),n("div",Zi,[t[278]||(t[278]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"上游错误处理",-1)),e("label",Xi,[v(e("input",{"onUpdate:modelValue":t[61]||(t[61]=i=>r.value.disableAutoProtection=i),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),[[Oe,r.value.disableAutoProtection]]),t[277]||(t[277]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"}," 上游错误不自动暂停调度 ",-1))]),t[279]||(t[279]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 勾选后遇到 401/400/429/529 等上游错误仅记录日志并透传,不自动禁用或限流 ",-1))])):m("",!0)])):m("",!0),r.value.platform==="openai-responses"&&!G.value?(o(),n("div",ed,[e("div",null,[t[280]||(t[280]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 基础地址 *",-1)),v(e("input",{"onUpdate:modelValue":t[62]||(t[62]=i=>r.value.baseApi=i),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),[[P,r.value.baseApi]]),t[281]||(t[281]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 第三方 OpenAI 兼容 API 的基础地址,不要包含具体路径 ",-1))]),e("div",null,[t[282]||(t[282]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 密钥 *",-1)),e("div",td,[v(e("input",{"onUpdate:modelValue":t[63]||(t[63]=i=>r.value.apiKey=i),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:X.value?"text":"password"},null,8,rd),[[dr,r.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[64]||(t[64]=i=>X.value=!X.value)},[e("i",{class:C(X.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])]),t[283]||(t[283]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 第三方服务提供的 API 密钥 ",-1))]),e("div",null,[t[284]||(t[284]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),v(e("input",{"onUpdate:modelValue":t[65]||(t[65]=i=>r.value.userAgent=i),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),[[P,r.value.userAgent]]),t[285]||(t[285]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 可选项。如果设置,所有请求将使用此 User-Agent;否则透传客户端的 User-Agent ",-1))]),v(e("input",{"onUpdate:modelValue":t[66]||(t[66]=i=>r.value.rateLimitDuration=i),type:"hidden",value:"60"},null,512),[[P,r.value.rateLimitDuration,void 0,{number:!0}]])])):m("",!0),r.value.platform==="gemini-api"&&!G.value?(o(),n("div",ad,[e("div",null,[t[286]||(t[286]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 基础地址 *",-1)),v(e("input",{"onUpdate:modelValue":t[67]||(t[67]=i=>r.value.baseUrl=i),class:C(["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 dark:border-red-400":T.value.baseUrl}]),placeholder:"https://generativelanguage.googleapis.com/v1beta/models",required:"",type:"url"},null,2),[[P,r.value.baseUrl]]),T.value.baseUrl?(o(),n("p",sd,u(T.value.baseUrl),1)):m("",!0),t[287]||(t[287]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},[c(" 填写 API 基础地址,必须以 "),e("code",{class:"rounded bg-gray-100 px-1 dark:bg-gray-600"},"/models"),c(" 结尾。系统会自动拼接 "),e("code",{class:"rounded bg-gray-100 px-1 dark:bg-gray-600"},"/{model}:generateContent")],-1)),t[288]||(t[288]=e("p",{class:"mt-0.5 text-xs text-gray-400 dark:text-gray-500"},[c(" 官方: "),e("code",{class:"rounded bg-gray-100 px-1 dark:bg-gray-600"},"https://generativelanguage.googleapis.com/v1beta/models")],-1)),t[289]||(t[289]=e("p",{class:"mt-0.5 text-xs text-gray-400 dark:text-gray-500"},[c(" 上游为 CRS: "),e("code",{class:"rounded bg-gray-100 px-1 dark:bg-gray-600"},"https://your-crs.com/gemini/v1beta/models")],-1))]),e("div",null,[t[290]||(t[290]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 密钥 *",-1)),e("div",ld,[v(e("input",{"onUpdate:modelValue":t[68]||(t[68]=i=>r.value.apiKey=i),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:"AIzaSy...",required:"",type:X.value?"text":"password"},null,8,od),[[dr,r.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[69]||(t[69]=i=>X.value=!X.value)},[e("i",{class:C(X.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])]),t[291]||(t[291]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 从 Google AI Studio 获取的 API 密钥 ",-1))])])):m("",!0),r.value.platform==="claude"?(o(),n("div",nd,[t[294]||(t[294]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"订阅类型",-1)),e("div",id,[e("label",dd,[v(e("input",{"onUpdate:modelValue":t[70]||(t[70]=i=>r.value.subscriptionType=i),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),[[_e,r.value.subscriptionType]]),t[292]||(t[292]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Max",-1))]),e("label",ud,[v(e("input",{"onUpdate:modelValue":t[71]||(t[71]=i=>r.value.subscriptionType=i),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),[[_e,r.value.subscriptionType]]),t[293]||(t[293]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Pro",-1))])]),t[295]||(t[295]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),c(" Pro 账号不支持 Claude Opus 4 模型 ")],-1))])):m("",!0),r.value.platform==="claude"?(o(),n("div",pd,[e("label",gd,[v(e("input",{"onUpdate:modelValue":t[72]||(t[72]=i=>r.value.autoStopOnWarning=i),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[Oe,r.value.autoStopOnWarning]]),t[296]||(t[296]=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))])])):m("",!0),r.value.platform==="claude"?(o(),n("div",yd,[e("label",md,[v(e("input",{"onUpdate:modelValue":t[73]||(t[73]=i=>r.value.useUnifiedUserAgent=i),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[Oe,r.value.useUnifiedUserAgent]]),e("div",cd,[t[298]||(t[298]=e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 使用统一 Claude Code 版本 ",-1)),t[299]||(t[299]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 开启后将使用从真实 Claude Code 客户端捕获的统一 User-Agent,提高兼容性 ",-1)),I.value?(o(),n("div",xd,[e("div",fd,[e("p",bd," 💡 当前统一版本:"+u(I.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:Ue.value,type:"button",onClick:mr},[Ue.value?(o(),n("div",hd)):(o(),n("i",kd)),c(" "+u(Ue.value?"清除中...":"清除缓存"),1)],8,vd)])])):(o(),n("div",wd,t[297]||(t[297]=[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)])))])])])):m("",!0),r.value.platform==="claude"?(o(),n("div",$d,[e("label",Ad,[v(e("input",{"onUpdate:modelValue":t[74]||(t[74]=i=>r.value.useUnifiedClientId=i),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",onChange:cr},null,544),[[Oe,r.value.useUnifiedClientId]]),e("div",Cd,[t[303]||(t[303]=e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 使用统一的客户端标识 ",-1)),t[304]||(t[304]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 开启后将使用固定的客户端标识,使所有请求看起来来自同一个客户端,减少特征 ",-1)),r.value.useUnifiedClientId?(o(),n("div",Ud,[e("div",Id,[e("div",{class:"mb-2 flex items-center justify-between"},[t[301]||(t[301]=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:At},t[300]||(t[300]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),c(" 重新生成 ",-1)]))]),e("div",Td,[e("code",_d,[e("span",Kd,u(r.value.unifiedClientId.substring(0,8)),1),e("span",Md,u(r.value.unifiedClientId.substring(8,56)),1),e("span",Sd,u(r.value.unifiedClientId.substring(56)),1)])]),t[302]||(t[302]=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"}),c(" 此ID将替换请求中的user_id客户端部分,保留session部分用于粘性会话 ")],-1))])])):m("",!0)])])])):m("",!0),e("div",null,[t[305]||(t[305]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"调度优先级 (1-100)",-1)),v(e("input",{"onUpdate:modelValue":t[75]||(t[75]=i=>r.value.priority=i),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),[[P,r.value.priority,void 0,{number:!0}]]),t[306]||(t[306]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 数字越小优先级越高,建议范围:1-100 ",-1))]),r.value.addType==="manual"&&r.value.platform!=="claude-console"&&r.value.platform!=="ccr"&&r.value.platform!=="bedrock"&&r.value.platform!=="azure_openai"&&r.value.platform!=="openai-responses"?(o(),n("div",Dd,[e("div",Pd,[t[311]||(t[311]=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[310]||(t[310]=e("h5",{class:"mb-2 font-semibold text-blue-900 dark:text-blue-300"}," 手动输入 Token ",-1)),r.value.platform==="claude"?(o(),n("p",Ld," 请输入有效的 Claude Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):r.value.platform==="gemini"||r.value.platform==="gemini-antigravity"?(o(),n("p",zd," 请输入有效的 Gemini Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):r.value.platform==="openai"?(o(),n("p",jd," 请输入有效的 OpenAI Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):r.value.platform==="droid"?(o(),n("p",Rd," 请输入有效的 Droid Access Token,并同时提供 Refresh Token 以支持自动刷新。 ")):m("",!0),e("div",Vd,[t[309]||(t[309]=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"}),c(" 获取 Access Token 的方法: ")],-1)),r.value.platform==="claude"?(o(),n("p",Od,t[307]||(t[307]=[c(" 请从已登录 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),c(" 文件中的凭证, 请勿使用 Claude 官网 API Keys 页面的密钥。 ",-1)]))):r.value.platform==="gemini"||r.value.platform==="gemini-antigravity"?(o(),n("p",Ed,t[308]||(t[308]=[c(" 请从已登录 Gemini CLI 的机器上获取 ",-1),e("code",{class:"rounded bg-blue-100 px-1 py-0.5 font-mono dark:bg-blue-900/50"},"~/.config/.gemini/oauth_creds.json",-1),c(" 文件中的凭证。 ",-1)]))):r.value.platform==="openai"?(o(),n("p",Nd," 请从已登录 OpenAI 账户的机器上获取认证凭证, 或通过 OAuth 授权流程获取 Access Token。 ")):r.value.platform==="droid"?(o(),n("p",Fd," 请从已完成授权的 Droid CLI 或 Factory.ai 导出的凭证中获取 Access Token 与 Refresh Token。 ")):m("",!0)]),r.value.platform!=="droid"?(o(),n("p",qd," 💡 如果未填写 Refresh Token,Token 过期后需要手动更新。 ")):(o(),n("p",Gd," ⚠️ Droid 账户必须填写 Refresh Token,缺失将导致无法自动刷新 Access Token。 "))])]),r.value.platform==="openai"?(o(),n("div",Wd,[t[312]||(t[312]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Access Token (可选)",-1)),v(e("textarea",{"onUpdate:modelValue":t[76]||(t[76]=i=>r.value.accessToken=i),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),[[P,r.value.accessToken]]),t[313]||(t[313]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),c(" Access Token 可选填。如果不提供,系统会通过 Refresh Token 自动获取。 ")],-1))])):(o(),n("div",Bd,[t[314]||(t[314]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Access Token *",-1)),v(e("textarea",{"onUpdate:modelValue":t[77]||(t[77]=i=>r.value.accessToken=i),class:C(["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":T.value.accessToken}]),placeholder:"请输入 Access Token...",required:"",rows:"4"},null,2),[[P,r.value.accessToken]]),T.value.accessToken?(o(),n("p",Qd,u(T.value.accessToken),1)):m("",!0)])),r.value.platform==="openai"||r.value.platform==="droid"?(o(),n("div",Hd,[t[316]||(t[316]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Refresh Token *",-1)),v(e("textarea",{"onUpdate:modelValue":t[78]||(t[78]=i=>r.value.refreshToken=i),class:C(["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":T.value.refreshToken}]),placeholder:"请输入 Refresh Token(必填)...",required:"",rows:"4"},null,2),[[P,r.value.refreshToken]]),T.value.refreshToken?(o(),n("p",Jd,u(T.value.refreshToken),1)):m("",!0),e("p",Yd,[t[315]||(t[315]=e("i",{class:"fas fa-info-circle mr-1"},null,-1)),r.value.platform==="openai"?(o(),n(Ce,{key:0},[c(" 系统将使用 Refresh Token 自动获取 Access Token 和用户信息 ")],64)):(o(),n(Ce,{key:1},[c(" 系统将使用 Refresh Token 自动刷新 Factory.ai 访问令牌,确保账户保持可用。 ")],64))])])):(o(),n("div",Zd,[t[317]||(t[317]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Refresh Token (可选)",-1)),v(e("textarea",{"onUpdate:modelValue":t[79]||(t[79]=i=>r.value.refreshToken=i),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),[[P,r.value.refreshToken]])])),r.value.platform==="droid"?(o(),n("div",Xd,[t[318]||(t[318]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),v(e("input",{"onUpdate:modelValue":t[80]||(t[80]=i=>r.value.userAgent=i),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:"factory-cli/0.32.1",type:"text"},null,512),[[P,r.value.userAgent]]),t[319]||(t[319]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空使用默认值 factory-cli/0.32.1,可根据需要自定义 ",-1))])):m("",!0)])):m("",!0),r.value.addType==="apikey"&&r.value.platform==="droid"?(o(),n("div",e0,[t[324]||(t[324]=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-purple-500"},[e("i",{class:"fas fa-key text-sm text-white"})]),e("div",null,[e("h5",{class:"mb-2 font-semibold text-purple-900 dark:text-purple-200"}," 使用 API Key 调度 Droid "),e("p",{class:"text-sm text-purple-800 dark:text-purple-200"}," 请填写一个或多个 Factory.ai API Key,系统会自动在请求时随机挑选并结合会话哈希维持粘性,确保对话上下文保持稳定。 ")])],-1)),e("div",null,[t[320]||(t[320]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key 列表 *",-1)),v(e("textarea",{"onUpdate:modelValue":t[81]||(t[81]=i=>r.value.apiKeysInput=i),class:C(["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":T.value.apiKeys}]),placeholder:"每行一个 API Key,可粘贴多行",required:"",rows:"6"},null,2),[[P,r.value.apiKeysInput]]),T.value.apiKeys?(o(),n("p",t0,u(T.value.apiKeys),1)):m("",!0),t[321]||(t[321]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),c(" 建议为每条 Key 提供独立额度;系统会自动去重并忽略空白行。 ")],-1))]),e("div",null,[t[322]||(t[322]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),v(e("input",{"onUpdate:modelValue":t[82]||(t[82]=i=>r.value.userAgent=i),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:"factory-cli/0.32.1",type:"text"},null,512),[[P,r.value.userAgent]]),t[323]||(t[323]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空使用默认值 factory-cli/0.32.1,可根据需要自定义 ",-1))]),t[325]||(t[325]=e("div",{class:"rounded-lg border border-purple-200 bg-white/70 p-3 text-xs text-purple-800 dark:border-purple-700 dark:bg-purple-800/20 dark:text-purple-100"},[e("p",{class:"font-medium"},[e("i",{class:"fas fa-random mr-1"}),c("分配策略说明")]),e("ul",{class:"mt-1 list-disc space-y-1 pl-4"},[e("li",null,"新会话将随机命中一个 Key,并在会话有效期内保持粘性。"),e("li",null,"若某 Key 失效,会自动切换到剩余可用 Key,最大化成功率。"),e("li",null," 若上游返回 4xx 错误码,该 Key 会被自动标记为异常;全部 Key 异常后账号将暂停调度。 ")])],-1))])):m("",!0),He(Wr,{modelValue:r.value.proxy,"onUpdate:modelValue":t[83]||(t[83]=i=>r.value.proxy=i)},null,8,["modelValue"]),e("div",r0,[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[84]||(t[84]=i=>d.$emit("close"))}," 取消 "),(r.value.addType==="oauth"||r.value.addType==="setup-token")&&r.value.platform!=="claude-console"&&r.value.platform!=="ccr"&&r.value.platform!=="bedrock"&&r.value.platform!=="azure_openai"&&r.value.platform!=="openai-responses"&&r.value.platform!=="gemini-api"?(o(),n("button",{key:0,class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:Z.value,type:"button",onClick:Xe}," 下一步 ",8,a0)):(o(),n("button",{key:1,class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:Z.value,type:"button",onClick:Ot},[Z.value?(o(),n("div",l0)):m("",!0),c(" "+u(Z.value?"创建中...":"创建"),1)],8,s0))])])])):m("",!0),pe.value===2&&r.value.addType==="oauth"?(o(),Ye($l,{key:2,ref_key:"oauthFlowRef",ref:Y,platform:r.value.platform,proxy:r.value.proxy,onBack:t[85]||(t[85]=i=>pe.value=1),onSuccess:pt},null,8,["platform","proxy"])):m("",!0),pe.value===2&&r.value.addType==="setup-token"?(o(),n("div",o0,[r.value.platform==="claude"?(o(),n("div",n0,[e("div",i0,[e("div",d0,[t[347]||(t[347]=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",u0,[t[346]||(t[346]=e("h4",{class:"mb-3 font-semibold text-blue-900 dark:text-blue-200"}," Claude Setup Token 授权 ",-1)),e("div",p0,[t[328]||(t[328]=e("p",{class:"mb-3 text-sm font-medium text-blue-800 dark:text-blue-300"}," 选择授权方式: ",-1)),e("div",g0,[e("label",y0,[v(e("input",{"onUpdate:modelValue":t[86]||(t[86]=i=>_.value=i),class:"mr-2 text-blue-600 focus:ring-blue-500",type:"radio",value:"manual",onChange:Kt},null,544),[[_e,_.value]]),t[326]||(t[326]=e("span",{class:"text-sm text-blue-800 dark:text-blue-300"},[e("i",{class:"fas fa-link mr-1"}),c("手动授权 ")],-1))]),e("label",m0,[v(e("input",{"onUpdate:modelValue":t[87]||(t[87]=i=>_.value=i),class:"mr-2 text-blue-600 focus:ring-blue-500",type:"radio",value:"cookie",onChange:Kt},null,544),[[_e,_.value]]),t[327]||(t[327]=e("span",{class:"text-sm text-blue-800 dark:text-blue-300"},[e("i",{class:"fas fa-cookie mr-1"}),c("Cookie 自动授权 ")],-1))])])]),_.value==="manual"?(o(),n("div",c0,[t[337]||(t[337]=e("p",{class:"mb-4 text-sm text-blue-800 dark:text-blue-300"}," 请按照以下步骤通过 Setup Token 完成 Claude 账户的授权: ",-1)),e("div",x0,[e("div",f0,[t[331]||(t[331]=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",b0,[t[330]||(t[330]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 点击下方按钮生成授权链接 ",-1)),y.value?(o(),n("div",w0,[e("div",$0,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:y.value},null,8,A0),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:_t},[e("i",{class:C(ee.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:bt},t[329]||(t[329]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),c("重新生成 ",-1)]))])):(o(),n("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:V.value,onClick:Tt},[V.value?(o(),n("div",h0)):(o(),n("i",k0)),c(" "+u(V.value?"生成中...":"生成 Setup Token 授权链接"),1)],8,v0))])])]),t[338]||(t[338]=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,"注意:"),c("如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。 ")])])])])],-1)),e("div",C0,[e("div",U0,[t[336]||(t[336]=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",I0,[t[334]||(t[334]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 输入 Authorization Code ",-1)),t[335]||(t[335]=e("p",{class:"mb-3 text-sm text-blue-700 dark:text-blue-300"}," 授权完成后,从返回页面复制 Authorization Code,并粘贴到下方输入框: ",-1)),e("div",T0,[e("div",null,[t[332]||(t[332]=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"}),c("Authorization Code ")],-1)),v(e("textarea",{"onUpdate:modelValue":t[88]||(t[88]=i=>z.value=i),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),[[P,z.value]])]),t[333]||(t[333]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),c(" 请粘贴从Claude Code授权页面复制的Authorization Code ")],-1))])])])])])):m("",!0),_.value==="cookie"?(o(),n("div",_0,[t[344]||(t[344]=e("p",{class:"mb-4 text-sm text-blue-800 dark:text-blue-300"}," 使用 sessionKey 自动完成授权,无需手动打开链接。 ",-1)),e("div",K0,[e("div",M0,[e("div",null,[e("label",S0,[t[339]||(t[339]=e("i",{class:"fas fa-cookie text-blue-500"},null,-1)),t[340]||(t[340]=c("sessionKey ",-1)),Q.value>1?(o(),n("span",D0,u(Q.value)+" 个 ",1)):m("",!0)]),v(e("textarea",{"onUpdate:modelValue":t[89]||(t[89]=i=>q.value=i),class:C(["form-input w-full resize-y border-gray-300 font-mono text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":ue.value}]),placeholder:`每行一个 sessionKey,例如: sk-ant-sid01-xxxxx... sk-ant-sid01-yyyyy...`,rows:"3"},null,2),[[P,q.value]]),Q.value>1?(o(),n("p",P0,[t[341]||(t[341]=e("i",{class:"fas fa-info-circle mr-1"},null,-1)),c(" 将批量创建 "+u(Q.value)+" 个账户 ",1)])):m("",!0),ue.value?(o(),n("p",L0,u(ue.value),1)):m("",!0)]),e("div",null,[e("button",{class:"flex items-center text-xs text-blue-600 hover:text-blue-700",type:"button",onClick:t[90]||(t[90]=i=>$e.value=!$e.value)},[e("i",{class:C($e.value?"fas fa-chevron-down mr-1":"fas fa-chevron-right mr-1")},null,2),t[342]||(t[342]=c(" 如何获取 sessionKey? ",-1))]),$e.value?(o(),n("div",z0,t[343]||(t[343]=[e("ol",{class:"space-y-2 text-xs text-gray-600 dark:text-gray-300"},[e("li",null,[c("1. 在浏览器中登录 "),e("strong",null,"claude.ai")]),e("li",null,[c("2. 按 "),e("strong",null,"F12"),c(" 打开开发者工具")]),e("li",null,[c("3. 切换到 "),e("strong",null,'"Application"'),c(" (应用) 标签页")]),e("li",null,[c(" 4. 在左侧选择 "),e("strong",null,'"Cookies"'),c(" → "),e("strong",null,'"https://claude.ai"')]),e("li",null,[c("5. 找到键为 "),e("strong",null,'"sessionKey"'),c(" 的那一行")]),e("li",null,[c("6. 复制其 "),e("strong",null,'"Value"'),c(" (值) 列的内容")])],-1),e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),c(' sessionKey 通常以 "sk-ant-" 开头 ')],-1)]))):m("",!0)]),e("button",{class:"btn btn-primary w-full px-4 py-3",disabled:we.value||!q.value.trim(),type:"button",onClick:wt},[we.value?(o(),n("div",R0)):(o(),n("i",V0)),we.value&&Le.value.total>1?(o(),n(Ce,{key:2},[c(" 正在授权 "+u(Le.value.current)+"/"+u(Le.value.total)+"... ",1)],64)):we.value?(o(),n(Ce,{key:3},[c(" 授权中... ")],64)):(o(),n(Ce,{key:4},[c(" 开始自动授权 ")],64))],8,j0)])]),t[345]||(t[345]=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,"提示:"),c("如果您设置了代理,Cookie授权也会使用相同的代理配置。 ")])],-1))])):m("",!0)])])])])):m("",!0),e("div",O0,[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[91]||(t[91]=i=>pe.value=1)}," 上一步 "),_.value==="manual"?(o(),n("button",{key:0,class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:!ht.value||h.value,type:"button",onClick:Rt},[h.value?(o(),n("div",N0)):m("",!0),c(" "+u(h.value?"验证中...":"完成授权"),1)],8,E0)):m("",!0)])])):m("",!0),G.value?(o(),n("div",F0,[e("div",null,[t[348]||(t[348]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称",-1)),v(e("input",{"onUpdate:modelValue":t[92]||(t[92]=i=>r.value.name=i),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),[[P,r.value.name]])]),e("div",null,[t[349]||(t[349]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),v(e("textarea",{"onUpdate:modelValue":t[93]||(t[93]=i=>r.value.description=i),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),[[P,r.value.description]])]),e("div",null,[t[353]||(t[353]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户类型",-1)),e("div",q0,[e("label",G0,[v(e("input",{"onUpdate:modelValue":t[94]||(t[94]=i=>r.value.accountType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"shared"},null,512),[[_e,r.value.accountType]]),t[350]||(t[350]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"共享账户",-1))]),e("label",W0,[v(e("input",{"onUpdate:modelValue":t[95]||(t[95]=i=>r.value.accountType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"dedicated"},null,512),[[_e,r.value.accountType]]),t[351]||(t[351]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"专属账户",-1))]),e("label",B0,[v(e("input",{"onUpdate:modelValue":t[96]||(t[96]=i=>r.value.accountType=i),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"group"},null,512),[[_e,r.value.accountType]]),t[352]||(t[352]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"分组调度",-1))])]),t[354]||(t[354]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 共享账户:供所有API Key使用;专属账户:仅供特定API Key使用;分组调度:加入分组供分组内调度 ",-1))]),G.value?m("",!0):(o(),n("div",Q0,[t[358]||(t[358]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"到期时间 (可选)",-1)),e("div",H0,[v(e("select",{"onUpdate:modelValue":t[97]||(t[97]=i=>r.value.expireDuration=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",onChange:Bt},t[355]||(t[355]=[e("option",{value:""},"永不过期",-1),e("option",{value:"30d"},"30 天",-1),e("option",{value:"90d"},"90 天",-1),e("option",{value:"180d"},"180 天",-1),e("option",{value:"365d"},"365 天",-1),e("option",{value:"custom"},"自定义日期",-1)]),544),[[Vr,r.value.expireDuration]]),r.value.expireDuration==="custom"?(o(),n("div",J0,[v(e("input",{"onUpdate:modelValue":t[98]||(t[98]=i=>r.value.customExpireDate=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:Dt.value,type:"datetime-local",onChange:xr},null,40,Y0),[[P,r.value.customExpireDate]])])):m("",!0),r.value.expiresAt?(o(),n("p",Z0,[t[356]||(t[356]=e("i",{class:"fas fa-calendar-alt mr-1"},null,-1)),c(" 将于 "+u(Qt(r.value.expiresAt))+" 过期 ",1)])):(o(),n("p",X0,t[357]||(t[357]=[e("i",{class:"fas fa-infinity mr-1"},null,-1),c(" 账户永不过期 ",-1)])))]),t[359]||(t[359]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置 Claude Max/Pro 订阅的到期时间,到期后将停止调度此账户 ",-1))])),r.value.accountType==="group"?(o(),n("div",eu,[t[361]||(t[361]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择分组 *",-1)),e("div",tu,[e("div",ru,[e("div",au,[gt.value.length===0?(o(),n("div",su," 暂无可用分组 ")):m("",!0),(o(!0),n(Ce,null,Be(gt.value,i=>(o(),n("label",{key:i.id,class:"flex cursor-pointer items-center gap-2 rounded-md p-2 hover:bg-gray-50 dark:hover:bg-gray-600"},[v(e("input",{"onUpdate:modelValue":t[99]||(t[99]=se=>r.value.groupIds=se),class:"rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",value:i.id},null,8,lu),[[Oe,r.value.groupIds]]),e("span",ou,u(i.name)+" ("+u(i.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:gr},t[360]||(t[360]=[e("i",{class:"fas fa-plus"},null,-1),c(" 新建分组 ",-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:Gt},[e("i",{class:C(["fas fa-sync-alt",{"animate-spin":Mt.value}])},null,2)])])])):m("",!0),r.value.platform==="gemini"||r.value.platform==="gemini-antigravity"?(o(),n("div",nu,[t[362]||(t[362]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"项目 ID (可选)",-1)),v(e("input",{"onUpdate:modelValue":t[100]||(t[100]=i=>r.value.projectId=i),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),[[P,r.value.projectId]]),t[363]||(t[363]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," Google Cloud/Workspace 账号可能需要提供项目 ID ",-1))])):m("",!0),r.value.platform==="claude"?(o(),n("div",iu,[t[366]||(t[366]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"订阅类型",-1)),e("div",du,[e("label",uu,[v(e("input",{"onUpdate:modelValue":t[101]||(t[101]=i=>r.value.subscriptionType=i),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),[[_e,r.value.subscriptionType]]),t[364]||(t[364]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Max",-1))]),e("label",pu,[v(e("input",{"onUpdate:modelValue":t[102]||(t[102]=i=>r.value.subscriptionType=i),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),[[_e,r.value.subscriptionType]]),t[365]||(t[365]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Pro",-1))])]),t[367]||(t[367]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),c(" Pro 账号不支持 Claude Opus 4 模型 ")],-1))])):m("",!0),r.value.platform==="claude"?(o(),n("div",gu,[e("label",yu,[v(e("input",{"onUpdate:modelValue":t[103]||(t[103]=i=>r.value.autoStopOnWarning=i),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[Oe,r.value.autoStopOnWarning]]),t[368]||(t[368]=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))])])):m("",!0),r.value.platform==="claude"?(o(),n("div",mu,[e("label",cu,[v(e("input",{"onUpdate:modelValue":t[104]||(t[104]=i=>r.value.useUnifiedUserAgent=i),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[Oe,r.value.useUnifiedUserAgent]]),e("div",xu,[t[370]||(t[370]=e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 使用统一 Claude Code 版本 ",-1)),t[371]||(t[371]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 开启后将使用从真实 Claude Code 客户端捕获的统一 User-Agent,提高兼容性 ",-1)),I.value?(o(),n("div",fu,[e("div",bu,[e("p",vu," 💡 当前统一版本:"+u(I.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:Ue.value,type:"button",onClick:mr},[Ue.value?(o(),n("div",wu)):(o(),n("i",hu)),c(" "+u(Ue.value?"清除中...":"清除缓存"),1)],8,ku)])])):(o(),n("div",$u,t[369]||(t[369]=[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)])))])])])):m("",!0),r.value.platform==="claude"?(o(),n("div",Au,[e("label",Cu,[v(e("input",{"onUpdate:modelValue":t[105]||(t[105]=i=>r.value.useUnifiedClientId=i),class:"mt-1 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",onChange:cr},null,544),[[Oe,r.value.useUnifiedClientId]]),e("div",Uu,[t[375]||(t[375]=e("span",{class:"text-sm font-medium text-gray-700 dark:text-gray-300"}," 使用统一的客户端标识 ",-1)),t[376]||(t[376]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 开启后将使用固定的客户端标识,使所有请求看起来来自同一个客户端,减少特征 ",-1)),r.value.useUnifiedClientId?(o(),n("div",Iu,[e("div",Tu,[e("div",{class:"mb-2 flex items-center justify-between"},[t[373]||(t[373]=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:At},t[372]||(t[372]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),c(" 重新生成 ",-1)]))]),e("div",_u,[e("code",Ku,[e("span",Mu,u(r.value.unifiedClientId.substring(0,8)),1),e("span",Su,u(r.value.unifiedClientId.substring(8,56)),1),e("span",Du,u(r.value.unifiedClientId.substring(56)),1)])]),t[374]||(t[374]=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"}),c(" 此ID将替换请求中的user_id客户端部分,保留session部分用于粘性会话 ")],-1))])])):m("",!0)])])])):m("",!0),e("div",null,[t[377]||(t[377]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"调度优先级 (1-100)",-1)),v(e("input",{"onUpdate:modelValue":t[106]||(t[106]=i=>r.value.priority=i),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),[[P,r.value.priority,void 0,{number:!0}]]),t[378]||(t[378]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 数字越小优先级越高,建议范围:1-100 ",-1))]),r.value.platform==="claude-console"||r.value.platform==="ccr"?(o(),n("div",Pu,[e("div",null,[t[379]||(t[379]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API URL",-1)),v(e("input",{"onUpdate:modelValue":t[107]||(t[107]=i=>r.value.apiUrl=i),class:"form-input w-full",placeholder:"例如:https://api.example.com",required:"",type:"text"},null,512),[[P,r.value.apiUrl]])]),e("div",null,[t[380]||(t[380]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API Key",-1)),v(e("input",{"onUpdate:modelValue":t[108]||(t[108]=i=>r.value.apiKey=i),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[P,r.value.apiKey]]),t[381]||(t[381]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 API Key",-1))]),e("div",Lu,[e("div",null,[t[382]||(t[382]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 每日额度限制 ($) ",-1)),v(e("input",{"onUpdate:modelValue":t[109]||(t[109]=i=>r.value.dailyQuota=i),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),[[P,r.value.dailyQuota,void 0,{number:!0}]]),t[383]||(t[383]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 设置每日使用额度,0 表示不限制 ",-1))]),e("div",null,[t[384]||(t[384]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 额度重置时间 ",-1)),v(e("input",{"onUpdate:modelValue":t[110]||(t[110]=i=>r.value.quotaResetTime=i),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),[[P,r.value.quotaResetTime]]),t[385]||(t[385]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},"每日自动重置额度的时间",-1))])]),G.value&&r.value.dailyQuota>0?(o(),n("div",zu,[e("div",ju,[t[386]||(t[386]=e("span",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"}," 今日使用情况 ",-1)),e("span",Ru," $"+u(ft().toFixed(4))+" / $"+u(r.value.dailyQuota.toFixed(2)),1)]),e("div",Vu,[e("div",{class:C(["absolute left-0 top-0 h-full rounded-full transition-all",Ze.value>=90?"bg-red-500":Ze.value>=70?"bg-yellow-500":"bg-green-500"]),style:Qe({width:`${Math.min(Ze.value,100)}%`})},null,6)]),e("div",Ou,[e("span",Eu," 剩余: $"+u(Math.max(0,r.value.dailyQuota-ft()).toFixed(2)),1),e("span",Nu,u(Ze.value.toFixed(1))+"% 已使用 ",1)])])):m("",!0),e("div",null,[t[387]||(t[387]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 最大并发任务数 ",-1)),v(e("input",{"onUpdate:modelValue":t[111]||(t[111]=i=>r.value.maxConcurrentTasks=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:"0",placeholder:"0 表示不限制",type:"number"},null,512),[[P,r.value.maxConcurrentTasks,void 0,{number:!0}]]),t[388]||(t[388]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 限制该账户的并发请求数量,0 表示不限制 ",-1))]),e("div",null,[t[396]||(t[396]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"模型限制 (可选)",-1)),e("div",Fu,[e("button",{class:C(["flex-1 rounded-lg px-4 py-2 text-sm font-medium transition-all",W.value==="whitelist"?"bg-blue-500 text-white shadow-md":"border border-gray-300 text-gray-600 hover:border-blue-300 dark:border-gray-600 dark:text-gray-400 dark:hover:border-blue-500"]),type:"button",onClick:t[112]||(t[112]=i=>W.value="whitelist")},t[389]||(t[389]=[e("i",{class:"fas fa-check-circle mr-2"},null,-1),c(" 模型白名单 ",-1)]),2),e("button",{class:C(["flex-1 rounded-lg px-4 py-2 text-sm font-medium transition-all",W.value==="mapping"?"bg-purple-500 text-white shadow-md":"border border-gray-300 text-gray-600 hover:border-purple-300 dark:border-gray-600 dark:text-gray-400 dark:hover:border-purple-500"]),type:"button",onClick:t[113]||(t[113]=i=>W.value="mapping")},t[390]||(t[390]=[e("i",{class:"fas fa-random mr-2"},null,-1),c(" 模型映射 ",-1)]),2)]),W.value==="whitelist"?(o(),n("div",qu,[t[391]||(t[391]=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"}),c(" 选择允许使用此账户的模型。留空表示支持所有模型。 ")])],-1)),e("div",Gu,[(o(),n(Ce,null,Be(qe,i=>e("label",{key:i.value,class:C(["flex cursor-pointer items-center rounded-lg border p-3 transition-all hover:bg-gray-50 dark:border-gray-600 dark:hover:bg-gray-700",ke.value.includes(i.value)?"border-blue-500 bg-blue-50 dark:border-blue-400 dark:bg-blue-900/30":"border-gray-300"])},[v(e("input",{"onUpdate:modelValue":t[114]||(t[114]=se=>ke.value=se),class:"mr-2 text-blue-600 focus:ring-blue-500",type:"checkbox",value:i.value},null,8,Wu),[[Oe,ke.value]]),e("span",Bu,u(i.label),1)],2)),64))]),e("p",Qu,[c(" 已选择 "+u(ke.value.length)+" 个模型 ",1),ke.value.length===0?(o(),n("span",Hu,"(支持所有模型)")):m("",!0)])])):(o(),n("div",Ju,[t[395]||(t[395]=e("div",{class:"mb-3 rounded-lg bg-purple-50 p-3 dark:bg-purple-900/30"},[e("p",{class:"text-xs text-purple-700 dark:text-purple-400"},[e("i",{class:"fas fa-info-circle mr-1"}),c(" 配置模型映射关系。左侧是客户端请求的模型,右侧是实际发送给API的模型。 ")])],-1)),e("div",Yu,[(o(!0),n(Ce,null,Be(De.value,(i,se)=>(o(),n("div",{key:se,class:"flex items-center gap-2"},[v(e("input",{"onUpdate:modelValue":le=>i.from=le,class:"form-input flex-1 border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",placeholder:"原始模型名称",type:"text"},null,8,Zu),[[P,i.from]]),t[393]||(t[393]=e("i",{class:"fas fa-arrow-right text-gray-400 dark:text-gray-500"},null,-1)),v(e("input",{"onUpdate:modelValue":le=>i.to=le,class:"form-input flex-1 border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",placeholder:"映射后的模型名称",type:"text"},null,8,Xu),[[P,i.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:le=>yr(se)},t[392]||(t[392]=[e("i",{class:"fas fa-trash"},null,-1)]),8,ep)]))),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",type:"button",onClick:Je},t[394]||(t[394]=[e("i",{class:"fas fa-plus mr-2"},null,-1),c(" 添加模型映射 ",-1)])),e("div",tp,[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[115]||(t[115]=i=>Ge("claude-sonnet-4-20250514","claude-sonnet-4-20250514"))}," + Sonnet 4 "),e("button",{class:"rounded-lg bg-indigo-100 px-3 py-1 text-xs text-indigo-700 transition-colors hover:bg-indigo-200 dark:bg-indigo-900/30 dark:text-indigo-400 dark:hover:bg-indigo-900/50",type:"button",onClick:t[116]||(t[116]=i=>Ge("claude-sonnet-4-5-20250929","claude-sonnet-4-5-20250929"))}," + Sonnet 4.5 "),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[117]||(t[117]=i=>Ge("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[118]||(t[118]=i=>Ge("claude-3-5-haiku-20241022","claude-3-5-haiku-20241022"))}," + Haiku 3.5 "),e("button",{class:"rounded-lg bg-emerald-100 px-3 py-1 text-xs text-emerald-700 transition-colors hover:bg-emerald-200 dark:bg-emerald-900/30 dark:text-emerald-400 dark:hover:bg-emerald-900/50",type:"button",onClick:t[119]||(t[119]=i=>Ge("claude-haiku-4-5-20251001","claude-haiku-4-5-20251001"))}," + Haiku 4.5 "),e("button",{class:"rounded-lg bg-cyan-100 px-3 py-1 text-xs text-cyan-700 transition-colors hover:bg-cyan-200 dark:bg-cyan-900/30 dark:text-cyan-400 dark:hover:bg-cyan-900/50",type:"button",onClick:t[120]||(t[120]=i=>Ge("deepseek-chat","deepseek-chat"))}," + DeepSeek "),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[121]||(t[121]=i=>Ge("Qwen","Qwen"))}," + Qwen "),e("button",{class:"rounded-lg bg-pink-100 px-3 py-1 text-xs text-pink-700 transition-colors hover:bg-pink-200 dark:bg-pink-900/30 dark:text-pink-400 dark:hover:bg-pink-900/50",type:"button",onClick:t[122]||(t[122]=i=>Ge("Kimi","Kimi"))}," + Kimi "),e("button",{class:"rounded-lg bg-teal-100 px-3 py-1 text-xs text-teal-700 transition-colors hover:bg-teal-200 dark:bg-teal-900/30 dark:text-teal-400 dark:hover:bg-teal-900/50",type:"button",onClick:t[123]||(t[123]=i=>Ge("GLM","GLM"))}," + GLM "),e("button",{class:"rounded-lg bg-amber-100 px-3 py-1 text-xs text-amber-700 transition-colors hover:bg-amber-200 dark:bg-amber-900/30 dark:text-amber-400 dark:hover:bg-amber-900/50",type:"button",onClick:t[124]||(t[124]=i=>Ge("claude-opus-4-1-20250805","claude-sonnet-4-20250514"))}," + Opus → Sonnet ")])]))]),e("div",null,[t[397]||(t[397]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"自定义 User-Agent (可选)",-1)),v(e("input",{"onUpdate:modelValue":t[125]||(t[125]=i=>r.value.userAgent=i),class:"form-input w-full",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[P,r.value.userAgent]]),t[398]||(t[398]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),e("div",null,[t[403]||(t[403]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流机制",-1)),e("div",rp,[e("label",ap,[v(e("input",{"onUpdate:modelValue":t[126]||(t[126]=i=>r.value.enableRateLimit=i),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200",type:"checkbox"},null,512),[[Oe,r.value.enableRateLimit]]),t[399]||(t[399]=e("span",{class:"text-sm text-gray-700"},"启用限流机制",-1))]),t[400]||(t[400]=e("p",{class:"mt-1 text-xs text-gray-500"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),r.value.enableRateLimit?(o(),n("div",sp,[t[401]||(t[401]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流时间 (分钟)",-1)),v(e("input",{"onUpdate:modelValue":t[127]||(t[127]=i=>r.value.rateLimitDuration=i),class:"form-input w-full",min:"1",type:"number"},null,512),[[P,r.value.rateLimitDuration,void 0,{number:!0}]]),t[402]||(t[402]=e("p",{class:"mt-1 text-xs text-gray-500"},"账号被限流后暂停调度的时间(分钟)",-1))])):m("",!0)]),r.value.platform==="claude-console"?(o(),n("div",lp,[t[405]||(t[405]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 上游错误处理 ",-1)),e("label",op,[v(e("input",{"onUpdate:modelValue":t[128]||(t[128]=i=>r.value.disableAutoProtection=i),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),[[Oe,r.value.disableAutoProtection]]),t[404]||(t[404]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"}," 上游错误不自动暂停调度 ",-1))]),t[406]||(t[406]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 勾选后遇到 401/400/429/529 等上游错误仅记录日志并透传,不自动禁用或限流 ",-1))])):m("",!0)])):m("",!0),r.value.platform==="openai-responses"?(o(),n("div",np,[e("div",null,[t[407]||(t[407]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API 基础地址",-1)),v(e("input",{"onUpdate:modelValue":t[129]||(t[129]=i=>r.value.baseApi=i),class:"form-input w-full",placeholder:"https://api.example.com/v1",type:"url"},null,512),[[P,r.value.baseApi]])]),e("div",null,[t[408]||(t[408]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API 密钥",-1)),e("div",ip,[v(e("input",{"onUpdate:modelValue":t[130]||(t[130]=i=>r.value.apiKey=i),class:"form-input w-full pr-10",placeholder:"留空表示不更新",type:X.value?"text":"password"},null,8,dp),[[dr,r.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[131]||(t[131]=i=>X.value=!X.value)},[e("i",{class:C(X.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])]),t[409]||(t[409]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 API Key",-1))]),e("div",null,[t[410]||(t[410]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"自定义 User-Agent",-1)),v(e("input",{"onUpdate:modelValue":t[132]||(t[132]=i=>r.value.userAgent=i),class:"form-input w-full",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[P,r.value.userAgent]]),t[411]||(t[411]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),v(e("input",{"onUpdate:modelValue":t[133]||(t[133]=i=>r.value.rateLimitDuration=i),type:"hidden"},null,512),[[P,r.value.rateLimitDuration,void 0,{number:!0}]]),e("div",up,[e("div",null,[t[412]||(t[412]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 每日额度限制 ($) ",-1)),v(e("input",{"onUpdate:modelValue":t[134]||(t[134]=i=>r.value.dailyQuota=i),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),[[P,r.value.dailyQuota,void 0,{number:!0}]])]),e("div",null,[t[413]||(t[413]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 额度重置时间 ",-1)),v(e("input",{"onUpdate:modelValue":t[135]||(t[135]=i=>r.value.quotaResetTime=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",type:"time"},null,512),[[P,r.value.quotaResetTime]])])]),e("div",null,[t[414]||(t[414]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"}," 最大并发任务数 ",-1)),v(e("input",{"onUpdate:modelValue":t[136]||(t[136]=i=>r.value.maxConcurrentTasks=i),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:"0",placeholder:"0 表示不限制",type:"number"},null,512),[[P,r.value.maxConcurrentTasks,void 0,{number:!0}]]),t[415]||(t[415]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 限制该账户的并发请求数量,0 表示不限制 ",-1))])])):m("",!0),r.value.platform==="gemini-api"?(o(),n("div",pp,[e("div",null,[t[416]||(t[416]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 基础地址",-1)),v(e("input",{"onUpdate:modelValue":t[137]||(t[137]=i=>r.value.baseUrl=i),class:C(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"border-red-500 dark:border-red-400":T.value.baseUrl}]),placeholder:"https://generativelanguage.googleapis.com/v1beta/models",type:"url"},null,2),[[P,r.value.baseUrl]]),T.value.baseUrl?(o(),n("p",gp,u(T.value.baseUrl),1)):m("",!0),t[417]||(t[417]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},[c(" 填写 API 基础地址,必须以 "),e("code",{class:"rounded bg-gray-100 px-1 dark:bg-gray-600"},"/models"),c(" 结尾。系统会自动拼接 "),e("code",{class:"rounded bg-gray-100 px-1 dark:bg-gray-600"},"/{model}:generateContent")],-1)),t[418]||(t[418]=e("p",{class:"mt-0.5 text-xs text-gray-400 dark:text-gray-500"},[c(" 官方: "),e("code",{class:"rounded bg-gray-100 px-1 dark:bg-gray-600"},"https://generativelanguage.googleapis.com/v1beta/models")],-1)),t[419]||(t[419]=e("p",{class:"mt-0.5 text-xs text-gray-400 dark:text-gray-500"},[c(" 上游为 CRS: "),e("code",{class:"rounded bg-gray-100 px-1 dark:bg-gray-600"},"https://your-crs.com/gemini/v1beta/models")],-1))]),e("div",null,[t[420]||(t[420]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 密钥",-1)),e("div",yp,[v(e("input",{"onUpdate:modelValue":t[138]||(t[138]=i=>r.value.apiKey=i),class:"form-input w-full border-gray-300 pr-10 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",placeholder:"留空表示不更新",type:X.value?"text":"password"},null,8,mp),[[dr,r.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[139]||(t[139]=i=>X.value=!X.value)},[e("i",{class:C(X.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])]),t[421]||(t[421]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},"留空表示不更新 API Key",-1))])])):m("",!0),r.value.platform==="bedrock"?(o(),n("div",cp,[e("div",null,[t[422]||(t[422]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 访问密钥 ID",-1)),v(e("input",{"onUpdate:modelValue":t[140]||(t[140]=i=>r.value.accessKeyId=i),class:"form-input w-full",placeholder:"留空表示不更新",type:"text"},null,512),[[P,r.value.accessKeyId]]),t[423]||(t[423]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 AWS Access Key ID",-1))]),e("div",null,[t[424]||(t[424]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 秘密访问密钥",-1)),v(e("input",{"onUpdate:modelValue":t[141]||(t[141]=i=>r.value.secretAccessKey=i),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[P,r.value.secretAccessKey]]),t[425]||(t[425]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 AWS Secret Access Key",-1))]),e("div",null,[t[426]||(t[426]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 区域",-1)),v(e("input",{"onUpdate:modelValue":t[142]||(t[142]=i=>r.value.region=i),class:"form-input w-full",placeholder:"例如:us-east-1",type:"text"},null,512),[[P,r.value.region]]),t[427]||(t[427]=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[428]||(t[428]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"会话令牌 (可选)",-1)),v(e("input",{"onUpdate:modelValue":t[143]||(t[143]=i=>r.value.sessionToken=i),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[P,r.value.sessionToken]])]),e("div",null,[t[429]||(t[429]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"默认主模型 (可选)",-1)),v(e("input",{"onUpdate:modelValue":t[144]||(t[144]=i=>r.value.defaultModel=i),class:"form-input w-full",placeholder:"例如:us.anthropic.claude-sonnet-4-20250514-v1:0",type:"text"},null,512),[[P,r.value.defaultModel]]),t[430]||(t[430]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空将使用系统默认模型。支持 inference profile ID 或 ARN ",-1))]),e("div",null,[t[431]||(t[431]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"小快速模型 (可选)",-1)),v(e("input",{"onUpdate:modelValue":t[145]||(t[145]=i=>r.value.smallFastModel=i),class:"form-input w-full",placeholder:"例如:us.anthropic.claude-3-5-haiku-20241022-v1:0",type:"text"},null,512),[[P,r.value.smallFastModel]]),t[432]||(t[432]=e("p",{class:"mt-1 text-xs text-gray-500"},"用于快速响应的轻量级模型,留空将使用系统默认",-1))]),e("div",null,[t[437]||(t[437]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流机制",-1)),e("div",xp,[e("label",fp,[v(e("input",{"onUpdate:modelValue":t[146]||(t[146]=i=>r.value.enableRateLimit=i),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200",type:"checkbox"},null,512),[[Oe,r.value.enableRateLimit]]),t[433]||(t[433]=e("span",{class:"text-sm text-gray-700"},"启用限流机制",-1))]),t[434]||(t[434]=e("p",{class:"mt-1 text-xs text-gray-500"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),r.value.enableRateLimit?(o(),n("div",bp,[t[435]||(t[435]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流时间 (分钟)",-1)),v(e("input",{"onUpdate:modelValue":t[147]||(t[147]=i=>r.value.rateLimitDuration=i),class:"form-input w-full",min:"1",type:"number"},null,512),[[P,r.value.rateLimitDuration,void 0,{number:!0}]]),t[436]||(t[436]=e("p",{class:"mt-1 text-xs text-gray-500"},"账号被限流后暂停调度的时间(分钟)",-1))])):m("",!0)])])):m("",!0),r.value.platform==="azure_openai"?(o(),n("div",vp,[e("div",null,[t[438]||(t[438]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Azure Endpoint",-1)),v(e("input",{"onUpdate:modelValue":t[148]||(t[148]=i=>r.value.azureEndpoint=i),class:C(["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":T.value.azureEndpoint}]),placeholder:"https://your-resource.openai.azure.com",type:"url"},null,2),[[P,r.value.azureEndpoint]]),T.value.azureEndpoint?(o(),n("p",kp,u(T.value.azureEndpoint),1)):m("",!0)]),e("div",null,[t[439]||(t[439]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 版本",-1)),v(e("input",{"onUpdate:modelValue":t[149]||(t[149]=i=>r.value.apiVersion=i),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),[[P,r.value.apiVersion]]),t[440]||(t[440]=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[441]||(t[441]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"部署名称",-1)),v(e("input",{"onUpdate:modelValue":t[150]||(t[150]=i=>r.value.deploymentName=i),class:C(["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":T.value.deploymentName}]),placeholder:"gpt-4",type:"text"},null,2),[[P,r.value.deploymentName]]),T.value.deploymentName?(o(),n("p",hp,u(T.value.deploymentName),1)):m("",!0)]),e("div",null,[t[442]||(t[442]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key",-1)),v(e("input",{"onUpdate:modelValue":t[151]||(t[151]=i=>r.value.apiKey=i),class:C(["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":T.value.apiKey}]),placeholder:"留空表示不更新",type:"password"},null,2),[[P,r.value.apiKey]]),T.value.apiKey?(o(),n("p",wp,u(T.value.apiKey),1)):m("",!0),t[443]||(t[443]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},"留空表示不更新 API Key",-1))]),e("div",null,[t[444]||(t[444]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"支持的模型",-1)),e("div",$p,[(o(),n(Ce,null,Be(["gpt-4","gpt-4-turbo","gpt-4o","gpt-4o-mini","gpt-5","gpt-5-mini","gpt-35-turbo","gpt-35-turbo-16k","codex-mini"],i=>e("label",{key:i,class:"flex cursor-pointer items-center"},[v(e("input",{"onUpdate:modelValue":t[152]||(t[152]=se=>r.value.supportedModels=se),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",value:i},null,8,Ap),[[Oe,r.value.supportedModels]]),e("span",Cp,u(i),1)])),64))]),t[445]||(t[445]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},"选择此部署支持的模型类型",-1))])])):m("",!0),G.value&&f.value?(o(),n("div",Up,[e("div",Ip,[t[451]||(t[451]=e("div",{class:"mt-1 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-purple-500"},[e("i",{class:"fas fa-retweet text-sm text-white"})],-1)),e("div",Tp,[e("div",_p,[t[447]||(t[447]=e("h5",{class:"font-semibold text-purple-900 dark:text-purple-200"},"更新 API Key",-1)),e("button",{class:"flex items-center gap-1.5 rounded-lg bg-purple-600 px-3 py-1.5 text-xs font-medium text-white transition-colors hover:bg-purple-700 dark:bg-purple-500 dark:hover:bg-purple-600",type:"button",onClick:t[153]||(t[153]=i=>Ne.value=!0)},t[446]||(t[446]=[e("i",{class:"fas fa-list-ul"},null,-1),e("span",null,"管理 API Key",-1)]))]),e("p",Kp,[t[448]||(t[448]=c(" 当前已保存 ",-1)),e("strong",null,u(dt.value),1),t[449]||(t[449]=c(" 条 API Key。您可以追加新的 Key,或通过下方模式快速覆盖、删除指定 Key。 ",-1))]),t[450]||(t[450]=e("p",{class:"text-xs text-purple-700 dark:text-purple-300"}," 留空表示保留现有 Key 不变;根据所选模式决定是追加、覆盖还是删除输入的 Key。 ",-1))])]),e("div",Mp,[e("div",null,[t[452]||(t[452]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新的 API Key 列表",-1)),v(e("textarea",{"onUpdate:modelValue":t[154]||(t[154]=i=>r.value.apiKeysInput=i),class:C(["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":T.value.apiKeys}]),placeholder:"根据模式填写;每行一个 API Key",rows:"6"},null,2),[[P,r.value.apiKeysInput]]),T.value.apiKeys?(o(),n("p",Sp,u(T.value.apiKeys),1)):m("",!0)]),e("div",Dp,[e("div",Pp,[t[453]||(t[453]=e("span",{class:"text-sm font-semibold text-purple-800 dark:text-purple-100"},"API Key 更新模式",-1)),e("span",Lp,u(kt.value),1)]),e("div",zp,[e("span",{class:"pointer-events-none absolute inset-y-0 rounded-2xl bg-gradient-to-r from-purple-500/90 via-purple-600 to-indigo-500/90 shadow-lg ring-1 ring-purple-100/80 transition-all duration-300 ease-out dark:from-purple-500/70 dark:via-purple-600/70 dark:to-indigo-500/70 dark:ring-purple-400/30",style:Qe(ct.value)},null,4),(o(),n(Ce,null,Be(st,i=>e("button",{key:i.value,class:C(["relative z-10 flex items-center justify-center rounded-2xl px-2 text-xs font-semibold transition-all duration-200 ease-out focus:outline-none focus-visible:ring-2 focus-visible:ring-purple-500/60 dark:focus-visible:ring-purple-400/60",r.value.apiKeyUpdateMode===i.value?"text-white drop-shadow-sm":"text-purple-500/80 hover:text-purple-700 dark:text-purple-200/70 dark:hover:text-purple-100"]),type:"button",onClick:se=>r.value.apiKeyUpdateMode=i.value},u(i.label),11,jp)),64))]),e("p",Rp,u(xt.value),1)]),t[454]||(t[454]=e("div",{class:"rounded-lg border border-purple-200 bg-white/70 p-3 text-xs text-purple-800 dark:border-purple-700 dark:bg-purple-800/20 dark:text-purple-100"},[e("p",{class:"font-medium"},[e("i",{class:"fas fa-lightbulb mr-1"}),c("小提示")]),e("ul",{class:"mt-1 list-disc space-y-1 pl-4"},[e("li",null,"系统会为新的 Key 自动建立粘性映射,保持同一会话命中同一个 Key。"),e("li",null,"追加模式会保留现有 Key 并在末尾追加新的 Key。"),e("li",null,"覆盖模式会先清空旧 Key 再写入上方的新列表。"),e("li",null,"删除模式会根据输入精准移除指定 Key,适合快速处理失效或被封禁的 Key。")])],-1))])])):m("",!0),!(G.value&&f.value)&&r.value.platform!=="claude-console"&&r.value.platform!=="ccr"&&r.value.platform!=="bedrock"&&r.value.platform!=="azure_openai"&&r.value.platform!=="openai-responses"?(o(),n("div",Vp,[t[457]||(t[457]=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",Op,[e("div",null,[t[455]||(t[455]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新的 Access Token",-1)),v(e("textarea",{"onUpdate:modelValue":t[155]||(t[155]=i=>r.value.accessToken=i),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),[[P,r.value.accessToken]])]),e("div",null,[t[456]||(t[456]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新的 Refresh Token",-1)),v(e("textarea",{"onUpdate:modelValue":t[156]||(t[156]=i=>r.value.refreshToken=i),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),[[P,r.value.refreshToken]])])])])):m("",!0),r.value.platform==="droid"?(o(),n("div",Ep,[t[458]||(t[458]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),v(e("input",{"onUpdate:modelValue":t[157]||(t[157]=i=>r.value.userAgent=i),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:"factory-cli/0.32.1",type:"text"},null,512),[[P,r.value.userAgent]]),t[459]||(t[459]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空使用默认值 factory-cli/0.32.1,可根据需要自定义 ",-1))])):m("",!0),He(Wr,{modelValue:r.value.proxy,"onUpdate:modelValue":t[158]||(t[158]=i=>r.value.proxy=i)},null,8,["modelValue"]),e("div",Np,[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[159]||(t[159]=i=>d.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:Z.value,type:"button",onClick:nt},[Z.value?(o(),n("div",qp)):m("",!0),c(" "+u(Z.value?"更新中...":"更新"),1)],8,Fp)])])):m("",!0)])])):m("",!0),He(sa,{"cancel-text":at(R).cancelText,"confirm-text":at(R).confirmText,message:at(R).message,show:at(B),title:at(R).title,onCancel:at(k),onConfirm:at(x)},null,8,["cancel-text","confirm-text","message","show","title","onCancel","onConfirm"]),et.value?(o(),Ye(lo,{key:1,onClose:t[160]||(t[160]=i=>et.value=!1),onRefresh:Er})):m("",!0),Ne.value?(o(),Ye(an,{key:2,"account-id":(ae=g.account)==null?void 0:ae.id,"account-name":(ye=g.account)==null?void 0:ye.name,onClose:t[161]||(t[161]=i=>Ne.value=!1),onRefresh:$t},null,8,["account-id","account-name"])):m("",!0)])}}},ta=pr(Gp,[["__scopeId","data-v-d2a6d5e3"]]),Wp={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},Bp={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-2xl overflow-y-auto rounded-2xl bg-white/90 p-4 shadow-xl backdrop-blur-xl dark:bg-gray-800/95 dark:shadow-2xl sm:p-6 md:p-8"},Qp={class:"mb-4 flex items-center justify-between sm:mb-6"},Hp={class:"flex items-center gap-2 sm:gap-3"},Jp={class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"},Yp={class:"space-y-6"},Zp={key:0,class:"mt-1 text-xs text-red-500"},Xp={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},eg={key:0,class:"mt-1 text-xs text-red-500"},tg={class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},rg=["placeholder","required"],ag={key:0,class:"mt-1 text-xs text-red-500"},sg={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},lg={class:"mb-3"},og={class:"inline-flex cursor-pointer items-center"},ng={key:0},ig={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},dg={class:"mb-3 space-y-2"},ug=["onUpdate:modelValue"],pg=["onUpdate:modelValue"],gg=["onClick"],yg={class:"mt-2 flex gap-3"},mg=["disabled"],cg={key:0,class:"loading-spinner mr-2"},xg={__name:"CcrAccountForm",props:{account:{type:Object,default:null}},emits:["close","success"],setup(J,{emit:Ve}){const g=J,N=Ve,U=w(!0),B=ie(()=>!!g.account),R=w(!1),K=w({name:"",description:"",apiUrl:"",apiKey:"",priority:50,userAgent:"",rateLimitDuration:60,dailyQuota:0,quotaResetTime:"00:00",proxy:null,supportedModels:{}}),x=w(!0),k=w({}),G=w([]),fe=()=>{const h={};for(const y of G.value){const z=(y.from||"").trim(),ee=(y.to||"").trim();z&&ee&&(h[z]=ee)}return h},Y=()=>{G.value.push({from:"",to:""})},pe=h=>{G.value.splice(h,1)},Z=()=>{const h={};return(!K.value.name||K.value.name.trim().length===0)&&(h.name="名称不能为空"),(!K.value.apiUrl||K.value.apiUrl.trim().length===0)&&(h.apiUrl="API URL 不能为空"),!B.value&&(!K.value.apiKey||K.value.apiKey.trim().length===0)&&(h.apiKey="API Key 不能为空"),k.value=h,Object.keys(h).length===0},X=async()=>{if(Z()){R.value=!0;try{if(B.value){const h={name:K.value.name,description:K.value.description,apiUrl:K.value.apiUrl,priority:K.value.priority,userAgent:K.value.userAgent,rateLimitDuration:x.value?Number(K.value.rateLimitDuration||60):0,dailyQuota:Number(K.value.dailyQuota||0),quotaResetTime:K.value.quotaResetTime||"00:00",proxy:K.value.proxy||null,supportedModels:fe()};K.value.apiKey&&K.value.apiKey.trim().length>0&&(h.apiKey=K.value.apiKey);const y=await F.put(`/admin/ccr-accounts/${g.account.id}`,h);y.success?N("success"):L(y.message||"保存失败","error")}else{const h={name:K.value.name,description:K.value.description,apiUrl:K.value.apiUrl,apiKey:K.value.apiKey,priority:Number(K.value.priority||50),supportedModels:fe(),userAgent:K.value.userAgent,rateLimitDuration:x.value?Number(K.value.rateLimitDuration||60):0,proxy:K.value.proxy,accountType:"shared",dailyQuota:Number(K.value.dailyQuota||0),quotaResetTime:K.value.quotaResetTime||"00:00"},y=await F.post("/admin/ccr-accounts",h);y.success?N("success"):L(y.message||"创建失败","error")}}catch(h){L(h.message||"请求失败","error")}finally{R.value=!1}}},V=()=>{if(!g.account)return;const h=g.account;K.value.name=h.name||"",K.value.description=h.description||"",K.value.apiUrl=h.apiUrl||"",K.value.priority=Number(h.priority||50),K.value.userAgent=h.userAgent||"",K.value.rateLimitDuration=Number(h.rateLimitDuration||60),K.value.dailyQuota=Number(h.dailyQuota||0),K.value.quotaResetTime=h.quotaResetTime||"00:00",K.value.proxy=h.proxy||null,x.value=K.value.rateLimitDuration>0,G.value=[];const y=h.supportedModels||{};if(y&&typeof y=="object")for(const z of Object.keys(y))G.value.push({from:z,to:y[z]})};return ur(()=>{B.value&&V()}),he(()=>g.account,()=>{B.value&&V()}),(h,y)=>(o(),Ye(jt,{to:"body"},[U.value?(o(),n("div",Wp,[e("div",Bp,[e("div",Qp,[e("div",Hp,[y[13]||(y[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",Jp,u(B.value?"编辑 CCR 账户":"添加 CCR 账户"),1)]),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300",onClick:y[0]||(y[0]=z=>h.$emit("close"))},y[14]||(y[14]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("div",Yp,[e("div",null,[y[15]||(y[15]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称 *",-1)),v(e("input",{"onUpdate:modelValue":y[1]||(y[1]=z=>K.value.name=z),class:C(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"border-red-500":k.value.name}]),placeholder:"为账户设置一个易识别的名称",required:"",type:"text"},null,2),[[P,K.value.name]]),k.value.name?(o(),n("p",Zp,u(k.value.name),1)):m("",!0)]),e("div",null,[y[16]||(y[16]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),v(e("textarea",{"onUpdate:modelValue":y[2]||(y[2]=z=>K.value.description=z),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),[[P,K.value.description]])]),e("div",Xp,[e("div",null,[y[17]||(y[17]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API URL *",-1)),v(e("input",{"onUpdate:modelValue":y[3]||(y[3]=z=>K.value.apiUrl=z),class:C(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"border-red-500":k.value.apiUrl}]),placeholder:"例如:https://api.example.com/v1/messages",required:"",type:"text"},null,2),[[P,K.value.apiUrl]]),k.value.apiUrl?(o(),n("p",eg,u(k.value.apiUrl),1)):m("",!0)]),e("div",null,[e("label",tg,"API Key "+u(B.value?"(留空不更新)":"*"),1),v(e("input",{"onUpdate:modelValue":y[4]||(y[4]=z=>K.value.apiKey=z),class:C(["form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"border-red-500":k.value.apiKey}]),placeholder:B.value?"留空表示不更新":"必填",required:!B.value,type:"password"},null,10,rg),[[P,K.value.apiKey]]),k.value.apiKey?(o(),n("p",ag,u(k.value.apiKey),1)):m("",!0)])]),e("div",sg,[e("div",null,[y[18]||(y[18]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"优先级",-1)),v(e("input",{"onUpdate:modelValue":y[5]||(y[5]=z=>K.value.priority=z),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),[[P,K.value.priority,void 0,{number:!0}]]),y[19]||(y[19]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 建议范围:1-100,数字越小优先级越高 ",-1))]),e("div",null,[y[20]||(y[20]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),v(e("input",{"onUpdate:modelValue":y[6]||(y[6]=z=>K.value.userAgent=z),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),[[P,K.value.userAgent]])])]),e("div",null,[y[24]||(y[24]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",lg,[e("label",og,[v(e("input",{"onUpdate:modelValue":y[7]||(y[7]=z=>x.value=z),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),[[Oe,x.value]]),y[21]||(y[21]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制(429 时暂停调度)",-1))])]),x.value?(o(),n("div",ng,[y[22]||(y[22]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),v(e("input",{"onUpdate:modelValue":y[8]||(y[8]=z=>K.value.rateLimitDuration=z),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),[[P,K.value.rateLimitDuration,void 0,{number:!0}]]),y[23]||(y[23]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):m("",!0)]),e("div",ig,[e("div",null,[y[25]||(y[25]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"每日额度限制 ($)",-1)),v(e("input",{"onUpdate:modelValue":y[9]||(y[9]=z=>K.value.dailyQuota=z),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),[[P,K.value.dailyQuota,void 0,{number:!0}]]),y[26]||(y[26]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 设置每日使用额度,0 表示不限制 ",-1))]),e("div",null,[y[27]||(y[27]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"额度重置时间",-1)),v(e("input",{"onUpdate:modelValue":y[10]||(y[10]=z=>K.value.quotaResetTime=z),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),[[P,K.value.quotaResetTime]]),y[28]||(y[28]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},"每日自动重置额度的时间",-1))])]),e("div",null,[y[32]||(y[32]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"模型映射表 (可选)",-1)),y[33]||(y[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"}),c(" 留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。 ")])],-1)),e("div",dg,[(o(!0),n(Ce,null,Be(G.value,(z,ee)=>(o(),n("div",{key:ee,class:"flex items-center gap-2"},[v(e("input",{"onUpdate:modelValue":E=>z.from=E,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,ug),[[P,z.from]]),y[30]||(y[30]=e("i",{class:"fas fa-arrow-right text-gray-400 dark:text-gray-500"},null,-1)),v(e("input",{"onUpdate:modelValue":E=>z.to=E,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,pg),[[P,z.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:E=>pe(ee)},y[29]||(y[29]=[e("i",{class:"fas fa-trash"},null,-1)]),8,gg)]))),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:Y},y[31]||(y[31]=[e("i",{class:"fas fa-plus mr-2"},null,-1),c(" 添加模型映射 ",-1)]))]),e("div",null,[He(Wr,{modelValue:K.value.proxy,"onUpdate:modelValue":y[11]||(y[11]=z=>K.value.proxy=z)},null,8,["modelValue"])]),e("div",yg,[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:y[12]||(y[12]=z=>h.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:R.value,type:"button",onClick:X},[R.value?(o(),n("div",cg)):m("",!0),c(" "+u(R.value?B.value?"保存中...":"创建中...":B.value?"保存":"创建"),1)],8,mg)])])])])):m("",!0)]))}},ra=pr(xg,[["__scopeId","data-v-2a966370"]]),fg={key:0,class:"fixed inset-0 z-[1050] flex items-center justify-center bg-gray-900/40 backdrop-blur-sm"},bg={class:"relative z-10 mx-3 flex max-h-[92vh] w-full max-w-6xl flex-col overflow-hidden rounded-2xl border border-gray-200/70 bg-white/95 shadow-2xl ring-1 ring-black/5 transition-all dark:border-gray-700/60 dark:bg-gray-900/95 dark:ring-white/10 sm:mx-4 sm:p-1"},vg={class:"flex flex-col gap-3 border-b border-gray-100 bg-white/80 px-5 py-4 backdrop-blur dark:border-gray-800 dark:bg-gray-900/80 sm:flex-row sm:items-center sm:justify-between"},kg={class:"flex flex-1 items-start gap-3"},hg={class:"space-y-1"},wg={class:"flex flex-wrap items-center gap-2"},$g={class:"text-lg font-semibold text-gray-900 dark:text-gray-100 sm:text-xl"},Ag={key:0,class:"inline-flex items-center rounded-full bg-blue-100 px-2.5 py-0.5 text-xs font-medium text-blue-700 dark:bg-blue-500/10 dark:text-blue-300"},Cg={key:1,class:"inline-flex items-center rounded-full bg-purple-100 px-2.5 py-0.5 text-xs font-medium text-purple-700 dark:bg-purple-500/10 dark:text-purple-300"},Ug={class:"text-xs text-gray-500 dark:text-gray-400 sm:text-sm"},Ig={key:0},Tg={class:"flex-1 overflow-y-auto px-5 py-4 sm:px-6"},_g={key:0,class:"flex h-[50vh] items-center justify-center"},Kg={class:"mb-5 grid grid-cols-1 gap-4 sm:grid-cols-2 xl:grid-cols-4"},Mg={class:"flex items-start justify-between"},Sg={class:"text-xs font-medium uppercase tracking-wide text-gray-500 dark:text-gray-400"},Dg={class:"mt-2 text-xl font-semibold text-gray-900 dark:text-gray-100"},Pg={class:"mt-1 text-xs text-gray-400 dark:text-gray-500"},Lg={class:"flex h-10 w-10 items-center justify-center rounded-xl bg-gray-50 dark:bg-gray-800"},zg={class:"mb-6 grid grid-cols-1 gap-4 lg:grid-cols-3"},jg={class:"space-y-3 rounded-2xl border border-blue-100 bg-blue-50/60 p-4 dark:border-blue-500/20 dark:bg-blue-900/20"},Rg={class:"rounded-xl bg-white/80 p-3 text-sm text-gray-600 shadow-sm ring-1 ring-blue-100 dark:bg-gray-900/80 dark:text-gray-300 dark:ring-blue-500/20"},Vg={class:"flex items-center justify-between"},Og={class:"font-semibold text-gray-900 dark:text-gray-100"},Eg={class:"mt-2 flex items-center justify-between"},Ng={class:"font-semibold text-gray-900 dark:text-gray-100"},Fg={class:"mt-2 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},qg={class:"space-y-3 rounded-2xl border border-amber-100 bg-amber-50/70 p-4 dark:border-amber-500/20 dark:bg-amber-900/20"},Gg={class:"rounded-xl bg-white/80 p-3 text-sm text-gray-600 shadow-sm ring-1 ring-amber-100 dark:bg-gray-900/80 dark:text-gray-300 dark:ring-amber-500/20"},Wg={class:"flex items-center justify-between"},Bg={class:"font-semibold text-gray-900 dark:text-gray-100"},Qg={class:"mt-2 flex items-center justify-between"},Hg={class:"font-semibold text-gray-900 dark:text-gray-100"},Jg={class:"mt-2 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},Yg={class:"space-y-3 rounded-2xl border border-emerald-100 bg-emerald-50/60 p-4 dark:border-emerald-500/20 dark:bg-emerald-900/20"},Zg={class:"rounded-xl bg-white/80 p-3 text-sm text-gray-600 shadow-sm ring-1 ring-emerald-100 dark:bg-gray-900/80 dark:text-gray-300 dark:ring-emerald-500/20"},Xg={class:"flex items-center justify-between"},ey={class:"font-semibold text-gray-900 dark:text-gray-100"},ty={class:"mt-2 flex items-center justify-between"},ry={class:"font-semibold text-gray-900 dark:text-gray-100"},ay={class:"mt-2 flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},sy={class:"mb-6 grid grid-cols-1 gap-4 lg:grid-cols-3"},ly={class:"rounded-2xl border border-gray-100 bg-white/80 p-4 shadow-sm dark:border-gray-700 dark:bg-gray-900/70"},oy={class:"space-y-2 text-sm text-gray-600 dark:text-gray-300"},ny={class:"flex items-center justify-between"},iy={class:"font-semibold text-gray-900 dark:text-gray-100"},dy={class:"flex items-center justify-between"},uy={class:"font-semibold text-gray-900 dark:text-gray-100"},py={class:"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},gy={class:"rounded-2xl border border-gray-100 bg-white/80 p-4 shadow-sm dark:border-gray-700 dark:bg-gray-900/70"},yy={class:"space-y-2 text-sm text-gray-600 dark:text-gray-300"},my={class:"flex items-center justify-between"},cy={class:"font-semibold text-gray-900 dark:text-gray-100"},xy={class:"flex items-center justify-between"},fy={class:"font-semibold text-gray-900 dark:text-gray-100"},by={class:"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},vy={class:"rounded-2xl border border-gray-100 bg-white/80 p-4 shadow-sm dark:border-gray-700 dark:bg-gray-900/70"},ky={class:"space-y-2 text-sm text-gray-600 dark:text-gray-300"},hy={class:"flex items-center justify-between"},wy={class:"font-semibold text-gray-900 dark:text-gray-100"},$y={class:"flex items-center justify-between"},Ay={class:"font-semibold text-gray-900 dark:text-gray-100"},Cy={class:"flex items-center justify-between text-xs text-gray-500 dark:text-gray-400"},Uy={class:"mb-6 rounded-2xl border border-gray-100 bg-white/80 p-4 shadow-sm dark:border-gray-700 dark:bg-gray-900/70"},Iy={class:"mb-4 flex flex-wrap items-center justify-between gap-2"},Ty={class:"text-xs text-gray-400 dark:text-gray-500"},_y={class:"h-[260px] sm:h-[300px]"},Ky={__name:"AccountUsageDetailModal",props:{show:{type:Boolean,default:!1},account:{type:Object,default:()=>({})},history:{type:Array,default:()=>[]},summary:{type:Object,default:()=>({})},overview:{type:Object,default:()=>({})},generatedAt:{type:String,default:""},loading:{type:Boolean,default:!1}},emits:["close"],setup(J,{emit:Ve}){const g=J,N=Ve,U=fa(),{isDarkMode:B}=ma(U),R=ca(),K=w(null);let x=null;const k={claude:"Claude","claude-console":"Claude Console",openai:"OpenAI","openai-responses":"OpenAI Responses",gemini:"Gemini","gemini-api":"Gemini API",droid:"Droid"},G=ie(()=>{var Q;return k[(Q=g.account)==null?void 0:Q.platform]||"未知平台"}),fe=ie(()=>{var Q;return(Q=g.account)!=null&&Q.accountType?g.account.accountType==="dedicated"?"专属":g.account.accountType==="group"?"分组":"共享":"共享"}),Y=ie(()=>({text:B.value?"#e5e7eb":"#374151",grid:B.value?"rgba(75, 85, 99, 0.25)":"rgba(209, 213, 219, 0.4)",cost:"#3b82f6",costFill:"rgba(59, 130, 246, 0.15)",requests:"#f97316"})),pe=ie(()=>{var Q;return((Q=g.summary)==null?void 0:Q.totalTokens)||0}),Z=ie(()=>{var Q,I;return((I=(Q=g.overview)==null?void 0:Q.total)==null?void 0:I.inputTokens)||0}),X=ie(()=>{var Q,I;return((I=(Q=g.overview)==null?void 0:Q.total)==null?void 0:I.outputTokens)||0}),V=Q=>{const I=Number(Q||0);return I>=1e6?`${(I/1e6).toFixed(2)}M`:I>=1e3?`${(I/1e3).toFixed(2)}K`:I.toLocaleString()},h=Q=>{const I=Number(Q||0);return Number.isNaN(I)?"$0.000000":I>=1?`$${I.toFixed(2)}`:I>=.01?`$${I.toFixed(3)}`:`$${I.toFixed(6)}`},y=Q=>Math.round((Number(Q)||0)*100)/100,z=Q=>{if(!Q)return"-";const I=new Date(Q);if(Number.isNaN(I.getTime())){const Ne=Q.split("-");return Ne.length===3?`${Ne[1]}-${Ne[2]}`:Q}const Ue=String(I.getMonth()+1).padStart(2,"0"),re=String(I.getDate()).padStart(2,"0");return`${Ue}-${re}`},ee=Q=>{if(!Q)return"暂无";const I=new Date(Q);return Number.isNaN(I.getTime())?Q:`${I.getFullYear()}-${String(I.getMonth()+1).padStart(2,"0")}-${String(I.getDate()).padStart(2,"0")} ${String(I.getHours()).padStart(2,"0")}:${String(I.getMinutes()).padStart(2,"0")}`},E=(Q,I)=>{if(!Q)return 0;const Ue=g.history.find(re=>re.date===Q);return Ue&&Ue[I]||0},_=ie(()=>{var Q,I;return g.generatedAt||((Q=g.summary)==null?void 0:Q.generatedAt)||((I=g.summary)==null?void 0:I.generated_at)||""}),q=ie(()=>{var Q,I,Ue,re,Ne,H,$,j;return[{key:"totalCost",label:"30天总费用",value:((Q=g.summary)==null?void 0:Q.totalCostFormatted)||"$0.000000",subtitle:"累计成本",icon:"fa-file-invoice-dollar",iconClass:"text-emerald-500"},{key:"totalRequests",label:"30天总请求",value:V(((I=g.summary)==null?void 0:I.totalRequests)||0),subtitle:"调用次数",icon:"fa-paper-plane",iconClass:"text-blue-500"},{key:"avgCost",label:"日均费用",value:((Ue=g.summary)==null?void 0:Ue.avgDailyCostFormatted)||h(((re=g.summary)==null?void 0:re.avgDailyCost)||0),subtitle:(Ne=g.summary)!=null&&Ne.actualDaysUsed&&((H=g.summary)==null?void 0:H.actualDaysUsed)<(($=g.summary)==null?void 0:$.days)?`基于 ${g.summary.actualDaysUsed} 天实际使用`:"平均每日成本",icon:"fa-wave-square",iconClass:"text-purple-500"},{key:"avgRequests",label:"日均请求",value:V(y(((j=g.summary)==null?void 0:j.avgDailyRequests)||0)),subtitle:"平均每日调用",icon:"fa-chart-line",iconClass:"text-orange-500"}]}),we=async()=>{if(await Gr(),!g.show||!K.value)return;if(x&&x.destroy(),!g.history||g.history.length===0){x=null;return}const Q=g.history.map(re=>re.label),I=g.history.map(re=>re.cost||0),Ue=g.history.map(re=>re.requests||0);x=new ba(K.value,{type:"line",data:{labels:Q,datasets:[{label:"费用 (USD)",data:I,borderColor:Y.value.cost,backgroundColor:Y.value.costFill,tension:.35,fill:!0,yAxisID:"y"},{label:"请求次数",data:Ue,borderColor:Y.value.requests,backgroundColor:"transparent",tension:.35,yAxisID:"y1"}]},options:{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{legend:{labels:{color:Y.value.text}},tooltip:{callbacks:{label(re){return re.dataset.label==="费用 (USD)"?`${re.dataset.label}: ${h(re.parsed.y)}`:`${re.dataset.label}: ${V(re.parsed.y)} 次`}}}},scales:{x:{ticks:{color:Y.value.text},grid:{color:Y.value.grid}},y:{position:"left",ticks:{color:Y.value.text,callback:re=>h(re)},grid:{color:Y.value.grid}},y1:{position:"right",ticks:{color:Y.value.text,callback:re=>V(re)},grid:{drawOnChartArea:!1}}}}})},ue=()=>{x&&(x.destroy(),x=null)},$e=()=>{ue(),N("close")},Le=()=>{var Q;(Q=g.account)!=null&&Q.id&&R.push({path:`/accounts/${g.account.id}/usage-records`,query:{platform:g.account.platform||g.account.accountType}})};return he(()=>g.show,Q=>{Q&&!g.loading?we():Q||ue()}),he(()=>g.loading,Q=>{!Q&&g.show&&we()}),he(()=>g.history,()=>{g.show&&!g.loading&&we()},{deep:!0}),he(B,()=>{g.show&&!g.loading&&we()}),Or(()=>{ue()}),(Q,I)=>{var Ue,re,Ne,H,$,j,ce,ge,de,r,W,ke,qe,De,ot,it,st,ct,kt,xt,T,It,ht,ft,Ze,dt,f,p,D,Xe,Tt,bt,_t,Rt,wt,Vt,Kt,vt,pt,Ot,nt;return o(),Ye(jt,{to:"body"},[J.show?(o(),n("div",fg,[e("div",{class:"absolute inset-0",onClick:$e}),e("div",bg,[e("div",vg,[e("div",kg,[I[2]||(I[2]=e("div",{class:"flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-xl bg-gradient-to-br from-blue-500 to-indigo-500 text-white shadow-lg"},[e("i",{class:"fas fa-chart-area text-lg"})],-1)),e("div",hg,[e("div",wg,[e("h3",$g,u(((Ue=J.account)==null?void 0:Ue.name)||((re=J.account)==null?void 0:re.email)||"账号使用详情"),1),(Ne=J.account)!=null&&Ne.platform?(o(),n("span",Ag,[I[0]||(I[0]=e("i",{class:"fas fa-layer-group mr-1"},null,-1)),c(u(G.value),1)])):m("",!0),(H=J.account)!=null&&H.accountType?(o(),n("span",Cg,[I[1]||(I[1]=e("i",{class:"fas fa-user-tag mr-1"},null,-1)),c(u(fe.value),1)])):m("",!0)]),e("p",Ug,[c(" 近 "+u((($=J.summary)==null?void 0:$.days)||30)+" 天内的费用与请求趋势 ",1),(j=J.summary)!=null&&j.actualDaysUsed&&((ce=J.summary)==null?void 0:ce.actualDaysUsed)<((ge=J.summary)==null?void 0:ge.days)?(o(),n("span",Ig," (日均基于实际使用 "+u(J.summary.actualDaysUsed)+" 天) ",1)):m("",!0)])])]),e("div",{class:"flex items-center gap-2"},[e("button",{class:"flex items-center gap-2 rounded-full bg-purple-100 px-3 py-2 text-xs font-semibold text-purple-700 transition hover:bg-purple-200 dark:bg-purple-500/10 dark:text-purple-200 dark:hover:bg-purple-500/20",onClick:Le},I[3]||(I[3]=[e("i",{class:"fas fa-clock"},null,-1),c(" 请求时间线 ",-1)])),e("button",{class:"flex h-10 w-10 items-center justify-center rounded-full bg-gray-100 text-gray-500 transition hover:bg-gray-200 hover:text-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200",onClick:$e},I[4]||(I[4]=[e("i",{class:"fas fa-times"},null,-1)]))])]),e("div",Tg,[J.loading?(o(),n("div",_g,I[5]||(I[5]=[e("div",{class:"loading-spinner h-12 w-12 border-4 border-blue-500"},null,-1)]))):(o(),n(Ce,{key:1},[e("div",Kg,[(o(!0),n(Ce,null,Be(q.value,Fe=>(o(),n("div",{key:Fe.key,class:"rounded-2xl border border-gray-100 bg-white/80 p-4 shadow-sm transition dark:border-gray-700 dark:bg-gray-900/70"},[e("div",Mg,[e("div",null,[e("p",Sg,u(Fe.label),1),e("p",Dg,u(Fe.value),1),e("p",Pg,u(Fe.subtitle),1)]),e("div",Lg,[e("i",{class:C(["fas",Fe.icon,Fe.iconClass])},null,2)])])]))),128))]),e("div",zg,[e("div",jg,[I[9]||(I[9]=e("div",{class:"flex items-center gap-2 text-sm font-semibold text-blue-700 dark:text-blue-300"},[e("i",{class:"fas fa-sun"}),c(" 今日概览 ")],-1)),e("div",Rg,[e("div",Vg,[I[6]||(I[6]=e("span",null,"费用",-1)),e("span",Og,u(((r=(de=J.summary)==null?void 0:de.today)==null?void 0:r.costFormatted)||"$0.000000"),1)]),e("div",Eg,[I[7]||(I[7]=e("span",null,"请求",-1)),e("span",Ng,u(V(((ke=(W=J.summary)==null?void 0:W.today)==null?void 0:ke.requests)||0)),1)]),e("div",Fg,[I[8]||(I[8]=e("span",null,"Tokens",-1)),e("span",null,u(V(((De=(qe=J.summary)==null?void 0:qe.today)==null?void 0:De.tokens)||0)),1)])])]),e("div",qg,[I[13]||(I[13]=e("div",{class:"flex items-center gap-2 text-sm font-semibold text-amber-700 dark:text-amber-300"},[e("i",{class:"fas fa-crown"}),c(" 最高费用日 ")],-1)),e("div",Gg,[e("div",Wg,[I[10]||(I[10]=e("span",null,"日期",-1)),e("span",Bg,u(z((it=(ot=J.summary)==null?void 0:ot.highestCostDay)==null?void 0:it.date)),1)]),e("div",Qg,[I[11]||(I[11]=e("span",null,"费用",-1)),e("span",Hg,u(((ct=(st=J.summary)==null?void 0:st.highestCostDay)==null?void 0:ct.formattedCost)||"$0.000000"),1)]),e("div",Jg,[I[12]||(I[12]=e("span",null,"请求",-1)),e("span",null,u(V(E((xt=(kt=J.summary)==null?void 0:kt.highestCostDay)==null?void 0:xt.date,"requests"))),1)])])]),e("div",Yg,[I[17]||(I[17]=e("div",{class:"flex items-center gap-2 text-sm font-semibold text-emerald-700 dark:text-emerald-300"},[e("i",{class:"fas fa-chart-bar"}),c(" 最高请求日 ")],-1)),e("div",Zg,[e("div",Xg,[I[14]||(I[14]=e("span",null,"日期",-1)),e("span",ey,u(z((It=(T=J.summary)==null?void 0:T.highestRequestDay)==null?void 0:It.date)),1)]),e("div",ty,[I[15]||(I[15]=e("span",null,"请求",-1)),e("span",ry,u(V(((ft=(ht=J.summary)==null?void 0:ht.highestRequestDay)==null?void 0:ft.requests)||0)),1)]),e("div",ay,[I[16]||(I[16]=e("span",null,"费用",-1)),e("span",null,u(h(E((dt=(Ze=J.summary)==null?void 0:Ze.highestRequestDay)==null?void 0:dt.date,"cost"))),1)])])])]),e("div",sy,[e("div",ly,[I[21]||(I[21]=e("h4",{class:"mb-3 flex items-center text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-database mr-2 text-indigo-500"}),c(" 累计 Token ")],-1)),e("div",oy,[e("div",ny,[I[18]||(I[18]=e("span",null,"30天总计",-1)),e("span",iy,u(V(pe.value)),1)]),e("div",dy,[I[19]||(I[19]=e("span",null,"日均 Token",-1)),e("span",uy,u(V(Math.round(((f=J.summary)==null?void 0:f.avgDailyTokens)||0))),1)]),e("div",py,[I[20]||(I[20]=e("span",null,"输入 / 输出",-1)),e("span",null,u(V(Z.value))+" / "+u(V(X.value)),1)])])]),e("div",gy,[I[25]||(I[25]=e("h4",{class:"mb-3 flex items-center text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-tachometer-alt mr-2 text-purple-500"}),c(" 平均速率 ")],-1)),e("div",yy,[e("div",my,[I[22]||(I[22]=e("span",null,"RPM",-1)),e("span",cy,u(((D=(p=J.overview)==null?void 0:p.averages)==null?void 0:D.rpm)??0),1)]),e("div",xy,[I[23]||(I[23]=e("span",null,"TPM",-1)),e("span",fy,u(((Tt=(Xe=J.overview)==null?void 0:Xe.averages)==null?void 0:Tt.tpm)??0),1)]),e("div",by,[I[24]||(I[24]=e("span",null,"日均请求 / Token",-1)),e("span",null,u(V(Math.round((((_t=(bt=J.overview)==null?void 0:bt.averages)==null?void 0:_t.dailyRequests)||0)*100)/100))+" / "+u(V(Math.round((((wt=(Rt=J.overview)==null?void 0:Rt.averages)==null?void 0:wt.dailyTokens)||0)*100)/100)),1)])])]),e("div",vy,[I[29]||(I[29]=e("h4",{class:"mb-3 flex items-center text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-layer-group mr-2 text-teal-500"}),c(" 最近统计 ")],-1)),e("div",ky,[e("div",hy,[I[26]||(I[26]=e("span",null,"今日请求",-1)),e("span",wy,u(V(((Kt=(Vt=J.overview)==null?void 0:Vt.daily)==null?void 0:Kt.requests)||0)),1)]),e("div",$y,[I[27]||(I[27]=e("span",null,"今日 Token",-1)),e("span",Ay,u(V(((pt=(vt=J.overview)==null?void 0:vt.daily)==null?void 0:pt.allTokens)||0)),1)]),e("div",Cy,[I[28]||(I[28]=e("span",null,"今日费用",-1)),e("span",null,u(h(((nt=(Ot=J.overview)==null?void 0:Ot.daily)==null?void 0:nt.cost)||0)),1)])])])]),e("div",Uy,[e("div",Iy,[I[30]||(I[30]=e("h4",{class:"flex items-center text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-chart-line mr-2 text-blue-500"}),c(" 30天费用与请求趋势 ")],-1)),e("span",Ty," 最新更新时间:"+u(ee(_.value)),1)]),e("div",_y,[e("canvas",{ref_key:"chartCanvas",ref:K,class:"h-full w-full"},null,512)])])],64))])])])):m("",!0)])}}},My=pr(Ky,[["__scopeId","data-v-ff3a5b72"]]),Sy={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-4"},Dy={class:"modal-content relative mx-auto w-full max-w-lg p-8"},Py={class:"mb-6 flex items-center justify-between"},Ly={class:"flex items-center gap-3"},zy={class:"text-sm text-gray-600 dark:text-gray-400"},jy={class:"space-y-6"},Ry={class:"rounded-lg border border-gray-200 bg-gradient-to-r from-gray-50 to-gray-100 p-4 dark:border-gray-600 dark:from-gray-700 dark:to-gray-800"},Vy={class:"flex items-center justify-between"},Oy={class:"text-sm font-semibold text-gray-800 dark:text-gray-200"},Ey={class:"flex h-12 w-12 items-center justify-center rounded-lg bg-white shadow-sm dark:bg-gray-700"},Ny={class:"mb-3 grid grid-cols-3 gap-2"},Fy=["onClick"],qy={key:0,class:"animate-fadeIn"},Gy=["min"],Wy={key:1,class:"rounded-lg border border-blue-200 bg-gradient-to-r from-blue-50 to-indigo-50 p-4 dark:border-blue-700 dark:from-blue-900/20 dark:to-indigo-900/20"},By={class:"flex items-center justify-between"},Qy={class:"text-sm font-semibold text-blue-900 dark:text-blue-200"},Hy={class:"flex gap-3 pt-2"},Jy=["disabled"],Yy={key:0,class:"loading-spinner mr-2"},Zy={key:1,class:"fas fa-save mr-2"},Xy={__name:"AccountExpiryEditModal",props:{show:{type:Boolean,required:!0},account:{type:Object,required:!0}},emits:["close","save"],setup(J,{expose:Ve,emit:g}){const N=J,U=g,B=w(!1),R=xa({expireDuration:"",customExpireDate:"",expiresAt:null}),K=[{value:"",label:"永不过期"},{value:"30d",label:"30 天"},{value:"90d",label:"90 天"},{value:"180d",label:"180 天"},{value:"365d",label:"1 年"},{value:"730d",label:"2 年"}],x=ie(()=>{const h=new Date;return h.setMinutes(h.getMinutes()+1),h.toISOString().slice(0,16)});he(()=>N.show,h=>{h&&k()}),he(()=>{var h;return(h=N.account)==null?void 0:h.id},h=>{h&&N.show&&k()});const k=()=>{B.value=!1,N.account.expiresAt?(R.expireDuration="custom",R.customExpireDate=new Date(N.account.expiresAt).toISOString().slice(0,16),R.expiresAt=N.account.expiresAt):(R.expireDuration="",R.customExpireDate="",R.expiresAt=null)},G=h=>{if(R.expireDuration=h,!h){R.expiresAt=null;return}if(h==="custom")return;const y=new Date,z=h.match(/(\d+)([dhmy])/);if(z){const[,ee,E]=z,_=parseInt(ee);switch(E){case"d":y.setDate(y.getDate()+_);break;case"h":y.setHours(y.getHours()+_);break;case"m":y.setMonth(y.getMonth()+_);break;case"y":y.setFullYear(y.getFullYear()+_);break}R.expiresAt=y.toISOString()}},fe=()=>{if(R.customExpireDate)try{const[h,y]=R.customExpireDate.split("T"),[z,ee,E]=h.split("-").map(Number),[_,q]=y.split(":").map(Number),we=new Date(z,ee-1,E,_,q,0,0);if(isNaN(we.getTime())){console.error("Invalid date:",R.customExpireDate);return}R.expiresAt=we.toISOString()}catch(h){console.error("Failed to parse custom expire date:",h)}},Y=h=>h?new Date(h).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}):"",pe=h=>h?new Date(h){if(!h)return null;const y=new Date,ee=new Date(h)-y,E=Math.ceil(ee/(1e3*60*60*24));return ee<0?{text:"已过期",class:"text-red-600"}:E<=7?{text:`${E} 天后过期`,class:"text-orange-600"}:E<=30?{text:`${E} 天后过期`,class:"text-yellow-600"}:{text:`${Math.ceil(E/30)} 个月后过期`,class:"text-green-600"}},X=()=>{B.value=!0,U("save",{accountId:N.account.id,expiresAt:R.expiresAt})};return Ve({resetSaving:()=>{B.value=!1}}),(h,y)=>(o(),Ye(jt,{to:"body"},[J.show?(o(),n("div",Sy,[e("div",{class:"fixed inset-0 bg-gray-900 bg-opacity-50 backdrop-blur-sm",onClick:y[0]||(y[0]=z=>h.$emit("close"))}),e("div",Dy,[e("div",Py,[e("div",Ly,[y[6]||(y[6]=e("div",{class:"flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br from-amber-500 to-orange-600"},[e("i",{class:"fas fa-clock text-white"})],-1)),e("div",null,[y[5]||(y[5]=e("h3",{class:"text-xl font-bold text-gray-900 dark:text-gray-100"},"修改到期时间",-1)),e("p",zy,' 为 "'+u(J.account.name||"Account")+'" 设置新的到期时间 ',1)])]),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300",onClick:y[1]||(y[1]=z=>h.$emit("close"))},y[7]||(y[7]=[e("i",{class:"fas fa-times text-xl"},null,-1)]))]),e("div",jy,[e("div",Ry,[e("div",Vy,[e("div",null,[y[10]||(y[10]=e("p",{class:"mb-1 text-xs font-medium text-gray-600 dark:text-gray-400"},"当前状态",-1)),e("p",Oy,[J.account.expiresAt?(o(),n(Ce,{key:0},[c(u(Y(J.account.expiresAt))+" ",1),Z(J.account.expiresAt)?(o(),n("span",{key:0,class:C(["ml-2 text-xs font-normal",Z(J.account.expiresAt).class])}," ("+u(Z(J.account.expiresAt).text)+") ",3)):m("",!0)],64)):(o(),n(Ce,{key:1},[y[8]||(y[8]=e("i",{class:"fas fa-infinity mr-1 text-gray-500"},null,-1)),y[9]||(y[9]=c(" 永不过期 ",-1))],64))])]),e("div",Ey,[e("i",{class:C(["fas fa-hourglass-half text-lg",J.account.expiresAt&&pe(J.account.expiresAt)?"text-red-500":"text-gray-400"])},null,2)])])]),e("div",null,[y[12]||(y[12]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择新的期限",-1)),e("div",Ny,[(o(),n(Ce,null,Be(K,z=>e("button",{key:z.value,class:C(["rounded-lg px-3 py-2 text-sm font-medium transition-all",R.expireDuration===z.value?"bg-blue-500 text-white shadow-md":"bg-gray-100 text-gray-700 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600"]),onClick:ee=>G(z.value)},u(z.label),11,Fy)),64)),e("button",{class:C(["rounded-lg px-3 py-2 text-sm font-medium transition-all",R.expireDuration==="custom"?"bg-blue-500 text-white shadow-md":"bg-gray-100 text-gray-700 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600"]),onClick:y[2]||(y[2]=z=>G("custom"))},y[11]||(y[11]=[e("i",{class:"fas fa-calendar-alt mr-1"},null,-1),c(" 自定义 ",-1)]),2)])]),R.expireDuration==="custom"?(o(),n("div",qy,[y[13]||(y[13]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择日期和时间",-1)),v(e("input",{"onUpdate:modelValue":y[3]||(y[3]=z=>R.customExpireDate=z),class:"form-input w-full border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:x.value,type:"datetime-local",onChange:fe},null,40,Gy),[[P,R.customExpireDate]]),y[14]||(y[14]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 选择一个未来的日期和时间作为到期时间 ",-1))])):m("",!0),R.expiresAt!==J.account.expiresAt?(o(),n("div",Wy,[e("div",By,[e("div",null,[y[17]||(y[17]=e("p",{class:"mb-1 text-xs font-medium text-blue-700 dark:text-blue-400"},[e("i",{class:"fas fa-arrow-right mr-1"}),c(" 新的到期时间 ")],-1)),e("p",Qy,[R.expiresAt?(o(),n(Ce,{key:0},[c(u(Y(R.expiresAt))+" ",1),Z(R.expiresAt)?(o(),n("span",{key:0,class:C(["ml-2 text-xs font-normal",Z(R.expiresAt).class])}," ("+u(Z(R.expiresAt).text)+") ",3)):m("",!0)],64)):(o(),n(Ce,{key:1},[y[15]||(y[15]=e("i",{class:"fas fa-infinity mr-1"},null,-1)),y[16]||(y[16]=c(" 永不过期 ",-1))],64))])]),y[18]||(y[18]=e("div",{class:"flex h-12 w-12 items-center justify-center rounded-lg bg-white shadow-sm dark:bg-gray-700"},[e("i",{class:"fas fa-check text-lg text-green-500"})],-1))])])):m("",!0),e("div",Hy,[e("button",{class:"flex-1 rounded-lg bg-gray-100 px-4 py-2.5 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",onClick:y[4]||(y[4]=z=>h.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-4 py-2.5 font-semibold",disabled:B.value||R.expiresAt===J.account.expiresAt,onClick:X},[B.value?(o(),n("div",Yy)):(o(),n("i",Zy)),c(" "+u(B.value?"保存中...":"保存更改"),1)],8,Jy)])])])])):m("",!0)]))}},em=pr(Xy,[["__scopeId","data-v-f19e4a71"]]),tm={key:0,class:"fixed inset-0 z-[1050] flex items-center justify-center bg-gray-900/40 backdrop-blur-sm"},rm={class:"relative z-10 mx-3 flex w-full max-w-lg flex-col overflow-hidden rounded-2xl border border-gray-200/70 bg-white/95 shadow-2xl ring-1 ring-black/5 transition-all dark:border-gray-700/60 dark:bg-gray-900/95 dark:ring-white/10 sm:mx-4"},am={class:"flex items-center justify-between border-b border-gray-100 bg-white/80 px-5 py-4 backdrop-blur dark:border-gray-800 dark:bg-gray-900/80"},sm={class:"flex items-center gap-3"},lm={class:"text-xs text-gray-500 dark:text-gray-400"},om=["disabled"],nm={class:"px-5 py-4"},im={class:"mb-4 space-y-2"},dm={class:"flex items-center justify-between text-sm"},um={class:"flex items-center justify-between text-sm"},pm={class:"font-medium text-gray-700 dark:text-gray-300"},gm={class:"flex items-center gap-3"},ym={class:"text-xs text-gray-500 dark:text-gray-400"},mm={key:0,class:"mb-4 overflow-hidden rounded-xl border border-gray-200 bg-gray-50 dark:border-gray-700 dark:bg-gray-800/50"},cm={class:"flex items-center justify-between border-b border-gray-200 bg-gray-100 px-3 py-2 dark:border-gray-700 dark:bg-gray-800"},xm={key:0,class:"text-xs text-gray-500 dark:text-gray-500"},fm={class:"max-h-40 overflow-y-auto p-3"},bm={key:0,class:"whitespace-pre-wrap text-sm text-gray-700 dark:text-gray-300"},vm={key:0,class:"inline-block h-4 w-1 animate-pulse bg-blue-500"},km={key:1,class:"flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400"},hm={key:2,class:"text-sm text-red-600 dark:text-red-400"},wm={key:1,class:"mb-4 flex items-center justify-center gap-2 text-xs text-gray-500 dark:text-gray-400"},$m={class:"flex items-center justify-end gap-3 border-t border-gray-100 bg-gray-50/80 px-5 py-3 dark:border-gray-800 dark:bg-gray-900/50"},Am=["disabled"],Cm=["disabled"],Um={__name:"AccountTestModal",props:{show:{type:Boolean,default:!1},account:{type:Object,default:null}},emits:["close"],setup(J,{emit:Ve}){const g=J,N=Ve,U=w("idle"),B=w(""),R=w(""),K=w(0),x=w(null),k=w(null),G=w("claude-sonnet-4-5-20250929"),fe=ie(()=>{if(!g.account)return"未知";const ue=g.account.platform;return ue==="claude"?"Claude OAuth":ue==="claude-console"?"Claude Console":ue}),Y=ie(()=>{if(!g.account)return"fas fa-question";const ue=g.account.platform;return ue==="claude"||ue==="claude-console"?"fas fa-brain":"fas fa-robot"}),pe=ie(()=>{if(!g.account)return"bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300";const ue=g.account.platform;return ue==="claude"?"bg-indigo-100 text-indigo-700 dark:bg-indigo-500/20 dark:text-indigo-300":ue==="claude-console"?"bg-purple-100 text-purple-700 dark:bg-purple-500/20 dark:text-purple-300":"bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300"}),Z=ie(()=>{switch(U.value){case"idle":return"准备就绪";case"testing":return"正在测试...";case"success":return"测试成功";case"error":return"测试失败";default:return"未知状态"}}),X=ie(()=>{switch(U.value){case"idle":return"点击下方按钮开始测试账户连通性";case"testing":return"正在发送测试请求并等待响应";case"success":return"账户可以正常访问 Claude API";case"error":return R.value||"无法连接到 Claude API";default:return""}}),V=ie(()=>{switch(U.value){case"idle":return"border-gray-200 bg-gray-50 dark:border-gray-700 dark:bg-gray-800/50";case"testing":return"border-blue-200 bg-blue-50 dark:border-blue-500/30 dark:bg-blue-900/20";case"success":return"border-green-200 bg-green-50 dark:border-green-500/30 dark:bg-green-900/20";case"error":return"border-red-200 bg-red-50 dark:border-red-500/30 dark:bg-red-900/20";default:return"border-gray-200 bg-gray-50 dark:border-gray-700 dark:bg-gray-800/50"}}),h=ie(()=>{switch(U.value){case"idle":return"bg-gray-200 dark:bg-gray-700";case"testing":return"bg-blue-100 dark:bg-blue-500/30";case"success":return"bg-green-100 dark:bg-green-500/30";case"error":return"bg-red-100 dark:bg-red-500/30";default:return"bg-gray-200 dark:bg-gray-700"}}),y=ie(()=>{switch(U.value){case"idle":return"fa-hourglass-start";case"testing":return"fa-spinner fa-spin";case"success":return"fa-check-circle";case"error":return"fa-exclamation-circle";default:return"fa-question-circle"}}),z=ie(()=>{switch(U.value){case"idle":return"text-gray-500 dark:text-gray-400";case"testing":return"text-blue-500 dark:text-blue-400";case"success":return"text-green-500 dark:text-green-400";case"error":return"text-red-500 dark:text-red-400";default:return"text-gray-500 dark:text-gray-400"}}),ee=ie(()=>{switch(U.value){case"idle":return"text-gray-700 dark:text-gray-300";case"testing":return"text-blue-700 dark:text-blue-300";case"success":return"text-green-700 dark:text-green-300";case"error":return"text-red-700 dark:text-red-300";default:return"text-gray-700 dark:text-gray-300"}});function E(){if(!g.account)return"";const ue=g.account.platform;return ue==="claude"?`${Xr}/admin/claude-accounts/${g.account.id}/test`:ue==="claude-console"?`${Xr}/admin/claude-console-accounts/${g.account.id}/test`:""}async function _(){if(!g.account)return;U.value="testing",B.value="",R.value="",K.value=0,x.value=Date.now(),k.value&&k.value.close();const ue=E();if(!ue){U.value="error",R.value="不支持的账户类型";return}try{const $e=localStorage.getItem("authToken"),Le=await fetch(ue,{method:"POST",headers:{"Content-Type":"application/json",Authorization:$e?`Bearer ${$e}`:""},body:JSON.stringify({model:G.value})});if(!Le.ok){const re=await Le.json().catch(()=>({}));throw new Error(re.message||`HTTP ${Le.status}`)}const Q=Le.body.getReader(),I=new TextDecoder;let Ue=!1;for(;!Ue;){const{done:re,value:Ne}=await Q.read();if(re){Ue=!0;continue}const $=I.decode(Ne).split(` `);for(const j of $)if(j.startsWith("data: "))try{const ce=JSON.parse(j.substring(6));q(ce)}catch{}}}catch($e){U.value="error",R.value=$e.message||"连接失败",K.value=Date.now()-x.value}}function q(ue){switch(ue.type){case"test_start":break;case"content":B.value+=ue.text;break;case"message_stop":break;case"test_complete":K.value=Date.now()-x.value,ue.success?U.value="success":(U.value="error",R.value=ue.error||"测试失败");break;case"error":U.value="error",R.value=ue.error||"未知错误",K.value=Date.now()-x.value;break}}function we(){U.value!=="testing"&&(k.value&&(k.value.close(),k.value=null),U.value="idle",B.value="",R.value="",K.value=0,N("close"))}return he(()=>g.show,ue=>{ue&&(U.value="idle",B.value="",R.value="",K.value=0)}),Or(()=>{k.value&&k.value.close()}),(ue,$e)=>{var Le;return o(),Ye(jt,{to:"body"},[J.show?(o(),n("div",tm,[e("div",{class:"absolute inset-0",onClick:we}),e("div",rm,[e("div",am,[e("div",sm,[e("div",{class:C(["flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-xl text-white shadow-lg",U.value==="success"?"bg-gradient-to-br from-green-500 to-emerald-500":U.value==="error"?"bg-gradient-to-br from-red-500 to-pink-500":"bg-gradient-to-br from-blue-500 to-indigo-500"])},[e("i",{class:C(["fas",U.value==="idle"?"fa-vial":U.value==="testing"?"fa-spinner fa-spin":U.value==="success"?"fa-check":"fa-times"])},null,2)],2),e("div",null,[$e[0]||($e[0]=e("h3",{class:"text-lg font-semibold text-gray-900 dark:text-gray-100"},"账户连通性测试",-1)),e("p",lm,u(((Le=J.account)==null?void 0:Le.name)||"未知账户"),1)])]),e("button",{class:"flex h-9 w-9 items-center justify-center rounded-full bg-gray-100 text-gray-500 transition hover:bg-gray-200 hover:text-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200",disabled:U.value==="testing",onClick:we},$e[1]||($e[1]=[e("i",{class:"fas fa-times text-sm"},null,-1)]),8,om)]),e("div",nm,[e("div",im,[e("div",dm,[$e[2]||($e[2]=e("span",{class:"text-gray-500 dark:text-gray-400"},"平台类型",-1)),e("span",{class:C(["inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium",pe.value])},[e("i",{class:C(Y.value)},null,2),c(" "+u(fe.value),1)],2)]),e("div",um,[$e[3]||($e[3]=e("span",{class:"text-gray-500 dark:text-gray-400"},"测试模型",-1)),e("span",pm,u(G.value),1)])]),e("div",{class:C(["mb-4 rounded-xl border p-4 transition-all duration-300",V.value])},[e("div",gm,[e("div",{class:C(["flex h-8 w-8 items-center justify-center rounded-lg",h.value])},[e("i",{class:C(["fas text-sm",y.value,z.value])},null,2)],2),e("div",null,[e("p",{class:C(["font-medium",ee.value])},u(Z.value),3),e("p",ym,u(X.value),1)])])],2),U.value!=="idle"?(o(),n("div",mm,[e("div",cm,[$e[4]||($e[4]=e("span",{class:"text-xs font-medium text-gray-600 dark:text-gray-400"},"AI 响应",-1)),B.value?(o(),n("span",xm,u(B.value.length)+" 字符 ",1)):m("",!0)]),e("div",fm,[B.value?(o(),n("p",bm,[c(u(B.value)+" ",1),U.value==="testing"?(o(),n("span",vm)):m("",!0)])):U.value==="testing"?(o(),n("p",km,$e[5]||($e[5]=[e("i",{class:"fas fa-circle-notch fa-spin"},null,-1),c(" 等待响应中... ",-1)]))):U.value==="error"&&R.value?(o(),n("p",hm,u(R.value),1)):m("",!0)])])):m("",!0),K.value>0?(o(),n("div",wm,[$e[6]||($e[6]=e("i",{class:"fas fa-clock"},null,-1)),e("span",null,"耗时 "+u((K.value/1e3).toFixed(2))+" 秒",1)])):m("",!0)]),e("div",$m,[e("button",{class:"rounded-lg border border-gray-200 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm transition hover:bg-gray-50 hover:shadow dark:border-gray-700 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",disabled:U.value==="testing",onClick:we}," 关闭 ",8,Am),e("button",{class:C(["flex items-center gap-2 rounded-lg px-4 py-2 text-sm font-medium shadow-sm transition",U.value==="testing"?"cursor-not-allowed bg-gray-200 text-gray-400 dark:bg-gray-700 dark:text-gray-500":"bg-gradient-to-r from-blue-500 to-indigo-500 text-white hover:from-blue-600 hover:to-indigo-600 hover:shadow-md"]),disabled:U.value==="testing",onClick:_},[e("i",{class:C(["fas",U.value==="testing"?"fa-spinner fa-spin":"fa-play"])},null,2),c(" "+u(U.value==="testing"?"测试中...":U.value==="idle"?"开始测试":"重新测试"),1)],10,Cm)])])])):m("",!0)])}}},Im={class:"accounts-container"},Tm={class:"card p-4 sm:p-6"},_m={class:"mb-4 flex flex-col gap-4 sm:mb-6"},Km={class:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},Mm={class:"flex flex-col gap-3 sm:flex-row sm:flex-wrap sm:items-center sm:gap-3"},Sm={class:"group relative min-w-[160px]"},Dm={class:"group relative min-w-[140px]"},Pm={class:"group relative min-w-[160px]"},Lm={class:"group relative min-w-[120px]"},zm={class:"group relative min-w-[200px]"},jm={class:"relative flex items-center"},Rm={class:"flex w-full flex-col gap-3 sm:w-auto sm:flex-row sm:items-center sm:gap-3"},Vm={class:"relative"},Om={class:"relative"},Em=["disabled"],Nm={class:"relative"},Fm={key:0,class:"py-12 text-center"},qm={key:1,class:"py-12 text-center"},Gm={key:2,class:"table-wrapper hidden md:block"},Wm={class:"w-full"},Bm={class:"sticky top-0 z-10 bg-gradient-to-b from-gray-50 to-gray-100/90 backdrop-blur-sm dark:from-gray-700 dark:to-gray-800/90"},Qm={key:0,class:"checkbox-column sticky left-0 z-20 min-w-[50px] px-3 py-4 text-left"},Hm={class:"flex items-center"},Jm=["indeterminate"],Ym={key:1,class:"fas fa-sort ml-1 text-gray-400"},Zm={key:1,class:"fas fa-sort ml-1 text-gray-400"},Xm={key:1,class:"fas fa-sort ml-1 text-gray-400"},ec={class:"min-w-[210px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"},tc={class:"flex items-center gap-2"},rc={key:1,class:"fas fa-sort ml-1 text-gray-400"},ac={key:1,class:"fas fa-sort ml-1 text-gray-400"},sc={class:"divide-y divide-gray-200/50 dark:divide-gray-600/50"},lc={key:0,class:"checkbox-column sticky left-0 z-10 px-3 py-3"},oc={class:"flex items-center"},nc=["value"],ic={class:"flex items-center"},dc={class:"min-w-0"},uc={class:"flex items-center gap-2"},pc=["title"],gc={key:0,class:"inline-flex items-center rounded-full bg-purple-100 px-2 py-0.5 text-xs font-medium text-purple-800"},yc={key:1,class:"inline-flex items-center rounded-full bg-blue-100 px-2 py-0.5 text-xs font-medium text-blue-800"},mc={key:2,class:"inline-flex items-center rounded-full bg-green-100 px-2 py-0.5 text-xs font-medium text-green-800"},cc={key:0,class:"my-2 flex flex-wrap items-center gap-2"},xc=["title"],fc=["title"],bc={class:"px-3 py-4"},vc={class:"flex items-center gap-1"},kc={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"},hc={class:"text-xs font-medium text-yellow-700"},wc={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"},$c={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"},Ac={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"},Cc={class:"text-xs font-medium text-gray-950"},Uc={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"},Ic={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"},Tc={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"},_c={class:"text-xs font-semibold text-indigo-800"},Kc={class:"text-xs font-medium text-indigo-700"},Mc={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"},Sc={key:8,class:"flex items-center gap-1.5 rounded-lg border border-cyan-200 bg-gradient-to-r from-cyan-100 to-sky-100 px-2.5 py-1 dark:border-cyan-700 dark:from-cyan-900/20 dark:to-sky-900/20"},Dc={class:"text-xs font-medium text-cyan-700 dark:text-cyan-300"},Pc={key:9,class:"flex items-center gap-1.5 rounded-lg border border-amber-200 bg-gradient-to-r from-amber-100 to-yellow-100 px-2.5 py-1 dark:border-amber-700 dark:from-amber-900/20 dark:to-yellow-900/20"},Lc={key:10,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"},zc={class:"w-[100px] min-w-[100px] max-w-[100px] whitespace-nowrap px-3 py-4"},jc={class:"flex flex-col gap-1"},Rc={key:0,class:"inline-flex items-center rounded-full bg-yellow-100 px-3 py-1 text-xs font-semibold text-yellow-800"},Vc={key:0},Oc={key:1,class:"inline-flex items-center rounded-full bg-gray-100 px-3 py-1 text-xs font-semibold text-gray-700"},Ec=["title"],Nc={key:3,class:"text-xs text-gray-500 dark:text-gray-400"},Fc={class:"whitespace-nowrap px-3 py-4 text-sm"},qc={key:0,class:"space-y-1"},Gc={class:"flex items-center gap-2"},Wc={class:"text-sm font-medium text-gray-900 dark:text-gray-100"},Bc={class:"flex items-center gap-2"},Qc={class:"text-xs text-gray-600 dark:text-gray-300"},Hc={class:"flex items-center gap-2"},Jc={class:"text-xs text-gray-600 dark:text-gray-300"},Yc={key:0,class:"text-xs text-gray-500 dark:text-gray-400"},Zc={key:1,class:"text-xs text-gray-400"},Xc={class:"whitespace-nowrap px-3 py-4"},ex={key:0,class:"space-y-2"},tx={key:0,class:"space-y-2"},rx={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},ax={class:"flex items-center gap-2"},sx={class:"flex-1"},lx={class:"flex items-center gap-2"},ox={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},nx={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},ix={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},dx={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},ux={class:"flex items-center gap-2"},px={class:"flex-1"},gx={class:"flex items-center gap-2"},yx={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},mx={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},cx={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},xx={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},fx={class:"flex items-center gap-2"},bx={class:"flex-1"},vx={class:"flex items-center gap-2"},kx={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},hx={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},wx={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},$x={key:1,class:"space-y-2"},Ax={key:0,class:"flex items-center gap-3 text-xs"},Cx={class:"flex items-center gap-1"},Ux={class:"font-medium text-gray-900 dark:text-gray-100"},Ix={class:"flex items-center gap-1"},Tx={class:"font-medium text-gray-900 dark:text-gray-100"},_x={class:"flex items-center gap-2"},Kx={class:"h-2 w-24 rounded-full bg-gray-200 dark:bg-gray-700"},Mx={class:"min-w-[32px] text-xs font-medium text-gray-700 dark:text-gray-200"},Sx={class:"text-xs text-gray-600 dark:text-gray-400"},Dx={key:0,class:"font-medium text-indigo-600 dark:text-indigo-400"},Px={key:2,class:"text-xs text-gray-400"},Lx={key:1,class:"space-y-3"},zx={class:"flex items-center justify-between text-xs"},jx={class:"font-medium text-gray-700 dark:text-gray-200"},Rx={class:"flex items-center gap-2"},Vx={class:"h-2 w-24 rounded-full bg-gray-200 dark:bg-gray-700"},Ox={class:"min-w-[32px] text-xs font-medium text-gray-700 dark:text-gray-200"},Ex={class:"text-xs text-gray-600 dark:text-gray-400"},Nx={class:"ml-2 text-gray-400"},Fx={key:1,class:"text-sm text-gray-400"},qx={class:"space-y-1"},Gx={class:"flex items-center justify-between text-xs"},Wx={key:0,class:"font-medium text-gray-700 dark:text-gray-200"},Bx={key:0,class:"flex items-center gap-2"},Qx={class:"h-2 w-24 rounded-full bg-gray-200 dark:bg-gray-700"},Hx={key:1,class:"inline-flex items-center rounded-full bg-gray-100 px-2 py-0.5 text-xs font-medium text-gray-500 dark:bg-gray-700 dark:text-gray-300"},Jx={key:2,class:"space-y-2"},Yx={key:0,class:"space-y-2"},Zx={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},Xx={class:"flex items-center gap-2"},ef={class:"inline-flex min-w-[32px] justify-center rounded-full bg-indigo-100 px-2 py-0.5 text-[11px] font-medium text-indigo-600 dark:bg-indigo-500/20 dark:text-indigo-300"},tf={class:"flex-1"},rf={class:"flex items-center gap-2"},af={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},sf={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},lf={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},of={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},nf={class:"flex items-center gap-2"},df={class:"inline-flex min-w-[32px] justify-center rounded-full bg-blue-100 px-2 py-0.5 text-[11px] font-medium text-blue-600 dark:bg-blue-500/20 dark:text-blue-300"},uf={class:"flex-1"},pf={class:"flex items-center gap-2"},gf={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},yf={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},mf={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},cf={key:1,class:"text-sm text-gray-400"},xf={key:3,class:"text-sm text-gray-400"},ff={class:"whitespace-nowrap px-3 py-4 text-sm text-gray-600 dark:text-gray-300"},bf={class:"whitespace-nowrap px-3 py-4"},vf={key:0,class:"flex items-center gap-2"},kf={class:"h-2 w-16 rounded-full bg-gray-200"},hf={class:"min-w-[20px] text-xs font-medium text-gray-700 dark:text-gray-200"},wf={key:1,class:"text-sm text-gray-400"},$f={class:"px-3 py-4 text-sm text-gray-600"},Af=["title"],Cf={key:1,class:"text-gray-400"},Uf={class:"whitespace-nowrap px-3 py-4"},If={class:"flex flex-col gap-1"},Tf={key:0},_f=["onClick"],Kf=["onClick"],Mf=["onClick"],Sf=["onClick"],Df={class:"operations-column sticky right-0 z-10 whitespace-nowrap px-3 py-4 text-sm font-medium"},Pf={key:0,class:"flex items-center gap-1"},Lf=["disabled","title","onClick"],zf=["disabled","title","onClick"],jf={class:"ml-1"},Rf=["onClick"],Vf=["onClick"],Of=["onClick"],Ef=["onClick"],Nf={key:1,class:"flex items-center gap-1"},Ff=["disabled","title","onClick"],qf={class:"ml-1"},Gf=["onClick"],Wf={key:3,class:"space-y-3 md:hidden"},Bf={class:"mb-3 flex items-start justify-between"},Qf={class:"flex items-center gap-3"},Hf=["value"],Jf={class:"text-sm font-semibold text-gray-900"},Yf={class:"mt-0.5 flex items-center gap-2"},Zf={class:"text-xs text-gray-500 dark:text-gray-400"},Xf={class:"text-xs text-gray-500 dark:text-gray-400"},eb={class:"mb-3 grid grid-cols-2 gap-3"},tb={class:"space-y-1"},rb={class:"flex items-center gap-1.5"},ab={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},sb={class:"flex items-center gap-1.5"},lb={class:"text-xs text-gray-600 dark:text-gray-400"},ob={class:"flex items-center gap-1.5"},nb={class:"text-xs text-gray-600 dark:text-gray-400"},ib={key:0,class:"space-y-1"},db={class:"flex items-center gap-1.5"},ub={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},pb={class:"flex items-center gap-1.5"},gb={class:"text-xs text-gray-600 dark:text-gray-400"},yb={key:1,class:"text-sm font-semibold text-gray-400"},mb={class:"mb-3 space-y-2"},cb={key:0,class:"space-y-2"},xb={key:0,class:"space-y-2"},fb={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},bb={class:"flex items-center gap-2"},vb={class:"flex-1"},kb={class:"flex items-center gap-2"},hb={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},wb={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},$b={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},Ab={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},Cb={class:"flex items-center gap-2"},Ub={class:"flex-1"},Ib={class:"flex items-center gap-2"},Tb={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},_b={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},Kb={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},Mb={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700/70"},Sb={class:"flex items-center gap-2"},Db={class:"flex-1"},Pb={class:"flex items-center gap-2"},Lb={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},zb={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},jb={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},Rb={key:1,class:"space-y-1.5 rounded-lg bg-gray-50 p-2 dark:bg-gray-700"},Vb={class:"flex items-center justify-between text-xs"},Ob={class:"flex items-center gap-1"},Eb={class:"font-medium text-gray-700 dark:text-gray-200"},Nb={class:"h-2 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-600"},Fb={class:"flex items-center justify-between text-xs"},qb={class:"text-gray-500 dark:text-gray-400"},Gb={key:0,class:"font-medium text-indigo-600"},Wb={key:1,class:"text-gray-500"},Bb={key:2,class:"text-xs text-gray-400"},Qb={key:1,class:"space-y-2"},Hb={key:0,class:"space-y-2"},Jb={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700"},Yb={class:"flex items-center gap-2"},Zb={class:"inline-flex min-w-[32px] justify-center rounded-full bg-indigo-100 px-2 py-0.5 text-[11px] font-medium text-indigo-600 dark:bg-indigo-500/20 dark:text-indigo-300"},Xb={class:"flex-1"},ev={class:"flex items-center gap-2"},tv={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},rv={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},av={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},sv={class:"rounded-lg bg-gray-50 p-2 dark:bg-gray-700"},lv={class:"flex items-center gap-2"},ov={class:"inline-flex min-w-[32px] justify-center rounded-full bg-blue-100 px-2 py-0.5 text-[11px] font-medium text-blue-600 dark:bg-blue-500/20 dark:text-blue-300"},nv={class:"flex-1"},iv={class:"flex items-center gap-2"},dv={class:"h-2 flex-1 rounded-full bg-gray-200 dark:bg-gray-600"},uv={class:"w-12 text-right text-xs font-semibold text-gray-800 dark:text-gray-100"},pv={class:"mt-1 text-[11px] text-gray-500 dark:text-gray-400"},gv={key:1,class:"text-xs text-gray-400"},yv={class:"flex items-center justify-between text-xs"},mv={class:"text-gray-700 dark:text-gray-200"},cv={key:2,class:"flex items-center justify-between text-xs"},xv={class:"text-gray-700 dark:text-gray-200"},fv={class:"flex items-center justify-between text-xs"},bv={class:"font-medium text-gray-700 dark:text-gray-200"},vv={class:"mt-3 flex gap-2 border-t border-gray-100 pt-3"},kv=["disabled","onClick"],hv=["onClick"],wv=["onClick"],$v=["onClick"],Av=["onClick"],Cv={key:0,class:"mt-4 flex flex-col items-center justify-between gap-4 sm:mt-6 sm:flex-row"},Uv={class:"flex w-full flex-col items-center gap-3 sm:w-auto sm:flex-row"},Iv={class:"text-xs text-gray-600 dark:text-gray-400 sm:text-sm"},Tv={class:"flex items-center gap-2"},_v=["value"],Kv={class:"flex items-center gap-2"},Mv=["disabled"],Sv={class:"flex items-center gap-1"},Dv={key:1,class:"hidden px-2 text-sm text-gray-500 dark:text-gray-400 sm:block"},Pv=["onClick"],Lv={key:2,class:"hidden px-2 text-sm text-gray-500 dark:text-gray-400 sm:block"},zv=["disabled"],jv={class:"space-y-4"},Rv={class:"overflow-x-auto"},Vv={class:"w-full border-collapse text-sm",style:{"min-width":"1000px"}},Ov={class:"border border-gray-300 px-4 py-2 font-medium dark:border-gray-600"},Ev={class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"},Nv={class:"text-green-600 dark:text-green-400"},Fv={class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"},qv={class:"text-yellow-600 dark:text-yellow-400"},Gv={class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"},Wv={class:"text-orange-600 dark:text-orange-400"},Bv={class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"},Qv={class:"text-orange-600 dark:text-orange-400"},Hv={class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"},Jv={class:"text-orange-600 dark:text-orange-400"},Yv={class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"},Zv={class:"text-orange-600 dark:text-orange-400"},Xv={class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"},e1={class:"text-orange-600 dark:text-orange-400"},t1={class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"},r1={class:"text-red-600 dark:text-red-400"},a1={class:"border border-gray-300 bg-blue-50 px-4 py-2 text-center font-bold dark:border-gray-600 dark:bg-blue-900/30"},s1={class:"bg-blue-50 font-bold dark:bg-blue-900/30"},l1={class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"},o1={class:"text-green-600 dark:text-green-400"},n1={class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"},i1={class:"text-yellow-600 dark:text-yellow-400"},d1={class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"},u1={class:"text-orange-600 dark:text-orange-400"},p1={class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"},g1={class:"text-orange-600 dark:text-orange-400"},y1={class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"},m1={class:"text-orange-600 dark:text-orange-400"},c1={class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"},x1={class:"text-orange-600 dark:text-orange-400"},f1={class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"},b1={class:"text-orange-600 dark:text-orange-400"},v1={class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"},k1={class:"text-red-600 dark:text-red-400"},h1={class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"},aa="accountsPageSize",w1={__name:"AccountsView",setup(J){const{showConfirmModal:Ve,confirmOptions:g,showConfirm:N,handleConfirm:U,handleCancel:B}=la(),R=w([]),K=w(!1),x=w("name"),k=w("asc"),G=w([]),fe=w({}),Y=w([]),pe=w("all"),Z=w("all"),X=w("all"),V=w(""),h=()=>{const a=localStorage.getItem(aa);if(a){const s=parseInt(a,10);if([10,20,50,100].includes(s))return s}return 10},y=[10,20,50,100],z=w(h()),ee=w(1),E=w([]),_=w(!1),q=w(!1),we=w(!1),ue=w(!1),$e=w(!1),Le=w(null),Q=w([]),I=w({}),Ue=w({}),re=w(""),Ne=["claude","claude-console","openai","openai-responses","gemini","droid","gemini-api"],H=w(null),$=w(null),j=w(!1),ce=w(null),ge=w(!1),de=w(null),r=w(!1),W=w(!1),ke=w(!1),qe=w(!1),De=w(!1),ot=w(new Map),it=w([{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"},{value:"rateLimitTime",label:"按限流时间排序",icon:"fa-hourglass"}]),st=[{value:"group-claude",label:"Claude(全部)",icon:"fa-brain",children:[{value:"claude",label:"Claude 官方/OAuth",icon:"fa-brain"},{value:"claude-console",label:"Claude Console",icon:"fa-terminal"},{value:"bedrock",label:"Bedrock",icon:"fab fa-aws"},{value:"ccr",label:"CCR Relay",icon:"fa-code-branch"}]},{value:"group-openai",label:"Codex / OpenAI(全部)",icon:"fa-openai",children:[{value:"openai",label:"OpenAI 官方",icon:"fa-openai"},{value:"openai-responses",label:"OpenAI-Responses (Codex)",icon:"fa-server"},{value:"azure_openai",label:"Azure OpenAI",icon:"fab fa-microsoft"}]},{value:"group-gemini",label:"Gemini(全部)",icon:"fab fa-google",children:[{value:"gemini",label:"Gemini OAuth",icon:"fab fa-google"},{value:"gemini-api",label:"Gemini API",icon:"fa-key"}]},{value:"group-droid",label:"Droid(全部)",icon:"fa-robot",children:[{value:"droid",label:"Droid",icon:"fa-robot"}]}],ct={"group-claude":["claude","claude-console","bedrock","ccr"],"group-openai":["openai","openai-responses","azure_openai"],"group-gemini":["gemini","gemini-api"],"group-droid":["droid"]},kt={claude:a=>F.get("/admin/claude-accounts",{params:a}),"claude-console":a=>F.get("/admin/claude-console-accounts",{params:a}),bedrock:a=>F.get("/admin/bedrock-accounts",{params:a}),gemini:a=>F.get("/admin/gemini-accounts",{params:a}),openai:a=>F.get("/admin/openai-accounts",{params:a}),azure_openai:a=>F.get("/admin/azure-openai-accounts",{params:a}),"openai-responses":a=>F.get("/admin/openai-responses-accounts",{params:a}),ccr:a=>F.get("/admin/ccr-accounts",{params:a}),droid:a=>F.get("/admin/droid-accounts",{params:a}),"gemini-api":a=>F.get("/admin/gemini-api-accounts",{params:a})},xt=Object.keys(kt),T=a=>a==="all"?xt:ct[a]?ct[a]:xt.includes(a)?[a]:xt,It=ie(()=>{const a=[{value:"all",label:"所有平台",icon:"fa-globe",indent:0}];return st.forEach(s=>{var b;a.push({...s,indent:0,isGroup:!0}),(b=s.children)==null||b.forEach(A=>{a.push({...A,indent:1,parent:s.value})})}),a}),ht=w([{value:"normal",label:"正常",icon:"fa-check-circle"},{value:"unschedulable",label:"不可调度",icon:"fa-ban"},{value:"rateLimited",label:"限流",icon:"fa-hourglass-half"},{value:"other",label:"其他",icon:"fa-exclamation-triangle"},{value:"all",label:"全部状态",icon:"fa-list"}]),ft=ie(()=>{const a=[{value:"all",label:"所有账户",icon:"fa-globe"},{value:"ungrouped",label:"未分组账户",icon:"fa-user"}];return Y.value.forEach(s=>{a.push({value:s.id,label:`${s.name} (${s.platform==="claude"?"Claude":s.platform==="gemini"?"Gemini":s.platform==="openai"?"OpenAI":"Droid"})`,icon:s.platform==="claude"?"fa-brain":s.platform==="gemini"?"fa-robot":s.platform==="openai"?"fa-openai":"fa-robot"})}),a}),Ze=ie(()=>we.value),dt=w(!1),f=w(null),p=w(!1),D=w(null),Xe=a=>{const s=new Set;return[a==null?void 0:a.name,a==null?void 0:a.email,a==null?void 0:a.accountName,a==null?void 0:a.owner,a==null?void 0:a.ownerName,a==null?void 0:a.ownerDisplayName,a==null?void 0:a.displayName,a==null?void 0:a.username,a==null?void 0:a.identifier,a==null?void 0:a.alias,a==null?void 0:a.title,a==null?void 0:a.label].forEach(A=>{if(typeof A=="string"){const l=A.trim();l&&s.add(l)}}),Array.isArray(a==null?void 0:a.groupInfos)&&a.groupInfos.forEach(A=>{if(A&&typeof A.name=="string"){const l=A.name.trim();l&&s.add(l)}}),Object.entries(a||{}).forEach(([A,l])=>{if(typeof l=="string"){const oe=A.toLowerCase();if(oe.includes("name")||oe.includes("email")){const Ie=l.trim();Ie&&s.add(Ie)}}}),Array.from(s)},Tt=(a,s)=>s?Xe(a).some(b=>b.toLowerCase().includes(s)):!0,bt=a=>!!a&&Ne.includes(a.platform),_t=a=>{var b;return["claude","claude-console","openai","openai-responses","gemini","gemini-api","ccr"].includes(a.platform)&&(a.status==="unauthorized"||a.status!=="active"||((b=a.rateLimitStatus)==null?void 0:b.isRateLimited)||a.rateLimitStatus==="limited"||!a.isActive)},Rt=a=>{const s=[];return _t(a)&&s.push({key:"reset",label:"重置状态",icon:"fa-redo",color:"orange",handler:()=>tr(a)}),bt(a)&&s.push({key:"usage",label:"详情",icon:"fa-chart-line",color:"indigo",handler:()=>wt(a)}),vt(a)&&s.push({key:"test",label:"测试",icon:"fa-vial",color:"blue",handler:()=>pt(a)}),s.push({key:"delete",label:"删除",icon:"fa-trash",color:"red",handler:()=>Ft(a)}),s},wt=async a=>{if(!bt(a)){L("该账户类型暂不支持查看详情","warning");return}Le.value=a,ue.value=!0,$e.value=!0,Q.value=[],I.value={},Ue.value={},re.value="";try{const s=await F.get(`/admin/accounts/${a.id}/usage-history?platform=${a.platform}&days=30`);if(s.success){const b=s.data||{};Q.value=b.history||[],I.value=b.summary||{},Ue.value=b.overview||{},re.value=b.generatedAt||""}else L(s.error||"加载账号使用详情失败","error")}catch{L("加载账号使用详情失败","error")}finally{$e.value=!1}},Vt=()=>{ue.value=!1,$e.value=!1,Le.value=null},Kt=["claude","claude-console"],vt=a=>!!a&&Kt.includes(a.platform),pt=a=>{if(!vt(a)){L("该账户类型暂不支持测试","warning");return}ce.value=a,j.value=!0},Ot=()=>{j.value=!1,ce.value=null},nt=ie(()=>{let a=R.value;const s=V.value.trim();if(s){const A=s.toLowerCase();a=a.filter(l=>Tt(l,A))}return X.value!=="all"&&(a=a.filter(A=>{const l=yt(A),oe=A.status==="blocked"||A.status==="unauthorized";return X.value==="rateLimited"?A.isActive&&l:X.value==="normal"?A.isActive&&!l&&!oe&&A.schedulable!==!1:X.value==="unschedulable"?A.isActive&&!l&&!oe&&A.schedulable===!1:X.value==="other"?!l&&(!A.isActive||oe):!0})),x.value?[...a].sort((A,l)=>{var Ae,We,ve,xe,me,te,ne,Re,Ee,Qr,Hr,Jr;let oe=A[x.value],Ie=l[x.value];if(x.value==="dailyTokens"?(oe=((We=(Ae=A.usage)==null?void 0:Ae.daily)==null?void 0:We.allTokens)||0,Ie=((xe=(ve=l.usage)==null?void 0:ve.daily)==null?void 0:xe.allTokens)||0):x.value==="dailyRequests"?(oe=((te=(me=A.usage)==null?void 0:me.daily)==null?void 0:te.requests)||0,Ie=((Re=(ne=l.usage)==null?void 0:ne.daily)==null?void 0:Re.requests)||0):x.value==="totalTokens"&&(oe=((Qr=(Ee=A.usage)==null?void 0:Ee.total)==null?void 0:Qr.allTokens)||0,Ie=((Jr=(Hr=l.usage)==null?void 0:Hr.total)==null?void 0:Jr.allTokens)||0),x.value==="lastUsed"&&(oe=A.lastUsedAt?new Date(A.lastUsedAt).getTime():0,Ie=l.lastUsedAt?new Date(l.lastUsedAt).getTime():0),x.value==="status"&&(oe=A.isActive?1:0,Ie=l.isActive?1:0),x.value==="rateLimitTime"){const Fr=yt(A),qr=yt(l),Yr=Fr?mt(A):0,Zr=qr?mt(l):0;return!Fr&&qr?-1:Fr&&!qr?1:YrZr?1:0}return oeIe?k.value==="asc"?1:-1:0}):a}),Fe=ie(()=>{const a=nt.value.length;return Math.ceil(a/z.value)||0}),Mt=ie(()=>[{value:"claude",label:"Claude"},{value:"claude-console",label:"Claude Console"},{value:"gemini",label:"Gemini"},{value:"gemini-api",label:"Gemini API"},{value:"openai",label:"OpenAI"},{value:"azure_openai",label:"Azure OpenAI"},{value:"bedrock",label:"Bedrock"},{value:"openai-responses",label:"OpenAI-Responses"},{value:"ccr",label:"CCR"},{value:"droid",label:"Droid"}].map(s=>{const b=R.value.filter(te=>te.platform===s.value),A=b.filter(te=>yt(te)),l=b.filter(te=>{const ne=yt(te),Re=te.status==="blocked"||te.status==="unauthorized";return!ne&&te.isActive&&!Re&&te.schedulable!==!1}).length,oe=b.filter(te=>{const ne=yt(te),Re=te.status==="blocked"||te.status==="unauthorized";return!ne&&te.isActive&&!Re&&te.schedulable===!1}).length,Ie=b.filter(te=>{const ne=yt(te),Re=te.status==="blocked"||te.status==="unauthorized";return!ne&&(!te.isActive||Re)}).length,Ae=A.filter(te=>{const ne=mt(te);return ne>0&&ne<=60}).length,We=A.filter(te=>{const ne=mt(te);return ne>60&&ne<=300}).length,ve=A.filter(te=>{const ne=mt(te);return ne>300&&ne<=720}).length,xe=A.filter(te=>{const ne=mt(te);return ne>720&&ne<=1440}).length,me=A.filter(te=>mt(te)>1440).length;return{platform:s.value,platformLabel:s.label,normal:l,unschedulable:oe,rateLimit0_1h:Ae,rateLimit1_5h:We,rateLimit5_12h:ve,rateLimit12_24h:xe,rateLimitOver24h:me,other:Ie,total:b.length}}).filter(s=>s.total>0)),et=ie(()=>Mt.value.reduce((a,s)=>(a.normal+=s.normal,a.unschedulable+=s.unschedulable,a.rateLimit0_1h+=s.rateLimit0_1h,a.rateLimit1_5h+=s.rateLimit1_5h,a.rateLimit5_12h+=s.rateLimit5_12h,a.rateLimit12_24h+=s.rateLimit12_24h,a.rateLimitOver24h+=s.rateLimitOver24h,a.other+=s.other,a.total+=s.total,a),{normal:0,unschedulable:0,rateLimit0_1h:0,rateLimit1_5h:0,rateLimit5_12h:0,rateLimit12_24h:0,rateLimitOver24h:0,other:0,total:0})),gt=ie(()=>{const a=Fe.value,s=ee.value,b=[];if(a<=7)for(let A=1;A<=a;A++)b.push(A);else{let A=Math.max(1,s-2),l=Math.min(a,s+2);s<=3?l=5:s>=a-2&&(A=a-4);for(let oe=A;oe<=l;oe++)b.push(oe)}return b}),St=ie(()=>{const a=gt.value;return a.length===0?!1:a[0]>1}),Gt=ie(()=>{const a=gt.value;return a.length===0?!1:a[a.length-1]{const a=gt.value;return a.length===0?!1:St.value&&a[0]>2}),Er=ie(()=>{const a=gt.value;return a.length===0?!1:Gt.value&&a[a.length-1]{const a=(ee.value-1)*z.value,s=a+z.value;return nt.value.slice(a,s)}),Je=()=>{const a=$t.value.map(A=>A.id),s=a.filter(A=>E.value.includes(A)).length,b=a.length;s===0?(_.value=!1,q.value=!1):s===b?(_.value=!0,q.value=!1):(_.value=!1,q.value=!0)},yr=()=>{if(_.value)$t.value.forEach(a=>{E.value.includes(a.id)||E.value.push(a.id)});else{const a=new Set($t.value.map(s=>s.id));E.value=E.value.filter(s=>!a.has(s))}Je()},Ge=()=>{we.value=!we.value,we.value?Je():(E.value=[],_.value=!1,q.value=!1)},Wt=()=>{const a=new Set(R.value.map(s=>s.id));E.value=E.value.filter(s=>a.has(s)),Je()},tt=async(a=!1)=>{K.value=!0;try{const s={};Z.value!=="all"&&!ct[Z.value]&&(s.platform=Z.value),pe.value!=="all"&&(s.groupId=pe.value);const b=T(Z.value);await Promise.all([Qt(a),br(a)]);const A=await Promise.all(b.map(async ve=>{const xe=kt[ve];if(!xe)return{platform:ve,success:!0,data:[]};try{const me=await xe(s);return{platform:ve,success:me==null?void 0:me.success,data:me==null?void 0:me.data}}catch(me){return console.debug(`Failed to load ${ve} accounts:`,me),{platform:ve,success:!1,data:[]}}})),l=[],oe=fe.value||{};let Ie=[];const Ae=(ve,xe)=>{const me=Array.isArray(xe)?xe:[];if(me.length!==0)switch(ve){case"claude":{const te=me.map(ne=>{var Ee;const Re=((Ee=oe.claudeAccountId)==null?void 0:Ee[ne.id])||0;return{...ne,platform:"claude",boundApiKeysCount:Re}});l.push(...te);break}case"claude-console":{const te=me.map(ne=>{var Ee;const Re=((Ee=oe.claudeConsoleAccountId)==null?void 0:Ee[ne.id])||0;return{...ne,platform:"claude-console",boundApiKeysCount:Re}});l.push(...te);break}case"bedrock":{const te=me.map(ne=>({...ne,platform:"bedrock",boundApiKeysCount:0}));l.push(...te);break}case"gemini":{const te=me.map(ne=>{var Ee;const Re=((Ee=oe.geminiAccountId)==null?void 0:Ee[ne.id])||0;return{...ne,platform:"gemini",boundApiKeysCount:Re}});l.push(...te);break}case"openai":{const te=me.map(ne=>{var Ee;const Re=((Ee=oe.openaiAccountId)==null?void 0:Ee[ne.id])||0;return{...ne,platform:"openai",boundApiKeysCount:Re}});l.push(...te);break}case"azure_openai":{const te=me.map(ne=>{var Ee;const Re=((Ee=oe.azureOpenaiAccountId)==null?void 0:Ee[ne.id])||0;return{...ne,platform:"azure_openai",boundApiKeysCount:Re}});l.push(...te);break}case"openai-responses":{Ie=me;break}case"ccr":{const te=me.map(ne=>({...ne,platform:"ccr",boundApiKeysCount:0}));l.push(...te);break}case"droid":{const te=me.map(ne=>{var Ee;const Re=((Ee=oe.droidAccountId)==null?void 0:Ee[ne.id])||ne.boundApiKeysCount||0;return{...ne,platform:"droid",boundApiKeysCount:Re}});l.push(...te);break}case"gemini-api":{const te=me.map(ne=>{var Ee;const Re=((Ee=oe.geminiAccountId)==null?void 0:Ee[`api:${ne.id}`])||0;return{...ne,platform:"gemini-api",boundApiKeysCount:Re}});l.push(...te);break}default:break}};if(A.forEach(({platform:ve,success:xe,data:me})=>{xe&&Ae(ve,me||[])}),Ie.length>0){let ve={};try{const me=await F.get("/admin/openai-responses-accounts/auto-recovery-configs");me.success&&Array.isArray(me.data)&&(ve=me.data.reduce((te,ne)=>(ne!=null&&ne.accountId&&(te[ne.accountId]=ne),te),{}))}catch(me){console.debug("Failed to load auto-recovery configs:",me)}const xe=Ie.map(me=>{var Re;const te=((Re=oe.openaiAccountId)==null?void 0:Re[`responses:${me.id}`])||0,ne=ve[me.id]||me.autoRecoveryConfig||null;return{...me,platform:"openai-responses",boundApiKeysCount:te,autoRecoveryConfig:ne}});l.push(...xe)}let We=l;pe.value!=="all"&&(pe.value==="ungrouped"?We=l.filter(ve=>!ve.groupInfos||ve.groupInfos.length===0):We=l.filter(ve=>!ve.groupInfos||ve.groupInfos.length===0?!1:ve.groupInfos.some(xe=>xe.id===pe.value))),We=We.map(ve=>{const xe=Ht(ve.proxyConfig||ve.proxy);return{...ve,proxyConfig:xe||null}}),R.value=We,Wt(),We.some(ve=>ve.platform==="claude")&&mr().catch(ve=>{console.debug("Claude usage loading failed:",ve)})}catch{L("加载账户失败","error")}finally{K.value=!1}},mr=async()=>{try{const a=await F.get("/admin/claude-accounts/usage");if(a.success&&a.data){const s=a.data;R.value=R.value.map(b=>b.platform==="claude"&&s[b.id]?{...b,claudeUsage:s[b.id]}:b)}}catch(a){console.debug("Failed to load Claude usage data:",a)}};let ut="name";const At=a=>{a&&(x.value===a?k.value=k.value==="asc"?"desc":"asc":(x.value=a,k.value="asc"),ut=a)},cr=a=>{a===ut?k.value=k.value==="asc"?"desc":"asc":k.value="asc",ut=a},Dt=a=>{if(a==null)return"0";const s=Number(a);return s>=1e6?(s/1e6).toFixed(2):s>=1e3?(s/1e6).toFixed(4):(s/1e6).toFixed(6)},Bt=a=>{if(!a)return"从未使用";const s=new Date(a),A=new Date-s;return A<6e4?"刚刚":A<36e5?`${Math.floor(A/6e4)} 分钟前`:A<864e5?`${Math.floor(A/36e5)} 小时前`:A<6048e5?`${Math.floor(A/864e5)} 天前`:s.toLocaleDateString("zh-CN")},xr=()=>{V.value="",ee.value=1},Qt=async(a=!1)=>{if(!(!a&&ke.value))try{const s=await F.get("/admin/accounts/binding-counts");s.success&&(fe.value=s.data||{},ke.value=!0)}catch{fe.value={}}},fr=async(a=!1)=>{var s;if(!(!a&&W.value))try{const b=await F.get("/admin/api-keys");b.success&&(G.value=((s=b.data)==null?void 0:s.items)||b.data||[],W.value=!0)}catch{}},br=async(a=!1)=>{if(!(!a&&qe.value))try{const s=await F.get("/admin/account-groups");s.success&&(Y.value=s.data||[],qe.value=!0)}catch{}},vr=()=>{W.value=!1,ke.value=!1,qe.value=!1,De.value=!1,ot.value.clear()},kr=()=>{ee.value=1,tt()},hr=()=>{ee.value=1,tt()};function Ht(a){if(!a)return null;let s=a;if(typeof a=="string")try{s=JSON.parse(a)}catch{return null}if(!s||typeof s!="object")return null;const b=s.proxy&&typeof s.proxy=="object"?s.proxy:s,A=typeof b.host=="string"?b.host.trim():b.host!==void 0&&b.host!==null?String(b.host).trim():"",l=b.port!==void 0&&b.port!==null?String(b.port).trim():"";if(!A||!l)return null;const oe=typeof b.type=="string"&&b.type.trim()?b.type.trim():"socks5",Ie=typeof b.username=="string"?b.username:b.username!==void 0&&b.username!==null?String(b.username):"",Ae=typeof b.password=="string"?b.password:b.password!==void 0&&b.password!==null?String(b.password):"";return{type:oe,host:A,port:l,username:Ie,password:Ae}}const Et=a=>{const s=Ht(a);if(!s)return null;const b=s.type.toLowerCase()==="socks5"?"S5":s.type.toUpperCase();let A=s.host;A.length>15&&(A=A.substring(0,12)+"...");let l=`${b}://${A}:${s.port}`;return s.username&&(l=`${b}://***@${A}:${s.port}`),l},Jt=(a,s)=>{if(!a||!s)return"--";const b=new Date(a),A=new Date(s),l=b.getHours().toString().padStart(2,"0"),oe=b.getMinutes().toString().padStart(2,"0"),Ie=A.getHours().toString().padStart(2,"0"),Ae=A.getMinutes().toString().padStart(2,"0");return`${l}:${oe} - ${Ie}:${Ae}`},Yt=a=>{if(!a||a<=0)return"已结束";const s=Math.floor(a/60),b=a%60;return s>0?`${s}小时${b}分钟`:`${b}分钟`},wr=a=>{if(!a||a<=0)return"";a=Math.floor(a);const s=Math.floor(a/1440),b=a%1440,A=Math.floor(b/60),l=b%60;return s>0?A>0?`${s}天${A}小时`:`${s}天`:A>0?l>0?`${A}小时${l}分钟`:`${A}小时`:`${l}分钟`},yt=a=>a?!!(a.rateLimitStatus&&(typeof a.rateLimitStatus=="string"&&a.rateLimitStatus==="limited"||typeof a.rateLimitStatus=="object"&&a.rateLimitStatus.isRateLimited===!0)):!1,mt=a=>{if(!a||!a.rateLimitStatus)return 0;if(typeof a.rateLimitStatus=="object"){const s=a.rateLimitStatus;if(Number.isFinite(s.minutesRemaining))return Math.max(0,Math.ceil(s.minutesRemaining));if(Number.isFinite(s.remainingMinutes))return Math.max(0,Math.ceil(s.remainingMinutes));if(Number.isFinite(s.remainingSeconds))return Math.max(0,Math.ceil(s.remainingSeconds/60));if(s.rateLimitResetAt){const b=new Date(s.rateLimitResetAt).getTime()-Date.now();return b>0?Math.ceil(b/6e4):0}}if(a.rateLimitUntil){const s=new Date().getTime(),A=new Date(a.rateLimitUntil).getTime()-s;return A>0?Math.ceil(A/6e4):0}return 0},$r=()=>{f.value=null,dt.value=!0},Zt=()=>{dt.value=!1,f.value=null},Nt=a=>{D.value=a,p.value=!0},Xt=a=>!a||!a.id?[]:G.value.filter(s=>{const b=a.id;return s.claudeAccountId===b||s.claudeConsoleAccountId===b||s.geminiAccountId===b||s.openaiAccountId===b||s.azureOpenaiAccountId===b||s.openaiAccountId===`responses:${b}`||s.geminiAccountId===`api:${b}`}),Ar=a=>{switch(a.platform){case"claude":return`/admin/claude-accounts/${a.id}`;case"claude-console":return`/admin/claude-console-accounts/${a.id}`;case"bedrock":return`/admin/bedrock-accounts/${a.id}`;case"openai":return`/admin/openai-accounts/${a.id}`;case"azure_openai":return`/admin/azure-openai-accounts/${a.id}`;case"openai-responses":return`/admin/openai-responses-accounts/${a.id}`;case"ccr":return`/admin/ccr-accounts/${a.id}`;case"gemini":return`/admin/gemini-accounts/${a.id}`;case"droid":return`/admin/droid-accounts/${a.id}`;case"gemini-api":return`/admin/gemini-api-accounts/${a.id}`;default:return null}},er=async a=>{var b,A;const s=Ar(a);if(!s)return{success:!1,message:"不支持的账户类型"};try{const l=await F.delete(s);return l.success?{success:!0,data:l}:{success:!1,message:l.message||"删除失败"}}catch(l){return{success:!1,message:((A=(b=l.response)==null?void 0:b.data)==null?void 0:A.message)||l.message||"删除失败"}}},Ft=async a=>{const b=Xt(a).length;let A=`确定要删除账户 "${a.name}" 吗?`;if(b>0&&(A+=` ⚠️ 注意:此账号有 ${b} 个 API Key 绑定。`,A+=` 删除后,这些 API Key 将自动切换为共享池模式。`),A+=` 此操作不可恢复。`,!await N("删除账户",A,"删除","取消"))return;const oe=await er(a);if(oe.success){const Ie=oe.data;let Ae="账户已成功删除";(Ie==null?void 0:Ie.unboundKeys)>0&&(Ae+=`,${Ie.unboundKeys} 个 API Key 已切换为共享池模式`),L(Ae,"success"),E.value=E.value.filter(We=>We!==a.id),Je(),De.value=!1,W.value=!1,ke.value=!1,tt(),fr(!0),Qt(!0)}else L(oe.message||"删除失败","error")},Cr=async()=>{var ve;if(E.value.length===0){L("请先选择要删除的账户","warning");return}const a=new Map(R.value.map(xe=>[xe.id,xe])),s=E.value.map(xe=>a.get(xe)).filter(xe=>!!xe);if(s.length===0){L("选中的账户已不存在","warning"),E.value=[],Je();return}let b=`确定要删除选中的 ${s.length} 个账户吗?此操作不可恢复。`;const A=s.map(xe=>({account:xe,boundKeys:Xt(xe)})).filter(xe=>xe.boundKeys.length>0);if(A.length>0&&(b+=` ⚠️ 以下账户存在绑定的 API Key,将自动解绑:`,A.forEach(({account:xe,boundKeys:me})=>{const te=xe.name||xe.email||xe.accountName||xe.id;b+=` - ${te}: ${me.length} 个`}),b+=` 删除后,这些 API Key 将切换为共享池模式。`),b+=` 请再次确认是否继续。`,!await N("批量删除账户",b,"删除","取消"))return;let oe=0,Ie=0,Ae=0;const We=[];for(const xe of s){const me=await er(xe);me.success?(oe+=1,Ae+=((ve=me.data)==null?void 0:ve.unboundKeys)||0):(Ie+=1,We.push({name:xe.name||xe.email||xe.accountName||xe.id,message:me.message||"删除失败"}))}if(oe>0){let xe=`成功删除 ${oe} 个账户`;Ae>0&&(xe+=`,${Ae} 个 API Key 已切换为共享池模式`),L(xe,Ie>0?"warning":"success"),E.value=[],_.value=!1,q.value=!1,De.value=!1,W.value=!1,await tt(!0)}if(Ie>0){const xe=We.map(me=>`${me.name}: ${me.message}`).join(` `);L(`有 ${Ie} 个账户删除失败: ${xe}`,oe>0?"warning":"error")}Je()},tr=async a=>{if(a.isResetting)return;let s=!1;if(window.showConfirm?s=await window.showConfirm("重置账户状态","确定要重置此账户的所有异常状态吗?这将清除限流状态、401错误计数等所有异常标记。","确定重置","取消"):s=confirm("确定要重置此账户的所有异常状态吗?"),!!s)try{a.isResetting=!0;let b="";if(a.platform==="openai")b=`/admin/openai-accounts/${a.id}/reset-status`;else if(a.platform==="openai-responses")b=`/admin/openai-responses-accounts/${a.id}/reset-status`;else if(a.platform==="claude")b=`/admin/claude-accounts/${a.id}/reset-status`;else if(a.platform==="claude-console")b=`/admin/claude-console-accounts/${a.id}/reset-status`;else if(a.platform==="ccr")b=`/admin/ccr-accounts/${a.id}/reset-status`;else if(a.platform==="droid")b=`/admin/droid-accounts/${a.id}/reset-status`;else if(a.platform==="gemini-api")b=`/admin/gemini-api-accounts/${a.id}/reset-status`;else if(a.platform==="gemini")b=`/admin/gemini-accounts/${a.id}/reset-status`;else{L("不支持的账户类型","error"),a.isResetting=!1;return}const A=await F.post(b);A.success?(L("账户状态已重置","success"),tt(!0)):L(A.message||"状态重置失败","error")}catch{L("状态重置失败","error")}finally{a.isResetting=!1}},qt=async a=>{if(!a.isTogglingSchedulable)try{a.isTogglingSchedulable=!0;let s;if(a.platform==="claude")s=`/admin/claude-accounts/${a.id}/toggle-schedulable`;else if(a.platform==="claude-console")s=`/admin/claude-console-accounts/${a.id}/toggle-schedulable`;else if(a.platform==="bedrock")s=`/admin/bedrock-accounts/${a.id}/toggle-schedulable`;else if(a.platform==="gemini")s=`/admin/gemini-accounts/${a.id}/toggle-schedulable`;else if(a.platform==="openai")s=`/admin/openai-accounts/${a.id}/toggle-schedulable`;else if(a.platform==="azure_openai")s=`/admin/azure-openai-accounts/${a.id}/toggle-schedulable`;else if(a.platform==="openai-responses")s=`/admin/openai-responses-accounts/${a.id}/toggle-schedulable`;else if(a.platform==="ccr")s=`/admin/ccr-accounts/${a.id}/toggle-schedulable`;else if(a.platform==="droid")s=`/admin/droid-accounts/${a.id}/toggle-schedulable`;else if(a.platform==="gemini-api")s=`/admin/gemini-api-accounts/${a.id}/toggle-schedulable`;else{L("该账户类型暂不支持调度控制","warning");return}const b=await F.put(s);b.success?(a.schedulable=b.schedulable,L(b.schedulable?"已启用调度":"已禁用调度","success")):L(b.message||"操作失败","error")}catch{L("切换调度状态失败","error")}finally{a.isTogglingSchedulable=!1}},rr=()=>{dt.value=!1,L("账户创建成功","success"),vr(),tt()},ar=()=>{p.value=!1,L("账户更新成功","success"),De.value=!1,tt()},Ur=a=>!a.lastRefreshAt||a.lastRefreshAt===""?"Setup":"OAuth",Ir=()=>"OAuth",Tr=()=>"OAuth",sr=a=>{if(!a||typeof a!="object")return"OAuth";const s=a.isApiKeyMode??a.is_api_key_mode??a.apiKeyMode??a.api_key_mode;if(s===!0||s==="true"||s===1||s==="1")return"API Key";const b=a.authenticationMethod||a.authMethod||a.authentication_mode||a.authenticationMode||a.authentication_method||a.auth_type||a.authType||a.authentication_type||a.authenticationType||a.droidAuthType||a.droidAuthenticationMethod||a.method||a.auth||"";return typeof b=="string"&&b.trim().toLowerCase().replace(/[\s_-]/g,"")==="apikey"?"API Key":"OAuth"},_r=a=>sr(a)==="API Key",lr=a=>{if(!a||typeof a!="object")return 0;if(Array.isArray(a.apiKeys))return a.apiKeys.filter(b=>b.status!=="error").length;if(typeof a.apiKeys=="string"&&a.apiKeys.trim())try{const b=JSON.parse(a.apiKeys);if(Array.isArray(b))return b.filter(A=>A.status!=="error").length}catch{}const s=[a.apiKeyCount,a.api_key_count,a.apiKeysCount,a.api_keys_count];for(const b of s){const A=Number(b);if(Number.isFinite(A)&&A>=0)return A}return 0},Kr=a=>{const s=lr(a),b="ml-1 inline-flex items-center gap-1 rounded-md border px-1.5 py-[1px] text-[10px] font-medium shadow-sm backdrop-blur-sm";return s>0?[b,"border-cyan-200 bg-cyan-50/90 text-cyan-700 dark:border-cyan-500/40 dark:bg-cyan-900/40 dark:text-cyan-200"]:[b,"border-rose-200 bg-rose-50/90 text-rose-600 dark:border-rose-500/40 dark:bg-rose-900/40 dark:text-rose-200"]},Mr=a=>{if(a.subscriptionInfo)try{const s=typeof a.subscriptionInfo=="string"?JSON.parse(a.subscriptionInfo):a.subscriptionInfo;return s.hasClaudeMax===!0?"Claude Max":s.hasClaudePro===!0?"Claude Pro":"Claude Free"}catch{return"Claude"}return"Claude"},or=a=>{if(a.schedulable!==!1)return null;if(a.platform==="claude-console"){if(a.status==="unauthorized")return"API Key无效或已过期(401错误)";if(a.overloadStatus==="overloaded")return"服务过载(529错误)";if(a.rateLimitStatus==="limited")return"触发限流(429错误)";if(a.status==="blocked"&&a.errorMessage)return a.errorMessage}if(a.platform==="claude"){if(a.status==="unauthorized")return"认证失败(401错误)";if(a.status==="temp_error"&&a.errorMessage||a.status==="error"&&a.errorMessage)return a.errorMessage;if(a.isRateLimited)return"触发限流(429错误)";if(a.stoppedReason)return a.stoppedReason;if(a.fiveHourAutoStopped==="true"||a.fiveHourAutoStopped===!0)return"5小时使用量接近限制,已自动停止调度"}if(a.platform==="openai"){if(a.status==="unauthorized")return"认证失败(401错误)";if(a.rateLimitStatus&&a.rateLimitStatus.isRateLimited||a.isRateLimited)return"触发限流(429错误)";if(a.status==="error"&&a.errorMessage)return a.errorMessage}if(a.platform==="openai-responses"){if(a.status==="unauthorized")return"认证失败(401错误)";if(a.rateLimitStatus&&a.rateLimitStatus.isRateLimited||a.isRateLimited)return"触发限流(429错误)";if(a.status==="error"&&a.errorMessage)return a.errorMessage;if(a.status==="rateLimited")return"触发限流(429错误)"}return a.stoppedReason?a.stoppedReason:a.errorMessage?a.errorMessage:"手动停止调度"},d=a=>a.status==="blocked"?"已封锁":a.status==="unauthorized"?"异常":a.isRateLimited||a.status==="rate_limited"||a.rateLimitStatus&&a.rateLimitStatus.isRateLimited||a.rateLimitStatus==="limited"?"限流中":a.status==="temp_error"?"临时异常":a.status==="error"||!a.isActive?"错误":a.schedulable===!1?"已暂停":"正常",t=a=>a.status==="blocked"||a.status==="unauthorized"?"bg-red-100 text-red-800":a.isRateLimited||a.status==="rate_limited"||a.rateLimitStatus&&a.rateLimitStatus.isRateLimited||a.rateLimitStatus==="limited"||a.status==="temp_error"?"bg-orange-100 text-orange-800":a.status==="error"||!a.isActive?"bg-red-100 text-red-800":a.schedulable===!1?"bg-gray-100 text-gray-800":"bg-green-100 text-green-800",ae=a=>a.status==="blocked"||a.status==="unauthorized"?"bg-red-500":a.isRateLimited||a.status==="rate_limited"||a.rateLimitStatus&&a.rateLimitStatus.isRateLimited||a.rateLimitStatus==="limited"||a.status==="temp_error"?"bg-orange-500":a.status==="error"||!a.isActive?"bg-red-500":a.schedulable===!1?"bg-gray-500":"bg-green-500",ye=a=>Bt(a),i=(a,s=null)=>{if(!a)return"bg-gradient-to-r from-blue-500 to-indigo-600";if(s&&(s.isRateLimited||s.status==="rate_limited"||s.rateLimitStatus&&s.rateLimitStatus.isRateLimited||s.rateLimitStatus==="limited"))return"bg-gradient-to-r from-red-500 to-red-600";const A=String(a).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"},se=a=>a.authType==="oauth",le=a=>!a||a.utilization===null||a.utilization===void 0?"-":`${a.utilization}%`,Pe=a=>!a||a.utilization===null||a.utilization===void 0?"0%":`${a.utilization}%`,ze=a=>{const s=(a==null?void 0:a.utilization)||0;return s<60?"bg-gradient-to-r from-blue-500 to-indigo-600":s<90?"bg-gradient-to-r from-yellow-500 to-orange-500":"bg-gradient-to-r from-red-500 to-red-600"},Ke=a=>{if(!a||!a.remainingSeconds)return"-";const s=a.remainingSeconds,b=Math.floor(s/86400),A=Math.floor(s%86400/3600),l=Math.floor(s%3600/60);return b>0?A>0?`${b}天${A}小时`:`${b}天`:A>0?l>0?`${A}小时${l}分钟`:`${A}小时`:l>0?`${l}分钟`:`${Math.floor(s%60)}秒`},M=a=>{if(!a)return null;const s=typeof a.usedPercent=="number"&&!Number.isNaN(a.usedPercent)?a.usedPercent:null,b=typeof a.resetAfterSeconds=="number"&&!Number.isNaN(a.resetAfterSeconds)?a.resetAfterSeconds:null,A=typeof a.remainingSeconds=="number"?a.remainingSeconds:null,l=a.resetAt?Date.parse(a.resetAt):null;return b!==null&&(A!==null&&A<=0||l!==null&&!Number.isNaN(l)&&Date.now()>=l)?0:s===null?null:Math.max(0,Math.min(100,s))},S=a=>{const s=M(a);return s===null?"bg-gradient-to-r from-gray-300 to-gray-400":s>=90?"bg-gradient-to-r from-red-500 to-red-600":s>=75?"bg-gradient-to-r from-yellow-500 to-orange-500":"bg-gradient-to-r from-emerald-500 to-teal-500"},be=a=>{const s=M(a);return s===null?"--":`${s.toFixed(1)}%`},O=a=>{const s=M(a);return s===null?"0%":`${s}%`},Te=a=>a==="secondary"?"周限":"5h",Me=a=>{if(!a)return"--";let s=a.remainingSeconds;if(s==null&&(s=a.resetAfterSeconds),s==null||Number.isNaN(Number(s)))return"--";s=Math.max(0,Math.floor(Number(s)));const b=Math.floor(s/86400),A=Math.floor(s%86400/3600),l=Math.floor(s%3600/60),oe=s%60;return b>0?A>0?`${b}天${A}小时`:`${b}天`:A>0?l>0?`${A}小时${l}分钟`:`${A}小时`:l>0?`${l}分钟`:`${oe}秒`},je=a=>!a||a===0?"0.0000":a<1e-4?a.toExponential(2):a<.01?a.toFixed(6):a<1?a.toFixed(4):a.toFixed(2),Se=a=>{var A,l;const s=Number(((l=(A=a==null?void 0:a.usage)==null?void 0:A.daily)==null?void 0:l.cost)||0),b=Number((a==null?void 0:a.dailyQuota)||0);return!b||b<=0?0:s/b*100},lt=a=>a>=90?"bg-red-500":a>=70?"bg-yellow-500":"bg-green-500",rt=a=>{const s=Number((a==null?void 0:a.maxConcurrentTasks)||0);if(!s||s<=0)return 0;const b=Number((a==null?void 0:a.activeTaskCount)||0);return Math.min(100,b/s*100)},Ct=a=>a>=100?"bg-red-500":a>=80?"bg-yellow-500":"bg-green-500",Nr=a=>{const s=Number((a==null?void 0:a.maxConcurrentTasks)||0);if(!s||s<=0)return"text-gray-500 dark:text-gray-400";const b=Number((a==null?void 0:a.activeTaskCount)||0);return b>=s?"text-red-600 dark:text-red-400":b>=s*.8?"text-yellow-600 dark:text-yellow-400":"text-gray-700 dark:text-gray-200"},Sr=a=>{var A,l;const s=Number(((l=(A=a==null?void 0:a.usage)==null?void 0:A.daily)==null?void 0:l.cost)||0),b=Number((a==null?void 0:a.dailyQuota)||0);return!b||b<=0?"0.00":Math.max(0,b-s).toFixed(2)},Dr=a=>!a.usage||!a.usage.daily?"0.0000":a.usage.daily.cost!==void 0?je(a.usage.daily.cost):"0.0000";he(V,()=>{ee.value=1,Je()}),he(z,a=>{localStorage.setItem(aa,a.toString()),Je()}),he(()=>nt.value.length,()=>{ee.value>Fe.value&&(ee.value=Fe.value||1),Je()}),he(ee,()=>{Je()}),he($t,()=>{Je(),Gr(()=>{ir()})}),he(R,()=>{Wt()});const Pr=a=>a?new Date(a).toLocaleDateString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit"}):"",nr=a=>a?new Date(a){if(!a)return!1;const s=new Date,A=(new Date(a)-s)/(1e3*60*60*24);return A>0&&A<=7},Lr=a=>{H.value=a},Br=()=>{H.value=null},ia=async({accountId:a,expiresAt:s})=>{try{const b=R.value.find(oe=>oe.id===a);if(!b){L("未找到账户","error");return}let A="";switch(b.platform){case"claude":case"claude-oauth":A=`/admin/claude-accounts/${a}`;break;case"gemini":A=`/admin/gemini-accounts/${a}`;break;case"claude-console":A=`/admin/claude-console-accounts/${a}`;break;case"bedrock":A=`/admin/bedrock-accounts/${a}`;break;case"ccr":A=`/admin/ccr-accounts/${a}`;break;case"openai":A=`/admin/openai-accounts/${a}`;break;case"droid":A=`/admin/droid-accounts/${a}`;break;case"azure_openai":A=`/admin/azure-openai-accounts/${a}`;break;case"openai-responses":A=`/admin/openai-responses-accounts/${a}`;break;default:L(`不支持的平台类型: ${b.platform}`,"error");return}const l=await F.put(A,{expiresAt:s||null});l.success?(L("账户到期时间已更新","success"),b.expiresAt=s||null,Br()):(L(l.message||"更新失败","error"),$.value&&$.value.resetSaving())}catch(b){console.error("更新账户过期时间失败:",b),L("更新失败","error"),$.value&&$.value.resetSaving()}},ir=()=>{de.value&&(r.value=de.value.scrollWidth>de.value.clientWidth)};let zr=null;return ur(()=>{tt(!0),Gr(()=>{de.value&&(zr=new ResizeObserver(()=>{ir()}),zr.observe(de.value),ir())}),window.addEventListener("resize",ir)}),Or(()=>{zr&&zr.disconnect(),window.removeEventListener("resize",ir)}),(a,s)=>{const b=da,A=ua;return o(),n("div",Im,[e("div",Tm,[e("div",_m,[s[40]||(s[40]=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 等账户与代理配置 ")],-1)),e("div",Km,[e("div",Mm,[e("div",Sm,[s[27]||(s[27]=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)),He(jr,{modelValue:x.value,"onUpdate:modelValue":s[0]||(s[0]=l=>x.value=l),icon:k.value==="asc"?"fa-sort-amount-up":"fa-sort-amount-down","icon-color":"text-indigo-500",options:it.value,placeholder:"选择排序",onChange:cr},null,8,["modelValue","icon","options"])]),e("div",Dm,[s[28]||(s[28]=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)),He(jr,{modelValue:Z.value,"onUpdate:modelValue":s[1]||(s[1]=l=>Z.value=l),icon:"fa-server","icon-color":"text-blue-500",options:It.value,placeholder:"选择平台",onChange:kr},null,8,["modelValue","options"])]),e("div",Pm,[s[29]||(s[29]=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)),He(jr,{modelValue:pe.value,"onUpdate:modelValue":s[2]||(s[2]=l=>pe.value=l),icon:"fa-layer-group","icon-color":"text-purple-500",options:ft.value,placeholder:"选择分组",onChange:hr},null,8,["modelValue","options"])]),e("div",Lm,[s[30]||(s[30]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-green-500 to-emerald-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),He(jr,{modelValue:X.value,"onUpdate:modelValue":s[3]||(s[3]=l=>X.value=l),icon:"fa-check-circle","icon-color":"text-green-500",options:ht.value,placeholder:"选择状态"},null,8,["modelValue","options"])]),e("div",zm,[s[33]||(s[33]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-cyan-500 to-teal-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),e("div",jm,[v(e("input",{"onUpdate:modelValue":s[4]||(s[4]=l=>V.value=l),class:"h-10 w-full rounded-lg border border-gray-200 bg-white px-3 pl-9 text-sm text-gray-700 placeholder-gray-400 shadow-sm transition-all duration-200 hover:border-gray-300 focus:border-cyan-500 focus:outline-none focus:ring-2 focus:ring-cyan-500/20 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:placeholder-gray-500 dark:hover:border-gray-500",placeholder:"搜索账户名称...",type:"text"},null,512),[[P,V.value]]),s[32]||(s[32]=e("i",{class:"fas fa-search absolute left-3 text-sm text-cyan-500"},null,-1)),V.value?(o(),n("button",{key:0,class:"absolute right-2 flex h-5 w-5 items-center justify-center rounded-full text-gray-400 hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300",onClick:xr},s[31]||(s[31]=[e("i",{class:"fas fa-times text-xs"},null,-1)]))):m("",!0)])])]),e("div",Rm,[e("div",Vm,[He(b,{content:"查看账户统计汇总",effect:"dark",placement:"bottom"},{default:Pt(()=>[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 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:border-gray-500 sm:w-auto",onClick:s[5]||(s[5]=l=>ge.value=!0)},s[34]||(s[34]=[e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-violet-500 to-purple-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1),e("i",{class:"fas fa-chart-bar relative text-violet-500"},null,-1),e("span",{class:"relative"},"统计",-1)]))]),_:1})]),e("div",Om,[He(b,{content:"刷新数据 (Ctrl/⌘+点击强制刷新所有缓存)",effect:"dark",placement:"bottom"},{default:Pt(()=>[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:K.value,onClick:[s[6]||(s[6]=Ut(l=>tt(!0),["ctrl","exact"])),s[7]||(s[7]=Ut(l=>tt(!1),["exact"])),s[8]||(s[8]=Ut(l=>tt(!0),["meta","exact"]))]},[s[35]||(s[35]=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:C(["fas relative text-green-500",K.value?"fa-spinner fa-spin":"fa-sync-alt"])},null,2),s[36]||(s[36]=e("span",{class:"relative"},"刷新",-1))],8,Em)]),_:1})]),e("button",{class:"flex items-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:bg-gray-50 hover:shadow-md dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",onClick:Ge},[e("i",{class:C(we.value?"fas fa-times":"fas fa-check-square")},null,2),e("span",null,u(we.value?"取消选择":"选择"),1)]),E.value.length>0?(o(),n("button",{key:0,class:"group relative flex items-center justify-center gap-2 rounded-lg border border-red-200 bg-red-50 px-4 py-2 text-sm font-medium text-red-700 shadow-sm transition-all duration-200 hover:border-red-300 hover:bg-red-100 hover:shadow-md dark:border-red-700 dark:bg-red-900/30 dark:text-red-300 dark:hover:bg-red-900/50 sm:w-auto",onClick:Cr},[s[37]||(s[37]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-red-500 to-pink-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),s[38]||(s[38]=e("i",{class:"fas fa-trash relative text-red-600 dark:text-red-400"},null,-1)),e("span",Nm,"删除选中 ("+u(E.value.length)+")",1)])):m("",!0),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:Ut($r,["stop"])},s[39]||(s[39]=[e("i",{class:"fas fa-plus"},null,-1),e("span",null,"添加账户",-1)]))])])]),K.value?(o(),n("div",Fm,s[41]||(s[41]=[e("div",{class:"loading-spinner mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500 dark:text-gray-400"},"正在加载账户...",-1)]))):nt.value.length===0?(o(),n("div",qm,s[42]||(s[42]=[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)]))):(o(),n("div",Gm,[e("div",{ref_key:"tableContainerRef",ref:de,class:"table-container"},[e("table",Wm,[e("thead",Bm,[e("tr",null,[Ze.value?(o(),n("th",Qm,[e("div",Hm,[v(e("input",{"onUpdate:modelValue":s[9]||(s[9]=l=>_.value=l),class:"h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500",indeterminate:q.value,type:"checkbox",onChange:yr},null,40,Jm),[[Oe,_.value]])])])):m("",!0),e("th",{class:C(["name-column sticky z-20 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",Ze.value?"left-[50px]":"left-0"]),onClick:s[10]||(s[10]=l=>At("name"))},[s[43]||(s[43]=c(" 名称 ",-1)),x.value==="name"?(o(),n("i",{key:0,class:C(["fas",k.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(o(),n("i",Ym))],2),e("th",{class:"min-w-[220px] 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:s[11]||(s[11]=l=>At("platform"))},[s[44]||(s[44]=c(" 平台/类型 ",-1)),x.value==="platform"?(o(),n("i",{key:0,class:C(["fas",k.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(o(),n("i",Zm))]),e("th",{class:"w-[120px] min-w-[180px] max-w-[200px] 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:s[12]||(s[12]=l=>At("status"))},[s[45]||(s[45]=c(" 状态 ",-1)),x.value==="status"?(o(),n("i",{key:0,class:C(["fas",k.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(o(),n("i",Xm))]),s[51]||(s[51]=e("th",{class:"min-w-[150px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 今日使用 ",-1)),e("th",ec,[e("div",tc,[s[48]||(s[48]=e("span",null,"会话窗口",-1)),He(b,{placement:"top"},{content:Pt(()=>s[46]||(s[46]=[e("div",{class:"w-[260px] space-y-3 text-xs leading-relaxed text-white dark:text-gray-800"},[e("div",{class:"space-y-2"},[e("div",{class:"text-sm font-semibold text-white dark:text-gray-900"}," Claude 系列 "),e("div",{class:"text-gray-200 dark:text-gray-600"}," 会话窗口进度表示 5 小时窗口的时间推移,颜色提示当前调度状态。 "),e("div",{class:"space-y-1 pt-1 text-gray-200 dark:text-gray-600"},[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",{class:"font-medium text-white dark:text-gray-900"},"正常:请求正常处理")]),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",{class:"font-medium text-white dark:text-gray-900"},"警告:接近限制")]),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",{class:"font-medium text-white dark:text-gray-900"},"拒绝:达到速率限制")])])]),e("div",{class:"h-px bg-gray-200 dark:bg-gray-600/50"}),e("div",{class:"space-y-2"},[e("div",{class:"text-sm font-semibold text-white dark:text-gray-900"}," OpenAI "),e("div",{class:"text-gray-200 dark:text-gray-600"}," 进度条分别展示 5h 与周限窗口的额度使用比例,颜色含义与上方保持一致。 "),e("div",{class:"space-y-1 text-gray-200 dark:text-gray-600"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-clock mt-[2px] text-[10px] text-blue-500"}),e("span",{class:"font-medium text-white dark:text-gray-900"},"5h 窗口:5小时使用量进度,到达重置时间后会自动归零。")]),e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-history mt-[2px] text-[10px] text-emerald-500"}),e("span",{class:"font-medium text-white dark:text-gray-900"},"周限窗口:7天使用量进度,重置时同样回到 0%。")]),e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-[2px] text-[10px] text-indigo-500"}),e("span",{class:"font-medium text-white dark:text-gray-900"},'当"重置剩余"为 0 时,进度条与百分比会同步清零。')])])]),e("div",{class:"h-px bg-gray-200 dark:bg-gray-600/50"}),e("div",{class:"space-y-2"},[e("div",{class:"text-sm font-semibold text-white dark:text-gray-900"}," Claude OAuth 账户 "),e("div",{class:"text-gray-200 dark:text-gray-600"}," 展示三个窗口的使用率(utilization百分比),颜色含义同上。 "),e("div",{class:"space-y-1 text-gray-200 dark:text-gray-600"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-clock mt-[2px] text-[10px] text-indigo-500"}),e("span",{class:"font-medium text-white dark:text-gray-900"},"5h 窗口:5小时滑动窗口的使用率。")]),e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-calendar-alt mt-[2px] text-[10px] text-emerald-500"}),e("span",{class:"font-medium text-white dark:text-gray-900"},"7d 窗口:7天总限额的使用率。")]),e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-gem mt-[2px] text-[10px] text-purple-500"}),e("span",{class:"font-medium text-white dark:text-gray-900"},"Sonnet窗口:7天Sonnet模型专用限额。")]),e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-sync-alt mt-[2px] text-[10px] text-blue-500"}),e("span",{class:"font-medium text-white dark:text-gray-900"},"到达重置时间后自动归零。")])])])],-1)])),default:Pt(()=>[s[47]||(s[47]=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,__:[47]})])]),s[52]||(s[52]=e("th",{class:"min-w-[80px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 最后使用 ",-1)),e("th",{class:"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:s[13]||(s[13]=l=>At("priority"))},[s[49]||(s[49]=c(" 优先级 ",-1)),x.value==="priority"?(o(),n("i",{key:0,class:C(["fas",k.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(o(),n("i",rc))]),s[53]||(s[53]=e("th",{class:"min-w-[150px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 代理 ",-1)),e("th",{class:"min-w-[110px] 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:s[14]||(s[14]=l=>At("expiresAt"))},[s[50]||(s[50]=c(" 到期时间 ",-1)),x.value==="expiresAt"?(o(),n("i",{key:0,class:C(["fas",k.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(o(),n("i",ac))]),e("th",{class:C(["operations-column sticky right-0 z-20 px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300",r.value?"min-w-[170px]":"min-w-[200px]"])}," 操作 ",2)])]),e("tbody",sc,[(o(!0),n(Ce,null,Be($t.value,l=>{var oe,Ie;return o(),n("tr",{key:l.id,class:"table-row"},[Ze.value?(o(),n("td",lc,[e("div",oc,[v(e("input",{"onUpdate:modelValue":s[15]||(s[15]=Ae=>E.value=Ae),class:"h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500",type:"checkbox",value:l.id,onChange:Je},null,40,nc),[[Oe,E.value]])])])):m("",!0),e("td",{class:C(["name-column sticky z-10 px-3 py-4",Ze.value?"left-[50px]":"left-0"])},[e("div",ic,[s[58]||(s[58]=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",dc,[e("div",uc,[e("div",{class:"truncate text-sm font-semibold text-gray-900 dark:text-gray-100",title:l.name},u(l.name),9,pc),l.accountType==="dedicated"?(o(),n("span",gc,s[54]||(s[54]=[e("i",{class:"fas fa-lock mr-1"},null,-1),c("专属 ",-1)]))):l.accountType==="group"?(o(),n("span",yc,s[55]||(s[55]=[e("i",{class:"fas fa-layer-group mr-1"},null,-1),c("分组调度 ",-1)]))):(o(),n("span",mc,s[56]||(s[56]=[e("i",{class:"fas fa-share-alt mr-1"},null,-1),c("共享 ",-1)])))]),l.groupInfos&&l.groupInfos.length>0?(o(),n("div",cc,[(o(!0),n(Ce,null,Be(l.groupInfos,Ae=>(o(),n("span",{key:Ae.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:`所属分组: ${Ae.name}`},[s[57]||(s[57]=e("i",{class:"fas fa-folder mr-1"},null,-1)),c(u(Ae.name),1)],8,xc))),128))])):m("",!0),e("div",{class:"truncate text-xs text-gray-500 dark:text-gray-400",title:l.id},u(l.id),9,fc)])])],2),e("td",bc,[e("div",vc,[l.platform==="gemini"?(o(),n("div",kc,[s[59]||(s[59]=e("i",{class:"fas fa-robot text-xs text-yellow-700"},null,-1)),s[60]||(s[60]=e("span",{class:"text-xs font-semibold text-yellow-800"},"Gemini",-1)),s[61]||(s[61]=e("span",{class:"mx-1 h-4 w-px bg-yellow-300"},null,-1)),e("span",hc,u(Ir()),1)])):l.platform==="claude-console"?(o(),n("div",wc,s[62]||(s[62]=[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"?(o(),n("div",$c,s[63]||(s[63]=[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"?(o(),n("div",Ac,[s[64]||(s[64]=e("div",{class:"fa-openai"},null,-1)),s[65]||(s[65]=e("span",{class:"text-xs font-semibold text-gray-950"},"OpenAi",-1)),s[66]||(s[66]=e("span",{class:"mx-1 h-4 w-px bg-gray-400"},null,-1)),e("span",Cc,u(Tr()),1)])):l.platform==="azure_openai"?(o(),n("div",Uc,s[67]||(s[67]=[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"?(o(),n("div",Ic,s[68]||(s[68]=[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-Api",-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"?(o(),n("div",Tc,[s[69]||(s[69]=e("i",{class:"fas fa-brain text-xs text-indigo-700"},null,-1)),e("span",_c,u(Mr(l)),1),s[70]||(s[70]=e("span",{class:"mx-1 h-4 w-px bg-indigo-300"},null,-1)),e("span",Kc,u(Ur(l)),1)])):l.platform==="ccr"?(o(),n("div",Mc,s[71]||(s[71]=[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)]))):l.platform==="droid"?(o(),n("div",Sc,[s[73]||(s[73]=e("i",{class:"fas fa-robot text-xs text-cyan-700 dark:text-cyan-400"},null,-1)),s[74]||(s[74]=e("span",{class:"text-xs font-semibold text-cyan-800 dark:text-cyan-300"},"Droid",-1)),s[75]||(s[75]=e("span",{class:"mx-1 h-4 w-px bg-cyan-300 dark:bg-cyan-600"},null,-1)),e("span",Dc,u(sr(l)),1),_r(l)?(o(),n("span",{key:0,class:C(Kr(l))},[s[72]||(s[72]=e("i",{class:"fas fa-key text-[9px]"},null,-1)),e("span",null,"x"+u(lr(l)),1)],2)):m("",!0)])):l.platform==="gemini-api"?(o(),n("div",Pc,s[76]||(s[76]=[e("i",{class:"fas fa-robot text-xs text-amber-700 dark:text-amber-400"},null,-1),e("span",{class:"text-xs font-semibold text-amber-800 dark:text-amber-300"},"Gemini-API",-1),e("span",{class:"mx-1 h-4 w-px bg-amber-300 dark:bg-amber-600"},null,-1),e("span",{class:"text-xs font-medium text-amber-700 dark:text-amber-400"},"API Key",-1)]))):(o(),n("div",Lc,s[77]||(s[77]=[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",zc,[e("div",jc,[e("span",{class:C(["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:C(["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),c(" "+u(l.status==="blocked"?"已封锁":l.status==="unauthorized"?"异常":l.status==="temp_error"?"临时异常":l.isActive?"正常":"异常"),1)],2),l.rateLimitStatus&&l.rateLimitStatus.isRateLimited||l.rateLimitStatus==="limited"?(o(),n("span",Rc,[s[78]||(s[78]=e("i",{class:"fas fa-exclamation-triangle mr-1"},null,-1)),s[79]||(s[79]=c(" 限流中 ",-1)),l.rateLimitStatus&&typeof l.rateLimitStatus=="object"&&l.rateLimitStatus.minutesRemaining>0?(o(),n("span",Vc,"("+u(wr(l.rateLimitStatus.minutesRemaining))+")",1)):m("",!0)])):m("",!0),l.schedulable===!1?(o(),n("span",Oc,[s[81]||(s[81]=e("i",{class:"fas fa-pause-circle mr-1"},null,-1)),s[82]||(s[82]=c(" 不可调度 ",-1)),or(l)?(o(),Ye(b,{key:0,content:or(l),effect:"dark",placement:"top"},{default:Pt(()=>s[80]||(s[80]=[e("i",{class:"fas fa-question-circle ml-1 cursor-help text-gray-500"},null,-1)])),_:2,__:[80]},1032,["content"])):m("",!0)])):m("",!0),l.status==="blocked"&&l.errorMessage?(o(),n("span",{key:2,class:"mt-1 max-w-xs truncate text-xs text-gray-500 dark:text-gray-400",title:l.errorMessage},u(l.errorMessage),9,Ec)):m("",!0),l.accountType==="dedicated"?(o(),n("span",Nc," 绑定: "+u(l.boundApiKeysCount||0)+" 个API Key ",1)):m("",!0)])]),e("td",Fc,[l.usage&&l.usage.daily?(o(),n("div",qc,[e("div",Gc,[s[83]||(s[83]=e("div",{class:"h-2 w-2 rounded-full bg-blue-500"},null,-1)),e("span",Wc,u(l.usage.daily.requests||0)+" 次",1)]),e("div",Bc,[s[84]||(s[84]=e("div",{class:"h-2 w-2 rounded-full bg-purple-500"},null,-1)),e("span",Qc,u(Dt(l.usage.daily.allTokens||0))+"M",1)]),e("div",Hc,[s[85]||(s[85]=e("div",{class:"h-2 w-2 rounded-full bg-green-500"},null,-1)),e("span",Jc,"$"+u(Dr(l)),1)]),l.usage.averages&&l.usage.averages.rpm>0?(o(),n("div",Yc," 平均 "+u(l.usage.averages.rpm.toFixed(2))+" RPM ",1)):m("",!0)])):(o(),n("div",Zc,"暂无数据"))]),e("td",Xc,[l.platform==="claude"?(o(),n("div",ex,[se(l)&&l.claudeUsage?(o(),n("div",tx,[e("div",rx,[e("div",ax,[s[86]||(s[86]=e("span",{class:"inline-flex min-w-[32px] justify-center rounded-full bg-indigo-100 px-2 py-0.5 text-[11px] font-medium text-indigo-600 dark:bg-indigo-500/20 dark:text-indigo-300"}," 5h ",-1)),e("div",sx,[e("div",lx,[e("div",ox,[e("div",{class:C(["h-2 rounded-full transition-all duration-300",ze(l.claudeUsage.fiveHour)]),style:Qe({width:Pe(l.claudeUsage.fiveHour)})},null,6)]),e("span",nx,u(le(l.claudeUsage.fiveHour)),1)])])]),e("div",ix," 重置剩余 "+u(Ke(l.claudeUsage.fiveHour)),1)]),e("div",dx,[e("div",ux,[s[87]||(s[87]=e("span",{class:"inline-flex min-w-[32px] justify-center rounded-full bg-emerald-100 px-2 py-0.5 text-[11px] font-medium text-emerald-600 dark:bg-emerald-500/20 dark:text-emerald-300"}," 7d ",-1)),e("div",px,[e("div",gx,[e("div",yx,[e("div",{class:C(["h-2 rounded-full transition-all duration-300",ze(l.claudeUsage.sevenDay)]),style:Qe({width:Pe(l.claudeUsage.sevenDay)})},null,6)]),e("span",mx,u(le(l.claudeUsage.sevenDay)),1)])])]),e("div",cx," 重置剩余 "+u(Ke(l.claudeUsage.sevenDay)),1)]),e("div",xx,[e("div",fx,[s[88]||(s[88]=e("span",{class:"inline-flex min-w-[32px] justify-center rounded-full bg-purple-100 px-2 py-0.5 text-[11px] font-medium text-purple-600 dark:bg-purple-500/20 dark:text-purple-300"}," sonnet ",-1)),e("div",bx,[e("div",vx,[e("div",kx,[e("div",{class:C(["h-2 rounded-full transition-all duration-300",ze(l.claudeUsage.sevenDayOpus)]),style:Qe({width:Pe(l.claudeUsage.sevenDayOpus)})},null,6)]),e("span",hx,u(le(l.claudeUsage.sevenDayOpus)),1)])])]),e("div",wx," 重置剩余 "+u(Ke(l.claudeUsage.sevenDayOpus)),1)])])):!se(l)&&l.sessionWindow&&l.sessionWindow.hasActiveWindow?(o(),n("div",$x,[l.usage&&l.usage.sessionWindow?(o(),n("div",Ax,[e("div",Cx,[s[89]||(s[89]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-purple-500"},null,-1)),e("span",Ux,u(Dt(l.usage.sessionWindow.totalTokens))+"M ",1)]),e("div",Ix,[s[90]||(s[90]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-green-500"},null,-1)),e("span",Tx," $"+u(je(l.usage.sessionWindow.totalCost)),1)])])):m("",!0),e("div",_x,[e("div",Kx,[e("div",{class:C(["h-2 rounded-full transition-all duration-300",i(l.sessionWindow.sessionWindowStatus,l)]),style:Qe({width:l.sessionWindow.progress+"%"})},null,6)]),e("span",Mx,u(l.sessionWindow.progress)+"% ",1)]),e("div",Sx,[e("div",null,u(Jt(l.sessionWindow.windowStart,l.sessionWindow.windowEnd)),1),l.sessionWindow.remainingTime>0?(o(),n("div",Dx," 剩余 "+u(Yt(l.sessionWindow.remainingTime)),1)):m("",!0)])])):(o(),n("div",Px,"暂无统计"))])):l.platform==="claude-console"?(o(),n("div",Lx,[e("div",null,[Number(l.dailyQuota)>0?(o(),n(Ce,{key:0},[e("div",zx,[s[91]||(s[91]=e("span",{class:"text-gray-600 dark:text-gray-300"},"额度进度",-1)),e("span",jx,u(Se(l).toFixed(1))+"% ",1)]),e("div",Rx,[e("div",Vx,[e("div",{class:C(["h-2 rounded-full transition-all duration-300",lt(Se(l))]),style:Qe({width:Math.min(100,Se(l))+"%"})},null,6)]),e("span",Ox," $"+u(je(((Ie=(oe=l.usage)==null?void 0:oe.daily)==null?void 0:Ie.cost)||0))+" / $"+u(Number(l.dailyQuota).toFixed(2)),1)]),e("div",Ex,[c(" 剩余 $"+u(Sr(l))+" ",1),e("span",Nx,"重置 "+u(l.quotaResetTime||"00:00"),1)])],64)):(o(),n("div",Fx,s[92]||(s[92]=[e("i",{class:"fas fa-minus"},null,-1)])))]),e("div",qx,[e("div",Gx,[s[93]||(s[93]=e("span",{class:"text-gray-600 dark:text-gray-300"},"并发状态",-1)),Number(l.maxConcurrentTasks||0)>0?(o(),n("span",Wx,u(rt(l).toFixed(0))+"% ",1)):m("",!0)]),Number(l.maxConcurrentTasks||0)>0?(o(),n("div",Bx,[e("div",Qx,[e("div",{class:C(["h-2 rounded-full transition-all duration-300",Ct(rt(l))]),style:Qe({width:Math.min(100,rt(l))+"%"})},null,6)]),e("span",{class:C(["min-w-[48px] text-xs font-medium",Nr(l)])},u(Number(l.activeTaskCount||0))+" / "+u(Number(l.maxConcurrentTasks||0)),3)])):(o(),n("div",Hx,s[94]||(s[94]=[e("i",{class:"fas fa-infinity mr-1"},null,-1),c("并发无限制 ",-1)])))])])):l.platform==="openai"?(o(),n("div",Jx,[l.codexUsage?(o(),n("div",Yx,[e("div",Zx,[e("div",Xx,[e("span",ef,u(Te("primary")),1),e("div",tf,[e("div",rf,[e("div",af,[e("div",{class:C(["h-2 rounded-full transition-all duration-300",S(l.codexUsage.primary)]),style:Qe({width:O(l.codexUsage.primary)})},null,6)]),e("span",sf,u(be(l.codexUsage.primary)),1)])])]),e("div",lf," 重置剩余 "+u(Me(l.codexUsage.primary)),1)]),e("div",of,[e("div",nf,[e("span",df,u(Te("secondary")),1),e("div",uf,[e("div",pf,[e("div",gf,[e("div",{class:C(["h-2 rounded-full transition-all duration-300",S(l.codexUsage.secondary)]),style:Qe({width:O(l.codexUsage.secondary)})},null,6)]),e("span",yf,u(be(l.codexUsage.secondary)),1)])])]),e("div",mf," 重置剩余 "+u(Me(l.codexUsage.secondary)),1)])])):(o(),n("div",cf,s[95]||(s[95]=[e("span",{class:"text-xs"},"N/A",-1)])))])):(o(),n("div",xf,s[96]||(s[96]=[e("span",{class:"text-xs"},"N/A",-1)])))]),e("td",ff,u(Bt(l.lastUsedAt)),1),e("td",bf,[l.platform==="claude"||l.platform==="claude-console"||l.platform==="bedrock"||l.platform==="gemini"||l.platform==="openai"||l.platform==="openai-responses"||l.platform==="azure_openai"||l.platform==="ccr"||l.platform==="droid"||l.platform==="gemini-api"?(o(),n("div",vf,[e("div",kf,[e("div",{class:"h-2 rounded-full bg-gradient-to-r from-green-500 to-blue-600 transition-all duration-300",style:Qe({width:101-(l.priority||50)+"%"})},null,4)]),e("span",hf,u(l.priority||50),1)])):(o(),n("div",wf,s[97]||(s[97]=[e("span",{class:"text-xs"},"N/A",-1)])))]),e("td",$f,[Et(l.proxy)?(o(),n("div",{key:0,class:"break-all rounded bg-blue-50 px-2 py-1 font-mono text-xs",title:Et(l.proxy)},u(Et(l.proxy)),9,Af)):(o(),n("div",Cf,"无代理"))]),e("td",Uf,[e("div",If,[l.expiresAt?(o(),n("span",Tf,[nr(l.expiresAt)?(o(),n("span",{key:0,class:"inline-flex cursor-pointer items-center text-red-600 hover:underline",style:{"font-size":"13px"},onClick:Ut(Ae=>Lr(l),["stop"])},s[98]||(s[98]=[e("i",{class:"fas fa-exclamation-circle mr-1 text-xs"},null,-1),c(" 已过期 ",-1)]),8,_f)):na(l.expiresAt)?(o(),n("span",{key:1,class:"inline-flex cursor-pointer items-center text-orange-600 hover:underline",style:{"font-size":"13px"},onClick:Ut(Ae=>Lr(l),["stop"])},[s[99]||(s[99]=e("i",{class:"fas fa-clock mr-1 text-xs"},null,-1)),c(" "+u(Pr(l.expiresAt)),1)],8,Kf)):(o(),n("span",{key:2,class:"cursor-pointer text-gray-600 hover:underline dark:text-gray-400",style:{"font-size":"13px"},onClick:Ut(Ae=>Lr(l),["stop"])},u(Pr(l.expiresAt)),9,Mf))])):(o(),n("span",{key:1,class:"inline-flex cursor-pointer items-center text-gray-400 hover:underline dark:text-gray-500",style:{"font-size":"13px"},onClick:Ut(Ae=>Lr(l),["stop"])},s[100]||(s[100]=[e("i",{class:"fas fa-infinity mr-1 text-xs"},null,-1),c(" 永不过期 ",-1)]),8,Sf))])]),e("td",Df,[r.value?(o(),n("div",Nf,[e("button",{class:C(["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:Ae=>qt(l)},[e("i",{class:C(["fas",l.schedulable?"fa-toggle-on":"fa-toggle-off"])},null,2),e("span",qf,u(l.schedulable?"调度":"停用"),1)],10,Ff),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:Ae=>Nt(l)},s[106]||(s[106]=[e("i",{class:"fas fa-edit"},null,-1),e("span",{class:"ml-1"},"编辑",-1)]),8,Gf),He(va,{actions:Rt(l)},null,8,["actions"])])):(o(),n("div",Pf,[_t(l)?(o(),n("button",{key:0,class:C(["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:Ae=>tr(l)},[e("i",{class:C(["fas fa-redo",l.isResetting?"animate-spin":""])},null,2),s[101]||(s[101]=e("span",{class:"ml-1"},"重置状态",-1))],10,Lf)):m("",!0),e("button",{class:C(["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:Ae=>qt(l)},[e("i",{class:C(["fas",l.schedulable?"fa-toggle-on":"fa-toggle-off"])},null,2),e("span",jf,u(l.schedulable?"调度":"停用"),1)],10,zf),bt(l)?(o(),n("button",{key:1,class:"rounded bg-indigo-100 px-2.5 py-1 text-xs font-medium text-indigo-700 transition-colors hover:bg-indigo-200",title:"查看使用详情",onClick:Ae=>wt(l)},s[102]||(s[102]=[e("i",{class:"fas fa-chart-line"},null,-1),e("span",{class:"ml-1"},"详情",-1)]),8,Rf)):m("",!0),vt(l)?(o(),n("button",{key:2,class:"rounded bg-cyan-100 px-2.5 py-1 text-xs font-medium text-cyan-700 transition-colors hover:bg-cyan-200 dark:bg-cyan-900/40 dark:text-cyan-300 dark:hover:bg-cyan-800/50",title:"测试账户连通性",onClick:Ae=>pt(l)},s[103]||(s[103]=[e("i",{class:"fas fa-vial"},null,-1),e("span",{class:"ml-1"},"测试",-1)]),8,Vf)):m("",!0),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:Ae=>Nt(l)},s[104]||(s[104]=[e("i",{class:"fas fa-edit"},null,-1),e("span",{class:"ml-1"},"编辑",-1)]),8,Of),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:Ae=>Ft(l)},s[105]||(s[105]=[e("i",{class:"fas fa-trash"},null,-1),e("span",{class:"ml-1"},"删除",-1)]),8,Ef)]))])])}),128))])])],512)])),!K.value&&nt.value.length>0?(o(),n("div",Wf,[(o(!0),n(Ce,null,Be($t.value,l=>{var oe,Ie,Ae,We;return o(),n("div",{key:l.id,class:"card p-4 transition-shadow hover:shadow-lg"},[e("div",Bf,[e("div",Qf,[Ze.value?v((o(),n("input",{key:0,"onUpdate:modelValue":s[16]||(s[16]=ve=>E.value=ve),class:"mt-1 h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500",type:"checkbox",value:l.id,onChange:Je},null,40,Hf)),[[Oe,E.value]]):m("",!0),e("div",{class:C(["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":l.platform==="droid"?"bg-gradient-to-br from-cyan-500 to-sky-600":"bg-gradient-to-br from-blue-500 to-blue-600"])},[e("i",{class:C(["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":(l.platform==="droid","fas fa-robot")])},null,2)],2),e("div",null,[e("h4",Jf,u(l.name||l.email),1),e("div",Yf,[e("span",Zf,u(l.platform),1),s[107]||(s[107]=e("span",{class:"text-xs text-gray-400"},"|",-1)),e("span",Xf,u(l.type),1)])])]),e("span",{class:C(["inline-flex items-center rounded-full px-2 py-1 text-xs font-semibold",t(l)])},[e("div",{class:C(["mr-1.5 h-1.5 w-1.5 rounded-full",ae(l)])},null,2),c(" "+u(d(l)),1)],2)]),e("div",eb,[e("div",null,[s[111]||(s[111]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"今日使用",-1)),e("div",tb,[e("div",rb,[s[108]||(s[108]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-blue-500"},null,-1)),e("p",ab,u(((Ie=(oe=l.usage)==null?void 0:oe.daily)==null?void 0:Ie.requests)||0)+" 次 ",1)]),e("div",sb,[s[109]||(s[109]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-purple-500"},null,-1)),e("p",lb,u(Dt(((We=(Ae=l.usage)==null?void 0:Ae.daily)==null?void 0:We.allTokens)||0))+"M ",1)]),e("div",ob,[s[110]||(s[110]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-green-500"},null,-1)),e("p",nb," $"+u(Dr(l)),1)])])]),e("div",null,[s[114]||(s[114]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"会话窗口",-1)),l.usage&&l.usage.sessionWindow?(o(),n("div",ib,[e("div",db,[s[112]||(s[112]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-purple-500"},null,-1)),e("p",ub,u(Dt(l.usage.sessionWindow.totalTokens))+"M ",1)]),e("div",pb,[s[113]||(s[113]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-green-500"},null,-1)),e("p",gb," $"+u(je(l.usage.sessionWindow.totalCost)),1)])])):(o(),n("div",yb,"-"))])]),e("div",mb,[l.platform==="claude"?(o(),n("div",cb,[se(l)&&l.claudeUsage?(o(),n("div",xb,[e("div",fb,[e("div",bb,[s[115]||(s[115]=e("span",{class:"inline-flex min-w-[32px] justify-center rounded-full bg-indigo-100 px-2 py-0.5 text-[11px] font-medium text-indigo-600 dark:bg-indigo-500/20 dark:text-indigo-300"}," 5h ",-1)),e("div",vb,[e("div",kb,[e("div",hb,[e("div",{class:C(["h-2 rounded-full transition-all duration-300",ze(l.claudeUsage.fiveHour)]),style:Qe({width:Pe(l.claudeUsage.fiveHour)})},null,6)]),e("span",wb,u(le(l.claudeUsage.fiveHour)),1)])])]),e("div",$b," 重置剩余 "+u(Ke(l.claudeUsage.fiveHour)),1)]),e("div",Ab,[e("div",Cb,[s[116]||(s[116]=e("span",{class:"inline-flex min-w-[32px] justify-center rounded-full bg-emerald-100 px-2 py-0.5 text-[11px] font-medium text-emerald-600 dark:bg-emerald-500/20 dark:text-emerald-300"}," 7d ",-1)),e("div",Ub,[e("div",Ib,[e("div",Tb,[e("div",{class:C(["h-2 rounded-full transition-all duration-300",ze(l.claudeUsage.sevenDay)]),style:Qe({width:Pe(l.claudeUsage.sevenDay)})},null,6)]),e("span",_b,u(le(l.claudeUsage.sevenDay)),1)])])]),e("div",Kb," 重置剩余 "+u(Ke(l.claudeUsage.sevenDay)),1)]),e("div",Mb,[e("div",Sb,[s[117]||(s[117]=e("span",{class:"inline-flex min-w-[32px] justify-center rounded-full bg-purple-100 px-2 py-0.5 text-[11px] font-medium text-purple-600 dark:bg-purple-500/20 dark:text-purple-300"}," Opus ",-1)),e("div",Db,[e("div",Pb,[e("div",Lb,[e("div",{class:C(["h-2 rounded-full transition-all duration-300",ze(l.claudeUsage.sevenDayOpus)]),style:Qe({width:Pe(l.claudeUsage.sevenDayOpus)})},null,6)]),e("span",zb,u(le(l.claudeUsage.sevenDayOpus)),1)])])]),e("div",jb," 重置剩余 "+u(Ke(l.claudeUsage.sevenDayOpus)),1)])])):!se(l)&&l.sessionWindow&&l.sessionWindow.hasActiveWindow?(o(),n("div",Rb,[e("div",Vb,[e("div",Ob,[s[119]||(s[119]=e("span",{class:"font-medium text-gray-600 dark:text-gray-300"},"会话窗口",-1)),He(b,{content:"会话窗口进度不代表使用量,仅表示距离下一个5小时窗口的剩余时间",placement:"top"},{default:Pt(()=>s[118]||(s[118]=[e("i",{class:"fas fa-question-circle cursor-help text-xs text-gray-400 hover:text-gray-600"},null,-1)])),_:1,__:[118]})]),e("span",Eb,u(l.sessionWindow.progress)+"% ",1)]),e("div",Nb,[e("div",{class:C(["h-full transition-all duration-300",i(l.sessionWindow.sessionWindowStatus,l)]),style:Qe({width:l.sessionWindow.progress+"%"})},null,6)]),e("div",Fb,[e("span",qb,u(Jt(l.sessionWindow.windowStart,l.sessionWindow.windowEnd)),1),l.sessionWindow.remainingTime>0?(o(),n("span",Gb," 剩余 "+u(Yt(l.sessionWindow.remainingTime)),1)):(o(),n("span",Wb," 已结束 "))])])):(o(),n("div",Bb,"暂无统计"))])):l.platform==="openai"?(o(),n("div",Qb,[l.codexUsage?(o(),n("div",Hb,[e("div",Jb,[e("div",Yb,[e("span",Zb,u(Te("primary")),1),e("div",Xb,[e("div",ev,[e("div",tv,[e("div",{class:C(["h-2 rounded-full transition-all duration-300",S(l.codexUsage.primary)]),style:Qe({width:O(l.codexUsage.primary)})},null,6)]),e("span",rv,u(be(l.codexUsage.primary)),1)])])]),e("div",av," 重置剩余 "+u(Me(l.codexUsage.primary)),1)]),e("div",sv,[e("div",lv,[e("span",ov,u(Te("secondary")),1),e("div",nv,[e("div",iv,[e("div",dv,[e("div",{class:C(["h-2 rounded-full transition-all duration-300",S(l.codexUsage.secondary)]),style:Qe({width:O(l.codexUsage.secondary)})},null,6)]),e("span",uv,u(be(l.codexUsage.secondary)),1)])])]),e("div",pv," 重置剩余 "+u(Me(l.codexUsage.secondary)),1)])])):m("",!0),l.codexUsage?m("",!0):(o(),n("div",gv,"暂无统计"))])):m("",!0),e("div",yv,[s[120]||(s[120]=e("span",{class:"text-gray-500 dark:text-gray-400"},"最后使用",-1)),e("span",mv,u(l.lastUsedAt?ye(l.lastUsedAt):"从未使用"),1)]),l.proxyConfig&&l.proxyConfig.type!=="none"?(o(),n("div",cv,[s[121]||(s[121]=e("span",{class:"text-gray-500 dark:text-gray-400"},"代理",-1)),e("span",xv,u(l.proxyConfig.type.toUpperCase()),1)])):m("",!0),e("div",fv,[s[122]||(s[122]=e("span",{class:"text-gray-500 dark:text-gray-400"},"优先级",-1)),e("span",bv,u(l.priority||50),1)])]),e("div",vv,[e("button",{class:C(["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:ve=>qt(l)},[e("i",{class:C(["fas",l.schedulable?"fa-pause":"fa-play"])},null,2),c(" "+u(l.schedulable?"暂停":"启用"),1)],10,kv),bt(l)?(o(),n("button",{key:0,class:"flex flex-1 items-center justify-center gap-1 rounded-lg bg-indigo-50 px-3 py-2 text-xs text-indigo-600 transition-colors hover:bg-indigo-100",onClick:ve=>wt(l)},s[123]||(s[123]=[e("i",{class:"fas fa-chart-line"},null,-1),c(" 详情 ",-1)]),8,hv)):m("",!0),vt(l)?(o(),n("button",{key:1,class:"flex flex-1 items-center justify-center gap-1 rounded-lg bg-cyan-50 px-3 py-2 text-xs text-cyan-600 transition-colors hover:bg-cyan-100 dark:bg-cyan-900/40 dark:text-cyan-300 dark:hover:bg-cyan-800/50",onClick:ve=>pt(l)},s[124]||(s[124]=[e("i",{class:"fas fa-vial"},null,-1),c(" 测试 ",-1)]),8,wv)):m("",!0),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:ve=>Nt(l)},s[125]||(s[125]=[e("i",{class:"fas fa-edit mr-1"},null,-1),c(" 编辑 ",-1)]),8,$v),e("button",{class:"rounded-lg bg-red-50 px-3 py-2 text-xs text-red-600 transition-colors hover:bg-red-100",onClick:ve=>Ft(l)},s[126]||(s[126]=[e("i",{class:"fas fa-trash"},null,-1)]),8,Av)])])}),128))])):m("",!0)]),!K.value&&nt.value.length>0?(o(),n("div",Cv,[e("div",Uv,[e("span",Iv," 共 "+u(nt.value.length)+" 条记录 ",1),e("div",Tv,[s[127]||(s[127]=e("span",{class:"text-xs text-gray-600 dark:text-gray-400 sm:text-sm"},"每页显示",-1)),v(e("select",{"onUpdate:modelValue":s[17]||(s[17]=l=>z.value=l),class:"rounded-md border border-gray-200 bg-white px-2 py-1 text-xs text-gray-700 transition-colors hover:border-gray-300 focus:border-transparent focus:outline-none focus:ring-2 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:border-gray-500 sm:text-sm",onChange:s[18]||(s[18]=l=>ee.value=1)},[(o(),n(Ce,null,Be(y,l=>e("option",{key:l,value:l},u(l),9,_v)),64))],544),[[Vr,z.value]]),s[128]||(s[128]=e("span",{class:"text-xs text-gray-600 dark:text-gray-400 sm:text-sm"},"条",-1))])]),e("div",Kv,[e("button",{class:"rounded-md border border-gray-300 bg-white px-3 py-1.5 text-xs font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700 sm:py-1 sm:text-sm",disabled:ee.value===1,onClick:s[19]||(s[19]=l=>ee.value--)},s[129]||(s[129]=[e("i",{class:"fas fa-chevron-left"},null,-1)]),8,Mv),e("div",Sv,[St.value?(o(),n("button",{key:0,class:"hidden rounded-md border border-gray-300 bg-white px-3 py-1 text-sm font-medium text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700 sm:block",onClick:s[20]||(s[20]=l=>ee.value=1)}," 1 ")):m("",!0),gr.value?(o(),n("span",Dv," ... ")):m("",!0),(o(!0),n(Ce,null,Be(gt.value,l=>(o(),n("button",{key:l,class:C(["rounded-md border px-3 py-1 text-xs font-medium transition-colors sm:text-sm",l===ee.value?"border-blue-500 bg-blue-50 text-blue-600 dark:border-blue-400 dark:bg-blue-500/10 dark:text-blue-300":"border-gray-300 bg-white text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700"]),onClick:oe=>ee.value=l},u(l),11,Pv))),128)),Er.value?(o(),n("span",Lv," ... ")):m("",!0),Gt.value?(o(),n("button",{key:3,class:"hidden rounded-md border border-gray-300 bg-white px-3 py-1 text-sm font-medium text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700 sm:block",onClick:s[21]||(s[21]=l=>ee.value=Fe.value)},u(Fe.value),1)):m("",!0)]),e("button",{class:"rounded-md border border-gray-300 bg-white px-3 py-1.5 text-xs font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700 sm:py-1 sm:text-sm",disabled:ee.value===Fe.value||Fe.value===0,onClick:s[22]||(s[22]=l=>ee.value++)},s[130]||(s[130]=[e("i",{class:"fas fa-chevron-right"},null,-1)]),8,zv)])])):m("",!0),dt.value&&(!f.value||f.value!=="ccr")?(o(),Ye(ta,{key:1,onClose:Zt,onPlatformChanged:s[23]||(s[23]=l=>f.value=l),onSuccess:rr})):dt.value&&f.value==="ccr"?(o(),Ye(ra,{key:2,onClose:Zt,onSuccess:rr})):m("",!0),p.value&&D.value&&D.value.platform==="ccr"?(o(),Ye(ra,{key:3,account:D.value,onClose:s[24]||(s[24]=l=>p.value=!1),onSuccess:ar},null,8,["account"])):p.value?(o(),Ye(ta,{key:4,account:D.value,onClose:s[25]||(s[25]=l=>p.value=!1),onSuccess:ar},null,8,["account"])):m("",!0),He(sa,{"cancel-text":at(g).cancelText,"confirm-text":at(g).confirmText,message:at(g).message,show:at(Ve),title:at(g).title,onCancel:at(B),onConfirm:at(U)},null,8,["cancel-text","confirm-text","message","show","title","onCancel","onConfirm"]),ue.value?(o(),Ye(My,{key:5,account:Le.value||{},"generated-at":re.value,history:Q.value,loading:$e.value,overview:Ue.value,show:ue.value,summary:I.value,onClose:Vt},null,8,["account","generated-at","history","loading","overview","show","summary"])):m("",!0),He(em,{ref_key:"expiryEditModalRef",ref:$,account:H.value||{id:null,expiresAt:null,name:""},show:!!H.value,onClose:Br,onSave:ia},null,8,["account","show"]),He(Um,{account:ce.value,show:j.value,onClose:Ot},null,8,["account","show"]),He(A,{modelValue:ge.value,"onUpdate:modelValue":s[26]||(s[26]=l=>ge.value=l),style:{maxWidth:"1200px"},title:"账户统计汇总",width:"90%"},{default:Pt(()=>[e("div",jv,[e("div",Rv,[e("table",Vv,[s[132]||(s[132]=e("thead",{class:"bg-gray-100 dark:bg-gray-700"},[e("tr",null,[e("th",{class:"border border-gray-300 px-4 py-2 text-left dark:border-gray-600"}," 平台类型 "),e("th",{class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"}," 正常 "),e("th",{class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"}," 不可调度 "),e("th",{class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"}," 限流0-1h "),e("th",{class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"}," 限流1-5h "),e("th",{class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"}," 限流5-12h "),e("th",{class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"}," 限流12-24h "),e("th",{class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"}," 限流>24h "),e("th",{class:"border border-gray-300 px-4 py-2 text-center dark:border-gray-600"}," 其他 "),e("th",{class:"border border-gray-300 bg-blue-50 px-4 py-2 text-center font-bold dark:border-gray-600 dark:bg-blue-900/30"}," 合计 ")])],-1)),e("tbody",null,[(o(!0),n(Ce,null,Be(Mt.value,l=>(o(),n("tr",{key:l.platform},[e("td",Ov,u(l.platformLabel),1),e("td",Ev,[e("span",Nv,u(l.normal),1)]),e("td",Fv,[e("span",qv,u(l.unschedulable),1)]),e("td",Gv,[e("span",Wv,u(l.rateLimit0_1h),1)]),e("td",Bv,[e("span",Qv,u(l.rateLimit1_5h),1)]),e("td",Hv,[e("span",Jv,u(l.rateLimit5_12h),1)]),e("td",Yv,[e("span",Zv,u(l.rateLimit12_24h),1)]),e("td",Xv,[e("span",e1,u(l.rateLimitOver24h),1)]),e("td",t1,[e("span",r1,u(l.other),1)]),e("td",a1,u(l.total),1)]))),128)),e("tr",s1,[s[131]||(s[131]=e("td",{class:"border border-gray-300 px-4 py-2 dark:border-gray-600"},"合计",-1)),e("td",l1,[e("span",o1,u(et.value.normal),1)]),e("td",n1,[e("span",i1,u(et.value.unschedulable),1)]),e("td",d1,[e("span",u1,u(et.value.rateLimit0_1h),1)]),e("td",p1,[e("span",g1,u(et.value.rateLimit1_5h),1)]),e("td",y1,[e("span",m1,u(et.value.rateLimit5_12h),1)]),e("td",c1,[e("span",x1,u(et.value.rateLimit12_24h),1)]),e("td",f1,[e("span",b1,u(et.value.rateLimitOver24h),1)]),e("td",v1,[e("span",k1,u(et.value.other),1)]),e("td",h1,u(et.value.total),1)])])])]),s[133]||(s[133]=e("p",{class:"text-sm text-gray-500 dark:text-gray-400"}," 注:限流时间列表示剩余限流时间在指定范围内的账户数量 ",-1))])]),_:1},8,["modelValue"])])}}},K1=pr(w1,[["__scopeId","data-v-4096cfc9"]]);export{K1 as default};