1import{bO as R,aL as Br,bP as Lt,A as is,f as q,ag as X,z as Ur,j as e,B as w,c as M,k as Ge,d as Kr,b as zr,G as Qr,e as Gr,g as Ks,h as zs,i as Qs,R as Wr}from"./index.LmkOyOng.js";import{d as et}from"./dayjs.min.DN0qZFL-.js";import{r as f}from"./milkdown.B0s1CGU6.js";import{A as Qe}from"./AlertDialogBase.OSvV2ypZ.js";import{P as Hr,a as Yr,b as ws,c as Jr,e as Zr,d as Xr,f as ea}from"./pagination.DXBn0oOh.js";import Z from"./loader-circle.VIyOI9_Q.js";import{a as sa,b as ta,c as Gs,d as ts,e as ra,f as Ue,T as qt}from"./TableBase.Cj3j39KP.js";import{D as aa,a as na,b as la,c as rs,i as oa}from"./dropdown-menu.Biv4bV2a.js";import{I as le}from"./input.Dv1TfntM.js";import{S as Me,a as Re,b as Te,c as Ae,d as H}from"./select.Do84HOTA.js";import{T as Ot,a as It,b as Pe,c as Ws}from"./tabs.zA6UGIQ-.js";import{u as W}from"./useMutation.kETI4RWh.js";import{u as Fs}from"./useDebounce.fre3YJgB.js";import{u as ia}from"./useTranslation.CXlQ4DWn.js";import{u as st,U as Zs}from"./useSingleUpload.HQFtjJwO.js";import{U as ca}from"./UnifiedDropzone.CUiCst4E.js";import Se from"./x.DBKWSlwY.js";import $e from"./plus.BoudqRtP.js";import{C as Bt,a as Ut,b as Kt}from"./collapsible.zLyBq-5i.js";import{u as Ss}from"./useInfiniteQuery.pX6vzRzn.js";import he from"./triangle-alert.xmeuo4tN.js";import zt from"./history.C6u3PMc4.js";import Es from"./chevron-down.DKyrDQzJ.js";import ns from"./sparkles.BH7Rd6-h.js";import ve from"./trash-2.4vZUcGHD.js";import ma from"./tag.C7xKpafm.js";import Qt from"./user-plus.XsW1jNN0.js";import{R as Gt,P as da}from"./refresh-cw.BG8F3hw7.js";import Ms from"./pencil.Dcl8K1CZ.js";import{u as ua}from"./useResolvedFileUrl.zVUUy0Dv.js";import{b as xa}from"./file.DcyOn_VS.js";import ks from"./arrow-left.D5KqoOJu.js";import pa from"./chevron-left.DxcWwdjA.js";import fa from"./chevron-right.SikmoHOE.js";import ha from"./panel-left-close.ol42UY36.js";import ga from"./panel-left-open.SwkxwS4v.js";import Rs from"./file-search.DGyL-vWr.js";import{D as Ts}from"./index.k2tBymHm.js";import tt from"./check.BBfPUTTN.js";import Wt from"./eye.CnJknAVy.js";import Ht from"./scale.CWWboY4C.js";import rt from"./rotate-cw.CvVpAKIW.js";import ja from"./mic.Rip-kVlj.js";import Pt from"./circle-check.CdGCrlAr.js";import Na from"./circle-alert.8SHYW-Ax.js";import ba from"./lightbulb.I6RlkZ2Q.js";import{S as ya,a as wa,d as va}from"./sheet.VgARdzp2.js";import{D as cs,a as ms,b as ds,c as us,d as As,e as Yt}from"./dialog.Cizir9nw.js";import{T as De}from"./textarea.DrDbS9a8.js";import Fa from"./save.CGsF9Ukq.js";import{C as Ds}from"./checkbox.Bj08_2w_.js";import{L as ne}from"./label.ibTFzqto.js";import Jt from"./users.CN-GSL-w.js";import ka from"./shield-check.DCZjGQ65.js";import Ca from"./minus.BUvuUjvj.js";import{I as Xs}from"./index.CouK6xa9.js";import{P as Pa,a as _a,b as Sa}from"./popover.BhxoNpxx.js";import{M as Zt}from"./MarkDownV2.BdwNwyQb.js";import Cs from"./search.BnWJSTdp.js";import Ps from"./library.BarxILka.js";import Ea from"./chevrons-up-down.CRbiwoLE.js";import _s from"./list-checks.CvuTCTMn.js";import Ma from"./file-text.CeksWkdw.js";import Ra from"./sliders-horizontal.BYDahe-y.js";import Ta from"./clipboard-list.DWbeVTDK.js";import Aa from"./ellipsis-vertical.ZMR--QY0.js";import Da from"./refresh-ccw.DdJvNrNL.js";import $a from"./chart-column.BrINr6Pq.js";import Va from"./settings-2.ha6-ISH_.js";import La from"./info.ClAPjgvC.js";const qa=async(s,t,r)=>R.post(`${s}/projects/${t}/cvs`,r),Oa=async(s,t,r)=>{await R.delete(`${s}/projects/${t}/cvs/${r}`)},Ia=async(s,t,r)=>{await R.delete(`${s}/projects/${t}/question-banks/${r}`)},Ba=async(s,t)=>{await R.delete(`${s}/projects/${t}`)},Ua=async(s,{sessionId:t,body:r})=>R.post(`${s}/export/excel/${t}`,r??{},{responseType:"blob"}),Ka=async(s,t,r)=>R.get(`${s}/projects/${t}/question-banks/${r}/export`,{responseType:"blob"}),at=async(s,t,r)=>R.get(`${s}/projects/${t}/cvs/${r}`),za=2e3,Qa=18e4,Ga=async(s,{projectId:t,cvId:r})=>{await R.post(`${s}/process/interview/${r}`,{});const a=Date.now();for(;;){const l=await at(s,t,r);if(l.interview_status==="error")throw new Error("Sinh ná»i dung phá»ng vấn thất bại, vui lòng thá» lại");if(l.interview_status==="completed")return l;if(Date.now()-a>Qa)throw new Error("Sinh ná»i dung phá»ng vấn quá thá»i gian chá»");await new Promise(n=>setTimeout(n,za))}},Wa=async(s,{sessionId:t,config:r})=>R.post(`${s}/projects/${t}/question-banks`,r),Ha=async(s,t={})=>R.get(`${s}/projects`,{params:t}),Ya=async s=>R.post(`${s}/template/generate`),Ja=async(s,t)=>R.post(`${s}/process/generate-template`,t),Za=async(s,t)=>R.get(`${s}/process/status/${t}`),Xa=(s,t)=>R.get(`${s}/projects/${t}`),en=async(s,t)=>R.get(`${s}/projects/${t}/stats`),Xt=async(s,t,r,a)=>R.get(`${s}/projects/${t}/question-banks/${r}`,{params:a?{type:a}:void 0}),er=async(s,t,r={})=>{const a={};return r.limit!=null&&(a.limit=r.limit),r.offset!=null&&(a.offset=r.offset),r.status&&(a.status=r.status),r.markedAs&&(a.marked_as=r.markedAs),r.search&&(a.search=r.search),r.s
1ortBy&&(a.sort_by=r.sortBy),r.sortOrder&&(a.sort_order=r.sortOrder),R.get(`${s}/projects/${t}/cvs`,{params:a})},_t=100;async function sn(s,t){const r=[];let a=0;for(;;){const l=await er(s,t,{limit:_t,offset:a});if(r.push(...l.items),a+=l.items.length,l.items.length<_t||a>=l.total)break}return r}const tn=async(s,{sessionId:t})=>{const[r,a]=await Promise.all([R.get(`${s}/projects/${t}`),sn(s,t)]);return{...r,cv_results:a}},rn=async(s,t)=>R.post(`${s}/projects/init`,t),an=async(s,t)=>R.post(`${s}/competencies`,t),nn=async(s,t)=>{await R.delete(`${s}/competencies/${t}`)},ln=async(s,t={})=>R.get(`${s}/competencies`,{params:t}),on=async(s,t,r)=>R.patch(`${s}/competencies/${t}`,r),cn=async(s,t)=>R.post(`${s}/competency-groups`,t),mn=async(s,t)=>{await R.delete(`${s}/competency-groups/${t}`)},dn=async(s,t={})=>R.get(`${s}/competency-groups`,{params:t}),un=async(s,t,r)=>R.patch(`${s}/competency-groups/${t}`,r),xn=async(s,t,r={})=>R.get(`${s}/projects/${t}/question-banks`,{params:r});function sr(s={}){const t={};return s.limit!=null&&(t.limit=s.limit),s.offset!=null&&(t.offset=s.offset),t}const pn=async(s,t,r)=>R.get(`${s}/projects/${t}/audit-logs`,{params:sr(r)}),fn=async(s,t,r,a)=>R.get(`${s}/projects/${t}/cvs/${r}/audit-logs`,{params:sr(a)}),hn=async(s,{cvId:t,mark:r,projectId:a})=>{await R.patch(`${s}/projects/${a}/cvs/${t}/mark`,{marked_as:r})},gn=2e3,jn=18e4,Nn=async(s,{projectId:t,cvId:r})=>{await R.post(`${s}/process/reevaluate/${r}`,{});const a=Date.now();for(;;){const l=await at(s,t,r);if(l.status!=="processing"&&l.status!=="pending")return l;if(Date.now()-a>jn)throw new Error("Äánh giá lại quá thá»i gian chá»");await new Promise(n=>setTimeout(n,gn))}},bn=async(s,t,r,a)=>R.patch(`${s}/projects/${t}/cvs/${r}/result`,a),yn=async(s,t)=>R.get(`${s}/projects/${t}/members`),wn=async(s,t,r)=>R.post(`${s}/projects/${t}/members`,r),vn=async(s,t,r)=>{await R.delete(`${s}/projects/${t}/members/${encodeURIComponent(r)}`)},Fn=async(s,{projectId:t})=>{await R.post(`${s}/process/reprocess-all/${t}`,{})},kn=async(s,{cvId:t})=>{await R.post(`${s}/process/reprocess/${t}`,{})},Cn=async(s,{sessionId:t})=>{await R.post(`${s}/process/pending/${t}`,{})},Pn=(s,t,r,a,l,n)=>{const i=Br(),d=`${Lt}${s}/process/stream/${t}${i?`?token=${encodeURIComponent(i)}`:""}`,m=new EventSource(d);return m.addEventListener("cv_result",p=>{try{r(JSON.parse(p.data))}catch{}}),m.addEventListener("progress",p=>{try{a(JSON.parse(p.data))}catch{}}),m.addEventListener("done",()=>{m.close(),l()}),m.addEventListener("error",p=>{n==null||n(p.data??"Stream error")}),m},_n=async(s,t,r)=>R.patch(`${s}/projects/${t}`,r),Sn=async(s,t,r)=>R.put(`${s}/schema/${t}`,{fields:r}),En=async(s,{file:t})=>{const r=new FormData;return r.append("file",t),R.post(`${s}/upload/template`,r,{headers:{"Content-Type":"multipart/form-data"}})},Mn=2500,Rn=3e5,Tn=async(s,t,r)=>{const a=Date.now();for(;;){const l=await Xt(s,t,r);if(l.status==="error")throw new Error("Sinh ngân hà ng câu há»i thất bại, vui lòng thá» lại");if(l.status==="completed")return l;if(Date.now()-a>Rn)throw new Error("Sinh ngân hà ng câu há»i quá thá»i gian chá»");await new Promise(n=>setTimeout(n,Mn))}},S="",D={uploadTemplate:s=>En(S,{file:s}),generateTemplate:s=>Ja(S,s),getDefaultSchema:()=>Ya(S),initSession:s=>rn(S,s),updateSession:(s,t)=>_n(S,s,t),updateSessionSchema:(s,t)=>Sn(S,s,t),getSession:s=>tn(S,{sessionId:s}),getProject:s=>Xa(S,s),getProjectStats:s=>en(S,s),getAllSessions:s=>Ha(S,s),getProcessingStatus:s=>Za(S,s),deleteSession:s=>Ba(S,s),addCVs:(s,t)=>qa(S,s,{cv_files:t}),listCVs:(s,t)=>er(S,s,t),getCV:(s,t)=>at(S,s,t),deleteCV:(s,t)=>Oa(S,s,t),startProcessing:s=>Cn(S,{sessionId:s}),reprocessCV:s=>kn(S,{cvId:s}),reprocessAllCVs:s=>Fn(S,{projectId:s}),markCV:(s,t,r)=>hn(S,{cvId:s,mark:t,projectId:r}),updateCVResult:(s,t,r)=>bn(S,s,t,r),reevaluateCV:(s,t)=>Nn(S,{projectId:s,cvId:t}),generateInterview:(s,t)=>Ga(S,{projectId:s,cvId:t}),listProjectAuditLogs:(s,t)=>pn(S,s,t),listCVAuditLogs:(s,t,r)=>fn(S,s,t,r),streamResults:(s,t,r,a,l)=>Pn(S,s,t,r,a,l),generateQuestionBank:(s,t)=>Wa(S,{sessionId:s,config:t}),listQuestionBanks:(s,t)=>xn(S,s,t),getQuestionBank:(s,t,r)=>Xt(S,s,t,r),waitForQuestionBank:(s,t)=>Tn(S,s,t),exportQuestionBankWord:(s,t)=>Ka(S,s,t),deleteQuestionBank:(s,t)=>Ia(S,s,t),exportExcel:(s,t)=>Ua(S,{sessionId:s,body:t}),listCompetencies:s=>ln(S,s),createCompetency:s=>an(S,s),updateCompetency:(s,t)=>on(S,s,t),deleteCompetency:s=>nn(S,s),listCompetencyGroups:s=>dn(S,s),createCompetencyGroup:s=>cn(S,s),updateCompetencyGroup:(s,t)=>un(S,s,t),deleteCompetencyGroup:s=>mn(S,s),getMembers:s=>yn(S,s),addMember:(s,t)=>wn(S,s,t),removeMember:(s,t)=>vn(S,s,t)},tr="parserAllSessions",An=24;function Ii(s="",t=!0){var l;const r=Ss({queryKey:q(tr,{search:s}
1),queryFn:({pageParam:n})=>D.getAllSessions({search:s||void 0,limit:An,offset:n}),initialPageParam:0,getNextPageParam:(n,i)=>{const d=i.reduce((m,p)=>m+p.items.length,0);return d<n.total?d:void 0},placeholderData:is,staleTime:3e4,refetchOnMount:"always",refetchInterval:6e4,enabled:t}),a=((l=r.data)==null?void 0:l.pages.flatMap(n=>n.items))??[];return{...r,items:a}}const U=()=>ia().t,rr="parserCompetencyGroups",Dn=50,nt=s=>s.invalidateQueries({predicate:t=>t.queryKey[1]===rr});function $n(s,t=!0){var n,i,d;const r=Ss({queryKey:q(rr,{search:s}),queryFn:({pageParam:m})=>D.listCompetencyGroups({search:s||void 0,limit:Dn,offset:m}),initialPageParam:0,getNextPageParam:(m,p)=>{const g=p.reduce((u,x)=>u+x.items.length,0);return g<m.total?g:void 0},placeholderData:is,refetchOnWindowFocus:!1,enabled:t}),a=((n=r.data)==null?void 0:n.pages.flatMap(m=>m.items))??[],l=((d=(i=r.data)==null?void 0:i.pages[0])==null?void 0:d.total)??0;return{...r,items:a,total:l}}function Bi(){const s=X();return W({mutationFn:t=>D.createCompetencyGroup(t),onSuccess:()=>nt(s)})}function Ui(){const s=X();return W({mutationFn:({id:t,data:r})=>D.updateCompetencyGroup(t,r),onSuccess:()=>nt(s)})}function Ki(){const s=X();return W({mutationFn:t=>D.deleteCompetencyGroup(t),onSuccess:()=>nt(s)})}const xs=Ur;function we({value:s,onChange:t,min:r,max:a,step:l=1,disabled:n,inputClassName:i,className:d,"aria-label":m}){const[p,g]=f.useState(()=>String(s));f.useEffect(()=>{Number(p)!==s&&g(String(s))},[s]);const u=j=>{let h=j;return r!=null&&(h=Math.max(r,h)),a!=null&&(h=Math.min(a,h)),h},x=j=>{const h=j.replace(/[^\d.]/g,"").replace(/^0+(?=\d)/,"");if(g(h),h===""||h===".")return;const b=Number(h);Number.isNaN(b)||t(u(b))},c=()=>{const j=Number(p),h=u(Number.isNaN(j)||p===""?r??0:j);t(h),g(String(h))},N=j=>{const h=u((Number(p)||0)+j);t(h),g(String(h))};return e.jsxs("span",{className:M("flex h-8 items-center rounded-md border bg-white w-fit",n&&"opacity-50",d),children:[e.jsx(w,{type:"button",variant:"ghost",size:"icon",disabled:n,className:"h-8 w-7 rounded-r-none text-muted-foreground hover:text-foreground",onClick:()=>N(-l),children:e.jsx(Ca,{className:"h-3.5 w-3.5"})}),e.jsx(le,{type:"text",inputMode:"decimal","aria-label":m,disabled:n,value:p,onChange:j=>x(j.target.value),onBlur:c,className:M("h-8 w-10 rounded-none border-0 bg-transparent px-0 text-center text-sm focus-visible:ring-0 focus-visible:ring-offset-0",i)}),e.jsx(w,{type:"button",variant:"ghost",size:"icon",disabled:n,className:"h-8 w-7 rounded-l-none text-muted-foreground hover:text-foreground",onClick:()=>N(l),children:e.jsx($e,{className:"h-3.5 w-3.5"})})]})}const ar="parserCompetencies",Vn=30,lt=s=>s.invalidateQueries({predicate:t=>t.queryKey[1]===ar});function nr(s,t=!0){var l;const r=Ss({queryKey:q(ar,{search:s}),queryFn:({pageParam:n})=>D.listCompetencies({search:s||void 0,limit:Vn,offset:n}),initialPageParam:0,getNextPageParam:(n,i)=>{const d=i.reduce((m,p)=>m+p.items.length,0);return d<n.total?d:void 0},placeholderData:is,refetchOnWindowFocus:!1,enabled:t}),a=((l=r.data)==null?void 0:l.pages.flatMap(n=>n.items))??[];return{...r,items:a}}function Ln(){const s=X();return W({mutationFn:t=>D.createCompetency(t),onSuccess:()=>lt(s)})}function qn(){const s=X();return W({mutationFn:({id:t,data:r})=>D.updateCompetency(t,r),onSuccess:()=>lt(s)})}function On(){const s=X();return W({mutationFn:t=>D.deleteCompetency(t),onSuccess:()=>lt(s)})}const In={id:null,code:"",name:"",description:""};function Bn({active:s,onChanged:t,className:r}){const a=U(),{toast:l}=xs(),[n,i]=f.useState(""),[d,m]=f.useState(null),[p,g]=f.useState(null),[u,x]=f.useState(new Set),c=y=>x(Y=>{const I=new Set(Y);return I.has(y)?I.delete(y):I.add(y),I}),N=Fs(n,300),j=y=>l({variant:"destructive",description:y}),h=y=>l({variant:"default",description:y,className:"bg-green-500 text-white"}),{items:b,isLoading:v,isError:E,hasNextPage:F,isFetchingNextPage:$,fetchNextPage:k}=nr(N,s),z=Ln(),L=qn(),ee=On(),re=z.isPending||L.isPending,oe=ee.isPending?ee.variables:null;f.useEffect(()=>{E&&j(a("form.parserForm.competencyManager.loadError"))},[E]),f.useEffect(()=>{s&&(m(null),i(""))},[s]);const ie=()=>{v||$||k()},ce=()=>m({...In}),O=y=>
1m({id:y.id,code:y.code,name:y.name,description:y.description||""}),ge=()=>m(null),se=()=>d?e.jsxs("div",{className:"space-y-3 rounded-xl border bg-card p-4 shadow-sm",children:[e.jsx("h3",{className:"text-sm font-semibold",children:d.id?a("form.parserForm.competencyManager.editTitle"):a("form.parserForm.competencyManager.addTitle")}),e.jsxs("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-3",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(ne,{className:"text-xs",children:[a("form.parserForm.competencyManager.code")," ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(le,{value:d.code,onChange:y=>m({...d,code:y.target.value}),placeholder:a("form.parserForm.competencyManager.codePlaceholder"),className:"h-9 text-sm"})]}),e.jsxs("div",{className:"space-y-1.5 sm:col-span-2",children:[e.jsxs(ne,{className:"text-xs",children:[a("form.parserForm.competencyManager.name")," ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(le,{value:d.name,onChange:y=>m({...d,name:y.target.value}),placeholder:a("form.parserForm.competencyManager.namePlaceholder"),className:"h-9 text-sm"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(ne,{className:"text-xs",children:a("form.parserForm.competencyManager.description")}),e.jsx(De,{value:d.description,onChange:y=>m({...d,description:y.target.value}),placeholder:a("form.parserForm.competencyManager.descriptionPlaceholder"),className:"min-h-64 resize-none text-sm"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(w,{type:"button",size:"sm",onClick:me,disabled:re,className:"text-white",children:[re?e.jsx(Z,{className:"mr-1.5 h-4 w-4 animate-spin"}):e.jsx(tt,{className:"mr-1.5 h-4 w-4"}),a("form.parserForm.competencyManager.save")]}),e.jsx(w,{type:"button",size:"sm",variant:"outline",onClick:ge,disabled:re,className:"",children:a("form.parserForm.competencyManager.cancel")})]})]}):null,me=async()=>{if(!d)return;const y=d.code.trim(),Y=d.name.trim();if(!y||!Y){j(a("form.parserForm.competencyManager.requiredError"));return}const I=d.description.trim();try{d.id?(await L.mutateAsync({id:d.id,data:{code:y,name:Y,description:I}}),h(a("form.parserForm.competencyManager.updated"))):(await z.mutateAsync({code:y,name:Y,description:I||void 0}),h(a("form.parserForm.competencyManager.added"))),m(null),t==null||t()}catch{j(a("form.parserForm.competencyManager.saveError"))}},ae=async()=>{if(!p)return;const y=p;g(null);try{await ee.mutateAsync(y.id),h(a("form.parserForm.competencyManager.deleted")),t==null||t()}catch{j(a("form.parserForm.competencyManager.deleteError"))}};return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:M("flex min-h-0 flex-1 flex-col",r),children:[e.jsxs("div",{className:"flex shrink-0 items-center gap-2 px-4 py-4 sm:px-6",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(Cs,{className:"absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(le,{value:n,onChange:y=>i(y.target.value),placeholder:a("form.parserForm.competencyManager.searchPlaceholder"),className:"h-9 pl-8 pr-8 text-sm"}),n&&e.jsx("button",{type:"button",onClick:()=>i(""),className:"absolute right-2.5 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",children:e.jsx(Se,{className:"h-4 w-4"})})]}),e.jsxs(w,{type:"button",onClick:ce,disabled:!!d,className:"shrink-0 text-white",children:[e.jsx($e,{className:"mr-1.5 h-4 w-4"}),a("form.parserForm.competencyManager.add")]})]}),e.jsxs("div",{className:"min-h-0 flex-1 space-y-4 overflow-y-auto px-4 py-2 sm:px-6 custom-scrollbar",children:[d&&!d.id&&se(),v?e.jsxs("div",{className:"flex items-center justify-center gap-2 py-16pb-5 text-sm text-muted-foreground",children:[e.jsx(Z,{className:"h-4 w-4 animate-spin text-primary"}),a("form.parserForm.competencyManager.loading")]}):b.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 py-16 text-center",children:[e.jsx("div",{className:"flex h-14 w-14 items-center justify-center rounded-2xl bg-primary/10 text-primary",children:e.jsx(Ps,{className:"h-7 w-7"})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:a(n?"form.parserForm.competencyManager.noMatch":"form.parserForm.competencyManager.empty")})]}):e.jsx(Xs,{isLoading:$,hasMore:F,onLoadMore:ie,children:e.jsx("div",{className:"space-y-2",children:b.map(y=>{if((d==null?void 0:d.id)===y.id)return e.jsx("div",{children:se()},y.id);const Y=!!y.description,I=u.has(y.id);return e.jsxs("div",{className:"flex justify-between items-center gap-3 rounded-xl border bg-card p-3.5",children:[e.jsxs("div",{className:M("min-w-0 flex-1",Y&&"cursor-pointer"),onClick:Y?()=>
1c(y.id):void 0,children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"rounded bg-primary/15 px-2 py-0.5 text-xs font-semibold text-primary",children:y.code}),e.jsx("span",{className:"text-sm font-semibold text-foreground",children:y.name}),Y&&e.jsx(Es,{className:M("h-4 w-4 text-muted-foreground transition-transform",I&&"rotate-180")})]}),Y&&I&&e.jsx("p",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:e.jsx(Zt,{content:y.description||""})})]}),e.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[e.jsx(w,{type:"button",variant:"ghost",size:"icon",className:"h-8 w-8 hover:text-foreground",onClick:()=>O(y),title:a("form.parserForm.competencyManager.edit"),children:e.jsx(Ms,{className:"h-4 w-4"})}),e.jsx(w,{type:"button",variant:"ghost",size:"icon",className:M("h-8 w-8 hover:text-destructive"),disabled:oe===y.id,onClick:()=>g(y),title:a("form.parserForm.competencyManager.delete"),children:oe===y.id?e.jsx(Z,{className:"h-4 w-4 animate-spin text-primary"}):e.jsx(ve,{className:"h-4 w-4"})})]})]},y.id)})})})]})]}),e.jsx(Qe,{open:p!==null,onOpenChange:y=>{y||g(null)},title:a("form.parserForm.competencyManager.deleteTitle"),description:a("form.parserForm.competencyManager.deleteConfirm",{code:(p==null?void 0:p.code)??"",name:(p==null?void 0:p.name)??""}),textAction:a("form.parserForm.competencyManager.delete"),onAction:ae,onCancel:()=>g(null)})]})}function Un({open:s,onOpenChange:t,onChanged:r}){const a=U();return e.jsx(cs,{open:s,onOpenChange:t,children:e.jsxs(ms,{className:"flex h-[90vh] max-w-3xl flex-col gap-0 p-0",children:[e.jsxs(ds,{className:"border-b px-4 pb-4 pt-6 sm:px-6",children:[e.jsxs(us,{className:"flex items-center gap-2",children:[e.jsx(Ps,{className:"h-5 w-5"}),a("form.parserForm.competencyManager.title")]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:a("form.parserForm.competencyManager.subtitle")})]}),e.jsx(Bn,{active:s,onChanged:r})]})})}function lr({value:s,onChange:t,seed:r,horizontal:a=!1,headerLeft:l}){const n=U(),[i,d]=f.useState(""),[m,p]=f.useState(!1),g=Fs(i,300),{items:u,isPending:x,isFetchingNextPage:c,hasNextPage:N,fetchNextPage:j}=nr(g),[h,b]=f.useState(!1),[v,E]=f.useState(""),[F,$]=f.useState(null),k=Fs(v,300),{items:z,isPending:L,isFetchingNextPage:ee,hasNextPage:re,fetchNextPage:oe}=$n(k),[ie,ce]=f.useState({});f.useEffect(()=>{u.length&&ce(_=>{let A=!1;const B={..._};for(const G of u)B[G.id]!==G&&(B[G.id]=G,A=!0);return A?B:_})},[u]),f.useEffect(()=>{r!=null&&r.length&&ce(_=>{let A=!1;const B={..._};for(const G of r)B[G.id]||(B[G.id]=G,A=!0);return A?B:_})},[r]);const O=f.useMemo(()=>{const _={};for(const A of s)_[A.competency_id]=A.weight;return _},[s]),ge=()=>{x||c||j()},se=_=>{$(null),_ in O?t(s.filter(A=>A.competency_id!==_)):t([...s,{competency_id:_,weight:1}])},me=(_,A)=>{$(null),t(s.map(B=>B.competency_id===_?{...B,weight:Math.max(.1,A||1)}:B))},ae=_=>{const A=z.find(B=>B.id===_);A&&(ce(B=>{const G={...B};for(const P of A.items)G[P.competency_id]||(G[P.competency_id]={id:P.competency_id,agent_id:A.agent_id,code:P.code??"",name:P.name??"",description:null,created_at:A.created_at,updated_at:A.updated_at});return G}),t(A.items.map(B=>({competency_id:B.competency_id,weight:B.weight}))),$({id:A.id,name:A.name}),b(!1),E(""))},y=f.useMemo(()=>s.map(_=>ie[_.competency_id]).filter(Boolean),[s,ie]),Y=f.useMemo(()=>Math.round(s.reduce((_,A)=>_+(A.weight||0),0)*100)/100,[s]),I=e.jsxs(w,{type:"button",variant:"outline",size:"sm",className:"h-7 shrink-0 gap-1.5 text-xs",onClick:()=>p(!0),children:[e.jsx(Ps,{className:"h-3.5 w-3.5"}),n("form.parserForm.competencyPicker.manage")]}),T=e.jsxs("div",{className:M("flex items-center gap-2",l?"justify-between":"justify-end"),children:[l,I]}),Q=z.length>0||k||v?e.jsxs(Pa,{open:h,onOpenChange:b,children:[e.jsx(_a,{asChild:!0,children:e.jsxs(w,{type:"button",variant:"outline",role:"combobox","aria-expanded":h,className:M("h-9 w-full justify-between px-3 text-sm font-normal hover:bg-transparent",F?"text-foreground":"text-muted-foreground"),children:[e.jsx("span",{className:"truncate",children:(F==null?void 0:F.name)??n("form.parserForm.competencyGroup.applyPlaceholder")}),e.jsx(Ea,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsxs(Sa,{align:"start",className:"w-[var(--radix-popover-trigger-width)] p-2",children:[e.jsxs("div",{className:"relative mb-2",children:[e.jsx(Cs,{className:"absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground"}
1),e.jsx(le,{value:v,onChange:_=>E(_.target.value),placeholder:n("form.parserForm.competencyGroup.searchPlaceholder"),className:"h-8 pl-8 pr-8 text-sm",autoFocus:!0}),v&&e.jsx("button",{type:"button",onClick:()=>E(""),className:"absolute right-2.5 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",children:e.jsx(Se,{className:"h-3.5 w-3.5"})})]}),e.jsx("div",{className:"max-h-56 overflow-y-auto custom-scrollbar",children:L?e.jsxs("p",{className:"flex items-center gap-1.5 px-2 py-2 text-xs text-muted-foreground",children:[e.jsx(Z,{className:"h-3.5 w-3.5 animate-spin text-primary"}),n("form.parserForm.competencyGroup.loading")]}):z.length===0?e.jsx("p",{className:"px-2 py-2 text-xs text-muted-foreground/70",children:n("form.parserForm.competencyGroup.noMatch")}):e.jsx(Xs,{isLoading:ee,hasMore:re,onLoadMore:()=>{!L&&!ee&&oe()},children:e.jsx("div",{className:"space-y-0.5",children:z.map(_=>e.jsxs("button",{type:"button",onClick:()=>ae(_.id),className:M("flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm transition-colors",(F==null?void 0:F.id)===_.id?"bg-primary/10":"hover:bg-muted"),children:[e.jsx("span",{className:"truncate text-foreground",children:_.name}),e.jsxs("span",{className:"shrink-0 text-xs text-muted-foreground",children:["·"," ",n("form.parserForm.competencyGroup.itemCount",{count:_.items.length})]})]},_.id))})})})]})]}):null,te=e.jsx(Un,{open:m,onOpenChange:p});if(x)return e.jsxs("div",{className:"space-y-2",children:[T,e.jsxs("div",{className:"flex items-center gap-2 rounded-lg border bg-muted/40 px-3 py-2.5 text-xs text-muted-foreground",children:[e.jsx(Z,{className:"h-3.5 w-3.5 animate-spin text-primary"}),n("form.parserForm.competencyPicker.loading")]}),te]});if(!g&&u.length===0)return e.jsxs("div",{className:"space-y-2",children:[T,e.jsxs("button",{type:"button",onClick:()=>p(!0),className:"flex w-full items-center gap-2 rounded-lg border border-dashed bg-muted/40 px-3 py-2.5 text-left text-xs text-muted-foreground transition-colors hover:border-primary/50 hover:text-foreground",children:[e.jsx(Ps,{className:"h-3.5 w-3.5 shrink-0"}),n("form.parserForm.competencyPicker.empty")]}),te]});const je=e.jsxs("div",{className:M("rounded-lg border bg-muted/40 p-2",a&&"flex h-full min-h-0 flex-col"),children:[e.jsxs("div",{className:"mb-1.5 flex items-center justify-between gap-2 px-1",children:[e.jsx("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:n("form.parserForm.competencyPicker.selected",{count:y.length})}),y.length>0&&e.jsx("span",{className:"rounded-full bg-primary/10 px-2 py-0.5 text-[11px] font-semibold text-primary",children:n("form.parserForm.competencyPicker.totalWeight",{total:Y})})]}),y.length===0?e.jsx("p",{className:"px-1 py-1 text-xs text-muted-foreground/70",children:n("form.parserForm.competencyPicker.noneSelected")}):e.jsx("div",{className:M("space-y-1.5 overflow-y-auto pr-1 custom-scrollbar",a?"min-h-0 flex-1":"max-h-[180px]"),children:y.map(_=>e.jsxs("div",{className:"flex items-center gap-2.5 rounded-md bg-primary/10 px-2 py-1.5",children:[e.jsxs("span",{className:"flex min-w-0 flex-1 items-center gap-2 truncate",children:[e.jsx("span",{className:"rounded bg-primary/15 px-1.5 py-0.5 text-[10px] font-semibold text-primary",children:_.code}),e.jsx("span",{className:"truncate text-sm text-foreground",children:_.name})]}),e.jsxs("span",{className:"flex shrink-0 items-center gap-1.5",children:[e.jsx("span",{className:"text-[11px] text-muted-foreground",children:n("form.parserForm.competencyPicker.weight")}),e.jsx(we,{value:O[_.id],onChange:A=>me(_.id,A),min:1,"aria-label":n("form.parserForm.competencyPicker.weight")}),e.jsx(w,{type:"button",variant:"ghost",size:"icon",className:"h-7 w-7 hover:text-destructive",onClick:()=>se(_.id),title:n("form.parserForm.competencyPicker.remove"),children:e.jsx(Se,{className:"h-3.5 w-3.5"})})]})]},_.id))})]}),ue=e.jsxs("div",{className:"relative",children:[e.jsx(Cs,{className:"absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground"}),e.jsx(le,{value:i,onChange:_=>d(_.target.value),placeholder:n("form.parserForm.competencyPicker.searchPlaceholder"),className:"h-9 pl-8 pr-8 text-sm"}),i&&e.jsx("button",{type:"button",onClick:()=>d(""),className:"absolute right-2.5 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",children:e.jsx(Se,{className:"h-3.5 w-3.5"})})]}),Fe=e.jsx("div",{className:M("overflow-y-auto rounded-lg border bg-muted/40 p-2 custom-scrollbar",a?"min-h-0 flex-1":"h-[280px]"),children:u.length===0?e.jsx("p",{className:"px-1 py-2 text-xs text-muted-foreground
1/70",children:n("form.parserForm.competencyPicker.noMatch")}):e.jsx(Xs,{isLoading:c,hasMore:N,onLoadMore:ge,children:e.jsx("div",{className:"space-y-1",children:u.map(_=>{const A=_.id in O;return e.jsxs("label",{className:M("flex cursor-pointer items-center gap-2.5 rounded-md px-2 py-1.5 transition-colors",A?"bg-primary/10":"hover:bg-muted"),children:[e.jsx(Ds,{checked:A,onCheckedChange:()=>se(_.id),className:"shrink-0"}),e.jsxs("span",{className:"flex min-w-0 items-center gap-2 truncate",children:[e.jsx("span",{className:"rounded bg-primary/15 px-1.5 py-0.5 text-[10px] font-semibold text-primary",children:_.code}),e.jsx("span",{className:"truncate text-sm text-foreground",children:_.name})]})]},_.id)})})})});return e.jsxs("div",{className:"space-y-2",children:[T,Q,a?e.jsxs("div",{className:"grid h-[380px] grid-cols-2 gap-3",children:[je,e.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-2",children:[ue,Fe]})]}):e.jsxs(e.Fragment,{children:[je,ue,Fe]}),te]})}const _e=({className:s})=>e.jsx(Z,{className:M("animate-spin",s)});function $s(s){return/(?:Z|[+-]\d{2}:?\d{2})$/i.test(s)?s:`${s}Z`}function Kn(s){return s==null?"text-muted-foreground":s>=7?"text-green-600 font-semibold":s>=4?"text-yellow-600 font-semibold":"text-red-600 font-semibold"}function or({status:s}){const t=U(),r={pending:{label:t("form.parserForm.resultPage.statusBadge.pending"),className:"bg-gray-100 text-gray-500"},processing:{label:t("form.parserForm.resultPage.statusBadge.processing"),className:"bg-blue-50 text-blue-500"},completed:{label:t("form.parserForm.resultPage.statusBadge.completed"),className:"bg-green-50 text-green-600"},error:{label:t("form.parserForm.resultPage.statusBadge.error"),className:"bg-red-50 text-red-500"}},{label:a,className:l}=r[s];return e.jsxs("span",{className:`inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${l}`,children:[s==="processing"&&e.jsx(_e,{className:"mr-1 h-3 w-3"}),a]})}const ir="field_confidences",cr=new Set(["match_score","recommendation","criteria_evaluation",ir,"field_confidence_reasons"]),Ke="review_fields",St=.9,zn="!bg-amber-100/80 dark:!bg-amber-900/30";function Qn(s){var r;const t=s.field_confidences??((r=s.result_json)==null?void 0:r[ir]);return t&&typeof t=="object"?t:null}function mr(s){return(typeof s=="string"?s.replace(/\s+/g," ").trim():"")||void 0}function Gn(s){if(typeof s=="number")return{confidence:s,needs_review:s<St};if(s&&typeof s=="object"){const{confidence:t,needs_review:r,reason:a}=s;return typeof t!="number"?null:{confidence:t,needs_review:r??t<St,reason:mr(a)}}return null}function ls(s,t){var r;return Gn((r=Qn(s))==null?void 0:r[t])}function Wn(s,t=r=>r){return(s.criteria_evaluation??[]).flatMap((r,a)=>r.needs_review?[{name:`criterion:${a}:${r.name}`,label:t(r.name),kind:"criterion",reason:mr(r.confidence_reason)}]:[])}function ot(s,t,r={},a){return[...t.flatMap(n=>{const i=ls(s,n);return i!=null&&i.needs_review?[{name:n,label:r[n]??n,kind:"field",confidence:i,reason:i.reason??void 0}]:[]}),...Wn(s,a)]}function dr(s){return s.reason?`${s.label} â ${s.reason}`:s.label}function Hn(s,t,r={},a){return ot(s,t,r,a).map(dr)}function os({className:s}){return e.jsx("span",{className:M("shrink-0 text-amber-600 dark:text-amber-400",s),children:e.jsx(he,{className:"h-3.5 w-3.5"})})}const Ee=50,Yn=600,it=[".pdf",".docx",".txt"],ur=[...it,".xlsx"],Jn=1,Zn=20,Xn=8,Hs=10;function el({value:s,onChange:t}){const r=U(),a=s.reduce((u,x)=>u+(Number(x.max_score)||0),0),l=s.length===0||Math.abs(a-Hs)<.01,n=s.some(u=>!u.name.trim()),i=s.some(u=>(Number(u.max_score)||0)<=0),d=s.some(u=>u.required),m=(u,x)=>{t(s.map((c,N)=>N===u?{...c,...x}:c))},p=()=>{t([...s,{name:"",description:"",max_score:0,required:!1,scoring_guide:""}])},g=u=>{t(s.filter((x,c)=>c!==u))};return e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:r("form.parserForm.criteria.info")}),s.length>0&&e.jsx("span",{className:`shrink-0 text-xs font-semibold ${l?"text-green-600":"text-red-600"}`,children:r("form.parserForm.criteria.total",{total:a,max:Hs})})]}),s.map((u,x)=>{const c=!u.name.trim(),N=(Number(u.max_score)||0)<=0;return e.jsxs("div",{className:"flex flex-col gap-2 rounded-lg border bg-card p-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(le,{value:u.name,onChange:j=>m(x,{name:j.target.value}),placeholder:r("form.parserForm.criteria.namePlaceholder"),className:`h-8 flex-1 text-sm ${c?"border-destructive":""}`}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(we,{value:u.max_score,onChange:j=>m(x,{max_score:j}),min:0,step:.5,"aria-label":r("form.parserForm.criteria.point"),className:N?"border-destructive":""}),e.jsx("span",{className:"text-xs text-muted-foreground",children:r("form.parserForm.criteria.point")})]}),e.jsx(w,{type:"button",variant:"ghost",size:"icon",className:"h-8 w-8 text-muted-foreground hover:text-destructive",onClick:()=>g(x),children:e.jsx(ve,{className:"h-3.5 w-3.5"})})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(le,{value:u.description,onChange:j=>m(x,{description:j.target.value}),placeholder:r("form.parserForm.criteria.descPlaceholder"),className:"h-8 flex-1 text-sm"}),e.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[e.jsx(Ds,{id:`criterion-required-${x}`,checked:u.required,onCheckedChange:j=>m(x,{required:j===!0})}),e.jsx(ne,{htmlFor:`criterion-required-${x}`,className:"cursor-pointer select-none text-xs",children:r("form.parserForm.criteria.required")})]})]}),e.jsx(De,{value:u.scoring_guide??"",onChange:j=>m(x,{scoring_guide:j.target.value}),placeholder:r("form.parserForm.criteria.scoringGuidePlaceholder"),rows:3,className:"max-h-[20rem] min-h-16 resize-y overflow-y-auto text-sm"})]},x)}),e.jsxs(w,{type:"button",variant:"outline",size:"sm",onClick:p,className:"self-start",children:[e.jsx($e,{className:"mr-1.5 h-3.5 w-3.5"}),r("form.parserForm.criteria.add")]}),s.length>0&&!l&&e.jsxs("p",{className:"flex items-center gap-1.5 text-xs text-red-600",children:[e.jsx(he,{className:"h-3.5 w-3.5 shrink-0"}),r("form.parserForm.criteria.totalWarning",{total:a,max:Hs})]}),n&&e.jsxs("p",{className:"flex items-center gap-1.5 text-xs text-red-600",children:[e.jsx(he,{className:"h-3.5 w-3.5 shrink-0"}),r("form.parserForm.criteria.nameWarning")]}),i&&e.jsxs("p",{className:"flex items-center gap-1.5 text-xs text-red-600",children:[e.jsx(he,{className:"h-3.5 w-3.5 shrink-0"}),r("form.parserForm.criteria.scoreWarning")]}),d&&e.jsx("p",{className:"text-xs text-amber-600",children:r("form.parserForm.criteria.requiredNote")})]})}let sl=0;const Et=()=>`schema_field_${sl++}`,tl=s=>s.normalize("NFD").replace(/[Ì-ͯ]/g,"").replace(/[ÄÄ]/g,t=>t==="Ä"?"d":"D").replace(/\s+/g,"_");function rl({fields:s,onChange:t,onClear:r,disabled:a=!1}){const l=U(),[n,i]=f.useState(()=>s.map(h=>({...h,_id:Et()}))),d=f.useRef({}),m=f.useRef(t);m.current=t;const p=f.useRef(!0);f.useEffect(()=>{if(p.current){p.current=!1;return}m.current(n.filter(h=>h.name.trim()).map(h=>({name:h.name,type:h.type,required:h.required,alias:h.alias,description:h.description})))},[n]);const g=h=>{i(b=>h(b.map(v=>({...v,...d.current[v._id]}))))},u=(h,b,v)=>{d.current[h]={...d.current[h],[b]:v}},x=()=>g(h=>h),c=(h,b)=>g(v=>v.map(E=>
1E._id===h?{...E,...b}:E)),N=()=>g(h=>[...h,{_id:Et(),name:"",type:"string",required:!1,alias:"",description:""}]),j=h=>{delete d.current[h],g(b=>b.filter(v=>v._id!==h))};return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex justify-end gap-2",children:[r?e.jsxs(w,{type:"button",size:"sm",variant:"ghost",className:"gap-1.5 text-muted-foreground hover:text-destructive",onClick:r,disabled:a,children:[e.jsx(ve,{className:"h-4 w-4"}),l("form.parserForm.schemaDialog.clearAll")]}):null,e.jsxs(w,{type:"button",size:"sm",variant:"outline",className:"gap-1.5",onClick:N,disabled:a,children:[e.jsx($e,{className:"h-4 w-4"}),l("form.parserForm.schemaDialog.addField")]})]}),e.jsx("div",{className:M("overflow-x-auto rounded-md border custom-scrollbar transition-opacity",a&&"pointer-events-none opacity-60"),children:e.jsxs(sa,{children:[e.jsx(ta,{className:"[&_th]:bg-muted",children:e.jsxs(Gs,{children:[e.jsx(ts,{className:"min-w-[150px]",children:l("form.parserForm.schemaDialog.fieldName")}),e.jsx(ts,{className:"min-w-[130px]",children:l("form.parserForm.schemaDialog.alias")}),e.jsx(ts,{className:"w-[120px]",children:l("form.parserForm.schemaDialog.dataType")}),e.jsx(ts,{className:"w-[80px] text-center",children:l("form.parserForm.schemaDialog.required")}),e.jsx(ts,{className:"w-0 text-center",children:l("form.parserForm.schemaDialog.deleteField")})]})}),e.jsx(ra,{children:n.map(h=>e.jsxs(f.Fragment,{children:[e.jsxs(Gs,{className:"border-b-0 hover:bg-transparent",children:[e.jsx(Ue,{className:"align-middle",children:e.jsx(le,{defaultValue:h.name,placeholder:l("form.parserForm.schemaDialog.newFieldName"),onChange:b=>{const v=tl(b.target.value);b.target.value=v,u(h._id,"name",v)},onBlur:x,disabled:a,className:"h-8 font-mono text-sm"})}),e.jsx(Ue,{className:"align-middle",children:e.jsx(le,{defaultValue:h.alias,placeholder:h.name,onChange:b=>u(h._id,"alias",b.target.value),onBlur:x,disabled:a,className:"h-8 text-sm"})}),e.jsx(Ue,{className:"align-middle",children:e.jsxs(Me,{value:h.type,onValueChange:b=>c(h._id,{type:b}),disabled:a,children:[e.jsx(Re,{className:"h-8 text-sm",children:e.jsx(Te,{})}),e.jsxs(Ae,{children:[e.jsx(H,{value:"string",children:"string"}),e.jsx(H,{value:"number",children:"number"}),e.jsx(H,{value:"list",children:"list"}),e.jsx(H,{value:"boolean",children:"boolean"})]})]})}),e.jsx(Ue,{className:"text-center align-middle",children:e.jsx("div",{className:"flex items-center justify-center",children:e.jsx(Ds,{checked:h.required,onCheckedChange:b=>c(h._id,{required:b===!0}),disabled:a})})}),e.jsx(Ue,{className:"text-center align-middle",children:e.jsx(w,{type:"button",variant:"ghost",size:"icon",className:"h-8 w-8 text-muted-foreground hover:text-destructive",onClick:()=>j(h._id),disabled:a,title:l("form.parserForm.schemaDialog.deleteField"),children:e.jsx(ve,{className:"h-4 w-4"})})})]}),e.jsx(Gs,{className:"hover:bg-transparent",children:e.jsxs(Ue,{colSpan:5,className:"pt-0",children:[e.jsx("label",{className:"mb-1 block text-xs font-medium text-muted-foreground",children:l("form.parserForm.schemaDialog.fieldDescription")}),e.jsx(De,{defaultValue:h.description,placeholder:l("form.parserForm.schemaDialog.fieldDescription"),onChange:b=>u(h._id,"description",b.target.value),onBlur:x,disabled:a,className:"min-h-20 resize-none text-sm"})]})})]},h._id))})]})})]})}function al(s,t,r){const a=r*2+5;if(t<=a)return Array.from({length:t},(u,x)=>x+1);const l=Math.max(s-r,1),n=Math.min(s+r,t),i=l>2,d=n<t-1,m=[1];i&&m.push("ellipsis");const p=i?l:2,g=d?n:t-1;for(let u=p;u<=g;u++)m.push(u);return d&&m.push("ellipsis"),m.push(t),m}function xr({page:s,total:t,pageSize:r,onPageChange:a,siblingCount:l=1,className:n}){const i=Math.max(1,Math.ceil(t/r));if(i<=1)return null;const d=al(s,i,l),m=p=>a(Math.min(Math.max(p,1),i));return e.jsx(Hr,{className:M("justify-end",n),children:e.jsxs(Yr,{children:[e.jsx(ws,{children:e.jsx(Jr,{onClick:()=>m(s-1),"aria-disabled":s<=1,className:M(s<=1&&"pointer-events-none opacity-40")})}),d.map((p,g)=>p==="ellipsis"?e.jsx(ws,{children:e.jsx(Zr,{})},`e-${g}`):e.jsx(ws,{children:e.jsx(Xr,{isActive:p===s,onClick:()=>m(p),children:p})},p)),e.jsx(ws,{children:e.jsx(ea,{onClick:()=>m(s+1),"aria-disabled":s>=i,className:M(s>=i&&"pointer-events-none opacity-40")})})]})})}function nl({className:s,iconClassName:t}){return e.jsx("div",{className:M("flex h-full items-center justify-center",s
1),children:e.jsx(Z,{className:M("h-16 w-16 animate-spin text-primary",t)})})}const pr="parserCVDetail";function ll(s,t,r=!0){return Ge({queryKey:q(pr,{projectId:s,cvId:t}),queryFn:()=>D.getCV(s,t),enabled:!!s&&!!t&&r,refetchOnWindowFocus:!1})}function ol(s){const t=X();return f.useCallback((r,a)=>{t.setQueryData(q(pr,{projectId:s,cvId:r}),l=>l&&{...l,...a})},[t,s])}const ct="parserCVList",il={total:0,completed:0,processing:0,pending:0,error:0};function cl(s,t){const{page:r,pageSize:a,status:l,markedAs:n,search:i,sortBy:d,sortOrder:m}=t,p=X(),g=f.useMemo(()=>q(ct,{projectId:s,page:r,pageSize:a,status:l,markedAs:n,search:i||void 0,sortBy:d,sortOrder:m}),[s,r,a,l,n,i,d,m]),{data:u,isLoading:x,isFetching:c,error:N,refetch:j}=Ge({queryKey:g,queryFn:()=>D.listCVs(s||"",{limit:a,offset:(r-1)*a,status:l,markedAs:n,search:i||void 0,sortBy:d,sortOrder:m}),enabled:!!s,placeholderData:is}),h=f.useCallback((v,E)=>{p.setQueryData(g,F=>F&&{...F,items:F.items.map($=>$.id===v?{...$,...E}:$)})},[p,g]),b=f.useCallback(v=>{p.setQueryData(g,E=>E&&{...E,items:E.items.filter(F=>F.id!==v),total:Math.max(0,E.total-1)})},[p,g]);return{items:(u==null?void 0:u.items)??[],total:(u==null?void 0:u.total)??0,counts:(u==null?void 0:u.counts)??il,isLoading:x,isFetching:c,error:N?N instanceof Error?N.message:"Không thá» tải danh sách CV":null,refetch:j,updateItem:h,removeItem:b}}const Vs="parserSession";function ml(s){const t=X();return W({mutationKey:q("parserDeleteCV",{sessionId:s}),mutationFn:r=>D.deleteCV(s||"",r),onSuccess:(r,a)=>{t.setQueryData(q(Vs,{sessionId:s}),l=>l&&{...l,cv_results:l.cv_results.filter(n=>n.id!==a)})}})}function dl(s){return s.replace(/[\\/:*?"<>|]+/g,"_").trim()}function ul(s,t){return W({mutationKey:q("parserExportExcel",{sessionId:s}),mutationFn:r=>D.exportExcel(s,r),onSuccess:r=>{const a=new Date().toISOString().slice(0,19).replace(/[:T]/g,"-"),l=dl(t||"KamiRecruit"),n=URL.createObjectURL(r),i=document.createElement("a");i.href=n,i.download=`KamiRecruit_${l}_${a}.xlsx`,i.click(),URL.revokeObjectURL(n)}})}function xl(s){return W({mutationKey:q("parserGenerateInterview",{sessionId:s}),mutationFn:t=>D.generateInterview(s,t)})}function pl(s){const t=X();return W({mutationKey:q("parserMarkCV",{sessionId:s}),mutationFn:({cvId:r,mark:a,projectId:l})=>D.markCV(r,a,l),onSuccess:(r,{cvId:a,mark:l})=>{t.setQueryData(q(Vs,{sessionId:s}),n=>n&&{...n,cv_results:n.cv_results.map(i=>i.id===a?{...i,marked_as:l}:i)})}})}const fr="parserProjectStats";function fl(s){const{data:t,isLoading:r,error:a,refetch:l}=Ge({queryKey:q(fr,{projectId:s}),queryFn:()=>D.getProjectStats(s||""),enabled:!!s});return{stats:t??null,isLoading:r,error:a?a instanceof Error?a.message:"Lá»i tải thá»ng kê":null,refetch:l}}function hl(s){return W({mutationKey:q("parserReevaluateCV",{sessionId:s}),mutationFn:t=>D.reevaluateCV(s,t)})}function gl(s){const t=X();return W({mutationKey:q("parserReprocessAllCVs",{projectId:s}),mutationFn:()=>D.reprocessAllCVs(s||""),onSuccess:()=>{t.invalidateQueries({predicate:r=>r.queryKey[1]===ct||r.queryKey[1]===fr})}})}function jl(s){const t=X();return W({mutationKey:q("parserReprocessCV",{sessionId:s}),mutationFn:r=>D.reprocessCV(r),onSuccess:(r,a)=>{t.setQueryData(q(Vs,{sessionId:s}),l=>l&&{...l,cv_results:l.cv_results.map(n=>n.id===a?{...n,status:"processing",result_json:null,error_message:null,match_score:null}:n)})}})}function Nl(s){const[t,r]=f.useState({session:null,isLoading:!!s,isStreaming:!1,error:null}),[a,l]=f.useState(0),n=f.useCallback(()=>l(x=>x+1),[]),i=f.useRef(null),d=f.useCallback((x,c,N)=>{r(j=>j.session?{...j,session:{...j.session,processed_cvs:x,total_cvs:c,status:N}}:j)},[]),m=f.useCallback(x=>{var c;(c=i.current)==null||c.close(),r(N=>({...N,isStreaming:!0})),i.current=D.streamResults(x,()=>n(),N=>{d(N.processed,N.total,N.status),n()},()=>{D.getProject(x).then(N=>r(j=>({...j,session:N,isStreaming:!1}))).catch(()=>r(N=>({...N,isStreaming:!1}))),n(),i.current=null},N=>{r(j=>({...j,isStreaming:!1,error:N})),i.current=null})},[n,d]);f.useEffect(()=>{if(!s)return;let x=!1;return r({session:null,isLoading:!0,isStreaming:!1,error:null}),D.getProject(s).then(c=>{x||(r({session:c,isLoading:!1,isStreaming:!1,error:null}),(c.status==="processing"||c.status==="pending")&&m(s))}).catch(c=>{x||r({session:null,isLoading:!1,isStreaming:!1,error:c instanceof Error?c.message:"Không thá» tải phiên"})}),()=>{x=!0}},[s,m]),f.useEffect(()=>()=>{var x;(x=i.current)==null||x.close()},[]);const p=f.useCallback(()=>{s&&m(s)},[s,m]),g=f.useCallback(async()=>
1{if(s)try{const x=await D.getProject(s);r(c=>({...c,session:x,error:null})),n(),(x.status==="processing"||x.status==="pending")&&m(s)}catch(x){console.error("Refetch session error:",x)}},[s,m,n]),u=f.useCallback(x=>{r(c=>c.session?{...c,session:{...c.session,...x}}:c)},[]);return{...t,tick:a,restartStream:p,refetch:g,patchSession:u}}function bl(s){return W({mutationKey:q("parserUpdateCVResult",{sessionId:s}),mutationFn:({cvId:t,body:r})=>D.updateCVResult(s,t,r)})}function yl(s){const t=X();return W({mutationKey:q("parserAddCVs",{projectId:s}),mutationFn:r=>D.addCVs(s,r),onSuccess:()=>{t.invalidateQueries({predicate:r=>{var a;return r.queryKey[1]===ct&&((a=r.queryKey[0])==null?void 0:a.projectId)===s}})}})}const Ys=30*1024*1024;function Mt(s){return s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(0)} KB`:`${(s/1024/1024).toFixed(1)} MB`}function wl({sessionId:s,onAdded:t}){const r=U(),{toast:a}=xs(),{uploadSingleFile:l}=st(),{mutateAsync:n}=yl(s),[i,d]=f.useState([]),[m,p]=f.useState(!1),g=c=>{c.filter(b=>b.size>Ys).length>0&&a({variant:"destructive",title:r("error.fileTooLarge"),description:r("error.maxFileSize",{size:Mt(Ys)})});const h=c.filter(b=>b.size<=Ys).map(b=>({file:b,id:`${b.name}-${b.size}-${b.lastModified}`}));d(b=>{const v=new Set(b.map(E=>E.id));return[...b,...h.filter(E=>!v.has(E.id))]})},u=c=>d(N=>N.filter(j=>j.id!==c)),x=async()=>{if(!(!s||i.length===0)){p(!0);try{const c=await Promise.all(i.map(async N=>({file_url:(await l({file:N.file,contentType:N.file.type})).makeUploadPublic.publicUrl,file_name:N.file.name,mimetype:N.file.type||null})));await n(c),t(),d([])}catch(c){console.error("Add CV error:",c),a({variant:"destructive",description:r("form.parserForm.uploadFailed")})}finally{p(!1)}}};return e.jsxs("div",{className:"flex h-full w-full flex-col gap-4",children:[e.jsx(ca,{accept:it.join(","),multiple:!0,maxFiles:1/0,currentFileAmount:i.length,title:r("form.parserForm.resultPage.addCV"),description:r("form.parserForm.cvFilesSupport"),onDrop:g,disabled:m,className:"min-h-32 shrink-0 border-dashed border-border bg-transparent text-muted-foreground hover:border-primary/50 hover:opacity-100"}),i.length>0&&e.jsx("ul",{className:"flex flex-1 custom-scrollbar shrink-0 flex-col gap-1 overflow-y-auto",children:i.map(c=>e.jsxs("li",{className:"flex items-center gap-2 rounded-md border bg-card px-3 py-2",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("p",{className:"truncate text-sm font-medium",title:c.file.name,children:c.file.name}),e.jsx("p",{className:"text-xs text-muted-foreground",children:Mt(c.file.size)})]}),e.jsx(w,{type:"button",variant:"ghost",size:"icon",className:"h-6 w-6 shrink-0 hover:text-destructive",disabled:m,onClick:()=>u(c.id),children:e.jsx(Se,{className:"h-3.5 w-3.5"})})]},c.id))}),e.jsx("div",{className:"flex shrink-0 justify-end",children:e.jsxs(w,{onClick:x,disabled:i.length===0||m,className:"text-white",children:[m?e.jsx(Z,{className:"mr-1.5 h-4 w-4 animate-spin"}):e.jsx($e,{className:"mr-1.5 h-4 w-4"}),r("form.parserForm.resultPage.addCVConfirm",{count:i.length})]})})]})}const vl="parserAuditLogs",Rt=20;function Fl(s,t,r=!0){var i,d,m;const a=Ss({queryKey:q(vl,{projectId:s,cvId:t}),queryFn:({pageParam:p})=>t?D.listCVAuditLogs(s,t,{limit:Rt,offset:p}):D.listProjectAuditLogs(s,{limit:Rt,offset:p}),initialPageParam:0,getNextPageParam:(p,g)=>{const u=g.reduce((x,c)=>x+c.items.length,0);return u<p.total?u:void 0},refetchOnWindowFocus:!1,enabled:r}),l=((i=a.data)==null?void 0:i.pages.flatMap(p=>p.items))??[],n=((m=(d=a.data)==null?void 0:d.pages[0])==null?void 0:m.total)??0;return{...a,items:l,total:n}}function kl(s){return s.endsWith(".created")||s.endsWith(".added")?{Icon:ns,className:"bg-blue-50 text-green-600"}:s.endsWith(".deleted")||s.endsWith(".member_removed")?{Icon:ve,className:"bg-blue-50 text-red-500"}:s.endsWith(".marked")?{Icon:ma,className:"bg-blue-50 text-amber-600"}:s.endsWith(".member_added")?{Icon:Qt,className:"bg-blue-50 text-green-600"}:s.endsWith(".reprocessed")||s.endsWith(".reevaluated")||s.endsWith(".reprocessed_all")?{Icon:Gt,className:"bg-blue-50 text-indigo-600"}:s.endsWith(".interview_generated")?{Icon:ns,className:"bg-blue-50 text-purple-600"}:s.endsWith(".process_pending")?{Icon:da,className:"bg-blue-50 text-blue-600"}:{Icon:Ms,className:"bg-blue-50 text-blue-600"}}function Cl(s){const t=et($s(s));return t.isValid()?t.format("DD/MM/YYYY HH:mm"):""}function hr({projectId:s,cvId:t}){const r=U(),{items:a,isPending:l,isFetchingNextPage:n,hasNextPage:i,fetchNextPage:d}=Fl(s,t);return l?e.jsxs("div",{className:"flex items-center justify-center gap-2 py-12 text-sm text-muted-foreground",children:[e.jsx(Z,{className:"h-4 w-4 animate-spin text-primary"}),r("form.parserForm.resultPage.auditLoading")]}):a.length===0?e.jsxs("div",{className:"flex flex-col items-center gap-2 py-12 text-center",children:[e.jsx(zt,{className:"h-8 w-8 text-muted-foreground"}),e.jsx("p",{className:"max-w-xs text-xs text-muted-foreground",children:r("form.parserForm.resultPage.auditEmpty")})]}):e.jsxs("div",{className:"space-y-2.5",children:[a.map(m=>{const{Icon:p,className:g}=kl(m.action),u=m.user_name||m.user_token||r("form.parserForm.resultPage.auditUnknownUser"),x=!!m.changes&&m.changes.length>0;return e.jsxs(Bt,{className:"rounded-lg border p-3",children:[e.jsxs("div",{className:"flex gap-2.5",children:[e.jsx("span",{className:`flex h-7 w-7 shrink-0 items-center justify-center rounded-full ${g}`,children:e.jsx(p,{className:"h-3.5 w-3.5"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("p",{className:"text-sm leading-snug",children:[e.jsx("span",{className:"font-semibold",children:u}
1)," ",e.jsx("span",{className:"text-foreground/90",children:m.message})]}),e.jsx("p",{className:"mt-1 text-[11px] text-muted-foreground/70",children:Cl(m.created_at)})]}),x&&e.jsx(Ut,{className:"group self-start rounded-md p-1 text-muted-foreground hover:bg-muted hover:text-foreground",title:r("form.parserForm.resultPage.auditChangesCount",{count:m.changes.length}),children:e.jsx(Es,{className:"h-4 w-4 transition-transform group-data-[state=open]:rotate-180"})})]}),x&&e.jsx(Kt,{children:e.jsx("ul",{className:"ml-[38px] mt-1.5 space-y-1 border-l-2 border-muted pl-2.5",children:m.changes.map((c,N)=>e.jsxs("li",{className:"text-xs text-muted-foreground",children:[e.jsxs("span",{className:"font-medium text-foreground/80",children:[c.label||c.field,":"]})," ",e.jsx("span",{className:"break-anywhere",children:c.old??"â"})," â ",e.jsx("span",{className:"break-anywhere text-foreground/90",children:c.new??"â"})]},N))})})]},m.id)}),i&&e.jsx("div",{className:"flex justify-center pt-1",children:e.jsxs(w,{variant:"outline",size:"sm",className:"",onClick:()=>d(),disabled:n,children:[n&&e.jsx(Z,{className:"mr-1.5 h-3.5 w-3.5 animate-spin text-primary"}),r("form.parserForm.resultPage.auditLoadMore")]})})]})}function Pl(s){return s==null?"bg-muted text-muted-foreground":s>=7?"border border-green-200 bg-green-50 text-green-600":s>=4?"border border-yellow-200 bg-yellow-50 text-yellow-600":"border border-red-200 bg-red-50 text-red-600"}function _l(s){if(!s)return"â";const t=et($s(s));return t.isValid()?t.format("DD-MM-YYYY HH:mm:ss"):"â"}const vs="w-full text-xs";function Sl(s){return s?/^https?:\/\//i.test(s)?s:`${Lt}/parser/upload/files/download?path=${encodeURIComponent(s)}`:null}const El=/(full[\s_-]*name|candidate[\s_-]*name|^name$|ứng[\s_-]*viên|há»[\s_-]*(và [\s_-]*)?tên|há»[\s_-]*tên|^tên$|^name)/i;function Ls(s){const t=s.result_json;if(!t)return null;for(const[r,a]of Object.entries(t)){if(r==="match_score"||r==="recommendation"||!El.test(r))continue;const l=Array.isArray(a)?a.join(", "):a!=null?String(a):"";if(l.trim())return l.trim()}return null}function Ml(s,t){const r=(s??"").toLowerCase(),a=(t??"").toLowerCase().split(".").pop()??"";return r==="application/pdf"||a==="pdf"?"pdf":r.startsWith("image/")||["png","jpg","jpeg","gif","webp","bmp","svg"].includes(a)?"image":r.startsWith("text/")||["txt","csv","md","log"].includes(a)?"text":r.includes("word")||r.includes("officedocument")||r.includes("ms-excel")||r.includes("ms-powerpoint")||r==="application/msword"||["doc","docx","xls","xlsx","ppt","pptx"].includes(a)?"office":"other"}function Rl({url:s,kind:t,fileName:r}){const a=U(),l=t==="office",{resolvedUrl:n,isResolving:i}=ua(s,l);return t==="image"?e.jsx("div",{className:"flex h-full w-full items-center justify-center overflow-auto custom-scrollbar p-4",children:e.jsx("img",{src:s,alt:r,className:"max-h-full max-w-full object-contain"})}):t==="pdf"||t==="text"?e.jsx("iframe",{src:s,className:"h-full w-full border-0",title:r},s):l?i?e.jsx("div",{className:"flex h-full w-full items-center justify-center",children:e.jsx(_e,{})}):e.jsx("iframe",{src:xa(n),className:"h-full w-full border-0",title:r},n):e.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-3 p-6 text-center text-muted-foreground",children:[e.jsx(Rs,{className:"h-8 w-8"}),e.jsx("p",{className:"text-sm",children:a("form.parserForm.resultPage.previewUnavailable")}),e.jsx(w,{asChild:!0,variant:"outline",size:"sm",className:"",children:e.jsxs("a",{href:s,target:"_blank",rel:"noreferrer",children:[e.jsx(Ts,{className:"mr-1.5 h-3.5 w-3.5"}),a("form.parserForm.resultPage.openFile")]})})]})}function Tl({cv:s,fieldLabel:t,onBack:r,onMark:a,onReprocess:l,isReprocessing:n,onGenerateInterview:i,isGeneratingInterview:d,canEdit:m,onEdit:p,onDelete:g,onReevaluate:u,onPrevCV:x,onNextCV:c,cvPosition:N,cvTotal:j,projectId:h}){const b=U(),v=Sl(s.file_path),E=Ml(s.mime_type,s.file_name),F=Ls(s),[$,k]=f.useState(!0);return e.jsxs("div",{className:"flex h-full flex-col bg-background",children:[e.jsxs("div",{className:"flex items-center gap-3 border-b bg-background/95 px-3 py-3 backdrop-blur sm:px-6",children:[e.jsx(w,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:r,children:e.jsx(ks,{className:"h-4 w-4"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h1",{className:"truncate text-base font-semibold leading-tight",title:F??void 0,children:F??b("form.parserForm.resultPage.sheetTitle")}),e.jsx("p",{className:"truncate text-xs text-muted-foreground",title:s.file_name,children:s.file_name})]}),e.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[e.jsx(w,{variant:"outline",size:"icon",className:"h-8 w-8 text-primary",title:b("form.parserForm.resultPage.prevCV"),disabled:!x,onClick:x,children:e.jsx(pa,{className:"h-4 w-4"})}),N!=null&&j?e.jsxs("span",{className:"min-w-[3.5rem] text-center text-xs tabular-nums text-muted-foreground",children:[N,"/",j]}):null,e.jsx(w,{variant:"outline",size:"icon",className:"h-8 w-8 text-primary",title:b("form.parserForm.resultPage.nextCV"),disabled:!c,onClick:c,children:e.jsx(fa,{className:"h-4 w-4"})})]}),v&&e.jsxs(w,{variant:"outline",size:"sm",className:"hidden shrink-0 text-xs lg:inline-flex",onClick:()=>k(z=>!z),children:[$?e.jsx(ha,{className:"h-3.5 w-3.5 sm:mr-1.5"}):e.jsx(ga,{className:"h-3.5 w-3.5 sm:mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:b($?"form.parserForm.resultPage.hidePreview":"form.parserForm.resultPage.showPreview")})]})]}),e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden lg:flex-row",children:[$&&e.jsx("div",{className:"h-64 min-h-0 w-full shrink-0 overflow-hidden border-b bg-muted/20 lg:h-auto lg:w-1/2 lg:border-b-0 lg:border-r",children:v?e.jsx(Rl,{url:v,kind:E,fileName:s.file_name}):e.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-2 p-6 text-center text-muted-foreground",children:[e.jsx(Rs,{className:"h-8 w-8"}),e.jsx("p",{className:"text-sm",children:b("form.parserForm.resultPage.previewUnavailable")})]})}),e.jsx("div",{className:M("flex min-h-0 w-full flex-1 flex-col overflow-hidden",$&&"lg:w-1/2"),children:e.jsx(gr,{cv:s,fieldLabel:t,onMark:a,onReprocess:l,isReprocessing:n,onGenerateInterview:i,isGeneratingInterview:d,canEdit:m,onEdit:p,onDelete:g,onReevaluate:u,projectId:h})})]})]})}function gr({cv:s,fieldLabel:t,onMark:r,onReprocess:a,isReprocessing:l,onGenerateInterview:n,isGeneratingInterview:i,canEdit:d,onViewDetail:m,onEdit:p,onDelete:g,onReevaluate:u,projectId:x}){var $;const c=U(),N=Ls(s),j=l||s.status==="processing",h=d&&!!u&&s.status==="completed",b=Object.entries(s.result_json??{}).filter(([k])=>!cr.has(k)),v=t[Ke]&&!b.some(([k])=>k===Ke)?[...b,[Ke,null]]:b,E=ot(s,v.map(([k])=>k),t,k=>c("form.parserForm.resultPage.confidence.criterionLabel",{name:k})),F=[{key:"shortlisted",Icon:tt,label:c("form.parserForm.resultPage.marks.shortlist"),activeClass:"border-green-500 bg-green-50 text-green-600"},{key:"reviewing",Icon:Wt,label:c("form.parserForm.resultPage.marks.reviewing"),activeClass:"border-yellow-500 bg-yellow-50 text-yellow-600"},{key:"rejected",Icon:Se,label:c("form.parserForm.resultPage.marks.rejected"),activeClass:"border-red-500 bg-red-50 text-red-600"}];return e.jsxs(Ot,{defaultValue:"info",className:"flex flex-1 flex-col overflow-hidden",children:[e.jsxs(It,{className:M("mx-3 mt-3 grid rounded-2xl sm:mx-6",x?"grid-cols-3":"grid-cols-2"),children:[e.jsx(Pe,{value:"info",className:"rounded-2xl",children:c("form.parserForm.resultPage.tabInfo")}),e.jsx(Pe,{value:"interview",className:"rounded-2xl",children:c("form.parserForm.resultPage.tabInterview")}),x&&e.jsx(Pe,{value:"history",className:"rounded-2xl",children:c("form.parserForm.resultPage.tabHistory")})]}),e.jsxs(Ws,{value:"info",className:"mt-0 flex-1 space-y-4 overflow-y-auto custom-scrollbar px-3 py-5 sm:px-5",children:[s.is_outdated&&e.jsxs("div",{className:"flex items-center gap-2 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-xs font-medium text-amber-700 dark:border-amber-900/50 dark:bg-amber-950/40 dark:text-amber-400",children:[e.jsx(he,{className:"h-4 w-4 shrink-0"}),e.jsx("span",{children:c("form.parserForm.resultPage.outdatedHint")})]}),E.length>0&&e.jsxs("div",{className:"rounded-lg border border-amber-200 bg-amber-50 px-3 py-2.5 dark:border-amber-900/50 dark:bg-amber-950/40",children:[e.jsxs("p",{className:"flex items-center gap-2 text-xs font-semibold text-amber-700 dark:text-amber-400",children:[e.jsx(he,{className:"h-4 w-4 shrink-0"}),c("form.parserForm.resultPage.confidence.reviewBannerTitle",{count:E.length})]}),e.jsx("p",{className:"mt-1 text-xs text-amber-700/80 dark:text-amber-400/80",children:c("form.parserForm.resultPage.confidence.reviewBannerDe
1sc")}),e.jsx("div",{className:"mt-2 flex flex-wrap gap-1.5",children:E.map(({name:k,label:z})=>e.jsx("span",{className:"inline-flex items-center gap-1.5 rounded-full border border-amber-300 bg-background px-2 py-0.5 text-xs font-medium text-amber-700 dark:border-amber-900 dark:text-amber-400",children:z},k))})]}),e.jsx("h2",{className:"truncate border-l-4 border-primary pl-3 text-2xl font-bold leading-tight tracking-tight",title:N??void 0,children:N??c("form.parserForm.resultPage.sheetTitle")}),e.jsxs("div",{className:"flex flex-col gap-3 rounded-xl border bg-card p-4",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:`flex h-16 w-16 shrink-0 flex-col items-center justify-center rounded-2xl ${Pl(s.match_score)}`,children:s.match_score!=null?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-xl font-bold leading-none",children:s.match_score}),e.jsx("span",{className:"text-[10px] opacity-70",children:"/10"})]}):e.jsx("span",{className:"text-lg",children:"â"})}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:c("form.parserForm.resultPage.scoreLabel")}),e.jsx(or,{status:s.status})]})]}),m&&e.jsxs(w,{variant:"outline",size:"sm",className:"w-full text-xs text-primary sm:w-auto",onClick:()=>m(s),children:[e.jsx(Rs,{className:"mr-1.5 h-3.5 w-3.5"}),c("form.parserForm.resultPage.viewDetail")]})]}),e.jsxs("p",{className:"border-t pt-3 text-xs text-muted-foreground",children:[c("form.parserForm.resultPage.colCreatedAt"),":"," ",_l(s.created_at)]}),d&&e.jsx("div",{className:"border-t pt-3",children:e.jsxs("div",{className:"mx-auto grid w-full max-w-md grid-cols-2 gap-2",children:[p&&s.status==="completed"&&e.jsxs(w,{variant:"outline",size:"sm",className:M(vs,"text-primary"),onClick:()=>p(s),children:[e.jsx(Ms,{className:"mr-1.5 h-3.5 w-3.5"}),c("form.parserForm.resultPage.editResult")]}),h&&e.jsxs(w,{variant:"outline",size:"sm",className:M(vs,"text-primary"),title:c("form.parserForm.resultPage.reevaluateHint"),onClick:()=>u==null?void 0:u(s),children:[e.jsx(Ht,{className:"mr-1.5 h-3.5 w-3.5"}),c("form.parserForm.resultPage.reevaluate")]}),e.jsxs(w,{variant:"outline",size:"sm",className:M(vs,"text-primary"),title:c("form.parserForm.resultPage.reprocessHint"),disabled:j,onClick:()=>a(s),children:[j?e.jsx(_e,{className:"mr-1.5 h-3.5 w-3.5"}):e.jsx(rt,{className:"mr-1.5 h-3.5 w-3.5"}),c("form.parserForm.resultPage.reprocess")]}),g&&e.jsxs(w,{variant:"outline",size:"sm",className:M(vs,"border-destructive/30 text-destructive hover:bg-destructive/10 hover:text-destructive"),onClick:()=>g(s),children:[e.jsx(ve,{className:"mr-1.5 h-3.5 w-3.5"}),c("form.parserForm.resultPage.deleteCV")]})]})})]}),s.status==="error"&&s.error_message&&e.jsxs("div",{className:"rounded-xl border border-destructive/30 bg-destructive/5 p-3",children:[e.jsx("p",{className:"mb-1 text-xs font-medium text-destructive",children:c("form.parserForm.resultPage.errorLabel")}),e.jsx("p",{className:"whitespace-pre-wrap text-xs text-muted-foreground",children:s.error_message})]}),s.status==="completed"&&s.error_message&&e.jsxs("div",{className:"flex items-start gap-2 rounded-xl border border-amber-200 bg-amber-50 p-3 text-xs text-amber-700 dark:border-amber-900/50 dark:bg-amber-950/40 dark:text-amber-400",children:[e.jsx(he,{className:"mt-0.5 h-4 w-4 shrink-0"}),e.jsxs("span",{children:[c("form.parserForm.resultPage.reevaluateFailed"),e.jsx("span",{className:"mt-0.5 block whitespace-pre-wrap text-amber-600/80 dark:text-amber-500/70",children:s.error_message})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:c("form.parserForm.resultPage.classifyLabel")}),e.jsx("div",{className:"grid grid-cols-3 gap-2",children:F.map(({key:k,Icon:z,label:L,activeClass:ee})=>{const re=s.marked_as===k;return e.jsxs("button",{type:"button",disabled:!d,onClick:()=>d&&r(s,re?null:k),className:M("flex flex-col items-center gap-1 rounded-lg border px-2 py-2 text-xs font-medium transition-colors",re?ee:"border-border text-muted-foreground hover:bg-muted/50",!d&&"cursor-not-allowed opacity-60 hover:bg-transparent"),children:[e.jsx(z,{className:"h-4 w-4"}),L]},k)})})]}),(($=s.result_json)==null?void 0:$.recommendation)!=null&&e.jsxs("div",{className:"rounded-xl border border-l-4 border-l-primary bg-primary/5 p-3",children:[e.jsxs("p",{className:"mb-1 flex items-center gap-1.5 text-xs font-semibold text-primary",children:[e.jsx(ns,{className:"h-3.5 w-3.5"}),c("form.parserForm.resultPage.recommendation")]}),e.jsx("p",{className:"whitespace-pre-wrap wrap-break-word text-sm",children:String(s.result_json.recommendation)})]}),e.jsx(Dl,{items:s.criteria_evaluation}),v.length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:c("form.parserForm.resultPage.fieldsTitle")}),e.jsx("div",{className:"divide-y rounded-xl border",children:v.map(([k,z])=>{const L=ls(s,k);return e.jsxs("div",{className:M("flex flex-col gap-1 px-3 py-2.5 sm:flex-row sm:gap-4",(L==null?void 0:L.needs_review)&&"bg-amber-50 dark:bg-amber-950/30"),children:[e.jsxs("div",{className:"flex shrink-0 flex-wrap items-center gap-1.5 sm:w-32",children:[e.jsx("p",{className:"text-sm font-semibold text-foreground",children:t[k]??k}),(L==null?void 0:L.needs_review)&&e.jsx(os,{})]}),e.jsx("div",{className:"min-w-0 flex-1 text-sm text-foreground
1/90",children:e.jsx(Al,{value:k===Ke?E.map(dr):z})})]},k)})})]})]}),e.jsx(Ws,{value:"interview",className:"mt-0 flex-1 overflow-y-auto custom-scrollbar px-3 py-5 sm:px-6",children:e.jsx($l,{cv:s,isGenerating:i,onGenerate:()=>n(s),canEdit:d})}),x&&e.jsx(Ws,{value:"history",className:"mt-0 flex-1 overflow-y-auto custom-scrollbar px-3 py-5 sm:px-6",children:e.jsx(hr,{projectId:x,cvId:s.id})})]})}function Tt(s){return typeof s=="object"&&s!==null&&!Array.isArray(s)}function Al({value:s}){return s==null||typeof s=="string"&&s.trim()===""?e.jsx("span",{className:"text-muted-foreground",children:"â"}):Array.isArray(s)?s.length===0?e.jsx("span",{className:"text-muted-foreground",children:"â"}):s.some(t=>Tt(t))?e.jsx(At,{value:s}):e.jsx("ul",{className:"space-y-1",children:s.map((t,r)=>e.jsxs("li",{className:"flex gap-2",children:[e.jsx("span",{className:"select-none text-muted-foreground",children:"â¢"}),e.jsx("span",{className:"whitespace-pre-wrap wrap-break-word",children:t!=null?String(t):"â"})]},r))}):Tt(s)?e.jsx(At,{value:s}):e.jsx("span",{className:"whitespace-pre-wrap wrap-break-word",children:String(s)})}function At({value:s}){return e.jsx("pre",{className:"overflow-x-auto custom-scrollbar roun
1ded-lg bg-muted/60 p-2.5 text-xs leading-relaxed text-foreground/90",children:JSON.stringify(s,null,2)})}function Dl({items:s}){const t=U();return!s||s.length===0?null:e.jsxs("div",{children:[e.jsx("p",{className:"mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:t("form.parserForm.resultPage.criteriaTitle")}),e.jsx("div",{className:"space-y-3 rounded-xl border p-3",children:s.map((r,a)=>{var m;const l=r.required&&!r.passed,n=r.max_score>0?Math.max(0,Math.min(100,r.score/r.max_score*100)):0,i=l?"bg-red-500":n>=70?"bg-green-500":n>=40?"bg-yellow-500":"bg-red-400",d=l?"text-red-600":n>=70?"text-green-600":n>=40?"text-yellow-600":"text-red-600";return e.jsxs("div",{children:[e.jsxs("div",{className:"mb-1 flex items-center justify-between gap-2",children:[e.jsxs("span",{className:"flex items-center gap-1.5 text-sm font-medium",children:[r.needs_review&&e.jsx(os,{}),r.name,r.required&&e.jsx("span",{className:`rounded px-1.5 py-0.5 text-[10px] font-medium ${l?"bg-red-100 text-red-600":"bg-amber-100 text-amber-700"}`,children:t("form.parserForm.resultPage.criteriaRequired")})]}),e.jsxs("span",{className:`text-xs font-semibold ${d}`,children:[r.score,"/",r.max_score]})]}),e.jsx("div",{className:"h-1.5 w-full overflow-hidden rounded-full bg-muted",children:e.jsx("div",{className:`h-full rounded-full ${i}`,style:{width:`${n}%`}})}),r.reason&&e.jsx("p",{className:"mt-1 whitespace-pre-wrap text-xs text-muted-foreground",children:r.reason}),((m=r.confidence_reason)==null?void 0:m.trim())&&e.jsxs("div",{className:"mt-1.5 flex items-start gap-1.5 rounded-md border border-amber-200 bg-amber-50 px-2 py-1.5 dark:border-amber-900/50 dark:bg-amber-950/30",children:[e.jsx(os,{className:"mt-0.5"}),e.jsxs("p",{className:"min-w-0 whitespace-pre-wrap wrap-break-word text-xs text-amber-700 dark:text-amber-400",children:[e.jsx("span",{className:"font-semibold",children:t("form.parserForm.resultPage.confidence.criterionReasonLabel")})," ",r.confidence_reason]})]})]},`${r.name}-${a}`)})})]})}function $l({cv:s,isGenerating:t,onGenerate:r,canEdit:a}){var d,m,p;const l=U(),n=s.interview_data;return t||s.interview_status==="processing"?e.jsxs("div",{className:"flex flex-col items-center gap-3 py-16 text-center",children:[e.jsx(_e,{className:"h-6 w-6 text-primary"}),e.jsx("p",{className:"text-sm font-medium text-muted-foreground",children:l("form.parserForm.resultPage.interviewGenerating")})]}):n?e.jsxs("div",{className:"space-y-5",children:[a&&e.jsx("div",{className:"flex justify-end",children:e.jsxs(w,{size:"sm",variant:"outline",className:"",onClick:r,children:[e.jsx(rt,{className:"mr-1.5 h-3.5 w-3.5"}),l("form.parserForm.resultPage.interviewRegenerate")]})}),n.summary&&e.jsxs("div",{className:"rounded-lg bg-muted/50 p-3",children:[e.jsx("p",{className:"mb-1 text-xs font-bold uppercase tracking-wide text-muted-foreground",children:l("form.parserForm.resultPage.interviewSummary")}),e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:n.summary})]}),((d=n.strengths)==null?void 0:d.length)>0&&e.jsxs("div",{children:[e.jsxs("p",{className:"mb-1.5 flex items-center gap-1.5 text-xs font-bold text-green-600",children:[e.jsx(Pt,{className:"h-3.5 w-3.5 shrink-0"}),l("form.parserForm.resultPage.interviewStrengths")]}),e.jsx("ul",{className:"space-y-1",children:n.strengths.map((g,u)=>e.jsxs("li",{className:"flex items-start gap-2 text-sm",children:[e.jsx(Pt,{className:"mt-0.5 h-4 w-4 shrink-0 text-green-600"}),e.jsx("span",{children:g})]},u))})]}),((m=n.weaknesses)==null?void 0:m.length)>0&&e.jsxs("div",{children:[e.jsxs("p",{className:"mb-1.5 flex items-center gap-1.5 text-xs font-bold text-rose-600",children:[e.jsx(he,{className:"h-3.5 w-3.5 shrink-0"}),l("form.parserForm.resultPage.interviewWeaknesses")]}),e.jsx("ul",{className:"space-y-1",children:n.weaknesses.map((g,u)=>e.jsxs("li",{className:"flex items-start gap-2 text-sm",children:[e.jsx(Na,{className:"mt-0.5 h-4 w-4 shrink-0 text-rose-600"}),e.jsx("span",{children:g})]},u))})]}),n.jd_fit&&e.jsxs("div",{className:"rounded-lg border border-blue-200 bg-blue-50/60 p-3",children:[e.jsx("p",{className:"mb-1 text-xs font-bold uppercase tracking-wide text-blue-700",children:l("form.parserForm.resultPage.interviewJdFit")}),e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:n.jd_fit})]}),((p=n.questions)==null?void 0:p.length)>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-xs font-bold uppercase tracking-wide text-muted-foreground",children:l("form.parserForm.resultPage.interviewQuestions")}),n.questions.map((g,u)=>e.jsx(Vl,{question:g,index:u},u))]})]}):e.jsxs("div",{className:"flex flex-col items-center gap-3 py-10 text-center",children:[e.jsx(ja,{className:"h-8 w-8 text-muted-foreground"}),e.jsx("p",{className:"text-sm font-medium",children:l("form.parserForm.resultPage.interviewEmptyTitle")}),e.jsx("p",{className:"max-w-xs text-xs text-muted-foreground",children:l("form.parserForm.resultPage.interviewEmptyDesc")}),a&&e.jsxs(w,{size:"sm",className:"text-white",onClick:r,disabled:s.status!=="completed",children:[e.jsx(ns,{className:"mr-1.5 h-3.5 w-3.5"}),l("form.parserForm.resultPage.interviewGenerate")]})]})}function Vl({question:s,index:t}){var i;const r=U(),[a,l]=f.useState(!1),n=(i=s.expected_answer)==null?void 0:i.trim();return e.jsxs("div",{className:"rounded-lg border p-3 transition-colors hover:border-primary/40",children:[e.jsxs("div",{className:"mb-1 flex items-center justify-between gap-2",children:[e.jsx("span",{className:"rounded bg-primary/10 px-1.5 py-0.5 text-[10px] font-medium text-primary",children:s.category}),e.jsx("span",{className:"text-xs text-muted-foreground",children:r("common.questionNumber",{number:t+1})})]}),e.jsx("p",{className:"text-sm font-medium leading-snug",children:s.question}),s.reason&&e.jsx("p",{className:"mt-1 text-xs italic text-muted-foreground",children:s.reason}),n&&e.jsxs("div",{className:"mt-2 rounded-md border border-amber-200 bg-amber-50/70 dark:border-amber-900/50 dark:bg-amber-950/30",children:[e.jsxs("button",{type:"button",onClick:()=>l(d=>!d),className:"flex w-full items-center gap-1.5 px-2.5 py-1.5 text-left text-[11px] font-semibold uppercase tracking-wide text-amber-700 dark:text-amber-400",children:[e.jsx(ba,{className:"h-3.5 w-3.5 shrink-0"}),e.jsx("span",{className:"flex-1",children:r("form.parserForm.resultPage.interviewExpectedAnswer")}),e.jsx(Es,{className:M("h-3.5 w-3.5 shrink-0 transition-transform",a&&"rotate-180")}
1)]}),a&&e.jsx("p",{className:"whitespace-pre-wrap px-2.5 pb-2.5 text-sm text-foreground/90",children:n})]})]})}function Ll({cv:s,open:t,onOpenChange:r,fieldLabel:a,onMark:l,onReprocess:n,isReprocessing:i,onGenerateInterview:d,isGeneratingInterview:m,canEdit:p,onViewDetail:g,onEdit:u,onDelete:x,onReevaluate:c,projectId:N}){const j=U(),h=s?Ls(s):null;return e.jsx(ya,{open:t,onOpenChange:r,children:e.jsxs(wa,{side:"right",className:"flex w-full flex-col gap-0 overflow-hidden p-0 sm:max-w-xl",children:[e.jsxs("div",{className:"shrink-0 border-b px-4 py-3 pr-10",children:[e.jsx(va,{className:"truncate text-base",title:h??void 0,children:h??j("form.parserForm.resultPage.sheetTitle")}),s&&e.jsx("p",{className:"mt-0.5 truncate text-xs text-muted-foreground",title:s.file_name,children:s.file_name})]}),e.jsx("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:s&&e.jsx(gr,{cv:s,fieldLabel:a,onMark:l,onReprocess:n,isReprocessing:i,onGenerateInterview:d,isGeneratingInterview:m,canEdit:p,onViewDetail:g,onEdit:u,onDelete:x,onReevaluate:c,projectId:N})})]})})}function ql(s,t){return s==="list"?Array.isArray(t)?t:t==null?null:[String(t)]:s==="number"?t==null||t===""?null:Number(t):s==="boolean"?!!t:t==null||t===""?null:String(t)}function Ol(s,t){if(s==="list"){const a=t.split(` 2`).map(l=>l.trim()).filter(Boolean);return a.length?a:null}if(s==="number"){const a=t.trim();if(!a)return null;const l=Number(a);return Number.isNaN(l)?null:l}if(s==="boolean")return t==="true";const r=t.trim();return r||null}function Il(s,t){return s==="list"?Array.isArray(t)?t.map(r=>String(r)).join(` 3`):"":s==="boolean"?t?"true":"false":t==null?"":String(t)}function Bl({value:s,onChange:t,disabled:r,placeholder:a}){const l=f.useRef([]),n=s===""?[]:s.split(` 4`),i=(d,m)=>{if(m.trim()===""&&d<n.length){t(n.filter((g,u)=>u!==d).join(` 5`)),requestAnimationFrame(()=>{var g;return(g=l.current[d])==null?void 0:g.focus()});return}const p=[...n];d===n.length?p.push(m):p[d]=m,t(p.join(` 6`))};return e.jsx("div",{className:"flex flex-col gap-1.5",children:[...n,""].map((d,m)=>e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"mt-3 h-[6px] w-[6px] shrink-0 rounded-full bg-muted-foreground/80"}),e.jsx(De,{ref:p=>{l.current[m]=p},rows:1,value:d,onChange:p=>i(m,p.target.value),onKeyDown:p=>{var g;p.key==="Enter"&&(p.preventDefault(),(g=l.current[m+1])==null||g.focus())},disabled:r,placeholder:m===n.length?a:void 0,className:"h-[30px] min-h-[30px] flex-1 resize-y py-1 text-sm custom-scrollbar"})]},m))})}function Ul({cv:s,templateFields:t,saving:r,onSave:a,onCancel:l}){const n=U(),i=f.useMemo(()=>{const u=t.map(x=>({name:x.name,label:x.alias_name||x.name,type:x.type}));return u.push({name:"recommendation",label:n("form.parserForm.resultPage.recommendation"),type:"string"}),u},[t,n]),[d,m]=f.useState(()=>{var x;const u={};for(const c of i)u[c.name]=Il(c.type,(x=s.result_json)==null?void 0:x[c.name]);return u}),p=(u,x)=>m(c=>({...c,[u]:x})),g=()=>{var x;const u={};for(const c of i){const N=Ol(c.type,d[c.name]??""),j=ql(c.type,(x=s.result_json)==null?void 0:x[c.name]);JSON.stringify(N)!==JSON.stringify(j)&&(u[c.name]=N)}if(Object.keys(u).length===0){l();return}a({result_json:u})};return e.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[e.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto custom-scrollbar px-2 py-2 sm:px-6",children:e.jsx("div",{className:" rounded-xl",children:i.map(u=>{const x=ls(s,u.name),c=x!=null&&x.needs_review?e.jsx(os,{}):null,N=M("px-3 py-2.5",(x==null?void 0:x.needs_review)&&"rounded-lg bg-amber-50 dark:bg-amber-950/30");return u.type==="list"?e.jsxs(Bt,{defaultOpen:!0,className:N,children:[e.jsxs(Ut,{className:"group flex w-full items-center gap-1.5 text-left text-xs font-semibold text-foreground",children:[u.label,e.jsx(Es,{className:"h-3.5 w-3.5 shrink-0 transition-transform group-data-[state=closed]:-rotate-90"}),c]}),e.jsx(Kt,{className:"pt-1.5",children:e.jsx(Bl,{value:d[u.name]??"",onChange:j=>p(u.name,j),disabled:r,placeholder:n("form.parserForm.resultPage.editListPlaceholder")})})]},u.name):e.jsxs("div",{className:M("flex flex-col gap-1.5",N),children:[e.jsxs("label",{className:"flex items-center gap-1.5 text-xs font-semibold text-foreground",children:[u.label,c]}),e.jsx(le,{type:u.type==="number"?"number":"text",value:d[u.name],onChange:j=>p(u.name,j.target.value),disabled:r,className:"h-8 text-sm"})]},u.name)})})}),e.jsxs("div",{className:"flex shrink-0 items-center justify-end gap-2 border-t bg-background px-4 py-3 sm:px-6",children:[e.jsxs(w,{variant:"ghost",size:"sm",className:"",onClick:l,disabled:r,children:[e.jsx(Se,{className:"mr-1.5 h-3.5 w-3.5"}),n("form.parserForm.resultPage.cancel")]}),e.jsxs(w,{size:"sm",className:"text-white",onClick:g,disabled:r,children:[r?e.jsx(Z,{className:"mr-1.5 h-3.5 w-3.5 animate-spin"}):e.jsx(Fa,{className:"mr-1.5 h-3.5 w-3.5"}),n("form.parserForm.resultPage.editSave")]})]})]})}function Kl({cv:s,templateFields:t,open:r,onOpenChange:a,saving:l,onSave:n}){const i=U(),d=s?Ls(s):null,m=async p=>{if(s)try{await n(s.id,p),a(!1)}catch{}};return e.jsx(cs,{open:r,onOpenChange:p=>!l&&a(p),children:e.jsxs(ms,{className:"flex max-h-[90vh] max-w-2xl flex-col gap-0 p-0",children:[e.jsxs(ds,{className:"border-b px-4 pb-4 pt-6 sm:px-6",children:[e.jsx(us,{className:"",children:i("form.parserForm.resultPage.editDialogTitle")}),e.jsx(As,{className:"truncate",children:d||(s==null?void 0:s.file_name)})]}),e.jsx("div",{className:"flex min-h-0 flex-1 flex-col",children:s&&e.jsx(Ul,{cv:s,templateFields:t,saving:l,onSave:m,onCancel:()=>a(!1)},s.id)})]})})}const zl=[{value:"shortlisted",labelKey:"form.parserForm.resultPage.marks.shortlist",color:"text-green-600"},{value:"reviewing",labelKey:"form.parserForm.resultPage.marks.reviewing",color:"text-yellow-600"},{value:"rejected",labelKey:"form.parserForm.resultPage.marks.rejected",color:"text-red-600"},{value:"unmarked",labelKey:"form.parserForm.resultPage.marks.none",color:"text-muted-foreground"}];function Ql({open:s,onOpenChange:t,onExport:r,isExporting:a,initialMark:l,statusNote:n}){const i=U(),[d,m]=f.useState("all"),[p,g]=f.useState(!1);f.useEffect(()=>{s&&(m(l??"all"),g(!1))},[s]);const u=async()=>{const x={include_interview:p};d!=="all"&&(x.marked_as=[d]);try{await r(x),t(!1)}catch{}};return e.jsx(cs,{open:s,onOpenChange:x=>!a&&t(x),children:e.jsxs(ms,{className:"max-w-md",children:[e.jsxs(ds,{children:[e.jsx(us,{className:"",children:i("form.parserForm.resultPage.exportDialogTitle")}),e.jsx(As,{children:i("form.parserForm.resultPage.exportDialogDesc")})]}),e.jsxs("div",{className:"space-y-4 py-1",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:i("form.parserForm.resultPage.exportFilterLabel")}),e.jsxs(Me,{value:d,onValueChange:x=>m(x),children:[e.jsx(Re,{className:"h-9 rounded-lg",children:e.jsx(Te,{})}),e.jsxs(Ae,{children:[e.jsx(H,{value:"all",children:i("form.parserForm.resultPage.filterMarkedAll")}),zl.map(({value:x,labelKey:c,color:N})=>e.jsx(H,{value:x,children:e.jsx("span",{className:N,children:i(c)})},x))]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:i("form.parserForm.resultPage.exportFilterHint")}),n&&e.jsx("p",{className:"text-xs text-muted-foreground",children:i("form.parserForm.resultPage.exportStatusNote",{status:n})})]}),e.jsx("div",{className:"space-y-1.5 border-t pt-3",children:e.jsxs("label",{className:"flex cursor-pointer items-start gap-2 text-sm",children:[e.jsx(Ds,{className:"mt-0.5",checked:p,onCheckedChange:x=>g(x===!0)}),e.jsxs("span",{children:[e.jsx("span",{className:"font-medium",children:i("form.parserForm.resultPage.exportIncludeInterview")}),e.jsx("span",{className:"mt-0.5 block text-xs text-muted-foreground",children:i("form.parserForm.resultPage.exportIncludeInterviewHint")})]})]})})]}),e.jsxs(Yt,{children:[e.jsx(w,{variant:"outline",className:"",onClick:()=>t(!1),disabled:a,children:i("form.parserForm.resultPage.cancel")}),e.jsxs(w,{className:"text-white",onClick:u,disabled:a,children:[a?e.jsx(Z,{className:"mr-1.5 h-4 w-4 animate-spin"}):e.jsx(Ts,{className:"mr-1.5 h-4 w-4"}),i("form.parserForm.resultPage.exportExcel")]})]})]})})}const mt="parserMembers";function Gl(s,t=!0){return Ge({queryKey:q(mt,{projectId:s}),queryFn:()=>D.getMembers(s),enabled:!!s&&t,staleTime:3e4})}function Wl(s){const t=X();return W({mutationKey:q("parserAddMember",{projectId:s}),mutationFn:r=>D.addMember(s,r),onSuccess:r=>{t.setQueryData(q(mt,{projectId:s}),a=>{const l=a??[],n=l.findIndex(d=>d.user_token===r.user_token);if(n===-1)return[...l,r];const i=[...l];return i[n]=r,i})}})}function Hl(s){const t=X();return W({mutationKey:q("parserRemoveMember",{projectId:s}),mutationFn:r=>D.removeMember(s,r),onSuccess:(r,a)=>{t.setQueryData(q(mt,{projectId:s}),l=>l&&l.filter(n=>n.user_token!==a))}})}function Yl({open:s,onOpenChange:t,session:r}){const a=U(),l=r.my_role==="owner",{data:n,isLoading:i,isError:d,refetch:m}=Gl(r.id,s),{mutateAsync:p,isPending:g}=Wl(r.id),{mutateAsync:u,isPending:x}=Hl(r.id),[c,N]=f.useState(""),[j,h]=f.useState("viewer"),[b,v]=f.useState(null),E=async()=>{const k=c.trim();if(!(!k||g))try{await p({user_token:k,role:j}),N(""),h("viewer")}catch(z){console.error("Add member error:",z)}},F=async()=>
6{if(b)try{await u(b.user_token),v(null)}catch(k){console.error("Remove member error:",k)}},$=k=>a(k==="editor"?"form.parserForm.members.roleEditor":"form.parserForm.members.roleViewer");return e.jsxs(cs,{open:s,onOpenChange:t,children:[e.jsxs(ms,{className:"flex max-h-[85vh] max-w-lg flex-col gap-0 p-0",children:[e.jsxs(ds,{className:"border-b px-5 pb-4 pt-6",children:[e.jsxs(us,{className:"flex items-center gap-2",children:[e.jsx(Jt,{className:"h-4 w-4"}),a("form.parserForm.members.title")]}),e.jsx(As,{children:a("form.parserForm.members.description")})]}),e.jsxs("div",{className:"min-h-0 flex-1 space-y-4 overflow-y-auto px-5 py-4",children:[l?e.jsxs("div",{className:"space-y-2 rounded-xl border bg-muted/30 p-3.5",children:[e.jsx(ne,{className:"text-xs",children:a("form.parserForm.members.userToken")}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row items-center",children:[e.jsx(le,{value:c,onChange:k=>N(k.target.value),placeholder:a("form.parserForm.members.addPlaceholder"),className:"flex-1",onKeyDown:k=>{k.key==="Enter"&&E()}}),e.jsxs(Me,{value:j,onValueChange:k=>h(k),children:[e.jsx(Re,{className:"w-full sm:w-32",children:e.jsx(Te,{})}),e.jsxs(Ae,{children:[e.jsx(H,{value:"viewer",children:a("form.parserForm.members.roleViewer")}),e.jsx(H,{value:"editor",children:a("form.parserForm.members.roleEditor")})]})]}),e.jsxs(w,{onClick:E,disabled:!c.trim()||g,className:"shrink-0 text-white",children:[g?e.jsx(Z,{className:"mr-1.5 h-4 w-4 animate-spin"}):e.jsx(Qt,{className:"mr-1.5 h-4 w-4"}),a("form.parserForm.members.add")]})]})]}):e.jsx("p",{className:"rounded-lg border border-amber-200 bg-amber-50 p-3 text-xs text-amber-700",children:a("form.parserForm.members.onlyOwner")}),e.jsxs("div",{className:"flex items-center justify-between rounded-lg border px-3 py-2.5",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[e.jsx(ka,{className:"h-4 w-4 shrink-0 text-primary"}),e.jsx("span",{className:"truncate text-sm font-medium",children:a("form.parserForm.members.ownerRow")})]}),e.jsx("span",{className:"shrink-0 rounded-full bg-primary/10 px-2 py-0.5 text-xs font-semibold text-primary",children:a("form.parserForm.members.roleOwner")})]}),i?e.jsxs("div",{className:"flex items-center justify-center gap-2 py-8 text-sm text-muted-foreground",children:[e.jsx(Z,{className:"h-4 w-4 animate-spin text-primary"}),a("form.parserForm.members.loading")]}):d?e.jsxs("div",{className:"flex flex-col items-center gap-2 py-6 text-center text-sm text-muted-foreground",children:[e.jsx("p",{children:a("form.parserForm.members.loadError")}),e.jsx(w,{variant:"outline",size:"sm",className:"",onClick:()=>m(),children:a("form.parserForm.members.retry")})]}):!n||n.length===0?e.jsx("p",{className:"py-6 text-center text-sm text-muted-foreground",children:a("form.parserForm.members.empty")}):e.jsx("ul",{className:"space-y-2",children:n.map(k=>e.jsxs("li",{className:"flex items-center justify-between gap-2 rounded-lg border px-3 py-2.5",children:[e.jsx("span",{className:"truncate text-sm font-medium",title:k.user_token,children:k.user_token}),e.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[e.jsx("span",{className:"rounded-full bg-muted px-2 py-0.5 text-xs font-medium text-muted-foreground",children:$(k.role)}),l&&e.jsx(w,{variant:"ghost",size:"icon",className:"h-7 w-7 text-muted-foreground hover:text-destructive",onClick:()=>v(k),title:a("form.parserForm.members.remove"),children:e.jsx(ve,{className:"h-4 w-4"})})]})]},k.user_token))})]})]}),e.jsx(Qe,{open:b!==null,onOpenChange:k=>{!k&&!x&&v(null)},title:a("form.parserForm.members.removeTitle"),description:a("form.parserForm.members.removeConfirm",{name:(b==null?void 0:b.user_token)??""}),textAction:a("form.parserForm.members.remove"),onAction:F,onCancel:()=>v(null)})]})}function jr(s){const t=X();return W({mutationKey:q("parserUpdateSession",{sessionId:s}),mutationFn:r=>D.updateSession(s,r),onSuccess:r=>{t.setQueryData(q(Vs,{sessionId:s}),a=>a&&{...a,...r}),t.setQueriesData({predicate:a=>a.queryKey[1]===tr},a=>a&&{...a,pages:a.pages.map(l=>({...l,items:l.items.map(n=>n.id===r.id?{...n,...r}:n)}))})}})}const Jl=[{code:"vi",flag:"VN",label:"Tiếng Viá»t"},{code:"en",flag:"EN",label:"English"}];function Zl(s){return(s??[]).map(t=>({name:t.name,type:t.type==="boolean"?"string":t.type,required:t.required,alias:t.alias_name??"",description:t.description??""}))}function Xl(s){return s.map(t=>({name:t.name,alias_name:t.alias||null,type:t.type,required:t.required,description:t.description||void 0}))}function eo(s){return{positionName:s.position_name??"",description:s.description??"",outputLang:s.output_language??"vi",numInterviewQuestions:s.num_interview_questions??Xn,jdText:s.jd_text??"",jdFile:s.jd_file??null,criteria:s.evaluation_criteria??[],competency:s.competency_framework??"",competencyFile:s.competency_framework_file??null,competencies:(s.
6competencies??[]).map(t=>({competency_id:t.id,weight:t.weight??1})),schemaFields:Zl(s.template_data)}}function Dt(s){return{position_name:s.positionName.trim(),description:s.description.trim()||null,output_language:s.outputLang,num_interview_questions:s.numInterviewQuestions,jd_text:s.jdText,jd_file:s.jdFile,template_fields:s.schemaFields.length>0?Xl(s.schemaFields):null,evaluation_criteria:s.criteria,competency_framework:s.competency.trim()||null,competency_framework_file:s.competencyFile,competencies:s.competencies.length>0?s.competencies:null}}function so(s,t){const r={};for(const a of Object.keys(t))JSON.stringify(t[a])!==JSON.stringify(s[a])&&Object.assign(r,{[a]:t[a]});return r}function to({session:s,onSaved:t}){const r=U(),{toast:a}=xs(),{uploadSingleFile:l}=st(),n=jr(s.id),[i,d]=f.useState(()=>eo(s)),[m,p]=f.useState(i.positionName),[g,u]=f.useState(i.description),[x,c]=f.useState(i.outputLang),[N,j]=f.useState(i.numInterviewQuestions),[h,b]=f.useState(i.jdText),[v,E]=f.useState(i.jdFile),[F,$]=f.useState(i.criteria),[k,z]=f.useState(i.competency),[L,ee]=f.useState(i.competencyFile),[re,oe]=f.useState(i.competencies),[ie,ce]=f.useState(i.schemaFields),[O,ge]=f.useState(!1),[se,me]=f.useState(!1),ae=f.useRef(null),y=f.useRef(null),Y=F.reduce((P,J)=>P+(Number(J.max_score)||0),0),I=F.length===0||Math.abs(Y-10)<.01,T=ie.length>0,Q=h.trim().length>0||!!v,te={positionName:m,description:g,outputLang:x,numInterviewQuestions:N,jdText:h,jdFile:v,criteria:F,competency:k,competencyFile:L,competencies:re,schemaFields:ie},je=f.useMemo(()=>Dt(i),[i]),ue=so(je,Dt(te)),Fe=Object.keys(ue).length>0,_=m.trim().length>0&&I&&T&&Q&&Fe&&!n.isPending&&!O&&!se,A=async P=>{if(P){ge(!0);try{const J=await l({file:P,contentType:P.type});E({file_url:J.makeUploadPublic.publicUrl,file_name:P.name,mimetype:P.type||null})}catch{a({variant:"destructive",description:r("form.parserForm.uploadFailed")})}finally{ge(!1),ae.current&&(ae.current.value="")}}},B=async P=>{if(P){me(!0);try{const J=await l({file:P,contentType:P.type});ee({file_url:J.makeUploadPublic.publicUrl,file_name:P.name,mimetype:P.type||null})}catch{a({variant:"destructive",description:r("form.parserForm.uploadFailed")})}finally{me(!1),y.current&&(y.current.value="")}}},G=async()=>{if(_)try{const P=await n.mutateAsync(ue);d(te),t(P),a({description:r("form.parserForm.settings.savedToast"),className:"bg-green-500 text-white"})}catch(P){console.error("Save project settings error:",P)}};return e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[e.jsx("div",{className:"custom-scrollbar min-h-0 flex-1 overflow-y-auto px-3 py-4 sm:px-6",children:e.jsxs("div",{className:"mx-auto w-full max-w-5xl space-y-5",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(ne,{children:[r("form.parserForm.jobTitle")," ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(le,{value:m,onChange:P=>p(P.target.value),placeholder:r("form.parserForm.jobTitlePlaceholder")})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(ne,{children:r("form.parserForm.description")}),e.jsx(le,{value:g,onChange:P=>u(P.target.value),placeholder:r("form.parserForm.descriptionPlaceholder")})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(ne,{children:r("form.parserForm.outputLang")}),e.jsx("div",{className:"flex flex-wrap gap-2",children:Jl.map(({code:P,flag:J,label:be})=>e.jsxs(w,{type:"button",variant:x===P?"default":"outline",size:"sm",onClick:()=>c(P),className:x===P?"rounded-full text-white":"rounded-full",children:[e.jsx("span",{className:"text-xs font-semibold opacity-60",children:J}),be]},P))})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(ne,{children:r("form.parserForm.numInterviewQuestions")}),e.jsx(we,{value:N,onChange:j,min:Jn,max:Zn,"aria-label":r("form.parserForm.numInterviewQuestions")}),e.jsx("p",{className:"text-xs text-muted-foreground",children:r("form.parserForm.numInterviewQuestionsHint")})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx(ne,{children:r("form.parserForm.j
6dTitle")}),e.jsxs(w,{type:"button",variant:"ghost",size:"sm",className:"h-7 text-xs",disabled:O,onClick:()=>{var P;return(P=ae.current)==null?void 0:P.click()},children:[O?e.jsx(Z,{className:"mr-1.5 h-3.5 w-3.5 animate-spin text-primary"}):e.jsx(Zs,{className:"mr-1.5 h-3.5 w-3.5"}),r("form.parserForm.competencyUpload")]}),e.jsx("input",{ref:ae,type:"file",accept:it.join(","),className:"hidden",onChange:P=>{var J;return A((J=P.target.files)==null?void 0:J[0])}})]}),e.jsx(De,{value:h,onChange:P=>b(P.target.value),placeholder:r("form.parserForm.jdTextPlaceholder"),className:"min-h-28 resize-none",disabled:O}),v&&e.jsxs("p",{className:"flex items-center gap-1.5 text-xs text-green-600",children:[e.jsxs("a",{href:v.file_url,download:v.file_name||void 0,target:"_blank",rel:"noopener noreferrer",className:"truncate hover:underline",children:["ð ",v.file_name||r("form.parserForm.jdTabFile")]}),e.jsx("button",{type:"button",className:"text-muted-foreground hover:text-destructive",onClick:()=>E(null),children:"â"})]}),!Q&&e.jsx("p",{className:"text-xs text-destructive",children:r("form.parserForm.jdRequired")})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(ne,{className:"flex items-center gap-2",children:[r("form.parserForm.schemaDialog.title"),ie.length?e.jsx("span",{className:"rounded-full bg-primary/10 px-2 py-0.5 text-xs font-semibold text-primary",children:ie.length}):null]}),e.jsx(rl,{fields:ie,onChange:ce}),!T&&e.jsx("p",{className:"text-xs text-destructive",children:r("form.parserForm.schemaDialog.requiredHint")})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(ne,{children:r("form.parserForm.criteria.title")}),e.jsx(el,{value:F,onChange:$})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx(ne,{children:r("form.parserForm.competency")}),e.jsxs(w,{type:"button",variant:"ghost",size:"sm",className:"h-7 text-xs",disabled:se,onClick:()=>{var P;return(P=y.current)==null?void 0:P.click()},children:[se?e.jsx(Z,{className:"mr-1.5 h-3.5 w-3.5 animate-spin text-primary"}):e.jsx(Zs,{className:"mr-1.5 h-3.5 w-3.5"}),r("form.parserForm.competencyUpload")]}),e.jsx("input",{ref:y,type:"file",accept:ur.join(","),className:"hidden",onChange:P=>{var J;return B((J=P.target.files)==null?void 0:J[0])}})]}),L&&e.jsxs("p",{className:"flex items-center gap-1.5 text-xs text-green-600",children:[e.jsxs("a",{href:L.file_url,download:L.file_name||void 0,target:"_blank",rel:"noopener noreferrer",className:"truncate hover:underline",children:["ð"," ",L.file_name||r("form.parserForm.competencyUpload")]}),e.jsx("button",{type:"button",className:"text-muted-foreground hover:text-destructive",onClick:()=>ee(null),children:"â"})]}),e.jsx(lr,{value:re,onChange:oe,seed:s.competencies??void 0}),e.jsx(ne,{className:"text-xs text-muted-foreground",children:r("form.parserForm.competencyPicker.freeText")}),e.jsx(De,{value:k,onChange:P=>z(P.target.value),placeholder:r("form.parserForm.competencyPlaceholder"),className:"min-h-24 resize-none"})]})]})}),e.jsx("div",{className:"flex shrink-0 justify-end border-t bg-background px-3 py-3 sm:px-6",children:e.jsxs(w,{className:"text-white",onClick:G,disabled:!_,children:[n.isPending&&e.jsx(Z,{className:"mr-1.5 h-4 w-4 animate-spin"}),r("form.parserForm.settings.save")]})})]})}function ro(s){return W({mutationKey:q("parserGenerateQuestionBank",{sessionId:s}),mutationFn:t=>D.generateQuestionBank(s,t)})}const Nr="parserQuestionBanks",ao="parserQuestionBankDetail",no=3e3,dt=(s,t)=>s.invalidateQueries({predicate:r=>{var a;return r.queryKey[1]===Nr&&((a=r.queryKey[0])==null?void 0:a.projectId)===t}});function lo(s,t,r){var l,n;const a=Ge({queryKey:q(Nr,{projectId:s,page:t,pageSize:r}),queryFn:()=>D.listQuestionBanks(s,{limit:r,offset:(t-1)*r}),enabled:!!s,placeholderData:is,refetchOnWindowFocus:!1,refetchInterval:i=>{var d;return(d=i.state.data)!=null&&d.items.some(m=>m.status==="processing"||m.status==="pending")?no:!1}});return{...a,items:((l=a.data)==null?void 0:l.items)??[],total:((n=a.data)==null?void 0:n.total)??0}}function oo(s,t){return Ge({queryKey:q(ao,{projectId:s,bankId:t}),queryFn:()=>D.getQuestionBank(s,t),enabled:!!s&&!!t,refetchOnWindowFocus:!1})}function io(s){const t=X();return W({mutationKey:q("parserWaitQuestionBank",{projectId:s}),mutationFn:r=>D.waitForQuestionBank(s,r),onSettled:()=>dt(t,s)})}function co(s){const t=X();return W({mutationKey:q("parserDeleteQuestionBank",{projectId:s}),mutationFn:r=>D.deleteQuestionBank(s,r),onSuccess:()=>dt(t,s)})}function mo(s){return W({mutationKey:q("parserExportQuestionBankWord",{projectId:s}),mutationFn:({bankId:t})=>D.exportQuestionBankWord(s,t),onSuccess:(t,{fileName:r})=>
6{const a=URL.createObjectURL(t),l=document.createElement("a");l.href=a,l.download=r,l.click(),URL.revokeObjectURL(a)}})}function uo({open:s,onOpenChange:t,session:r,onSaved:a}){const l=U(),{toast:n}=xs(),{uploadSingleFile:i}=st(),d=jr(r.id),[m,p]=f.useState(""),[g,u]=f.useState(null),[x,c]=f.useState([]),[N,j]=f.useState(!1),h=f.useRef(null);f.useEffect(()=>{s&&(p(r.competency_framework??""),u(r.competency_framework_file??null),c((r.competencies??[]).map(F=>({competency_id:F.id,weight:F.weight??1}))))},[s,r]);const b=!d.isPending&&!N,v=async F=>{if(F){j(!0);try{const $=await i({file:F,contentType:F.type});u({file_url:$.makeUploadPublic.publicUrl,file_name:F.name,mimetype:F.type||null})}catch{n({variant:"destructive",description:l("form.parserForm.uploadFailed")})}finally{j(!1),h.current&&(h.current.value="")}}},E=async()=>{if(!b)return;const F={},$=m.trim()||null;$!==((r.competency_framework??"").trim()||null)&&(F.competency_framework=$),JSON.stringify(g)!==JSON.stringify(r.competency_framework_file??null)&&(F.competency_framework_file=g);const k=x.length>0?x:null,z=(r.competencies??[]).length>0?(r.competencies??[]).map(L=>({competency_id:L.id,weight:L.weight??1})):null;if(JSON.stringify(k)!==JSON.stringify(z)&&(F.competencies=k),Object.keys(F).length===0){t(!1);return}try{const L=await d.mutateAsync(F);a(L),t(!1)}catch(L){console.error("Save competency framework error:",L)}};return e.jsx(cs,{open:s,onOpenChange:t,children:e.jsxs(ms,{className:"flex max-h-[90vh] max-w-5xl flex-col gap-0 p-0",children:[e.jsxs(ds,{className:"border-b px-4 pb-4 pt-6 sm:px-6",children:[e.jsx(us,{className:"",children:l("form.parserForm.resultPage.frameworkDialogTitle")}),e.jsx(As,{children:l("form.parserForm.resultPage.frameworkDialogDesc")})]}),e.jsxs("div",{className:"min-h-0 flex-1 space-y-4 overflow-y-auto px-4 py-5 custom-scrollbar sm:px-6",children:[e.jsx("input",{ref:h,type:"file",accept:ur.join(","),className:"hidden",onChange:F=>{var $;return v(($=F.target.files)==null?void 0:$[0])}}),e.jsx(lr,{value:x,onChange:c,seed:r.competencies??void 0,horizontal:!0,headerLeft:e.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[e.jsxs(w,{type:"button",variant:"outline",size:"sm",className:"h-7 shrink-0 gap-1.5 text-xs",disabled:N,onClick:()=>{var F;return(F=h.current)==null?void 0:F.click()},children:[N?e.jsx(Z,{className:"h-3.5 w-3.5 animate-spin text-primary"}):e.jsx(Zs,{className:"h-3.5 w-3.5"}),l("form.parserForm.competencyUpload")]}),g&&e.jsxs("span",{className:"flex min-w-0 items-center gap-1.5 rounded-md bg-green-50 px-2 py-1 text-xs text-green-700",children:[e.jsxs("a",{href:g.file_url,target:"_blank",rel:"noopener noreferrer",download:g.file_name||l("form.parserForm.competencyUpload"),className:"truncate hover:underline",children:["ð"," ",g.file_name||l("form.parserForm.competencyUpload")]}),e.jsx("button",{type:"button",className:"shrink-0 text-green-700/70 hover:text-destructive",onClick:()=>u(null),children:"â"})]})]})}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(ne,{className:"text-xs text-muted-foreground",children:l("form.parserForm.competencyPicker.freeText")}),e.jsx(De,{value:m,onChange:F=>p(F.target.value),placeholder:l("form.parserForm.competencyPlaceholder"),className:"min-h-28 resize-none"})]})]}),e.jsxs(Yt,{className:"border-t px-4 py-4 sm:px-6",children:[e.jsx(w,{variant:"outline",className:"",onClick:()=>t(!1),children:l("form.parserForm.resultPage.cancel")}),e.jsxs(w,{className:"text-white",onClick:E,disabled:!b,children:[d.isPending&&e.jsx(Z,{className:"mr-1.5 h-4 w-4 animate-spin"}),l("form.parserForm.settings.save")]})]})]})})}const ze=({className:s})=>e.jsx(Z,{className:`animate-spin ${s??""}`}),$t=8;function xo(s){const t=new Date($s(s));return Number.isNaN(t.getTime())?"":t.toLocaleString()}function po({session:s,onBack:t,canEdit:r,onSessionUpdated:a}){var Ne;const l=U(),n=X(),[i,d]=f.useState(!1),[m,p]=f.useState(null),[g,u]=f.useState(!1),[x,c]=f.useState(""),[N,j]=f.useState(10),[h,b]=f.useState(5),[v,E]=f.useState(0),[F,$]=f.useState(0),[k,z]=f.useState(0),[L,ee]=f.useState(0),[re,oe]=f.useState([]),{mutateAsync:ie,isPending:ce}=ro(s.id),[O,ge]=f.useState(null),[se,me]=f.useState(null),[ae,y]=f.useState(1),{items:Y,total:I,isPending:T}=lo(s.id,ae,$t),{data:Q=null,isLoading:te}=oo(s.id,m??void 0),{mutateAsync:je}=io(s.id),{mutateAsync:ue,isPending:Fe}=co(s.id),{mutateAsync:_}=mo(s.id),A=!!((Ne=s.jd_text)!=null&&Ne.trim()||s.jd_file),B=N+h,G=B<1||B>Ee,P=v+F+k,J=P>0&&P!==B,be=L>0?L:null,We=G||J,xe=()=>{c(""),oe([]),E(0),$(0),z(0),ee(0)},Ve=async()=>
6{if(!(!A||We||ce))try{const V=await ie({name:x.trim()||void 0,num_multiple_choice:N,num_essay:h,num_easy:v,num_medium:F,num_hard:k,duration_minutes:be,competencies:re.length>0?re:void 0});u(!1),xe(),y(1),dt(n,s.id),await je(V.id)}catch(V){console.error("Generate question bank error:",V)}},ps=V=>{V.status==="completed"&&p(V.id)},He=async()=>{if(!se)return;const V=se.id;try{await ue(V),m===V&&p(null),me(null),Y.length===1&&ae>1&&y(de=>de-1)}catch(de){console.error("Delete question bank error:",de)}},Le=async V=>{ge(V.id);try{await _({bankId:V.id,fileName:`${V.name||"question-bank"}.docx`})}catch(de){console.error("Export question bank error:",de)}finally{ge(null)}};if(Q){const V=[];for(const ke of Q.items){let Ce=V.find(Ze=>Ze.competency===ke.competency);Ce||(Ce={competency:ke.competency,items:[]},V.push(Ce)),Ce.items.push(ke)}const de=Q.rubric,fs=Q.num_easy??0,Ye=Q.num_medium??0,hs=Q.num_hard??0,Je=fs+Ye+hs>0;return e.jsxs("div",{className:"flex h-full flex-col bg-background",children:[e.jsxs("div",{className:"flex items-center gap-3 border-b bg-background/95 px-3 py-3 backdrop-blur sm:px-6",children:[e.jsx(w,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>p(null),title:l("form.parserForm.resultPage.bankBack"),children:e.jsx(ks,{className:"h-4 w-4"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("h1",{className:"flex items-center gap-2 truncate text-base font-semibold leading-tight",children:[e.jsx(_s,{className:"h-4 w-4 shrink-0"}),Q.name]}),e.jsx("p",{className:"truncate text-xs text-muted-foreground",children:l("form.parserForm.resultPage.bankMetaTotal",{total:Q.total_questions,mc:Q.num_multiple_choice,essay:Q.num_essay})}),(Je||Q.duration_minutes!=null)&&e.jsxs("p",{className:"truncate text-[11px] text-muted-foreground/80",children:[Je&&l("form.parserForm.resultPage.bankMetaDifficulty",{easy:fs,medium:Ye,hard:hs}),Je&&Q.duration_minutes!=null&&" · ",Q.duration_minutes!=null&&l("form.parserForm.resultPage.bankMetaDuration",{minutes:Q.duration_minutes})]})]}),e.jsxs(w,{variant:"outline",size:"sm",className:"text-xs",onClick:()=>Le(Q),disabled:O===Q.id,children:[O===Q.id?e.jsx(ze,{className:"mr-1.5 h-3.5 w-3.5 text-primary"}):e.jsx(Ma,{className:"mr-1.5 h-3.5 w-3.5"}),O===Q.id?l("form.parserForm.resultPage.bankExporting"):l("form.parserForm.resultPage.bankExport")]})]}),e.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto px-3 py-5 sm:px-6",children:e.jsxs("div",{className:"space-y-6",children:[V.map((ke,Ce)=>e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"border-b pb-1 text-sm font-semibold",children:ke.competency}),ke.items.map((Ze,Xe)=>e.jsx(ho,{question:Ze},Xe))]},Ce)),de&&(de.multiple_choice.length>0||de.essay.length>0)&&e.jsxs("div",{className:"space-y-3 pt-2",children:[e.jsxs("h3",{className:"flex items-center gap-2 text-sm font-bold",children:[e.jsx("span",{className:"h-4 w-1 rounded-full bg-amber-400"}),l("form.parserForm.resultPage.questionRubricTitle")]}),e.jsx(Vt,{title:l("form.parserForm.resultPage.questionMC"),rows:de.multiple_choice}),e.jsx(Vt,{title:l("form.parserForm.resultPage.questionEssay"),rows:de.essay})]})]})})]})}return e.jsxs("div",{className:"flex h-full flex-col bg-background",children:[e.jsxs("div",{className:"flex items-center gap-3 border-b bg-background/95 px-3 py-3 backdrop-blur sm:px-6",children:[e.jsx(w,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:t,children:e.jsx(ks,{className:"h-4 w-4"})}),e.jsx("div",{className:"min-w-0 flex-1",children:e.jsxs("h1",{className:"flex items-center gap-2 text-base font-semibold leading-tight",children:[e.jsx(_s,{className:"h-4 w-4"}),l("form.parserForm.resultPage.questionBank")]})}),r&&e.jsxs(w,{variant:"outline",size:"sm",className:"shrink-0 text-xs",onClick:()=>d(!0),children:[e.jsx(Ra,{className:"h-3.5 w-3.5 sm:mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:l("form.parserForm.resultPage.questionEditFramework")})]})]}),r&&e.jsxs("div",{className:"border-b bg-background px-3 py-3 sm:px-6",children:[!A&&e.jsxs("div",{className:"mb-3 flex items-center gap-2 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-700",children:[e.jsx(he,{className:"h-4 w-4 shrink-0"}),l("form.parserForm.resultPage.questionNoJD")]}),g?e.jsxs("div",{className:"space-y-3 rounded-xl border bg-muted/30 p-3.5",children:[e.jsx("input",{value:x,onChange:V=>c(V.target.value),placeholder:l("form.parserForm.resultPage.bankNamePlaceholder"),className:"w-full rounded-lg border px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary/30"}),e.jsxs("div",{className:"flex flex-wrap items-end gap-3",children:[e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("span",{className:"text-[11px] font-medium text-muted-foreground",children:l("form.parserForm.resultPage.questionMC")}),e.jsx(we,{value:N,onChange:j,min:0,max:Ee,"aria-label":l("form.parserForm.resultPage.questionMC")})]}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("span",{className:"text-[11px] font-medium text-muted-foreground",children:l("form.parserForm.resultPage.questionEssay")}),e.jsx(we,{value:h,onChange:b,min:0,max:Ee,"aria-label":l("form.parserForm.resultPage.questionEssay")})]}),e.jsx("span",{className:`pb-2 text-xs ${G?"font-medium text-red-500":"text-muted-foreground"}`,children:l("form.parserForm.resultPage.questionTotal",{total:B,max:Ee})})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("div",{className:"flex flex-wrap items-end gap-3",children:[e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("span",{className:"text-[11px] font-medium text-muted-foreground",children:l("form.parserForm.resultPage.questionEasy")}
6),e.jsx(we,{value:v,onChange:E,min:0,max:Ee,"aria-label":l("form.parserForm.resultPage.questionEasy")})]}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("span",{className:"text-[11px] font-medium text-muted-foreground",children:l("form.parserForm.resultPage.questionMedium")}),e.jsx(we,{value:F,onChange:$,min:0,max:Ee,"aria-label":l("form.parserForm.resultPage.questionMedium")})]}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("span",{className:"text-[11px] font-medium text-muted-foreground",children:l("form.parserForm.resultPage.questionHard")}),e.jsx(we,{value:k,onChange:z,min:0,max:Ee,"aria-label":l("form.parserForm.resultPage.questionHard")})]})]}),J?e.jsx("p",{className:"text-xs font-medium text-red-500",children:l("form.parserForm.resultPage.questionDifficultyMismatch",{sum:P,total:B})}):e.jsx("p",{className:"text-xs text-muted-foreground",children:l("form.parserForm.resultPage.questionDifficultyHint")})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("span",{className:"text-[11px] font-medium text-muted-foreground",children:l("form.parserForm.resultPage.questionDuration")}),e.jsx(we,{value:L,onChange:ee,min:0,max:Yn,step:5,"aria-label":l("form.parserForm.resultPage.questionDuration")})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:l("form.parserForm.resultPage.questionDurationHint")})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(w,{size:"sm",className:"text-white",onClick:Ve,disabled:ce||!A||We,children:ce?e.jsxs(e.Fragment,{children:[e.jsx(ze,{className:"mr-1.5 h-3.5 w-3.5"}),l("form.parserForm.resultPage.questionGenerating")]}):e.jsxs(e.Fragment,{children:[e.jsx(ns,{className:"mr-1.5 h-3.5 w-3.5"}),l("form.parserForm.resultPage.generate")]})}),e.jsx(w,{size:"sm",variant:"ghost",className:"",onClick:()=>{u(!1),xe()},disabled:ce,children:l("form.parserForm.resultPage.cancel")})]})]}):e.jsxs(w,{className:"w-full text-white",onClick:()=>{oe((s.competencies??[]).map(V=>({competency_id:V.id,weight:V.weight??1}))),u(!0)},disabled:!A,children:[e.jsx($e,{className:"mr-1.5 h-4 w-4"}),l("form.parserForm.resultPage.bankNew")]})]}),e.jsxs("div",{className:"relative min-h-0 flex-1 overflow-y-auto px-3 py-5 sm:px-6",children:[T?e.jsxs("div",{className:"flex items-center justify-center gap-2 py-16 text-sm text-muted-foreground",children:[e.jsx(ze,{className:"h-4 w-4 text-primary"})," ",l("form.parserForm.resultPage.bankLoading")]}):I===0?e.jsxs("div",{className:"flex flex-col items-center gap-3 py-12 text-center",children:[e.jsx(Ta,{className:"h-8 w-8 text-muted-foreground"}),e.jsx("p",{className:"max-w-xs text-xs text-muted-foreground",children:l("form.parserForm.resultPage.bankEmpty")})]}):e.jsxs("div",{className:"space-y-2.5",children:[Y.map(V=>e.jsx(fo,{bank:V,exporting:O===V.id,canEdit:r,onOpen:()=>ps(V),onExport:()=>Le(V),onDelete:()=>me(V)},V.id)),e.jsx(xr,{page:ae,total:I,pageSize:$t,onPageChange:y,className:"pt-2"})]}),te&&e.jsx("div",{className:"absolute inset-0 z-10 flex items-center justify-center bg-background/40",children:e.jsxs("div",{className:"flex items-center gap-2 rounded-xl bg-card px-4 py-3 text-sm text-muted-foreground shadow-lg",children:[e.jsx(ze,{className:"h-4 w-4 text-primary"})," ",l("form.parserForm.resultPage.bankOpening")]})})]}),e.jsx(Qe,{open:se!==null,onOpenChange:V=>{!V&&!Fe&&me(null)},title:l("form.parserForm.resultPage.bankDeleteTitle"),description:l("form.parserForm.resultPage.bankDeleteConfirm",{name:(se==null?void 0:se.name)??""}),textAction:l("form.parserForm.resultPage.bankDelete"),onAction:He,onCancel:()=>me(null)}),e.jsx(uo,{open:i,onOpenChange:d,session:s,onSaved:V=>a==null?void 0:a(V)})]})}function fo({bank:s,exporting:t,canEdit:r,onOpen:a,onExport:l,onDelete:n}){const i=U(),d=s.status??"completed",m=d==="processing"||d==="pending",p=d==="completed",u={pending:{label:i("form.parserForm.resultPage.bankStatusPending"),className:"bg-gray-100 text-gray-500"},processing:{label:i("form.parserForm.resultPage.bankStatusProcessing"),className:"bg-blue-50 text-blue-500"},completed:{label:i("form.parserForm.resultPage.bankStatusCompleted"),className:"bg-green-50 text-green-600"},error:{label:i("form.parserForm.resultPage.bankStatusError"),className:"bg-red-50 text-red-500"}}[d];return e.jsxs("div",{onClick:()=>p&&a(),className:`rounded-xl border p-3.5 transition-colors ${p?"cursor-pointer hover:border-primary/40 hover:bg-muted/30":"cursor-default"}`,children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"truncate text-sm font-semibold",children:s.name}),e.jsx("p",{className:"mt-0.5 text-xs text-muted-foreground",children:s.total_questions>0?i("form.parserForm.resultPage.bankMetaTotal",{total:s.total_questions,mc:s.num_multiple_choice,essay:s.num_essay}):i("form.parserForm.resultPage.bankMeta",{mc:s.num_multiple_choice,essay:s.num_essay})}),s.created_at&&e.jsx("p",{className:"mt-0.5 text-[11px] text-muted-foreground
6/70",children:xo(s.created_at)})]}),e.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[e.jsxs("span",{className:`flex items-center gap-1 rounded-full px-2 py-0.5 text-[10px] font-semibold ${u.className}`,children:[m&&e.jsx(ze,{className:"h-3 w-3"}),u.label]}),p&&e.jsx(w,{variant:"ghost",size:"icon",className:"h-7 w-7 hover:text-primary",disabled:t,onClick:x=>{x.stopPropagation(),l()},title:i("form.parserForm.resultPage.bankExport"),children:t?e.jsx(ze,{className:"h-4 w-4 text-primary"}):e.jsx(Ts,{className:"h-4 w-4"})}),!m&&r&&e.jsx(w,{variant:"ghost",size:"icon",className:"h-7 w-7 text-muted-foreground hover:text-destructive",onClick:x=>{x.stopPropagation(),n()},title:i("form.parserForm.resultPage.bankDelete"),children:e.jsx(ve,{className:"h-4 w-4"})})]})]}),d==="error"&&s.error_message&&e.jsx("p",{className:"mt-2 line-clamp-2 text-xs text-red-500",children:s.error_message})]})}function ho({question:s}){const t=U();return e.jsxs("div",{className:"space-y-2 rounded-lg border p-3",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[e.jsx("span",{className:`rounded px-1.5 py-0.5 text-[10px] font-medium ${s.type==="multiple_choice"?"bg-blue-100 text-blue-700":"bg-purple-100 text-purple-700"}`,children:s.type==="multiple_choice"?t("form.parserForm.resultPage.questionMC"):t("form.parserForm.resultPage.questionEssay")}),s.level&&e.jsx("span",{className:"rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground",children:s.level})]}),e.jsx("p",{className:"text-sm font-medium",children:s.question}),s.type==="multiple_choice"&&s.options.length>0&&e.jsx("ul",{className:"space-y-0.5 text-sm text-muted-foreground",children:s.options.map((r,a)=>e.jsxs("li",{className:"flex gap-2",children:[e.jsxs("span",{className:"shrink-0 font-medium text-muted-foreground/70",children:[String.fromCharCode(65+a),"."]}),e.jsx("span",{children:r})]},a))}),s.suggested_answer&&e.jsxs("div",{className:"rounded border border-green-100 bg-green-50 p-2",children:[e.jsx("p",{className:"mb-0.5 text-[10px] font-semibold uppercase text-green-700",children:t("form.parserForm.resultPage.questionAnswer")}),e.jsx(Zt,{content:s.suggested_answer})]})]})}function Vt({title:s,rows:t}){const r=U();return t.length===0?null:e.jsxs("div",{className:"overflow-hidden rounded-lg border border-amber-100",children:[e.jsxs("div",{className:"border-b border-amber-100 bg-amber-50 px-3 py-2 text-[11px] font-semibold text-amber-700",children:[s," · ",r("form.parserForm.resultPage.rubricCount",{count:t.length})]}),e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-muted/50 text-left text-[11px] text-muted-foreground",children:[e.jsx("th",{className:"w-1/4 px-3 py-2 font-medium",children:r("form.parserForm.resultPage.rubricCompetency")}),e.jsx("th",{className:"w-20 px-3 py-2 font-medium",children:r("form.parserForm.resultPage.rubricLevel")}),e.jsx("th",{className:"px-3 py-2 font-medium",children:r("form.parserForm.resultPage.rubricCriteria")})]})}),e.jsx("tbody",{children:t.map((a,l)=>e.jsxs("tr",{className:"border-t align-top",children:[e.jsx("td",{className:"px-3 py-2 font-medium",children:a.competency||"â"}),e.jsx("td",{className:"px-3 py-2 text-muted-foreground",children:a.level||"â"}),e.jsx("td",{className:"whitespace-pre-line px-3 py-2 leading-relaxed text-muted-foreground",children:a.criteria})]},l))})]})]})}const go=["bg-red-500","bg-amber-500","bg-green-600"];function as(s){return s==null?"â":s.toFixed(1)}function fe({label:s,value:t,color:r}){return e.jsxs("div",{className:"rounded-lg border bg-muted/40 px-3 py-2.5",children:[e.jsx("p",{className:M("text-xl font-bold",r??"text-foreground"),children:t}),e.jsx("p",{className:"mt-0.5 text-xs text-muted-foreground",children:s})]})}function jo({stats:s}){const t=U();if(!s)return null;const{score:r,score_distribution:a,marked_counts:l,criteria_stats:n,status_counts:i,disqualified:d,completed:m}=s,p=Math.max(1,...a.map(c=>c.count)),g=r.evaluated>0,u=n.length>0,x=[{key:"name",header:t("form.parserForm.resultPage.stats.colCriterion"),minWidth:160,render:c=>e.jsxs("span",{className:"flex items-center gap-1.5 text-foreground",children:[c.name,c.required&&e.jsx("span",{className:"rounded bg-amber-500/15 px-1.5 py-0.5 text-[10px] font-semibold text-amber-600",children:t("form.parserForm.resultPage.stats.required")})]})},{key:"avg",header:t("form.parserForm.resultPage.stats.colAvg"),className:"text-right justify-end",render:c=>e.jsxs("span",{className:"font-medium text-foreground",children:[as(c.average_score),e.jsxs("span",{className:"text-muted-foreground",children:["/",c.max_score]})]})},{key:"passed",header:t("form.parserForm.resultPage.stats.colPassed"),className:"text-right justify-end text-green-600",render:c=>c.passed},{key:"failed",header:t("form.parserForm.resultPage.stats.colFailed"),className:"text-right justify-end text-red-500",render:c=>c.failed}];return e.jsxs("div",{className:"shrink-0 space-y-5",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-2.5 sm:grid-cols-4",children:[e.jsx(fe,{label:t("form.parserForm.resultPage.stats.totalCV"),value:i.total}),e.jsx(fe,{label:t("form.parserForm.resultPage.stats.processed"),value:i.completed,color:"text-green-600"}),e.jsx(fe,{label:t("form.parserForm.resultPage.stats.unprocessed"),value:i.processing+i.pending,color:"text-blue-500"}),e.jsx(fe,{label:t("form.parserForm.resultPage.stats.errored"),value:i.error,color:"text-red-500"})]}),m===0?e.jsx("p",{className:"py-2 text-center text-sm text-muted-foreground",children:t("form.parserForm.resultPage.stats.empty")}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-2 gap-2.5 sm:grid-cols-4",children:[e.jsx(fe,{label:t("form.parserForm.resultPage.stats.average"),value:as(r.average)}),e.jsx(fe,{label:t("form.parserForm.resultPage.stats.max"),value:as(r.max),color:"text-green-600"}),e.jsx(fe,{label:t("form.parserForm.resultPage.stats.min"),value:as(r.min),color:"text-red-500"}),e.jsx(fe,{label:t("form.parserForm.resultPage.stats.median"),value:as(r.median)})]}),g&&e.jsxs("div",{children:[e.jsx("p",{className:"mb-3 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:t("form.parserForm.resultPage.stats.distribution",{count:r.evaluated})}),e.jsx("div",{className:"space-y-2.5",children:a.map((c,N)=>{const j=c.count/p*100,h=r.evaluated?Math.round(c.count/r.evaluated*100):0;return e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"w-28 shrink-0 text-xs text-foreground",children:c.label}),e.jsx("div",{className:"h-5 flex-1 overflow-hidden rounded-md bg-muted",children:e.jsx("div",{className:M("h-full rounded-md transition-all",go[N]??"bg-primary"),style:{width:`${Math.max(j,c.count>0?4:0)}%`}})}),e.jsxs("span",{className:"w-20 shrink-0 text-right text-xs text-muted-foreground",children:[c.count," (",h,"%)"]})]},c.label)})})]}),e.jsxs("div",{children:[e.jsx("p",{className:"mb-3 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:t("form.parserForm.resultPage.stats.markedTitle")}),e.jsxs("div",{className:"grid grid-cols-2 gap-2.5 sm:grid-cols-4",children:[e.jsx(fe,{label:t("form.parserForm.resultPage.stats.shortlisted"),value:l.shortlisted,color:"text-green-600"}),e.jsx(fe,{label:t("form.parserForm.resultPage.stats.reviewing"),value:l.reviewing,color:"text-amber-600"}),e.jsx(fe,{label:t("form.parserForm.resultPage.stats.rejected"),value:l.rejected,color:"text-red-500"}),e.jsx(fe,{label:t("form.parserForm.resultPage.stats.unmarked"),value:l.unmarked})]})]}),u&&e.jsxs("div",{children:[e.jsxs("div",{className:"mb-3 flex flex-wrap items-center justify-between gap-2",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:t("form.parserForm.resultPage.stats.byCriteria")}),d>0&&e.jsx("span",{className:"rounded-full bg-red-500/10 px-2.5 py-0.5 text-xs font-medium text-red-500",children:t("form.parserForm.resultPage.stats.disqualified",{count:d})})]}),e.jsx(qt,{data:n,columns:x,enableSorting:!1})]})]})]})}
6function No(s){if(!s)return null;const t=et($s(s));return t.isValid()?{date:t.format("DD-MM-YYYY"),time:t.format("HH:mm:ss")}:null}const Js="lg:!border-l-0 lg:shadow-[inset_1px_0_0_0_hsl(var(--border))]",bo=[{value:5e3,labelKey:"refresh5s"},{value:6e4,labelKey:"refresh1m"},{value:3e5,labelKey:"refresh5m"},{value:6e5,labelKey:"refresh10m"}],yo=[{value:"shortlisted",Icon:tt,color:"text-green-600",labelKey:"shortlist"},{value:"reviewing",Icon:Wt,color:"text-yellow-600",labelKey:"reviewing"},{value:"rejected",Icon:Se,color:"text-red-600",labelKey:"rejected"}];function wo({cv:s,onMark:t,disabled:r,onOpenChange:a}){const l=U();return e.jsxs(Me,{value:s.marked_as??"none",onValueChange:n=>t(s,n==="none"?null:n),onOpenChange:a,disabled:r,children:[e.jsx(Re,{className:"h-7 w-36 rounded-lg text-xs outline-none focus:ring-0 focus:ring-offset-0",onClick:n=>n.stopPropagation(),children:e.jsx(Te,{})}),e.jsxs(Ae,{children:[e.jsx(H,{value:"none",className:"text-xs",children:e.jsx("span",{className:"text-muted-foreground",children:l("form.parserForm.resultPage.marks.none")})}),yo.map(({value:n,Icon:i,color:d,labelKey:m})=>e.jsx(H,{value:n,className:"text-xs",children:e.jsxs("span",{className:M("flex items-center gap-1.5",d),children:[e.jsx(i,{className:"h-3.5 w-3.5"}),l(`form.parserForm.resultPage.marks.${m}`)]})},n))]})]})}function vo({sessionId:s,onBack:t}={}){var wt;const{sessionId:r}=Kr(),a=s??r,l=zr(),n=U(),{toast:i}=xs(),d=Qr(o=>o.bot.botToken),[m,p]=Gr(),g=()=>t?t():l(`${Wr.chat}/${d}`),[u,x]=f.useState(!1),[c,N]=f.useState("results"),j=10,[h,b]=f.useState(1),[v,E]=f.useState("all"),[F,$]=f.useState("all"),[k,z]=f.useState(""),L=Fs(k,400),[ee,re]=f.useState(5e3),[oe,ie]=f.useState({key:"created_at",direction:"desc"}),ce=f.useCallback(o=>{ie(C=>C.key===o.key?{key:C.key,direction:C.direction==="asc"?"desc":"asc"}:{key:o.key,direction:"desc"})},[]),{session:O,isLoading:ge,isStreaming:se,tick:me,restartStream:ae,refetch:y,patchSession:Y}=Nl(a),I=(O==null?void 0:O.my_role)!=="viewer",T=cl(a,{page:h,pageSize:j,status:v==="all"?void 0:v,markedAs:F==="all"?void 0:F,search:L,sortBy:String(oe.key),sortOrder:oe.direction==="asc"?"asc":void 0});f.useEffect(()=>{b(1)},[L,v,F,oe]);const{stats:Q,refetch:te}=fl(a),je=f.useRef(T.refetch);je.current=T.refetch;const ue=f.useRef(te);ue.current=te,f.useEffect(()=>{me&&(je.current(),ue.current())},[me]);const[Fe,_]=f.useState(!1),A=f.useCallback(async()=>{_(!0);try{await Promise.all([je.current(),ue.current()])}finally{_(!1)}i({variant:"default",description:n("form.parserForm.resultPage.refreshToast"),className:"bg-green-500 text-white"})},[i,n]),B=T.counts.processing>0;f.useEffect(()=>{if(!B)return;const o=setInterval(()=>{je.current(),ue.current()},ee);return()=>clearInterval(o)},[ee,B]);const G=m.get("cv"),P=G?T.items.find(o=>o.id===G)??null:null,{data:J}=ll(a,G??void 0,!P),be=P??(J&&J.id===G?J:null),We=ol(a),xe=f.useCallback((o,C)=>{T.updateItem(o,C),We(o,C)},[T,We]),Ve=o=>{const C=new URLSearchParams(m);C.set("cv",o),p(C)},ps=()=>{const o=new URLSearchParams(m);o.delete("cv"),p(o)},[He,Le]=f.useState(null),Ne=be?T.items.findIndex(o=>o.id===be.id):-1,V=Ne>=0?(h-1)*j+Ne+1:null,de=Ne>0||Ne===0&&h>1,fs=Ne>=0&&(Ne<T.items.length-1||h*j<T.total),Ye=o=>{if(Ne<0)return;const C=T.items[Ne+o];if(C){Ve(C.id);return}o===-1&&h>1?(Le("last"),b(h-1)):o===1&&h*j<T.total&&(Le("first"),b(h+1))};f.useEffect(()=>{if(!He||T.isFetching||be&&T.items.some(K=>K.id===be.id))return;const o=T.items,C=He==="first"?o[0]:o[o.length-1];Le(null),C&&Ve(C.id)},[He,T.isFetching,T.items]);const hs=m.get("qb")==="1",Je=()=>{const o=new URLSearchParams(m);o.set("qb","1"),p(o)},ke=()=>{const o=new URLSearchParams(m);o.delete("qb"),p(o)},{mutateAsync:Ce}=pl(a),{mutateAsync:Ze,isPending:Xe}=jl(a),{mutateAsync:br,isPending:qs}=gl(a),[yr,gs]=f.useState(!1),{mutateAsync:wr,isPending:vr}=ml(a),[qe,Oe]=f.useState(null),[js,Ie]=f.useState(null),ut=f.useRef(0),Fr=o=>{ut.current=o?Number.POSITIVE_INFINITY:Date.now()+250},[xt,Ns]=f.useState(null),[pt,Be]=f.useState(null),{mutateAsync:kr,isPending:Os}=ul(a,O==null?void 0:O.position_name),[Cr,ft]=f.useState(!1),Pr=v==="all"?null:n(`form.parserForm.resultPage.statusBadge.${v}`),_r=async o=>{var C;try{await kr({...o,status:v==="all"?void 0:[v]})}catch(K){const pe=(C=K==null?void 0:K.response)==null?void 0:C.status;throw i({variant:"destructive",description:n(pe===400?"form.parserForm.resultPage.exportNoMatch":"form.parserForm.resultPage.exportFailed")}),K}}
6,{mutateAsync:Sr,isPending:ht}=xl(a),{mutateAsync:Er,isPending:Mr}=bl(a),{mutateAsync:Rr}=hl(a),Tr=async(o,C)=>{try{const K=await Er({cvId:o,body:C});xe(o,{result_json:K.result_json,criteria_evaluation:K.criteria_evaluation}),i({description:n("form.parserForm.resultPage.editSavedHint"),className:"bg-green-500 text-white"})}catch(K){throw i({variant:"destructive",description:n("form.parserForm.resultPage.editFailed")}),K}},Ar=async o=>{xe(o.id,{status:"processing",error_message:null});try{const C=await Rr(o.id);xe(o.id,{status:C.status,match_score:C.match_score,criteria_evaluation:C.criteria_evaluation,result_json:C.result_json,marked_as:C.marked_as,error_message:C.error_message??null}),await Promise.all([T.refetch(),te()])}catch(C){console.error("Reevaluate CV error:",C),xe(o.id,{status:"completed"}),i({variant:"destructive",description:n("form.parserForm.resultPage.reevaluateError")})}},Is=async(o,C)=>{try{await Ce({cvId:o.id,mark:C,projectId:a||""}),xe(o.id,{marked_as:C}),await te()}catch(K){console.error("Mark CV error:",K)}},gt=async o=>{xe(o.id,{interview_status:"processing"});try{const C=await Sr(o.id);xe(o.id,{interview_data:C.interview_data,interview_status:C.interview_status??"completed"})}catch(C){console.error("Generate interview error:",C),xe(o.id,{interview_status:"error"})}},Dr=async()=>{if(!qe)return;const o=qe.id;try{await wr(o),T.removeItem(o),Oe(null),G===o&&ps(),y(),T.refetch(),te()}catch(C){console.error("Delete CV error:",C)}},Bs=async o=>{const C={status:"processing",result_json:null,error_message:null,match_score:null};xe(o.id,C);try{await Ze(o.id),ae(),await te()}catch(K){console.error("Reprocess CV error:",K)}},$r=async()=>{try{await br(),gs(!1),ae(),y(),T.refetch(),te(),i({variant:"default",description:n("form.parserForm.resultPage.reprocessAllToast"),className:"bg-green-500 text-white"})}catch(o){console.error("Reprocess all CVs error:",o)}},bs=(O==null?void 0:O.template_data)??[],Us=(bs.length>0?bs.map(o=>o.name):Object.keys(((wt=T.items[0])==null?void 0:wt.result_json)??{})).filter(o=>!cr.has(o)),es=Object.fromEntries(bs.map(o=>[o.name,o.alias_name||o.name])),{items:Vr,total:Lr,counts:ss}=T,jt=ss.completed,Nt=ss.error,qr=(h-1)*j,ye=o=>o.status==="pending"||o.status==="processing",bt=o=>n("form.parserForm.resultPage.confidence.criterionLabel",{name:o}),Or=[{key:"index",header:"#",className:"w-12 text-muted-foreground",render:(o,C)=>qr+C+1},{key:"file_name",header:n("form.parserForm.resultPage.colCV"),minWidth:200,sortable:!0,sortKey:"file_name",render:o=>{const C=ye(o)?[]:ot(o,Us,es,bt);return e.jsxs("div",{className:"flex items-center gap-1.5",children:[o.is_outdated&&!ye(o)&&e.jsxs(Ks,{children:[e.jsx(zs,{asChild:!0,children:e.jsx("span",{className:"shrink-0 text-amber-500",children:e.jsx(he,{className:"h-3.5 w-3.5"})})}),e.jsx(Qs,{className:"max-w-xs",children:n("form.parserForm.resultPage.outdatedHint")})]}),e.jsx("span",{className:"max-w-65 truncate font-medium",title:o.file_name,children:o.file_name}),C.length>0&&e.jsxs(Ks,{children:[e.jsx(zs,{asChild:!0,children:e.jsxs("span",{className:"inline-flex shrink-0 items-center gap-1 rounded-full bg-amber-100 px-1.5 py-0.5 text-[10px] font-semibold text-amber-700 dark:bg-amber-950/60 dark:text-amber-400",children:[e.jsx(he,{className:"h-3 w-3"}),C.length]})}),e.jsx(Qs,{className:"max-w-xs",children:n("form.parserForm.resultPage.confidence.reviewCountHint",{count:C.length,fields:C.map(K=>K.label).join(", ")})})]})]})}},{key:"match_score",header:n("form.parserForm.resultPage.colScore"),className:"w-28",sortable:!0,sortKey:"match_score",render:o=>ye(o)?e.jsx("span",{className:"text-muted-foreground",children:"â"}):e.jsx("span",{className:Kn(o.match_score),children:o.match_score!=null?`${o.match_score}/10`:"â"})},...Us.map((o,C)=>({key:`field_${o}`,header:es[o]??o,sortable:o!==Ke,minWidth:200,sortKey:o,cellClassName:K=>{var pe;return!ye(K)&&((pe=ls(K,o))!=null&&pe.needs_review)?zn:void 0},render:K=>{var Ft,kt;if(ye(K))return C===0?e.jsx("span",{className:"text-xs italic text-muted-foreground",children:n("form.parserForm.resultPage.processingRow")}):null;const pe=o===Ke?Hn(K,Us,es,bt):(Ft=K.result_json)==null?void 0:Ft[o],Ir=Array.isArray(pe);let ys="â";Ir?ys=pe.length?pe.map(Ct=>`⢠${Ct??"â"}`).join(` 7`):"â":pe!=null&&(ys=String(pe));const vt=((kt=ls(K,o))==null?void 0:kt.needs_review)??!1;return e.jsxs("div",{className:"flex items-start gap-1.5",children:[vt&&e.jsx(os,{className:"mt-0.5"}),e.jsx("div",{className:M("min-w-0 line-clamp-4 whitespace-pre-line break-anywhere",vt?"text-foreground":"text-muted-foreground"),title:ys,children:ys})]})}})),{key:"created_at",header:n("form.parserForm.resultPage.colCreatedAt"),className:"w-44",minWidth:170,sortable:!0,sortKey:"created_at",render:
7o=>{const C=No(o.created_at);return C?e.jsxs("div",{className:"flex flex-col leading-tight text-muted-foreground",title:o.created_at,children:[e.jsx("span",{className:"whitespace-nowrap font-semibold",children:C.date}),e.jsx("span",{className:"whitespace-nowrap text-xs",children:C.time})]}):e.jsx("span",{className:"text-muted-foreground",children:"â"})}},{key:"status",header:n("form.parserForm.resultPage.colStatus"),className:M("w-36 lg:sticky lg:right-[214px] lg:z-20",Js),bodyClassName:"bg-background",sortable:!0,sortKey:"status",render:o=>e.jsx(or,{status:o.status})},{key:"mark",header:n("form.parserForm.resultPage.colMark"),sortable:!0,sortKey:"marked_as",className:M("lg:sticky lg:right-[56px] lg:z-20 pl-4",Js),bodyClassName:"bg-background",render:o=>ye(o)?e.jsx("div",{className:"h-7 w-36","aria-hidden":!0}):e.jsx(wo,{cv:o,onMark:Is,disabled:!I,onOpenChange:Fr})},{key:"actions",header:"",className:M("lg:sticky lg:right-0 lg:z-20 pl-2",Js),bodyClassName:"bg-background",render:o=>ye(o)?e.jsx("div",{className:"w-10","aria-hidden":!0}):e.jsx("div",{className:"flex w-10 items-center justify-center",onClick:C=>C.stopPropagation(),children:e.jsxs(aa,{children:[e.jsx(na,{asChild:!0,children:e.jsx(w,{variant:"ghost",size:"icon",className:"h-8 w-8",title:n("form.parserForm.resultPage.colActions"),children:e.jsx(Aa,{className:"h-4 w-4"})})}),e.jsxs(la,{align:"end",className:"w-48",children:[e.jsxs(rs,{onClick:()=>Ve(o.id),children:[e.jsx(Rs,{className:"mr-2 h-3.5 w-3.5"}),n("form.parserForm.resultPage.viewDetail")]}),I&&o.status==="completed"&&e.jsxs(rs,{onClick:()=>Ns(o),children:[e.jsx(Ms,{className:"mr-2 h-3.5 w-3.5"}),n("form.parserForm.resultPage.editResult")]}),I&&o.status==="completed"&&e.jsxs(rs,{onClick:()=>Be(o),children:[e.jsx(Ht,{className:"mr-2 h-3.5 w-3.5"}),n("form.parserForm.resultPage.reevaluate")]}),I&&e.jsxs(rs,{onClick:()=>Bs(o),disabled:Xe,children:[e.jsx(Gt,{className:"mr-2 h-3.5 w-3.5"}),n("form.parserForm.resultPage.reprocess")]}),I&&e.jsxs(e.Fragment,{children:[e.jsx(oa,{}),e.jsxs(rs,{className:"text-destructive focus:text-destructive",onClick:()=>Oe(o),children:[e.jsx(ve,{className:"mr-2 h-3.5 w-3.5"}),n("form.parserForm.resultPage.deleteCV")]})]})]})]})})}].map(o=>{const C=o.key.startsWith("field_");return{...o,className:M("justify-start text-left",o.className),render:o.render&&!C?(K,pe)=>e.jsx("div",{className:"max-w-full truncate",children:o.render(K,pe)}):o.render}}),yt=e.jsxs(e.Fragment,{children:[e.jsx(Qe,{open:qe!==null,onOpenChange:o=>{!o&&!vr&&Oe(null)},title:n("form.parserForm.resultPage.deleteCVTitle"),description:n("form.parserForm.resultPage.deleteCVConfirm",{name:(qe==null?void 0:qe.file_name)??""}),textAction:n("form.parserForm.resultPage.deleteCV"),onAction:Dr,onCancel:()=>Oe(null)}),e.jsx(Kl,{cv:xt,templateFields:bs,open:xt!==null,onOpenChange:o=>{o||Ns(null)},saving:Mr,onSave:Tr}),e.jsx(Qe,{open:pt!==null,onOpenChange:o=>{o||Be(null)},title:n("form.parserForm.resultPage.reevaluateConfirmTitle"),description:n("form.parserForm.resultPage.reevaluateConfirmDesc"),textAction:n("form.parserForm.resultPage.reevaluate"),onAction:()=>{const o=pt;Be(null),o&&Ar(o)},onCancel:()=>Be(null)})]});return ge?e.jsx(nl,{className:"h-full"}):O?be?e.jsxs(e.Fragment,{children:[e.jsx(Tl,{cv:be,fieldLabel:es,onBack:ps,onMark:Is,onReprocess:Bs,isReprocessing:Xe,onGenerateInterview:gt,isGeneratingInterview:ht,canEdit:I,onEdit:Ns,onDelete:Oe,onReevaluate:Be,onPrevCV:de?()=>Ye(-1):void 0,onNextCV:fs?()=>Ye(1):void 0,cvPosition:V,cvTotal:T.total,projectId:a}),yt]}):hs?e.jsx(po,{session:O,onBack:ke,canEdit:I,onSessionUpdated:o=>{Y(o),y()}}):e.jsxs("div",{className:"flex h-full flex-col bg-background",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 border-b bg-background/95 px-3 py-3 backdrop-blur sm:px-6",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-2 sm:gap-3",children:[e.jsx(w,{variant:"ghost",size:"icon",className:"h-8 w-8 shrink-0",onClick:g,children:e.jsx(ks,{className:"h-4 w-4"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"truncate text-sm font-semibold leading-tight sm:text-base",children:O.position_name}),e.jsxs("p",{className:"truncate text-xs text-muted-foreground",children:[jt,"/",ss.total," CV",Nt>0?` · ${n("form.parserForm.resultPage.errorCount",{count:Nt})}`:""," ","· ",O.output_language.toUpperCase(),se&&ss.total>0&&e.jsxs("span",{className:"ml-2 inline-flex items-center gap-1 text-blue-500",children:[e.jsx(_e,{className:"h-3 w-3"}),n("form.parserForm.resultPage.streaming")]})]})]})]}),e.jsxs("div",{className:"flex shrink-0 items-center gap-1.5 sm:gap-2",children:[e.jsxs(w,{variant:"outline",className:"hidden",size:"sm",onClick:()=>x(!0),children:[e.jsx(Jt,{className:"h-3.5 w-3.5 sm:mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:n("form.parserForm.members.title")})]}),e.jsxs(w,{variant:"outline",size:"sm",className:"",onClick:Je,children:[e.jsx(_s,{className:"h-3.5 w-3.5 sm:mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:n("form.parserForm.resultPage.questionBank")})]}),I&&ss.total>0&&e.jsxs(w,{variant:"outline",size:"sm",className:"",onClick:()=>gs(!0),disabled:qs,children:[qs?e.jsx(_e,{className:"h-3.5 w-3.5 sm:mr-1.5 text-primary"}):e.jsx(Da,{className:"h-3.5 w-3.5 sm:mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:n("form.parserForm.resultPage.reprocessAll")})]}),e.jsxs(w,{variant:"outline",size:"sm",className:"",onClick:()=>ft(!0),disabled:Os||jt===0,children:[Os?e.jsx(_e,{className:"h-3.5 w-3.5 sm:mr-1.5 text-primary"}):e.jsx(Ts,{className:"h-3.5 w-3.5 sm:mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:n("form.parserForm.resultPage.exportExcel")})]})]})]}),e.jsxs(Ot,{value:c,onValueChange:o=>N(o),className:"flex min-h-0 flex-1 flex-col",children:[e.jsxs(It,{className:M("mx-3 mt-4 grid w-fit shrink-0 sm:mx-6 rounded-2xl",I?"grid-cols-5":"grid-cols-3"),children:[e.jsxs(Pe,{value:"stats",className:"gap-1.5 rounded-2xl",children:[e.jsx($a,{className:"h-3.5 w-3.5"}),n("form.parserForm.resultPage.tabStats")]}),e.jsxs(Pe,{value:"results",className:"gap-1.5 rounded-2xl",children:[e.jsx(_s,{className:"h-3.5 w-3.5"}),n("form.parserForm.resultPage.tabResults")]}),I&&e.jsxs(Pe,{value:"add",className:"gap-1.5 rounded-2xl",children:[e.jsx($e,{className:"h-3.5 w-3.5"}),n("form.parserForm.resultPage.addCV")]}),e.jsxs(Pe,{value:"history",className:"gap-1.5 rounded-2xl",children:[e.jsx(zt,{className:"h-3.5 w-3.5"}),n("form.parserForm.resultPage.tabProjectHistory")]}),I&&e.jsxs(Pe,{value:"settings",className:"gap-1.5 rounded-2xl",children:[e.jsx(Va,{className:"h-3.5 w-3.5"}),n("form.parserForm.resultPage.editConfig")]})]}),c==="results"?e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-3 px-3 py-4 sm:px-6",children:[e.jsxs("div",{className:"flex shrink-0 flex-col gap-2 md:flex-row md:flex-wrap md:items-center",children:[e.jsxs("div",{className:"relative w-full min-w-0 md:max-w-xs md:flex-1",children:[e.jsx(Cs,{className:"absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground"}),e.jsx(le,{value:k,onChange:o=>z(o.target.value),placeholder:n("form.parserForm.resultPage.searchPlaceholder"),className:"h-9 w-full pl-8 rounded-2xl"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(Me,{value:v,onValueChange:o=>E(o),children:[e.jsx(Re,{className:"h-9 min-w-0 flex-1 rounded-2xl focus:ring-offset-0 focus:ring-0 md:w-4
70 md:flex-none",children:e.jsx(Te,{})}),e.jsxs(Ae,{children:[e.jsx(H,{value:"all",children:n("form.parserForm.resultPage.filterAll")}),e.jsx(H,{value:"completed",children:e.jsx("span",{className:"text-green-600",children:n("form.parserForm.resultPage.statusBadge.completed")})}),e.jsx(H,{value:"processing",children:e.jsx("span",{className:"text-blue-500",children:n("form.parserForm.resultPage.statusBadge.processing")})}),e.jsx(H,{value:"pending",children:e.jsx("span",{className:"text-gray-500",children:n("form.parserForm.resultPage.statusBadge.pending")})}),e.jsx(H,{value:"error",children:e.jsx("span",{className:"text-red-500",children:n("form.parserForm.resultPage.statusBadge.error")})})]})]}),e.jsxs(Me,{value:F,onValueChange:o=>$(o),children:[e.jsx(Re,{className:"h-9 min-w-0 flex-1 rounded-2xl focus:ring-offset-0 focus:ring-0 md:w-40 md:flex-none",children:e.jsx(Te,{})}),e.jsxs(Ae,{children:[e.jsx(H,{value:"all",children:n("form.parserForm.resultPage.filterMarkedAll")}),e.jsx(H,{value:"shortlisted",children:e.jsx("span",{className:"text-green-600",children:n("form.parserForm.resultPage.marks.shortlist")})}),e.jsx(H,{value:"reviewing",children:e.jsx("span",{className:"text-yellow-600",children:n("form.parserForm.resultPage.marks.reviewing")})}),e.jsx(H,{value:"rejected",children:e.jsx("span",{className:"text-red-600",children:n("form.parserForm.resultPage.marks.rejected")})}),e.jsx(H,{value:"unmarked",children:e.jsx("span",{className:"text-muted-foreground",children:n("form.parserForm.resultPage.marks.none")})})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2 md:ml-auto",children:[e.jsxs(Ks,{children:[e.jsx(zs,{asChild:!0,children:e.jsx("button",{type:"button",className:"text-muted-foreground transition-colors hover:text-foreground","aria-label":n("form.parserForm.resultPage.autoRefresh"),children:e.jsx(La,{className:"h-4 w-4"})})}),e.jsx(Qs,{className:"max-w-xs",children:n("form.parserForm.resultPage.autoRefreshHint")})]}),e.jsxs(Me,{value:String(ee),onValueChange:o=>re(Number(o)),children:[e.jsx(Re,{className:"h-9 min-w-0 flex-1 rounded-2xl focus:ring-offset-0 focus:ring-0 md:w-32 md:flex-none",title:n("form.parserForm.resultPage.autoRefresh"),children:e.jsx(Te,{})}),e.jsx(Ae,{children:bo.map(({value:o,labelKey:C})=>e.jsx(H,{value:String(o),children:n(`form.parserForm.resultPage.${C}`)},o))})]}),e.jsx(w,{variant:"outline",size:"icon",className:"h-9 w-9 shrink-0 rounded-2xl",onClick:A,disabled:T.isFetching,title:n("form.parserForm.resultPage.refreshNow"),children:e.jsx(rt,{className:M("h-3.5 w-3.5",T.isFetching&&"animate-spin")})})]})]}),e.jsxs("div",{className:"relative flex min-h-0 flex-1 flex-col",children:[e.jsx(qt,{data:Vr,columns:Or,emptyMessage:n("form.parserForm.resultPage.noResults"),enableSorting:!0,sortMode:"server",sortConfig:oe,onSortChange:ce,columnBorders:!0,fillHeight:!0,rowHeight:56,rowClickClassName:"hover:bg-sidebar-accent [&:hover>td]:bg-sidebar-accent transition-none",rowClassName:o=>o.is_outdated&&!ye(o)?"[&>td]:bg-amber-50 dark:[&>td]:bg-amber-950/40":void 0,onRowClick:o=>{Date.now()<ut.current||ye(o)||Ie(o)}}),(T.isLoading||Fe)&&e.jsx("div",{className:"absolute inset-0 z-30 flex items-center justify-center rounded-md bg-background/60 backdrop-blur-[1px]",children:e.jsx(_e,{className:"h-6 w-6 text-primary"})})]})]}),e.jsx("div",{className:"shrink-0 border-t px-3 py-2 sm:px-6",children:e.jsx(xr,{page:h,total:Lr,pageSize:j,onPageChange:b})})]}):c==="stats"?e.jsx("div",{className:"custom-scrollbar flex min-h-0 flex-1 flex-col overflow-y-auto px-3 py-4 sm:px-6",children:e.jsx(jo,{stats:Q})}):c==="history"?e.jsx("div",{className:"custom-scrollbar flex min-h-0 flex-1 flex-col overflow-y-auto px-3 py-4 sm:px-6",children:a&&e.jsx(hr,{projectId:a})}):c==="settings"?e.jsx("div",{className:"flex min-h-0 flex-1 flex-col",children:e.jsx(to,{session:O,onSaved:o=>{Y(o),y(),T.refetch()}})}):e.jsx("div",{className:"flex min-h-0 flex-1 flex-col px-3 py-4 sm:px-6",children:e.jsx(wl,{sessionId:a,onAdded:()=>{y(),T.refetch(),te(),N("results")}})})]}),e.jsx(Ll,{cv:js?T.items.find(o=>o.id===js.id)??js:null,open:js!==null,onOpenChange:o=>{o||Ie(null)},fieldLabel:es,onMark:Is,onReprocess:Bs,isReprocessing:Xe,onGenerateInterview:gt,isGeneratingInterview:ht,canEdit:I,projectId:a,onViewDetail:o=>{Ie(null),Ve(o.id)},onEdit:o=>{Ie(null),Ns(o)},onDelete:o=>{Ie(null),Oe(o)},onReevaluate:o=>{Ie(null),Be(o)}}),yt,e.jsx(Qe,{open:yr,onOpenChange:o=>{!o&&!qs&&gs(!1)},title:n("form.parserForm.resultPage.reprocessAllTitle"),description:n("form.parserForm.resultPage.reprocessAllConfirm"),textAction:n("form.parserForm.resultPage.reprocessAll"),onAction:$r,onCancel:()=>gs(!1)}),e.jsx(Ql,{open:Cr,onOpenChange:ft,onExport:_r,isExporting:Os,initialMark:F,statusNote:Pr}),e.jsx(Yl,{open:u,onOpenChange:x,session:O})]}):e.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-4 text-muted-foreground",children:[e.jsx(he,{className:"h-8 w-8"}),e.jsx("p",{children:n("form.parserForm.resultPage.loadError")}),e.jsx(w,{variant:"outline",className:"",onClick:g,children:n("form.parserForm.resultPage.back")})]})}const zi=Object.freeze(Object.defineProperty({__proto__:null,default:vo},Symbol.toStringTag,{value:"Module"}));
7export{lr as C,Xn as N,tr as P,D as S,xs as a,$n as b,Bi as c,Ui as d,Ki as e,Bn as f,Ii as g,$s as h,we as i,Zn as j,Jn as k,it as l,ur as m,rl as n,el as o,vo as p,zi as q,U as u};
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.