PageSourceSearch

https://justcrew.ai/assets/SuperadminHomeView-DXynI9F4.js

js justcrew.ai collected 2026-10-05 13:44:12 UTC 13,954 bytes, 1 lines download raw bytes

1import{u as ge,a as be}from"./vendor-vue-ecosystem-BkJu_eUu.js";import{h as z,A as m,r as g,c as S,a as b,t as F,_ as ke}from"./index-DEH0z3K7.js";import{d as Ce,o as xe,z as o,A as n,C as t,G as a,u as e,R as c,k as d,P as p,F as v,B as X,K as f,J as T,M as Z,D as L,b as u,c as _}from"./vendor-vue-Cnwq9VWu.js";import"./vendor-axios-BOeqtr82.js";import"./vendor-misc-D87iqtea.js";const we={class:"superadmin-home","data-testid":"superadmin-home"},Se={class:"sa-header"},Te={class:"sa-header__main"},Ae={class:"sa-header__eyebrow"},Re={class:"sa-header__title"},ze={class:"sa-header__counters"},Ne={class:"sa-metrics","data-testid":"superadmin-home-metrics"},Ee={class:"metric__label"},Ie={key:0,class:"metric__skeleton"},Ue={class:"metric__value"},He={class:"metric__sub"},Me={class:"metric__label"},$e={key:0,class:"metric__skeleton"},Be={class:"metric__value"},De={class:"metric__sub"},Fe={class:"metric__label"},Le={key:0,class:"metric__skeleton"},Oe={class:"metric__value"},Ve={class:"metric__sub"},Pe={class:"metric__label"},Je={key:0,class:"metric__skeleton"},Ge={class:"metric__value"},je={class:"sa-grid sa-grid--teams-llm"},Ke={class:"sa-card__head"},Ye={class:"sa-card__title"},qe={key:0,class:"sa-card__skeletons"},Qe={key:3,class:"teams-table"},We={class:"num"},Xe={class:"num"},Ze=["data-testid","onClick"],et={class:"teams-table__name"},tt={class:"num"},st={class:"num"},at={class:"sa-card__head sa-card__head--inline"},lt={class:"sa-card__title"},it={key:0,class:"sa-card__skeletons"},ot=["aria-label"],rt=["title"],nt={class:"llm-list"},dt=["data-testid"],mt={class:"llm-list__main"},ct={class:"llm-list__name"},ut={key:0,class:"llm-list__models"},pt={class:"llm-list__cost"},_t={class:"llm-list__share"},ht={class:"sa-grid sa-grid--tmpl-users"},vt={class:"sa-card__head sa-card__head--inline"},ft={class:"sa-card__title"},yt={key:0,class:"sa-card__skeletons"},gt={key:3,class:"templates-grid"},bt=["data-testid"],kt={class:"template-card__icon"},Ct={class:"template-card__body"},xt={class:"template-card__name"},wt={class:"template-card__meta"},St={class:"sa-card__head sa-card__head--inline"},Tt={class:"sa-card__title"},At={key:0,class:"sa-card__skeletons"},Rt={key:3,class:"users-list"},zt=["data-testid"],Nt={class:"user-row__avatar"},Et=["src","alt"],It={key:1},Ut={class:"user-row__main"},Ht={class:"user-row__name"},Mt={class:"user-row__email"},$t=Ce({__name:"SuperadminHomeView",setup(Bt){const{t:l,locale:O}=ge(),C=be(),y=u([]),h=u([]),A=u([]),x=u([]),k=u(!0),N=u(!0),E=u(!0),I=u(!0),U=u(!1),H=u(!1),M=u(!1),$=u(!1);xe(()=>{ee(),te(),se(),ae()});async function ee(){k.value=!0,U.value=!1;try{const{data:s}=await z.get("/api/llm-gateway/stats/by-provider",{params:{topModels:5}});y.value=Array.isArray(s)?s:[]}catch{y.value=[],U.value=!0}finally{k.value=!1}}async function te(){N.value=!0,H.value=!1;try{const{data:s}=await z.get("/api/admin/teams/overview");h.value=Array.isArray(s)?s:[]}catch{h.value=[],H.value=!0}finally{N.value=!1}}async function se(){E.value=!0,M.value=!1;try{const{data:s}=await z.get("/api/team-templates");A.value=Array.isArray(s)?s:[]}catch{A.value=[],M.value=!0}finally{E.value=!1}}async function ae(){I.value=!0,$.value=!1;try{const{data:s}=await z.get("/api/iam/users");x.value=Array.isArray(s)?s:[]}catch{x.value=[],$.value=!0}finally{I.value=!1}}const le=_(()=>y.value.reduce((s,r)=>s+r.totalCostRub,0)),B=_(()=>y.value.reduce((s,r)=>s+r.totalCalls,0)),ie=_(()=>y.value.reduce((s,r)=>s+r.errorCalls+r.timeoutCalls,0)),V=_(()=>B.value===0?0:Math.round(ie.value/B.value*1e3)/10),D=_(()=>V.value>1),P=_(()=>{if(h.value.length===0)return 0;const s=new Set;for(const r of h.value)s.add(r.workspaceId??"__none__");return s.size}),J=_(()=>x.value.length),G=_(()=>h.value.reduce((s,r)=>s+r.aiEmployeesCount,0));function j(s){if(s==null||!Number.isFinite(s))return"—";const r=O.value==="ru"?"ru-RU":"en-US";return new Intl.NumberFormat(r,{maximumFractionDigits:0}).format(s)}function oe(s){if(s==null||!Number.isFinite(s))return"—";const r=O.value==="ru"?"ru-RU":"en-US";return new Intl.NumberFormat(r).format(s)}function K(s){const r=s/100;return Number.isFinite(r)?Math.max(0,Math.min(100,Math.round(r))):0}const re={anthropic:"Anthropic",openai:"OpenAI",caila:"Caila",gemini:"Gemini",google:"Google",azure:"Azure",cohere:"Cohere",mistral:"Mistral"};function Y(s){const r=s.toLowerCase();return re[r]??s.charAt(0).toUpperCase()+s.slice(1)}const ne={anthropic:"#d97706",openai:"#10a37f",caila:"#7e62ed",gemini:"#3b82f6",google:"#4285f4",azure:"#0078d4",cohere:"#ec4899",mistral:"#f97316"};function q(s){return ne[s.toLowerCase()]??"var(--jc-color-accent)"}const de=_(()=>A.value.slice(0,4)),me=_(()=>x.value.slice(0,5)),ce=_(()=>h.value.slice(0,6));function Q(s){return s.membersCount+s.aiEmployeesCount>0?"active":"idle"}function ue(s){return s==="active"?"success":"neutral"}function pe(s){const r=s.displayName??s.email,i=r.indexOf("@"),w=(i>
10?r.slice(0,i):r).split(/\s+|[._-]/).filter(Boolean);return w.length===0?"?":w.length===1?w[0].slice(0,2).toUpperCase():(w[0][0]+w[1][0]).toUpperCase()}function W(s){if(s.displayName)return s.displayName;const r=s.email.indexOf("@");return r>0?s.email.slice(0,r):s.email}function _e(){C.push("/teams")}function he(){C.push("/admin/team-templates")}function ve(){C.push("/admin/users")}function fe(){C.push("/superadmin/llm-gateway/statistics")}function ye(s){C.push(`/teams/${s}`)}return(s,r)=>(o(),n("section",we,[t("header",Se,[t("div",Te,[t("div",Ae,a(e(l)("platform.home.superadmin.contextLabel")),1),t("h1",Re,a(e(l)("platform.home.superadmin.title")),1),t("div",ze,[t("span",null,[t("b",null,a(P.value),1),c(" "+a(e(l)("platform.home.superadmin.counters.orgs",P.value)),1)]),r[1]||(r[1]=t("span",{class:"sa-header__sep"},"·",-1)),t("span",null,[t("b",null,a(h.value.length),1),c(" "+a(e(l)("platform.home.superadmin.counters.teams",h.value.length)),1)]),r[2]||(r[2]=t("span",{class:"sa-header__sep"},"·",-1)),t("span",null,[t("b",null,a(J.value),1),c(" "+a(e(l)("platform.home.superadmin.counters.humans",J.value)),1)]),r[3]||(r[3]=t("span",{class:"sa-header__sep"},"·",-1)),t("span",null,[t("b",null,a(G.value),1),c(" "+a(e(l)("platform.home.superadmin.counters.aiEmployees",G.value)),1)])])])]),t("section",Ne,[d(e(g),{padding:"md",class:"metric","data-testid":"superadmin-home-metric-calls"},{default:p(()=>[t("div",Ee,a(e(l)("platform.home.superadmin.metrics.calls")),1),k.value?(o(),n("div",Ie,[d(e(m),{height:"28px"})])):(o(),n(v,{key:1},[t("div",Ue,a(oe(B.value)),1),t("div",He,a(e(l)("platform.home.superadmin.metrics.callsSub")),1)],64))]),_:1}),d(e(g),{padding:"md",class:"metric","data-testid":"superadmin-home-metric-spend"},{default:p(()=>[t("div",Me,a(e(l)("platform.home.superadmin.metrics.spend")),1),k.value?(o(),n("div",$e,[d(e(m),{height:"28px"})])):(o(),n(v,{key:1},[t("div",Be,[c(a(j(le.value)),1),r[4]||(r[4]=t("span",{class:"metric__unit"}," ₽",-1))]),t("div",De,a(e(l)("platform.home.superadmin.metrics.spendSub")),1)],64))]),_:1}),d(e(g),{padding:"md",class:"metric","data-testid":"superadmin-home-metric-providers"},{default:p(()=>[t("div",Fe,a(e(l)("platform.home.superadmin.metrics.providers")),1),k.value?(o(),n("div",Le,[d(e(m),{height:"28px"})])):(o(),n(v,{key:1},[t("div",Oe,a(y.value.length),1),t("div",Ve,a(e(l)("platform.home.superadmin.metrics.providersSub")),1)],64))]),_:1}),d(e(g),{padding:"md",class:X(["metric",{"metric--amber":D.value}]),"data-testid":"superadmin-home-metric-errors"},{default:p(()=>[t("div",Pe,a(e(l)("platform.home.superadmin.metrics.errorRate")),1),k.value?(o(),n("div",Je,[d(e(m),{height:"28px"})])):(o(),n(v,{key:1},[t("div",Ge,[c(a(V.value),1),r[5]||(r[5]=t("span",{class:"metric__unit"},"%",-1))]),t("div",{class:X(["metric__sub",{"metric__sub--amber":D.value}])},a(D.value?e(l)("platform.home.superadmin.metrics.errorRateHigh"):e(l)("platform.home.superadmin.metrics.errorRateOk")),3)],64))]),_:1},8,["class"])]),t("section",je,[d(e(g),{padding:"none",class:"sa-card","data-testid":"superadmin-home-teams"},{default:p(()=>[t("div",Ke,[t("h2",Ye,a(e(l)("platform.home.superadmin.teams.title")),1),t("button",{class:"sa-card__link",type:"button",onClick:_e},[c(a(e(l)("platform.home.superadmin.teams.all",{n:h.value.length}))+" ",1),d(e(S),{name:"chevron-right",size:11})])]),N.value?(o(),n("div",qe,[d(e(m),{height:"32px"}),d(e(m),{height:"32px"}),d(e(m),{height:"32px"})])):H.value?(o(),f(e(b),{key:1,icon:"bell",title:e(l)("platform.home.superadmin.teams.errorTitle"),description:e(l)("platform.home.superadmin.teams.errorHint")},null,8,["title","description"])):h.value.length===0?(o(),f(e(b),{key:2,icon:"users",t
1itle:e(l)("platform.home.superadmin.teams.emptyTitle"),description:e(l)("platform.home.superadmin.teams.emptyHint")},null,8,["title","description"])):(o(),n("table",Qe,[t("thead",null,[t("tr",null,[t("th",null,a(e(l)("platform.home.superadmin.teams.colName")),1),t("th",We,a(e(l)("platform.home.superadmin.teams.colHumans")),1),t("th",Xe,a(e(l)("platform.home.superadmin.teams.colAi")),1),t("th",null,a(e(l)("platform.home.superadmin.teams.colStatus")),1)])]),t("tbody",null,[(o(!0),n(v,null,T(ce.value,i=>(o(),n("tr",{key:i.teamId,class:"teams-table__row","data-testid":`superadmin-home-team-${i.teamId}`,onClick:R=>ye(i.teamId)},[t("td",et,a(i.name),1),t("td",tt,a(i.membersCount),1),t("td",st,a(i.aiEmployeesCount),1),t("td",null,[d(e(F),{variant:ue(Q(i)),size:"sm"},{default:p(()=>[c(a(e(l)("platform.home.superadmin.teams.status."+Q(i))),1)]),_:2},1032,["variant"])])],8,Ze))),128))])]))]),_:1}),d(e(g),{padding:"md",class:"sa-card","data-testid":"superadmin-home-llm"},{default:p(()=>[t("div",at,[t("h2",lt,a(e(l)("platform.home.superadmin.llm.title")),1),t("button",{class:"sa-card__link",type:"button",onClick:fe},[c(a(e(l)("platform.home.superadmin.llm.open"))+" ",1),d(e(S),{name:"chevron-right",size:11})])]),k.value?(o(),n("div",it,[d(e(m),{height:"12px"}),d(e(m),{height:"50px"})])):U.value?(o(),f(e(b),{key:1,icon:"bell",title:e(l)("platform.home.superadmin.providers.errorTitle"),description:e(l)("platform.home.superadmin.providers.errorHint")},null,8,["title","description"])):y.value.length===0?(o(),f(e(b),{key:2,icon:"analytics",title:e(l)("platform.home.superadmin.providers.emptyTitle"),description:e(l)("platform.home.superadmin.providers.emptyHint")},null,8,["title","description"])):(o(),n(v,{key:3},[t("div",{class:"llm-bar",role:"img","aria-label":e(l)("platform.home.superadmin.llm.barLabel")},[(o(!0),n(v,null,T(y.value,i=>(o(),n("span",{key:i.provider,style:Z(`flex: ${i.costShareBps}; background: ${q(i.provider)}`),title:`${Y(i.provider)} ${K(i.costShareBps)}%`},null,12,rt))),128))],8,ot),t("ul",nt,[(o(!0),n(v,null,T(y.value,i=>(o(),n("li",{key:i.provider,class:"llm-list__item","data-testid":`superadmin-home-provider-${i.provider}`},[t("span",{class:"llm-list__dot",style:Z(`background: ${q(i.provider)}`)},null,4),t("div",mt,[t("div",ct,a(Y(i.provider)),1),i.topModels.length>0?(o(),n("div",ut,a(i.topModels.slice(0,3).map(R=>R.model).join(" · ")),1)):L("",!0)]),t("span",pt,a(j(i.totalCostRub))+" ₽",1),t("span",_t,a(K(i.costShareBps))+"%",1)],8,dt))),128))])],64))]),_:1})]),t("section",ht,[d(e(g),{padding:"md",class:"sa-card","data-testid":"superadmin-home-templates"},{default:p(()=>[t("div",vt,[t("h2",ft,a(e(l)("platform.home.superadmin.templates.title")),1),t("button",{class:"sa-card__link",type:"button",onClick:he},[c(a(e(l)("platform.home.superadmin.templates.catalog"))+" ",1),d(e(S),{name:"chevron-right",size:11})])]),E.value?(o(),n("div",yt,[d(e(m),{height:"60px"}),d(e(m),{height:"60px"})])):M.value?(o(),f(e(b),{key:1,icon:"bell",title:e(l)("platform.home.superadmin.templates.errorTitle"),description:e(l)("platform.home.superadmin.templates.errorHint")},null,8,["title","description"])):A.value.length===0?(o(),f(e(b),{key:2,icon:"template",title:e(l)("platform.home.superadmin.templates.emptyTitle"),description:e(l)("platform.home.superadmin.templates.emptyHint")},null,8,["title","description"])):(o(),n("div",gt,[(o(!0),n(v,null,T(de.value,i=>(o(),n("button",{key:i.id,type:"button",class:"template-card","data-testid":`superadmin-home-template-${i.id}`,onClick:r[0]||(r[0]=R=>e(C).push("/admin/team-templates"))},[t("div",kt,[d(e(S),{name:"template",size:14})]),t("div",Ct,[t("div",xt,a(i.name),1),t("div",wt,a(e(l)("platform.home.superadmin.templates.rolesCount",{n:i.roles.length},i.roles.length)),1)])],8,bt))),128))]))]),_:1}),d(e(g),{padding:"md",class:"sa-card","data-testid":"superadmin-home-users"},{default:p(()=>[t("div",St,[t("h2",Tt,a(e(l)("platform.home.superadmin.users.title")),1),t("button",{class:"sa-card__link",type:"button",onClick:ve},[c(a(e(l)("platform.home.superadmin.users.all",{n:x.value.length}))+" ",1),d(e(S),{name:"chevron-right",size:11})])]),I.value?(o(),n("div",At,[d(e(m),{height:"40px"}),d(e(m),{height:"40px"}),d(e(m),{height:"40px"})])):$.value?(o(),f(e(b),{key:1,icon:"bell",title:e(l)("platform.home.superadmin.users.errorTitle"),description:e(l)("platform.home.superadmin.users.errorHint")},null,8,["title","description"])):x.value.length===0?(o(),f(e(b),{key:2,icon:"user",title:e(l)("platform.home.superadmin.users.emptyTitle"),description:e(l)("platform.home.superadmin.users.emptyHint")},null,8,["title","description"])):(o(),n("ul",Rt,[(o(!0),n(v,null,T(me.value,i=>(o(),n("li",{key:i.id,class:"user-row","data-testid":`superadmin-home-user-${i.id}`},[t("div",Nt,[i.avatarUrl?(o(),n("img",{key:0,src:i.avatarUrl,alt:W(i)},null,8,Et)):(o(),n("span",It,a(pe(i)),1))]),t("div",Ut,[t("div",Ht,a(W(i)),1),t("div",Mt,a(i.email),1)]),i.isSuperadmin?(o(),f(e(F),{key:0,variant:"danger",size:"sm"},{default:p(()=>[c(a(e(l)("platform.home.superadmin.users.role.superadmin")),1)]),_:1})):L("",!0),i.status==="BLOCKED"?(o(),f(e(F),{key:1,variant:"warning",size:"sm"},{default:p(()=>
1[c(a(e(l)("platform.home.superadmin.users.role.blocked")),1)]),_:1})):L("",!0)],8,zt))),128))]))]),_:1})])]))}}),Pt=ke($t,[["__scopeId","data-v-d4c466de"]]);export{Pt as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.