constload=async()=>{loading.value=true;try{constres=awaitadminAPI.groups.list(1,1000);groups.value=res.items.filter(g=>g.subscription_type==='standard'&&g.status==='active')}catch(error){console.error('Failed to load groups:',error)}finally{loading.value=false}}
try{constres=awaitadminAPI.users.getUserApiKeys(props.user.id);apiKeys.value=res.items||[]}catch(error){console.error('Failed to load API keys:',error)}finally{loading.value=false}
consthandleBulkDelete=async()=>{if(!confirm(t('common.confirm')))return;try{awaitPromise.all(selIds.value.map(id=>adminAPI.accounts.delete(id)));selIds.value=[];reload()}catch(error){console.error('Failed to bulk delete accounts:',error)}}
consthandleRefresh=async(a:Account)=>{try{awaitadminAPI.accounts.refreshCredentials(a.id);load()}catch(error){console.error('Failed to refresh credentials:',error)}}
consthandleResetStatus=async(a:Account)=>{try{awaitadminAPI.accounts.clearError(a.id);appStore.showSuccess(t('common.success'));load()}catch(error){console.error('Failed to reset status:',error)}}
consthandleClearRateLimit=async(a:Account)=>{try{awaitadminAPI.accounts.clearRateLimit(a.id);appStore.showSuccess(t('common.success'));load()}catch(error){console.error('Failed to clear rate limit:',error)}}
constconfirmDelete=async()=>{if(!deletingAcc.value)return;try{awaitadminAPI.accounts.delete(deletingAcc.value.id);showDeleteDialog.value=false;deletingAcc.value=null;reload()}catch(error){console.error('Failed to delete account:',error)}}
consthandleTempUnschedReset=async()=>{if(!tempUnschedAcc.value)return;try{awaitadminAPI.accounts.clearError(tempUnschedAcc.value.id);showTempUnsched.value=false;tempUnschedAcc.value=null;load()}catch(error){console.error('Failed to reset temp unscheduled:',error)}}
onMounted(async()=>{load();try{const[p,g]=awaitPromise.all([adminAPI.proxies.getAll(),adminAPI.groups.getAll()]);proxies.value=p;groups.value=g}catch(error){console.error('Failed to load proxies/groups:',error)}})
constloadStats=async()=>{try{consts=awaitadminAPI.usage.getStats(filters.value);usageStats.value=s}catch(error){console.error('Failed to load usage stats:',error)}}
constloadStats=async()=>{loading.value=true;try{awaitauthStore.refreshUser();stats.value=awaitusageAPI.getDashboardStats()}catch(error){console.error('Failed to load dashboard stats:',error)}finally{loading.value=false}}
constloadCharts=async()=>{loadingCharts.value=true;try{constres=awaitPromise.all([usageAPI.getDashboardTrend({start_date:startDate.value,end_date:endDate.value,granularity:granularity.valueasany}),usageAPI.getDashboardModels({start_date:startDate.value,end_date:endDate.value})]);trendData.value=res[0].trend||[];modelStats.value=res[1].models||[]}catch(error){console.error('Failed to load charts:',error)}finally{loadingCharts.value=false}}
constloadRecent=async()=>{loadingUsage.value=true;try{constres=awaitusageAPI.getByDateRange(startDate.value,endDate.value);recentUsage.value=res.items.slice(0,5)}catch(error){console.error('Failed to load recent usage:',error)}finally{loadingUsage.value=false}}
onMounted(async()=>{try{consts=awaitauthAPI.getPublicSettings();contactInfo.value=s.contact_info||''}catch(error){console.error('Failed to load contact info:',error)}})