update 22

This commit is contained in:
2026-01-07 01:14:51 +09:00
parent 57c3eea429
commit 66e8e21302
220 changed files with 2911 additions and 700 deletions

View File

@@ -0,0 +1 @@
import{_ as r,d as m,a as d,e as c,b as t,t as u,p as n,j as f,l as p,T as _,h as a,i as h,n as y}from"./index-D2VmGkBi.js";import"./index-Bx7gSOle.js";const v={class:"modal-header"},b={class:"modal-body"},g={key:0,class:"modal-footer"},B={__name:"Modal",props:{modelValue:{type:Boolean,default:!1},title:{type:String,default:""},width:{type:String,default:"500px"}},emits:["update:modelValue","close"],setup(e,{emit:s}){const o=s,i=()=>{o("update:modelValue",!1),o("close")};return(l,S)=>(a(),m(_,{to:"body"},[e.modelValue?(a(),d("div",{key:0,class:"modal-overlay",onClick:p(i,["self"])},[t("div",{class:"modal",style:f({width:e.width})},[t("div",v,[t("h3",null,u(e.title),1),t("button",{class:"close-btn",onClick:i},"×")]),t("div",b,[n(l.$slots,"default",{},void 0)]),l.$slots.footer?(a(),d("div",g,[n(l.$slots,"footer",{},void 0)])):c("",!0)],4)])):c("",!0)]))}},w=r(B,[["__scopeId","data-v-90993dd3"]]),k={__name:"Badge",props:{text:String,variant:{type:String,default:"default"}},setup(e){return(s,o)=>(a(),d("span",{class:y(["badge",`badge-${e.variant}`])},[n(s.$slots,"default",{},()=>[h(u(e.text),1)])],2))}},x=r(k,[["__scopeId","data-v-b7bd2350"]]);export{x as B,w as M};

View File

@@ -0,0 +1 @@
.dashboard-header[data-v-af1336d8]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.dashboard-header h2[data-v-af1336d8]{margin:0}.header-actions[data-v-af1336d8]{display:flex;gap:8px}.server-grid[data-v-af1336d8]{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:20px;margin-bottom:24px}.server-card[data-v-af1336d8]{transition:box-shadow .2s}.server-card[data-v-af1336d8]:hover{box-shadow:0 4px 12px #00000026}.server-header[data-v-af1336d8]{display:flex;justify-content:space-between;align-items:center}.server-title[data-v-af1336d8]{display:flex;align-items:center;gap:10px}.server-title h4[data-v-af1336d8]{margin:0;font-size:16px}.server-info[data-v-af1336d8]{margin-bottom:12px}.info-row[data-v-af1336d8]{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid #f0f0f0}.info-row[data-v-af1336d8]:last-child{border-bottom:none}.info-row .label[data-v-af1336d8]{color:#666;font-size:13px}.info-row .value[data-v-af1336d8]{font-weight:500}.info-row .value.has-error[data-v-af1336d8]{color:#e74c3c}.progress-section[data-v-af1336d8]{padding:12px;background:#f8f9fa;border-radius:8px;margin-top:12px}.progress-header[data-v-af1336d8]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.status-text[data-v-af1336d8]{font-size:13px;color:#333}.progress-bar-container[data-v-af1336d8]{height:8px;background:#e0e0e0;border-radius:4px;overflow:hidden;margin-bottom:8px}.progress-bar[data-v-af1336d8]{height:100%;background:#3498db;transition:width .3s}.progress-details[data-v-af1336d8]{display:flex;justify-content:space-between;font-size:12px;color:#666}.empty-card[data-v-af1336d8]{text-align:center}.empty-content[data-v-af1336d8]{padding:40px 20px}.empty-content p[data-v-af1336d8]{margin-bottom:16px;color:#666}.stats-section[data-v-af1336d8]{margin-bottom:24px}.stats-grid[data-v-af1336d8]{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:20px}.stats-card h3[data-v-af1336d8]{margin:0;font-size:16px}.stats-table-wrapper[data-v-af1336d8]{max-height:300px;overflow-y:auto}.stats-table[data-v-af1336d8]{width:100%;border-collapse:collapse;font-size:13px}.stats-table th[data-v-af1336d8],.stats-table td[data-v-af1336d8]{padding:10px 8px;text-align:left;border-bottom:1px solid #eee}.stats-table th[data-v-af1336d8]{background:#f8f9fa;font-weight:600;position:sticky;top:0}.file-path-cell[data-v-af1336d8]{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:monospace;font-size:12px}.count-col[data-v-af1336d8]{width:70px;text-align:center!important}.count-col.critical[data-v-af1336d8]{color:#9b59b6;font-weight:600}.count-col.error[data-v-af1336d8]{color:#e74c3c;font-weight:600}.count-col.warn[data-v-af1336d8]{color:#f39c12;font-weight:600}.count-col.total[data-v-af1336d8]{font-weight:700;color:#333}.recent-errors[data-v-af1336d8]{margin-top:24px}.section-header[data-v-af1336d8]{display:flex;justify-content:space-between;align-items:center}.section-header h3[data-v-af1336d8]{margin:0}.error-table[data-v-af1336d8]{width:100%;border-collapse:collapse}.error-table th[data-v-af1336d8],.error-table td[data-v-af1336d8]{padding:12px;text-align:left;border-bottom:1px solid #eee}.error-table th[data-v-af1336d8]{background:#f8f9fa;font-weight:600;font-size:13px}.error-table tbody tr[data-v-af1336d8]{cursor:pointer;transition:background .2s}.error-table tbody tr[data-v-af1336d8]:hover{background:#f8f9fa}.summary-cell[data-v-af1336d8]{max-width:400px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.warning-text[data-v-af1336d8]{color:#e74c3c;font-size:13px}.error-detail[data-v-af1336d8]{max-height:60vh;overflow-y:auto}.detail-grid[data-v-af1336d8]{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:20px}.detail-item[data-v-af1336d8]{display:flex;flex-direction:column;gap:4px}.detail-item label[data-v-af1336d8]{font-size:12px;color:#666}.detail-section[data-v-af1336d8]{margin-bottom:16px}.detail-section label[data-v-af1336d8]{display:block;font-size:12px;color:#666;margin-bottom:8px}.summary-box[data-v-af1336d8]{padding:12px;background:#f8f9fa;border-radius:4px;font-size:14px}.context-box[data-v-af1336d8]{padding:12px;background:#2d2d2d;color:#f8f8f2;border-radius:4px;font-size:12px;line-height:1.5;overflow-x:auto;white-space:pre;margin:0}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import"./index-Bx7gSOle.js";import{_ as h,a as e,h as a,b as o,e as u,F as d,g as i,j as f,t as c,p as y,i as g}from"./index-D2VmGkBi.js";const b={class:"data-table-wrapper"},p={class:"data-table"},$={key:0,class:"actions-col"},_={key:0},D=["colspan"],S={key:1},T=["colspan"],B=["onClick"],N={key:0,class:"actions-col"},V={__name:"DataTable",props:{columns:{type:Array,required:!0},data:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1},emptyText:{type:String,default:"데이터가 없습니다."}},emits:["row-click"],setup(n){const m=(t,r)=>t==null?"-":r.type==="date"&&t?new Date(t).toLocaleString("ko-KR"):r.type==="boolean"?t?"Y":"N":t;return(t,r)=>(a(),e("div",b,[o("table",p,[o("thead",null,[o("tr",null,[(a(!0),e(d,null,i(n.columns,s=>(a(),e("th",{key:s.key,style:f({width:s.width})},c(s.label),5))),128)),t.$slots.actions?(a(),e("th",$,"작업")):u("",!0)])]),o("tbody",null,[n.loading?(a(),e("tr",_,[o("td",{colspan:n.columns.length+(t.$slots.actions?1:0),class:"loading-cell"}," 로딩 중... ",8,D)])):!n.data||n.data.length===0?(a(),e("tr",S,[o("td",{colspan:n.columns.length+(t.$slots.actions?1:0),class:"empty-cell"},c(n.emptyText),9,T)])):(a(!0),e(d,{key:2},i(n.data,(s,k)=>(a(),e("tr",{key:s.id||k,onClick:l=>t.$emit("row-click",s)},[(a(!0),e(d,null,i(n.columns,l=>(a(),e("td",{key:l.key},[y(t.$slots,l.key,{row:s,value:s[l.key]},()=>[g(c(m(s[l.key],l)),1)])]))),128)),t.$slots.actions?(a(),e("td",N,[y(t.$slots,"actions",{row:s},void 0)])):u("",!0)],8,B))),128))])])]))}},A=h(V,[["__scopeId","data-v-db5e24a9"]]);export{A as D};

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.layout-container[data-v-138c0e4a]{display:flex;gap:20px;height:calc(100vh - 120px)}.tree-panel[data-v-138c0e4a]{width:320px;min-width:280px;background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;display:flex;flex-direction:column}.tree-header[data-v-138c0e4a]{display:flex;justify-content:space-between;align-items:center;padding:16px;border-bottom:1px solid #eee}.tree-header h4[data-v-138c0e4a]{margin:0;font-size:15px}.tree-content[data-v-138c0e4a]{flex:1;overflow-y:auto;padding:8px}.tree-loading[data-v-138c0e4a],.tree-empty[data-v-138c0e4a]{padding:20px;text-align:center;color:#666;font-size:13px}.tree-item[data-v-138c0e4a]{display:flex;align-items:center;padding:8px 10px;border-radius:6px;cursor:pointer;font-size:13px;transition:background .15s}.tree-item[data-v-138c0e4a]:hover{background:#f5f5f5}.tree-item.active[data-v-138c0e4a]{background:#e3f2fd;font-weight:500}.tree-toggle[data-v-138c0e4a]{width:16px;font-size:10px;color:#999;margin-right:4px}.tree-icon[data-v-138c0e4a]{margin-right:8px;font-size:14px}.tree-label[data-v-138c0e4a]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-count[data-v-138c0e4a]{font-size:12px;color:#666;background:#f0f0f0;padding:2px 8px;border-radius:10px;margin-left:8px}.tree-count-detail[data-v-138c0e4a]{display:flex;gap:4px;margin-left:8px}.tree-count-detail span[data-v-138c0e4a]{font-size:11px;padding:2px 6px;border-radius:8px;font-weight:500}.tree-count-detail .critical[data-v-138c0e4a]{background:#f3e5f5;color:#9b59b6}.tree-count-detail .error[data-v-138c0e4a]{background:#ffebee;color:#e74c3c}.tree-count-detail .warn[data-v-138c0e4a]{background:#fff8e1;color:#f39c12}.tree-delete[data-v-138c0e4a]{opacity:0;background:none;border:none;cursor:pointer;padding:4px;font-size:12px;transition:opacity .15s}.tree-item:hover .tree-delete[data-v-138c0e4a]{opacity:1}.tree-delete[data-v-138c0e4a]:hover{transform:scale(1.1)}.tree-all[data-v-138c0e4a]{margin-bottom:8px;border-bottom:1px solid #eee;padding-bottom:12px}.tree-server[data-v-138c0e4a]{margin-bottom:4px}.tree-paths[data-v-138c0e4a],.tree-files[data-v-138c0e4a]{margin-left:20px}.tree-file-item[data-v-138c0e4a]{padding-left:26px}.list-panel[data-v-138c0e4a]{flex:1;min-width:0}.list-panel[data-v-138c0e4a] .card{height:100%;display:flex;flex-direction:column}.card-header-content[data-v-138c0e4a]{display:flex;justify-content:space-between;align-items:center}.card-header-content h3[data-v-138c0e4a]{margin:0;font-size:16px}.header-actions[data-v-138c0e4a]{display:flex;gap:8px}.filters[data-v-138c0e4a]{padding:16px;background:#f8f9fa;border-radius:8px;margin-bottom:16px}.filter-row[data-v-138c0e4a]{display:grid;grid-template-columns:1fr 1fr 2fr auto;gap:16px;align-items:end}.filter-actions[data-v-138c0e4a]{display:flex;gap:8px;padding-bottom:4px}.results-section[data-v-138c0e4a]{flex:1;display:flex;flex-direction:column;min-height:0}.results-header[data-v-138c0e4a]{margin-bottom:12px;color:#666;font-size:14px}.table-wrapper[data-v-138c0e4a]{flex:1;overflow:auto}.error-table[data-v-138c0e4a]{width:100%;border-collapse:collapse}.error-table th[data-v-138c0e4a],.error-table td[data-v-138c0e4a]{padding:10px 8px;text-align:left;border-bottom:1px solid #eee}.error-table th[data-v-138c0e4a]{background:#f8f9fa;font-weight:600;font-size:13px;position:sticky;top:0}.error-table tbody tr[data-v-138c0e4a]:hover{background:#fafafa}.col-time[data-v-138c0e4a]{width:150px;white-space:nowrap}.col-severity[data-v-138c0e4a]{width:80px}.col-pattern[data-v-138c0e4a]{width:100px}.col-action[data-v-138c0e4a]{width:70px;text-align:center}.empty-result[data-v-138c0e4a],.loading-result[data-v-138c0e4a]{padding:40px;text-align:center;color:#666}.pagination[data-v-138c0e4a]{display:flex;justify-content:center;align-items:center;gap:16px;padding:16px 0;border-top:1px solid #eee;margin-top:auto}.page-info[data-v-138c0e4a]{font-size:14px;color:#666}.warning-text[data-v-138c0e4a]{color:#e74c3c;font-size:13px;margin-top:8px}.error-detail[data-v-138c0e4a]{max-height:60vh;overflow-y:auto}.detail-grid[data-v-138c0e4a]{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:20px}.detail-item[data-v-138c0e4a]{display:flex;flex-direction:column;gap:4px}.detail-item label[data-v-138c0e4a]{font-size:12px;color:#666}.file-path[data-v-138c0e4a]{word-break:break-all;font-family:monospace;font-size:12px}.detail-section[data-v-138c0e4a]{margin-bottom:16px}.detail-section label[data-v-138c0e4a]{display:block;font-size:12px;color:#666;margin-bottom:8px}.summary-box[data-v-138c0e4a]{padding:12px;background:#f8f9fa;border-radius:4px;font-size:14px}.context-box[data-v-138c0e4a]{padding:12px;background:#1e1e1e;color:#d4d4d4;border-radius:4px;font-size:12px;line-height:1.6;overflow-x:auto;white-space:pre;margin:0;max-height:250px}

View File

@@ -0,0 +1 @@
import"./index-Bx7gSOle.js";import{_ as i,c as s,a as t,h as l,e as o,i as c,t as n,F as m,g as y}from"./index-D2VmGkBi.js";const h={class:"form-group"},v=["for"],b={key:0,class:"required"},g=["id","type","value","placeholder","disabled","readonly"],f=["id","value","placeholder","disabled","readonly","rows"],k=["id","value","disabled"],V={key:0,value:""},S=["value"],x={key:4,class:"error-text"},I={key:5,class:"hint-text"},B={__name:"FormInput",props:{modelValue:{type:[String,Number],default:""},label:String,type:{type:String,default:"text"},placeholder:String,required:Boolean,disabled:Boolean,readonly:Boolean,error:String,hint:String,rows:{type:Number,default:3},options:{type:Array,default:()=>[]}},emits:["update:modelValue"],setup(e){const r=s(()=>`input-${Math.random().toString(36).slice(2,9)}`);return(u,d)=>(l(),t("div",h,[e.label?(l(),t("label",{key:0,for:r.value},[c(n(e.label)+" ",1),e.required?(l(),t("span",b,"*")):o("",!0)],8,v)):o("",!0),e.type!=="textarea"&&e.type!=="select"?(l(),t("input",{key:1,id:r.value,type:e.type,value:e.modelValue,placeholder:e.placeholder,disabled:e.disabled,readonly:e.readonly,class:"form-input",onInput:d[0]||(d[0]=a=>u.$emit("update:modelValue",a.target.value))},null,40,g)):e.type==="textarea"?(l(),t("textarea",{key:2,id:r.value,value:e.modelValue,placeholder:e.placeholder,disabled:e.disabled,readonly:e.readonly,rows:e.rows,class:"form-input",onInput:d[1]||(d[1]=a=>u.$emit("update:modelValue",a.target.value))},null,40,f)):e.type==="select"?(l(),t("select",{key:3,id:r.value,value:e.modelValue,disabled:e.disabled,class:"form-input",onChange:d[2]||(d[2]=a=>u.$emit("update:modelValue",a.target.value))},[e.placeholder?(l(),t("option",V,n(e.placeholder),1)):o("",!0),(l(!0),t(m,null,y(e.options,a=>(l(),t("option",{key:a.value,value:a.value},n(a.label),9,S))),128))],40,k)):o("",!0),e.error?(l(),t("span",x,n(e.error),1)):o("",!0),e.hint?(l(),t("span",I,n(e.hint),1)):o("",!0)]))}},N=i(B,[["__scopeId","data-v-45f49038"]]);export{N as F};

View File

@@ -0,0 +1 @@
.card-header-content[data-v-fc6fccb5]{display:flex;justify-content:space-between;align-items:center}.card-header-content h3[data-v-fc6fccb5]{margin:0}.action-buttons[data-v-fc6fccb5]{display:flex;gap:4px}.regex-code[data-v-fc6fccb5]{font-family:monospace;background:#f1f3f4;padding:2px 6px;border-radius:3px;font-size:12px}.form-group[data-v-fc6fccb5]{margin-bottom:16px}.form-group label[data-v-fc6fccb5]{display:flex;align-items:center;gap:8px;cursor:pointer}.test-section[data-v-fc6fccb5]{display:flex;flex-direction:column;gap:16px}.test-pattern label[data-v-fc6fccb5]{display:block;font-weight:500;margin-bottom:6px}.regex-display[data-v-fc6fccb5]{display:block;font-family:monospace;background:#f8f9fa;padding:12px;border-radius:4px;font-size:13px;word-break:break-all}.test-result[data-v-fc6fccb5]{padding:16px;border-radius:8px;margin-top:8px}.test-result.success[data-v-fc6fccb5]{background:#d4edda;border:1px solid #c3e6cb}.test-result.fail[data-v-fc6fccb5]{background:#f8d7da;border:1px solid #f5c6cb}.test-result h4[data-v-fc6fccb5]{margin:0 0 12px}.test-result p[data-v-fc6fccb5]{margin:0}.match-info[data-v-fc6fccb5]{margin-top:8px}.match-info label[data-v-fc6fccb5]{font-weight:500;margin-right:8px}.match-info code[data-v-fc6fccb5]{background:#0000001a;padding:2px 6px;border-radius:3px}.error-msg[data-v-fc6fccb5]{color:#721c24}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.card-header-content[data-v-6f59a208]{display:flex;justify-content:space-between;align-items:center}.card-header-content h3[data-v-6f59a208]{margin:0}.action-buttons[data-v-6f59a208]{display:flex;gap:4px}.form-group[data-v-6f59a208]{margin-bottom:16px}.form-group label[data-v-6f59a208]{display:flex;align-items:center;gap:8px;cursor:pointer}.log-path-section h4[data-v-6f59a208]{margin:0 0 12px;font-size:14px;color:#333}.log-path-form[data-v-6f59a208]{padding:16px;background:#f8f9fa;border-radius:8px;margin-bottom:20px}.log-path-inputs[data-v-6f59a208]{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:12px}.log-path-list table[data-v-6f59a208]{width:100%;border-collapse:collapse}.log-path-list th[data-v-6f59a208],.log-path-list td[data-v-6f59a208]{padding:10px 12px;text-align:left;border-bottom:1px solid #eee}.log-path-list th[data-v-6f59a208]{background:#f8f9fa;font-weight:600;font-size:13px}.empty-text[data-v-6f59a208]{color:#6c757d;text-align:center;padding:20px}.warning-text[data-v-6f59a208]{color:#e74c3c;font-size:14px}.test-result[data-v-6f59a208]{padding:16px;border-radius:8px}.test-result.success[data-v-6f59a208]{background:#d4edda;border:1px solid #c3e6cb}.test-result.fail[data-v-6f59a208]{background:#f8d7da;border:1px solid #f5c6cb}.test-result p[data-v-6f59a208]{margin:0}

View File

@@ -0,0 +1 @@
.settings[data-v-fdca948e]{max-width:800px}.card-header-content h3[data-v-fdca948e]{margin:0}.loading[data-v-fdca948e]{text-align:center;padding:40px;color:#666}.settings-form[data-v-fdca948e]{padding:10px 0}.setting-section[data-v-fdca948e]{margin-bottom:30px;padding-bottom:20px;border-bottom:1px solid #eee}.setting-section[data-v-fdca948e]:last-of-type{border-bottom:none}.setting-section h4[data-v-fdca948e]{margin:0 0 20px;font-size:16px;color:#2c3e50}.form-actions[data-v-fdca948e]{display:flex;justify-content:flex-end;gap:12px;margin-top:20px;padding-top:20px;border-top:1px solid #eee}.app-info[data-v-fdca948e]{margin-top:20px}.app-info h3[data-v-fdca948e]{margin:0}.info-list[data-v-fdca948e]{display:flex;flex-direction:column;gap:12px}.info-item[data-v-fdca948e]{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid #f0f0f0}.info-item[data-v-fdca948e]:last-child{border-bottom:none}.info-item .label[data-v-fdca948e]{color:#666}.info-item .value[data-v-fdca948e]{font-weight:500}

View File

@@ -0,0 +1 @@
import{_ as S,r as v,o as F,a as p,f as a,w as i,u as n,h as m,l as B,b as t,i as c}from"./index-D2VmGkBi.js";import{C as V,b,B as y}from"./index-Bx7gSOle.js";import{F as u}from"./FormInput-DHZMRclc.js";const k={class:"settings"},w={key:0,class:"loading"},C={class:"setting-section"},U={class:"setting-section"},h={class:"setting-section"},M={class:"setting-section"},z={class:"form-actions"},A={__name:"Settings",setup(N){const d=v(!1),r=v(!1),l=v({}),f={"server.port":"8080","export.path":"./exports","retention.days":"90","scan.timeout":"30","scan.maxFileSize":"100"},g=async()=>{d.value=!0;try{const o=await b.getAllAsMap();l.value={...f,...o}}catch(o){console.error("Failed to load settings:",o),l.value={...f}}finally{d.value=!1}},x=async()=>{r.value=!0;try{for(const[o,e]of Object.entries(l.value))await b.save({key:o,value:String(e)});alert("설정이 저장되었습니다.")}catch(o){console.error("Failed to save settings:",o),alert("설정 저장에 실패했습니다.")}finally{r.value=!1}};return F(()=>{g()}),(o,e)=>(m(),p("div",k,[a(n(V),null,{header:i(()=>[...e[5]||(e[5]=[t("div",{class:"card-header-content"},[t("h3",null,"설정")],-1)])]),default:i(()=>[d.value?(m(),p("div",w,"로딩중...")):(m(),p("form",{key:1,onSubmit:B(x,["prevent"]),class:"settings-form"},[t("div",C,[e[6]||(e[6]=t("h4",null,"일반 설정",-1)),a(n(u),{modelValue:l.value["server.port"],"onUpdate:modelValue":e[0]||(e[0]=s=>l.value["server.port"]=s),label:"서버 포트",type:"number",hint:"애플리케이션이 실행될 포트 번호 (기본: 8080)"},null,8,["modelValue"])]),t("div",U,[e[7]||(e[7]=t("h4",null,"내보내기 설정",-1)),a(n(u),{modelValue:l.value["export.path"],"onUpdate:modelValue":e[1]||(e[1]=s=>l.value["export.path"]=s),label:"내보내기 경로",placeholder:"예: C:\\LogHunter\\exports",hint:"리포트 파일이 저장될 기본 경로"},null,8,["modelValue"])]),t("div",h,[e[8]||(e[8]=t("h4",null,"데이터 관리",-1)),a(n(u),{modelValue:l.value["retention.days"],"onUpdate:modelValue":e[2]||(e[2]=s=>l.value["retention.days"]=s),label:"로그 보관 기간 (일)",type:"number",hint:"에러 로그 데이터 보관 기간 (0 = 무제한)"},null,8,["modelValue"])]),t("div",M,[e[9]||(e[9]=t("h4",null,"스캔 설정",-1)),a(n(u),{modelValue:l.value["scan.timeout"],"onUpdate:modelValue":e[3]||(e[3]=s=>l.value["scan.timeout"]=s),label:"스캔 타임아웃 (초)",type:"number",hint:"SFTP 연결 및 파일 다운로드 타임아웃"},null,8,["modelValue"]),a(n(u),{modelValue:l.value["scan.maxFileSize"],"onUpdate:modelValue":e[4]||(e[4]=s=>l.value["scan.maxFileSize"]=s),label:"최대 파일 크기 (MB)",type:"number",hint:"분석할 로그 파일의 최대 크기"},null,8,["modelValue"])]),t("div",z,[a(n(y),{onClick:g,variant:"secondary"},{default:i(()=>[...e[10]||(e[10]=[c("초기화",-1)])]),_:1}),a(n(y),{type:"submit",loading:r.value},{default:i(()=>[...e[11]||(e[11]=[c("저장",-1)])]),_:1},8,["loading"])])],32))]),_:1}),a(n(V),{class:"app-info"},{header:i(()=>[...e[12]||(e[12]=[t("h3",null,"애플리케이션 정보",-1)])]),default:i(()=>[e[13]||(e[13]=t("div",{class:"info-list"},[t("div",{class:"info-item"},[t("span",{class:"label"},"버전"),t("span",{class:"value"},"1.0.0")]),t("div",{class:"info-item"},[t("span",{class:"label"},"프레임워크"),t("span",{class:"value"},"Spring Boot 3.2 + Vue 3")]),t("div",{class:"info-item"},[t("span",{class:"label"},"데이터베이스"),t("span",{class:"value"},"SQLite (./data/loghunter.db)")])],-1))]),_:1})]))}},T=S(A,[["__scopeId","data-v-fdca948e"]]);export{T as default};

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.data-table-wrapper[data-v-db5e24a9]{overflow-x:auto}.data-table[data-v-db5e24a9]{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 1px 3px #0000001a}.data-table th[data-v-db5e24a9],.data-table td[data-v-db5e24a9]{padding:12px 16px;text-align:left;border-bottom:1px solid #eee}.data-table th[data-v-db5e24a9]{background:#f8f9fa;font-weight:600;color:#495057}.data-table tbody tr[data-v-db5e24a9]:hover{background:#f8f9fa}.data-table tbody tr:last-child td[data-v-db5e24a9]{border-bottom:none}.actions-col[data-v-db5e24a9]{width:120px;text-align:center}.loading-cell[data-v-db5e24a9],.empty-cell[data-v-db5e24a9]{text-align:center;color:#6c757d;padding:40px!important}.modal-overlay[data-v-90993dd3]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal[data-v-90993dd3]{background:#fff;border-radius:8px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 4px 20px #00000026}.modal-header[data-v-90993dd3]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #eee}.modal-header h3[data-v-90993dd3]{margin:0;font-size:1.1rem}.close-btn[data-v-90993dd3]{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#666;padding:0;line-height:1}.close-btn[data-v-90993dd3]:hover{color:#333}.modal-body[data-v-90993dd3]{padding:20px;overflow-y:auto;flex:1}.modal-footer[data-v-90993dd3]{padding:16px 20px;border-top:1px solid #eee;display:flex;justify-content:flex-end;gap:8px}.form-group[data-v-45f49038]{margin-bottom:16px}label[data-v-45f49038]{display:block;margin-bottom:6px;font-weight:500;color:#333}.required[data-v-45f49038]{color:#e74c3c}.form-input[data-v-45f49038]{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px;transition:border-color .2s}.form-input[data-v-45f49038]:focus{outline:none;border-color:#3498db}.form-input[data-v-45f49038]:disabled{background:#f5f5f5;cursor:not-allowed}textarea.form-input[data-v-45f49038]{resize:vertical}select.form-input[data-v-45f49038]{cursor:pointer}.error-text[data-v-45f49038]{display:block;margin-top:4px;font-size:12px;color:#e74c3c}.hint-text[data-v-45f49038]{display:block;margin-top:4px;font-size:12px;color:#6c757d}.btn[data-v-e5da414f]{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;border:none;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.btn[data-v-e5da414f]:disabled{opacity:.6;cursor:not-allowed}.btn-sm[data-v-e5da414f]{padding:6px 12px;font-size:12px}.btn-lg[data-v-e5da414f]{padding:12px 24px;font-size:16px}.btn-primary[data-v-e5da414f]{background:#3498db;color:#fff}.btn-primary[data-v-e5da414f]:hover:not(:disabled){background:#2980b9}.btn-secondary[data-v-e5da414f]{background:#6c757d;color:#fff}.btn-secondary[data-v-e5da414f]:hover:not(:disabled){background:#5a6268}.btn-danger[data-v-e5da414f]{background:#e74c3c;color:#fff}.btn-danger[data-v-e5da414f]:hover:not(:disabled){background:#c0392b}.btn-success[data-v-e5da414f]{background:#27ae60;color:#fff}.btn-success[data-v-e5da414f]:hover:not(:disabled){background:#1e8449}.btn-warning[data-v-e5da414f]{background:#f39c12;color:#fff}.btn-warning[data-v-e5da414f]:hover:not(:disabled){background:#d68910}.spinner[data-v-e5da414f]{width:14px;height:14px;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:spin-e5da414f .8s linear infinite}@keyframes spin-e5da414f{to{transform:rotate(360deg)}}.badge[data-v-b7bd2350]{display:inline-block;padding:4px 8px;font-size:12px;font-weight:500;border-radius:4px}.badge-default[data-v-b7bd2350]{background:#e9ecef;color:#495057}.badge-critical[data-v-b7bd2350],.badge-error[data-v-b7bd2350]{background:#e74c3c;color:#fff}.badge-warn[data-v-b7bd2350]{background:#f39c12;color:#fff}.badge-success[data-v-b7bd2350]{background:#27ae60;color:#fff}.badge-info[data-v-b7bd2350]{background:#3498db;color:#fff}.card[data-v-2f260fa2]{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;overflow:hidden}.card-header[data-v-2f260fa2]{padding:16px 20px;border-bottom:1px solid #eee}.card-header h3[data-v-2f260fa2]{margin:0;font-size:1.1rem;color:#333}.card-body[data-v-2f260fa2]{padding:20px}.card-footer[data-v-2f260fa2]{padding:16px 20px;border-top:1px solid #eee;background:#f8f9fa}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}#app{min-height:100vh;background:#f5f5f5}.header{background:#2c3e50;color:#fff;padding:1rem 2rem;display:flex;align-items:center;gap:2rem}.header h1{font-size:1.5rem;margin:0}.header nav{display:flex;gap:1rem}.header nav a{color:#ecf0f1;text-decoration:none;padding:.5rem 1rem;border-radius:4px;transition:background .2s}.header nav a:hover{background:#34495e}.header nav a.router-link-active{background:#3498db}.main{padding:2rem;max-width:1400px;margin:0 auto}

View File

@@ -0,0 +1,27 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<link rel="icon" href="/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
<title>LogHunter</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}
</style>
<script type="module" crossorigin src="/assets/index-D2VmGkBi.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-GLdO36rE.css">
</head>
<body>
<div id="app"></div>
</body>
</html>