import{_ as ke,r as i,k as ge,c as Q,o as Ce,a as o,b as t,f as u,w as v,u as c,l as he,v as be,F as R,g as A,n as Y,t as a,h as n,i as p,e as _,m as Z,p as Ie}from"./index-BB0X_WMV.js";import{C as we,e as B,p as xe}from"./index-09HB4Lmg.js";import{M as ee}from"./Modal-iKIn6dGt.js";import{F as U}from"./FormInput-BwPgkOAn.js";import{B as k}from"./Button-CoXLXkk7.js";import{B as te}from"./Badge-DzuJKoKk.js";const Ve={class:"error-history"},Pe={class:"layout-container"},Ne={class:"tree-panel"},Re={class:"tree-header"},Ae={class:"server-select"},Fe=["value"],$e={class:"tree-content"},Ee={key:0,class:"tree-loading"},De={key:1,class:"tree-empty"},Le={key:2,class:"tree-list"},Te={class:"tree-count"},Be=["onClick"],Se={class:"tree-toggle"},ze=["title"],Me={class:"tree-count"},Oe={key:0,class:"tree-files"},Ue=["onClick","title"],We={class:"tree-label"},He={class:"tree-count-detail"},Xe={key:0,class:"critical"},je={key:1,class:"error"},qe={key:2,class:"warn"},Ge=["onClick"],Je={class:"list-panel"},Ke={class:"card-header-content"},Qe={key:0},Ye={key:1},Ze={class:"header-actions"},et={class:"filters"},tt={class:"filter-row"},lt={class:"filter-actions"},st={class:"results-section"},at={class:"results-header"},ot={key:0},nt={class:"table-wrapper"},rt={key:0,class:"error-table"},it={class:"sort-icon"},dt={class:"sort-icon"},ut={class:"sort-icon"},vt={class:"sort-icon"},ct={class:"col-time"},pt={class:"col-severity"},mt={class:"col-pattern"},yt={class:"col-summary"},ft=["onClick"],_t={key:0,class:"empty-result"},kt={key:1,class:"loading-result"},gt={key:2,class:"pagination"},Ct={class:"page-info"},ht={key:0,class:"error-detail"},bt={class:"detail-grid"},It={class:"detail-item"},wt={class:"detail-item"},xt={class:"detail-item"},Vt={class:"detail-item"},Pt={class:"file-path"},Nt={class:"detail-item"},Rt={class:"detail-item"},At={class:"detail-section"},Ft={class:"summary-box"},$t={class:"detail-section"},Et={class:"context-box"},Dt=100,Lt={__name:"ErrorLogs",setup(Tt){const h=i([]),F=i(!1),b=i(null),I=i([]),d=i(null),$=i(!1),x=i([]),S=i(0),E=i(0),y=i(0),V=i("occurredAt"),w=i("desc"),r=ge({patternId:"",severity:"",keyword:""}),W=i([]),le=[{value:"",label:"전체"},{value:"CRITICAL",label:"CRITICAL"},{value:"ERROR",label:"ERROR"},{value:"WARN",label:"WARN"}],P=i(!1),f=i(null),N=i(!1),H=i(null),z=i(null),X=i(""),M=i(!1),j=i(null),D=Q(()=>b.value?h.value.filter(l=>l.serverId===b.value):h.value),se=Q(()=>D.value.reduce((l,e)=>l+e.totalErrorCount,0)),O=async()=>{F.value=!0;try{h.value=await B.getTree(),h.value.length>0&&h.value[0].paths.length>0&&(I.value=[h.value[0].serverId+":"+h.value[0].paths[0].path])}catch(l){console.error("Failed to load tree:",l)}finally{F.value=!1}},ae=async()=>{try{const l=await xe.getAll();W.value=[{value:"",label:"전체"},...l.map(e=>({value:e.id,label:e.name}))]}catch(l){console.error("Failed to load options:",l)}},oe=()=>{d.value=null,I.value=[];const l=D.value[0];l&&l.paths.length>0&&(I.value=[l.serverId+":"+l.paths[0].path]),y.value=0,g()},ne=l=>{const e=I.value.indexOf(l);e>=0?I.value.splice(e,1):I.value.push(l)},re=()=>{d.value=null,y.value=0,g()},ie=(l,e)=>{d.value={serverId:l,...e},y.value=0,g()},de=l=>l.length>30?"..."+l.slice(-27):l,L=l=>{V.value===l?w.value=w.value==="asc"?"desc":"asc":(V.value=l,w.value="desc"),y.value=0,g()},T=l=>V.value!==l?"↕":w.value==="asc"?"↑":"↓",g=async()=>{$.value=!0;try{const l={page:y.value,size:Dt,sort:`${V.value},${w.value}`};d.value?(l.serverId=d.value.serverId,l.filePath=d.value.filePath):b.value&&(l.serverId=b.value),r.patternId&&(l.patternId=r.patternId),r.severity&&(l.severity=r.severity),r.keyword&&(l.keyword=r.keyword);const e=await B.search(l);x.value=e.content||[],S.value=e.totalElements||0,E.value=e.totalPages||0}catch(l){console.error("Failed to search errors:",l),x.value=[]}finally{$.value=!1}},ue=()=>{r.patternId="",r.severity="",r.keyword="",V.value="occurredAt",w.value="desc",y.value=0,g()},q=l=>{y.value=l,g()},ve=(l,e)=>{H.value=l,z.value=e.filePath,X.value=e.fileName,N.value=!0,Ie(()=>{var s;(s=j.value)==null||s.focus()})},ce=async()=>{M.value=!0;try{await B.deleteByFile(H.value,z.value),N.value=!1,d.value&&d.value.filePath===z.value&&(d.value=null),await O(),g()}catch(l){console.error("Failed to delete:",l),alert("삭제 실패")}finally{M.value=!1}},pe=async l=>{try{f.value=await B.getById(l.id),P.value=!0}catch{f.value=l,P.value=!0}},G=()=>{const l=new URLSearchParams;return d.value?(l.append("serverId",d.value.serverId),l.append("filePath",d.value.filePath)):b.value&&l.append("serverId",b.value),r.patternId&&l.append("patternId",r.patternId),r.severity&&l.append("severity",r.severity),r.keyword&&l.append("keyword",r.keyword),l.toString()},me=()=>{const l=G();window.open(`/api/export/html?${l}`,"_blank")},ye=()=>{const l=G();window.open(`/api/export/txt?${l}`,"_blank")},J=l=>l?new Date(l).toLocaleString("ko-KR",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}):"-",fe=(l,e)=>l?l.length>e?l.substring(0,e)+"...":l:"",K=l=>({CRITICAL:"critical",ERROR:"error",WARN:"warn"})[l]||"default";return Ce(()=>{O(),ae(),g()}),(l,e)=>(n(),o("div",Ve,[t("div",Pe,[t("div",Ne,[t("div",Re,[e[15]||(e[15]=t("h4",null,"파일 탐색",-1)),u(c(k),{size:"sm",variant:"secondary",onClick:O,loading:F.value},{default:v(()=>[...e[14]||(e[14]=[p(" 새로고침 ",-1)])]),_:1},8,["loading"])]),t("div",Ae,[he(t("select",{"onUpdate:modelValue":e[0]||(e[0]=s=>b.value=s),onChange:oe},[e[16]||(e[16]=t("option",{value:null},"전체 서버",-1)),(n(!0),o(R,null,A(h.value,s=>(n(),o("option",{key:s.serverId,value:s.serverId},a(s.serverName)+" ("+a(s.totalErrorCount)+"건) ",9,Fe))),128))],544),[[be,b.value]])]),t("div",$e,[F.value?(n(),o("div",Ee,"로딩중...")):D.value.length===0?(n(),o("div",De," 분석된 파일이 없습니다. ")):(n(),o("div",Le,[t("div",{class:Y(["tree-item tree-all",{active:!d.value}]),onClick:re},[e[17]||(e[17]=t("span",{class:"tree-icon"},"📊",-1)),e[18]||(e[18]=t("span",{class:"tree-label"},"전체",-1)),t("span",Te,a(se.value)+"건",1)],2),(n(!0),o(R,null,A(D.value,s=>(n(),o("div",{key:s.serverId},[(n(!0),o(R,null,A(s.paths,C=>(n(),o("div",{key:C.path,class:"tree-path"},[t("div",{class:"tree-item tree-path-item",onClick:m=>ne(s.serverId+":"+C.path)},[t("span",Se,a(I.value.includes(s.serverId+":"+C.path)?"▼":"▶"),1),e[19]||(e[19]=t("span",{class:"tree-icon"},"📁",-1)),t("span",{class:"tree-label",title:C.path},a(de(C.path)),9,ze),t("span",Me,a(C.totalErrorCount)+"건",1)],8,Be),I.value.includes(s.serverId+":"+C.path)?(n(),o("div",Oe,[(n(!0),o(R,null,A(C.files,m=>(n(),o("div",{key:m.filePath,class:Y(["tree-item tree-file-item",{active:d.value&&d.value.filePath===m.filePath&&d.value.serverId===s.serverId}]),onClick:_e=>ie(s.serverId,m),title:m.fileName},[e[20]||(e[20]=t("span",{class:"tree-icon"},"📄",-1)),t("span",We,a(m.fileName),1),t("span",He,[m.criticalCount?(n(),o("span",Xe,a(m.criticalCount),1)):_("",!0),m.errorLevelCount?(n(),o("span",je,a(m.errorLevelCount),1)):_("",!0),m.warnCount?(n(),o("span",qe,a(m.warnCount),1)):_("",!0)]),t("button",{class:"tree-delete",onClick:Z(_e=>ve(s.serverId,m),["stop"]),title:"삭제"}," 🗑️ ",8,Ge)],10,Ue))),128))])):_("",!0)]))),128))]))),128))]))])]),t("div",Je,[u(c(we),null,{header:v(()=>[t("div",Ke,[t("h3",null,[d.value?(n(),o("span",Qe,a(d.value.fileName),1)):(n(),o("span",Ye,"전체 에러 이력"))]),t("div",Ze,[u(c(k),{size:"sm",variant:"secondary",onClick:me},{default:v(()=>[...e[21]||(e[21]=[p("HTML",-1)])]),_:1}),u(c(k),{size:"sm",variant:"secondary",onClick:ye},{default:v(()=>[...e[22]||(e[22]=[p("TXT",-1)])]),_:1})])])]),default:v(()=>[t("div",et,[t("div",tt,[u(c(U),{modelValue:r.patternId,"onUpdate:modelValue":e[1]||(e[1]=s=>r.patternId=s),label:"패턴",type:"select",options:W.value,placeholder:"전체"},null,8,["modelValue","options"]),u(c(U),{modelValue:r.severity,"onUpdate:modelValue":e[2]||(e[2]=s=>r.severity=s),label:"심각도",type:"select",options:le,placeholder:"전체"},null,8,["modelValue"]),u(c(U),{modelValue:r.keyword,"onUpdate:modelValue":e[3]||(e[3]=s=>r.keyword=s),label:"키워드",placeholder:"검색어 입력..."},null,8,["modelValue"]),t("div",lt,[u(c(k),{onClick:g},{default:v(()=>[...e[23]||(e[23]=[p("검색",-1)])]),_:1}),u(c(k),{variant:"secondary",onClick:ue},{default:v(()=>[...e[24]||(e[24]=[p("초기화",-1)])]),_:1})])])]),t("div",st,[t("div",at,[S.value>0?(n(),o("span",ot,"총 "+a(S.value)+"건",1)):_("",!0)]),t("div",nt,[x.value.length>0?(n(),o("table",rt,[t("thead",null,[t("tr",null,[t("th",{class:"col-time sortable",onClick:e[4]||(e[4]=s=>L("occurredAt"))},[e[25]||(e[25]=p(" 발생시간 ",-1)),t("span",it,a(T("occurredAt")),1)]),t("th",{class:"col-severity sortable",onClick:e[5]||(e[5]=s=>L("severity"))},[e[26]||(e[26]=p(" 심각도 ",-1)),t("span",dt,a(T("severity")),1)]),t("th",{class:"col-pattern sortable",onClick:e[6]||(e[6]=s=>L("patternName"))},[e[27]||(e[27]=p(" 패턴 ",-1)),t("span",ut,a(T("patternName")),1)]),t("th",{class:"col-summary sortable",onClick:e[7]||(e[7]=s=>L("summary"))},[e[28]||(e[28]=p(" 요약 ",-1)),t("span",vt,a(T("summary")),1)])])]),t("tbody",null,[(n(!0),o(R,null,A(x.value,s=>(n(),o("tr",{key:s.id},[t("td",ct,a(J(s.occurredAt)),1),t("td",pt,[u(c(te),{variant:K(s.severity)},{default:v(()=>[p(a(s.severity),1)]),_:2},1032,["variant"])]),t("td",mt,a(s.patternName),1),t("td",yt,[t("a",{href:"#",class:"summary-link",onClick:Z(C=>pe(s),["prevent"])},a(fe(s.summary,100)),9,ft)])]))),128))])])):_("",!0)]),x.value.length===0&&!$.value?(n(),o("div",_t,[...e[29]||(e[29]=[t("p",null,"검색 결과가 없습니다.",-1)])])):_("",!0),$.value?(n(),o("div",kt,[...e[30]||(e[30]=[t("p",null,"로딩중...",-1)])])):_("",!0),E.value>1?(n(),o("div",gt,[u(c(k),{size:"sm",variant:"secondary",disabled:y.value===0,onClick:e[8]||(e[8]=s=>q(y.value-1))},{default:v(()=>[...e[31]||(e[31]=[p(" 이전 ",-1)])]),_:1},8,["disabled"]),t("span",Ct,a(y.value+1)+" / "+a(E.value),1),u(c(k),{size:"sm",variant:"secondary",disabled:y.value>=E.value-1,onClick:e[9]||(e[9]=s=>q(y.value+1))},{default:v(()=>[...e[32]||(e[32]=[p(" 다음 ",-1)])]),_:1},8,["disabled"])])):_("",!0)])]),_:1})])]),u(c(ee),{modelValue:P.value,"onUpdate:modelValue":e[11]||(e[11]=s=>P.value=s),title:"에러 상세",width:"900px"},{footer:v(()=>[u(c(k),{variant:"secondary",onClick:e[10]||(e[10]=s=>P.value=!1)},{default:v(()=>[...e[41]||(e[41]=[p("닫기",-1)])]),_:1})]),default:v(()=>[f.value?(n(),o("div",ht,[t("div",bt,[t("div",It,[e[33]||(e[33]=t("label",null,"서버",-1)),t("span",null,a(f.value.serverName),1)]),t("div",wt,[e[34]||(e[34]=t("label",null,"심각도",-1)),u(c(te),{variant:K(f.value.severity)},{default:v(()=>[p(a(f.value.severity),1)]),_:1},8,["variant"])]),t("div",xt,[e[35]||(e[35]=t("label",null,"패턴",-1)),t("span",null,a(f.value.patternName),1)]),t("div",Vt,[e[36]||(e[36]=t("label",null,"파일",-1)),t("span",Pt,a(f.value.filePath),1)]),t("div",Nt,[e[37]||(e[37]=t("label",null,"라인",-1)),t("span",null,a(f.value.lineNumber),1)]),t("div",Rt,[e[38]||(e[38]=t("label",null,"발생시간",-1)),t("span",null,a(J(f.value.occurredAt)),1)])]),t("div",At,[e[39]||(e[39]=t("label",null,"요약",-1)),t("div",Ft,a(f.value.summary),1)]),t("div",$t,[e[40]||(e[40]=t("label",null,"컨텍스트",-1)),t("pre",Et,a(f.value.context),1)])])):_("",!0)]),_:1},8,["modelValue"]),u(c(ee),{modelValue:N.value,"onUpdate:modelValue":e[13]||(e[13]=s=>N.value=s),title:"파일 삭제",width:"400px"},{footer:v(()=>[u(c(k),{variant:"secondary",onClick:e[12]||(e[12]=s=>N.value=!1)},{default:v(()=>[...e[42]||(e[42]=[p("취소",-1)])]),_:1}),u(c(k),{ref_key:"deleteBtn",ref:j,variant:"danger",onClick:ce,loading:M.value},{default:v(()=>[...e[43]||(e[43]=[p("삭제",-1)])]),_:1},8,["loading"])]),default:v(()=>[t("p",null,a(X.value)+" 파일의 분석 결과를 삭제하시겠습니까?",1),e[44]||(e[44]=t("p",{class:"warning-text"},"에러 로그와 스캔 기록이 삭제되어 재분석이 가능해집니다.",-1))]),_:1},8,["modelValue"])]))}},Wt=ke(Lt,[["__scopeId","data-v-1cff7c91"]]);export{Wt as default};