diff --git a/VERSION b/VERSION
index a1dad2a..88dbf46 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.3.23
+0.3.25
diff --git a/source_clean/VERSION b/source_clean/VERSION
index a1dad2a..88dbf46 100644
--- a/source_clean/VERSION
+++ b/source_clean/VERSION
@@ -1 +1 @@
-0.3.23
+0.3.25
diff --git a/source_clean/frontend-src/dist-vite/assets/AdminDashboard-CkHQl97R.js b/source_clean/frontend-src/dist-vite/assets/AdminDashboard-C_krL4pj.js
similarity index 99%
rename from source_clean/frontend-src/dist-vite/assets/AdminDashboard-CkHQl97R.js
rename to source_clean/frontend-src/dist-vite/assets/AdminDashboard-C_krL4pj.js
index 9f3cd2c..5022871 100644
--- a/source_clean/frontend-src/dist-vite/assets/AdminDashboard-CkHQl97R.js
+++ b/source_clean/frontend-src/dist-vite/assets/AdminDashboard-C_krL4pj.js
@@ -1,4 +1,4 @@
-import{x as qu,m as $_,h as Ce,B as Hg,d as q_,o as K_,a as Tt,c as Nt,K as ml,L as _l,b as Q,F as Vr,r as Gr,f as $t,w as qt,e as Oe,v as Ka,j as Hr,i as Q_,t as wt,n as Nc,y as Ei,l as zc,p as J_,E as j_,u as t1}from"./index-D_srC3bj.js";import{a as e1,h as r1,c as i1,i as n1,j as a1,t as o1,_ as s1}from"./_plugin-vue_export-helper-1Z-znrfZ.js";import l1 from"./CloudConfig-3znuBWUR.js";import u1 from"./SystemConfig-BbG7uBv0.js";import f1 from"./SaveRecords-B5cCMWaP.js";import"./index-Bn7NwETH.js";import"./CloudBadge-CbpZHKLy.js";/*! *****************************************************************************
+import{x as qu,m as $_,h as Ce,B as Hg,d as q_,o as K_,a as Tt,c as Nt,K as ml,L as _l,b as Q,F as Vr,r as Gr,f as $t,w as qt,e as Oe,v as Ka,j as Hr,i as Q_,t as wt,n as Nc,y as Ei,l as zc,p as J_,E as j_,u as t1}from"./index-B3brQT6g.js";import{a as e1,h as r1,c as i1,i as n1,j as a1,t as o1,_ as s1}from"./_plugin-vue_export-helper-1Z-znrfZ.js";import l1 from"./CloudConfig-0YLAk8H4.js";import u1 from"./SystemConfig-0RdDTGNd.js";import f1 from"./SaveRecords-BjfouS_I.js";import"./index-Bn7NwETH.js";import"./CloudBadge-CDvk35W2.js";/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
diff --git a/source_clean/frontend/assets/AdminLayout-qvvQgX9o.js b/source_clean/frontend-src/dist-vite/assets/AdminLayout-DW7wUpub.js
similarity index 98%
rename from source_clean/frontend/assets/AdminLayout-qvvQgX9o.js
rename to source_clean/frontend-src/dist-vite/assets/AdminLayout-DW7wUpub.js
index 14de1b8..0d99b93 100644
--- a/source_clean/frontend/assets/AdminLayout-qvvQgX9o.js
+++ b/source_clean/frontend-src/dist-vite/assets/AdminLayout-DW7wUpub.js
@@ -1 +1 @@
-import{d as B,o as N,a as V,c as I,b as n,t as c,f as e,w as t,h as g,v as y,j as u,k as r,C as M,l,D as T,G as j,H as q,I as z,J as A,u as D,z as H}from"./index-D_srC3bj.js";import{a as L,_ as R}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const E={class:"admin-layout"},G={class:"admin-sidebar"},J={class:"sidebar-brand"},W={class:"sidebar-brand-text"},F={class:"sidebar-version"},K={class:"admin-content"},O={class:"content-header"},P={class:"content-breadcrumb"},Q={class:"breadcrumb-current"},U={class:"content-actions"},X={class:"content-body"},Y=B({__name:"AdminLayout",setup(Z){const d=D(),f=H(),m=g(""),_=g(""),b={dashboard:"仪表盘","cloud-configs-toggle":"网盘设置及授权","cloud-configs-cleanup":"存储清理","sys-site":"网站设置","sys-services":"外部服务 & 缓存","sys-strategy":"性能配置","sys-password":"修改管理员密码","sys-notify":"消息推送","sys-daily-report":"每日汇报","save-records":"转存日志"},p=y(()=>{const o=f.name;return o==="admin-cloud-configs"?"cloud-configs-toggle":o==="admin-cleanup"?"cloud-configs-cleanup":o==="admin-system"?f.query.section||"sys-site":o==="admin-save-records"?"save-records":"dashboard"}),x=y(()=>b[p.value]||"仪表盘");function w(o){o==="dashboard"?d.push("/admin/dashboard"):o==="cloud-configs-toggle"?d.push("/admin/cloud-configs"):o==="cloud-configs-cleanup"?d.push("/admin/cleanup"):o.startsWith("sys-")?d.push({path:"/admin/system",query:{section:o}}):o==="save-records"?d.push("/admin/save-records"):o==="logout"&&(localStorage.removeItem("admin_token"),d.push("/admin/login"))}function h(){d.push("/")}return N(async()=>{try{const o=await L();m.value=o.site_name||""}catch{}try{const s=await(await fetch("/health")).json();_.value=s.version}catch{}}),(o,s)=>{const i=u("el-icon"),a=u("el-menu-item"),v=u("el-sub-menu"),C=u("el-menu"),k=u("el-button"),S=u("router-view");return V(),I("div",E,[n("aside",G,[n("div",J,[s[1]||(s[1]=n("div",{class:"sidebar-logo"},"☁️",-1)),n("div",W,[n("h2",null,c(m.value||"CloudSearch"),1),s[0]||(s[0]=n("p",null,"管理控制台",-1))])]),e(C,{"default-active":p.value,class:"sidebar-menu",onSelect:w},{default:t(()=>[e(a,{index:"dashboard"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(M))]),_:1}),s[2]||(s[2]=n("span",null,"仪表盘",-1))]),_:1}),e(v,{index:"cloud-configs"},{title:t(()=>[e(i,null,{default:t(()=>[e(r(T))]),_:1}),s[3]||(s[3]=n("span",null,"网盘管理",-1))]),default:t(()=>[e(a,{index:"cloud-configs-toggle"},{default:t(()=>[...s[4]||(s[4]=[l("📋 设置及授权",-1)])]),_:1}),e(a,{index:"cloud-configs-cleanup"},{default:t(()=>[...s[5]||(s[5]=[l("🧹 存储清理",-1)])]),_:1})]),_:1}),e(v,{index:"system"},{title:t(()=>[e(i,null,{default:t(()=>[e(r(j))]),_:1}),s[6]||(s[6]=n("span",null,"系统设置",-1))]),default:t(()=>[e(a,{index:"sys-site"},{default:t(()=>[...s[7]||(s[7]=[l("🌐 网站设置",-1)])]),_:1}),e(a,{index:"sys-services"},{default:t(()=>[...s[8]||(s[8]=[l("🔗 外部服务 & 缓存",-1)])]),_:1}),e(a,{index:"sys-strategy"},{default:t(()=>[...s[9]||(s[9]=[l("⚡ 性能配置",-1)])]),_:1}),e(a,{index:"sys-password"},{default:t(()=>[...s[10]||(s[10]=[l("🔑 修改密码",-1)])]),_:1}),e(a,{index:"sys-notify"},{default:t(()=>[...s[11]||(s[11]=[l("📬 消息推送",-1)])]),_:1}),e(a,{index:"sys-daily-report"},{default:t(()=>[...s[12]||(s[12]=[l("📊 每日汇报",-1)])]),_:1})]),_:1}),e(a,{index:"save-records"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(q))]),_:1}),s[13]||(s[13]=n("span",null,"转存日志",-1))]),_:1}),s[15]||(s[15]=n("div",{class:"sidebar-spacer"},null,-1)),n("div",F,"v"+c(_.value),1),e(a,{index:"logout"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(z))]),_:1}),s[14]||(s[14]=n("span",null,"退出登录",-1))]),_:1})]),_:1},8,["default-active"])]),n("div",K,[n("header",O,[n("div",P,[n("span",Q,c(x.value),1)]),n("div",U,[e(k,{text:"",size:"small",onClick:h},{default:t(()=>[e(i,null,{default:t(()=>[e(r(A))]),_:1}),s[16]||(s[16]=l(" 返回前台 ",-1))]),_:1})])]),n("main",X,[e(S)])])])}}}),es=R(Y,[["__scopeId","data-v-469751e8"]]);export{es as default};
+import{d as B,o as N,a as V,c as I,b as n,t as c,f as e,w as t,h as g,v as y,j as u,k as r,C as M,l,D as T,G as j,H as q,I as z,J as A,u as D,z as H}from"./index-B3brQT6g.js";import{a as L,_ as R}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const E={class:"admin-layout"},G={class:"admin-sidebar"},J={class:"sidebar-brand"},W={class:"sidebar-brand-text"},F={class:"sidebar-version"},K={class:"admin-content"},O={class:"content-header"},P={class:"content-breadcrumb"},Q={class:"breadcrumb-current"},U={class:"content-actions"},X={class:"content-body"},Y=B({__name:"AdminLayout",setup(Z){const d=D(),f=H(),m=g(""),_=g(""),b={dashboard:"仪表盘","cloud-configs-toggle":"网盘设置及授权","cloud-configs-cleanup":"存储清理","sys-site":"网站设置","sys-services":"外部服务 & 缓存","sys-strategy":"性能配置","sys-password":"修改管理员密码","sys-notify":"消息推送","sys-daily-report":"每日汇报","save-records":"转存日志"},p=y(()=>{const o=f.name;return o==="admin-cloud-configs"?"cloud-configs-toggle":o==="admin-cleanup"?"cloud-configs-cleanup":o==="admin-system"?f.query.section||"sys-site":o==="admin-save-records"?"save-records":"dashboard"}),x=y(()=>b[p.value]||"仪表盘");function w(o){o==="dashboard"?d.push("/admin/dashboard"):o==="cloud-configs-toggle"?d.push("/admin/cloud-configs"):o==="cloud-configs-cleanup"?d.push("/admin/cleanup"):o.startsWith("sys-")?d.push({path:"/admin/system",query:{section:o}}):o==="save-records"?d.push("/admin/save-records"):o==="logout"&&(localStorage.removeItem("admin_token"),d.push("/admin/login"))}function h(){d.push("/")}return N(async()=>{try{const o=await L();m.value=o.site_name||""}catch{}try{const s=await(await fetch("/health")).json();_.value=s.version}catch{}}),(o,s)=>{const i=u("el-icon"),a=u("el-menu-item"),v=u("el-sub-menu"),C=u("el-menu"),k=u("el-button"),S=u("router-view");return V(),I("div",E,[n("aside",G,[n("div",J,[s[1]||(s[1]=n("div",{class:"sidebar-logo"},"☁️",-1)),n("div",W,[n("h2",null,c(m.value||"CloudSearch"),1),s[0]||(s[0]=n("p",null,"管理控制台",-1))])]),e(C,{"default-active":p.value,class:"sidebar-menu",onSelect:w},{default:t(()=>[e(a,{index:"dashboard"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(M))]),_:1}),s[2]||(s[2]=n("span",null,"仪表盘",-1))]),_:1}),e(v,{index:"cloud-configs"},{title:t(()=>[e(i,null,{default:t(()=>[e(r(T))]),_:1}),s[3]||(s[3]=n("span",null,"网盘管理",-1))]),default:t(()=>[e(a,{index:"cloud-configs-toggle"},{default:t(()=>[...s[4]||(s[4]=[l("📋 设置及授权",-1)])]),_:1}),e(a,{index:"cloud-configs-cleanup"},{default:t(()=>[...s[5]||(s[5]=[l("🧹 存储清理",-1)])]),_:1})]),_:1}),e(v,{index:"system"},{title:t(()=>[e(i,null,{default:t(()=>[e(r(j))]),_:1}),s[6]||(s[6]=n("span",null,"系统设置",-1))]),default:t(()=>[e(a,{index:"sys-site"},{default:t(()=>[...s[7]||(s[7]=[l("🌐 网站设置",-1)])]),_:1}),e(a,{index:"sys-services"},{default:t(()=>[...s[8]||(s[8]=[l("🔗 外部服务 & 缓存",-1)])]),_:1}),e(a,{index:"sys-strategy"},{default:t(()=>[...s[9]||(s[9]=[l("⚡ 性能配置",-1)])]),_:1}),e(a,{index:"sys-password"},{default:t(()=>[...s[10]||(s[10]=[l("🔑 修改密码",-1)])]),_:1}),e(a,{index:"sys-notify"},{default:t(()=>[...s[11]||(s[11]=[l("📬 消息推送",-1)])]),_:1}),e(a,{index:"sys-daily-report"},{default:t(()=>[...s[12]||(s[12]=[l("📊 每日汇报",-1)])]),_:1})]),_:1}),e(a,{index:"save-records"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(q))]),_:1}),s[13]||(s[13]=n("span",null,"转存日志",-1))]),_:1}),s[15]||(s[15]=n("div",{class:"sidebar-spacer"},null,-1)),n("div",F,"v"+c(_.value),1),e(a,{index:"logout"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(z))]),_:1}),s[14]||(s[14]=n("span",null,"退出登录",-1))]),_:1})]),_:1},8,["default-active"])]),n("div",K,[n("header",O,[n("div",P,[n("span",Q,c(x.value),1)]),n("div",U,[e(k,{text:"",size:"small",onClick:h},{default:t(()=>[e(i,null,{default:t(()=>[e(r(A))]),_:1}),s[16]||(s[16]=l(" 返回前台 ",-1))]),_:1})])]),n("main",X,[e(S)])])])}}}),es=R(Y,[["__scopeId","data-v-469751e8"]]);export{es as default};
diff --git a/source_clean/frontend/assets/AdminLogin-BFh47H6c.js b/source_clean/frontend-src/dist-vite/assets/AdminLogin-DnKHAQm-.js
similarity index 94%
rename from source_clean/frontend/assets/AdminLogin-BFh47H6c.js
rename to source_clean/frontend-src/dist-vite/assets/AdminLogin-DnKHAQm-.js
index be11eae..838154a 100644
--- a/source_clean/frontend/assets/AdminLogin-BFh47H6c.js
+++ b/source_clean/frontend-src/dist-vite/assets/AdminLogin-DnKHAQm-.js
@@ -1 +1 @@
-import{d as k,o as C,a as w,c as y,b as a,t as m,f as t,w as i,g as x,e as L,h as d,j as p,l as N,i as S,E as B}from"./index-D_srC3bj.js";import{a as E,d as M,_ as U}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const j={class:"admin-login-page"},q={class:"login-card"},A={class:"login-brand"},I={class:"login-title"},K={key:0,class:"error-msg"},R={class:"login-footer"},z=k({__name:"AdminLogin",setup(D){const f=d(),u=d(!1),c=d(""),g=d(""),v=d("");E().then(l=>{l.site_name&&(g.value=l.site_name)}).catch(()=>{});const s=S({username:"",password:""}),b={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]};async function h(){var e,r,n;if(await((e=f.value)==null?void 0:e.validate().catch(()=>!1))){u.value=!0,c.value="";try{const o=await M(s.username,s.password);localStorage.setItem("admin_token",o.token),B.success("登录成功"),window.location.href="/admin"}catch(o){c.value=((n=(r=o==null?void 0:o.response)==null?void 0:r.data)==null?void 0:n.message)||(o==null?void 0:o.message)||"登录失败"}finally{u.value=!1}}}return C(async()=>{try{const e=await(await fetch("/health")).json();v.value=e.version||""}catch{}}),(l,e)=>{const r=p("el-input"),n=p("el-form-item"),o=p("el-button"),V=p("el-form");return w(),y("div",j,[e[4]||(e[4]=a("div",{class:"login-bg-pattern"},null,-1)),a("div",q,[a("div",A,[e[2]||(e[2]=a("div",{class:"login-logo"},"☁️",-1)),a("h1",I,m(g.value||"CloudSearch"),1),e[3]||(e[3]=a("p",{class:"login-subtitle"},"管理后台",-1))]),t(V,{ref_key:"formRef",ref:f,model:s,rules:b,"label-width":"0",size:"large",onKeyup:x(h,["enter"])},{default:i(()=>[t(n,{prop:"username"},{default:i(()=>[t(r,{modelValue:s.username,"onUpdate:modelValue":e[0]||(e[0]=_=>s.username=_),placeholder:"用户名","prefix-icon":"User"},null,8,["modelValue"])]),_:1}),t(n,{prop:"password"},{default:i(()=>[t(r,{modelValue:s.password,"onUpdate:modelValue":e[1]||(e[1]=_=>s.password=_),type:"password",placeholder:"密码","prefix-icon":"Lock","show-password":""},null,8,["modelValue"])]),_:1}),t(n,null,{default:i(()=>[t(o,{type:"primary",loading:u.value,class:"login-btn",onClick:h},{default:i(()=>[N(m(u.value?"登录中...":"登 录"),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),c.value?(w(),y("p",K,m(c.value),1)):L("",!0),a("p",R,"CloudSearch v"+m(v.value),1)])])}}}),G=U(z,[["__scopeId","data-v-bd0b6672"]]);export{G as default};
+import{d as k,o as C,a as w,c as y,b as a,t as m,f as t,w as i,g as x,e as L,h as d,j as p,l as N,i as S,E as B}from"./index-B3brQT6g.js";import{a as E,d as M,_ as U}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const j={class:"admin-login-page"},q={class:"login-card"},A={class:"login-brand"},I={class:"login-title"},K={key:0,class:"error-msg"},R={class:"login-footer"},z=k({__name:"AdminLogin",setup(D){const f=d(),u=d(!1),c=d(""),g=d(""),v=d("");E().then(l=>{l.site_name&&(g.value=l.site_name)}).catch(()=>{});const s=S({username:"",password:""}),b={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]};async function h(){var e,r,n;if(await((e=f.value)==null?void 0:e.validate().catch(()=>!1))){u.value=!0,c.value="";try{const o=await M(s.username,s.password);localStorage.setItem("admin_token",o.token),B.success("登录成功"),window.location.href="/admin"}catch(o){c.value=((n=(r=o==null?void 0:o.response)==null?void 0:r.data)==null?void 0:n.message)||(o==null?void 0:o.message)||"登录失败"}finally{u.value=!1}}}return C(async()=>{try{const e=await(await fetch("/health")).json();v.value=e.version||""}catch{}}),(l,e)=>{const r=p("el-input"),n=p("el-form-item"),o=p("el-button"),V=p("el-form");return w(),y("div",j,[e[4]||(e[4]=a("div",{class:"login-bg-pattern"},null,-1)),a("div",q,[a("div",A,[e[2]||(e[2]=a("div",{class:"login-logo"},"☁️",-1)),a("h1",I,m(g.value||"CloudSearch"),1),e[3]||(e[3]=a("p",{class:"login-subtitle"},"管理后台",-1))]),t(V,{ref_key:"formRef",ref:f,model:s,rules:b,"label-width":"0",size:"large",onKeyup:x(h,["enter"])},{default:i(()=>[t(n,{prop:"username"},{default:i(()=>[t(r,{modelValue:s.username,"onUpdate:modelValue":e[0]||(e[0]=_=>s.username=_),placeholder:"用户名","prefix-icon":"User"},null,8,["modelValue"])]),_:1}),t(n,{prop:"password"},{default:i(()=>[t(r,{modelValue:s.password,"onUpdate:modelValue":e[1]||(e[1]=_=>s.password=_),type:"password",placeholder:"密码","prefix-icon":"Lock","show-password":""},null,8,["modelValue"])]),_:1}),t(n,null,{default:i(()=>[t(o,{type:"primary",loading:u.value,class:"login-btn",onClick:h},{default:i(()=>[N(m(u.value?"登录中...":"登 录"),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),c.value?(w(),y("p",K,m(c.value),1)):L("",!0),a("p",R,"CloudSearch v"+m(v.value),1)])])}}}),G=U(z,[["__scopeId","data-v-bd0b6672"]]);export{G as default};
diff --git a/source_clean/frontend/assets/Cleanup-BkDauFCX.js b/source_clean/frontend-src/dist-vite/assets/Cleanup-C7YekVJo.js
similarity index 99%
rename from source_clean/frontend/assets/Cleanup-BkDauFCX.js
rename to source_clean/frontend-src/dist-vite/assets/Cleanup-C7YekVJo.js
index 2c5d2e7..c39360e 100644
--- a/source_clean/frontend/assets/Cleanup-BkDauFCX.js
+++ b/source_clean/frontend-src/dist-vite/assets/Cleanup-C7YekVJo.js
@@ -1 +1 @@
-import{d as X,o as Y,a as _,c as f,f as a,w as u,j as p,i as Z,b as t,F as ee,r as le,y as N,l as m,t as v,e as g,g as ae,h as y,v as r,E as d}from"./index-D_srC3bj.js";import{k as te,p as se,r as ne,v as oe,_ as ue}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const ie={class:"cleanup-section"},re={class:"cleanup-grid"},pe={class:"cleanup-group"},de={style:{display:"flex","align-items":"center",gap:"10px","flex-wrap":"wrap"}},ce={style:{display:"flex","align-items":"center",gap:"10px"}},_e={style:{width:"100%"}},me={key:0,style:{display:"flex",gap:"6px","flex-wrap":"wrap","margin-bottom":"6px"}},fe={style:{display:"flex",gap:"6px"}},ve={class:"cleanup-group"},ge={style:{display:"flex","align-items":"center",gap:"8px"}},ye={style:{display:"flex","align-items":"center",gap:"8px"}},he={style:{display:"flex","align-items":"center",gap:"8px"}},be={style:{display:"flex","align-items":"center",gap:"8px"}},xe={class:"cleanup-group"},we={class:"cleanup-group"},Ve={class:"cleanup-actions"},Ce={class:"cleanup-actions-buttons"},Se={key:0,class:"cleanup-info"},ke={key:0,style:{"margin-left":"12px"}},ze=X({__name:"Cleanup",setup(Ne){const s=Z({}),h=y(!1),b=y(!1),z=y(!1),D=r(()=>String(s.cleanup_last_run||"")),T=r(()=>{const l=String(s.cleanup_last_stats||"");if(!l)return"";try{const e=JSON.parse(l),n=[];return e.filesTrashed>0&&n.push(`移入回收站 ${e.filesTrashed} 个文件夹`),e.logsDeleted>0&&n.push(`删除 ${e.logsDeleted} 条日志`),e.trashEmptied&&n.push("已清空回收站"),e.errors>0&&n.push(`⚠️ ${e.errors} 个错误`),n.join(" / ")||"无操作"}catch{return""}}),U=r({get:()=>String(s.cleanup_enabled)==="true",set:l=>{s.cleanup_enabled=l?"true":"false"}}),E=r({get:()=>String(s.cleanup_empty_trash)!=="false",set:l=>{s.cleanup_empty_trash=l?"true":"false"}}),R=r({get:()=>Number(s.cleanup_file_retention_days??7),set:l=>{s.cleanup_file_retention_days=l}}),B=r({get:()=>Number(s.cleanup_log_retention_days??30),set:l=>{s.cleanup_log_retention_days=l}}),x=r({get:()=>String(s.cleanup_space_threshold_enabled)==="true",set:l=>{s.cleanup_space_threshold_enabled=l?"true":"false"}}),M=r({get:()=>Number(s.cleanup_space_threshold_percent??90),set:l=>{s.cleanup_space_threshold_percent=l}}),W=r({get:()=>Number(s.cleanup_space_threshold_delete_percent??10),set:l=>{s.cleanup_space_threshold_delete_percent=l}}),$=r({get:()=>String(s.save_reuse_enabled)!=="false",set:l=>{s.save_reuse_enabled=l?"true":"false"}}),c=y([]),w=y("");function L(){try{const l=String(s.cleanup_whitelist_dirs||"[]");c.value=JSON.parse(l)}catch{c.value=[]}}function F(){const l=w.value.trim();if(l){if(c.value.includes(l)){d.warning("该目录已在白名单中");return}c.value.push(l),w.value=""}}function P(l){c.value.splice(l,1)}const I=r({get:()=>Number(s.cleanup_verify_interval??30),set:l=>{s.cleanup_verify_interval=l}}),J=r({get:()=>Number(s.storage_refresh_interval??180),set:l=>{s.storage_refresh_interval=l}});async function O(){try{const l=await te();for(const e of l)s[e.key]=e.value;L()}catch(l){console.error("加载清理配置失败",l)}}async function A(){var l,e;z.value=!0;try{const i=["cleanup_enabled","cleanup_file_retention_days","cleanup_log_retention_days","cleanup_empty_trash","cleanup_space_threshold_enabled","cleanup_space_threshold_percent","cleanup_space_threshold_delete_percent","save_reuse_enabled","cleanup_verify_interval","storage_refresh_interval"].map(V=>({key:V,value:String(s[V]??"")}));i.push({key:"cleanup_whitelist_dirs",value:JSON.stringify(c.value)}),await se(i),d.success("清理配置已保存")}catch(n){d.error(((e=(l=n.response)==null?void 0:l.data)==null?void 0:e.error)||"保存失败")}finally{z.value=!1}}async function q(){var l,e;h.value=!0;try{const n=await ne();n.success?d.success(n.message):d.warning(n.message),await O()}catch(n){d.error(((e=(l=n.response)==null?void 0:l.data)==null?void 0:e.error)||"清理失败")}finally{h.value=!1}}async function G(){var l,e;b.value=!0;try{const n=await oe();n.success?d.success(n.message):d.warning(n.message)}catch(n){d.error(((e=(l=n.response)==null?void 0:l.data)==null?void 0:e.error)||"清空回收站失败")}finally{b.value=!1}}return Y(()=>{O()}),(l,e)=>{const n=p("el-switch"),i=p("el-form-item"),V=p("el-tag"),H=p("el-input"),C=p("el-button"),S=p("el-form"),k=p("el-input-number"),j=p("el-slider"),Q=p("el-card");return _(),f("div",ie,[a(Q,{class:"config-card"},{header:u(()=>[...e[11]||(e[11]=[t("span",null,"🧹 存储清理",-1)])]),default:u(()=>[t("div",re,[t("div",pe,[e[15]||(e[15]=t("div",{class:"cleanup-group-label"},"⏱ 基础清理策略",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"自动清理"},{default:u(()=>[t("div",de,[a(n,{modelValue:U.value,"onUpdate:modelValue":e[0]||(e[0]=o=>U.value=o),size:"small"},null,8,["modelValue"]),e[12]||(e[12]=t("span",{class:"cleanup-hint"},"每天自动检查一次,删除过期日志、移入回收站文件",-1))])]),_:1}),a(i,{label:"清空回收站"},{default:u(()=>[t("div",ce,[a(n,{modelValue:E.value,"onUpdate:modelValue":e[1]||(e[1]=o=>E.value=o),size:"small"},null,8,["modelValue"]),e[13]||(e[13]=t("span",{class:"cleanup-hint"},"清理时一并清空各网盘回收站",-1))])]),_:1}),a(i,{label:"白名单目录"},{default:u(()=>[t("div",_e,[c.value.length?(_(),f("div",me,[(_(!0),f(ee,null,le(c.value,(o,K)=>(_(),N(V,{key:K,closable:"",size:"small",onClose:De=>P(K)},{default:u(()=>[m(v(o),1)]),_:2},1032,["onClose"]))),128))])):g("",!0),t("div",fe,[a(H,{modelValue:w.value,"onUpdate:modelValue":e[2]||(e[2]=o=>w.value=o),placeholder:"输入目录名",size:"small",style:{width:"160px"},onKeyup:ae(F,["enter"])},null,8,["modelValue"]),a(C,{type:"primary",size:"small",onClick:F},{default:u(()=>[...e[14]||(e[14]=[m("添加",-1)])]),_:1})])])]),_:1})]),_:1})]),t("div",ve,[e[20]||(e[20]=t("div",{class:"cleanup-group-label"},"📦 保留设置",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"文件保留"},{default:u(()=>[t("div",ge,[a(k,{modelValue:R.value,"onUpdate:modelValue":e[3]||(e[3]=o=>R.value=o),min:1,max:365,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[16]||(e[16]=t("span",null,"天",-1))])]),_:1}),a(i,{label:"日志保留"},{default:u(()=>[t("div",ye,[a(k,{modelValue:B.value,"onUpdate:modelValue":e[4]||(e[4]=o=>B.value=o),min:1,max:365,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[17]||(e[17]=t("span",null,"天",-1))])]),_:1}),a(i,{label:"Cookie检测"},{default:u(()=>[t("div",he,[a(k,{modelValue:I.value,"onUpdate:modelValue":e[5]||(e[5]=o=>I.value=o),min:5,max:1440,step:5,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[18]||(e[18]=t("span",null,"分钟",-1))])]),_:1}),a(i,{label:"空间校准"},{default:u(()=>[t("div",be,[a(k,{modelValue:J.value,"onUpdate:modelValue":e[6]||(e[6]=o=>J.value=o),min:5,max:1440,step:5,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[19]||(e[19]=t("span",null,"分钟",-1))])]),_:1})]),_:1})]),t("div",xe,[e[22]||(e[22]=t("div",{class:"cleanup-group-label"},"📊 空间阈值自动清理",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"启用"},{default:u(()=>[a(n,{modelValue:x.value,"onUpdate:modelValue":e[7]||(e[7]=o=>x.value=o),size:"small"},null,8,["modelValue"]),e[21]||(e[21]=t("span",{class:"cleanup-hint",style:{"margin-left":"8px"}},"已用空间超过阈值时,按比例删除最旧的转存文件",-1))]),_:1}),x.value?(_(),N(i,{key:0,label:"使用阈值"},{default:u(()=>[a(j,{modelValue:M.value,"onUpdate:modelValue":e[8]||(e[8]=o=>M.value=o),min:50,max:99,style:{width:"140px"},"show-input":"",size:"small"},null,8,["modelValue"])]),_:1})):g("",!0),x.value?(_(),N(i,{key:1,label:"删除比例"},{default:u(()=>[a(j,{modelValue:W.value,"onUpdate:modelValue":e[9]||(e[9]=o=>W.value=o),min:5,max:50,step:5,style:{width:"140px"},"show-input":"",size:"small"},null,8,["modelValue"])]),_:1})):g("",!0)]),_:1})]),t("div",we,[e[24]||(e[24]=t("div",{class:"cleanup-group-label"},"🔗 分享链接复用",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"复用"},{default:u(()=>[a(n,{modelValue:$.value,"onUpdate:modelValue":e[10]||(e[10]=o=>$.value=o),size:"small"},null,8,["modelValue"]),e[23]||(e[23]=t("span",{class:"cleanup-hint",style:{"margin-left":"8px"}},"相同原始链接不再重复转存,复用已有分享链接(会自动验证原链接有效性;60秒内重复请求直接返回已有链接)",-1))]),_:1})]),_:1})])]),t("div",Ve,[t("div",Ce,[a(C,{type:"primary",loading:z.value,onClick:A},{default:u(()=>[...e[25]||(e[25]=[m("💾 保存清理配置",-1)])]),_:1},8,["loading"]),a(C,{type:"danger",loading:h.value,onClick:q},{default:u(()=>[m(v(h.value?"清理中...":"🗑️ 立即清理"),1)]),_:1},8,["loading"]),a(C,{type:"warning",loading:b.value,onClick:G},{default:u(()=>[m(v(b.value?"清空中...":"🧹 清空回收站"),1)]),_:1},8,["loading"])]),D.value?(_(),f("div",Se,[m(" ⏰ 上次清理:"+v(D.value)+" ",1),T.value?(_(),f("span",ke,"📊 "+v(T.value),1)):g("",!0)])):g("",!0)])]),_:1})])}}}),Ee=ue(ze,[["__scopeId","data-v-dfd5abc7"]]);export{Ee as default};
+import{d as X,o as Y,a as _,c as f,f as a,w as u,j as p,i as Z,b as t,F as ee,r as le,y as N,l as m,t as v,e as g,g as ae,h as y,v as r,E as d}from"./index-B3brQT6g.js";import{k as te,p as se,r as ne,v as oe,_ as ue}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const ie={class:"cleanup-section"},re={class:"cleanup-grid"},pe={class:"cleanup-group"},de={style:{display:"flex","align-items":"center",gap:"10px","flex-wrap":"wrap"}},ce={style:{display:"flex","align-items":"center",gap:"10px"}},_e={style:{width:"100%"}},me={key:0,style:{display:"flex",gap:"6px","flex-wrap":"wrap","margin-bottom":"6px"}},fe={style:{display:"flex",gap:"6px"}},ve={class:"cleanup-group"},ge={style:{display:"flex","align-items":"center",gap:"8px"}},ye={style:{display:"flex","align-items":"center",gap:"8px"}},he={style:{display:"flex","align-items":"center",gap:"8px"}},be={style:{display:"flex","align-items":"center",gap:"8px"}},xe={class:"cleanup-group"},we={class:"cleanup-group"},Ve={class:"cleanup-actions"},Ce={class:"cleanup-actions-buttons"},Se={key:0,class:"cleanup-info"},ke={key:0,style:{"margin-left":"12px"}},ze=X({__name:"Cleanup",setup(Ne){const s=Z({}),h=y(!1),b=y(!1),z=y(!1),D=r(()=>String(s.cleanup_last_run||"")),T=r(()=>{const l=String(s.cleanup_last_stats||"");if(!l)return"";try{const e=JSON.parse(l),n=[];return e.filesTrashed>0&&n.push(`移入回收站 ${e.filesTrashed} 个文件夹`),e.logsDeleted>0&&n.push(`删除 ${e.logsDeleted} 条日志`),e.trashEmptied&&n.push("已清空回收站"),e.errors>0&&n.push(`⚠️ ${e.errors} 个错误`),n.join(" / ")||"无操作"}catch{return""}}),U=r({get:()=>String(s.cleanup_enabled)==="true",set:l=>{s.cleanup_enabled=l?"true":"false"}}),E=r({get:()=>String(s.cleanup_empty_trash)!=="false",set:l=>{s.cleanup_empty_trash=l?"true":"false"}}),R=r({get:()=>Number(s.cleanup_file_retention_days??7),set:l=>{s.cleanup_file_retention_days=l}}),B=r({get:()=>Number(s.cleanup_log_retention_days??30),set:l=>{s.cleanup_log_retention_days=l}}),x=r({get:()=>String(s.cleanup_space_threshold_enabled)==="true",set:l=>{s.cleanup_space_threshold_enabled=l?"true":"false"}}),M=r({get:()=>Number(s.cleanup_space_threshold_percent??90),set:l=>{s.cleanup_space_threshold_percent=l}}),W=r({get:()=>Number(s.cleanup_space_threshold_delete_percent??10),set:l=>{s.cleanup_space_threshold_delete_percent=l}}),$=r({get:()=>String(s.save_reuse_enabled)!=="false",set:l=>{s.save_reuse_enabled=l?"true":"false"}}),c=y([]),w=y("");function L(){try{const l=String(s.cleanup_whitelist_dirs||"[]");c.value=JSON.parse(l)}catch{c.value=[]}}function F(){const l=w.value.trim();if(l){if(c.value.includes(l)){d.warning("该目录已在白名单中");return}c.value.push(l),w.value=""}}function P(l){c.value.splice(l,1)}const I=r({get:()=>Number(s.cleanup_verify_interval??30),set:l=>{s.cleanup_verify_interval=l}}),J=r({get:()=>Number(s.storage_refresh_interval??180),set:l=>{s.storage_refresh_interval=l}});async function O(){try{const l=await te();for(const e of l)s[e.key]=e.value;L()}catch(l){console.error("加载清理配置失败",l)}}async function A(){var l,e;z.value=!0;try{const i=["cleanup_enabled","cleanup_file_retention_days","cleanup_log_retention_days","cleanup_empty_trash","cleanup_space_threshold_enabled","cleanup_space_threshold_percent","cleanup_space_threshold_delete_percent","save_reuse_enabled","cleanup_verify_interval","storage_refresh_interval"].map(V=>({key:V,value:String(s[V]??"")}));i.push({key:"cleanup_whitelist_dirs",value:JSON.stringify(c.value)}),await se(i),d.success("清理配置已保存")}catch(n){d.error(((e=(l=n.response)==null?void 0:l.data)==null?void 0:e.error)||"保存失败")}finally{z.value=!1}}async function q(){var l,e;h.value=!0;try{const n=await ne();n.success?d.success(n.message):d.warning(n.message),await O()}catch(n){d.error(((e=(l=n.response)==null?void 0:l.data)==null?void 0:e.error)||"清理失败")}finally{h.value=!1}}async function G(){var l,e;b.value=!0;try{const n=await oe();n.success?d.success(n.message):d.warning(n.message)}catch(n){d.error(((e=(l=n.response)==null?void 0:l.data)==null?void 0:e.error)||"清空回收站失败")}finally{b.value=!1}}return Y(()=>{O()}),(l,e)=>{const n=p("el-switch"),i=p("el-form-item"),V=p("el-tag"),H=p("el-input"),C=p("el-button"),S=p("el-form"),k=p("el-input-number"),j=p("el-slider"),Q=p("el-card");return _(),f("div",ie,[a(Q,{class:"config-card"},{header:u(()=>[...e[11]||(e[11]=[t("span",null,"🧹 存储清理",-1)])]),default:u(()=>[t("div",re,[t("div",pe,[e[15]||(e[15]=t("div",{class:"cleanup-group-label"},"⏱ 基础清理策略",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"自动清理"},{default:u(()=>[t("div",de,[a(n,{modelValue:U.value,"onUpdate:modelValue":e[0]||(e[0]=o=>U.value=o),size:"small"},null,8,["modelValue"]),e[12]||(e[12]=t("span",{class:"cleanup-hint"},"每天自动检查一次,删除过期日志、移入回收站文件",-1))])]),_:1}),a(i,{label:"清空回收站"},{default:u(()=>[t("div",ce,[a(n,{modelValue:E.value,"onUpdate:modelValue":e[1]||(e[1]=o=>E.value=o),size:"small"},null,8,["modelValue"]),e[13]||(e[13]=t("span",{class:"cleanup-hint"},"清理时一并清空各网盘回收站",-1))])]),_:1}),a(i,{label:"白名单目录"},{default:u(()=>[t("div",_e,[c.value.length?(_(),f("div",me,[(_(!0),f(ee,null,le(c.value,(o,K)=>(_(),N(V,{key:K,closable:"",size:"small",onClose:De=>P(K)},{default:u(()=>[m(v(o),1)]),_:2},1032,["onClose"]))),128))])):g("",!0),t("div",fe,[a(H,{modelValue:w.value,"onUpdate:modelValue":e[2]||(e[2]=o=>w.value=o),placeholder:"输入目录名",size:"small",style:{width:"160px"},onKeyup:ae(F,["enter"])},null,8,["modelValue"]),a(C,{type:"primary",size:"small",onClick:F},{default:u(()=>[...e[14]||(e[14]=[m("添加",-1)])]),_:1})])])]),_:1})]),_:1})]),t("div",ve,[e[20]||(e[20]=t("div",{class:"cleanup-group-label"},"📦 保留设置",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"文件保留"},{default:u(()=>[t("div",ge,[a(k,{modelValue:R.value,"onUpdate:modelValue":e[3]||(e[3]=o=>R.value=o),min:1,max:365,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[16]||(e[16]=t("span",null,"天",-1))])]),_:1}),a(i,{label:"日志保留"},{default:u(()=>[t("div",ye,[a(k,{modelValue:B.value,"onUpdate:modelValue":e[4]||(e[4]=o=>B.value=o),min:1,max:365,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[17]||(e[17]=t("span",null,"天",-1))])]),_:1}),a(i,{label:"Cookie检测"},{default:u(()=>[t("div",he,[a(k,{modelValue:I.value,"onUpdate:modelValue":e[5]||(e[5]=o=>I.value=o),min:5,max:1440,step:5,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[18]||(e[18]=t("span",null,"分钟",-1))])]),_:1}),a(i,{label:"空间校准"},{default:u(()=>[t("div",be,[a(k,{modelValue:J.value,"onUpdate:modelValue":e[6]||(e[6]=o=>J.value=o),min:5,max:1440,step:5,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[19]||(e[19]=t("span",null,"分钟",-1))])]),_:1})]),_:1})]),t("div",xe,[e[22]||(e[22]=t("div",{class:"cleanup-group-label"},"📊 空间阈值自动清理",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"启用"},{default:u(()=>[a(n,{modelValue:x.value,"onUpdate:modelValue":e[7]||(e[7]=o=>x.value=o),size:"small"},null,8,["modelValue"]),e[21]||(e[21]=t("span",{class:"cleanup-hint",style:{"margin-left":"8px"}},"已用空间超过阈值时,按比例删除最旧的转存文件",-1))]),_:1}),x.value?(_(),N(i,{key:0,label:"使用阈值"},{default:u(()=>[a(j,{modelValue:M.value,"onUpdate:modelValue":e[8]||(e[8]=o=>M.value=o),min:50,max:99,style:{width:"140px"},"show-input":"",size:"small"},null,8,["modelValue"])]),_:1})):g("",!0),x.value?(_(),N(i,{key:1,label:"删除比例"},{default:u(()=>[a(j,{modelValue:W.value,"onUpdate:modelValue":e[9]||(e[9]=o=>W.value=o),min:5,max:50,step:5,style:{width:"140px"},"show-input":"",size:"small"},null,8,["modelValue"])]),_:1})):g("",!0)]),_:1})]),t("div",we,[e[24]||(e[24]=t("div",{class:"cleanup-group-label"},"🔗 分享链接复用",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"复用"},{default:u(()=>[a(n,{modelValue:$.value,"onUpdate:modelValue":e[10]||(e[10]=o=>$.value=o),size:"small"},null,8,["modelValue"]),e[23]||(e[23]=t("span",{class:"cleanup-hint",style:{"margin-left":"8px"}},"相同原始链接不再重复转存,复用已有分享链接(会自动验证原链接有效性;60秒内重复请求直接返回已有链接)",-1))]),_:1})]),_:1})])]),t("div",Ve,[t("div",Ce,[a(C,{type:"primary",loading:z.value,onClick:A},{default:u(()=>[...e[25]||(e[25]=[m("💾 保存清理配置",-1)])]),_:1},8,["loading"]),a(C,{type:"danger",loading:h.value,onClick:q},{default:u(()=>[m(v(h.value?"清理中...":"🗑️ 立即清理"),1)]),_:1},8,["loading"]),a(C,{type:"warning",loading:b.value,onClick:G},{default:u(()=>[m(v(b.value?"清空中...":"🧹 清空回收站"),1)]),_:1},8,["loading"])]),D.value?(_(),f("div",Se,[m(" ⏰ 上次清理:"+v(D.value)+" ",1),T.value?(_(),f("span",ke,"📊 "+v(T.value),1)):g("",!0)])):g("",!0)])]),_:1})])}}}),Ee=ue(ze,[["__scopeId","data-v-dfd5abc7"]]);export{Ee as default};
diff --git a/source_clean/frontend-src/dist-vite/assets/CloudBadge-CbpZHKLy.js b/source_clean/frontend-src/dist-vite/assets/CloudBadge-CDvk35W2.js
similarity index 78%
rename from source_clean/frontend-src/dist-vite/assets/CloudBadge-CbpZHKLy.js
rename to source_clean/frontend-src/dist-vite/assets/CloudBadge-CDvk35W2.js
index 556a21a..f73e36f 100644
--- a/source_clean/frontend-src/dist-vite/assets/CloudBadge-CbpZHKLy.js
+++ b/source_clean/frontend-src/dist-vite/assets/CloudBadge-CDvk35W2.js
@@ -1 +1 @@
-import{C as s,b as a,a as n}from"./index-Bn7NwETH.js";import{d as l,a as t,c,p as d,k as o,e as r,l as u,t as m}from"./index-D_srC3bj.js";import{_}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const p=["src"],i=l({__name:"CloudBadge",props:{cloud_type:{},showIcon:{type:Boolean}},setup(e){return(C,y)=>(t(),c("span",{class:"cloud-badge",style:d({background:o(s)[e.cloud_type]})},[e.showIcon&&o(a)[e.cloud_type]?(t(),c("img",{key:0,src:o(a)[e.cloud_type],class:"badge-icon"},null,8,p)):r("",!0),u(" "+m(o(n)[e.cloud_type]),1)],4))}}),L=_(i,[["__scopeId","data-v-9106805f"]]);export{L as C};
+import{C as s,b as a,a as n}from"./index-Bn7NwETH.js";import{d as l,a as t,c,p as d,k as o,e as r,l as u,t as m}from"./index-B3brQT6g.js";import{_}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const p=["src"],i=l({__name:"CloudBadge",props:{cloud_type:{},showIcon:{type:Boolean}},setup(e){return(C,y)=>(t(),c("span",{class:"cloud-badge",style:d({background:o(s)[e.cloud_type]})},[e.showIcon&&o(a)[e.cloud_type]?(t(),c("img",{key:0,src:o(a)[e.cloud_type],class:"badge-icon"},null,8,p)):r("",!0),u(" "+m(o(n)[e.cloud_type]),1)],4))}}),L=_(i,[["__scopeId","data-v-9106805f"]]);export{L as C};
diff --git a/source_clean/frontend-src/dist-vite/assets/CloudConfig-3znuBWUR.js b/source_clean/frontend-src/dist-vite/assets/CloudConfig-0YLAk8H4.js
similarity index 99%
rename from source_clean/frontend-src/dist-vite/assets/CloudConfig-3znuBWUR.js
rename to source_clean/frontend-src/dist-vite/assets/CloudConfig-0YLAk8H4.js
index d85e47e..62dc683 100644
--- a/source_clean/frontend-src/dist-vite/assets/CloudConfig-3znuBWUR.js
+++ b/source_clean/frontend-src/dist-vite/assets/CloudConfig-0YLAk8H4.js
@@ -1,4 +1,4 @@
-import{d as ke,o as L,m as ve,E as _,a as c,c as k,f as n,w as a,b as r,h as C,j as p,i as be,F as R,r as K,t as v,y as g,l as d,e as A,k as Ce,M as he,p as xe,n as H,K as Be,L as Te,v as h}from"./index-D_srC3bj.js";import{a as x}from"./index-Bn7NwETH.js";import{c as we,k as Fe,h as Ne,l as G,t as Ve,u as P,m as ze,n as Se,o as $e,_ as Ue}from"./_plugin-vue_export-helper-1Z-znrfZ.js";import{C as De}from"./CloudBadge-CbpZHKLy.js";const Ie={class:"cloud-config"},Me={class:"cloud-toggle-grid"},Oe=["src"],qe={class:"cloud-label"},Ee={class:"toolbar"},Le={key:0,class:"nickname-text"},Re={key:0,class:"promotion-text"},Ke={key:0,class:"uid-cell"},Ae={key:0,class:"verifying"},He={key:0,class:"storage-cell"},Ge={class:"storage-bar-wrap"},Pe={class:"storage-text"},je={class:"storage-used"},Je={class:"storage-total"},Qe={class:"storage-free"},We={key:0,class:"save-count"},Xe={style:{"line-height":"1.6"}},Ye={class:"cookie-tips-header"},Ze={class:"cookie-tips-title"},et=["innerHTML"],tt=ke({__name:"CloudConfig",setup(ot){const z=C([]),D=C(),F=C([]),B=C(!1),T=C(!1),b=C(null),l=be({cloud_type:"",nickname:"",promotion_account:"",is_transfer_enabled:!1,cookie:"",_verifying:!1,_storageUsed:"",_storageTotal:""}),j=h(()=>({cloud_type:[{required:!0,message:"请选择网盘类型",trigger:"change"}],nickname:[{required:!1,message:"请填写昵称(区分多个同类型网盘)",trigger:"blur"}],promotion_account:[{required:!0,message:"请填写推广平台及账号",trigger:"blur"}]})),J=h(()=>Object.entries(x)),Q=h(()=>{if(!l.cloud_type)return"请先选择网盘类型";const t=l.cloud_type;return t==="quark"||t==="baidu"?`请输入 ${x[t]||t} 的完整 Cookie`:b.value?"留空则保持原有":"输入完整 Cookie"}),W=h(()=>x[l.cloud_type]||l.cloud_type||""),X=h(()=>{const t=l.cloud_type;return t?{quark:`
在电脑上打开 pan.quark.cn 并登录你的夸克账号
+import{d as ke,o as L,m as ve,E as _,a as c,c as k,f as n,w as a,b as r,h as C,j as p,i as be,F as R,r as K,t as v,y as g,l as d,e as A,k as Ce,M as he,p as xe,n as H,K as Be,L as Te,v as h}from"./index-B3brQT6g.js";import{a as x}from"./index-Bn7NwETH.js";import{c as we,k as Fe,h as Ne,l as G,t as Ve,u as P,m as ze,n as Se,o as $e,_ as Ue}from"./_plugin-vue_export-helper-1Z-znrfZ.js";import{C as De}from"./CloudBadge-CDvk35W2.js";const Ie={class:"cloud-config"},Me={class:"cloud-toggle-grid"},Oe=["src"],qe={class:"cloud-label"},Ee={class:"toolbar"},Le={key:0,class:"nickname-text"},Re={key:0,class:"promotion-text"},Ke={key:0,class:"uid-cell"},Ae={key:0,class:"verifying"},He={key:0,class:"storage-cell"},Ge={class:"storage-bar-wrap"},Pe={class:"storage-text"},je={class:"storage-used"},Je={class:"storage-total"},Qe={class:"storage-free"},We={key:0,class:"save-count"},Xe={style:{"line-height":"1.6"}},Ye={class:"cookie-tips-header"},Ze={class:"cookie-tips-title"},et=["innerHTML"],tt=ke({__name:"CloudConfig",setup(ot){const z=C([]),D=C(),F=C([]),B=C(!1),T=C(!1),b=C(null),l=be({cloud_type:"",nickname:"",promotion_account:"",is_transfer_enabled:!1,cookie:"",_verifying:!1,_storageUsed:"",_storageTotal:""}),j=h(()=>({cloud_type:[{required:!0,message:"请选择网盘类型",trigger:"change"}],nickname:[{required:!1,message:"请填写昵称(区分多个同类型网盘)",trigger:"blur"}],promotion_account:[{required:!0,message:"请填写推广平台及账号",trigger:"blur"}]})),J=h(()=>Object.entries(x)),Q=h(()=>{if(!l.cloud_type)return"请先选择网盘类型";const t=l.cloud_type;return t==="quark"||t==="baidu"?`请输入 ${x[t]||t} 的完整 Cookie`:b.value?"留空则保持原有":"输入完整 Cookie"}),W=h(()=>x[l.cloud_type]||l.cloud_type||""),X=h(()=>{const t=l.cloud_type;return t?{quark:`在电脑上打开 pan.quark.cn 并登录你的夸克账号
按 F12 打开开发者工具 → 切换到 网络 (Network) 选项卡
刷新页面,在请求列表中点击任意一个请求(如 account/info)
在右侧 请求头 (Request Headers) 中找到 Cookie 字段
diff --git a/source_clean/frontend-src/dist-vite/assets/HomePage-BHaWaDn9.css b/source_clean/frontend-src/dist-vite/assets/HomePage-BHaWaDn9.css
new file mode 100644
index 0000000..2e6edef
--- /dev/null
+++ b/source_clean/frontend-src/dist-vite/assets/HomePage-BHaWaDn9.css
@@ -0,0 +1 @@
+.home-page[data-v-c48c836b]{min-height:100vh;display:flex;flex-direction:column}.hero-section[data-v-c48c836b]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 24px 40px}.logo-text[data-v-c48c836b]{font-size:64px;font-weight:700;color:var(--primary-color);margin-bottom:32px;letter-spacing:-2px}.logo-img[data-v-c48c836b]{max-width:500px;max-height:120px;width:auto;height:auto;object-fit:contain;margin-bottom:32px}.search-box[data-v-c48c836b]{display:flex;align-items:center;width:100%;max-width:640px;border:1px solid #dfe1e5;border-radius:24px;background:#fff;box-shadow:none;transition:box-shadow .2s,border-color .2s;overflow:hidden}.search-box[data-v-c48c836b]:focus-within{box-shadow:0 1px 6px #20212447;border-color:#dfe1e500}.search-box[data-v-c48c836b] .el-input__wrapper{border:none;box-shadow:none;background:transparent;padding:4px 20px;border-radius:0}.search-box[data-v-c48c836b] .el-input__inner{font-size:15px}.search-btn[data-v-c48c836b]{flex-shrink:0;border:none;border-radius:999px;padding:0 24px;height:38px;line-height:38px;margin:4px;font-size:14px;font-weight:600;background:var(--primary-color);color:#fff;cursor:pointer;transition:all .2s;letter-spacing:1px}.search-btn[data-v-c48c836b]:hover{background:#3a7be0}.search-btn[data-v-c48c836b]:active{background:#2d6ccf}.quote-section[data-v-c48c836b]{margin-top:18px;max-width:640px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.quote-text[data-v-c48c836b]{font-size:14px;color:#aab0b8;font-style:italic;letter-spacing:.5px}.quote-author[data-v-c48c836b]{font-size:12px;color:#c0c4cc;display:inline-block;margin-left:4px}.content-section[data-v-c48c836b]{max-width:1500px;width:100%;margin:0 auto;padding:0 16px 60px}.rankings-grid[data-v-c48c836b]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;margin-top:8px}.rank-panel[data-v-c48c836b]{background:var(--bg-white,#fff);border-radius:12px;padding:14px;border:1px solid #ebeef5;box-shadow:0 1px 4px #0000000a;display:flex;flex-direction:column}.panel-header[data-v-c48c836b]{display:flex;align-items:center;justify-content:space-between;padding-bottom:10px;border-bottom:2px solid #f0f0f0;margin-bottom:4px}.panel-title[data-v-c48c836b]{font-size:15px;font-weight:700;color:#303133;white-space:nowrap}.panel-tabs[data-v-c48c836b]{display:flex;gap:2px;background:#f0f2f5;border-radius:6px;padding:2px}.panel-tab[data-v-c48c836b]{font-size:11px;padding:3px 10px;border-radius:5px;cursor:pointer;color:#909399;font-weight:500;transition:all .2s;-webkit-user-select:none;user-select:none}.panel-tab.active[data-v-c48c836b]{background:#fff;color:var(--primary-color);font-weight:600;box-shadow:0 1px 3px #0000000f}.panel-body[data-v-c48c836b]{flex:1;display:flex;flex-direction:column;gap:1px}.rank-item[data-v-c48c836b]{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:6px;cursor:pointer;transition:background .15s}.rank-item[data-v-c48c836b]:hover{background:#f0f5ff}.rank-item[data-v-c48c836b]:active{background:#e6f0ff}.rank-idx[data-v-c48c836b]{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#909399;background:#f0f0f0;flex-shrink:0}.rank-idx.top-three[data-v-c48c836b]{background:var(--primary-color);color:#fff}.rank-name[data-v-c48c836b]{flex:1;min-width:0;font-size:13px;font-weight:500;color:#303133;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank-cnt[data-v-c48c836b]{font-size:11px;color:#c0c4cc;white-space:nowrap;flex-shrink:0}.rank-expand[data-v-c48c836b]{text-align:center;padding:6px;margin-top:2px;font-size:12px;color:var(--primary-color);cursor:pointer;border-radius:6px;transition:background .15s;-webkit-user-select:none;user-select:none}.rank-expand[data-v-c48c836b]:hover{background:#ecf5ff}.panel-footer[data-v-c48c836b]{margin-top:8px;padding-top:8px;border-top:1px solid #f0f0f0;display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#c0c4cc}.footer-time[data-v-c48c836b]{font-family:monospace;font-size:10px}@media (max-width: 900px){.hero-section[data-v-c48c836b]{padding:36px 16px 24px}.logo-text[data-v-c48c836b]{font-size:36px;margin-bottom:20px}.logo-img[data-v-c48c836b]{max-width:360px;max-height:100px;margin-bottom:20px}.rankings-scroll[data-v-c48c836b]{gap:12px}}.site-footer[data-v-c48c836b]{margin-top:auto;padding:20px 16px 32px;background:#f9fafb;border-top:1px solid #ebeef5}.footer-inner[data-v-c48c836b]{max-width:800px;margin:0 auto;font-size:12px;line-height:1.8;color:#909399;text-align:center;white-space:pre-line}.footer-actions[data-v-c48c836b]{display:flex;justify-content:center;align-items:center;gap:12px;margin-top:12px}.footer-disclaimer-btn[data-v-c48c836b]{font-size:12px!important;color:#909399!important}.footer-disclaimer-btn[data-v-c48c836b]:hover{color:#409eff!important}
diff --git a/source_clean/frontend-src/dist-vite/assets/HomePage-BVcQlSvu.css b/source_clean/frontend-src/dist-vite/assets/HomePage-BVcQlSvu.css
deleted file mode 100644
index 9f62b4b..0000000
--- a/source_clean/frontend-src/dist-vite/assets/HomePage-BVcQlSvu.css
+++ /dev/null
@@ -1 +0,0 @@
-.home-page[data-v-1f536d99]{min-height:100vh;display:flex;flex-direction:column}.hero-section[data-v-1f536d99]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 24px 40px}.logo-text[data-v-1f536d99]{font-size:64px;font-weight:700;color:var(--primary-color);margin-bottom:32px;letter-spacing:-2px}.logo-img[data-v-1f536d99]{max-width:500px;max-height:120px;width:auto;height:auto;object-fit:contain;margin-bottom:32px}.search-box[data-v-1f536d99]{display:flex;align-items:center;width:100%;max-width:640px;border:1px solid #dfe1e5;border-radius:24px;background:#fff;box-shadow:none;transition:box-shadow .2s,border-color .2s;overflow:hidden}.search-box[data-v-1f536d99]:focus-within{box-shadow:0 1px 6px #20212447;border-color:#dfe1e500}.search-box[data-v-1f536d99] .el-input__wrapper{border:none;box-shadow:none;background:transparent;padding:4px 20px;border-radius:0}.search-box[data-v-1f536d99] .el-input__inner{font-size:15px}.search-btn[data-v-1f536d99]{flex-shrink:0;border:none;border-radius:999px;padding:0 24px;height:38px;line-height:38px;margin:4px;font-size:14px;font-weight:600;background:var(--primary-color);color:#fff;cursor:pointer;transition:all .2s;letter-spacing:1px}.search-btn[data-v-1f536d99]:hover{background:#3a7be0}.search-btn[data-v-1f536d99]:active{background:#2d6ccf}.quote-section[data-v-1f536d99]{margin-top:18px;max-width:640px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.quote-text[data-v-1f536d99]{font-size:14px;color:#aab0b8;font-style:italic;letter-spacing:.5px}.quote-author[data-v-1f536d99]{font-size:12px;color:#c0c4cc;display:inline-block;margin-left:4px}.content-section[data-v-1f536d99]{max-width:1500px;width:100%;margin:0 auto;padding:0 16px 60px}.rankings-grid[data-v-1f536d99]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;margin-top:8px}.rank-panel[data-v-1f536d99]{background:var(--bg-white,#fff);border-radius:12px;padding:14px;border:1px solid #ebeef5;box-shadow:0 1px 4px #0000000a;display:flex;flex-direction:column}.panel-header[data-v-1f536d99]{display:flex;align-items:center;justify-content:space-between;padding-bottom:10px;border-bottom:2px solid #f0f0f0;margin-bottom:4px}.panel-title[data-v-1f536d99]{font-size:15px;font-weight:700;color:#303133;white-space:nowrap}.panel-tabs[data-v-1f536d99]{display:flex;gap:2px;background:#f0f2f5;border-radius:6px;padding:2px}.panel-tab[data-v-1f536d99]{font-size:11px;padding:3px 10px;border-radius:5px;cursor:pointer;color:#909399;font-weight:500;transition:all .2s;-webkit-user-select:none;user-select:none}.panel-tab.active[data-v-1f536d99]{background:#fff;color:var(--primary-color);font-weight:600;box-shadow:0 1px 3px #0000000f}.panel-body[data-v-1f536d99]{flex:1;display:flex;flex-direction:column;gap:1px}.rank-item[data-v-1f536d99]{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:6px;cursor:pointer;transition:background .15s}.rank-item[data-v-1f536d99]:hover{background:#f0f5ff}.rank-item[data-v-1f536d99]:active{background:#e6f0ff}.rank-idx[data-v-1f536d99]{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#909399;background:#f0f0f0;flex-shrink:0}.rank-idx.top-three[data-v-1f536d99]{background:var(--primary-color);color:#fff}.rank-name[data-v-1f536d99]{flex:1;min-width:0;font-size:13px;font-weight:500;color:#303133;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank-cnt[data-v-1f536d99]{font-size:11px;color:#c0c4cc;white-space:nowrap;flex-shrink:0}.rank-expand[data-v-1f536d99]{text-align:center;padding:6px;margin-top:2px;font-size:12px;color:var(--primary-color);cursor:pointer;border-radius:6px;transition:background .15s;-webkit-user-select:none;user-select:none}.rank-expand[data-v-1f536d99]:hover{background:#ecf5ff}.panel-footer[data-v-1f536d99]{margin-top:8px;padding-top:8px;border-top:1px solid #f0f0f0;display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#c0c4cc}.footer-time[data-v-1f536d99]{font-family:monospace;font-size:10px}@media (max-width: 900px){.hero-section[data-v-1f536d99]{padding:36px 16px 24px}.logo-text[data-v-1f536d99]{font-size:36px;margin-bottom:20px}.logo-img[data-v-1f536d99]{max-width:360px;max-height:100px;margin-bottom:20px}.rankings-scroll[data-v-1f536d99]{gap:12px}}.site-footer[data-v-1f536d99]{margin-top:auto;padding:20px 16px 32px;background:#f9fafb;border-top:1px solid #ebeef5}.footer-inner[data-v-1f536d99]{max-width:800px;margin:0 auto;font-size:12px;line-height:1.8;color:#909399;text-align:center;white-space:pre-line}.footer-actions[data-v-1f536d99]{display:flex;justify-content:center;align-items:center;gap:12px;margin-top:12px}.footer-disclaimer-btn[data-v-1f536d99]{font-size:12px!important;color:#909399!important}.footer-disclaimer-btn[data-v-1f536d99]:hover{color:#409eff!important}
diff --git a/source_clean/frontend-src/dist-vite/assets/HomePage-BdsJIIWj.js b/source_clean/frontend-src/dist-vite/assets/HomePage-BdsJIIWj.js
new file mode 100644
index 0000000..6e17e55
--- /dev/null
+++ b/source_clean/frontend-src/dist-vite/assets/HomePage-BdsJIIWj.js
@@ -0,0 +1 @@
+import{d as Q,o as G,a as n,c as a,b as o,F as w,t as c,e as h,f as p,w as f,g as W,r as D,h as l,i as M,j as x,u as Y,k as J,s as X,l as R,n as I}from"./index-B3brQT6g.js";import{g as Z,a as ee,_ as te}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const se={class:"home-page"},oe={class:"hero-section"},ne=["src","alt"],ae={key:1,class:"logo-text"},ie={class:"search-box"},ce={key:1,class:"quote-section"},le={class:"quote-text"},re={class:"quote-author"},ue={class:"content-section"},de={key:0,class:"rankings-grid"},_e={class:"panel-header"},he={class:"panel-title"},pe={class:"panel-tabs"},ve=["onClick"],ge=["onClick"],fe={class:"panel-body"},me=["onClick"],ye={class:"rank-name"},ke={class:"rank-cnt"},Ce=["onClick"],be={class:"panel-footer"},we={key:0},xe={key:1},Ie={key:2},qe={key:3},Se={class:"footer-time"},Ae={key:0,class:"site-footer"},Te={class:"footer-inner"},Ne={class:"footer-actions"},E=8,Ve=Q({__name:"HomePage",setup($e){const q=Y(),m=l(""),u=l([]),d=M({}),_=M({}),v=l(""),y=l(""),k=l(""),S=l(!1),C=l(""),A=l(""),T=["学而时习之,不亦说乎。","温故而知新,可以为师矣。","三人行,必有我师焉。","学而不思则罔,思而不学则殆。","博学之,审问之,慎思之,明辨之,笃行之。","千里之行,始于足下。","不积跬步,无以至千里。","知之为知之,不知为不知,是知也。","工欲善其事,必先利其器。","玉不琢,不成器;人不学,不知道。","学以致用,知行合一。","学海无涯,勤作舟。","书山有路,勤为径。","宝剑锋从磨砺出,梅花香自苦寒来。","锲而不舍,金石可镂。","业精于勤,荒于嬉。","读书破万卷,下笔如有神。","路漫漫其修远兮,吾将上下而求索。","采菊东篱下,悠然见南山。","海内存知己,天涯若比邻。","长风破浪会有时,直挂云帆济沧海。","会当凌绝顶,一览众山小。","山重水复疑无路,柳暗花明又一村。"],N=l(""),F={movie:"🎬",western_movie:"🎥",western_tv:"🌍",donghua:"🐉",global_anime:"🌐",tv:"📺",niche:"💎",hotsite:"🏆"};function L(e){return F[e]||"📋"}function O(e){const t=[];if(e.rating&&t.push(`⭐${e.rating}`),e.searchCount>0){const i=e.searchCount;i>=1e8?t.push(`${(i/1e8).toFixed(1)}亿`):i>=1e4?t.push(`${(i/1e4).toFixed(0)}万`):t.push(String(i))}return t.join(" ")||""}function V(e){return(_[e.category]||"hot")==="hot"?e.hot||[]:e.newest||[]}function U(e){const t=V(e);return d[e.category]?t:t.slice(0,E)}function H(e){return V(e).length>E&&!d[e.category]}function P(e){d[e]=!0}function $(e,t){_[e]=t,d[e]=!1}function j(){window.open("/disclaimer/","_blank")}G(async()=>{const e=T[Math.floor(Math.random()*T.length)];C.value=e,A.value="古籍经典";try{const[t,i]=await Promise.all([Z(),ee()]);t.fetchedAt?(N.value=t.fetchedAt,u.value=t.categories||[]):u.value=Array.isArray(t)?t:[];for(const g of u.value)_[g.category]="hot",d[g.category]=!1;i.site_logo&&(v.value=i.site_logo),i.site_name&&(y.value=i.site_name),i.site_disclaimer&&(k.value=i.site_disclaimer),S.value=!0}catch(t){console.error("加载首页数据失败",t)}});function z(){const e=m.value.trim();e&&q.push("/search?q="+encodeURIComponent(e))}function K(e){q.push("/search?q="+encodeURIComponent(e))}return(e,t)=>{const i=x("el-icon"),g=x("el-input"),B=x("el-button");return n(),a("div",se,[o("div",oe,[S.value?(n(),a(w,{key:0},[v.value?(n(),a("img",{key:0,src:v.value,alt:y.value||"CloudSearch",class:"logo-img",onError:t[0]||(t[0]=s=>{s.target.style.display="none",v.value=""})},null,40,ne)):(n(),a("div",ae,c(y.value||"CloudSearch"),1))],64)):h("",!0),o("div",ie,[p(g,{modelValue:m.value,"onUpdate:modelValue":t[1]||(t[1]=s=>m.value=s),placeholder:"搜索网盘资源,或粘贴视频/网盘链接...",size:"large",clearable:"",onKeyup:W(z,["enter"])},{prefix:f(()=>[p(i,null,{default:f(()=>[p(J(X))]),_:1})]),_:1},8,["modelValue"]),p(B,{type:"primary",size:"large",onClick:z,class:"search-btn"},{default:f(()=>[...t[2]||(t[2]=[R(" 搜 索 ",-1)])]),_:1})]),C.value?(n(),a("div",ce,[o("span",le,"「 "+c(C.value)+" 」",1),o("span",re,"---"+c(A.value),1)])):h("",!0)]),o("div",ue,[u.value.length>0?(n(),a("div",de,[(n(!0),a(w,null,D(u.value,s=>(n(),a("div",{key:s.category,class:"rank-panel"},[o("div",_e,[o("span",he,c(L(s.category))+" "+c(s.label),1),o("div",pe,[o("span",{class:I(["panel-tab",{active:_[s.category]==="hot"}]),onClick:r=>$(s.category,"hot")},"热榜",10,ve),o("span",{class:I(["panel-tab",{active:_[s.category]==="newest"}]),onClick:r=>$(s.category,"newest")},"最新",10,ge)])]),o("div",fe,[(n(!0),a(w,null,D(U(s),(r,b)=>(n(),a("div",{key:s.category+"-"+b,class:"rank-item",onClick:ze=>K(r.keyword)},[o("span",{class:I(["rank-idx",{"top-three":b<3}])},c(b+1),3),o("span",ye,c(r.keyword),1),o("span",ke,c(O(r)),1)],8,me))),128)),H(s)?(n(),a("div",{key:0,class:"rank-expand",onClick:r=>P(s.category)}," 展开全部 ▼ ",8,Ce)):h("",!0)]),o("div",be,[s.category==="hotsite"?(n(),a("span",we,"基于本站搜索数据")):s.category==="donghua"||s.category==="global_anime"?(n(),a("span",xe,"数据来源:Bilibili")):s.category==="movie"||s.category==="tv"?(n(),a("span",Ie,"数据来源:百度")):(n(),a("span",qe,"数据来源:TMDB")),o("span",Se,c(N.value),1)])]))),128))])):h("",!0)]),k.value?(n(),a("div",Ae,[o("div",Te,c(k.value),1),o("div",Ne,[p(B,{class:"footer-disclaimer-btn",size:"small",onClick:j},{default:f(()=>[...t[3]||(t[3]=[R("📜 免责声明",-1)])]),_:1})])])):h("",!0)])}}}),Me=te(Ve,[["__scopeId","data-v-c48c836b"]]);export{Me as default};
diff --git a/source_clean/frontend-src/dist-vite/assets/HomePage-CdqgUFQt.js b/source_clean/frontend-src/dist-vite/assets/HomePage-CdqgUFQt.js
deleted file mode 100644
index 54bd7fc..0000000
--- a/source_clean/frontend-src/dist-vite/assets/HomePage-CdqgUFQt.js
+++ /dev/null
@@ -1 +0,0 @@
-import{d as K,o as G,a as n,c as a,b as o,F as w,t as c,e as h,f as v,w as f,g as Q,r as z,h as l,i as B,j as x,u as W,k as Y,s as J,l as D,n as I}from"./index-D_srC3bj.js";import{g as X,a as Z,_ as ee}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const te={class:"home-page"},se={class:"hero-section"},oe=["src","alt"],ne={key:1,class:"logo-text"},ae={class:"search-box"},ie={key:1,class:"quote-section"},ce={class:"quote-text"},le={class:"quote-author"},re={class:"content-section"},ue={key:0,class:"rankings-grid"},de={class:"panel-header"},_e={class:"panel-title"},he={class:"panel-tabs"},ve=["onClick"],pe=["onClick"],ge={class:"panel-body"},fe=["onClick"],me={class:"rank-name"},ye={class:"rank-cnt"},ke=["onClick"],Ce={class:"panel-footer"},be={key:0},we={key:1},xe={key:2},Ie={key:3},qe={class:"footer-time"},Ae={key:0,class:"site-footer"},Se={class:"footer-inner"},Ne={class:"footer-actions"},R=8,Te=K({__name:"HomePage",setup(Ve){const q=W(),m=l(""),u=l([]),d=B({}),_=B({}),p=l(""),y=l(""),k=l(""),A=l(!1),g=l(""),C=l(""),S=l(""),F={movie:"🎬",western_movie:"🎥",western_tv:"🌍",donghua:"🐉",global_anime:"🌐",tv:"📺",niche:"💎",hotsite:"🏆"};function L(e){return F[e]||"📋"}function j(e){const t=[];if(e.rating&&t.push(`⭐${e.rating}`),e.searchCount>0){const i=e.searchCount;i>=1e8?t.push(`${(i/1e8).toFixed(1)}亿`):i>=1e4?t.push(`${(i/1e4).toFixed(0)}万`):t.push(String(i))}return t.join(" ")||""}function N(e){return(_[e.category]||"hot")==="hot"?e.hot||[]:e.newest||[]}function E(e){const t=N(e);return d[e.category]?t:t.slice(0,R)}function H(e){return N(e).length>R&&!d[e.category]}function M(e){d[e]=!0}function T(e,t){_[e]=t,d[e]=!1}function O(){window.open("/disclaimer/","_blank")}G(async()=>{try{const t=await(await fetch("https://v1.hitokoto.cn/")).json();g.value=t.hitokoto||"",C.value=t.from_who||t.from||""}catch{g.value="学而时习之,不亦说乎。",C.value="孔子"}try{const[e,t]=await Promise.all([X(),Z()]);e.fetchedAt?(S.value=e.fetchedAt,u.value=e.categories||[]):u.value=Array.isArray(e)?e:[];for(const i of u.value)_[i.category]="hot",d[i.category]=!1;t.site_logo&&(p.value=t.site_logo),t.site_name&&(y.value=t.site_name),t.site_disclaimer&&(k.value=t.site_disclaimer),A.value=!0}catch(e){console.error("加载首页数据失败",e)}});function V(){const e=m.value.trim();e&&q.push("/search?q="+encodeURIComponent(e))}function P(e){q.push("/search?q="+encodeURIComponent(e))}return(e,t)=>{const i=x("el-icon"),U=x("el-input"),$=x("el-button");return n(),a("div",te,[o("div",se,[A.value?(n(),a(w,{key:0},[p.value?(n(),a("img",{key:0,src:p.value,alt:y.value||"CloudSearch",class:"logo-img",onError:t[0]||(t[0]=s=>{s.target.style.display="none",p.value=""})},null,40,oe)):(n(),a("div",ne,c(y.value||"CloudSearch"),1))],64)):h("",!0),o("div",ae,[v(U,{modelValue:m.value,"onUpdate:modelValue":t[1]||(t[1]=s=>m.value=s),placeholder:"搜索网盘资源,或粘贴视频/网盘链接...",size:"large",clearable:"",onKeyup:Q(V,["enter"])},{prefix:f(()=>[v(i,null,{default:f(()=>[v(Y(J))]),_:1})]),_:1},8,["modelValue"]),v($,{type:"primary",size:"large",onClick:V,class:"search-btn"},{default:f(()=>[...t[2]||(t[2]=[D(" 搜 索 ",-1)])]),_:1})]),g.value?(n(),a("div",ie,[o("span",ce,"「 "+c(g.value)+" 」",1),o("span",le,"---"+c(C.value),1)])):h("",!0)]),o("div",re,[u.value.length>0?(n(),a("div",ue,[(n(!0),a(w,null,z(u.value,s=>(n(),a("div",{key:s.category,class:"rank-panel"},[o("div",de,[o("span",_e,c(L(s.category))+" "+c(s.label),1),o("div",he,[o("span",{class:I(["panel-tab",{active:_[s.category]==="hot"}]),onClick:r=>T(s.category,"hot")},"热榜",10,ve),o("span",{class:I(["panel-tab",{active:_[s.category]==="newest"}]),onClick:r=>T(s.category,"newest")},"最新",10,pe)])]),o("div",ge,[(n(!0),a(w,null,z(E(s),(r,b)=>(n(),a("div",{key:s.category+"-"+b,class:"rank-item",onClick:$e=>P(r.keyword)},[o("span",{class:I(["rank-idx",{"top-three":b<3}])},c(b+1),3),o("span",me,c(r.keyword),1),o("span",ye,c(j(r)),1)],8,fe))),128)),H(s)?(n(),a("div",{key:0,class:"rank-expand",onClick:r=>M(s.category)}," 展开全部 ▼ ",8,ke)):h("",!0)]),o("div",Ce,[s.category==="hotsite"?(n(),a("span",be,"基于本站搜索数据")):s.category==="donghua"||s.category==="global_anime"?(n(),a("span",we,"数据来源:Bilibili")):s.category==="movie"||s.category==="tv"?(n(),a("span",xe,"数据来源:百度")):(n(),a("span",Ie,"数据来源:TMDB")),o("span",qe,c(S.value),1)])]))),128))])):h("",!0)]),k.value?(n(),a("div",Ae,[o("div",Se,c(k.value),1),o("div",Ne,[v($,{class:"footer-disclaimer-btn",size:"small",onClick:O},{default:f(()=>[...t[3]||(t[3]=[D("📜 免责声明",-1)])]),_:1})])])):h("",!0)])}}}),De=ee(Te,[["__scopeId","data-v-1f536d99"]]);export{De as default};
diff --git a/source_clean/frontend-src/dist-vite/assets/ResultDetail-BLqifyVI.js b/source_clean/frontend-src/dist-vite/assets/ResultDetail-CSF_8kBo.js
similarity index 98%
rename from source_clean/frontend-src/dist-vite/assets/ResultDetail-BLqifyVI.js
rename to source_clean/frontend-src/dist-vite/assets/ResultDetail-CSF_8kBo.js
index 93bd87e..bd747e2 100644
--- a/source_clean/frontend-src/dist-vite/assets/ResultDetail-BLqifyVI.js
+++ b/source_clean/frontend-src/dist-vite/assets/ResultDetail-CSF_8kBo.js
@@ -1 +1 @@
-import{d as U,h as i,o as N,a,c,f as o,w as n,F as j,r as H,y as w,k as G,j as f,b as l,t as r,e as g,z as J,l as p,E as D}from"./index-D_srC3bj.js";import{C as K}from"./CloudBadge-CbpZHKLy.js";import{a as Q}from"./index-Bn7NwETH.js";import{h as W,_ as T,q as X,f as Y,e as Z}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const ee={class:"cloud-select"},le=U({__name:"CloudSelect",props:{modelValue:{}},emits:["select","update:modelValue"],setup(R,{emit:E}){const V=R,t=E,s=i(V.modelValue),C=i([]);N(async()=>{try{C.value=await W()}catch(v){console.error("获取网盘配置失败",v)}});function m(v){t("select",v),t("update:modelValue",v)}return(v,y)=>{const b=f("el-option"),h=f("el-select");return a(),c("div",ee,[o(h,{modelValue:s.value,"onUpdate:modelValue":y[0]||(y[0]=_=>s.value=_),placeholder:"选择目标网盘",onChange:m},{default:n(()=>[(a(!0),c(j,null,H(C.value,_=>(a(),w(b,{key:_.cloud_type,label:_.nickname||G(Q)[_.cloud_type],value:_.cloud_type},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])}}}),te=T(le,[["__scopeId","data-v-098423df"]]),se={class:"result-detail-page"},ae={class:"detail-container"},oe={key:0,class:"loading-state"},ne={key:1,class:"detail-card"},ie={class:"detail-header"},ue={class:"detail-cover"},de=["src","alt"],re={class:"detail-info"},ce={class:"detail-meta"},ve={key:0,class:"detail-desc"},_e={class:"detail-actions"},pe={key:2,class:"detail-card"},fe={class:"detail-video"},me={class:"video-preview"},ye=["src","alt"],ge={class:"video-info"},he={key:0,class:"video-author"},ke={class:"video-platform"},Ve={key:1,class:"detail-desc"},Ce={class:"detail-actions"},we={key:0,class:"video-player-wrapper"},be=["src"],Se={class:"save-dialog-content"},xe={class:"save-file-name"},De={class:"result-dialog-content"},Ee={class:"share-link-box"},Le={class:"share-link-row"},Re=U({__name:"ResultDetail",setup(R){const E=J(),V=i(!1),t=i(null),s=i(null),C=i(!1),m=i(!1),v=i(!1),y=i(""),b=i(!1),h=i(!1),_=i(null),S=i("");N(async()=>{const u=E.params.id;if(u){V.value=!0;try{const e=await X(u);e.intent==="SEARCH"&&e.results.length>0?t.value=e.results[0]:e.intent==="VIDEO_PARSE"&&e.results.length>0&&(s.value=e.results[0])}catch(e){console.error("获取详情失败",e)}finally{V.value=!1}}});function B(){b.value=!!s.value,m.value=!0}function $(){C.value=!0}function A(u){y.value=u}async function I(){if(!y.value){D.warning("请选择目标网盘");return}v.value=!0;try{let u;if(b.value&&s.value)u=await Y({video_url:s.value.video_url,title:s.value.title,target_cloud:y.value});else if(t.value)u=await Z({type:"search",source:t.value,target_cloud:y.value});else return;_.value=u,S.value=u.share_url,m.value=!1,h.value=!0}catch(u){console.error("保存失败",u),D.error("保存失败")}finally{v.value=!1}}async function q(){try{await navigator.clipboard.writeText(S.value),D.success("链接已复制到剪贴板")}catch{D.warning("复制失败,请手动复制")}}return(u,e)=>{const F=f("el-skeleton"),L=f("el-tag"),k=f("el-button"),M=f("el-empty"),z=f("el-dialog"),O=f("el-alert"),P=f("el-input");return a(),c("div",se,[l("div",ae,[V.value?(a(),c("div",oe,[o(F,{rows:6,animated:""})])):t.value?(a(),c("div",ne,[l("div",ie,[l("div",ue,[l("img",{src:t.value.cover,alt:t.value.title},null,8,de),o(K,{cloud_type:t.value.cloud_type},null,8,["cloud_type"])]),l("div",re,[l("h1",null,r(t.value.title),1),l("div",ce,[t.value.file_size?(a(),w(L,{key:0},{default:n(()=>[p("📦 "+r(t.value.file_size),1)]),_:1})):g("",!0),t.value.update_time?(a(),w(L,{key:1},{default:n(()=>[p("🕐 "+r(t.value.update_time),1)]),_:1})):g("",!0),t.value.source?(a(),w(L,{key:2},{default:n(()=>[p("📂 "+r(t.value.source),1)]),_:1})):g("",!0)]),t.value.description?(a(),c("p",ve,r(t.value.description),1)):g("",!0)])]),l("div",_e,[o(k,{type:"primary",size:"large",onClick:B},{default:n(()=>[...e[5]||(e[5]=[p(" 📥 保存到网盘 ",-1)])]),_:1})])])):s.value?(a(),c("div",pe,[l("div",fe,[l("div",me,[l("img",{src:s.value.cover,alt:s.value.title},null,8,ye),l("div",{class:"play-overlay",onClick:$},[...e[6]||(e[6]=[l("div",{class:"play-btn"},"▶ 播放",-1)])])]),l("div",ge,[l("h1",null,r(s.value.title),1),s.value.author?(a(),c("p",he,"👤 "+r(s.value.author),1)):g("",!0),l("p",ke,"📺 "+r(s.value.platform),1),s.value.description?(a(),c("p",Ve,r(s.value.description),1)):g("",!0)])]),l("div",Ce,[o(k,{type:"primary",size:"large",onClick:B},{default:n(()=>[...e[7]||(e[7]=[p(" 📥 保存到云盘 ",-1)])]),_:1})]),C.value?(a(),c("div",we,[l("video",{src:s.value.video_url,controls:"",autoplay:"",class:"video-player"},null,8,be)])):g("",!0)])):(a(),w(M,{key:3,description:"未找到该资源"}))]),o(z,{modelValue:m.value,"onUpdate:modelValue":e[1]||(e[1]=d=>m.value=d),title:"保存到网盘",width:"420px"},{footer:n(()=>[o(k,{onClick:e[0]||(e[0]=d=>m.value=!1)},{default:n(()=>[...e[8]||(e[8]=[p("取消",-1)])]),_:1}),o(k,{type:"primary",loading:v.value,onClick:I},{default:n(()=>[...e[9]||(e[9]=[p("确认保存",-1)])]),_:1},8,["loading"])]),default:n(()=>{var d,x;return[l("div",Se,[l("p",xe,"📄 "+r(((d=t.value)==null?void 0:d.title)||((x=s.value)==null?void 0:x.title)),1),o(te,{onSelect:A})])]}),_:1},8,["modelValue"]),o(z,{modelValue:h.value,"onUpdate:modelValue":e[4]||(e[4]=d=>h.value=d),title:"保存成功",width:"420px"},{footer:n(()=>[o(k,{type:"primary",onClick:e[3]||(e[3]=d=>h.value=!1)},{default:n(()=>[...e[12]||(e[12]=[p("关闭",-1)])]),_:1})]),default:n(()=>{var d;return[l("div",De,[o(O,{type:"success",title:((d=_.value)==null?void 0:d.message)||"保存成功","show-icon":"",closable:!1},null,8,["title"]),l("div",Ee,[e[11]||(e[11]=l("p",{class:"share-label"},"分享链接:",-1)),l("div",Le,[o(P,{modelValue:S.value,"onUpdate:modelValue":e[2]||(e[2]=x=>S.value=x),readonly:""},null,8,["modelValue"]),o(k,{onClick:q},{default:n(()=>[...e[10]||(e[10]=[p("复制",-1)])]),_:1})])])])]}),_:1},8,["modelValue"])])}}}),Te=T(Re,[["__scopeId","data-v-755e2105"]]);export{Te as default};
+import{d as U,h as i,o as N,a,c,f as o,w as n,F as j,r as H,y as w,k as G,j as f,b as l,t as r,e as g,z as J,l as p,E as D}from"./index-B3brQT6g.js";import{C as K}from"./CloudBadge-CDvk35W2.js";import{a as Q}from"./index-Bn7NwETH.js";import{h as W,_ as T,q as X,f as Y,e as Z}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const ee={class:"cloud-select"},le=U({__name:"CloudSelect",props:{modelValue:{}},emits:["select","update:modelValue"],setup(R,{emit:E}){const V=R,t=E,s=i(V.modelValue),C=i([]);N(async()=>{try{C.value=await W()}catch(v){console.error("获取网盘配置失败",v)}});function m(v){t("select",v),t("update:modelValue",v)}return(v,y)=>{const b=f("el-option"),h=f("el-select");return a(),c("div",ee,[o(h,{modelValue:s.value,"onUpdate:modelValue":y[0]||(y[0]=_=>s.value=_),placeholder:"选择目标网盘",onChange:m},{default:n(()=>[(a(!0),c(j,null,H(C.value,_=>(a(),w(b,{key:_.cloud_type,label:_.nickname||G(Q)[_.cloud_type],value:_.cloud_type},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])}}}),te=T(le,[["__scopeId","data-v-098423df"]]),se={class:"result-detail-page"},ae={class:"detail-container"},oe={key:0,class:"loading-state"},ne={key:1,class:"detail-card"},ie={class:"detail-header"},ue={class:"detail-cover"},de=["src","alt"],re={class:"detail-info"},ce={class:"detail-meta"},ve={key:0,class:"detail-desc"},_e={class:"detail-actions"},pe={key:2,class:"detail-card"},fe={class:"detail-video"},me={class:"video-preview"},ye=["src","alt"],ge={class:"video-info"},he={key:0,class:"video-author"},ke={class:"video-platform"},Ve={key:1,class:"detail-desc"},Ce={class:"detail-actions"},we={key:0,class:"video-player-wrapper"},be=["src"],Se={class:"save-dialog-content"},xe={class:"save-file-name"},De={class:"result-dialog-content"},Ee={class:"share-link-box"},Le={class:"share-link-row"},Re=U({__name:"ResultDetail",setup(R){const E=J(),V=i(!1),t=i(null),s=i(null),C=i(!1),m=i(!1),v=i(!1),y=i(""),b=i(!1),h=i(!1),_=i(null),S=i("");N(async()=>{const u=E.params.id;if(u){V.value=!0;try{const e=await X(u);e.intent==="SEARCH"&&e.results.length>0?t.value=e.results[0]:e.intent==="VIDEO_PARSE"&&e.results.length>0&&(s.value=e.results[0])}catch(e){console.error("获取详情失败",e)}finally{V.value=!1}}});function B(){b.value=!!s.value,m.value=!0}function $(){C.value=!0}function A(u){y.value=u}async function I(){if(!y.value){D.warning("请选择目标网盘");return}v.value=!0;try{let u;if(b.value&&s.value)u=await Y({video_url:s.value.video_url,title:s.value.title,target_cloud:y.value});else if(t.value)u=await Z({type:"search",source:t.value,target_cloud:y.value});else return;_.value=u,S.value=u.share_url,m.value=!1,h.value=!0}catch(u){console.error("保存失败",u),D.error("保存失败")}finally{v.value=!1}}async function q(){try{await navigator.clipboard.writeText(S.value),D.success("链接已复制到剪贴板")}catch{D.warning("复制失败,请手动复制")}}return(u,e)=>{const F=f("el-skeleton"),L=f("el-tag"),k=f("el-button"),M=f("el-empty"),z=f("el-dialog"),O=f("el-alert"),P=f("el-input");return a(),c("div",se,[l("div",ae,[V.value?(a(),c("div",oe,[o(F,{rows:6,animated:""})])):t.value?(a(),c("div",ne,[l("div",ie,[l("div",ue,[l("img",{src:t.value.cover,alt:t.value.title},null,8,de),o(K,{cloud_type:t.value.cloud_type},null,8,["cloud_type"])]),l("div",re,[l("h1",null,r(t.value.title),1),l("div",ce,[t.value.file_size?(a(),w(L,{key:0},{default:n(()=>[p("📦 "+r(t.value.file_size),1)]),_:1})):g("",!0),t.value.update_time?(a(),w(L,{key:1},{default:n(()=>[p("🕐 "+r(t.value.update_time),1)]),_:1})):g("",!0),t.value.source?(a(),w(L,{key:2},{default:n(()=>[p("📂 "+r(t.value.source),1)]),_:1})):g("",!0)]),t.value.description?(a(),c("p",ve,r(t.value.description),1)):g("",!0)])]),l("div",_e,[o(k,{type:"primary",size:"large",onClick:B},{default:n(()=>[...e[5]||(e[5]=[p(" 📥 保存到网盘 ",-1)])]),_:1})])])):s.value?(a(),c("div",pe,[l("div",fe,[l("div",me,[l("img",{src:s.value.cover,alt:s.value.title},null,8,ye),l("div",{class:"play-overlay",onClick:$},[...e[6]||(e[6]=[l("div",{class:"play-btn"},"▶ 播放",-1)])])]),l("div",ge,[l("h1",null,r(s.value.title),1),s.value.author?(a(),c("p",he,"👤 "+r(s.value.author),1)):g("",!0),l("p",ke,"📺 "+r(s.value.platform),1),s.value.description?(a(),c("p",Ve,r(s.value.description),1)):g("",!0)])]),l("div",Ce,[o(k,{type:"primary",size:"large",onClick:B},{default:n(()=>[...e[7]||(e[7]=[p(" 📥 保存到云盘 ",-1)])]),_:1})]),C.value?(a(),c("div",we,[l("video",{src:s.value.video_url,controls:"",autoplay:"",class:"video-player"},null,8,be)])):g("",!0)])):(a(),w(M,{key:3,description:"未找到该资源"}))]),o(z,{modelValue:m.value,"onUpdate:modelValue":e[1]||(e[1]=d=>m.value=d),title:"保存到网盘",width:"420px"},{footer:n(()=>[o(k,{onClick:e[0]||(e[0]=d=>m.value=!1)},{default:n(()=>[...e[8]||(e[8]=[p("取消",-1)])]),_:1}),o(k,{type:"primary",loading:v.value,onClick:I},{default:n(()=>[...e[9]||(e[9]=[p("确认保存",-1)])]),_:1},8,["loading"])]),default:n(()=>{var d,x;return[l("div",Se,[l("p",xe,"📄 "+r(((d=t.value)==null?void 0:d.title)||((x=s.value)==null?void 0:x.title)),1),o(te,{onSelect:A})])]}),_:1},8,["modelValue"]),o(z,{modelValue:h.value,"onUpdate:modelValue":e[4]||(e[4]=d=>h.value=d),title:"保存成功",width:"420px"},{footer:n(()=>[o(k,{type:"primary",onClick:e[3]||(e[3]=d=>h.value=!1)},{default:n(()=>[...e[12]||(e[12]=[p("关闭",-1)])]),_:1})]),default:n(()=>{var d;return[l("div",De,[o(O,{type:"success",title:((d=_.value)==null?void 0:d.message)||"保存成功","show-icon":"",closable:!1},null,8,["title"]),l("div",Ee,[e[11]||(e[11]=l("p",{class:"share-label"},"分享链接:",-1)),l("div",Le,[o(P,{modelValue:S.value,"onUpdate:modelValue":e[2]||(e[2]=x=>S.value=x),readonly:""},null,8,["modelValue"]),o(k,{onClick:q},{default:n(()=>[...e[10]||(e[10]=[p("复制",-1)])]),_:1})])])])]}),_:1},8,["modelValue"])])}}}),Te=T(Re,[["__scopeId","data-v-755e2105"]]);export{Te as default};
diff --git a/source_clean/frontend-src/dist-vite/assets/SaveRecords-B5cCMWaP.js b/source_clean/frontend-src/dist-vite/assets/SaveRecords-BjfouS_I.js
similarity index 99%
rename from source_clean/frontend-src/dist-vite/assets/SaveRecords-B5cCMWaP.js
rename to source_clean/frontend-src/dist-vite/assets/SaveRecords-BjfouS_I.js
index 955dc90..eecec86 100644
--- a/source_clean/frontend-src/dist-vite/assets/SaveRecords-B5cCMWaP.js
+++ b/source_clean/frontend-src/dist-vite/assets/SaveRecords-BjfouS_I.js
@@ -1 +1 @@
-import{d as Ce,o as xe,a as u,c as r,b as a,f as l,w as d,F as Z,r as q,g as De,t as n,l as g,e as _,h as p,j as m,y as ee,n as M,k as R,s as Se,K as we,O as ze,P as Ne,E as te,Q as Te}from"./index-D_srC3bj.js";import{c as Be,j as $e,_ as Me}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const Fe={class:"save-records"},Ve={class:"toolbar"},Ee={class:"toolbar-row"},He={class:"filter-group"},je={style:{display:"inline-flex",alignItems:"center",gap:"6px"}},Ie=["src"],Le={class:"time-btns"},Ye=["onClick"],Ae={class:"toolbar-actions"},Ge={class:"record-count"},Ke={key:0,class:"save-summary"},Re={class:"summary-item summary-all"},Ue={class:"summary-item summary-success"},Pe={class:"summary-item summary-reused"},Je={class:"summary-item summary-failed"},Oe={key:0,class:"summary-item summary-rate"},Qe={class:"el-table-wrap"},Xe={class:"expand-detail"},We={class:"detail-row"},Ze={class:"detail-cell",style:{flex:"2"}},qe=["href"],et={key:0,class:"detail-cell"},tt={class:"detail-code"},at={key:1,class:"detail-cell"},st={key:2,class:"detail-cell"},lt={key:3,class:"detail-cell"},nt={class:"detail-row"},ot={key:0,class:"detail-cell"},it={key:1,class:"detail-cell"},dt={class:"detail-code"},ut={key:2,class:"detail-cell"},rt={class:"detail-code"},ct={class:"detail-row"},_t={key:0,class:"detail-cell",style:{flex:"2"}},pt=["href"],gt={key:1,class:"detail-cell"},ft={class:"detail-cell"},mt={key:0,class:"detail-row"},vt={class:"detail-cell"},ht={class:"detail-code"},yt={key:0,class:"detail-cell"},bt={class:"detail-code"},kt={class:"detail-cell"},Ct={class:"detail-code"},xt={key:1,class:"detail-row"},Dt={class:"detail-cell detail-full"},St={class:"detail-error"},wt={key:2,class:"detail-row"},zt={class:"detail-cell detail-full"},Nt={class:"detail-error"},Tt=["title"],Bt=["src"],$t=["title"],Mt={key:0,class:"loc-badge"},Ft={key:1,class:"no-data"},Vt=["title"],Et={key:1,class:"err-msg"},Ht={key:2,class:"reuse-msg"},jt={key:3,class:"no-data"},It={class:"action-cell"},Lt={key:1,class:"pagination-wrap"},Yt={class:"pagination-info"},At='☁ ',Gt=Ce({__name:"SaveRecords",setup(Kt){const U=p([]),k=p(0),C=p(1),x=p(20),F=p(!1),S=p(""),w=p(""),z=p(""),V=p("today"),E=p(""),H=p(""),N=p(null),j=p([]),v=p(null),ae=[{key:"today",label:"今日"},{key:"week",label:"本周"},{key:"month",label:"本月"},{key:"lastMonth",label:"上月"}],I=p({});async function se(){try{const s=await Be(),e={};for(const o of s.types)e[o.type]={label:o.label,icon:o.icon};I.value=e}catch{}}function L(s){var e;return((e=I.value[s])==null?void 0:e.label)||s}function P(s){var e;return((e=I.value[s])==null?void 0:e.icon)||At}function le(s){const e=new Set;s.forEach(i=>{i.source_type&&e.add(i.source_type)});const o=new Set(j.value);e.forEach(i=>{o.has(i)||j.value.push(i)})}function Y(s){const e=s.getFullYear(),o=String(s.getMonth()+1).padStart(2,"0"),i=String(s.getDate()).padStart(2,"0");return`${e}-${o}-${i}`}function J(s){if(!s)return"-";let e=s;/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(e)&&(e=e.replace(" ","T")+"+08:00");const o=new Date(e);if(isNaN(o.getTime()))return s;const i=c=>String(c).padStart(2,"0");return`${o.getFullYear()}-${i(o.getMonth()+1)}-${i(o.getDate())} ${i(o.getHours())}:${i(o.getMinutes())}:${i(o.getSeconds())}`}function O(s){return s?s<1e3?`${s}ms`:`${(s/1e3).toFixed(1)}s`:"-"}function Q(s){return s?s>3e4?"dur-slow":s>1e4?"dur-warn":"dur-fast":""}function ne(s){return s.length>50?s.slice(0,50)+"…":s}function oe(s){return s==="success"?"转存成功":s==="reused"?"♻️ 复用已有分享链接":"转存失败"}function ie(s){return s==="success"?"status-ok":s==="reused"?"status-reuse":"status-fail"}function de(s){return s==="success"?"✓":s==="reused"?"♻️":"✗"}const ue={Anhui:"安徽",Beijing:"北京",Chongqing:"重庆",Fujian:"福建",Gansu:"甘肃",Guangdong:"广东",Guangxi:"广西",Guizhou:"贵州",Hainan:"海南",Hebei:"河北",Henan:"河南",Heilongjiang:"黑龙江",Hubei:"湖北",Hunan:"湖南","Inner Mongolia":"内蒙古",Jiangsu:"江苏",Jiangxi:"江西",Jilin:"吉林",Liaoning:"辽宁",Ningxia:"宁夏",Qinghai:"青海",Shaanxi:"陕西",Shandong:"山东",Shanghai:"上海",Shanxi:"山西",Sichuan:"四川",Tianjin:"天津",Tibet:"西藏",Xinjiang:"新疆",Yunnan:"云南",Zhejiang:"浙江","Hong Kong":"香港",Macau:"澳门",Taiwan:"台湾",Changsha:"长沙",Hefei:"合肥",Fuzhou:"福州",Lanzhou:"兰州",Guangzhou:"广州",Nanning:"南宁",Guiyang:"贵阳",Haikou:"海口",Shijiazhuang:"石家庄",Zhengzhou:"郑州",Harbin:"哈尔滨",Wuhan:"武汉",Nanjing:"南京",Nanchang:"南昌",Changchun:"长春",Shenyang:"沈阳",Yinchuan:"银川",Xining:"西宁","Xi'an":"西安",Jinan:"济南",Taiyuan:"太原",Chengdu:"成都",Shenzhen:"深圳",Hangzhou:"杭州",Suzhou:"苏州",Wuxi:"无锡",Ningbo:"宁波",Dongguan:"东莞",Foshan:"佛山",Zhuhai:"珠海",Qingdao:"青岛",Dalian:"大连",Xiamen:"厦门",Kunming:"昆明",Lhasa:"拉萨",Urumqi:"乌鲁木齐",Linyi:"临沂",Wenzhou:"温州",Quanzhou:"泉州"},re={"China Telecom":"中国电信","China Mobile":"中国移动","China Unicom":"中国联通",Chinanet:"中国电信",ChinaNet:"中国电信",CMNET:"中国移动","CNC Group":"中国联通",unicom:"中国联通",telecom:"中国电信",mobile:"中国移动","China Education and Research Network":"教育网",CERNET:"教育网","China Networks":"中国网络",China163:"中国电信","CHINANET BACKBONE":"中国电信","Tencent Cloud":"腾讯云","Alibaba Cloud":"阿里云",Aliyun:"阿里云","Huawei Cloud":"华为云",Baidu:"百度","Beijing Baidu":"百度"};function X(s){return s.replace(/^(中国|China)\s*/i,"").split(/\s+/).filter(Boolean).map(i=>ue[i]||re[i]||i).join(" ")}function ce({row:s}){return s.status==="failed"?"row-failed":""}async function _e(s){try{await navigator.clipboard.writeText(s),te.success("已复制到剪贴板")}catch{const e=document.createElement("textarea");e.value=s,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),te.success("已复制到剪贴板")}}function pe(s){window.open(s,"_blank")}function ge(s,e){}function T(s){V.value=s,N.value=null;const e=new Date,o=e.getFullYear(),i=e.getMonth();let c,f;switch(s){case"today":c=new Date(o,i,e.getDate()),f=c;break;case"week":{const D=e.getDay();c=new Date(o,i,e.getDate()+(D===0?-6:1-D)),f=e;break}case"month":c=new Date(o,i,1),f=e;break;case"lastMonth":c=new Date(o,i-1,1),f=new Date(o,i,0);break;default:c=new Date(o,i,e.getDate()),f=c}E.value=Y(c);const A=new Date(f.getFullYear(),f.getMonth(),f.getDate()+1);H.value=Y(A),y(1)}function fe(s){if(s&&s.length===2){V.value="",E.value=s[0];const e=new Date(s[1]);e.setDate(e.getDate()+1),H.value=Y(e),y(1)}else T("today")}function me(){S.value="",w.value="",z.value="",N.value=null,T("today")}async function y(s=1){F.value=!0;try{C.value=s;const e=S.value||void 0,o=w.value||void 0,i=z.value||void 0,c=await $e(s,x.value,E.value,H.value,e,o,i);U.value=c.records,k.value=c.total,v.value=c.summary||null,le(c.records)}catch(e){console.error("加载转存记录失败",e)}finally{F.value=!1}}return xe(()=>{T("today"),se()}),(s,e)=>{const o=m("el-option"),i=m("el-select"),c=m("el-date-picker"),f=m("el-icon"),A=m("el-input"),D=m("el-button"),W=m("el-tag"),h=m("el-table-column"),B=m("el-tooltip"),ve=m("el-table"),he=m("el-card"),ye=m("el-pagination"),be=Te("loading");return u(),r("div",Fe,[a("div",Ve,[a("div",Ee,[a("div",He,[l(i,{modelValue:S.value,"onUpdate:modelValue":e[0]||(e[0]=t=>S.value=t),placeholder:"状态",clearable:"",style:{width:"100px"},onChange:e[1]||(e[1]=t=>y(1))},{default:d(()=>[l(o,{label:"全部状态",value:""}),l(o,{label:"✓ 成功",value:"success"}),l(o,{label:"♻️ 复用",value:"reused"}),l(o,{label:"✗ 失败",value:"failed"})]),_:1},8,["modelValue"]),l(i,{modelValue:w.value,"onUpdate:modelValue":e[2]||(e[2]=t=>w.value=t),placeholder:"网盘",clearable:"",style:{width:"100px"},onChange:e[3]||(e[3]=t=>y(1))},{default:d(()=>[l(o,{label:"全部网盘",value:""}),(u(!0),r(Z,null,q(j.value,t=>(u(),ee(o,{key:t,label:L(t),value:t},{default:d(()=>[a("span",je,[a("img",{src:P(t),style:{width:"16px",height:"16px"}},null,8,Ie),g(" "+n(L(t)),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"]),a("div",Le,[(u(),r(Z,null,q(ae,t=>a("button",{key:t.key,class:M(["time-btn",{active:V.value===t.key}]),onClick:b=>T(t.key)},n(t.label),11,Ye)),64))]),l(c,{modelValue:N.value,"onUpdate:modelValue":e[4]||(e[4]=t=>N.value=t),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期","value-format":"YYYY-MM-DD",style:{width:"220px"},onChange:fe},null,8,["modelValue"]),l(A,{modelValue:z.value,"onUpdate:modelValue":e[5]||(e[5]=t=>z.value=t),placeholder:"搜索资源名称…",clearable:"",style:{width:"180px"},onClear:e[6]||(e[6]=t=>y(1)),onKeyup:e[7]||(e[7]=De(t=>y(1),["enter"]))},{prefix:d(()=>[l(f,null,{default:d(()=>[l(R(Se))]),_:1})]),_:1},8,["modelValue"])]),a("div",Ae,[l(D,{size:"small",onClick:me},{default:d(()=>[...e[11]||(e[11]=[g("重置筛选",-1)])]),_:1}),a("span",Ge,"共 "+n(k.value)+" 条",1)])])]),v.value?(u(),r("div",Ke,[a("span",Re,[e[12]||(e[12]=g("📊 共 ",-1)),a("strong",null,n(v.value.total),1),e[13]||(e[13]=g(" 条",-1))]),e[18]||(e[18]=a("span",{class:"summary-divider"},"|",-1)),a("span",Ue,[e[14]||(e[14]=g("✅ 成功 ",-1)),a("strong",null,n(v.value.success),1)]),a("span",Pe,[e[15]||(e[15]=g("♻️ 复用 ",-1)),a("strong",null,n(v.value.reused),1)]),a("span",Je,[e[16]||(e[16]=g("❌ 失败 ",-1)),a("strong",null,n(v.value.failed),1)]),v.value.total>0?(u(),r("span",Oe,[e[17]||(e[17]=g(" 成功率 ",-1)),a("strong",null,n(((v.value.success+v.value.reused)/v.value.total*100).toFixed(1))+"%",1)])):_("",!0)])):_("",!0),l(he,{shadow:"never",class:"save-table-card"},{header:d(()=>[...e[19]||(e[19]=[a("span",null,"📋 转存日志列表",-1)])]),default:d(()=>[a("div",Qe,[we((u(),ee(ve,{data:U.value,stripe:"",style:{width:"100%"},"empty-text":"暂无转存记录",onExpandChange:ge,"row-class-name":ce},{default:d(()=>[l(h,{type:"expand",width:"36"},{default:d(({row:t})=>[a("div",Xe,[a("div",We,[a("div",Ze,[e[20]||(e[20]=a("span",{class:"detail-label"},"原始链接",-1)),a("a",{href:t.source_url,target:"_blank",class:"detail-link"},n(t.source_url),9,qe)]),t.file_size?(u(),r("div",et,[e[21]||(e[21]=a("span",{class:"detail-label"},"文件大小",-1)),a("code",tt,n(t.file_size?function(b){if(b==null||b==="")return"-";var G=typeof b=="string"?parseInt(b,10):b;if(!G||G<=0)return"-";for(var ke=["B","KB","MB","GB","TB"],$=0,K=G;K>=1024&&$<4;)K/=1024,$++;return K.toFixed($===0?0:2)+" "+ke[$]}(t.file_size):"-"),1)])):_("",!0),t.status!=="reused"&&(t.folder_count>0||t.file_count>0)?(u(),r("div",at,[e[23]||(e[23]=a("span",{class:"detail-label"},"文件夹",-1)),a("span",null,[a("strong",null,n(t.folder_count||0),1),e[22]||(e[22]=g(" 个",-1))])])):_("",!0),t.status!=="reused"&&(t.folder_count>0||t.file_count>0)?(u(),r("div",st,[e[25]||(e[25]=a("span",{class:"detail-label"},"文件",-1)),a("span",null,[a("strong",null,n(t.file_count||0),1),e[24]||(e[24]=g(" 个",-1))])])):_("",!0),t.status==="reused"?(u(),r("div",lt,[...e[26]||(e[26]=[a("span",{class:"detail-label"},"复用方式",-1),a("span",{class:"reuse-msg"},"♻️ 直接使用已有分享链接,无需实际转存",-1)])])):_("",!0)]),a("div",nt,[t.config_nickname?(u(),r("div",ot,[e[27]||(e[27]=a("span",{class:"detail-label"},"使用账号",-1)),l(W,{size:"small",type:"success",effect:"plain"},{default:d(()=>[g(n(t.config_nickname),1)]),_:2},1024)])):_("",!0),t.original_folder_name?(u(),r("div",it,[e[28]||(e[28]=a("span",{class:"detail-label"},"原始文件夹名",-1)),a("code",dt,n(t.original_folder_name),1)])):_("",!0),t.folder_name?(u(),r("div",ut,[e[29]||(e[29]=a("span",{class:"detail-label"},"转存文件夹",-1)),a("code",rt,n(t.folder_name),1)])):_("",!0)]),a("div",ct,[t.share_url?(u(),r("div",_t,[e[30]||(e[30]=a("span",{class:"detail-label"},"分享链接",-1)),a("a",{href:t.share_url,target:"_blank",class:"detail-link"},n(t.share_url),9,pt)])):_("",!0),t.share_pwd?(u(),r("div",gt,[e[31]||(e[31]=a("span",{class:"detail-label"},"分享密码",-1)),l(W,{size:"small",type:"warning"},{default:d(()=>[g(n(t.share_pwd),1)]),_:2},1024)])):_("",!0),a("div",ft,[e[32]||(e[32]=a("span",{class:"detail-label"},"耗时",-1)),a("span",{class:M(["detail-duration",Q(t.duration_ms)])},n(O(t.duration_ms)),3)])]),t.ip_address?(u(),r("div",mt,[a("div",vt,[e[33]||(e[33]=a("span",{class:"detail-label"},"IP 地址",-1)),a("code",ht,n(t.ip_address),1)]),t.ip_location?(u(),r("div",yt,[e[34]||(e[34]=a("span",{class:"detail-label"},"归属地",-1)),a("code",bt,n(X(t.ip_location)),1)])):_("",!0),a("div",kt,[e[35]||(e[35]=a("span",{class:"detail-label"},"时间",-1)),a("code",Ct,n(J(t.created_at)),1)])])):_("",!0),t.status==="failed"&&t.error_message?(u(),r("div",xt,[a("div",Dt,[e[36]||(e[36]=a("span",{class:"detail-label"},"错误信息",-1)),a("pre",St,n(t.error_message.includes(" | ")?t.error_message.split(" | ")[1]:t.error_message.split(" | ")[0]),1)])])):_("",!0),t.status==="failed"&&t.error_message&&t.error_message.includes(" | ")?(u(),r("div",wt,[a("div",zt,[e[37]||(e[37]=a("span",{class:"detail-label"},"友好提示",-1)),a("pre",Nt,n(t.error_message.split(" | ")[0]),1)])])):_("",!0)])]),_:1}),l(h,{label:"序号",width:"68",align:"center"},{default:d(({$index:t})=>[g(n((C.value-1)*x.value+t+1),1)]),_:1}),l(h,{label:"时间",width:"140"},{default:d(({row:t})=>[a("span",{title:t.created_at},n(J(t.created_at)),9,Tt)]),_:1}),l(h,{label:"网盘",width:"70",align:"center"},{default:d(({row:t})=>[l(B,{content:L(t.source_type),placement:"top"},{default:d(()=>[a("img",{src:P(t.source_type),style:{width:"22px",height:"22px",cursor:"default"}},null,8,Bt)]),_:2},1032,["content"])]),_:1}),l(h,{label:"状态",width:"72",align:"center"},{default:d(({row:t})=>[l(B,{content:oe(t.status),placement:"top"},{default:d(()=>[a("span",{class:M(["status-badge",ie(t.status)])},n(de(t.status)),3)]),_:2},1032,["content"])]),_:1}),l(h,{label:"资源名称","min-width":"160","show-overflow-tooltip":""},{default:d(({row:t})=>[a("span",{title:t.source_title||""},n(t.source_title||"-"),9,$t)]),_:1}),l(h,{label:"耗时",width:"85",align:"center"},{default:d(({row:t})=>[a("span",{class:M(["duration",Q(t.duration_ms)])},n(O(t.duration_ms)),3)]),_:1}),l(h,{label:"归属地","min-width":"130","show-overflow-tooltip":""},{default:d(({row:t})=>[t.ip_location?(u(),r("span",Mt,n(X(t.ip_location)),1)):(u(),r("span",Ft,"-"))]),_:1}),l(h,{label:"备注","min-width":"200","show-overflow-tooltip":""},{default:d(({row:t})=>[t.status==="failed"&&t.error_message?(u(),r("span",{key:0,class:"err-msg",title:t.error_message},n(ne(t.error_message)),9,Vt)):t.status==="failed"?(u(),r("span",Et,"失败")):t.status==="reused"?(u(),r("span",Ht,"♻️ 复用已有链接")):(u(),r("span",jt,"-"))]),_:1}),l(h,{label:"操作",width:"80",fixed:"right",align:"center"},{default:d(({row:t})=>[a("div",It,[l(B,{content:"复制分享链接",placement:"top"},{default:d(()=>[l(D,{size:"small",circle:"",text:"",disabled:!t.share_url,onClick:b=>_e(t.share_url)},{default:d(()=>[l(f,null,{default:d(()=>[l(R(ze))]),_:1})]),_:1},8,["disabled","onClick"])]),_:2},1024),l(B,{content:"打开分享链接",placement:"top"},{default:d(()=>[l(D,{size:"small",circle:"",text:"",disabled:!t.share_url,onClick:b=>pe(t.share_url)},{default:d(()=>[l(f,null,{default:d(()=>[l(R(Ne))]),_:1})]),_:1},8,["disabled","onClick"])]),_:2},1024)])]),_:1})]),_:1},8,["data"])),[[be,F.value]])])]),_:1}),k.value>0?(u(),r("div",Lt,[a("div",Yt," 第 "+n((C.value-1)*x.value+1)+"-"+n(Math.min(C.value*x.value,k.value))+" 条,共 "+n(k.value)+" 条 ",1),l(ye,{"current-page":C.value,"onUpdate:currentPage":e[8]||(e[8]=t=>C.value=t),"page-size":x.value,"onUpdate:pageSize":e[9]||(e[9]=t=>x.value=t),total:k.value,"page-sizes":[15,20,30,50,100],layout:"sizes, prev, pager, next, jumper",onCurrentChange:y,onSizeChange:e[10]||(e[10]=t=>y(1))},null,8,["current-page","page-size","total"])])):_("",!0)])}}}),Pt=Me(Gt,[["__scopeId","data-v-ccd92f86"]]);export{Pt as default};
+import{d as Ce,o as xe,a as u,c as r,b as a,f as l,w as d,F as Z,r as q,g as De,t as n,l as g,e as _,h as p,j as m,y as ee,n as M,k as R,s as Se,K as we,O as ze,P as Ne,E as te,Q as Te}from"./index-B3brQT6g.js";import{c as Be,j as $e,_ as Me}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const Fe={class:"save-records"},Ve={class:"toolbar"},Ee={class:"toolbar-row"},He={class:"filter-group"},je={style:{display:"inline-flex",alignItems:"center",gap:"6px"}},Ie=["src"],Le={class:"time-btns"},Ye=["onClick"],Ae={class:"toolbar-actions"},Ge={class:"record-count"},Ke={key:0,class:"save-summary"},Re={class:"summary-item summary-all"},Ue={class:"summary-item summary-success"},Pe={class:"summary-item summary-reused"},Je={class:"summary-item summary-failed"},Oe={key:0,class:"summary-item summary-rate"},Qe={class:"el-table-wrap"},Xe={class:"expand-detail"},We={class:"detail-row"},Ze={class:"detail-cell",style:{flex:"2"}},qe=["href"],et={key:0,class:"detail-cell"},tt={class:"detail-code"},at={key:1,class:"detail-cell"},st={key:2,class:"detail-cell"},lt={key:3,class:"detail-cell"},nt={class:"detail-row"},ot={key:0,class:"detail-cell"},it={key:1,class:"detail-cell"},dt={class:"detail-code"},ut={key:2,class:"detail-cell"},rt={class:"detail-code"},ct={class:"detail-row"},_t={key:0,class:"detail-cell",style:{flex:"2"}},pt=["href"],gt={key:1,class:"detail-cell"},ft={class:"detail-cell"},mt={key:0,class:"detail-row"},vt={class:"detail-cell"},ht={class:"detail-code"},yt={key:0,class:"detail-cell"},bt={class:"detail-code"},kt={class:"detail-cell"},Ct={class:"detail-code"},xt={key:1,class:"detail-row"},Dt={class:"detail-cell detail-full"},St={class:"detail-error"},wt={key:2,class:"detail-row"},zt={class:"detail-cell detail-full"},Nt={class:"detail-error"},Tt=["title"],Bt=["src"],$t=["title"],Mt={key:0,class:"loc-badge"},Ft={key:1,class:"no-data"},Vt=["title"],Et={key:1,class:"err-msg"},Ht={key:2,class:"reuse-msg"},jt={key:3,class:"no-data"},It={class:"action-cell"},Lt={key:1,class:"pagination-wrap"},Yt={class:"pagination-info"},At='☁ ',Gt=Ce({__name:"SaveRecords",setup(Kt){const U=p([]),k=p(0),C=p(1),x=p(20),F=p(!1),S=p(""),w=p(""),z=p(""),V=p("today"),E=p(""),H=p(""),N=p(null),j=p([]),v=p(null),ae=[{key:"today",label:"今日"},{key:"week",label:"本周"},{key:"month",label:"本月"},{key:"lastMonth",label:"上月"}],I=p({});async function se(){try{const s=await Be(),e={};for(const o of s.types)e[o.type]={label:o.label,icon:o.icon};I.value=e}catch{}}function L(s){var e;return((e=I.value[s])==null?void 0:e.label)||s}function P(s){var e;return((e=I.value[s])==null?void 0:e.icon)||At}function le(s){const e=new Set;s.forEach(i=>{i.source_type&&e.add(i.source_type)});const o=new Set(j.value);e.forEach(i=>{o.has(i)||j.value.push(i)})}function Y(s){const e=s.getFullYear(),o=String(s.getMonth()+1).padStart(2,"0"),i=String(s.getDate()).padStart(2,"0");return`${e}-${o}-${i}`}function J(s){if(!s)return"-";let e=s;/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(e)&&(e=e.replace(" ","T")+"+08:00");const o=new Date(e);if(isNaN(o.getTime()))return s;const i=c=>String(c).padStart(2,"0");return`${o.getFullYear()}-${i(o.getMonth()+1)}-${i(o.getDate())} ${i(o.getHours())}:${i(o.getMinutes())}:${i(o.getSeconds())}`}function O(s){return s?s<1e3?`${s}ms`:`${(s/1e3).toFixed(1)}s`:"-"}function Q(s){return s?s>3e4?"dur-slow":s>1e4?"dur-warn":"dur-fast":""}function ne(s){return s.length>50?s.slice(0,50)+"…":s}function oe(s){return s==="success"?"转存成功":s==="reused"?"♻️ 复用已有分享链接":"转存失败"}function ie(s){return s==="success"?"status-ok":s==="reused"?"status-reuse":"status-fail"}function de(s){return s==="success"?"✓":s==="reused"?"♻️":"✗"}const ue={Anhui:"安徽",Beijing:"北京",Chongqing:"重庆",Fujian:"福建",Gansu:"甘肃",Guangdong:"广东",Guangxi:"广西",Guizhou:"贵州",Hainan:"海南",Hebei:"河北",Henan:"河南",Heilongjiang:"黑龙江",Hubei:"湖北",Hunan:"湖南","Inner Mongolia":"内蒙古",Jiangsu:"江苏",Jiangxi:"江西",Jilin:"吉林",Liaoning:"辽宁",Ningxia:"宁夏",Qinghai:"青海",Shaanxi:"陕西",Shandong:"山东",Shanghai:"上海",Shanxi:"山西",Sichuan:"四川",Tianjin:"天津",Tibet:"西藏",Xinjiang:"新疆",Yunnan:"云南",Zhejiang:"浙江","Hong Kong":"香港",Macau:"澳门",Taiwan:"台湾",Changsha:"长沙",Hefei:"合肥",Fuzhou:"福州",Lanzhou:"兰州",Guangzhou:"广州",Nanning:"南宁",Guiyang:"贵阳",Haikou:"海口",Shijiazhuang:"石家庄",Zhengzhou:"郑州",Harbin:"哈尔滨",Wuhan:"武汉",Nanjing:"南京",Nanchang:"南昌",Changchun:"长春",Shenyang:"沈阳",Yinchuan:"银川",Xining:"西宁","Xi'an":"西安",Jinan:"济南",Taiyuan:"太原",Chengdu:"成都",Shenzhen:"深圳",Hangzhou:"杭州",Suzhou:"苏州",Wuxi:"无锡",Ningbo:"宁波",Dongguan:"东莞",Foshan:"佛山",Zhuhai:"珠海",Qingdao:"青岛",Dalian:"大连",Xiamen:"厦门",Kunming:"昆明",Lhasa:"拉萨",Urumqi:"乌鲁木齐",Linyi:"临沂",Wenzhou:"温州",Quanzhou:"泉州"},re={"China Telecom":"中国电信","China Mobile":"中国移动","China Unicom":"中国联通",Chinanet:"中国电信",ChinaNet:"中国电信",CMNET:"中国移动","CNC Group":"中国联通",unicom:"中国联通",telecom:"中国电信",mobile:"中国移动","China Education and Research Network":"教育网",CERNET:"教育网","China Networks":"中国网络",China163:"中国电信","CHINANET BACKBONE":"中国电信","Tencent Cloud":"腾讯云","Alibaba Cloud":"阿里云",Aliyun:"阿里云","Huawei Cloud":"华为云",Baidu:"百度","Beijing Baidu":"百度"};function X(s){return s.replace(/^(中国|China)\s*/i,"").split(/\s+/).filter(Boolean).map(i=>ue[i]||re[i]||i).join(" ")}function ce({row:s}){return s.status==="failed"?"row-failed":""}async function _e(s){try{await navigator.clipboard.writeText(s),te.success("已复制到剪贴板")}catch{const e=document.createElement("textarea");e.value=s,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),te.success("已复制到剪贴板")}}function pe(s){window.open(s,"_blank")}function ge(s,e){}function T(s){V.value=s,N.value=null;const e=new Date,o=e.getFullYear(),i=e.getMonth();let c,f;switch(s){case"today":c=new Date(o,i,e.getDate()),f=c;break;case"week":{const D=e.getDay();c=new Date(o,i,e.getDate()+(D===0?-6:1-D)),f=e;break}case"month":c=new Date(o,i,1),f=e;break;case"lastMonth":c=new Date(o,i-1,1),f=new Date(o,i,0);break;default:c=new Date(o,i,e.getDate()),f=c}E.value=Y(c);const A=new Date(f.getFullYear(),f.getMonth(),f.getDate()+1);H.value=Y(A),y(1)}function fe(s){if(s&&s.length===2){V.value="",E.value=s[0];const e=new Date(s[1]);e.setDate(e.getDate()+1),H.value=Y(e),y(1)}else T("today")}function me(){S.value="",w.value="",z.value="",N.value=null,T("today")}async function y(s=1){F.value=!0;try{C.value=s;const e=S.value||void 0,o=w.value||void 0,i=z.value||void 0,c=await $e(s,x.value,E.value,H.value,e,o,i);U.value=c.records,k.value=c.total,v.value=c.summary||null,le(c.records)}catch(e){console.error("加载转存记录失败",e)}finally{F.value=!1}}return xe(()=>{T("today"),se()}),(s,e)=>{const o=m("el-option"),i=m("el-select"),c=m("el-date-picker"),f=m("el-icon"),A=m("el-input"),D=m("el-button"),W=m("el-tag"),h=m("el-table-column"),B=m("el-tooltip"),ve=m("el-table"),he=m("el-card"),ye=m("el-pagination"),be=Te("loading");return u(),r("div",Fe,[a("div",Ve,[a("div",Ee,[a("div",He,[l(i,{modelValue:S.value,"onUpdate:modelValue":e[0]||(e[0]=t=>S.value=t),placeholder:"状态",clearable:"",style:{width:"100px"},onChange:e[1]||(e[1]=t=>y(1))},{default:d(()=>[l(o,{label:"全部状态",value:""}),l(o,{label:"✓ 成功",value:"success"}),l(o,{label:"♻️ 复用",value:"reused"}),l(o,{label:"✗ 失败",value:"failed"})]),_:1},8,["modelValue"]),l(i,{modelValue:w.value,"onUpdate:modelValue":e[2]||(e[2]=t=>w.value=t),placeholder:"网盘",clearable:"",style:{width:"100px"},onChange:e[3]||(e[3]=t=>y(1))},{default:d(()=>[l(o,{label:"全部网盘",value:""}),(u(!0),r(Z,null,q(j.value,t=>(u(),ee(o,{key:t,label:L(t),value:t},{default:d(()=>[a("span",je,[a("img",{src:P(t),style:{width:"16px",height:"16px"}},null,8,Ie),g(" "+n(L(t)),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"]),a("div",Le,[(u(),r(Z,null,q(ae,t=>a("button",{key:t.key,class:M(["time-btn",{active:V.value===t.key}]),onClick:b=>T(t.key)},n(t.label),11,Ye)),64))]),l(c,{modelValue:N.value,"onUpdate:modelValue":e[4]||(e[4]=t=>N.value=t),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期","value-format":"YYYY-MM-DD",style:{width:"220px"},onChange:fe},null,8,["modelValue"]),l(A,{modelValue:z.value,"onUpdate:modelValue":e[5]||(e[5]=t=>z.value=t),placeholder:"搜索资源名称…",clearable:"",style:{width:"180px"},onClear:e[6]||(e[6]=t=>y(1)),onKeyup:e[7]||(e[7]=De(t=>y(1),["enter"]))},{prefix:d(()=>[l(f,null,{default:d(()=>[l(R(Se))]),_:1})]),_:1},8,["modelValue"])]),a("div",Ae,[l(D,{size:"small",onClick:me},{default:d(()=>[...e[11]||(e[11]=[g("重置筛选",-1)])]),_:1}),a("span",Ge,"共 "+n(k.value)+" 条",1)])])]),v.value?(u(),r("div",Ke,[a("span",Re,[e[12]||(e[12]=g("📊 共 ",-1)),a("strong",null,n(v.value.total),1),e[13]||(e[13]=g(" 条",-1))]),e[18]||(e[18]=a("span",{class:"summary-divider"},"|",-1)),a("span",Ue,[e[14]||(e[14]=g("✅ 成功 ",-1)),a("strong",null,n(v.value.success),1)]),a("span",Pe,[e[15]||(e[15]=g("♻️ 复用 ",-1)),a("strong",null,n(v.value.reused),1)]),a("span",Je,[e[16]||(e[16]=g("❌ 失败 ",-1)),a("strong",null,n(v.value.failed),1)]),v.value.total>0?(u(),r("span",Oe,[e[17]||(e[17]=g(" 成功率 ",-1)),a("strong",null,n(((v.value.success+v.value.reused)/v.value.total*100).toFixed(1))+"%",1)])):_("",!0)])):_("",!0),l(he,{shadow:"never",class:"save-table-card"},{header:d(()=>[...e[19]||(e[19]=[a("span",null,"📋 转存日志列表",-1)])]),default:d(()=>[a("div",Qe,[we((u(),ee(ve,{data:U.value,stripe:"",style:{width:"100%"},"empty-text":"暂无转存记录",onExpandChange:ge,"row-class-name":ce},{default:d(()=>[l(h,{type:"expand",width:"36"},{default:d(({row:t})=>[a("div",Xe,[a("div",We,[a("div",Ze,[e[20]||(e[20]=a("span",{class:"detail-label"},"原始链接",-1)),a("a",{href:t.source_url,target:"_blank",class:"detail-link"},n(t.source_url),9,qe)]),t.file_size?(u(),r("div",et,[e[21]||(e[21]=a("span",{class:"detail-label"},"文件大小",-1)),a("code",tt,n(t.file_size?function(b){if(b==null||b==="")return"-";var G=typeof b=="string"?parseInt(b,10):b;if(!G||G<=0)return"-";for(var ke=["B","KB","MB","GB","TB"],$=0,K=G;K>=1024&&$<4;)K/=1024,$++;return K.toFixed($===0?0:2)+" "+ke[$]}(t.file_size):"-"),1)])):_("",!0),t.status!=="reused"&&(t.folder_count>0||t.file_count>0)?(u(),r("div",at,[e[23]||(e[23]=a("span",{class:"detail-label"},"文件夹",-1)),a("span",null,[a("strong",null,n(t.folder_count||0),1),e[22]||(e[22]=g(" 个",-1))])])):_("",!0),t.status!=="reused"&&(t.folder_count>0||t.file_count>0)?(u(),r("div",st,[e[25]||(e[25]=a("span",{class:"detail-label"},"文件",-1)),a("span",null,[a("strong",null,n(t.file_count||0),1),e[24]||(e[24]=g(" 个",-1))])])):_("",!0),t.status==="reused"?(u(),r("div",lt,[...e[26]||(e[26]=[a("span",{class:"detail-label"},"复用方式",-1),a("span",{class:"reuse-msg"},"♻️ 直接使用已有分享链接,无需实际转存",-1)])])):_("",!0)]),a("div",nt,[t.config_nickname?(u(),r("div",ot,[e[27]||(e[27]=a("span",{class:"detail-label"},"使用账号",-1)),l(W,{size:"small",type:"success",effect:"plain"},{default:d(()=>[g(n(t.config_nickname),1)]),_:2},1024)])):_("",!0),t.original_folder_name?(u(),r("div",it,[e[28]||(e[28]=a("span",{class:"detail-label"},"原始文件夹名",-1)),a("code",dt,n(t.original_folder_name),1)])):_("",!0),t.folder_name?(u(),r("div",ut,[e[29]||(e[29]=a("span",{class:"detail-label"},"转存文件夹",-1)),a("code",rt,n(t.folder_name),1)])):_("",!0)]),a("div",ct,[t.share_url?(u(),r("div",_t,[e[30]||(e[30]=a("span",{class:"detail-label"},"分享链接",-1)),a("a",{href:t.share_url,target:"_blank",class:"detail-link"},n(t.share_url),9,pt)])):_("",!0),t.share_pwd?(u(),r("div",gt,[e[31]||(e[31]=a("span",{class:"detail-label"},"分享密码",-1)),l(W,{size:"small",type:"warning"},{default:d(()=>[g(n(t.share_pwd),1)]),_:2},1024)])):_("",!0),a("div",ft,[e[32]||(e[32]=a("span",{class:"detail-label"},"耗时",-1)),a("span",{class:M(["detail-duration",Q(t.duration_ms)])},n(O(t.duration_ms)),3)])]),t.ip_address?(u(),r("div",mt,[a("div",vt,[e[33]||(e[33]=a("span",{class:"detail-label"},"IP 地址",-1)),a("code",ht,n(t.ip_address),1)]),t.ip_location?(u(),r("div",yt,[e[34]||(e[34]=a("span",{class:"detail-label"},"归属地",-1)),a("code",bt,n(X(t.ip_location)),1)])):_("",!0),a("div",kt,[e[35]||(e[35]=a("span",{class:"detail-label"},"时间",-1)),a("code",Ct,n(J(t.created_at)),1)])])):_("",!0),t.status==="failed"&&t.error_message?(u(),r("div",xt,[a("div",Dt,[e[36]||(e[36]=a("span",{class:"detail-label"},"错误信息",-1)),a("pre",St,n(t.error_message.includes(" | ")?t.error_message.split(" | ")[1]:t.error_message.split(" | ")[0]),1)])])):_("",!0),t.status==="failed"&&t.error_message&&t.error_message.includes(" | ")?(u(),r("div",wt,[a("div",zt,[e[37]||(e[37]=a("span",{class:"detail-label"},"友好提示",-1)),a("pre",Nt,n(t.error_message.split(" | ")[0]),1)])])):_("",!0)])]),_:1}),l(h,{label:"序号",width:"68",align:"center"},{default:d(({$index:t})=>[g(n((C.value-1)*x.value+t+1),1)]),_:1}),l(h,{label:"时间",width:"140"},{default:d(({row:t})=>[a("span",{title:t.created_at},n(J(t.created_at)),9,Tt)]),_:1}),l(h,{label:"网盘",width:"70",align:"center"},{default:d(({row:t})=>[l(B,{content:L(t.source_type),placement:"top"},{default:d(()=>[a("img",{src:P(t.source_type),style:{width:"22px",height:"22px",cursor:"default"}},null,8,Bt)]),_:2},1032,["content"])]),_:1}),l(h,{label:"状态",width:"72",align:"center"},{default:d(({row:t})=>[l(B,{content:oe(t.status),placement:"top"},{default:d(()=>[a("span",{class:M(["status-badge",ie(t.status)])},n(de(t.status)),3)]),_:2},1032,["content"])]),_:1}),l(h,{label:"资源名称","min-width":"160","show-overflow-tooltip":""},{default:d(({row:t})=>[a("span",{title:t.source_title||""},n(t.source_title||"-"),9,$t)]),_:1}),l(h,{label:"耗时",width:"85",align:"center"},{default:d(({row:t})=>[a("span",{class:M(["duration",Q(t.duration_ms)])},n(O(t.duration_ms)),3)]),_:1}),l(h,{label:"归属地","min-width":"130","show-overflow-tooltip":""},{default:d(({row:t})=>[t.ip_location?(u(),r("span",Mt,n(X(t.ip_location)),1)):(u(),r("span",Ft,"-"))]),_:1}),l(h,{label:"备注","min-width":"200","show-overflow-tooltip":""},{default:d(({row:t})=>[t.status==="failed"&&t.error_message?(u(),r("span",{key:0,class:"err-msg",title:t.error_message},n(ne(t.error_message)),9,Vt)):t.status==="failed"?(u(),r("span",Et,"失败")):t.status==="reused"?(u(),r("span",Ht,"♻️ 复用已有链接")):(u(),r("span",jt,"-"))]),_:1}),l(h,{label:"操作",width:"80",fixed:"right",align:"center"},{default:d(({row:t})=>[a("div",It,[l(B,{content:"复制分享链接",placement:"top"},{default:d(()=>[l(D,{size:"small",circle:"",text:"",disabled:!t.share_url,onClick:b=>_e(t.share_url)},{default:d(()=>[l(f,null,{default:d(()=>[l(R(ze))]),_:1})]),_:1},8,["disabled","onClick"])]),_:2},1024),l(B,{content:"打开分享链接",placement:"top"},{default:d(()=>[l(D,{size:"small",circle:"",text:"",disabled:!t.share_url,onClick:b=>pe(t.share_url)},{default:d(()=>[l(f,null,{default:d(()=>[l(R(Ne))]),_:1})]),_:1},8,["disabled","onClick"])]),_:2},1024)])]),_:1})]),_:1},8,["data"])),[[be,F.value]])])]),_:1}),k.value>0?(u(),r("div",Lt,[a("div",Yt," 第 "+n((C.value-1)*x.value+1)+"-"+n(Math.min(C.value*x.value,k.value))+" 条,共 "+n(k.value)+" 条 ",1),l(ye,{"current-page":C.value,"onUpdate:currentPage":e[8]||(e[8]=t=>C.value=t),"page-size":x.value,"onUpdate:pageSize":e[9]||(e[9]=t=>x.value=t),total:k.value,"page-sizes":[15,20,30,50,100],layout:"sizes, prev, pager, next, jumper",onCurrentChange:y,onSizeChange:e[10]||(e[10]=t=>y(1))},null,8,["current-page","page-size","total"])])):_("",!0)])}}}),Pt=Me(Gt,[["__scopeId","data-v-ccd92f86"]]);export{Pt as default};
diff --git a/source_clean/frontend-src/dist-vite/assets/SearchResult-EeENDml7.js b/source_clean/frontend-src/dist-vite/assets/SearchResult-D-wlRNNm.js
similarity index 99%
rename from source_clean/frontend-src/dist-vite/assets/SearchResult-EeENDml7.js
rename to source_clean/frontend-src/dist-vite/assets/SearchResult-D-wlRNNm.js
index 42bb1ec..cf2f692 100644
--- a/source_clean/frontend-src/dist-vite/assets/SearchResult-EeENDml7.js
+++ b/source_clean/frontend-src/dist-vite/assets/SearchResult-D-wlRNNm.js
@@ -1,4 +1,4 @@
-import{d as ht,o as nn,m as qn,a as d,c as f,n as we,b as g,p as ut,t as m,k as Oe,e as R,F as $,r as oe,q as Gt,h as E,v as J,x as Qt,f as z,w as K,g as Xt,y as Me,l as G,z as Hn,j as le,s as Kn,A as On,i as xn,E as Re,u as Jn,B as Wn}from"./index-D_srC3bj.js";import{C as sn,a as Ae,b as on}from"./index-Bn7NwETH.js";import{_ as vt,b as Yn,s as jn,c as Gn,d as Qn,q as Xn,e as Zn,f as $n}from"./_plugin-vue_export-helper-1Z-znrfZ.js";var Ne={},es=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},an={},se={};let pt;const ts=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];se.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return t*4+17};se.getSymbolTotalCodewords=function(t){return ts[t]};se.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t};se.setToSJISFunction=function(t){if(typeof t!="function")throw new Error('"toSJISFunc" is not a valid function.');pt=t};se.isKanjiModeEnabled=function(){return typeof pt<"u"};se.toSJIS=function(t){return pt(t)};var We={};(function(e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(a){if(typeof a!="string")throw new Error("Param is not a string");switch(a.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+a)}}e.isValid=function(s){return s&&typeof s.bit<"u"&&s.bit>=0&&s.bit<4},e.from=function(s,n){if(e.isValid(s))return s;try{return t(s)}catch{return n}}})(We);function ln(){this.buffer=[],this.length=0}ln.prototype={get:function(e){const t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)===1},put:function(e,t){for(let a=0;a>>t-a-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};var ns=ln;function Le(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}Le.prototype.set=function(e,t,a,s){const n=e*this.size+t;this.data[n]=a,s&&(this.reservedBit[n]=!0)};Le.prototype.get=function(e,t){return this.data[e*this.size+t]};Le.prototype.xor=function(e,t,a){this.data[e*this.size+t]^=a};Le.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]};var ss=Le,rn={};(function(e){const t=se.getSymbolSize;e.getRowColCoords=function(s){if(s===1)return[];const n=Math.floor(s/7)+2,o=t(s),r=o===145?26:Math.ceil((o-13)/(2*n-2))*2,i=[o-7];for(let u=1;u=0&&n<=7},e.from=function(n){return e.isValid(n)?parseInt(n,10):void 0},e.getPenaltyN1=function(n){const o=n.size;let r=0,i=0,u=0,v=null,h=null;for(let D=0;D=5&&(r+=t.N1+(i-5)),v=y,i=1),y=n.get(T,D),y===h?u++:(u>=5&&(r+=t.N1+(u-5)),h=y,u=1)}i>=5&&(r+=t.N1+(i-5)),u>=5&&(r+=t.N1+(u-5))}return r},e.getPenaltyN2=function(n){const o=n.size;let r=0;for(let i=0;i=10&&(i===1488||i===93)&&r++,u=u<<1&2047|n.get(h,v),h>=10&&(u===1488||u===93)&&r++}return r*t.N3},e.getPenaltyN4=function(n){let o=0;const r=n.data.length;for(let u=0;u=0;){const r=o[0];for(let u=0;u0){const o=new Uint8Array(this.degree);return o.set(s,n),o}return s};var as=mt,gn={},ve={},yt={};yt.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40};var re={};const hn="[0-9]+",ls="[A-Z $%*+\\-./:]+";let Pe="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";Pe=Pe.replace(/u/g,"\\u");const rs="(?:(?![A-Z0-9 $%*+\\-./:]|"+Pe+`)(?:.|[\r
+import{d as ht,o as nn,m as qn,a as d,c as f,n as we,b as g,p as ut,t as m,k as Oe,e as R,F as $,r as oe,q as Gt,h as E,v as J,x as Qt,f as z,w as K,g as Xt,y as Me,l as G,z as Hn,j as le,s as Kn,A as On,i as xn,E as Re,u as Jn,B as Wn}from"./index-B3brQT6g.js";import{C as sn,a as Ae,b as on}from"./index-Bn7NwETH.js";import{_ as vt,b as Yn,s as jn,c as Gn,d as Qn,q as Xn,e as Zn,f as $n}from"./_plugin-vue_export-helper-1Z-znrfZ.js";var Ne={},es=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},an={},se={};let pt;const ts=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];se.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return t*4+17};se.getSymbolTotalCodewords=function(t){return ts[t]};se.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t};se.setToSJISFunction=function(t){if(typeof t!="function")throw new Error('"toSJISFunc" is not a valid function.');pt=t};se.isKanjiModeEnabled=function(){return typeof pt<"u"};se.toSJIS=function(t){return pt(t)};var We={};(function(e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(a){if(typeof a!="string")throw new Error("Param is not a string");switch(a.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+a)}}e.isValid=function(s){return s&&typeof s.bit<"u"&&s.bit>=0&&s.bit<4},e.from=function(s,n){if(e.isValid(s))return s;try{return t(s)}catch{return n}}})(We);function ln(){this.buffer=[],this.length=0}ln.prototype={get:function(e){const t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)===1},put:function(e,t){for(let a=0;a>>t-a-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};var ns=ln;function Le(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}Le.prototype.set=function(e,t,a,s){const n=e*this.size+t;this.data[n]=a,s&&(this.reservedBit[n]=!0)};Le.prototype.get=function(e,t){return this.data[e*this.size+t]};Le.prototype.xor=function(e,t,a){this.data[e*this.size+t]^=a};Le.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]};var ss=Le,rn={};(function(e){const t=se.getSymbolSize;e.getRowColCoords=function(s){if(s===1)return[];const n=Math.floor(s/7)+2,o=t(s),r=o===145?26:Math.ceil((o-13)/(2*n-2))*2,i=[o-7];for(let u=1;u=0&&n<=7},e.from=function(n){return e.isValid(n)?parseInt(n,10):void 0},e.getPenaltyN1=function(n){const o=n.size;let r=0,i=0,u=0,v=null,h=null;for(let D=0;D=5&&(r+=t.N1+(i-5)),v=y,i=1),y=n.get(T,D),y===h?u++:(u>=5&&(r+=t.N1+(u-5)),h=y,u=1)}i>=5&&(r+=t.N1+(i-5)),u>=5&&(r+=t.N1+(u-5))}return r},e.getPenaltyN2=function(n){const o=n.size;let r=0;for(let i=0;i=10&&(i===1488||i===93)&&r++,u=u<<1&2047|n.get(h,v),h>=10&&(u===1488||u===93)&&r++}return r*t.N3},e.getPenaltyN4=function(n){let o=0;const r=n.data.length;for(let u=0;u=0;){const r=o[0];for(let u=0;u0){const o=new Uint8Array(this.degree);return o.set(s,n),o}return s};var as=mt,gn={},ve={},yt={};yt.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40};var re={};const hn="[0-9]+",ls="[A-Z $%*+\\-./:]+";let Pe="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";Pe=Pe.replace(/u/g,"\\u");const rs="(?:(?![A-Z0-9 $%*+\\-./:]|"+Pe+`)(?:.|[\r
]))+`;re.KANJI=new RegExp(Pe,"g");re.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");re.BYTE=new RegExp(rs,"g");re.NUMERIC=new RegExp(hn,"g");re.ALPHANUMERIC=new RegExp(ls,"g");const is=new RegExp("^"+Pe+"$"),us=new RegExp("^"+hn+"$"),cs=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");re.testKanji=function(t){return is.test(t)};re.testNumeric=function(t){return us.test(t)};re.testAlphanumeric=function(t){return cs.test(t)};(function(e){const t=yt,a=re;e.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(o,r){if(!o.ccBits)throw new Error("Invalid mode: "+o);if(!t.isValid(r))throw new Error("Invalid version: "+r);return r>=1&&r<10?o.ccBits[0]:r<27?o.ccBits[1]:o.ccBits[2]},e.getBestModeForData=function(o){return a.testNumeric(o)?e.NUMERIC:a.testAlphanumeric(o)?e.ALPHANUMERIC:a.testKanji(o)?e.KANJI:e.BYTE},e.toString=function(o){if(o&&o.id)return o.id;throw new Error("Invalid mode")},e.isValid=function(o){return o&&o.bit&&o.ccBits};function s(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+n)}}e.from=function(o,r){if(e.isValid(o))return o;try{return s(o)}catch{return r}}})(ve);(function(e){const t=se,a=Ye,s=We,n=ve,o=yt,r=7973,i=t.getBCHDigit(r);function u(T,y,M){for(let I=1;I<=40;I++)if(y<=e.getCapacity(I,M,T))return I}function v(T,y){return n.getCharCountIndicator(T,y)+4}function h(T,y){let M=0;return T.forEach(function(I){const F=v(I.mode,y);M+=F+I.getBitsLength()}),M}function D(T,y){for(let M=1;M<=40;M++)if(h(T,M)<=e.getCapacity(M,y,n.MIXED))return M}e.from=function(y,M){return o.isValid(y)?parseInt(y,10):M},e.getCapacity=function(y,M,I){if(!o.isValid(y))throw new Error("Invalid QR Code version");typeof I>"u"&&(I=n.BYTE);const F=t.getSymbolTotalCodewords(y),_=a.getTotalCodewordsCount(y,M),C=(F-_)*8;if(I===n.MIXED)return C;const w=C-v(I,y);switch(I){case n.NUMERIC:return Math.floor(w/10*3);case n.ALPHANUMERIC:return Math.floor(w/11*2);case n.KANJI:return Math.floor(w/13);case n.BYTE:default:return Math.floor(w/8)}},e.getBestVersionForData=function(y,M){let I;const F=s.from(M,s.M);if(Array.isArray(y)){if(y.length>1)return D(y,F);if(y.length===0)return 1;I=y[0]}else I=y;return u(I.mode,I.getLength(),F)},e.getEncodedBits=function(y){if(!o.isValid(y)||y<7)throw new Error("Invalid QR Code version");let M=y<<12;for(;t.getBCHDigit(M)-i>=0;)M^=r<=0;)n^=pn<0&&(s=this.data.substr(a),n=parseInt(s,10),t.put(n,o*3+1))};var gs=ke;const hs=ve,st=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function be(e){this.mode=hs.ALPHANUMERIC,this.data=e}be.getBitsLength=function(t){return 11*Math.floor(t/2)+6*(t%2)};be.prototype.getLength=function(){return this.data.length};be.prototype.getBitsLength=function(){return be.getBitsLength(this.data.length)};be.prototype.write=function(t){let a;for(a=0;a+2<=this.data.length;a+=2){let s=st.indexOf(this.data[a])*45;s+=st.indexOf(this.data[a+1]),t.put(s,11)}this.data.length%2&&t.put(st.indexOf(this.data[a]),6)};var vs=be;const ps=ve;function Ce(e){this.mode=ps.BYTE,typeof e=="string"?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}Ce.getBitsLength=function(t){return t*8};Ce.prototype.getLength=function(){return this.data.length};Ce.prototype.getBitsLength=function(){return Ce.getBitsLength(this.data.length)};Ce.prototype.write=function(e){for(let t=0,a=this.data.length;t=33088&&a<=40956)a-=33088;else if(a>=57408&&a<=60351)a-=49472;else throw new Error("Invalid SJIS character: "+this.data[t]+`
Make sure your charset is UTF-8`);a=(a>>>8&255)*192+(a&255),e.put(a,13)}};var ws=Ee,yn={exports:{}};(function(e){var t={single_source_shortest_paths:function(a,s,n){var o={},r={};r[s]=0;var i=t.PriorityQueue.make();i.push(s,0);for(var u,v,h,D,T,y,M,I,F;!i.empty();){u=i.pop(),v=u.value,D=u.cost,T=a[v]||{};for(h in T)T.hasOwnProperty(h)&&(y=T[h],M=D+y,I=r[h],F=typeof r[h]>"u",(F||I>M)&&(r[h]=M,i.push(h,M),o[h]=v))}if(typeof n<"u"&&typeof r[n]>"u"){var _=["Could not find a path from ",s," to ",n,"."].join("");throw new Error(_)}return o},extract_shortest_path_from_predecessor_list:function(a,s){for(var n=[],o=s;o;)n.push(o),a[o],o=a[o];return n.reverse(),n},find_path:function(a,s,n){var o=t.single_source_shortest_paths(a,s,n);return t.extract_shortest_path_from_predecessor_list(o,n)},PriorityQueue:{make:function(a){var s=t.PriorityQueue,n={},o;a=a||{};for(o in s)s.hasOwnProperty(o)&&(n[o]=s[o]);return n.queue=[],n.sorter=a.sorter||s.default_sorter,n},default_sorter:function(a,s){return a.cost-s.cost},push:function(a,s){var n={value:a,cost:s};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};e.exports=t})(yn);var ks=yn.exports;(function(e){const t=ve,a=gs,s=vs,n=ms,o=ws,r=re,i=se,u=ks;function v(_){return unescape(encodeURIComponent(_)).length}function h(_,C,w){const k=[];let L;for(;(L=_.exec(w))!==null;)k.push({data:L[0],index:L.index,mode:C,length:L[0].length});return k}function D(_){const C=h(r.NUMERIC,t.NUMERIC,_),w=h(r.ALPHANUMERIC,t.ALPHANUMERIC,_);let k,L;return i.isKanjiModeEnabled()?(k=h(r.BYTE,t.BYTE,_),L=h(r.KANJI,t.KANJI,_)):(k=h(r.BYTE_KANJI,t.BYTE,_),L=[]),C.concat(w,k,L).sort(function(V,b){return V.index-b.index}).map(function(V){return{data:V.data,mode:V.mode,length:V.length}})}function T(_,C){switch(C){case t.NUMERIC:return a.getBitsLength(_);case t.ALPHANUMERIC:return s.getBitsLength(_);case t.KANJI:return o.getBitsLength(_);case t.BYTE:return n.getBitsLength(_)}}function y(_){return _.reduce(function(C,w){const k=C.length-1>=0?C[C.length-1]:null;return k&&k.mode===w.mode?(C[C.length-1].data+=w.data,C):(C.push(w),C)},[])}function M(_){const C=[];for(let w=0;w<_.length;w++){const k=_[w];switch(k.mode){case t.NUMERIC:C.push([k,{data:k.data,mode:t.ALPHANUMERIC,length:k.length},{data:k.data,mode:t.BYTE,length:k.length}]);break;case t.ALPHANUMERIC:C.push([k,{data:k.data,mode:t.BYTE,length:k.length}]);break;case t.KANJI:C.push([k,{data:k.data,mode:t.BYTE,length:v(k.data)}]);break;case t.BYTE:C.push([{data:k.data,mode:t.BYTE,length:v(k.data)}])}}return C}function I(_,C){const w={},k={start:{}};let L=["start"];for(let B=0;B<_.length;B++){const V=_[B],b=[];for(let P=0;P=0&&i<=6&&(u===0||u===6)||u>=0&&u<=6&&(i===0||i===6)||i>=2&&i<=4&&u>=2&&u<=4?e.set(o+i,r+u,!0,!0):e.set(o+i,r+u,!1,!0))}}function As(e){const t=e.size;for(let a=8;a>i&1)===1,e.set(n,o,r,!0),e.set(o,n,r,!0)}function lt(e,t,a){const s=e.size,n=Bs.getEncodedBits(t,a);let o,r;for(o=0;o<15;o++)r=(n>>o&1)===1,o<6?e.set(o,8,r,!0):o<8?e.set(o+1,8,r,!0):e.set(s-15+o,8,r,!0),o<8?e.set(8,s-o-1,r,!0):o<9?e.set(8,15-o-1+1,r,!0):e.set(8,15-o-1,r,!0);e.set(s-8,8,1,!0)}function Ns(e,t){const a=e.size;let s=-1,n=a-1,o=7,r=0;for(let i=a-1;i>0;i-=2)for(i===6&&i--;;){for(let u=0;u<2;u++)if(!e.isReserved(n,i-u)){let v=!1;r>>o&1)===1),e.set(n,i-u,v),o--,o===-1&&(r++,o=7)}if(n+=s,n<0||a<=n){n-=s,s=-s;break}}}function Ls(e,t,a){const s=new bs;a.forEach(function(u){s.put(u.mode.bit,4),s.put(u.getLength(),Ms.getCharCountIndicator(u.mode,e)),u.write(s)});const n=Ge.getSymbolTotalCodewords(e),o=ft.getTotalCodewordsCount(e,t),r=(n-o)*8;for(s.getLengthInBits()+4<=r&&s.put(0,4);s.getLengthInBits()%8!==0;)s.putBit(0);const i=(r-s.getLengthInBits())/8;for(let u=0;uMe.section||He.query.section||""),xe=y(),pe=y([]),d=J({}),$=y([]),Y=y(""),E=y([]),Q=y(""),L=y([]),X=y(""),N=y([]),Z=y(""),ee=y(""),F=y([]),fe=y(!1),ce=y(!1),R=J({db_size:"-",save_records:0,search_stats:0,cloud_configs:0,content_cache:0,redis_status:"未连接"}),ke=y(!0),te=y(!1),se=y(!1),ae=y(!1),oe=y(!1),ne=y(!1),ie=y(!1),P=y(null),Ve=y(!0),de=y(!1),me=H({get:()=>String(d.search_proxy_enabled)==="true",set:t=>{d.search_proxy_enabled=t?"true":"false"}}),he=H({get:()=>String(d.pansou_web_enabled)==="true",set:t=>{d.pansou_web_enabled=t?"true":"false"}}),Se=H({get:()=>String(d.search_all_channels)==="true",set:t=>{d.search_all_channels=t?"true":"false"}}),Ce=H({get:()=>String(d.auto_update_enabled)==="true",set:t=>{d.auto_update_enabled=t?"true":"false"}}),h=J({enabled:!0,time:"08:00",includeSearch:!0,includeSaves:!0,includeStorage:!0,includeUsers:!0}),ve=y(!1),ye=y(!1),Ue=y(""),ge=y(!1),Pe=y("");async function Je(){try{const t=await fetch("/api/admin/daily-report/config",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(t.ok){const e=await t.json();Object.assign(h,e)}}catch{}}async function Ye(){try{const t=await fetch("/api/admin/daily-report/last-run",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(t.ok){const e=await t.json();e.date&&(Pe.value=`${e.date} ${new Date(e.sentAt).toLocaleTimeString("zh-CN")}`)}}catch{}}async function Qe(){try{await fetch("/api/admin/daily-report/config",{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("admin_token")}`},body:JSON.stringify({...h})})}catch{}}async function Xe(){ve.value=!0;try{const t=await fetch("/api/admin/daily-report/preview",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(t.ok){const e=await t.json();Ue.value=e.content,ge.value=!0}}finally{ve.value=!1}}async function Ze(){ye.value=!0;try{(await fetch("/api/admin/daily-report/test",{method:"POST",headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}})).ok?u.success("测试报告已发送到全局通知通道"):u.error("发送失败")}catch{u.error("发送失败")}finally{ye.value=!1}}const ze=y([]),D=y({}),_e=y(!1),Te=y([]);async function el(){try{const t=await fetch("/api/admin/cloud-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});if(!t.ok)return;const e=await t.json(),a=Array.isArray(e)?[...new Set(e.map(n=>n.promotion_account||"").filter(Boolean))]:[];Te.value=a}catch{}}const m=J({id:null,account:"",channels:[],events:{on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}),ll=H(()=>{var e;const t={};for(const[a,n]of Object.entries(D.value))(e=v.channels[a])!=null&&e._enabled&&(t[a]=n);return t}),v=J({channels:{},events:{on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}});function tl(t){var e,a,n,x;if(t){m.id=t.id,m.account=t.account;const p=t.notify_config||{};m.channels=Object.keys(p.channels||{}),m.events={on_save_success:((e=p.events)==null?void 0:e.on_save_success)!==!1,on_save_fail:((a=p.events)==null?void 0:a.on_save_fail)!==!1,on_cookie_expire:((n=p.events)==null?void 0:n.on_cookie_expire)!==!1,on_cleanup:((x=p.events)==null?void 0:x.on_cleanup)===!0}}else m.id=null,m.account="",m.channels=[],m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function sl(){m.id=null,m.account="",m.channels=[],m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function re(t,e){return((t.notify_config||{}).events||{})[e]===!0}async function al(){if(!m.account){u.warning("请填写推广账号");return}_e.value=!0;try{const t={account:m.account,notify_config:{channels:{},events:m.events}},e={};for(const n of m.channels)e[n]={};t.notify_config.channels=e,m.id?await fetch("/api/admin/push-users/"+m.id,{method:"PUT",headers:{"Content-Type":"application/json",Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")},body:JSON.stringify(t)}):await fetch("/api/admin/push-users",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")},body:JSON.stringify(t)});const a=!!m.id;m.id=null,m.account="",m.channels=[],m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1},u.success(a?"推送用户已更新":"推送用户已添加"),await be()}catch(t){u.error(t.message||"保存失败")}finally{_e.value=!1}}async function be(){try{const t=await fetch("/api/admin/push-users",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});t.ok&&(ze.value=await t.json())}catch(t){console.error("Failed to load push users",t)}}async function ol(){try{D.value=await Xl()}catch(t){console.error("Failed to load providers",t)}}async function nl(t){try{await fetch("/api/admin/push-users/"+t.id,{method:"DELETE",headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}}),u.success("已删除"),await be()}catch(e){u.error(e.message||"删除失败")}}function Ie(t){var a;return((a=t.notify_config)==null?void 0:a.channels)||{}}function il(t){var e;return((e=D.value[t])==null?void 0:e.label)||t}function dl(t){return Object.keys(Ie(t)).length>0}function rl(){const t={};for(const[e,a]of Object.entries(D.value)){t[e]={_enabled:!1,_testing:!1};for(const n of a.params||[])t[e][n.key]=n.default||""}v.channels=t,v.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}async function ul(){try{const a=(await(await fetch("/api/admin/system-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}})).json()).find(n=>n.key==="global_notify_config");if(a&&a.value)try{const n=JSON.parse(a.value),x=n.channels||{};for(const[p,S]of Object.entries(x))if(v.channels[p]){v.channels[p]._enabled=!0;for(const[T,w]of Object.entries(S))v.channels[p][T]=w}n.events&&(v.events.on_save_success=n.events.on_save_success!==!1,v.events.on_save_fail=n.events.on_save_fail!==!1,v.events.on_cookie_expire=n.events.on_cookie_expire!==!1,v.events.on_cleanup=n.events.on_cleanup===!0)}catch{}}catch{}}async function pl(t){const e=v.channels[t];if(!(!e||!e._enabled)){e._testing=!0;try{const a=await et(t);a.success?u.success(a.message):u.error(a.message)}catch(a){u.error(a.message||"测试失败")}finally{e._testing=!1}}}const z=J({oldPassword:"",newPassword:"",confirmPassword:""}),fl={oldPassword:[{required:!0,message:"请输入原密码",trigger:"blur"}],newPassword:[{required:!0,message:"请输入新密码",trigger:"blur"},{min:6,message:"新密码至少需要6个字符",trigger:"blur"}],confirmPassword:[{required:!0,message:"请确认新密码",trigger:"blur"},{validator:(t,e,a)=>{e!==z.newPassword?a(new Error("两次输入的密码不一致")):a()},trigger:"blur"}]};Wl(async()=>{try{pe.value=await Yl();for(const p of pe.value)d[p.key]=p.value;const t=String(d.title_filter_rules||"");$.value=t.split(`
+import{d as Gl,o as Wl,E as u,x as Kl,a as f,c as g,K as W,L as K,f as s,w as i,b as l,v as H,h as y,i as J,j as k,l as r,k as We,N as ql,e as q,t as b,n as Ke,y as V,M as Ml,F as A,r as O,z as Hl,u as Jl}from"./index-B3brQT6g.js";import{k as Yl,w as Ql,x as Xl,p as Zl,y as et,z as lt,A as le,B as tt,C as st,D as at,_ as ot}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const nt={class:"system-config"},it={class:"fallback-upload-wrap"},dt={class:"fallback-upload-row"},rt={key:0,class:"fallback-preview"},ut=["src"],pt={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},ft={key:0,style:{"font-size":"11px",color:"#e6a23c","white-space":"nowrap"}},ct={class:"pansou-status-grid"},mt={class:"db-stat-item"},vt={class:"db-stat-item"},yt={class:"db-stat-value"},gt={class:"db-stat-item"},_t={class:"db-stat-value"},bt={class:"db-stat-item"},wt={class:"db-stat-value"},xt={class:"db-stat-item"},kt={class:"db-stat-value"},Vt={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},ht={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},St={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},Ct={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},Ut={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},Pt={key:0,style:{"text-align":"center",padding:"16px"}},zt={key:1,class:"db-status-grid"},Tt={class:"db-stat-item"},It={class:"db-stat-item"},jt={class:"db-stat-value"},At={class:"db-stat-item"},Ot={class:"db-stat-value"},Rt={class:"db-stat-item"},Bt={class:"db-stat-value"},$t={class:"db-stat-item"},Et={class:"db-stat-value"},Lt={class:"db-stat-item"},Nt={class:"db-stat-value"},Ft={class:"strategy-section"},Dt={class:"field-block"},Gt={class:"field-label-row"},Wt={class:"field-block"},Kt={class:"field-label-row"},qt={class:"strategy-grid"},Mt={class:"grid-cell"},Ht={class:"field-label-row"},Jt={class:"grid-cell"},Yt={class:"field-label-row"},Qt={class:"grid-cell"},Xt={class:"field-label-row"},Zt={class:"grid-cell"},es={class:"field-label-row"},ls={class:"grid-cell"},ts={class:"field-label-row"},ss={class:"grid-cell"},as={class:"field-label-row"},os={class:"field-block"},ns={style:{display:"flex",gap:"8px","align-items":"stretch"}},is={key:0,class:"tag-list"},ds={key:1,class:"tag-empty"},rs={class:"field-block"},us={style:{display:"flex",gap:"8px","align-items":"stretch"}},ps={key:0,class:"tag-list"},fs={key:1,class:"tag-empty"},cs={class:"field-block"},ms={style:{display:"flex",gap:"8px","align-items":"stretch"}},vs={key:0,class:"tag-list"},ys={key:1,class:"tag-empty"},gs={class:"field-block"},_s={style:{display:"flex",gap:"8px","align-items":"stretch"}},bs={key:0,class:"tag-list"},ws={key:1,class:"tag-empty"},xs={class:"field-block"},ks={style:{display:"flex",gap:"8px","align-items":"stretch"}},Vs={key:0,class:"tag-list"},hs={key:1,class:"tag-empty"},Ss={class:"strategy-section"},Cs={style:{display:"grid","grid-template-columns":"repeat(2,1fr)",gap:"8px"}},Us={style:{display:"flex","align-items":"center",gap:"8px","margin-bottom":"6px"}},Ps={key:0},zs={style:{display:"flex","flex-wrap":"wrap",gap:"16px"}},Ts={style:{border:"1px solid var(--el-border-color-light)","border-radius":"6px",padding:"12px 16px","margin-bottom":"16px"}},Is={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},js={key:1,style:{color:"#ccc"}},As={key:1,style:{color:"#ccc"}},Os={key:1,style:{color:"#ccc"}},Rs={key:1,style:{color:"#ccc"}},Bs={key:0,style:{color:"#909399","font-size":"12px"}},$s={style:{display:"flex","align-items":"center","justify-content":"space-between"}},Es={style:{display:"flex","flex-wrap":"wrap",gap:"16px"}},Ls={style:{"white-space":"pre-wrap","font-family":"monospace",background:"var(--el-fill-color-light)",padding:"16px","border-radius":"8px","max-height":"500px","overflow-y":"auto"}},Ns={class:"save-bar"},Fs=Gl({__name:"SystemConfig",props:{section:{}},setup(qe){const Me=qe,He=Hl();Jl();const U=H(()=>Me.section||He.query.section||""),xe=y(),pe=y([]),d=J({}),$=y([]),Y=y(""),E=y([]),Q=y(""),L=y([]),X=y(""),N=y([]),Z=y(""),ee=y(""),F=y([]),fe=y(!1),ce=y(!1),R=J({db_size:"-",save_records:0,search_stats:0,cloud_configs:0,content_cache:0,redis_status:"未连接"}),ke=y(!0),te=y(!1),se=y(!1),ae=y(!1),oe=y(!1),ne=y(!1),ie=y(!1),P=y(null),Ve=y(!0),de=y(!1),me=H({get:()=>String(d.search_proxy_enabled)==="true",set:t=>{d.search_proxy_enabled=t?"true":"false"}}),he=H({get:()=>String(d.pansou_web_enabled)==="true",set:t=>{d.pansou_web_enabled=t?"true":"false"}}),Se=H({get:()=>String(d.search_all_channels)==="true",set:t=>{d.search_all_channels=t?"true":"false"}}),Ce=H({get:()=>String(d.auto_update_enabled)==="true",set:t=>{d.auto_update_enabled=t?"true":"false"}}),h=J({enabled:!0,time:"08:00",includeSearch:!0,includeSaves:!0,includeStorage:!0,includeUsers:!0}),ve=y(!1),ye=y(!1),Ue=y(""),ge=y(!1),Pe=y("");async function Je(){try{const t=await fetch("/api/admin/daily-report/config",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(t.ok){const e=await t.json();Object.assign(h,e)}}catch{}}async function Ye(){try{const t=await fetch("/api/admin/daily-report/last-run",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(t.ok){const e=await t.json();e.date&&(Pe.value=`${e.date} ${new Date(e.sentAt).toLocaleTimeString("zh-CN")}`)}}catch{}}async function Qe(){try{await fetch("/api/admin/daily-report/config",{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("admin_token")}`},body:JSON.stringify({...h})})}catch{}}async function Xe(){ve.value=!0;try{const t=await fetch("/api/admin/daily-report/preview",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(t.ok){const e=await t.json();Ue.value=e.content,ge.value=!0}}finally{ve.value=!1}}async function Ze(){ye.value=!0;try{(await fetch("/api/admin/daily-report/test",{method:"POST",headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}})).ok?u.success("测试报告已发送到全局通知通道"):u.error("发送失败")}catch{u.error("发送失败")}finally{ye.value=!1}}const ze=y([]),D=y({}),_e=y(!1),Te=y([]);async function el(){try{const t=await fetch("/api/admin/cloud-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});if(!t.ok)return;const e=await t.json(),a=Array.isArray(e)?[...new Set(e.map(n=>n.promotion_account||"").filter(Boolean))]:[];Te.value=a}catch{}}const m=J({id:null,account:"",channels:[],events:{on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}),ll=H(()=>{var e;const t={};for(const[a,n]of Object.entries(D.value))(e=v.channels[a])!=null&&e._enabled&&(t[a]=n);return t}),v=J({channels:{},events:{on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}});function tl(t){var e,a,n,x;if(t){m.id=t.id,m.account=t.account;const p=t.notify_config||{};m.channels=Object.keys(p.channels||{}),m.events={on_save_success:((e=p.events)==null?void 0:e.on_save_success)!==!1,on_save_fail:((a=p.events)==null?void 0:a.on_save_fail)!==!1,on_cookie_expire:((n=p.events)==null?void 0:n.on_cookie_expire)!==!1,on_cleanup:((x=p.events)==null?void 0:x.on_cleanup)===!0}}else m.id=null,m.account="",m.channels=[],m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function sl(){m.id=null,m.account="",m.channels=[],m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function re(t,e){return((t.notify_config||{}).events||{})[e]===!0}async function al(){if(!m.account){u.warning("请填写推广账号");return}_e.value=!0;try{const t={account:m.account,notify_config:{channels:{},events:m.events}},e={};for(const n of m.channels)e[n]={};t.notify_config.channels=e,m.id?await fetch("/api/admin/push-users/"+m.id,{method:"PUT",headers:{"Content-Type":"application/json",Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")},body:JSON.stringify(t)}):await fetch("/api/admin/push-users",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")},body:JSON.stringify(t)});const a=!!m.id;m.id=null,m.account="",m.channels=[],m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1},u.success(a?"推送用户已更新":"推送用户已添加"),await be()}catch(t){u.error(t.message||"保存失败")}finally{_e.value=!1}}async function be(){try{const t=await fetch("/api/admin/push-users",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});t.ok&&(ze.value=await t.json())}catch(t){console.error("Failed to load push users",t)}}async function ol(){try{D.value=await Xl()}catch(t){console.error("Failed to load providers",t)}}async function nl(t){try{await fetch("/api/admin/push-users/"+t.id,{method:"DELETE",headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}}),u.success("已删除"),await be()}catch(e){u.error(e.message||"删除失败")}}function Ie(t){var a;return((a=t.notify_config)==null?void 0:a.channels)||{}}function il(t){var e;return((e=D.value[t])==null?void 0:e.label)||t}function dl(t){return Object.keys(Ie(t)).length>0}function rl(){const t={};for(const[e,a]of Object.entries(D.value)){t[e]={_enabled:!1,_testing:!1};for(const n of a.params||[])t[e][n.key]=n.default||""}v.channels=t,v.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}async function ul(){try{const a=(await(await fetch("/api/admin/system-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}})).json()).find(n=>n.key==="global_notify_config");if(a&&a.value)try{const n=JSON.parse(a.value),x=n.channels||{};for(const[p,S]of Object.entries(x))if(v.channels[p]){v.channels[p]._enabled=!0;for(const[T,w]of Object.entries(S))v.channels[p][T]=w}n.events&&(v.events.on_save_success=n.events.on_save_success!==!1,v.events.on_save_fail=n.events.on_save_fail!==!1,v.events.on_cookie_expire=n.events.on_cookie_expire!==!1,v.events.on_cleanup=n.events.on_cleanup===!0)}catch{}}catch{}}async function pl(t){const e=v.channels[t];if(!(!e||!e._enabled)){e._testing=!0;try{const a=await et(t);a.success?u.success(a.message):u.error(a.message)}catch(a){u.error(a.message||"测试失败")}finally{e._testing=!1}}}const z=J({oldPassword:"",newPassword:"",confirmPassword:""}),fl={oldPassword:[{required:!0,message:"请输入原密码",trigger:"blur"}],newPassword:[{required:!0,message:"请输入新密码",trigger:"blur"},{min:6,message:"新密码至少需要6个字符",trigger:"blur"}],confirmPassword:[{required:!0,message:"请确认新密码",trigger:"blur"},{validator:(t,e,a)=>{e!==z.newPassword?a(new Error("两次输入的密码不一致")):a()},trigger:"blur"}]};Wl(async()=>{try{pe.value=await Yl();for(const p of pe.value)d[p.key]=p.value;const t=String(d.title_filter_rules||"");$.value=t.split(`
`).filter(p=>p.trim());const e=String(d.link_invalid_keywords||"");E.value=e.split(`
`).filter(p=>p.trim());const a=String(d.quark_ad_keywords||"");L.value=a.split(`
`).filter(p=>p.trim());const n=String(d.quark_warning_folder_names||"");N.value=n.split(`
diff --git a/source_clean/frontend-src/dist-vite/assets/index-D_srC3bj.js b/source_clean/frontend-src/dist-vite/assets/index-B3brQT6g.js
similarity index 99%
rename from source_clean/frontend-src/dist-vite/assets/index-D_srC3bj.js
rename to source_clean/frontend-src/dist-vite/assets/index-B3brQT6g.js
index a7a6318..788d272 100644
--- a/source_clean/frontend-src/dist-vite/assets/index-D_srC3bj.js
+++ b/source_clean/frontend-src/dist-vite/assets/index-B3brQT6g.js
@@ -1,4 +1,4 @@
-const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomePage-CdqgUFQt.js","assets/_plugin-vue_export-helper-1Z-znrfZ.js","assets/HomePage-BVcQlSvu.css","assets/SearchResult-EeENDml7.js","assets/index-Bn7NwETH.js","assets/SearchResult-B_gCJbmx.css","assets/ResultDetail-BLqifyVI.js","assets/CloudBadge-CbpZHKLy.js","assets/CloudBadge-B7b7xKko.css","assets/ResultDetail-CVwsv2ff.css","assets/AdminLogin-BFh47H6c.js","assets/AdminLogin-DFflDgjp.css","assets/AdminLayout-qvvQgX9o.js","assets/AdminLayout-K9Kq5pc4.css","assets/AdminDashboard-CkHQl97R.js","assets/CloudConfig-3znuBWUR.js","assets/CloudConfig-BEjvFHzE.css","assets/SystemConfig-BbG7uBv0.js","assets/SystemConfig-C8bSCuHg.css","assets/SaveRecords-B5cCMWaP.js","assets/SaveRecords-C2kQYC3g.css","assets/AdminDashboard-BIBkHVvW.css","assets/Cleanup-BkDauFCX.js","assets/Cleanup-Cq_o1Z9e.css"])))=>i.map(i=>d[i]);
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomePage-BdsJIIWj.js","assets/_plugin-vue_export-helper-1Z-znrfZ.js","assets/HomePage-BHaWaDn9.css","assets/SearchResult-D-wlRNNm.js","assets/index-Bn7NwETH.js","assets/SearchResult-B_gCJbmx.css","assets/ResultDetail-CSF_8kBo.js","assets/CloudBadge-CDvk35W2.js","assets/CloudBadge-B7b7xKko.css","assets/ResultDetail-CVwsv2ff.css","assets/AdminLogin-DnKHAQm-.js","assets/AdminLogin-DFflDgjp.css","assets/AdminLayout-DW7wUpub.js","assets/AdminLayout-K9Kq5pc4.css","assets/AdminDashboard-C_krL4pj.js","assets/CloudConfig-0YLAk8H4.js","assets/CloudConfig-BEjvFHzE.css","assets/SystemConfig-0RdDTGNd.js","assets/SystemConfig-C8bSCuHg.css","assets/SaveRecords-BjfouS_I.js","assets/SaveRecords-C2kQYC3g.css","assets/AdminDashboard-BIBkHVvW.css","assets/Cleanup-C7YekVJo.js","assets/Cleanup-Cq_o1Z9e.css"])))=>i.map(i=>d[i]);
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))a(o);new MutationObserver(o=>{for(const l of o)if(l.type==="childList")for(const s of l.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&a(s)}).observe(document,{childList:!0,subtree:!0});function n(o){const l={};return o.integrity&&(l.integrity=o.integrity),o.referrerPolicy&&(l.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?l.credentials="include":o.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function a(o){if(o.ep)return;o.ep=!0;const l=n(o);fetch(o.href,l)}})();/**
* @vue/shared v3.5.33
* (c) 2018-present Yuxi (Evan) You and Vue contributors
@@ -89,4 +89,4 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`),{initialZIndex:a,curr
* vue-router v4.6.4
* (c) 2025 Eduardo San Martin Morote
* @license MIT
- */let kJ=()=>location.protocol+"//"+location.host;function zE(e,t){const{pathname:n,search:a,hash:o}=t,l=e.indexOf("#");if(l>-1){let s=o.includes(e.slice(l))?e.slice(l).length:1,r=o.slice(s);return r[0]!=="/"&&(r="/"+r),h0(r,"")}return h0(n,e)+a+o}function EJ(e,t,n,a){let o=[],l=[],s=null;const r=({state:p})=>{const g=zE(e,location),v=n.value,h=t.value;let m=0;if(p){if(n.value=g,t.value=p,s&&s===v){s=null;return}m=h?p.position-h.position:0}else a(g);o.forEach(y=>{y(n.value,v,{delta:m,type:mv.pop,direction:m?m>0?qf.forward:qf.back:qf.unknown})})};function u(){s=n.value}function c(p){o.push(p);const g=()=>{const v=o.indexOf(p);v>-1&&o.splice(v,1)};return l.push(g),g}function d(){if(document.visibilityState==="hidden"){const{history:p}=window;if(!p.state)return;p.replaceState(Zt({},p.state,{scroll:Yd()}),"")}}function f(){for(const p of l)p();l=[],window.removeEventListener("popstate",r),window.removeEventListener("pagehide",d),document.removeEventListener("visibilitychange",d)}return window.addEventListener("popstate",r),window.addEventListener("pagehide",d),document.addEventListener("visibilitychange",d),{pauseListeners:u,listen:c,destroy:f}}function w0(e,t,n,a=!1,o=!1){return{back:e,current:t,forward:n,replaced:a,position:window.history.length,scroll:o?Yd():null}}function xJ(e){const{history:t,location:n}=window,a={value:zE(e,n)},o={value:t.state};o.value||l(a.value,{back:null,current:a.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function l(u,c,d){const f=e.indexOf("#"),p=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+u:kJ()+e+u;try{t[d?"replaceState":"pushState"](c,"",p),o.value=c}catch(g){console.error(g),n[d?"replace":"assign"](p)}}function s(u,c){l(u,Zt({},t.state,w0(o.value.back,u,o.value.forward,!0),c,{position:o.value.position}),!0),a.value=u}function r(u,c){const d=Zt({},o.value,t.state,{forward:u,scroll:Yd()});l(d.current,d,!0),l(u,Zt({},w0(a.value,u,null),{position:d.position+1},c),!1),a.value=u}return{location:a,state:o,push:r,replace:s}}function TJ(e){e=uJ(e);const t=xJ(e),n=EJ(e,t.state,t.location,t.replace);function a(l,s=!0){s||n.pauseListeners(),history.go(l)}const o=Zt({location:"",base:e,go:a,createHref:dJ.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}let us=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var Rn=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(Rn||{});const $J={type:us.Static,value:""},OJ=/[a-zA-Z0-9_]/;function NJ(e){if(!e)return[[]];if(e==="/")return[[$J]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${c}": ${g}`)}let n=Rn.Static,a=n;const o=[];let l;function s(){l&&o.push(l),l=[]}let r=0,u,c="",d="";function f(){c&&(n===Rn.Static?l.push({type:us.Static,value:c}):n===Rn.Param||n===Rn.ParamRegExp||n===Rn.ParamRegExpEnd?(l.length>1&&(u==="*"||u==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),l.push({type:us.Param,value:c,regexp:d,repeatable:u==="*"||u==="+",optional:u==="*"||u==="?"})):t("Invalid state to consume buffer"),c="")}function p(){c+=u}for(;rt.length?t.length===1&&t[0]===aa.Static+aa.Segment?1:-1:0}function HE(e,t){let n=0;const a=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const PJ={strict:!1,end:!0,sensitive:!1};function AJ(e,t,n){const a=IJ(NJ(e.path),n),o=Zt(a,{record:e,parent:t,children:[],alias:[]});return t&&!o.record.aliasOf==!t.record.aliasOf&&t.children.push(o),o}function LJ(e,t){const n=[],a=new Map;t=v0(PJ,t);function o(f){return a.get(f)}function l(f,p,g){const v=!g,h=E0(f);h.aliasOf=g&&g.record;const m=v0(t,f),y=[h];if("alias"in f){const C=typeof f.alias=="string"?[f.alias]:f.alias;for(const k of C)y.push(E0(Zt({},h,{components:g?g.record.components:h.components,path:k,aliasOf:g?g.record:h})))}let b,w;for(const C of y){const{path:k}=C;if(p&&k[0]!=="/"){const E=p.record.path,T=E[E.length-1]==="/"?"":"/";C.path=p.record.path+(k&&T+k)}if(b=AJ(C,p,m),g?g.alias.push(b):(w=w||b,w!==b&&w.alias.push(b),v&&f.name&&!x0(b)&&s(f.name)),KE(b)&&u(b),h.children){const E=h.children;for(let T=0;T{s(w)}:yi}function s(f){if(BE(f)){const p=a.get(f);p&&(a.delete(f),n.splice(n.indexOf(p),1),p.children.forEach(s),p.alias.forEach(s))}else{const p=n.indexOf(f);p>-1&&(n.splice(p,1),f.record.name&&a.delete(f.record.name),f.children.forEach(s),f.alias.forEach(s))}}function r(){return n}function u(f){const p=BJ(f,n);n.splice(p,0,f),f.record.name&&!x0(f)&&a.set(f.record.name,f)}function c(f,p){let g,v={},h,m;if("name"in f&&f.name){if(g=a.get(f.name),!g)throw Tr(wn.MATCHER_NOT_FOUND,{location:f});m=g.record.name,v=Zt(k0(p.params,g.keys.filter(w=>!w.optional).concat(g.parent?g.parent.keys.filter(w=>w.optional):[]).map(w=>w.name)),f.params&&k0(f.params,g.keys.map(w=>w.name))),h=g.stringify(v)}else if(f.path!=null)h=f.path,g=n.find(w=>w.re.test(h)),g&&(v=g.parse(h),m=g.record.name);else{if(g=p.name?a.get(p.name):n.find(w=>w.re.test(p.path)),!g)throw Tr(wn.MATCHER_NOT_FOUND,{location:f,currentLocation:p});m=g.record.name,v=Zt({},p.params,f.params),h=g.stringify(v)}const y=[];let b=g;for(;b;)y.unshift(b.record),b=b.parent;return{name:m,path:h,params:v,matched:y,meta:VJ(y)}}e.forEach(f=>l(f));function d(){n.length=0,a.clear()}return{addRoute:l,resolve:c,removeRoute:s,clearRoutes:d,getRoutes:r,getRecordMatcher:o}}function k0(e,t){const n={};for(const a of t)a in e&&(n[a]=e[a]);return n}function E0(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:DJ(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function DJ(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const a in e.components)t[a]=typeof n=="object"?n[a]:n;return t}function x0(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function VJ(e){return e.reduce((t,n)=>Zt(t,n.meta),{})}function BJ(e,t){let n=0,a=t.length;for(;n!==a;){const l=n+a>>1;HE(e,t[l])<0?a=l:n=l+1}const o=FJ(e);return o&&(a=t.lastIndexOf(o,a-1)),a}function FJ(e){let t=e;for(;t=t.parent;)if(KE(t)&&HE(e,t)===0)return t}function KE({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function T0(e){const t=_e(qd),n=_e(Mm),a=S(()=>{const u=i(e.to);return t.resolve(u)}),o=S(()=>{const{matched:u}=a.value,{length:c}=u,d=u[c-1],f=n.matched;if(!d||!f.length)return-1;const p=f.findIndex(xr.bind(null,d));if(p>-1)return p;const g=$0(u[c-2]);return c>1&&$0(d)===g&&f[f.length-1].path!==g?f.findIndex(xr.bind(null,u[c-2])):p}),l=S(()=>o.value>-1&&jJ(n.params,a.value.params)),s=S(()=>o.value>-1&&o.value===n.matched.length-1&&VE(n.params,a.value.params));function r(u={}){if(WJ(u)){const c=t[i(e.replace)?"replace":"push"](i(e.to)).catch(yi);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:a,href:S(()=>a.value.href),isActive:l,isExactActive:s,navigate:r}}function zJ(e){return e.length===1?e[0]:e}const HJ=ie({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:T0,setup(e,{slots:t}){const n=Rt(T0(e)),{options:a}=_e(qd),o=S(()=>({[O0(e.activeClass,a.linkActiveClass,"router-link-active")]:n.isActive,[O0(e.exactActiveClass,a.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const l=t.default&&zJ(t.default(n));return e.custom?l:Ye("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},l)}}}),KJ=HJ;function WJ(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function jJ(e,t){for(const n in t){const a=t[n],o=e[n];if(typeof a=="string"){if(a!==o)return!1}else if(!Ja(o)||o.length!==a.length||a.some((l,s)=>l.valueOf()!==o[s].valueOf()))return!1}return!0}function $0(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const O0=(e,t,n)=>e??t??n,UJ=ie({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const a=_e(yv),o=S(()=>e.route||a.value),l=_e(b0,0),s=S(()=>{let c=i(l);const{matched:d}=o.value;let f;for(;(f=d[c])&&!f.components;)c++;return c}),r=S(()=>o.value.matched[s.value]);bt(b0,S(()=>s.value+1)),bt(CJ,r),bt(yv,o);const u=A();return fe(()=>[u.value,r.value,e.name],([c,d,f],[p,g,v])=>{d&&(d.instances[f]=c,g&&g!==d&&c&&c===p&&(d.leaveGuards.size||(d.leaveGuards=g.leaveGuards),d.updateGuards.size||(d.updateGuards=g.updateGuards))),c&&d&&(!g||!xr(d,g)||!p)&&(d.enterCallbacks[f]||[]).forEach(h=>h(c))},{flush:"post"}),()=>{const c=o.value,d=e.name,f=r.value,p=f&&f.components[d];if(!p)return N0(n.default,{Component:p,route:c});const g=f.props[d],v=g?g===!0?c.params:typeof g=="function"?g(c):g:null,m=Ye(p,Zt({},v,t,{onVnodeUnmounted:y=>{y.component.isUnmounted&&(f.instances[d]=null)},ref:u}));return N0(n.default,{Component:m,route:c})||m}}});function N0(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const YJ=UJ;function qJ(e){const t=LJ(e.routes,e),n=e.parseQuery||bJ,a=e.stringifyQuery||y0,o=e.history,l=Xr(),s=Xr(),r=Xr(),u=Wt(gl);let c=gl;Ys&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const d=Uf.bind(null,te=>""+te),f=Uf.bind(null,nJ),p=Uf.bind(null,qi);function g(te,de){let se,Y;return BE(te)?(se=t.getRecordMatcher(te),Y=de):Y=te,t.addRoute(Y,se)}function v(te){const de=t.getRecordMatcher(te);de&&t.removeRoute(de)}function h(){return t.getRoutes().map(te=>te.record)}function m(te){return!!t.getRecordMatcher(te)}function y(te,de){if(de=Zt({},de||u.value),typeof te=="string"){const oe=Yf(n,te,de.path),ce=t.resolve({path:oe.path},de),ge=o.createHref(oe.fullPath);return Zt(oe,ce,{params:p(ce.params),hash:qi(oe.hash),redirectedFrom:void 0,href:ge})}let se;if(te.path!=null)se=Zt({},te,{path:Yf(n,te.path,de.path).path});else{const oe=Zt({},te.params);for(const ce in oe)oe[ce]==null&&delete oe[ce];se=Zt({},te,{params:f(oe)}),de.params=f(de.params)}const Y=t.resolve(se,de),G=te.hash||"";Y.params=d(p(Y.params));const V=lJ(a,Zt({},te,{hash:QZ(G),path:Y.path})),Z=o.createHref(V);return Zt({fullPath:V,hash:G,query:a===y0?wJ(te.query):te.query||{}},Y,{redirectedFrom:void 0,href:Z})}function b(te){return typeof te=="string"?Yf(n,te,u.value.path):Zt({},te)}function w(te,de){if(c!==te)return Tr(wn.NAVIGATION_CANCELLED,{from:de,to:te})}function C(te){return T(te)}function k(te){return C(Zt(b(te),{replace:!0}))}function E(te,de){const se=te.matched[te.matched.length-1];if(se&&se.redirect){const{redirect:Y}=se;let G=typeof Y=="function"?Y(te,de):Y;return typeof G=="string"&&(G=G.includes("?")||G.includes("#")?G=b(G):{path:G},G.params={}),Zt({query:te.query,hash:te.hash,params:G.path!=null?{}:te.params},G)}}function T(te,de){const se=c=y(te),Y=u.value,G=te.state,V=te.force,Z=te.replace===!0,oe=E(se,Y);if(oe)return T(Zt(b(oe),{state:typeof oe=="object"?Zt({},G,oe.state):G,force:V,replace:Z}),de||se);const ce=se;ce.redirectedFrom=de;let ge;return!V&&sJ(a,Y,se)&&(ge=Tr(wn.NAVIGATION_DUPLICATED,{to:ce,from:Y}),H(Y,Y,!0,!1)),(ge?Promise.resolve(ge):O(ce,Y)).catch(me=>Do(me)?Do(me,wn.NAVIGATION_GUARD_REDIRECT)?me:z(me):I(me,ce,Y)).then(me=>{if(me){if(Do(me,wn.NAVIGATION_GUARD_REDIRECT))return T(Zt({replace:Z},b(me.to),{state:typeof me.to=="object"?Zt({},G,me.to.state):G,force:V}),de||ce)}else me=P(ce,Y,!0,Z,G);return _(ce,Y,me),me})}function $(te,de){const se=w(te,de);return se?Promise.reject(se):Promise.resolve()}function N(te){const de=Q.values().next().value;return de&&typeof de.runWithContext=="function"?de.runWithContext(te):te()}function O(te,de){let se;const[Y,G,V]=SJ(te,de);se=Gf(Y.reverse(),"beforeRouteLeave",te,de);for(const oe of Y)oe.leaveGuards.forEach(ce=>{se.push(El(ce,te,de))});const Z=$.bind(null,te,de);return se.push(Z),ue(se).then(()=>{se=[];for(const oe of l.list())se.push(El(oe,te,de));return se.push(Z),ue(se)}).then(()=>{se=Gf(G,"beforeRouteUpdate",te,de);for(const oe of G)oe.updateGuards.forEach(ce=>{se.push(El(ce,te,de))});return se.push(Z),ue(se)}).then(()=>{se=[];for(const oe of V)if(oe.beforeEnter)if(Ja(oe.beforeEnter))for(const ce of oe.beforeEnter)se.push(El(ce,te,de));else se.push(El(oe.beforeEnter,te,de));return se.push(Z),ue(se)}).then(()=>(te.matched.forEach(oe=>oe.enterCallbacks={}),se=Gf(V,"beforeRouteEnter",te,de,N),se.push(Z),ue(se))).then(()=>{se=[];for(const oe of s.list())se.push(El(oe,te,de));return se.push(Z),ue(se)}).catch(oe=>Do(oe,wn.NAVIGATION_CANCELLED)?oe:Promise.reject(oe))}function _(te,de,se){r.list().forEach(Y=>N(()=>Y(te,de,se)))}function P(te,de,se,Y,G){const V=w(te,de);if(V)return V;const Z=de===gl,oe=Ys?history.state:{};se&&(Y||Z?o.replace(te.fullPath,Zt({scroll:Z&&oe&&oe.scroll},G)):o.push(te.fullPath,G)),u.value=te,H(te,de,se,Z),z()}let D;function W(){D||(D=o.listen((te,de,se)=>{if(!ee.listening)return;const Y=y(te),G=E(Y,ee.currentRoute.value);if(G){T(Zt(G,{replace:!0,force:!0}),Y).catch(yi);return}c=Y;const V=u.value;Ys&&vJ(g0(V.fullPath,se.delta),Yd()),O(Y,V).catch(Z=>Do(Z,wn.NAVIGATION_ABORTED|wn.NAVIGATION_CANCELLED)?Z:Do(Z,wn.NAVIGATION_GUARD_REDIRECT)?(T(Zt(b(Z.to),{force:!0}),Y).then(oe=>{Do(oe,wn.NAVIGATION_ABORTED|wn.NAVIGATION_DUPLICATED)&&!se.delta&&se.type===mv.pop&&o.go(-1,!1)}).catch(yi),Promise.reject()):(se.delta&&o.go(-se.delta,!1),I(Z,Y,V))).then(Z=>{Z=Z||P(Y,V,!1),Z&&(se.delta&&!Do(Z,wn.NAVIGATION_CANCELLED)?o.go(-se.delta,!1):se.type===mv.pop&&Do(Z,wn.NAVIGATION_ABORTED|wn.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),_(Y,V,Z)}).catch(yi)}))}let U=Xr(),F=Xr(),R;function I(te,de,se){z(te);const Y=F.list();return Y.length?Y.forEach(G=>G(te,de,se)):console.error(te),Promise.reject(te)}function L(){return R&&u.value!==gl?Promise.resolve():new Promise((te,de)=>{U.add([te,de])})}function z(te){return R||(R=!te,W(),U.list().forEach(([de,se])=>te?se(te):de()),U.reset()),te}function H(te,de,se,Y){const{scrollBehavior:G}=e;if(!Ys||!G)return Promise.resolve();const V=!se&&hJ(g0(te.fullPath,0))||(Y||!se)&&history.state&&history.state.scroll||null;return Ae().then(()=>G(te,de,V)).then(Z=>Z&&pJ(Z)).catch(Z=>I(Z,te,de))}const K=te=>o.go(te);let q;const Q=new Set,ee={currentRoute:u,listening:!0,addRoute:g,removeRoute:v,clearRoutes:t.clearRoutes,hasRoute:m,getRoutes:h,resolve:y,options:e,push:C,replace:k,go:K,back:()=>K(-1),forward:()=>K(1),beforeEach:l.add,beforeResolve:s.add,afterEach:r.add,onError:F.add,isReady:L,install(te){te.component("RouterLink",KJ),te.component("RouterView",YJ),te.config.globalProperties.$router=ee,Object.defineProperty(te.config.globalProperties,"$route",{enumerable:!0,get:()=>i(u)}),Ys&&!q&&u.value===gl&&(q=!0,C(o.location).catch(Y=>{}));const de={};for(const Y in gl)Object.defineProperty(de,Y,{get:()=>u.value[Y],enumerable:!0});te.provide(qd,ee),te.provide(Mm,rd(de)),te.provide(yv,u);const se=te.unmount;Q.add(te),te.unmount=function(){Q.delete(te),Q.size<1&&(c=gl,D&&D(),D=null,u.value=gl,q=!1,R=!1),se()}}};function ue(te){return te.reduce((de,se)=>de.then(()=>N(se)),Promise.resolve())}return ee}function oQ(){return _e(qd)}function lQ(e){return _e(Mm)}const GJ=[{path:"/",name:"home",component:()=>io(()=>import("./HomePage-CdqgUFQt.js"),__vite__mapDeps([0,1,2]))},{path:"/search",name:"search",component:()=>io(()=>import("./SearchResult-EeENDml7.js"),__vite__mapDeps([3,4,1,5]))},{path:"/result/:id",name:"result-detail",component:()=>io(()=>import("./ResultDetail-BLqifyVI.js"),__vite__mapDeps([6,7,4,1,8,9]))},{path:"/admin/login",name:"admin-login",component:()=>io(()=>import("./AdminLogin-BFh47H6c.js"),__vite__mapDeps([10,1,11]))},{path:"/admin",component:()=>io(()=>import("./AdminLayout-qvvQgX9o.js"),__vite__mapDeps([12,1,13])),meta:{requiresAuth:!0},children:[{path:"",redirect:"/admin/dashboard"},{path:"dashboard",name:"admin-dashboard",component:()=>io(()=>import("./AdminDashboard-CkHQl97R.js"),__vite__mapDeps([14,1,15,4,7,8,16,17,18,19,20,21]))},{path:"cloud-configs",name:"admin-cloud-configs",component:()=>io(()=>import("./CloudConfig-3znuBWUR.js"),__vite__mapDeps([15,4,1,7,8,16]))},{path:"cleanup",name:"admin-cleanup",component:()=>io(()=>import("./Cleanup-BkDauFCX.js"),__vite__mapDeps([22,1,23]))},{path:"system",name:"admin-system",component:()=>io(()=>import("./SystemConfig-BbG7uBv0.js"),__vite__mapDeps([17,1,18]))},{path:"save-records",name:"admin-save-records",component:()=>io(()=>import("./SaveRecords-B5cCMWaP.js"),__vite__mapDeps([19,1,20]))}]}],WE=qJ({history:TJ(),routes:GJ});WE.beforeEach((e,t,n)=>{const a=localStorage.getItem("admin_token");e.meta.requiresAuth&&!a?n("/admin/login"):n()});const Gd=lw(FZ);Gd.use(y$());Gd.use(WE);Gd.use(VZ);Gd.mount("#app");export{vP as A,Ae as B,ZJ as C,XJ as D,iZ as E,He as F,eQ as G,JJ as H,tQ as I,al as J,dt as K,Nt as L,Oo as M,aQ as N,QJ as O,nQ as P,Pv as Q,x as a,j as b,B as c,ie as d,le as e,J as f,en as g,A as h,Rt as i,Ot as j,i as k,St as l,$r as m,M as n,mt as o,je as p,Xe as q,Ct as r,QP as s,ke as t,oQ as u,S as v,ne as w,fe as x,re as y,lQ as z};
+ */let kJ=()=>location.protocol+"//"+location.host;function zE(e,t){const{pathname:n,search:a,hash:o}=t,l=e.indexOf("#");if(l>-1){let s=o.includes(e.slice(l))?e.slice(l).length:1,r=o.slice(s);return r[0]!=="/"&&(r="/"+r),h0(r,"")}return h0(n,e)+a+o}function EJ(e,t,n,a){let o=[],l=[],s=null;const r=({state:p})=>{const g=zE(e,location),v=n.value,h=t.value;let m=0;if(p){if(n.value=g,t.value=p,s&&s===v){s=null;return}m=h?p.position-h.position:0}else a(g);o.forEach(y=>{y(n.value,v,{delta:m,type:mv.pop,direction:m?m>0?qf.forward:qf.back:qf.unknown})})};function u(){s=n.value}function c(p){o.push(p);const g=()=>{const v=o.indexOf(p);v>-1&&o.splice(v,1)};return l.push(g),g}function d(){if(document.visibilityState==="hidden"){const{history:p}=window;if(!p.state)return;p.replaceState(Zt({},p.state,{scroll:Yd()}),"")}}function f(){for(const p of l)p();l=[],window.removeEventListener("popstate",r),window.removeEventListener("pagehide",d),document.removeEventListener("visibilitychange",d)}return window.addEventListener("popstate",r),window.addEventListener("pagehide",d),document.addEventListener("visibilitychange",d),{pauseListeners:u,listen:c,destroy:f}}function w0(e,t,n,a=!1,o=!1){return{back:e,current:t,forward:n,replaced:a,position:window.history.length,scroll:o?Yd():null}}function xJ(e){const{history:t,location:n}=window,a={value:zE(e,n)},o={value:t.state};o.value||l(a.value,{back:null,current:a.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function l(u,c,d){const f=e.indexOf("#"),p=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+u:kJ()+e+u;try{t[d?"replaceState":"pushState"](c,"",p),o.value=c}catch(g){console.error(g),n[d?"replace":"assign"](p)}}function s(u,c){l(u,Zt({},t.state,w0(o.value.back,u,o.value.forward,!0),c,{position:o.value.position}),!0),a.value=u}function r(u,c){const d=Zt({},o.value,t.state,{forward:u,scroll:Yd()});l(d.current,d,!0),l(u,Zt({},w0(a.value,u,null),{position:d.position+1},c),!1),a.value=u}return{location:a,state:o,push:r,replace:s}}function TJ(e){e=uJ(e);const t=xJ(e),n=EJ(e,t.state,t.location,t.replace);function a(l,s=!0){s||n.pauseListeners(),history.go(l)}const o=Zt({location:"",base:e,go:a,createHref:dJ.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}let us=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var Rn=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(Rn||{});const $J={type:us.Static,value:""},OJ=/[a-zA-Z0-9_]/;function NJ(e){if(!e)return[[]];if(e==="/")return[[$J]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${c}": ${g}`)}let n=Rn.Static,a=n;const o=[];let l;function s(){l&&o.push(l),l=[]}let r=0,u,c="",d="";function f(){c&&(n===Rn.Static?l.push({type:us.Static,value:c}):n===Rn.Param||n===Rn.ParamRegExp||n===Rn.ParamRegExpEnd?(l.length>1&&(u==="*"||u==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),l.push({type:us.Param,value:c,regexp:d,repeatable:u==="*"||u==="+",optional:u==="*"||u==="?"})):t("Invalid state to consume buffer"),c="")}function p(){c+=u}for(;rt.length?t.length===1&&t[0]===aa.Static+aa.Segment?1:-1:0}function HE(e,t){let n=0;const a=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const PJ={strict:!1,end:!0,sensitive:!1};function AJ(e,t,n){const a=IJ(NJ(e.path),n),o=Zt(a,{record:e,parent:t,children:[],alias:[]});return t&&!o.record.aliasOf==!t.record.aliasOf&&t.children.push(o),o}function LJ(e,t){const n=[],a=new Map;t=v0(PJ,t);function o(f){return a.get(f)}function l(f,p,g){const v=!g,h=E0(f);h.aliasOf=g&&g.record;const m=v0(t,f),y=[h];if("alias"in f){const C=typeof f.alias=="string"?[f.alias]:f.alias;for(const k of C)y.push(E0(Zt({},h,{components:g?g.record.components:h.components,path:k,aliasOf:g?g.record:h})))}let b,w;for(const C of y){const{path:k}=C;if(p&&k[0]!=="/"){const E=p.record.path,T=E[E.length-1]==="/"?"":"/";C.path=p.record.path+(k&&T+k)}if(b=AJ(C,p,m),g?g.alias.push(b):(w=w||b,w!==b&&w.alias.push(b),v&&f.name&&!x0(b)&&s(f.name)),KE(b)&&u(b),h.children){const E=h.children;for(let T=0;T{s(w)}:yi}function s(f){if(BE(f)){const p=a.get(f);p&&(a.delete(f),n.splice(n.indexOf(p),1),p.children.forEach(s),p.alias.forEach(s))}else{const p=n.indexOf(f);p>-1&&(n.splice(p,1),f.record.name&&a.delete(f.record.name),f.children.forEach(s),f.alias.forEach(s))}}function r(){return n}function u(f){const p=BJ(f,n);n.splice(p,0,f),f.record.name&&!x0(f)&&a.set(f.record.name,f)}function c(f,p){let g,v={},h,m;if("name"in f&&f.name){if(g=a.get(f.name),!g)throw Tr(wn.MATCHER_NOT_FOUND,{location:f});m=g.record.name,v=Zt(k0(p.params,g.keys.filter(w=>!w.optional).concat(g.parent?g.parent.keys.filter(w=>w.optional):[]).map(w=>w.name)),f.params&&k0(f.params,g.keys.map(w=>w.name))),h=g.stringify(v)}else if(f.path!=null)h=f.path,g=n.find(w=>w.re.test(h)),g&&(v=g.parse(h),m=g.record.name);else{if(g=p.name?a.get(p.name):n.find(w=>w.re.test(p.path)),!g)throw Tr(wn.MATCHER_NOT_FOUND,{location:f,currentLocation:p});m=g.record.name,v=Zt({},p.params,f.params),h=g.stringify(v)}const y=[];let b=g;for(;b;)y.unshift(b.record),b=b.parent;return{name:m,path:h,params:v,matched:y,meta:VJ(y)}}e.forEach(f=>l(f));function d(){n.length=0,a.clear()}return{addRoute:l,resolve:c,removeRoute:s,clearRoutes:d,getRoutes:r,getRecordMatcher:o}}function k0(e,t){const n={};for(const a of t)a in e&&(n[a]=e[a]);return n}function E0(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:DJ(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function DJ(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const a in e.components)t[a]=typeof n=="object"?n[a]:n;return t}function x0(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function VJ(e){return e.reduce((t,n)=>Zt(t,n.meta),{})}function BJ(e,t){let n=0,a=t.length;for(;n!==a;){const l=n+a>>1;HE(e,t[l])<0?a=l:n=l+1}const o=FJ(e);return o&&(a=t.lastIndexOf(o,a-1)),a}function FJ(e){let t=e;for(;t=t.parent;)if(KE(t)&&HE(e,t)===0)return t}function KE({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function T0(e){const t=_e(qd),n=_e(Mm),a=S(()=>{const u=i(e.to);return t.resolve(u)}),o=S(()=>{const{matched:u}=a.value,{length:c}=u,d=u[c-1],f=n.matched;if(!d||!f.length)return-1;const p=f.findIndex(xr.bind(null,d));if(p>-1)return p;const g=$0(u[c-2]);return c>1&&$0(d)===g&&f[f.length-1].path!==g?f.findIndex(xr.bind(null,u[c-2])):p}),l=S(()=>o.value>-1&&jJ(n.params,a.value.params)),s=S(()=>o.value>-1&&o.value===n.matched.length-1&&VE(n.params,a.value.params));function r(u={}){if(WJ(u)){const c=t[i(e.replace)?"replace":"push"](i(e.to)).catch(yi);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:a,href:S(()=>a.value.href),isActive:l,isExactActive:s,navigate:r}}function zJ(e){return e.length===1?e[0]:e}const HJ=ie({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:T0,setup(e,{slots:t}){const n=Rt(T0(e)),{options:a}=_e(qd),o=S(()=>({[O0(e.activeClass,a.linkActiveClass,"router-link-active")]:n.isActive,[O0(e.exactActiveClass,a.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const l=t.default&&zJ(t.default(n));return e.custom?l:Ye("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},l)}}}),KJ=HJ;function WJ(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function jJ(e,t){for(const n in t){const a=t[n],o=e[n];if(typeof a=="string"){if(a!==o)return!1}else if(!Ja(o)||o.length!==a.length||a.some((l,s)=>l.valueOf()!==o[s].valueOf()))return!1}return!0}function $0(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const O0=(e,t,n)=>e??t??n,UJ=ie({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const a=_e(yv),o=S(()=>e.route||a.value),l=_e(b0,0),s=S(()=>{let c=i(l);const{matched:d}=o.value;let f;for(;(f=d[c])&&!f.components;)c++;return c}),r=S(()=>o.value.matched[s.value]);bt(b0,S(()=>s.value+1)),bt(CJ,r),bt(yv,o);const u=A();return fe(()=>[u.value,r.value,e.name],([c,d,f],[p,g,v])=>{d&&(d.instances[f]=c,g&&g!==d&&c&&c===p&&(d.leaveGuards.size||(d.leaveGuards=g.leaveGuards),d.updateGuards.size||(d.updateGuards=g.updateGuards))),c&&d&&(!g||!xr(d,g)||!p)&&(d.enterCallbacks[f]||[]).forEach(h=>h(c))},{flush:"post"}),()=>{const c=o.value,d=e.name,f=r.value,p=f&&f.components[d];if(!p)return N0(n.default,{Component:p,route:c});const g=f.props[d],v=g?g===!0?c.params:typeof g=="function"?g(c):g:null,m=Ye(p,Zt({},v,t,{onVnodeUnmounted:y=>{y.component.isUnmounted&&(f.instances[d]=null)},ref:u}));return N0(n.default,{Component:m,route:c})||m}}});function N0(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const YJ=UJ;function qJ(e){const t=LJ(e.routes,e),n=e.parseQuery||bJ,a=e.stringifyQuery||y0,o=e.history,l=Xr(),s=Xr(),r=Xr(),u=Wt(gl);let c=gl;Ys&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const d=Uf.bind(null,te=>""+te),f=Uf.bind(null,nJ),p=Uf.bind(null,qi);function g(te,de){let se,Y;return BE(te)?(se=t.getRecordMatcher(te),Y=de):Y=te,t.addRoute(Y,se)}function v(te){const de=t.getRecordMatcher(te);de&&t.removeRoute(de)}function h(){return t.getRoutes().map(te=>te.record)}function m(te){return!!t.getRecordMatcher(te)}function y(te,de){if(de=Zt({},de||u.value),typeof te=="string"){const oe=Yf(n,te,de.path),ce=t.resolve({path:oe.path},de),ge=o.createHref(oe.fullPath);return Zt(oe,ce,{params:p(ce.params),hash:qi(oe.hash),redirectedFrom:void 0,href:ge})}let se;if(te.path!=null)se=Zt({},te,{path:Yf(n,te.path,de.path).path});else{const oe=Zt({},te.params);for(const ce in oe)oe[ce]==null&&delete oe[ce];se=Zt({},te,{params:f(oe)}),de.params=f(de.params)}const Y=t.resolve(se,de),G=te.hash||"";Y.params=d(p(Y.params));const V=lJ(a,Zt({},te,{hash:QZ(G),path:Y.path})),Z=o.createHref(V);return Zt({fullPath:V,hash:G,query:a===y0?wJ(te.query):te.query||{}},Y,{redirectedFrom:void 0,href:Z})}function b(te){return typeof te=="string"?Yf(n,te,u.value.path):Zt({},te)}function w(te,de){if(c!==te)return Tr(wn.NAVIGATION_CANCELLED,{from:de,to:te})}function C(te){return T(te)}function k(te){return C(Zt(b(te),{replace:!0}))}function E(te,de){const se=te.matched[te.matched.length-1];if(se&&se.redirect){const{redirect:Y}=se;let G=typeof Y=="function"?Y(te,de):Y;return typeof G=="string"&&(G=G.includes("?")||G.includes("#")?G=b(G):{path:G},G.params={}),Zt({query:te.query,hash:te.hash,params:G.path!=null?{}:te.params},G)}}function T(te,de){const se=c=y(te),Y=u.value,G=te.state,V=te.force,Z=te.replace===!0,oe=E(se,Y);if(oe)return T(Zt(b(oe),{state:typeof oe=="object"?Zt({},G,oe.state):G,force:V,replace:Z}),de||se);const ce=se;ce.redirectedFrom=de;let ge;return!V&&sJ(a,Y,se)&&(ge=Tr(wn.NAVIGATION_DUPLICATED,{to:ce,from:Y}),H(Y,Y,!0,!1)),(ge?Promise.resolve(ge):O(ce,Y)).catch(me=>Do(me)?Do(me,wn.NAVIGATION_GUARD_REDIRECT)?me:z(me):I(me,ce,Y)).then(me=>{if(me){if(Do(me,wn.NAVIGATION_GUARD_REDIRECT))return T(Zt({replace:Z},b(me.to),{state:typeof me.to=="object"?Zt({},G,me.to.state):G,force:V}),de||ce)}else me=P(ce,Y,!0,Z,G);return _(ce,Y,me),me})}function $(te,de){const se=w(te,de);return se?Promise.reject(se):Promise.resolve()}function N(te){const de=Q.values().next().value;return de&&typeof de.runWithContext=="function"?de.runWithContext(te):te()}function O(te,de){let se;const[Y,G,V]=SJ(te,de);se=Gf(Y.reverse(),"beforeRouteLeave",te,de);for(const oe of Y)oe.leaveGuards.forEach(ce=>{se.push(El(ce,te,de))});const Z=$.bind(null,te,de);return se.push(Z),ue(se).then(()=>{se=[];for(const oe of l.list())se.push(El(oe,te,de));return se.push(Z),ue(se)}).then(()=>{se=Gf(G,"beforeRouteUpdate",te,de);for(const oe of G)oe.updateGuards.forEach(ce=>{se.push(El(ce,te,de))});return se.push(Z),ue(se)}).then(()=>{se=[];for(const oe of V)if(oe.beforeEnter)if(Ja(oe.beforeEnter))for(const ce of oe.beforeEnter)se.push(El(ce,te,de));else se.push(El(oe.beforeEnter,te,de));return se.push(Z),ue(se)}).then(()=>(te.matched.forEach(oe=>oe.enterCallbacks={}),se=Gf(V,"beforeRouteEnter",te,de,N),se.push(Z),ue(se))).then(()=>{se=[];for(const oe of s.list())se.push(El(oe,te,de));return se.push(Z),ue(se)}).catch(oe=>Do(oe,wn.NAVIGATION_CANCELLED)?oe:Promise.reject(oe))}function _(te,de,se){r.list().forEach(Y=>N(()=>Y(te,de,se)))}function P(te,de,se,Y,G){const V=w(te,de);if(V)return V;const Z=de===gl,oe=Ys?history.state:{};se&&(Y||Z?o.replace(te.fullPath,Zt({scroll:Z&&oe&&oe.scroll},G)):o.push(te.fullPath,G)),u.value=te,H(te,de,se,Z),z()}let D;function W(){D||(D=o.listen((te,de,se)=>{if(!ee.listening)return;const Y=y(te),G=E(Y,ee.currentRoute.value);if(G){T(Zt(G,{replace:!0,force:!0}),Y).catch(yi);return}c=Y;const V=u.value;Ys&&vJ(g0(V.fullPath,se.delta),Yd()),O(Y,V).catch(Z=>Do(Z,wn.NAVIGATION_ABORTED|wn.NAVIGATION_CANCELLED)?Z:Do(Z,wn.NAVIGATION_GUARD_REDIRECT)?(T(Zt(b(Z.to),{force:!0}),Y).then(oe=>{Do(oe,wn.NAVIGATION_ABORTED|wn.NAVIGATION_DUPLICATED)&&!se.delta&&se.type===mv.pop&&o.go(-1,!1)}).catch(yi),Promise.reject()):(se.delta&&o.go(-se.delta,!1),I(Z,Y,V))).then(Z=>{Z=Z||P(Y,V,!1),Z&&(se.delta&&!Do(Z,wn.NAVIGATION_CANCELLED)?o.go(-se.delta,!1):se.type===mv.pop&&Do(Z,wn.NAVIGATION_ABORTED|wn.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),_(Y,V,Z)}).catch(yi)}))}let U=Xr(),F=Xr(),R;function I(te,de,se){z(te);const Y=F.list();return Y.length?Y.forEach(G=>G(te,de,se)):console.error(te),Promise.reject(te)}function L(){return R&&u.value!==gl?Promise.resolve():new Promise((te,de)=>{U.add([te,de])})}function z(te){return R||(R=!te,W(),U.list().forEach(([de,se])=>te?se(te):de()),U.reset()),te}function H(te,de,se,Y){const{scrollBehavior:G}=e;if(!Ys||!G)return Promise.resolve();const V=!se&&hJ(g0(te.fullPath,0))||(Y||!se)&&history.state&&history.state.scroll||null;return Ae().then(()=>G(te,de,V)).then(Z=>Z&&pJ(Z)).catch(Z=>I(Z,te,de))}const K=te=>o.go(te);let q;const Q=new Set,ee={currentRoute:u,listening:!0,addRoute:g,removeRoute:v,clearRoutes:t.clearRoutes,hasRoute:m,getRoutes:h,resolve:y,options:e,push:C,replace:k,go:K,back:()=>K(-1),forward:()=>K(1),beforeEach:l.add,beforeResolve:s.add,afterEach:r.add,onError:F.add,isReady:L,install(te){te.component("RouterLink",KJ),te.component("RouterView",YJ),te.config.globalProperties.$router=ee,Object.defineProperty(te.config.globalProperties,"$route",{enumerable:!0,get:()=>i(u)}),Ys&&!q&&u.value===gl&&(q=!0,C(o.location).catch(Y=>{}));const de={};for(const Y in gl)Object.defineProperty(de,Y,{get:()=>u.value[Y],enumerable:!0});te.provide(qd,ee),te.provide(Mm,rd(de)),te.provide(yv,u);const se=te.unmount;Q.add(te),te.unmount=function(){Q.delete(te),Q.size<1&&(c=gl,D&&D(),D=null,u.value=gl,q=!1,R=!1),se()}}};function ue(te){return te.reduce((de,se)=>de.then(()=>N(se)),Promise.resolve())}return ee}function oQ(){return _e(qd)}function lQ(e){return _e(Mm)}const GJ=[{path:"/",name:"home",component:()=>io(()=>import("./HomePage-BdsJIIWj.js"),__vite__mapDeps([0,1,2]))},{path:"/search",name:"search",component:()=>io(()=>import("./SearchResult-D-wlRNNm.js"),__vite__mapDeps([3,4,1,5]))},{path:"/result/:id",name:"result-detail",component:()=>io(()=>import("./ResultDetail-CSF_8kBo.js"),__vite__mapDeps([6,7,4,1,8,9]))},{path:"/admin/login",name:"admin-login",component:()=>io(()=>import("./AdminLogin-DnKHAQm-.js"),__vite__mapDeps([10,1,11]))},{path:"/admin",component:()=>io(()=>import("./AdminLayout-DW7wUpub.js"),__vite__mapDeps([12,1,13])),meta:{requiresAuth:!0},children:[{path:"",redirect:"/admin/dashboard"},{path:"dashboard",name:"admin-dashboard",component:()=>io(()=>import("./AdminDashboard-C_krL4pj.js"),__vite__mapDeps([14,1,15,4,7,8,16,17,18,19,20,21]))},{path:"cloud-configs",name:"admin-cloud-configs",component:()=>io(()=>import("./CloudConfig-0YLAk8H4.js"),__vite__mapDeps([15,4,1,7,8,16]))},{path:"cleanup",name:"admin-cleanup",component:()=>io(()=>import("./Cleanup-C7YekVJo.js"),__vite__mapDeps([22,1,23]))},{path:"system",name:"admin-system",component:()=>io(()=>import("./SystemConfig-0RdDTGNd.js"),__vite__mapDeps([17,1,18]))},{path:"save-records",name:"admin-save-records",component:()=>io(()=>import("./SaveRecords-BjfouS_I.js"),__vite__mapDeps([19,1,20]))}]}],WE=qJ({history:TJ(),routes:GJ});WE.beforeEach((e,t,n)=>{const a=localStorage.getItem("admin_token");e.meta.requiresAuth&&!a?n("/admin/login"):n()});const Gd=lw(FZ);Gd.use(y$());Gd.use(WE);Gd.use(VZ);Gd.mount("#app");export{vP as A,Ae as B,ZJ as C,XJ as D,iZ as E,He as F,eQ as G,JJ as H,tQ as I,al as J,dt as K,Nt as L,Oo as M,aQ as N,QJ as O,nQ as P,Pv as Q,x as a,j as b,B as c,ie as d,le as e,J as f,en as g,A as h,Rt as i,Ot as j,i as k,St as l,$r as m,M as n,mt as o,je as p,Xe as q,Ct as r,QP as s,ke as t,oQ as u,S as v,ne as w,fe as x,re as y,lQ as z};
diff --git a/source_clean/frontend-src/dist-vite/h5/index.html b/source_clean/frontend-src/dist-vite/h5/index.html
index bf89fbb..fc7dd86 100755
--- a/source_clean/frontend-src/dist-vite/h5/index.html
+++ b/source_clean/frontend-src/dist-vite/h5/index.html
@@ -13,7 +13,7 @@
if(cfg.site_name) document.title = cfg.site_name + ' - 搜索';
}).catch(function(){});
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
分享链接
+
+
+
+
+
+
+
+
+
+
+ 🔑 提取密码:
+
+ 打开链接后需输入密码
+
+
+
⚠️
+
+ 请尽快复制链接到浏览器打开 或 用夸克APP扫码
+ 转存至您的网盘,以免资源被官方和谐
+
+
+
+
郑重警告一:网盘内除您所需资源外,不要打开任何不相关内容。
+
郑重警告二:网盘内除您所需资源外,不要打开任何不相关内容。
+
郑重警告三:网盘内除您所需资源外,不要打开任何不相关内容。
+
郑重警告四:以上警告说三遍,你还要明知故犯吗?
+
+
+ ⚠️ 本站资源仅供学习交流,请于24h内删除
+
+
+
+
+
+ 📜 免责声明
+ 关闭
+ 一键复制链接
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+