diff --git a/assets/admin/build/AttachmentPermissions.NUq74TjZ.js b/assets/admin/build/AttachmentPermissions.NUq74TjZ.js
deleted file mode 100644
index cebc53a7..00000000
--- a/assets/admin/build/AttachmentPermissions.NUq74TjZ.js
+++ /dev/null
@@ -1 +0,0 @@
-import{o as q,X as U,a4 as l,a3 as o,r as w,a1 as m,e as F,_ as $,W as x,f as z,Y as s,F as D,R as E,a2 as G,Z as P,c as H}from"./vendor-vue.Bykizn0M.js";import{a as f}from"./shared-api.D5_fnN32.js";import{P as L}from"./PageHeader.Di3JTPjc.js";import{_ as T}from"./FaIcon.CX_hGmM4.js";import{_ as W}from"./index.js";import{u as X}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const Y={class:"aksrt-page-container"},Z={class:"aksrt-attach__summary"},j={class:"aksrt-form-actions"},J={__name:"AttachmentPermissions",setup(K){const y=$(),v=X(),g=w(!0),k=w(!1),p=w({}),e=F({allow_avatar_upload:!0,allow_cover_upload:!0,allow_background_upload:!1,avatar_max_size:2,allow_submit_images:!0,submit_image_max_size:5,allow_comment_images:!1,comment_image_max_size:2,allow_resource_upload:!0,resource_max_size:50,ai_moderate_background:!0,ai_moderate_submit:!1}),M=H(()=>[{key:"avatar",icon:"fas fa-user-circle",label:"头像上传",enabled:e.allow_avatar_upload},{key:"cover",icon:"fas fa-image",label:"封面上传",enabled:e.allow_cover_upload},{key:"background",icon:"fas fa-photo-video",label:"背景图上传",enabled:e.allow_background_upload},{key:"submit",icon:"fas fa-edit",label:"投稿图片",enabled:e.allow_submit_images},{key:"comment",icon:"fas fa-comment-dots",label:"评论图片",enabled:e.allow_comment_images},{key:"resource",icon:"fas fa-file-archive",label:"资源附件",enabled:e.allow_resource_upload}]);function B(i){y.push(i)}function N(){y.push("/permissions/moderation")}async function S(){g.value=!0;try{const[i,a]=await Promise.all([f.getPermissionsAttachmentSettings(),f.getPermissionsModerationSettings()]),n=(i==null?void 0:i.data)??i??{},_=(a==null?void 0:a.data)??a??{};e.allow_avatar_upload=n.allow_avatar_upload!==!1,e.allow_cover_upload=n.allow_cover_upload!==!1,e.allow_background_upload=!!n.allow_background_upload,e.avatar_max_size=Number(n.avatar_max_size||2),e.allow_submit_images=n.allow_submit_images!==!1,e.submit_image_max_size=Number(n.submit_image_max_size||5),e.allow_comment_images=!!n.allow_comment_images,e.comment_image_max_size=Number(n.comment_image_max_size||2),e.allow_resource_upload=n.allow_resource_upload!==!1,e.resource_max_size=Number(n.resource_max_size||50),e.ai_moderate_background=_.ai_moderate_background!==!1,e.ai_moderate_submit=!!_.ai_moderate_submit,p.value={..._}}catch(i){v.error(i.message||"加载附件权限失败")}finally{g.value=!1}}async function A(){k.value=!0;try{await Promise.all([f.savePermissionsAttachmentSettings({allow_avatar_upload:e.allow_avatar_upload,allow_cover_upload:e.allow_cover_upload,allow_background_upload:e.allow_background_upload,avatar_max_size:e.avatar_max_size,allow_submit_images:e.allow_submit_images,submit_image_max_size:e.submit_image_max_size,allow_comment_images:e.allow_comment_images,comment_image_max_size:e.comment_image_max_size,allow_resource_upload:e.allow_resource_upload,resource_max_size:e.resource_max_size}),f.savePermissionsModerationSettings({...p.value,ai_moderate_background:e.ai_moderate_background,ai_moderate_submit:e.ai_moderate_submit})]),p.value={...p.value,ai_moderate_background:e.ai_moderate_background,ai_moderate_submit:e.ai_moderate_submit},v.success("附件治理配置已保存")}catch(i){v.error(i.message||"保存失败")}finally{k.value=!1}}return q(S),(i,a)=>{const n=m("n-button"),_=m("n-space"),C=m("n-grid-item"),I=m("n-grid"),d=m("n-card"),u=m("n-switch"),r=m("n-form-item"),c=m("n-input-number"),b=m("n-form"),V=m("n-spin");return x(),U("div",Y,[l(L,{title:"附件治理",desc:"统一管理全站上传行为:头像、封面、投稿图片、评论图片、背景图和资源附件。"},{actions:o(()=>[l(_,null,{default:o(()=>[l(n,{quaternary:"",onClick:a[0]||(a[0]=t=>B("/permissions/download"))},{default:o(()=>[...a[13]||(a[13]=[z("下载权限",-1)])]),_:1}),l(n,{quaternary:"",onClick:N},{default:o(()=>[...a[14]||(a[14]=[z("审核策略",-1)])]),_:1})]),_:1})]),_:1}),l(V,{show:g.value,style:{width:"100%","min-height":"200px"}},{default:o(()=>[l(d,{class:"aksrt-section-card"},{default:o(()=>[a[15]||(a[15]=s("div",{class:"aksrt-section-header"},[s("h3",null,"上传策略总览")],-1)),l(I,{cols:3,"x-gap":12,"y-gap":12},{default:o(()=>[(x(!0),U(D,null,E(M.value,t=>(x(),G(C,{key:t.key},{default:o(()=>[s("div",Z,[l(T,{icon:t.icon,size:16,color:t.enabled?"#52c41a":"#8a909c"},null,8,["icon","color"]),s("div",null,[s("strong",null,P(t.label),1),s("p",null,P(t.enabled?"已启用":"已关闭"),1)])])]),_:2},1024))),128))]),_:1})]),_:1}),l(d,{class:"aksrt-section-card"},{default:o(()=>[a[19]||(a[19]=s("div",{class:"aksrt-section-header"},[s("h3",null,"头像与封面")],-1)),l(b,{model:e,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:o(()=>[l(r,{label:"允许用户上传头像"},{feedback:o(()=>[...a[16]||(a[16]=[s("span",{class:"aksrt-hint-text"},"关闭后用户只能使用 Gravatar/Cravatar 自动头像。",-1)])]),default:o(()=>[l(u,{value:e.allow_avatar_upload,"onUpdate:value":a[1]||(a[1]=t=>e.allow_avatar_upload=t)},null,8,["value"])]),_:1}),l(r,{label:"允许用户上传封面图"},{feedback:o(()=>[...a[17]||(a[17]=[s("span",{class:"aksrt-hint-text"},"控制用户中心公开主页封面图上传入口。",-1)])]),default:o(()=>[l(u,{value:e.allow_cover_upload,"onUpdate:value":a[2]||(a[2]=t=>e.allow_cover_upload=t)},null,8,["value"])]),_:1}),l(r,{label:"允许用户上传背景图"},{feedback:o(()=>[...a[18]||(a[18]=[s("span",{class:"aksrt-hint-text"},"控制用户中心公开可用的背景图上传入口。",-1)])]),default:o(()=>[l(u,{value:e.allow_background_upload,"onUpdate:value":a[3]||(a[3]=t=>e.allow_background_upload=t)},null,8,["value"])]),_:1}),l(r,{label:"头像/封面大小上限 (MB)"},{default:o(()=>[l(c,{value:e.avatar_max_size,"onUpdate:value":a[4]||(a[4]=t=>e.avatar_max_size=t),min:1,max:10,style:{"max-width":"160px"}},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),l(d,{class:"aksrt-section-card"},{default:o(()=>[a[22]||(a[22]=s("div",{class:"aksrt-section-header"},[s("h3",null,"内容上传")],-1)),l(b,{model:e,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:o(()=>[l(r,{label:"允许投稿插入图片"},{feedback:o(()=>[...a[20]||(a[20]=[s("span",{class:"aksrt-hint-text"},"前台投稿编辑器中允许插入图片。",-1)])]),default:o(()=>[l(u,{value:e.allow_submit_images,"onUpdate:value":a[5]||(a[5]=t=>e.allow_submit_images=t)},null,8,["value"])]),_:1}),l(r,{label:"投稿图片大小上限 (MB)"},{default:o(()=>[l(c,{value:e.submit_image_max_size,"onUpdate:value":a[6]||(a[6]=t=>e.submit_image_max_size=t),min:1,max:20,style:{"max-width":"160px"}},null,8,["value"])]),_:1}),l(r,{label:"允许评论插入图片"},{feedback:o(()=>[...a[21]||(a[21]=[s("span",{class:"aksrt-hint-text"},"评论工具栏中允许插入图片链接或上传图片。",-1)])]),default:o(()=>[l(u,{value:e.allow_comment_images,"onUpdate:value":a[7]||(a[7]=t=>e.allow_comment_images=t)},null,8,["value"])]),_:1}),l(r,{label:"评论图片大小上限 (MB)"},{default:o(()=>[l(c,{value:e.comment_image_max_size,"onUpdate:value":a[8]||(a[8]=t=>e.comment_image_max_size=t),min:1,max:10,style:{"max-width":"160px"}},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),l(d,{class:"aksrt-section-card"},{default:o(()=>[a[24]||(a[24]=s("div",{class:"aksrt-section-header"},[s("h3",null,"资源附件")],-1)),l(b,{model:e,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:o(()=>[l(r,{label:"允许资源附件上传"},{feedback:o(()=>[...a[23]||(a[23]=[s("span",{class:"aksrt-hint-text"},"后台资源编辑器中允许上传附件文件。",-1)])]),default:o(()=>[l(u,{value:e.allow_resource_upload,"onUpdate:value":a[9]||(a[9]=t=>e.allow_resource_upload=t)},null,8,["value"])]),_:1}),l(r,{label:"资源附件大小上限 (MB)"},{default:o(()=>[l(c,{value:e.resource_max_size,"onUpdate:value":a[10]||(a[10]=t=>e.resource_max_size=t),min:1,max:200,style:{"max-width":"160px"}},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),l(d,{class:"aksrt-section-card"},{default:o(()=>[a[27]||(a[27]=s("div",{class:"aksrt-section-header"},[s("h3",null,"审核联动")],-1)),l(b,{model:e,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:o(()=>[l(r,{label:"背景图接入 AI 审核"},{feedback:o(()=>[...a[25]||(a[25]=[s("span",{class:"aksrt-hint-text"},"命中高风险时会阻断上传,并保留上一次背景图。",-1)])]),default:o(()=>[l(u,{value:e.ai_moderate_background,"onUpdate:value":a[11]||(a[11]=t=>e.ai_moderate_background=t)},null,8,["value"])]),_:1}),l(r,{label:"投稿图片接入 AI 审核"},{feedback:o(()=>[...a[26]||(a[26]=[s("span",{class:"aksrt-hint-text"},"投稿中插入的图片也会经过内容安全审核。",-1)])]),default:o(()=>[l(u,{value:e.ai_moderate_submit,"onUpdate:value":a[12]||(a[12]=t=>e.ai_moderate_submit=t)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),s("div",j,[l(n,{type:"primary",loading:k.value,onClick:A},{default:o(()=>[...a[28]||(a[28]=[z("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}},oa=W(J,[["__scopeId","data-v-a728445f"]]);export{oa as default};
diff --git a/assets/admin/build/AttachmentPermissions.css b/assets/admin/build/AttachmentPermissions.css
deleted file mode 100644
index 5684b5c4..00000000
--- a/assets/admin/build/AttachmentPermissions.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-attach__summary[data-v-a728445f]{display:flex;align-items:center;gap:10px;padding:12px;border-radius:6px;background:#fafafa}.aksrt-attach__summary strong[data-v-a728445f]{display:block;font-size:13px;color:#1a1a2e}.aksrt-attach__summary p[data-v-a728445f]{margin:2px 0 0;font-size:12px;color:#8a909c}
diff --git a/assets/admin/build/BannerManager.DIeolpAQ.js b/assets/admin/build/BannerManager.DIeolpAQ.js
deleted file mode 100644
index 53d70fd8..00000000
--- a/assets/admin/build/BannerManager.DIeolpAQ.js
+++ /dev/null
@@ -1 +0,0 @@
-import{o as K,X as U,a4 as t,a3 as n,a1 as i,r as m,_ as O,W as g,Y as o,N as c,f as _,a2 as T,Z as Q,a5 as ee,k as d}from"./vendor-vue.Bykizn0M.js";import{a as f}from"./shared-api.D5_fnN32.js";import{o as ae}from"./media.BHNcAGK-.js";import{P as te}from"./PageHeader.Di3JTPjc.js";import{_ as le}from"./index.js";import{u as ne,a as se,B as p,d as E,b as z}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const oe={class:"aksrt-page-container content-page"},re={class:"aksrt-card-header-row"},ie={class:"aksrt-inline-setting"},ue={class:"aksrt-inline-setting__actions"},de={class:"aksrt-card-header-row"},me={class:"aksrt-card-header-row__left"},pe={class:"header-icon"},ce={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",style:{width:"18px",height:"18px"},"aria-hidden":"true"},ve={class:"aksrt-card-header-row__title"},_e={key:0,class:"aksrt-modal-preview"},fe={class:"aksrt-modal-grid"},ge={class:"aksrt-modal-footer"},be={__name:"BannerManager",setup(ye){const P=O(),r=ne(),V=se();function j(){P.push("/page-display/header-components")}const x=m(!0),C=m(!1),b=m(!1),y=m(!1),h=m([]),k=m(!0),v=m(!1),l=m(S());function S(){return{id:0,title:"",subtitle:"",image_url:"",link_url:"",show_text:!0,enabled:!0,show_meta:!1,sort_order:0}}const D=[{title:"预览",key:"image_url",width:90,render(e){return e.image_url?d(E,{src:e.image_url,width:64,height:36,objectFit:"cover",previewSrc:e.image_url,style:"border-radius:4px;display:block;"}):d("span",{style:"color:#bbb;font-size:12px;"},"无")}},{title:"标题",key:"title",ellipsis:{tooltip:!0},render(e){return e.title||d("span",{style:"color:#bbb;"},"未命名")}},{title:"文字",key:"show_text",width:70,className:"aksrt-table-mobile-hide",render(e){return d(z,{size:"small",type:e.show_text?"info":"default"},{default:()=>e.show_text?"显示":"隐藏"})}},{title:"排序",key:"sort_order",width:64,className:"aksrt-table-mobile-hide"},{title:"元信息",key:"show_meta",width:78,className:"aksrt-table-mobile-hide",render(e){return d(z,{size:"small",type:e.show_meta?"info":"default"},{default:()=>e.show_meta?"显示":"隐藏"})}},{title:"状态",key:"enabled",width:84,render(e){return d(z,{size:"small",type:e.enabled?"success":"default"},{default:()=>e.enabled?"启用":"禁用"})}},{title:"操作",key:"actions",width:130,render(e){return d("div",{style:"display:flex;gap:6px;"},[d(p,{size:"tiny",onClick:()=>q(e)},{default:()=>"编辑"}),d(p,{size:"tiny",type:"error",quaternary:!0,onClick:()=>W(e)},{default:()=>"删除"})])}}];async function N(){try{x.value=!0;const e=await f.getHomepageBanners();e.code==="success"&&(h.value=e.data||[])}catch(e){r.error(e.message||"加载失败")}finally{x.value=!1}}async function I(){b.value=!0;try{const e=await f.getHomepageSettings(),a=(e==null?void 0:e.data)||{};k.value=a.homepage_module_banner_enabled!==!1}catch(e){r.error(e.message||"加载 Banner 开关失败")}finally{b.value=!1}}async function F(){y.value=!0;try{const e=await f.saveHomepageSettings({homepage_module_banner_enabled:k.value});if((e==null?void 0:e.code)==="success"){r.success("Banner 开关已保存");return}throw new Error((e==null?void 0:e.message)||"保存 Banner 开关失败")}catch(e){r.error(e.message||"保存 Banner 开关失败")}finally{y.value=!1}}function $(){l.value=S(),v.value=!0}function q(e){l.value={id:e.id,title:e.title||"",subtitle:e.subtitle||"",image_url:e.image_url||"",link_url:e.link_url||"",show_text:e.show_text!==!1,enabled:!!e.enabled,show_meta:e.show_meta===!0,sort_order:Number(e.sort_order)||0},v.value=!0}async function L(){try{const e=await ae({title:"选择 Banner 图片",buttonText:"使用这张 Banner 图"});e!=null&&e.url&&(l.value.image_url=e.url)}catch(e){r.error(e.message||"打开媒体库失败")}}async function R(){if(!l.value.image_url){r.warning("请填写 Banner 图片");return}C.value=!0;try{l.value.id?(await f.updateHomepageBanner(l.value.id,l.value),r.success("已保存")):(await f.createHomepageBanner(l.value),r.success("已添加")),v.value=!1,await N()}catch(e){r.error(e.message||"保存失败")}finally{C.value=!1}}function W(e){V.warning({title:"确认删除",content:`确定删除 Banner「${e.title||"未命名"}」?`,positiveText:"删除",negativeText:"取消",onPositiveClick:async()=>{try{await f.deleteHomepageBanner(e.id),r.success("已删除"),await N()}catch(a){r.error(a.message||"删除失败")}}})}return K(()=>{N(),I()}),(e,a)=>{const w=i("n-switch"),u=i("n-form-item"),H=i("n-form"),M=i("n-card"),X=i("n-data-table"),Y=i("n-empty"),Z=i("n-spin"),B=i("n-input"),A=i("n-input-group"),G=i("n-input-number"),J=i("n-modal");return g(),U("div",oe,[t(te,{title:"Banner 管理",desc:"管理首页内容流 Banner 幻灯片(图片、文案、跳转、启用状态)。"}),t(M,{class:"aksrt-section-card",style:{"margin-bottom":"16px"}},{header:n(()=>[o("div",re,[a[12]||(a[12]=o("strong",null,"Banner 显示开关",-1)),t(c(p),{size:"small",secondary:"",onClick:j},{default:n(()=>[...a[11]||(a[11]=[_("顶部多功能组件(轮播参数)",-1)])]),_:1})])]),default:n(()=>[t(H,{"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:n(()=>[t(u,{label:"显示首页 Banner"},{default:n(()=>[o("div",ie,[t(w,{value:k.value,"onUpdate:value":a[0]||(a[0]=s=>k.value=s),disabled:b.value||y.value},null,8,["value","disabled"]),a[13]||(a[13]=o("span",{class:"aksrt-inline-setting__hint"},"关闭后,首页 Banner 区块将不再渲染。",-1))])]),_:1})]),_:1}),o("div",ue,[t(c(p),{type:"primary",loading:y.value,disabled:b.value,onClick:F},{default:n(()=>[...a[14]||(a[14]=[_("保存 Banner 开关",-1)])]),_:1},8,["loading","disabled"])])]),_:1}),t(Z,{show:x.value,style:{width:"100%","min-height":"200px"}},{default:n(()=>[t(M,{class:"aksrt-section-card"},{header:n(()=>[o("div",de,[o("div",me,[o("span",pe,[(g(),U("svg",ce,[...a[15]||(a[15]=[o("rect",{width:"18",height:"14",x:"3",y:"5",rx:"2"},null,-1),o("path",{d:"M3 10h18"},null,-1)])]))]),o("strong",ve,"Banner 列表 ("+Q(h.value.length)+")",1)]),t(c(p),{type:"primary",size:"small",onClick:$},{default:n(()=>[...a[16]||(a[16]=[_("+ 添加 Banner",-1)])]),_:1})])]),default:n(()=>[h.value.length?(g(),T(X,{key:0,columns:D,data:h.value,"row-key":s=>s.id,bordered:!1,size:"small"},null,8,["data","row-key"])):(g(),T(Y,{key:1,description:"暂无 Banner,添加后即可在首页使用。"}))]),_:1})]),_:1},8,["show"]),t(J,{show:v.value,"onUpdate:show":a[10]||(a[10]=s=>v.value=s),"mask-closable":!1,preset:"card",title:l.value.id?"编辑 Banner":"添加 Banner",class:"aksrt-modal-card"},{footer:n(()=>[o("div",ge,[t(c(p),{onClick:a[9]||(a[9]=s=>v.value=!1)},{default:n(()=>[...a[18]||(a[18]=[_("取消",-1)])]),_:1}),t(c(p),{type:"primary",loading:C.value,onClick:R},{default:n(()=>[...a[19]||(a[19]=[_("保存",-1)])]),_:1},8,["loading"])])]),default:n(()=>[t(H,{model:l.value,"label-placement":"top",class:"aksrt-form"},{default:n(()=>[t(u,{label:"标题"},{default:n(()=>[t(B,{value:l.value.title,"onUpdate:value":a[1]||(a[1]=s=>l.value.title=s),placeholder:"开启文字后显示的主标题"},null,8,["value"])]),_:1}),t(u,{label:"副标题"},{default:n(()=>[t(B,{value:l.value.subtitle,"onUpdate:value":a[2]||(a[2]=s=>l.value.subtitle=s),placeholder:"开启文字后显示的副标题"},null,8,["value"])]),_:1}),t(u,{label:"Banner 图片"},{default:n(()=>[t(A,null,{default:n(()=>[t(B,{value:l.value.image_url,"onUpdate:value":a[3]||(a[3]=s=>l.value.image_url=s),placeholder:"https://..."},null,8,["value"]),t(c(p),{secondary:"",onClick:L},{default:n(()=>[...a[17]||(a[17]=[_("媒体库",-1)])]),_:1})]),_:1})]),_:1}),l.value.image_url?(g(),U("div",_e,[t(c(E),{src:l.value.image_url,width:"100%",height:"160","object-fit":"cover","preview-src":l.value.image_url},null,8,["src","preview-src"])])):ee("",!0),t(u,{label:"跳转链接"},{default:n(()=>[t(B,{value:l.value.link_url,"onUpdate:value":a[4]||(a[4]=s=>l.value.link_url=s),placeholder:"点击后跳转地址,可留空"},null,8,["value"])]),_:1}),o("div",fe,[t(u,{label:"显示文字"},{default:n(()=>[t(w,{value:l.value.show_text,"onUpdate:value":a[5]||(a[5]=s=>l.value.show_text=s)},null,8,["value"])]),_:1}),t(u,{label:"启用"},{default:n(()=>[t(w,{value:l.value.enabled,"onUpdate:value":a[6]||(a[6]=s=>l.value.enabled=s)},null,8,["value"])]),_:1}),t(u,{label:"显示元信息"},{default:n(()=>[t(w,{value:l.value.show_meta,"onUpdate:value":a[7]||(a[7]=s=>l.value.show_meta=s)},null,8,["value"])]),_:1}),t(u,{label:"排序"},{default:n(()=>[t(G,{value:l.value.sort_order,"onUpdate:value":a[8]||(a[8]=s=>l.value.sort_order=s),min:0,style:{width:"100%"}},null,8,["value"])]),_:1})])]),_:1},8,["model"])]),_:1},8,["show","title"])])}}},Ue=le(be,[["__scopeId","data-v-ef7a491f"]]);export{Ue as default};
diff --git a/assets/admin/build/BannerManager.css b/assets/admin/build/BannerManager.css
deleted file mode 100644
index debd1431..00000000
--- a/assets/admin/build/BannerManager.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-inline-setting[data-v-ef7a491f]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.aksrt-inline-setting__hint[data-v-ef7a491f]{color:#7a7f8a;font-size:13px}.aksrt-inline-setting__actions[data-v-ef7a491f]{display:flex;justify-content:flex-end}.aksrt-modal-preview[data-v-ef7a491f]{margin:-8px 0 18px;border-radius:8px;overflow:hidden;border:1px solid #eef1f6}.aksrt-modal-grid[data-v-ef7a491f]{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}.aksrt-modal-footer[data-v-ef7a491f]{display:flex;justify-content:flex-end;gap:10px}@media(max-width:768px){.aksrt-modal-grid[data-v-ef7a491f]{grid-template-columns:1fr}}
diff --git a/assets/admin/build/CmsCredits.xTl3ugX1.js b/assets/admin/build/CmsCredits.xTl3ugX1.js
deleted file mode 100644
index 236f34f5..00000000
--- a/assets/admin/build/CmsCredits.xTl3ugX1.js
+++ /dev/null
@@ -1 +0,0 @@
-import{a as w}from"./shared-api.D5_fnN32.js";import{u as x}from"./vendor-naive.BuHWlEgf.js";import{o as U,X as C,Y as s,a4 as a,a3 as n,a1 as o,r as g,e as N,W as S,f as J}from"./vendor-vue.Bykizn0M.js";import"./vendor-misc.1adHN6i_.js";const O={class:"aksrt-page-container"},q={class:"aksrt-form-footer"},W={__name:"CmsCredits",setup(B){const p=x(),l=N({enabled:!0,currency_name:"",register_bonus:10,daily_signin:{enabled:!0,base:1,streak:{3:2,7:5,30:20}},comment_reward:{enabled:!0,amount:1,daily_cap:5,min_length:10,on_approved:!0},invite_reward:{enabled:!0,inviter_amount:5,invitee_amount:2,require_verify:!0,ip_daily_cap:3,register_field:"optional",reject_invalid:!0},download_default_cost:0}),_=g("{}"),f=g(!1);async function k(){var i;try{const e=await w.getCreditSettings();Object.assign(l,e),_.value=JSON.stringify(((i=l.daily_signin)==null?void 0:i.streak)||{},null,0)}catch(e){p.error(e.message||"加载失败")}}async function y(){f.value=!0;try{let i={};try{i=JSON.parse(_.value||"{}")}catch{}l.daily_signin.streak=i,await w.saveCreditSettings(l),p.success("已保存")}catch(i){p.error(i.message||"保存失败")}finally{f.value=!1}}return U(()=>{k()}),(i,e)=>{const u=o("n-switch"),r=o("n-form-item"),b=o("n-input"),d=o("n-input-number"),m=o("n-form"),v=o("n-card"),c=o("n-button");return S(),C("div",O,[e[26]||(e[26]=s("h2",{class:"”aksrt-page-title”"},"积分配置",-1)),e[27]||(e[27]=s("p",{class:"”aksrt-page-desc”"}," 配置积分规则与发放策略。可自定义货币名称(如”金币”、”魔石”等)。用户余额与手工调整已迁移到 WordPress 原生”用户”菜单中管理。 ",-1)),a(v,{class:"aksrt-section-card"},{default:n(()=>[e[18]||(e[18]=s("div",{class:"aksrt-section-header"},[s("h3",null,"主开关 + 基础设置")],-1)),a(m,{model:l,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:n(()=>[a(r,{label:"启用积分系统"},{default:n(()=>[a(u,{value:l.enabled,"onUpdate:value":e[0]||(e[0]=t=>l.enabled=t)},null,8,["value"])]),_:1}),a(r,{label:"自定义货币名称"},{feedback:n(()=>[...e[17]||(e[17]=[s("span",{class:"aksrt-hint-text"},'自定义货币显示名称,如"金币"、"魔石"等。留空则使用默认名称"积分"。',-1)])]),default:n(()=>[a(b,{value:l.currency_name,"onUpdate:value":e[1]||(e[1]=t=>l.currency_name=t),placeholder:"积分",maxlength:"20"},null,8,["value"])]),_:1}),a(r,{label:"注册赠送积分"},{default:n(()=>[a(d,{value:l.register_bonus,"onUpdate:value":e[2]||(e[2]=t=>l.register_bonus=t),min:0,max:1e4},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),a(v,{class:"aksrt-section-card"},{default:n(()=>[e[20]||(e[20]=s("div",{class:"aksrt-section-header"},[s("h3",null,"每日签到")],-1)),a(m,{model:l.daily_signin,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:n(()=>[a(r,{label:"启用"},{default:n(()=>[a(u,{value:l.daily_signin.enabled,"onUpdate:value":e[3]||(e[3]=t=>l.daily_signin.enabled=t)},null,8,["value"])]),_:1}),a(r,{label:"基础奖励"},{default:n(()=>[a(d,{value:l.daily_signin.base,"onUpdate:value":e[4]||(e[4]=t=>l.daily_signin.base=t),min:0,max:1e4},null,8,["value"])]),_:1}),a(r,{label:"连续奖励(JSON)"},{feedback:n(()=>[...e[19]||(e[19]=[s("span",{class:"aksrt-hint-text"},"连续 N 天时额外发放的积分。",-1)])]),default:n(()=>[a(b,{type:"textarea",value:_.value,"onUpdate:value":e[5]||(e[5]=t=>_.value=t),placeholder:'{"3":2,"7":5,"30":20}',autosize:{minRows:2}},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),a(v,{class:"aksrt-section-card"},{default:n(()=>[e[21]||(e[21]=s("div",{class:"aksrt-section-header"},[s("h3",null,"评论奖励")],-1)),a(m,{model:l.comment_reward,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:n(()=>[a(r,{label:"启用"},{default:n(()=>[a(u,{value:l.comment_reward.enabled,"onUpdate:value":e[6]||(e[6]=t=>l.comment_reward.enabled=t)},null,8,["value"])]),_:1}),a(r,{label:"单次奖励"},{default:n(()=>[a(d,{value:l.comment_reward.amount,"onUpdate:value":e[7]||(e[7]=t=>l.comment_reward.amount=t),min:0,max:1e4},null,8,["value"])]),_:1}),a(r,{label:"每日上限"},{default:n(()=>[a(d,{value:l.comment_reward.daily_cap,"onUpdate:value":e[8]||(e[8]=t=>l.comment_reward.daily_cap=t),min:0,max:100},null,8,["value"])]),_:1}),a(r,{label:"最少字符数"},{default:n(()=>[a(d,{value:l.comment_reward.min_length,"onUpdate:value":e[9]||(e[9]=t=>l.comment_reward.min_length=t),min:0,max:500},null,8,["value"])]),_:1}),a(r,{label:"审核通过后发放"},{default:n(()=>[a(u,{value:l.comment_reward.on_approved,"onUpdate:value":e[10]||(e[10]=t=>l.comment_reward.on_approved=t)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),a(v,{class:"aksrt-section-card"},{default:n(()=>[e[22]||(e[22]=s("div",{class:"aksrt-section-header"},[s("h3",null,"邀请奖励")],-1)),a(m,{model:l.invite_reward,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:n(()=>[a(r,{label:"启用"},{default:n(()=>[a(u,{value:l.invite_reward.enabled,"onUpdate:value":e[11]||(e[11]=t=>l.invite_reward.enabled=t)},null,8,["value"])]),_:1}),a(r,{label:"邀请人奖励"},{default:n(()=>[a(d,{value:l.invite_reward.inviter_amount,"onUpdate:value":e[12]||(e[12]=t=>l.invite_reward.inviter_amount=t),min:0,max:1e4},null,8,["value"])]),_:1}),a(r,{label:"被邀请人奖励"},{default:n(()=>[a(d,{value:l.invite_reward.invitee_amount,"onUpdate:value":e[13]||(e[13]=t=>l.invite_reward.invitee_amount=t),min:0,max:1e4},null,8,["value"])]),_:1}),a(r,{label:"需邮箱验证后发放"},{default:n(()=>[a(u,{value:l.invite_reward.require_verify,"onUpdate:value":e[14]||(e[14]=t=>l.invite_reward.require_verify=t)},null,8,["value"])]),_:1}),a(r,{label:"同 IP 当日上限"},{default:n(()=>[a(d,{value:l.invite_reward.ip_daily_cap,"onUpdate:value":e[15]||(e[15]=t=>l.invite_reward.ip_daily_cap=t),min:0,max:100},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),a(v,{class:"aksrt-section-card"},{default:n(()=>[e[24]||(e[24]=s("div",{class:"aksrt-section-header"},[s("h3",null,"下载消费(参考)")],-1)),a(m,{model:l,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:n(()=>[a(r,{label:`默认积分价参考(${l.currency_name||"积分"})`},{feedback:n(()=>[...e[23]||(e[23]=[s("span",{class:"aksrt-hint-text"},"兼容字段。实际价格以文章「付费内容设置」的积分价/现金价为准;下载解锁走收银台订单,不按次扣费。",-1)])]),default:n(()=>[a(d,{value:l.download_default_cost,"onUpdate:value":e[16]||(e[16]=t=>l.download_default_cost=t),min:0,max:1e5},null,8,["value"])]),_:1},8,["label"])]),_:1},8,["model"])]),_:1}),s("div",q,[a(c,{type:"primary",loading:f.value,onClick:y},{default:n(()=>[...e[25]||(e[25]=[J("保存配置",-1)])]),_:1},8,["loading"])])])}}};export{W as default};
diff --git a/assets/admin/build/CommentPermissions.wWXEnm5v.js b/assets/admin/build/CommentPermissions.wWXEnm5v.js
deleted file mode 100644
index f065cb3e..00000000
--- a/assets/admin/build/CommentPermissions.wWXEnm5v.js
+++ /dev/null
@@ -1 +0,0 @@
-import{o as M,X as N,a4 as t,a3 as n,r as C,a1 as r,e as E,_ as R,W as V,f as m,Y as u,Z as f}from"./vendor-vue.Bykizn0M.js";import{a as y}from"./shared-api.D5_fnN32.js";import{P as A}from"./PageHeader.Di3JTPjc.js";import{u as U}from"./vendor-naive.BuHWlEgf.js";import"./index.js";import"./vendor-misc.1adHN6i_.js";const $={class:"aksrt-page-container"},H={class:"aksrt-form-actions"},z={__name:"CommentPermissions",setup(K){const q=R(),g=U(),b=C(!0),v=C(!1),s=E({comment_require_login:!1,comment_allow_reply:!0}),a=E({commentCaptchaEnabled:!1,moderationEnabled:!1,rateLimitEnabled:!1,keywordRuleCount:0});function w(o){q.push(o)}function P(o){return String(o||"").split(/\r?\n/).map(e=>e.trim()).filter(Boolean)}async function S(){b.value=!0;try{const[o,e,i]=await Promise.all([y.getSchemaPage("post_list","comment"),y.getPermissionsLoginSettings(),y.getPermissionsModerationSettings()]),c=(o==null?void 0:o.data)??o??{},l=(e==null?void 0:e.data)??e??{},d=(i==null?void 0:i.data)??i??{},p=Array.isArray(l.disabled_scenarios)?l.disabled_scenarios:[];s.comment_require_login=!!c.comment_require_login,s.comment_allow_reply=c.comment_allow_reply!==!1,a.commentCaptchaEnabled=!!l.enabled&&!!l.active_provider&&!p.includes("comment"),a.moderationEnabled=!!d.enabled,a.rateLimitEnabled=!!d.rate_limit_enabled,a.keywordRuleCount=P(d.blocked_keywords).length}catch(o){g.error(o.message||"加载评论权限失败")}finally{b.value=!1}}async function x(){v.value=!0;try{await y.saveSchemaPage("post_list","comment",{comment_require_login:s.comment_require_login,comment_allow_reply:s.comment_allow_reply}),g.success("评论权限已保存")}catch(o){g.error(o.message||"保存失败")}finally{v.value=!1}}return M(S),(o,e)=>{const i=r("n-button"),c=r("n-space"),l=r("n-tag"),d=r("n-card"),p=r("n-switch"),k=r("n-form-item"),h=r("n-form"),L=r("n-alert"),B=r("n-spin");return V(),N("div",$,[t(A,{title:"评论权限",desc:"管理评论入口的登录要求与回复权限,并查看当前验证码与审核策略状态。"},{actions:n(()=>[t(c,null,{default:n(()=>[t(i,{quaternary:"",onClick:e[0]||(e[0]=_=>w("/permissions/login"))},{default:n(()=>[...e[4]||(e[4]=[m("人机验证",-1)])]),_:1}),t(i,{quaternary:"",onClick:e[1]||(e[1]=_=>w("/permissions/moderation"))},{default:n(()=>[...e[5]||(e[5]=[m("审核策略",-1)])]),_:1})]),_:1})]),_:1}),t(B,{show:b.value,style:{width:"100%","min-height":"200px"}},{default:n(()=>[t(d,{class:"aksrt-section-card"},{default:n(()=>[e[6]||(e[6]=u("div",{class:"aksrt-section-header"},[u("h3",null,"当前联动状态")],-1)),t(c,null,{default:n(()=>[t(l,{type:a.commentCaptchaEnabled?"success":"default",round:""},{default:n(()=>[m(" 评论验证码:"+f(a.commentCaptchaEnabled?"已启用":"未启用"),1)]),_:1},8,["type"]),t(l,{type:a.moderationEnabled?"warning":"default",round:""},{default:n(()=>[m(" 审核链路:"+f(a.moderationEnabled?"已启用":"未启用"),1)]),_:1},8,["type"]),t(l,{type:a.rateLimitEnabled?"warning":"default",round:""},{default:n(()=>[m(" 评论限流:"+f(a.rateLimitEnabled?"已启用":"未启用"),1)]),_:1},8,["type"]),t(l,{type:a.keywordRuleCount>0?"error":"default",round:""},{default:n(()=>[m(" 敏感词:"+f(a.keywordRuleCount)+" 条 ",1)]),_:1},8,["type"])]),_:1})]),_:1}),t(d,{class:"aksrt-section-card"},{default:n(()=>[e[9]||(e[9]=u("div",{class:"aksrt-section-header"},[u("h3",null,"评论准入")],-1)),t(h,{model:s,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:n(()=>[t(k,{label:"评论需要登录"},{feedback:n(()=>[...e[7]||(e[7]=[u("span",{class:"aksrt-hint-text"},"开启后,游客只能浏览评论,不能直接提交评论。",-1)])]),default:n(()=>[t(p,{value:s.comment_require_login,"onUpdate:value":e[2]||(e[2]=_=>s.comment_require_login=_)},null,8,["value"])]),_:1}),t(k,{label:"允许楼中回复"},{feedback:n(()=>[...e[8]||(e[8]=[u("span",{class:"aksrt-hint-text"},"关闭后,前台评论列表将不再展示回复按钮。",-1)])]),default:n(()=>[t(p,{value:s.comment_allow_reply,"onUpdate:value":e[3]||(e[3]=_=>s.comment_allow_reply=_)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),t(d,{class:"aksrt-section-card"},{default:n(()=>[t(L,{type:"info","show-icon":!1},{default:n(()=>[...e[10]||(e[10]=[m(" 评论排序、分页方式、头像大小和空状态文案继续在“文章&列表 -> 评论设置”中维护;本页只负责准入与治理联动。 ",-1)])]),_:1})]),_:1}),u("div",H,[t(i,{type:"primary",loading:v.value,onClick:x},{default:n(()=>[...e[11]||(e[11]=[m("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}};export{z as default};
diff --git a/assets/admin/build/CommentSettings.BXEQmxrU.js b/assets/admin/build/CommentSettings.BXEQmxrU.js
deleted file mode 100644
index 6b0f4248..00000000
--- a/assets/admin/build/CommentSettings.BXEQmxrU.js
+++ /dev/null
@@ -1 +0,0 @@
-import t from"./SchemaPage.CSkx936u.js";import{a2 as o,W as m}from"./vendor-vue.Bykizn0M.js";import"./shared-api.B7o7Pzvu.js";import"./FaIcon.CX_hGmM4.js";import"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";import"./shared-api.D5_fnN32.js";const u={__name:"CommentSettings",setup(r){return(e,p)=>(m(),o(t,{domain:"post_list",section:"comment"}))}};export{u as default};
diff --git a/assets/admin/build/DeferredPage.DrhT6-8i.js b/assets/admin/build/DeferredPage.DrhT6-8i.js
deleted file mode 100644
index 581a8072..00000000
--- a/assets/admin/build/DeferredPage.DrhT6-8i.js
+++ /dev/null
@@ -1 +0,0 @@
-import{X as n,Y as r,a4 as u,Z as l,a3 as c,a2 as y,a5 as f,F as h,R as P,c as o,a1 as V,$ as b,W as a,f as _}from"./vendor-vue.Bykizn0M.js";import{_ as S}from"./FaIcon.CX_hGmM4.js";import{_ as C}from"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const F={class:"aksrt-deferred-page"},R={class:"aksrt-deferred-page__icon"},w={class:"aksrt-deferred-page__title"},A={class:"aksrt-deferred-page__desc"},I={class:"aksrt-deferred-page__meta"},T={key:0,class:"aksrt-deferred-page__depends"},$={class:"aksrt-deferred-page__depends-list"},E={key:1,class:"aksrt-deferred-page__reason"},L={key:2,class:"aksrt-deferred-page__features"},W={class:"aksrt-deferred-page__badge"},X={__name:"DeferredPage",props:{title:{type:String,default:""},description:{type:String,default:""},icon:{type:String,default:""},features:{type:Array,default:()=>[]},status:{type:String,default:""},phase:{type:String,default:""},dependsOn:{type:Array,default:()=>[]},reason:{type:String,default:""}},setup(z){const t=z,d=b(),O=o(()=>{var s,e;return t.title||((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.title)||"功能开发中"}),x=o(()=>{var s,e;return t.description||((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.description)||"此功能正在规划开发中,将在后续版本上线。"}),D=o(()=>{var s,e;return t.icon||((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.icon)||"fas fa-rocket"}),B=o(()=>{var s,e;return t.status||((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.status)||"deferred"}),g=o(()=>{var s,e;return t.phase||((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.phase)||""}),m=o(()=>{var s,e;return t.dependsOn&&t.dependsOn.length?t.dependsOn:((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.dependsOn)||[]}),k=o(()=>{var s,e;return t.reason||((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.reason)||""}),v=o(()=>{var s,e;return t.features&&t.features.length?t.features:((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.features)||[]});return(s,e)=>{const p=V("n-tag");return a(),n("div",F,[r("div",R,[u(S,{icon:D.value,size:48},null,8,["icon"])]),r("h2",w,l(O.value),1),r("p",A,l(x.value),1),r("div",I,[u(p,{size:"small",type:"info"},{default:c(()=>[_(l(B.value),1)]),_:1}),g.value?(a(),y(p,{key:0,size:"small",type:"warning"},{default:c(()=>[_("Phase "+l(g.value),1)]),_:1})):f("",!0)]),m.value.length?(a(),n("div",T,[e[0]||(e[0]=r("span",{class:"aksrt-deferred-page__label"},"依赖",-1)),r("div",$,[(a(!0),n(h,null,P(m.value,i=>(a(),y(p,{key:i,size:"small",type:"default"},{default:c(()=>[_(l(i),1)]),_:2},1024))),128))])])):f("",!0),k.value?(a(),n("div",E,[e[1]||(e[1]=r("span",{class:"aksrt-deferred-page__label"},"原因",-1)),r("p",null,l(k.value),1)])):f("",!0),v.value&&v.value.length?(a(),n("div",L,[(a(!0),n(h,null,P(v.value,(i,N)=>(a(),n("div",{key:N,class:"aksrt-deferred-page__feature"},[u(S,{icon:"fas fa-check-circle",size:14}),r("span",null,l(i),1)]))),128))])):f("",!0),r("div",W,[u(p,{type:"info",size:"small"},{default:c(()=>[...e[2]||(e[2]=[_("即将推出",-1)])]),_:1})])])}}},H=C(X,[["__scopeId","data-v-e3307067"]]);export{H as default};
diff --git a/assets/admin/build/DeferredPage.css b/assets/admin/build/DeferredPage.css
deleted file mode 100644
index 2e40b8b3..00000000
--- a/assets/admin/build/DeferredPage.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-deferred-page[data-v-e3307067]{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;text-align:center;padding:40px 20px}.aksrt-deferred-page__icon[data-v-e3307067]{color:#c0c4cc;margin-bottom:20px}.aksrt-deferred-page__title[data-v-e3307067]{margin:0 0 10px;font-size:20px;font-weight:600;color:#1a1a2e}.aksrt-deferred-page__desc[data-v-e3307067]{margin:0 0 20px;font-size:14px;color:#8a909c;max-width:400px;line-height:1.6}.aksrt-deferred-page__meta[data-v-e3307067]{display:flex;gap:10px;margin-bottom:18px}.aksrt-deferred-page__depends[data-v-e3307067],.aksrt-deferred-page__reason[data-v-e3307067]{width:min(520px,100%);margin-bottom:18px;text-align:left}.aksrt-deferred-page__label[data-v-e3307067]{display:inline-block;margin-bottom:8px;font-size:12px;font-weight:600;color:#4b5563}.aksrt-deferred-page__depends-list[data-v-e3307067]{display:flex;flex-wrap:wrap;gap:8px}.aksrt-deferred-page__reason p[data-v-e3307067]{margin:0;color:#666;line-height:1.7}.aksrt-deferred-page__features[data-v-e3307067]{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.aksrt-deferred-page__feature[data-v-e3307067]{display:flex;align-items:center;gap:8px;font-size:13px;color:#666}.aksrt-deferred-page__feature[data-v-e3307067] i{color:#52c41a}
diff --git a/assets/admin/build/DocsPage.Cef6fL12.js b/assets/admin/build/DocsPage.Cef6fL12.js
deleted file mode 100644
index 20ad41be..00000000
--- a/assets/admin/build/DocsPage.Cef6fL12.js
+++ /dev/null
@@ -1 +0,0 @@
-import{P as I}from"./PageHeader.Di3JTPjc.js";import{_ as n}from"./FaIcon.CX_hGmM4.js";import{a as g}from"./shared-api.D5_fnN32.js";import{_ as K}from"./index.js";import{r as f,o as N,X as y,a4 as o,a3 as s,Y as a,F as P,R as A,a1 as i,W as _,Z as c,f as r,a2 as v,I as E}from"./vendor-vue.Bykizn0M.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const F={class:"aksrt-page-container"},H={class:"aksrt-docs__mode-status"},L={class:"aksrt-docs__mode-info"},M={class:"aksrt-docs__stat"},R={class:"aksrt-docs__action"},W={class:"aksrt-docs__action"},Z={class:"aksrt-docs__action"},q={class:"aksrt-docs__action"},J={class:"aksrt-docs__grid"},O={class:"aksrt-docs__card-inner"},U={class:"aksrt-docs__card-body"},X={class:"aksrt-docs__card-title"},Y={class:"aksrt-docs__card-desc"},j={__name:"DocsPage",setup(G){var x;const C=f(((x=window.aksrtAdminData)==null?void 0:x.themeVersion)||"3.4.0-dev"),b=f("—"),u=f(!1),z=f(0),k=f([{key:"total",icon:"fas fa-file-alt",color:"#1890ff",value:0,label:"文档页面"},{key:"nav",icon:"fas fa-sitemap",color:"#722ed1",value:0,label:"导航页"},{key:"special",icon:"fas fa-layer-group",color:"#fa8c16",value:0,label:"专题页"}]),D=f([{key:"admin-ia-map",title:"后台 IA 蓝图",description:"完整的后台信息架构映射,12 个顶级分区及子页面清单。",icon:"fas fa-sitemap",color:"#1890ff",file:"admin-ia-map.md"},{key:"zibll-gap-matrix",title:"对标差异矩阵",description:"AKSRT 当前 → Zibll 参考 → AKSRT 目标三层对照表。",icon:"fas fa-columns",color:"#722ed1",file:"zibll-gap-matrix.md"},{key:"frontend-page-matrix",title:"前端页面矩阵",description:"前端模板、CSS、JS 资产映射与覆盖范围。",icon:"fas fa-desktop",color:"#13c2c2",file:"frontend-page-matrix.md"},{key:"manual-acceptance-baseline",title:"验收基线",description:"每个 Phase 的人工验收标准和检查清单。",icon:"fas fa-clipboard-check",color:"#52c41a",file:"manual-acceptance-baseline.md"},{key:"feature-domain-map",title:"功能域地图",description:"业务域划分、依赖关系和模块边界说明。",icon:"fas fa-map",color:"#fa8c16",file:"feature-domain-map.md"},{key:"migration-map",title:"迁移地图",description:"设置 key 迁移、旧选项兼容和 Schema 版本对照。",icon:"fas fa-exchange-alt",color:"#eb2f96",file:"migration-map.md"}]);N(async()=>{try{const t=await g.getSchemaPage("extensions","docs-mode");t!=null&&t.data&&(u.value=!!t.data.docs_mode_enabled)}catch{}try{const t=await g.request("/docs/stats");t!=null&&t.data&&(z.value=t.data.total||0,k.value[0].value=t.data.total||0,k.value[1].value=t.data.nav_count||0,k.value[2].value=t.data.special_count||0)}catch{}try{const t=await g.getHealthCheck();t!=null&&t.data&&(b.value=t.data.db_schema_version||"—")}catch{}});function V(t){var d;const e=((d=window.aksrtAdminData)==null?void 0:d.siteUrl)||window.location.origin;window.open(`${e}/wp-content/themes/AKSRT-theme/docs/${t.file}`,"_blank")}return(t,e)=>{const d=i("router-link"),B=i("n-space"),m=i("n-card"),T=i("n-alert"),p=i("n-grid-item"),w=i("n-grid"),S=i("n-tag"),h=i("n-descriptions-item"),$=i("n-descriptions");return _(),y("div",F,[o(I,{title:"文档中心",desc:"主题使用文档、开发指南、迁移说明和更新日志。"}),o(m,{class:"aksrt-docs__section",size:"small"},{default:s(()=>[a("div",H,[a("div",L,[o(n,{icon:u.value?"fas fa-book-open":"fas fa-book",size:18,color:u.value?"#52c41a":"#8a909c"},null,8,["icon","color"]),a("div",null,[a("strong",null,c(u.value?"文档模式已启用":"文档模式未启用"),1),a("p",null,c(u.value?"文档导航页面和文档站式侧边栏已激活":"启用后将激活文档导航页面模板和文档站式侧边栏"),1)])]),o(B,null,{default:s(()=>[o(d,{to:"/extensions/docs-mode",class:"aksrt-docs__mode-link"},{default:s(()=>[o(n,{icon:"fas fa-cog",size:12}),r(" "+c(u.value?"管理文档模式":"启用文档模式"),1)]),_:1})]),_:1})])]),_:1}),o(m,{title:"文档页面",size:"small",class:"aksrt-docs__section"},{default:s(()=>[z.value===0?(_(),v(T,{key:0,type:"info",size:"small"},{default:s(()=>[...e[0]||(e[0]=[r(' 尚未创建文档页面。在 WordPress 后台新建页面时,选择"文档导航页"或"专题聚合页"模板。 ',-1)])]),_:1})):(_(),v(w,{key:1,cols:3,"x-gap":12,"y-gap":12},{default:s(()=>[(_(!0),y(P,null,A(k.value,l=>(_(),v(p,{key:l.key},{default:s(()=>[a("div",M,[o(n,{icon:l.icon,size:16,color:l.color},null,8,["icon","color"]),a("div",null,[a("strong",null,c(l.value),1),a("p",null,c(l.label),1)])])]),_:2},1024))),128))]),_:1}))]),_:1}),o(m,{title:"常用操作",size:"small",class:"aksrt-docs__section"},{default:s(()=>[o(w,{cols:2,"x-gap":12,"y-gap":12},{default:s(()=>[o(p,null,{default:s(()=>[a("div",R,[o(n,{icon:"fas fa-palette",size:16}),a("div",null,[e[2]||(e[2]=a("strong",null,"全局设置",-1)),e[3]||(e[3]=a("p",null,"Logo、背景、菜单装饰、自定义代码",-1)),o(d,{to:"/global/common"},{default:s(()=>[...e[1]||(e[1]=[r("前往配置 →",-1)])]),_:1})])])]),_:1}),o(p,null,{default:s(()=>[a("div",W,[o(n,{icon:"fas fa-home",size:16}),a("div",null,[e[5]||(e[5]=a("strong",null,"首页配置",-1)),e[6]||(e[6]=a("p",null,"首页模块、布局、排序和预设模板",-1)),o(d,{to:"/page-display/homepage"},{default:s(()=>[...e[4]||(e[4]=[r("前往配置 →",-1)])]),_:1})])])]),_:1}),o(p,null,{default:s(()=>[a("div",Z,[o(n,{icon:"fas fa-users",size:16}),a("div",null,[e[8]||(e[8]=a("strong",null,"用户管理",-1)),e[9]||(e[9]=a("p",null,"登录注册、OAuth、签到、积分",-1)),o(d,{to:"/users/auth"},{default:s(()=>[...e[7]||(e[7]=[r("前往配置 →",-1)])]),_:1})])])]),_:1}),o(p,null,{default:s(()=>[a("div",q,[o(n,{icon:"fas fa-tools",size:16}),a("div",null,[e[11]||(e[11]=a("strong",null,"系统工具",-1)),e[12]||(e[12]=a("p",null,"导入导出、健康检查、迁移状态",-1)),o(d,{to:"/tools/import-export"},{default:s(()=>[...e[10]||(e[10]=[r("前往配置 →",-1)])]),_:1})])])]),_:1})]),_:1})]),_:1}),a("div",J,[(_(!0),y(P,null,A(D.value,l=>(_(),v(m,{key:l.key,class:"aksrt-docs__card",size:"small",hoverable:"",onClick:Q=>V(l)},{default:s(()=>[a("div",O,[a("div",{class:"aksrt-docs__card-icon",style:E({background:l.color})},[o(n,{icon:l.icon,size:20,color:"#fff"},null,8,["icon"])],4),a("div",U,[a("h4",X,c(l.title),1),a("p",Y,c(l.description),1)]),o(n,{icon:"fas fa-external-link-alt",size:12,class:"aksrt-docs__card-arrow"})])]),_:2},1032,["onClick"]))),128))]),o(m,{title:"当前版本",size:"small",class:"aksrt-docs__section"},{default:s(()=>[o($,{column:2,bordered:"","label-placement":"left",size:"small"},{default:s(()=>[o(h,{label:"主题版本"},{default:s(()=>[o(S,{type:"success",size:"small"},{default:s(()=>[r(c(C.value),1)]),_:1})]),_:1}),o(h,{label:"Schema 版本"},{default:s(()=>[o(S,{type:"info",size:"small"},{default:s(()=>[r(c(b.value),1)]),_:1})]),_:1})]),_:1})]),_:1})])}}},ia=K(j,[["__scopeId","data-v-ec6dbd74"]]);export{ia as default};
diff --git a/assets/admin/build/DocsPage.css b/assets/admin/build/DocsPage.css
deleted file mode 100644
index c06526b6..00000000
--- a/assets/admin/build/DocsPage.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-docs__mode-status[data-v-ec6dbd74]{display:flex;align-items:center;justify-content:space-between;gap:16px}.aksrt-docs__mode-info[data-v-ec6dbd74]{display:flex;align-items:center;gap:12px}.aksrt-docs__mode-info strong[data-v-ec6dbd74]{display:block;font-size:14px;color:#1a1a2e}.aksrt-docs__mode-info p[data-v-ec6dbd74]{margin:2px 0 0;font-size:12px;color:#8a909c}.aksrt-docs__mode-link[data-v-ec6dbd74]{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:6px;background:#f5f7fa;color:#1890ff;text-decoration:none;font-size:13px;transition:background .2s}.aksrt-docs__mode-link[data-v-ec6dbd74]:hover{background:#e6f4ff}.aksrt-docs__stat[data-v-ec6dbd74]{display:flex;align-items:center;gap:10px;padding:12px;border-radius:6px;background:#fafafa}.aksrt-docs__stat strong[data-v-ec6dbd74]{display:block;font-size:20px;color:#1a1a2e}.aksrt-docs__stat p[data-v-ec6dbd74]{margin:0;font-size:12px;color:#8a909c}.aksrt-docs__grid[data-v-ec6dbd74]{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px;margin-bottom:16px}.aksrt-docs__card[data-v-ec6dbd74]{cursor:pointer;transition:box-shadow .2s}.aksrt-docs__card[data-v-ec6dbd74]:hover{box-shadow:0 2px 12px #00000014}.aksrt-docs__card-inner[data-v-ec6dbd74]{display:flex;align-items:center;gap:12px}.aksrt-docs__card-icon[data-v-ec6dbd74]{flex-shrink:0;width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center}.aksrt-docs__card-body[data-v-ec6dbd74]{flex:1;min-width:0}.aksrt-docs__card-title[data-v-ec6dbd74]{margin:0 0 2px;font-size:14px;font-weight:600;color:#1a1a2e}.aksrt-docs__card-desc[data-v-ec6dbd74]{margin:0;font-size:12px;color:#8a909c;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aksrt-docs__card-arrow[data-v-ec6dbd74]{flex-shrink:0;color:#c0c4cc}.aksrt-docs__section[data-v-ec6dbd74]{margin-bottom:16px}.aksrt-docs__action[data-v-ec6dbd74]{display:flex;gap:12px;align-items:flex-start;padding:12px;border-radius:6px;background:#fafafa}.aksrt-docs__action i[data-v-ec6dbd74]{color:#1890ff;margin-top:2px}.aksrt-docs__action strong[data-v-ec6dbd74]{display:block;font-size:14px;color:#1a1a2e;margin-bottom:2px}.aksrt-docs__action p[data-v-ec6dbd74]{margin:0 0 4px;font-size:12px;color:#8a909c}.aksrt-docs__action a[data-v-ec6dbd74]{font-size:12px;color:#1890ff;text-decoration:none}.aksrt-docs__action a[data-v-ec6dbd74]:hover{text-decoration:underline}
diff --git a/assets/admin/build/DownloadPermissions.D_4Tmrvf.js b/assets/admin/build/DownloadPermissions.D_4Tmrvf.js
deleted file mode 100644
index 8e4d0110..00000000
--- a/assets/admin/build/DownloadPermissions.D_4Tmrvf.js
+++ /dev/null
@@ -1 +0,0 @@
-import{o as B,X as U,a4 as a,a3 as t,r as p,a1 as n,e as q,_ as D,W as F,f as l,Y as r,Z as f}from"./vendor-vue.Bykizn0M.js";import{a as b}from"./shared-api.D5_fnN32.js";import{P as M}from"./PageHeader.Di3JTPjc.js";import{u as $}from"./vendor-naive.BuHWlEgf.js";import"./index.js";import"./vendor-misc.1adHN6i_.js";const E={class:"aksrt-page-container"},H={class:"aksrt-form-actions"},z={__name:"DownloadPermissions",setup(I){const x=D(),w=$(),m=p(!0),g=p(!1),h=p(0),i=p({resource_cpt_enabled:!0,search_include_resource:!0,download_login:!0,download_credit:!0,download_captcha:!1}),e=q({download_login:!0,download_credit:!0,download_captcha:!1});function C(u){x.push(u)}async function P(){var u;m.value=!0;try{const[o,d]=await Promise.all([b.getCmsFeatures(),b.getCreditSettings()]),s=(o==null?void 0:o.cms_features)??((u=o==null?void 0:o.data)==null?void 0:u.cms_features)??{},c=(d==null?void 0:d.data)??d??{};i.value={resource_cpt_enabled:s.resource_cpt_enabled!==!1,search_include_resource:s.search_include_resource!==!1,download_login:s.download_login!==!1,download_credit:s.download_credit!==!1,download_captcha:!!s.download_captcha},e.download_login=i.value.download_login,e.download_credit=i.value.download_credit,e.download_captcha=i.value.download_captcha,h.value=Number(c.download_default_cost||0)}catch(o){w.error(o.message||"加载下载权限失败")}finally{m.value=!1}}async function S(){g.value=!0;try{await b.saveCmsFeatures({...i.value,download_login:e.download_login,download_credit:e.download_credit,download_captcha:e.download_captcha}),i.value={...i.value,download_login:e.download_login,download_credit:e.download_credit,download_captcha:e.download_captcha},w.success("下载权限已保存")}catch(u){w.error(u.message||"保存失败")}finally{g.value=!1}}return B(P),(u,o)=>{const d=n("n-button"),s=n("n-space"),c=n("n-tag"),v=n("n-card"),y=n("n-switch"),k=n("n-form-item"),N=n("n-form"),T=n("n-alert"),V=n("n-spin");return F(),U("div",E,[a(M,{title:"下载权限",desc:"管理资源下载的登录、积分购买模式与验证码门槛。付费解锁走收银台订单,下载 token 不再按次扣积分。"},{actions:t(()=>[a(s,null,{default:t(()=>[a(d,{quaternary:"",onClick:o[0]||(o[0]=_=>C("/payment/paid"))},{default:t(()=>[...o[5]||(o[5]=[l("资源下载页",-1)])]),_:1}),a(d,{quaternary:"",onClick:o[1]||(o[1]=_=>C("/permissions/login"))},{default:t(()=>[...o[6]||(o[6]=[l("人机验证",-1)])]),_:1})]),_:1})]),_:1}),a(V,{show:m.value,style:{width:"100%","min-height":"200px"}},{default:t(()=>[a(v,{class:"aksrt-section-card"},{default:t(()=>[o[8]||(o[8]=r("div",{class:"aksrt-section-header"},[r("h3",null,"当前门槛摘要")],-1)),a(s,null,{default:t(()=>[a(c,{type:e.download_login?"warning":"default",round:""},{default:t(()=>[l(" 登录要求:"+f(e.download_login?"已启用":"已关闭"),1)]),_:1},8,["type"]),a(c,{type:e.download_credit?"warning":"default",round:""},{default:t(()=>[l(" 积分购买模式:"+f(e.download_credit?"已启用":"已关闭"),1)]),_:1},8,["type"]),a(c,{type:e.download_captcha?"warning":"default",round:""},{default:t(()=>[l(" 下载验证码:"+f(e.download_captcha?"已启用":"已关闭"),1)]),_:1},8,["type"]),a(c,{type:"info",round:""},{default:t(()=>[l("默认积分价参考:"+f(h.value),1)]),_:1}),a(c,{type:"info",round:""},{default:t(()=>[...o[7]||(o[7]=[l("Token TTL:10 分钟",-1)])]),_:1})]),_:1})]),_:1}),a(v,{class:"aksrt-section-card"},{default:t(()=>[o[12]||(o[12]=r("div",{class:"aksrt-section-header"},[r("h3",null,"下载门槛")],-1)),a(N,{model:e,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:t(()=>[a(k,{label:"下载需要登录"},{feedback:t(()=>[...o[9]||(o[9]=[r("span",{class:"aksrt-hint-text"},"关闭后,单个资源的登录要求仍可通过资源元字段单独覆盖。",-1)])]),default:t(()=>[a(y,{value:e.download_login,"onUpdate:value":o[2]||(o[2]=_=>e.download_login=_)},null,8,["value"])]),_:1}),a(k,{label:"允许积分购买模式"},{feedback:t(()=>[...o[10]||(o[10]=[r("span",{class:"aksrt-hint-text"},"开启后,文章 pay_modo=积分 可走收银台一次购买解锁;下载 token 不再按次扣积分。关闭时积分模式资源按免费/需登录策略处理。",-1)])]),default:t(()=>[a(y,{value:e.download_credit,"onUpdate:value":o[3]||(o[3]=_=>e.download_credit=_)},null,8,["value"])]),_:1}),a(k,{label:"下载启用验证码"},{feedback:t(()=>[...o[11]||(o[11]=[r("span",{class:"aksrt-hint-text"},"具体验证码服务商与场景白名单仍在“登录权限”页维护。",-1)])]),default:t(()=>[a(y,{value:e.download_captcha,"onUpdate:value":o[4]||(o[4]=_=>e.download_captcha=_)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),a(v,{class:"aksrt-section-card"},{default:t(()=>[a(T,{type:"info","show-icon":!1},{default:t(()=>[...o[13]||(o[13]=[l(" 实际价格以文章「付费内容设置」为准;本页只维护全局访问门槛。VIP 白名单与收银台策略见「支付 & 付费」相关页面。 ",-1)])]),_:1})]),_:1}),r("div",H,[a(d,{type:"primary",loading:g.value,onClick:S},{default:t(()=>[...o[14]||(o[14]=[l("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}};export{z as default};
diff --git a/assets/admin/build/ExtensionAI.css b/assets/admin/build/ExtensionAI.css
deleted file mode 100644
index d7ec1293..00000000
--- a/assets/admin/build/ExtensionAI.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-ai__status[data-v-800595b0]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.aksrt-ai__status-card[data-v-800595b0]{display:flex;align-items:center;gap:12px;padding:16px;background:#fff;border-radius:8px;border:1px solid #e8e8e8}.aksrt-ai__status-icon[data-v-800595b0]{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px}.aksrt-ai__status-icon--ok[data-v-800595b0]{background:#d4edda;color:#155724}.aksrt-ai__status-icon--warn[data-v-800595b0]{background:#fff3cd;color:#856404}.aksrt-ai__status-icon--off[data-v-800595b0]{background:#f8d7da;color:#721c24}.aksrt-ai__status-icon--info[data-v-800595b0]{background:#d1ecf1;color:#0c5460}.aksrt-ai__status-value[data-v-800595b0]{font-size:18px;font-weight:600;color:#1a1a2e}.aksrt-ai__status-label[data-v-800595b0]{font-size:12px;color:#888}.aksrt-ai__form-card[data-v-800595b0]{background:#fff;border:1px solid #e8e8e8;border-radius:8px;padding:24px;margin-bottom:16px}.aksrt-ai__form-card h3[data-v-800595b0]{margin:0 0 16px;font-size:16px;font-weight:600}.aksrt-form-hint[data-v-800595b0]{font-size:12px;color:#888;margin-top:4px}.aksrt-ai__load-error[data-v-800595b0]{background:#fdecea;border-color:#f5c2c0;color:#842029;margin-bottom:16px}.aksrt-ai__notice[data-v-800595b0]{background:#fff8e1;border-color:#ffe082}.aksrt-ai__notice h3[data-v-800595b0]{color:#e65100}.aksrt-ai__notice ul[data-v-800595b0]{margin:0;padding-left:20px}.aksrt-ai__notice li[data-v-800595b0]{margin-bottom:8px;font-size:14px}.aksrt-ai__notice code[data-v-800595b0]{background:#0000000f;padding:2px 6px;border-radius:3px;font-size:13px}.aksrt-badge[data-v-800595b0]{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px}.aksrt-badge--success[data-v-800595b0]{background:#d4edda;color:#155724}.aksrt-badge--warning[data-v-800595b0]{background:#fff3cd;color:#856404}.aksrt-table[data-v-800595b0]{width:100%;border-collapse:collapse}.aksrt-table th[data-v-800595b0],.aksrt-table td[data-v-800595b0]{border-bottom:1px solid #eee;padding:10px 8px;text-align:left}.aksrt-form-group[data-v-800595b0]{margin-bottom:14px}.aksrt-input[data-v-800595b0],.aksrt-select[data-v-800595b0]{width:100%;max-width:480px;padding:8px 10px}.aksrt-button[data-v-800595b0]{padding:8px 16px;border:0;border-radius:6px;cursor:pointer}.aksrt-button--primary[data-v-800595b0]{background:#1677ff;color:#fff}.aksrt-button[data-v-800595b0]:disabled{opacity:.6;cursor:not-allowed}
diff --git a/assets/admin/build/ExtensionAI.vrglPKlb.js b/assets/admin/build/ExtensionAI.vrglPKlb.js
deleted file mode 100644
index 90cb9188..00000000
--- a/assets/admin/build/ExtensionAI.vrglPKlb.js
+++ /dev/null
@@ -1 +0,0 @@
-import{X as l,a4 as I,Y as a,f as d,Z as i,a5 as m,L as k,j as _,af as P,ah as w,ag as u,F as S,R as E,o as V,c as g,r as f,e as C,a1 as O,W as r}from"./vendor-vue.Bykizn0M.js";import{P as U}from"./PageHeader.Di3JTPjc.js";import{a as A}from"./shared-api.D5_fnN32.js";import{_ as L}from"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const W={name:"ExtensionAI",components:{PageHeader:U},setup(){const n=f({enabled:!1,provider:"none",configured:!1,model:"",api_key:"",rate_limit:10,available:!1,backend:"none",wp_ai_available:!1,theme_available:!1,seo_ai_enabled:!1,write_assist:!1}),s=C({enabled:!1,provider:"none",api_key:"",api_base:"https://api.openai.com/v1",model:"gpt-3.5-turbo",max_tokens:1e3,rate_limit:10}),v=f(!1),e=f(""),b=g(()=>({wp_ai:"WP AI Client",theme:"主题 Provider",none:"无"})[n.value.backend]||n.value.backend||"无"),c=g(()=>{const t=!!n.value.available;return[{key:"seo",name:"AI 生成 SEO",scene:"文章/分类「独立 SEO」框",ready:t&&!!n.value.seo_ai_enabled},{key:"summary",name:"AI 生成摘要",scene:"前台投稿页",ready:t},{key:"tags",name:"AI 建议标签",scene:"前台投稿页",ready:t}]});function p(t){!t||typeof t!="object"||(n.value={enabled:!!t.enabled,provider:t.provider||"none",configured:!!t.configured,model:t.model||"",api_key:"",rate_limit:t.rate_limit||10,available:!!t.available,backend:t.backend||"none",wp_ai_available:!!t.wp_ai_available,theme_available:!!t.theme_available,seo_ai_enabled:!!t.seo_ai_enabled,write_assist:!!t.write_assist},s.enabled=!!t.enabled,s.provider=t.provider||"none",s.model=t.model||"gpt-3.5-turbo",s.rate_limit=t.rate_limit||10,t.api_base&&(s.api_base=t.api_base),typeof t.max_tokens=="number"&&t.max_tokens>0&&(s.max_tokens=t.max_tokens))}async function o(){e.value="";try{const t=await A.getAiStatus();p(t.data||{})}catch(t){console.error("Load AI status failed:",t),e.value=(t==null?void 0:t.message)||"加载 AI 状态失败"}}async function x(){v.value=!0;try{const t={enabled:s.enabled,provider:s.provider,api_base:s.api_base,model:s.model,max_tokens:s.max_tokens,rate_limit:s.rate_limit};s.api_key&&s.api_key!=="***"&&(t.api_key=s.api_key);const y=await A.updateAiSettings(t);alert(y.message||"设置已保存"),await o()}catch(t){console.error("Save failed:",t),alert((t==null?void 0:t.message)||"保存失败")}finally{v.value=!1}}return V(()=>o()),{status:n,form:s,saving:v,loadError:e,features:c,backendLabel:b,saveSettings:x}}},N={class:"aksrt-page-container"},j={key:0,class:"aksrt-ai__form-card aksrt-ai__load-error",role:"alert"},B={class:"aksrt-ai__status"},M={class:"aksrt-ai__status-card"},R={class:"aksrt-ai__status-info"},F={class:"aksrt-ai__status-value"},H={class:"aksrt-ai__status-card"},T={class:"aksrt-ai__status-info"},D={class:"aksrt-ai__status-value"},K={class:"aksrt-ai__status-card"},z={class:"aksrt-ai__status-info"},X={class:"aksrt-ai__status-value"},Y={class:"aksrt-ai__status-card"},Z={class:"aksrt-ai__status-info"},q={class:"aksrt-ai__status-value"},G={class:"aksrt-ai__form-card"},J={class:"aksrt-form-group"},Q={class:"aksrt-form-group"},h={key:0,class:"aksrt-form-group"},$={key:1,class:"aksrt-form-group"},ss={key:2,class:"aksrt-form-group"},as={key:3,class:"aksrt-form-group"},ts={key:4,class:"aksrt-form-group"},es={class:"aksrt-form-actions"},os=["disabled"],ls={class:"aksrt-ai__form-card"},is={class:"aksrt-table aksrt-table--sm"};function rs(n,s,v,e,b,c){const p=O("PageHeader");return r(),l("div",N,[I(p,{title:"AI 连接配置",desc:"配置 AI 生成能力的连接方式。优先使用 WordPress AI Connectors;也可填写 OpenAI 兼容接口。SEO 生成入口在文章「独立 SEO」框,摘要/标签入口在前台投稿页。"}),e.loadError?(r(),l("div",j,[s[8]||(s[8]=a("strong",null,"加载失败:",-1)),d(i(e.loadError),1)])):m("",!0),a("div",B,[a("div",M,[a("div",{class:k(["aksrt-ai__status-icon",e.status.available?"aksrt-ai__status-icon--ok":"aksrt-ai__status-icon--off"])},[...s[9]||(s[9]=[a("i",{class:"fas fa-robot"},null,-1)])],2),a("div",R,[s[10]||(s[10]=a("div",{class:"aksrt-ai__status-label"},"可用状态",-1)),a("div",F,i(e.status.available?"可用":"不可用"),1)])]),a("div",H,[a("div",{class:k(["aksrt-ai__status-icon",e.status.wp_ai_available?"aksrt-ai__status-icon--ok":"aksrt-ai__status-icon--warn"])},[...s[11]||(s[11]=[a("i",{class:"fas fa-plug"},null,-1)])],2),a("div",T,[s[12]||(s[12]=a("div",{class:"aksrt-ai__status-label"},"WP AI Client",-1)),a("div",D,i(e.status.wp_ai_available?"已就绪":"不可用"),1)])]),a("div",K,[a("div",{class:k(["aksrt-ai__status-icon",e.status.theme_available?"aksrt-ai__status-icon--ok":"aksrt-ai__status-icon--warn"])},[...s[13]||(s[13]=[a("i",{class:"fas fa-key"},null,-1)])],2),a("div",z,[s[14]||(s[14]=a("div",{class:"aksrt-ai__status-label"},"主题 Provider",-1)),a("div",X,i(e.status.theme_available?"已配置":"未配置"),1)])]),a("div",Y,[s[16]||(s[16]=a("div",{class:"aksrt-ai__status-icon aksrt-ai__status-icon--info"},[a("i",{class:"fas fa-route"})],-1)),a("div",Z,[s[15]||(s[15]=a("div",{class:"aksrt-ai__status-label"},"当前后端",-1)),a("div",q,i(e.backendLabel),1)])])]),a("div",G,[s[27]||(s[27]=a("h3",null,"主题 Provider 配置(回退链路)",-1)),s[28]||(s[28]=a("p",{class:"aksrt-form-hint"},[d("已配置主题 Provider 时优先走下方接口;未配置时才尝试 WordPress AI Connectors。NewAPI/兼容网关请填到 "),a("code",null,"/v1"),d("(也可只填域名,保存时会自动补全)。")],-1)),a("div",J,[a("label",null,[_(a("input",{type:"checkbox","onUpdate:modelValue":s[0]||(s[0]=o=>e.form.enabled=o)},null,512),[[P,e.form.enabled]]),s[17]||(s[17]=d(" 启用主题 AI Provider ",-1))])]),a("div",Q,[s[19]||(s[19]=a("label",null,"AI Provider",-1)),_(a("select",{"onUpdate:modelValue":s[1]||(s[1]=o=>e.form.provider=o),class:"aksrt-select"},[...s[18]||(s[18]=[a("option",{value:"none"},"不使用",-1),a("option",{value:"openai"},"OpenAI 兼容接口",-1)])],512),[[w,e.form.provider]])]),e.form.provider!=="none"?(r(),l("div",h,[s[20]||(s[20]=a("label",null,"API Key",-1)),_(a("input",{"onUpdate:modelValue":s[2]||(s[2]=o=>e.form.api_key=o),type:"password",class:"aksrt-input",placeholder:"sk-..."},null,512),[[u,e.form.api_key]]),s[21]||(s[21]=a("p",{class:"aksrt-form-hint"},"保存后不会回显完整密钥",-1))])):m("",!0),e.form.provider==="openai"?(r(),l("div",$,[s[22]||(s[22]=a("label",null,"API Base URL",-1)),_(a("input",{"onUpdate:modelValue":s[3]||(s[3]=o=>e.form.api_base=o),type:"text",class:"aksrt-input",placeholder:"https://llm.example.com/v1"},null,512),[[u,e.form.api_base]]),s[23]||(s[23]=a("p",{class:"aksrt-form-hint"},"示例:https://api.openai.com/v1 或 https://你的网关/v1(不要填到 /chat/completions)",-1))])):m("",!0),e.form.provider!=="none"?(r(),l("div",ss,[s[24]||(s[24]=a("label",null,"模型",-1)),_(a("input",{"onUpdate:modelValue":s[4]||(s[4]=o=>e.form.model=o),type:"text",class:"aksrt-input",placeholder:"gpt-3.5-turbo"},null,512),[[u,e.form.model]])])):m("",!0),e.form.provider!=="none"?(r(),l("div",as,[s[25]||(s[25]=a("label",null,"最大 Token 数",-1)),_(a("input",{"onUpdate:modelValue":s[5]||(s[5]=o=>e.form.max_tokens=o),type:"number",min:"100",max:"4000",class:"aksrt-input"},null,512),[[u,e.form.max_tokens,void 0,{number:!0}]])])):m("",!0),e.form.provider!=="none"?(r(),l("div",ts,[s[26]||(s[26]=a("label",null,"每分钟请求限制",-1)),_(a("input",{"onUpdate:modelValue":s[6]||(s[6]=o=>e.form.rate_limit=o),type:"number",min:"1",max:"100",class:"aksrt-input"},null,512),[[u,e.form.rate_limit,void 0,{number:!0}]])])):m("",!0),a("div",es,[a("button",{class:"aksrt-button aksrt-button--primary",disabled:e.saving,onClick:s[7]||(s[7]=(...o)=>e.saveSettings&&e.saveSettings(...o))},i(e.saving?"保存中...":"保存设置"),9,os)])]),a("div",ls,[s[30]||(s[30]=a("h3",null,"已接通能力",-1)),a("table",is,[s[29]||(s[29]=a("thead",null,[a("tr",null,[a("th",null,"能力"),a("th",null,"入口"),a("th",null,"状态")])],-1)),a("tbody",null,[(r(!0),l(S,null,E(e.features,o=>(r(),l("tr",{key:o.key},[a("td",null,i(o.name),1),a("td",null,i(o.scene),1),a("td",null,[a("span",{class:k(["aksrt-badge",o.ready?"aksrt-badge--success":"aksrt-badge--warning"])},i(o.ready?"可用":"未就绪"),3)])]))),128))])]),s[31]||(s[31]=a("p",{class:"aksrt-form-hint"},"SEO 开关与提示词请到「全局 → SEO」配置(seo_ai_enabled / ai_seo_*_prompt)。",-1))]),s[32]||(s[32]=a("div",{class:"aksrt-ai__form-card aksrt-ai__notice"},[a("h3",null,[a("i",{class:"fas fa-exclamation-triangle"}),d(" 重要说明")]),a("ul",null,[a("li",null,[d("AI 输出仅作为"),a("strong",null,"建议"),d(",不会自动写库;需用户点「更新/提交」才保存")]),a("li",null,"主题 API Key 已配置时优先使用;否则回退 WordPress AI Connectors"),a("li",null,"生成接口要求登录与编辑/投稿权限;配置接口仍需管理员")])],-1))])}const ks=L(W,[["render",rs],["__scopeId","data-v-800595b0"]]);export{ks as default};
diff --git a/assets/admin/build/ExtensionSecurity.Dusc4b9q.js b/assets/admin/build/ExtensionSecurity.Dusc4b9q.js
deleted file mode 100644
index 16c3d799..00000000
--- a/assets/admin/build/ExtensionSecurity.Dusc4b9q.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as H,a1 as s,W as i,X as h,a4 as a,a3 as t,a2 as m,F as q,R as O,f as d,Z as g,a5 as C,l as W,o as X,r as x,Y as $}from"./vendor-vue.Bykizn0M.js";import{P as Y}from"./PageHeader.Di3JTPjc.js";import{_ as L}from"./FaIcon.CX_hGmM4.js";import{a as R}from"./shared-api.D5_fnN32.js";import{_ as Z}from"./index.js";import{u as K}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const Q={class:"aksrt-page-container"},ee={__name:"ExtensionsSectionPage",props:{title:{type:String,required:!0},desc:{type:String,default:""},note:{type:String,default:""},links:{type:Array,default:()=>[]}},setup(y){const p=H();function z(o){p.push(o)}return(o,k)=>{const _=s("n-button"),S=s("n-space"),u=s("n-alert"),c=s("n-card");return i(),h("div",Q,[a(Y,{title:y.title,desc:y.desc},{actions:t(()=>[y.links.length?(i(),m(S,{key:0},{default:t(()=>[(i(!0),h(q,null,O(y.links,I=>(i(),m(_,{key:I.path,quaternary:"",onClick:V=>z(I.path)},{default:t(()=>[d(g(I.label),1)]),_:2},1032,["onClick"]))),128))]),_:1})):C("",!0)]),_:1},8,["title","desc"]),y.note?(i(),m(c,{key:0,class:"aksrt-section-card"},{default:t(()=>[a(u,{type:"info","show-icon":!1},{default:t(()=>[d(g(y.note),1)]),_:1})]),_:1})):C("",!0),W(o.$slots,"default")])}}},te={class:"aksrt-security__overview-card"},ae={key:0,class:"aksrt-security__output"},le={key:0,class:"aksrt-security__output"},ne={__name:"ExtensionSecurity",setup(y){const p=K(),z=x(!1),o=x([{key:"email_gate",icon:"fas fa-envelope",color:"#1890ff",value:"—",label:"邮箱验证"},{key:"captcha",icon:"fas fa-shield-alt",color:"#52c41a",value:"—",label:"验证码保护"},{key:"moderation",icon:"fas fa-gavel",color:"#722ed1",value:"—",label:"内容审核"},{key:"ip_geo",icon:"fas fa-map-marker-alt",color:"#fa8c16",value:"—",label:"IP 归属地"}]),k=x([{key:"email_verification",icon:"fas fa-envelope",color:"#1890ff",name:"邮箱验证",description:"新用户注册需要邮箱验证",enabled:!1,settingsRoute:"/users/auth"},{key:"captcha_comment",icon:"fas fa-shield-alt",color:"#52c41a",name:"评论验证码",description:"发表评论时需要人机验证",enabled:!1,settingsRoute:"/permissions/login"},{key:"captcha_download",icon:"fas fa-shield-alt",color:"#52c41a",name:"下载验证码",description:"下载资源时需要人机验证",enabled:!1,settingsRoute:"/permissions/login"},{key:"content_audit",icon:"fas fa-shield-virus",color:"#722ed1",name:"内容审核 API",description:"接入第三方内容安全审核",enabled:!1,settingsRoute:"/extensions/audit"},{key:"ip_geolocation",icon:"fas fa-map-marker-alt",color:"#fa8c16",name:"IP 归属地",description:"在评论和用户主页显示 IP 归属地",enabled:!1,settingsRoute:"/extensions/ip"}]),_=x({show_unapproved_comments:!1,skip_submit_moderation:!1,guest_comment:!1}),S=x([]),u=x({ip:"8.8.8.8",loading:!1,result:""}),c=x({text:"这是一段用于审核测试的示例文本。",loading:!1,result:""});X(async()=>{var n;try{const e=await R.request("/settings/security");if(e!=null&&e.data){const r=e.data,w=e.services||{},f=r.captcha||w.captcha||{},N=!!(f.enabled&&f.configured),U=f.scenes||{},v=r.content_audit||w.audit||{},b=r.ip_geo||w.ip_geo||{};o.value[0].value=r.email_gate_enabled?"已开启":"未开启",o.value[0].color=r.email_gate_enabled?"#52c41a":"#8a909c",o.value[1].value=N?"已开启":"未开启",o.value[1].color=N?"#52c41a":"#8a909c",v.enabled?(o.value[2].value=v.configured?"已配置":"待补全",o.value[2].color=v.configured?"#52c41a":"#faad14"):(o.value[2].value="未开启",o.value[2].color="#8a909c"),b.enabled?(o.value[3].value=b.configured?"已配置":"待补全",o.value[3].color=b.configured?"#52c41a":"#faad14"):(o.value[3].value="未开启",o.value[3].color="#8a909c"),k.value[0].enabled=!!r.email_gate_enabled,k.value[1].enabled=!!U.comment,k.value[2].enabled=!!f.download_active,k.value[3].enabled=!!v.enabled,k.value[4].enabled=!!b.enabled,r.risk_switches&&(_.value={..._.value,...r.risk_switches})}}catch{}try{const e=await R.request("/security/audit-log");(n=e==null?void 0:e.data)!=null&&n.logs&&(S.value=e.data.logs.slice(0,10))}catch{}});async function I(){z.value=!0;try{await R.request("/settings/security",{method:"POST",body:JSON.stringify({risk_switches:_.value})}),p.success("风险设置已保存")}catch(n){p.error("保存失败: "+((n==null?void 0:n.message)||"未知错误"))}finally{z.value=!1}}async function V(){u.value.loading=!0,u.value.result="";try{const n=await R.testIpGeo(String(u.value.ip||"").trim()),e=(n==null?void 0:n.data)||{};u.value.result=JSON.stringify(e,null,2),e.ok?p.success(e.display?`IP 测试成功:${e.display}`:"IP 接口测试完成"):p.warning(e.message||"未查询到归属地信息")}catch(n){p.error((n==null?void 0:n.message)||"IP 测试失败")}finally{u.value.loading=!1}}async function M(){c.value.loading=!0,c.value.result="";try{const n=await R.testContentAudit(String(c.value.text||"").trim()),e=(n==null?void 0:n.data)||{};c.value.result=JSON.stringify(e,null,2),e.ok?p.success(e.message||"内容审核测试完成"):p.warning(e.message||"内容审核未通过或配置异常")}catch(n){p.error((n==null?void 0:n.message)||"内容审核测试失败")}finally{c.value.loading=!1}}return(n,e)=>{const r=s("n-grid-item"),w=s("n-grid"),f=s("n-card"),N=s("n-tag"),U=s("router-link"),v=s("n-space"),b=s("n-thing"),J=s("n-list-item"),F=s("n-list"),G=s("n-input"),P=s("n-form-item"),A=s("n-button"),B=s("n-form"),j=s("n-alert"),E=s("n-switch"),T=s("n-text"),D=s("n-empty");return i(),m(ee,{title:"网站安全",desc:"扩展安全策略和第三方安全集成。"},{default:t(()=>[a(f,{title:"安全概览",size:"small",class:"aksrt-security__section"},{default:t(()=>[a(w,{cols:4,"x-gap":12,"y-gap":12},{default:t(()=>[(i(!0),h(q,null,O(o.value,l=>(i(),m(r,{key:l.key},{default:t(()=>[$("div",te,[a(L,{icon:l.icon,size:18,color:l.color},null,8,["icon","color"]),$("div",null,[$("strong",null,g(l.value),1),$("p",null,g(l.label),1)])])]),_:2},1024))),128))]),_:1})]),_:1}),a(f,{title:"安全能力",size:"small",class:"aksrt-security__section"},{default:t(()=>[a(F,{bordered:"",size:"small"},{default:t(()=>[(i(!0),h(q,null,O(k.value,l=>(i(),m(J,{key:l.key},{default:t(()=>[a(b,{title:l.name,description:l.description},{avatar:t(()=>[a(L,{icon:l.icon,size:16,color:l.color},null,8,["icon","color"])]),"header-extra":t(()=>[a(v,{align:"center",size:"small"},{default:t(()=>[a(N,{type:l.enabled?"success":"default",size:"small"},{default:t(()=>[d(g(l.enabled?"已启用":"未启用"),1)]),_:2},1032,["type"]),l.settingsRoute?(i(),m(U,{key:0,to:l.settingsRoute,class:"aksrt-security__config-link"},{default:t(()=>[...e[5]||(e[5]=[d(" 前往配置 ",-1)])]),_:1},8,["to"])):C("",!0)]),_:2},1024)]),_:2},1032,["title","description"])]),_:2},1024))),128))]),_:1})]),_:1}),a(f,{title:"在线测试",size:"small",class:"aksrt-security__section"},{default:t(()=>[a(w,{cols:2,"x-gap":16,"y-gap":16},{default:t(()=>[a(r,null,{default:t(()=>[a(B,{"label-placement":"top"},{default:t(()=>[a(P,{label:"IP 归属地测试"},{default:t(()=>[a(G,{value:u.value.ip,"onUpdate:value":e[0]||(e[0]=l=>u.value.ip=l),placeholder:"输入 IPv4 / IPv6,例如 8.8.8.8"},null,8,["value"])]),_:1}),a(v,null,{default:t(()=>[a(A,{loading:u.value.loading,onClick:V},{default:t(()=>[...e[6]||(e[6]=[d("测试 IP 接口",-1)])]),_:1},8,["loading"])]),_:1}),u.value.result?(i(),h("pre",ae,g(u.value.result),1)):C("",!0)]),_:1})]),_:1}),a(r,null,{default:t(()=>[a(B,{"label-placement":"top"},{default:t(()=>[a(P,{label:"内容审核测试"},{default:t(()=>[a(G,{value:c.value.text,"onUpdate:value":e[1]||(e[1]=l=>c.value.text=l),type:"textarea",autosize:{minRows:4,maxRows:8},placeholder:"输入一段测试文本,检查当前审核策略是否生效"},null,8,["value"])]),_:1}),a(v,null,{default:t(()=>[a(A,{loading:c.value.loading,onClick:M},{default:t(()=>[...e[7]||(e[7]=[d("测试内容审核",-1)])]),_:1},8,["loading"])]),_:1}),c.value.result?(i(),h("pre",le,g(c.value.result),1)):C("",!0)]),_:1})]),_:1})]),_:1})]),_:1}),a(f,{title:"风险开关",size:"small",class:"aksrt-security__section"},{action:t(()=>[a(v,{justify:"end"},{default:t(()=>[a(A,{type:"primary",size:"small",loading:z.value,onClick:I},{default:t(()=>[...e[12]||(e[12]=[d("保存风险设置",-1)])]),_:1},8,["loading"])]),_:1})]),default:t(()=>[a(j,{type:"warning",size:"small",style:{"margin-bottom":"12px"}},{default:t(()=>[...e[8]||(e[8]=[d(" 以下开关会影响站点安全策略,请谨慎操作。 ",-1)])]),_:1}),a(B,{"label-placement":"left","label-width":"200",size:"small"},{default:t(()=>[a(P,{label:"允许未审核评论显示"},{default:t(()=>[a(E,{value:_.value.show_unapproved_comments,"onUpdate:value":e[2]||(e[2]=l=>_.value.show_unapproved_comments=l)},null,8,["value"]),a(T,{depth:"3",style:{"margin-left":"8px","font-size":"12px"}},{default:t(()=>[...e[9]||(e[9]=[d(" 开启后未审核评论也会在前台显示(标记为待审核) ",-1)])]),_:1})]),_:1}),a(P,{label:"允许前台投稿无需审核"},{default:t(()=>[a(E,{value:_.value.skip_submit_moderation,"onUpdate:value":e[3]||(e[3]=l=>_.value.skip_submit_moderation=l)},null,8,["value"]),a(T,{depth:"3",style:{"margin-left":"8px","font-size":"12px"}},{default:t(()=>[...e[10]||(e[10]=[d(" 开启后用户投稿直接发布,不经过审核流程 ",-1)])]),_:1})]),_:1}),a(P,{label:"允许游客评论"},{default:t(()=>[a(E,{value:_.value.guest_comment,"onUpdate:value":e[4]||(e[4]=l=>_.value.guest_comment=l)},null,8,["value"]),a(T,{depth:"3",style:{"margin-left":"8px","font-size":"12px"}},{default:t(()=>[...e[11]||(e[11]=[d(" 开启后未登录用户也可以发表评论 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),a(f,{title:"安全审计",size:"small",class:"aksrt-security__section"},{default:t(()=>[S.value.length===0?(i(),m(D,{key:0,description:"暂无审计记录"})):(i(),m(F,{key:1,bordered:"",size:"small"},{default:t(()=>[(i(!0),h(q,null,O(S.value,l=>(i(),m(J,{key:l.id},{default:t(()=>[a(b,{title:l.action,description:l.detail},{"header-extra":t(()=>[a(T,{depth:"3",style:{"font-size":"11px"}},{default:t(()=>[d(g(l.time),1)]),_:2},1024)]),_:2},1032,["title","description"])]),_:2},1024))),128))]),_:1}))]),_:1})]),_:1})}}},_e=Z(ne,[["__scopeId","data-v-1628ae71"]]);export{_e as default};
diff --git a/assets/admin/build/ExtensionSecurity.css b/assets/admin/build/ExtensionSecurity.css
deleted file mode 100644
index d3d9b42d..00000000
--- a/assets/admin/build/ExtensionSecurity.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-security__section[data-v-1628ae71]{margin-bottom:16px}.aksrt-security__overview-card[data-v-1628ae71]{display:flex;align-items:center;gap:10px;padding:14px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0}.aksrt-security__overview-card strong[data-v-1628ae71]{display:block;font-size:14px;color:#1a1a2e}.aksrt-security__overview-card p[data-v-1628ae71]{margin:2px 0 0;font-size:12px;color:#8a909c}.aksrt-security__config-link[data-v-1628ae71]{font-size:12px;color:#1890ff;text-decoration:none;white-space:nowrap}.aksrt-security__config-link[data-v-1628ae71]:hover{text-decoration:underline}.aksrt-security__output[data-v-1628ae71]{margin:12px 0 0;padding:12px 14px;border-radius:12px;background:#101828;color:#d0d7e2;font-size:12px;line-height:1.7;white-space:pre-wrap;word-break:break-word}
diff --git a/assets/admin/build/ExtensionTools.D5LShWF9.js b/assets/admin/build/ExtensionTools.D5LShWF9.js
deleted file mode 100644
index 6669af93..00000000
--- a/assets/admin/build/ExtensionTools.D5LShWF9.js
+++ /dev/null
@@ -1 +0,0 @@
-import{o as D,X as P,a4 as t,a3 as s,r as O,a1 as u,_ as H,W as p,F as T,R as N,a2 as q,Y as d,L,Z as k,I as M,f as S}from"./vendor-vue.Bykizn0M.js";import{P as R}from"./PageHeader.Di3JTPjc.js";import{_ as m}from"./FaIcon.CX_hGmM4.js";import{a as y}from"./shared-api.D5_fnN32.js";import{_ as W}from"./index.js";import{u as $}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const A={class:"aksrt-page-container"},G=["onClick"],X={class:"aksrt-tools__tool-body"},Y={__name:"ExtensionTools",setup(Z){const I=H(),c=$(),_=O([{key:"php",icon:"fas fa-code",color:"#1890ff",value:"—",label:"PHP 版本",status:"ok"},{key:"wp",icon:"fab fa-wordpress",color:"#722ed1",value:"—",label:"WordPress",status:"ok"},{key:"db",icon:"fas fa-database",color:"#52c41a",value:"—",label:"数据库",status:"ok"},{key:"uploads",icon:"fas fa-folder-open",color:"#fa8c16",value:"—",label:"上传目录",status:"ok"}]),B=O([{key:"import-export",icon:"fas fa-exchange-alt",bg:"#1890ff",title:"导入导出",desc:"设置导入、导出和重置",route:"/tools/import-export"},{key:"health",icon:"fas fa-heartbeat",bg:"#52c41a",title:"健康检查",desc:"系统状态检测和诊断",route:"/tools/health"},{key:"email-rollback",icon:"fas fa-undo",bg:"#fa8c16",title:"邮箱回滚",desc:"邮箱变更 14 天内回滚",route:"/tools/email-rollback"}]),n=O([{key:"sms",icon:"fas fa-sms",color:"#1890ff",name:"短信服务",description:"验证码和通知短信",available:!1},{key:"wechat",icon:"fab fa-weixin",color:"#52c41a",name:"微信通知",description:"微信模板消息和订阅通知",available:!1},{key:"captcha",icon:"fas fa-shield-alt",color:"#722ed1",name:"验证码服务",description:"人机验证(极验/腾讯/阿里云)",available:!1},{key:"push",icon:"fas fa-paper-plane",color:"#fa8c16",name:"搜索引擎推送",description:"百度/Google 主动推送",available:!1},{key:"audit",icon:"fas fa-shield-virus",color:"#f5222d",name:"内容审核",description:"第三方内容安全审核 API",available:!1}]);D(async()=>{var a,r,b,h,f,g,w,x,z,v,C,e;try{const i=await y.request("/tools/health");if(i!=null&&i.data){const o=i.data;o.php_version&&(_.value[0].value=o.php_version),o.wp_version&&(_.value[1].value=o.wp_version),o.db_status&&(_.value[2].value=o.db_status,_.value[2].status=o.db_ok?"ok":"warn"),o.upload_dir&&(_.value[3].value=o.upload_dir,_.value[3].status=o.upload_ok?"ok":"warn")}}catch{}try{const i=await y.request("/settings/extensions");if(i!=null&&i.data){const o=i.data,l=i.services||{};n.value[0].available=!!(((a=l.sms)==null?void 0:a.available)??o.sms_enabled),n.value[0].status=((r=l.sms)==null?void 0:r.provider)||(o.sms_enabled?"已启用":"未配置"),n.value[1].available=!!(((b=l.wechat)==null?void 0:b.available)??o.wechat_enabled),n.value[1].status=((h=l.wechat)==null?void 0:h.provider)||(o.wechat_enabled?"已启用":"未配置"),n.value[2].available=!!(((f=l.captcha)==null?void 0:f.available)??((g=l.captcha)==null?void 0:g.configured)),n.value[2].status=((w=l.captcha)==null?void 0:w.provider)||((x=l.captcha)!=null&&x.enabled?"已启用":"未配置"),n.value[3].available=!!(((z=l.push)==null?void 0:z.available)??o.baidu_push_enabled),n.value[3].status=((v=l.push)==null?void 0:v.provider)||(o.baidu_push_enabled?"已启用":"未配置"),n.value[4].available=!!(((C=l.audit)==null?void 0:C.available)??o.content_audit_enabled),n.value[4].status=((e=l.audit)==null?void 0:e.provider)||(o.content_audit_enabled?"已启用":"未配置")}}catch{}});function E(a){I.push(a)}async function F(){c.info("正在清除缓存...");try{const a=await y.request("/tools/maintenance",{method:"POST",body:JSON.stringify({action:"flush_cache"})});c.success((a==null?void 0:a.message)||"缓存已清除")}catch(a){c.error((a==null?void 0:a.message)||"清除缓存失败")}}async function J(){c.info("正在优化数据表...");try{const a=await y.request("/tools/maintenance",{method:"POST",body:JSON.stringify({action:"optimize_db"})});c.success((a==null?void 0:a.message)||"数据表已优化")}catch(a){c.error((a==null?void 0:a.message)||"优化数据表失败")}}async function V(){c.info("正在重建索引...");try{const a=await y.request("/tools/maintenance",{method:"POST",body:JSON.stringify({action:"rebuild_index"})});c.success((a==null?void 0:a.message)||"索引重建完成")}catch(a){c.error((a==null?void 0:a.message)||"重建索引失败")}}return(a,r)=>{const b=u("n-grid-item"),h=u("n-grid"),f=u("n-card"),g=u("n-tag"),w=u("n-thing"),x=u("n-list-item"),z=u("n-list"),v=u("n-button"),C=u("n-space");return p(),P("div",A,[t(R,{title:"系统工具",desc:"额外运维工具与扩展能力。"}),t(f,{title:"系统健康",size:"small",class:"aksrt-tools__section"},{default:s(()=>[t(h,{cols:4,"x-gap":12,"y-gap":12},{default:s(()=>[(p(!0),P(T,null,N(_.value,e=>(p(),q(b,{key:e.key},{default:s(()=>[d("div",{class:L(["aksrt-tools__health-card","aksrt-tools__health-card--"+e.status])},[t(m,{icon:e.icon,size:18,color:e.color},null,8,["icon","color"]),d("div",null,[d("strong",null,k(e.value),1),d("p",null,k(e.label),1)])],2)]),_:2},1024))),128))]),_:1})]),_:1}),t(f,{title:"工具集合",size:"small",class:"aksrt-tools__section"},{default:s(()=>[t(h,{cols:3,"x-gap":12,"y-gap":12},{default:s(()=>[(p(!0),P(T,null,N(B.value,e=>(p(),q(b,{key:e.key},{default:s(()=>[d("div",{class:"aksrt-tools__tool-card",onClick:i=>E(e.route)},[d("div",{class:"aksrt-tools__tool-icon",style:M({background:e.bg})},[t(m,{icon:e.icon,size:18,color:"#fff"},null,8,["icon"])],4),d("div",X,[d("strong",null,k(e.title),1),d("p",null,k(e.desc),1)]),t(m,{icon:"fas fa-chevron-right",size:12,color:"#c0c4cc"})],8,G)]),_:2},1024))),128))]),_:1})]),_:1}),t(f,{title:"服务状态",size:"small",class:"aksrt-tools__section"},{default:s(()=>[t(z,{bordered:"",size:"small"},{default:s(()=>[(p(!0),P(T,null,N(n.value,e=>(p(),q(x,{key:e.key},{default:s(()=>[t(w,{title:e.name,description:e.description},{avatar:s(()=>[t(m,{icon:e.icon,size:16,color:e.color},null,8,["icon","color"])]),"header-extra":s(()=>[t(g,{type:e.available?"success":"warning",size:"small"},{default:s(()=>[S(k(e.available?"可用":"未配置"),1)]),_:2},1032,["type"])]),_:2},1032,["title","description"])]),_:2},1024))),128))]),_:1})]),_:1}),t(f,{title:"手动维护",size:"small",class:"aksrt-tools__section"},{default:s(()=>[t(C,null,{default:s(()=>[t(v,{onClick:F},{icon:s(()=>[t(m,{icon:"fas fa-broom",size:12})]),default:s(()=>[r[0]||(r[0]=S(" 清除缓存 ",-1))]),_:1}),t(v,{onClick:J},{icon:s(()=>[t(m,{icon:"fas fa-database",size:12})]),default:s(()=>[r[1]||(r[1]=S(" 优化数据表 ",-1))]),_:1}),t(v,{onClick:V},{icon:s(()=>[t(m,{icon:"fas fa-sync-alt",size:12})]),default:s(()=>[r[2]||(r[2]=S(" 重建索引 ",-1))]),_:1})]),_:1})]),_:1})])}}},sa=W(Y,[["__scopeId","data-v-dc044b00"]]);export{sa as default};
diff --git a/assets/admin/build/ExtensionTools.css b/assets/admin/build/ExtensionTools.css
deleted file mode 100644
index c759165a..00000000
--- a/assets/admin/build/ExtensionTools.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-tools__section[data-v-dc044b00]{margin-bottom:16px}.aksrt-tools__health-card[data-v-dc044b00]{display:flex;align-items:center;gap:10px;padding:14px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0}.aksrt-tools__health-card strong[data-v-dc044b00]{display:block;font-size:14px;color:#1a1a2e}.aksrt-tools__health-card p[data-v-dc044b00]{margin:2px 0 0;font-size:12px;color:#8a909c}.aksrt-tools__health-card--warn[data-v-dc044b00]{border-color:#faad14;background:#fffbe6}.aksrt-tools__tool-card[data-v-dc044b00]{display:flex;align-items:center;gap:12px;padding:14px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0;cursor:pointer;transition:all .2s}.aksrt-tools__tool-card[data-v-dc044b00]:hover{border-color:#1890ff;box-shadow:0 2px 8px #1890ff1a}.aksrt-tools__tool-icon[data-v-dc044b00]{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.aksrt-tools__tool-body[data-v-dc044b00]{flex:1;min-width:0}.aksrt-tools__tool-body strong[data-v-dc044b00]{display:block;font-size:14px;color:#1a1a2e}.aksrt-tools__tool-body p[data-v-dc044b00]{margin:2px 0 0;font-size:12px;color:#8a909c}
diff --git a/assets/admin/build/FaIcon.CX_hGmM4.js b/assets/admin/build/FaIcon.CX_hGmM4.js
deleted file mode 100644
index 59c66fc3..00000000
--- a/assets/admin/build/FaIcon.CX_hGmM4.js
+++ /dev/null
@@ -1 +0,0 @@
-import{W as r,X as p,I as u,L as f,c as a}from"./vendor-vue.Bykizn0M.js";const c={__name:"FaIcon",props:{icon:{type:String,required:!0},size:{type:[Number,String],default:null},fw:{type:Boolean,default:!1},spin:{type:Boolean,default:!1},pulse:{type:Boolean,default:!1},rotate:{type:[Number,String],default:null},flip:{type:String,default:null},extraClass:{type:String,default:""}},setup(l){const e=l,i=a(()=>{const t=[],s=e.icon.trim();return s.startsWith("fa-")?t.push("fas",s):t.push(...s.split(/\s+/)),e.fw&&t.push("fa-fw"),e.spin&&t.push("fa-spin"),e.pulse&&t.push("fa-pulse"),e.rotate&&t.push(`fa-rotate-${e.rotate}`),e.flip&&t.push(`fa-flip-${e.flip}`),e.extraClass&&t.push(e.extraClass),t.join(" ")}),n=a(()=>e.size?{fontSize:typeof e.size=="number"?`${e.size}px`:e.size}:{});return(t,s)=>(r(),p("i",{class:f(i.value),style:u(n.value),"aria-hidden":"true"},null,6))}};export{c as _};
diff --git a/assets/admin/build/FloatingButtonsSettings.-1uwNMV9.js b/assets/admin/build/FloatingButtonsSettings.-1uwNMV9.js
deleted file mode 100644
index 9f77c5d1..00000000
--- a/assets/admin/build/FloatingButtonsSettings.-1uwNMV9.js
+++ /dev/null
@@ -1 +0,0 @@
-import{d as ae}from"./vendor-draggable.CceJcfGJ.js";import{a as se}from"./shared-api.D5_fnN32.js";import{P as Qe}from"./PageHeader.Di3JTPjc.js";import{_ as Ae}from"./index.js";import{u as Fe,a as Be,B as k,b as T}from"./vendor-naive.BuHWlEgf.js";import{o as De,X as f,a4 as a,a3 as s,r as L,a1 as c,e as oe,W as r,N as p,f as u,Y as o,a2 as m,L as $,a5 as g,Z as x,F as ie,R as ne,c as C}from"./vendor-vue.Bykizn0M.js";import"./vendor-misc.1adHN6i_.js";const Ve={class:"aksrt-page-container content-page"},Pe={class:"aksrt-card-header-row"},Se={class:"aksrt-card-header-row__left"},Te={class:"aksrt-card-header-row__title"},Le={class:"float-btn-sort__item"},Me={class:"float-btn-sort__main"},je={class:"float-btn-sort__icon"},He={class:"float-btn-sort__meta"},Ne={class:"float-btn-sort__title-row"},Oe={class:"float-btn-sort__desc"},Ee={class:"float-btn-sort__actions"},Ie={class:"aksrt-form-actions"},Re={class:"icon-preview-row"},We={key:0,class:"theme-icon-preview-inline"},Xe={key:2,class:"muted-text"},Ye={key:6,class:"add-items-editor"},Ze={class:"add-items-editor__head"},Ge={class:"add-items-editor__head-actions"},Je={key:0,class:"add-items-editor__list"},Ke={class:"add-items-editor__row"},et={class:"add-items-preview"},tt={class:"add-items-preview__panel add-items-preview__panel--light"},lt={class:"add-items-preview__trigger"},at={class:"add-items-preview__menu"},st={key:0,class:"add-items-preview__list"},ot={key:1,class:"add-items-preview__empty"},it={class:"add-items-preview__panel add-items-preview__panel--dark"},nt={class:"add-items-preview__trigger add-items-preview__trigger--dark"},dt={class:"add-items-preview__menu add-items-preview__menu--dark"},rt={key:0,class:"add-items-preview__list"},ut={key:1,class:"add-items-preview__empty add-items-preview__empty--dark"},_t={class:"aksrt-modal-footer"},ct={__name:"FloatingButtonsSettings",setup(pt){var Y,Z;const v=Fe(),de=Be(),M=L(!0),A=L(!1),U=L(!1),q=L(-1),z=(((Y=window.aksrtAdminData)==null?void 0:Y.siteUrl)||"").replace(/\/$/,""),N=(((Z=window.aksrtAdminData)==null?void 0:Z.adminUrl)||"").replace(/\/$/,""),n=oe({enabled:!0,style:"round",position:"bottom",scroll_hide:!1,scroll_down_hide:!0,filter_blur:["mobile"],items:[]}),t=oe(B()),O=[{label:"自定义链接",value:"custom"},{label:"回到顶部",value:"back_top"},{label:"主题切换",value:"theme_mode"},{label:"页面二维码",value:"qrcode"},{label:"发布入口",value:"add"},{label:"购物车",value:"shop_cart"},{label:"QQ 客服",value:"service_qq"},{label:"微信客服",value:"service_wechat"},{label:"会员入口",value:"pay_vip"}],j=Object.fromEntries(O.map(i=>[i.value,i.label])),re=C(()=>[{label:"写文章",key:"post"},{label:"投稿页",key:"submit"},{label:"用户中心创作",key:"profile"}].map(e=>{const d=R(e.key);return{...e,disabled:d,label:d?`${e.label}(已存在)`:e.label}})),F=C(()=>["custom","pay_vip","add","shop_cart"].includes(t.type)&&!t.hover),Q=C(()=>["custom","pay_vip"].includes(t.type)),E=C(()=>["service_qq","service_wechat"].includes(t.type)),I=C(()=>["service_qq","service_wechat"].includes(t.type)&&t.action_mode==="qrcode"),ue=C(()=>!I.value);function B(){return{id:"",type:"custom",icon:"fas fa-link",icon_dark:"",icon_light:"",text:"",desc:"",action_mode:"link",qq:"",qrcode_img:"",wechat_img:"",link:"",add_items:[],hover:"",qr_size:120,hover_width:200,pc_s:!0,m_s:!0,color:null,bg:null,enabled:!0,sort_order:0}}function _e(i){const e={custom:{icon:"fas fa-link",icon_dark:"",icon_light:"",text:"链接",desc:"",link:"",hover:"",action_mode:"link",qr_size:120},back_top:{icon:"fas fa-chevron-up",icon_dark:"",icon_light:"",text:"顶部",desc:"返回顶部",link:"",hover:"",action_mode:"link",qr_size:120},theme_mode:{icon:"fas fa-sun",icon_dark:"",icon_light:"",text:"主题",desc:"切换主题",link:"",hover:"",action_mode:"link",qr_size:120},qrcode:{icon:"fas fa-qrcode",icon_dark:"",icon_light:"",text:"二维码",desc:"扫码继续浏览",link:"",hover:"",action_mode:"qrcode",qr_size:120},service_qq:{icon:"fab fa-qq",icon_dark:"",icon_light:"",text:"QQ",desc:"QQ 联系",link:"",hover:"",action_mode:"link",qr_size:120},service_wechat:{icon:"fab fa-weixin",icon_dark:"",icon_light:"",text:"微信",desc:"扫码添加微信",link:"",hover:"",action_mode:"link",qr_size:120},pay_vip:{icon:"fas fa-crown",icon_dark:"",icon_light:"",text:"会员",desc:"会员入口",link:"",hover:"",action_mode:"link",qr_size:120},add:{icon:"fas fa-plus",icon_dark:"",icon_light:"",text:"发布",desc:"发布内容",link:"",hover:"",action_mode:"link",qr_size:120},shop_cart:{icon:"fas fa-shopping-cart",icon_dark:"",icon_light:"",text:"购物车",desc:"购物车入口",link:"",hover:"",action_mode:"link",qr_size:120}};return e[i]||e.custom}function ce(i){const e=_e(i);t.icon=e.icon,t.icon_dark=e.icon_dark,t.icon_light=e.icon_light,t.action_mode=e.action_mode,t.qr_size=e.qr_size,t.text||(t.text=e.text),t.desc||(t.desc=e.desc),Q.value||(t.hover=""),i==="service_qq"&&t.action_mode==="qrcode"&&(t.qq=""),i==="service_wechat"&&t.action_mode==="qrcode"&&(t.link=""),["service_qq","service_wechat"].includes(i)&&t.action_mode==="qrcode"&&(t.desc=""),!F.value&&!["service_qq","service_wechat"].includes(i)&&(t.link="")}function pe(){Object.assign(t,B(),{id:`float_${Date.now()}`,sort_order:n.items.length}),q.value=-1,U.value=!0}function me(){t.add_items.push({id:`add_${Date.now()}_${t.add_items.length}`,label:"",icon:"fas fa-pen",url:""})}function fe(){t.add_items=t.add_items.map((i,e)=>({...i,id:i.id||`add_${Date.now()}_${e}`}))}function ve(i){if(R(i)){v.info("该预设已存在,无需重复添加");return}const d={post:()=>({label:"写文章",icon:"fas fa-pen-nib",url:`${N||z}/post-new.php`}),submit:()=>({label:"投稿页",icon:"fas fa-paper-plane",url:`${z}/submit/`}),profile:()=>({label:"创作中心",icon:"fas fa-user-edit",url:`${z}/user/`})}[i];if(!d)return;const _=d();t.add_items.push({id:`add_${Date.now()}_${t.add_items.length}`,..._})}function R(i){const e=ge(i);return e?t.add_items.some(d=>{const _=(d.label||"").trim(),w=W(d.url||"");return _===e.label||w===W(e.url)}):!1}function ge(i){const e={post:()=>({label:"写文章",icon:"fas fa-pen-nib",url:`${N||z}/post-new.php`}),submit:()=>({label:"投稿页",icon:"fas fa-paper-plane",url:`${z}/submit/`}),profile:()=>({label:"创作中心",icon:"fas fa-user-edit",url:`${z}/user/`})};return e[i]?e[i]():null}function W(i){return String(i||"").replace(/\/$/,"")}function ye(i){t.add_items.splice(i,1)}function ke(i){Object.assign(t,B(),n.items[i]),q.value=i,U.value=!0}function D(){n.items.splice(0,n.items.length,...n.items.map((i,e)=>({...i,sort_order:e})))}function be(i){return i.type==="service_qq"?i.action_mode==="qrcode"?i.qrcode_img||"未设置 QQ 二维码":i.link||i.qq||"未设置 QQ 号码":i.type==="service_wechat"?i.action_mode==="qrcode"?i.wechat_img||"未设置微信二维码":i.link||"未设置跳转链接":i.type==="qrcode"?i.desc||"展示当前页面二维码":i.hover?"使用 HTML 悬浮层内容":i.link||i.desc||"未设置说明"}function qe(){if(t.type!=="theme_mode"&&!t.icon){v.warning("请填写图标");return}if(!t.text){v.warning("请填写按钮标题");return}if(t.type==="service_qq"&&t.action_mode!=="qrcode"&&!t.qq&&!t.link){v.warning("请填写 QQ 号码或跳转链接");return}if(t.type==="service_qq"&&t.action_mode==="qrcode"&&!t.qrcode_img){v.warning("请填写 QQ 二维码地址");return}if(t.type==="service_wechat"&&t.action_mode==="qrcode"&&!t.wechat_img){v.warning("请填写微信二维码地址");return}if(t.type==="service_wechat"&&t.action_mode!=="qrcode"&&!t.link){v.warning("请填写微信跳转链接");return}if(F.value&&!t.link){v.warning("请填写链接地址");return}const i={id:t.id||`float_${Date.now()}`,type:t.type,icon:t.type==="theme_mode"?"fas fa-sun":t.icon,icon_dark:"",icon_light:"",text:t.text,desc:I.value?"":t.desc,action_mode:E.value?t.action_mode:"link",qq:t.type==="service_qq"&&t.action_mode!=="qrcode"?t.qq:"",qrcode_img:t.type==="service_qq"&&t.action_mode==="qrcode"?t.qrcode_img:"",wechat_img:t.type==="service_wechat"&&t.action_mode==="qrcode"?t.wechat_img:"",link:F.value||t.type==="service_wechat"&&t.action_mode!=="qrcode"||t.type==="service_qq"&&t.action_mode!=="qrcode"&&t.link?t.link:"",add_items:t.type==="add"?t.add_items.filter(e=>e.label||e.url).map((e,d)=>({id:e.id||`add_${d}`,label:e.label||"",icon:e.icon||"fas fa-pen",url:e.url||""})):[],hover:Q.value&&t.hover||"",qr_size:t.type==="qrcode"&&t.qr_size||120,hover_width:Q.value&&t.hover_width||200,pc_s:t.pc_s,m_s:t.m_s,color:t.color||"",bg:t.bg||"",enabled:t.enabled,sort_order:q.value>=0?n.items[q.value].sort_order:n.items.length};q.value>=0?n.items.splice(q.value,1,i):n.items.push(i),D(),U.value=!1,v.success(q.value>=0?"已更新":"已添加")}function we(i){de.warning({title:"确认删除",content:`确定删除「${n.items[i].text||j[n.items[i].type]||"按钮"}」吗?`,positiveText:"删除",negativeText:"取消",onPositiveClick:()=>{n.items.splice(i,1),D(),v.success("已删除")}})}async function he(){M.value=!0;try{const i=await se.getFloatingButtons();if(i.code==="success"&&i.data){const e=i.data;n.enabled=e.enabled!==!1,n.style=e.style||"round",n.position=e.position||"bottom",n.scroll_hide=!!e.scroll_hide,n.scroll_down_hide=e.scroll_down_hide!==!1,n.filter_blur=Array.isArray(e.filter_blur)?e.filter_blur:[],n.items=(e.items||[]).map((d,_)=>({...B(),...d,icon:d.type==="theme_mode"?"fas fa-sun":d.icon||"",color:d.color||null,bg:d.bg||null,icon_dark:"",icon_light:"",action_mode:d.action_mode||(["service_qq","service_wechat"].includes(d.type),"link"),qrcode_img:d.qrcode_img||"",add_items:Array.isArray(d.add_items)?d.add_items:[],qr_size:d.qr_size||120,sort_order:d.sort_order??_})),D()}}catch(i){console.error("[FloatingButtons] load failed:",i),v.error("加载配置失败")}finally{M.value=!1}}async function X(){A.value=!0;try{const i={enabled:n.enabled,style:n.style,position:n.position,scroll_hide:n.scroll_hide,scroll_down_hide:n.scroll_down_hide,filter_blur:n.filter_blur,items:n.items.map((d,_)=>({...d,icon:d.type==="theme_mode"?"fas fa-sun":d.icon||"",icon_dark:"",icon_light:"",color:d.color||"",bg:d.bg||"",sort_order:_}))},e=await se.saveFloatingButtons(i);e.code==="success"?v.success(e.message||"保存成功"):v.error(e.message||"保存失败")}catch(i){console.error("[FloatingButtons] save failed:",i),v.error("保存失败")}finally{A.value=!1}}return De(he),(i,e)=>{const d=c("n-switch"),_=c("n-form-item"),w=c("n-radio"),V=c("n-space"),H=c("n-radio-group"),G=c("n-checkbox"),xe=c("n-checkbox-group"),J=c("n-form"),K=c("n-card"),ee=c("n-empty"),Ue=c("n-spin"),ze=c("n-select"),b=c("n-form-item-gi"),y=c("n-input"),P=c("n-grid"),te=c("n-color-picker"),le=c("n-input-number"),$e=c("n-dropdown"),Ce=c("n-modal");return r(),f("div",Ve,[a(Qe,{title:"底部悬浮按钮",desc:"配置右侧悬浮按钮的显示、排序和交互内容,前端会根据保存结果实时渲染。"},{actions:s(()=>[a(p(k),{type:"primary",loading:A.value,onClick:X},{default:s(()=>[...e[27]||(e[27]=[u("保存",-1)])]),_:1},8,["loading"])]),_:1}),a(Ue,{show:M.value,style:{width:"100%","min-height":"200px"}},{default:s(()=>[a(K,{class:"aksrt-section-card"},{header:s(()=>[...e[28]||(e[28]=[o("div",{class:"aksrt-card-header-row"},[o("div",{class:"aksrt-card-header-row__left"},[o("span",{class:"header-icon"},[o("i",{class:"fas fa-cog"})]),o("strong",{class:"aksrt-card-header-row__title"},"基础设置")])],-1)])]),default:s(()=>[a(J,{model:n,"label-placement":"left","label-width":"140",class:"aksrt-form"},{default:s(()=>[a(_,{label:"启用悬浮按钮"},{default:s(()=>[a(d,{value:n.enabled,"onUpdate:value":e[0]||(e[0]=l=>n.enabled=l)},null,8,["value"]),e[29]||(e[29]=o("span",{class:"aksrt-hint-text",style:{"margin-left":"12px"}},"控制前台整个悬浮按钮组是否显示",-1))]),_:1}),a(_,{label:"按钮样式"},{default:s(()=>[a(H,{value:n.style,"onUpdate:value":e[1]||(e[1]=l=>n.style=l)},{default:s(()=>[a(V,null,{default:s(()=>[a(w,{value:"round"},{default:s(()=>[...e[30]||(e[30]=[u("圆角卡片",-1)])]),_:1}),a(w,{value:"square"},{default:s(()=>[...e[31]||(e[31]=[u("方形堆叠",-1)])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1}),a(_,{label:"显示位置"},{default:s(()=>[a(H,{value:n.position,"onUpdate:value":e[2]||(e[2]=l=>n.position=l)},{default:s(()=>[a(V,null,{default:s(()=>[a(w,{value:"bottom"},{default:s(()=>[...e[32]||(e[32]=[u("右下角",-1)])]),_:1}),a(w,{value:"center"},{default:s(()=>[...e[33]||(e[33]=[u("右侧居中",-1)])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1}),a(_,{label:"滚动中隐藏"},{default:s(()=>[a(d,{value:n.scroll_hide,"onUpdate:value":e[3]||(e[3]=l=>n.scroll_hide=l)},null,8,["value"]),e[34]||(e[34]=o("span",{class:"aksrt-hint-text",style:{"margin-left":"12px"}},"页面滚动时暂时隐藏,停止滚动后恢复",-1))]),_:1}),a(_,{label:"下滑隐藏"},{default:s(()=>[a(d,{value:n.scroll_down_hide,"onUpdate:value":e[4]||(e[4]=l=>n.scroll_down_hide=l)},null,8,["value"]),e[35]||(e[35]=o("span",{class:"aksrt-hint-text",style:{"margin-left":"12px"}},"向下滚动隐藏,向上滚动显示",-1))]),_:1}),a(_,{label:"毛玻璃设备"},{default:s(()=>[a(xe,{value:n.filter_blur,"onUpdate:value":e[5]||(e[5]=l=>n.filter_blur=l)},{default:s(()=>[a(V,null,{default:s(()=>[a(G,{value:"pc"},{default:s(()=>[...e[36]||(e[36]=[u("PC",-1)])]),_:1}),a(G,{value:"mobile"},{default:s(()=>[...e[37]||(e[37]=[u("移动端",-1)])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),a(K,{class:"aksrt-section-card"},{header:s(()=>[o("div",Pe,[o("div",Se,[e[38]||(e[38]=o("span",{class:"header-icon"},[o("i",{class:"fas fa-layer-group"})],-1)),o("strong",Te,"按钮列表 ("+x(n.items.length)+")",1)]),a(p(k),{type:"primary",size:"small",onClick:pe},{icon:s(()=>[...e[39]||(e[39]=[o("i",{class:"fas fa-plus"},null,-1)])]),default:s(()=>[e[40]||(e[40]=u(" 添加按钮 ",-1))]),_:1})])]),default:s(()=>[e[48]||(e[48]=o("p",{class:"section-desc"},"支持内置功能按钮、自定义链接、二维码弹层和客服入口。排序结果会直接用于前端输出顺序。",-1)),n.items.length?(r(),m(p(ae),{key:0,modelValue:n.items,"onUpdate:modelValue":e[6]||(e[6]=l=>n.items=l),"item-key":"id",handle:".float-btn-sort__handle","ghost-class":"float-btn-sort__ghost",animation:"180",class:"float-btn-sort",onEnd:D},{item:s(({element:l,index:S})=>[o("div",Le,[o("div",Me,[e[43]||(e[43]=o("button",{type:"button",class:"float-btn-sort__handle","aria-label":"拖拽排序"},[o("i",{class:"fas fa-grip-vertical"})],-1)),o("span",je,[l.icon?(r(),f("i",{key:0,class:$(l.icon)},null,2)):g("",!0)]),o("div",He,[o("div",Ne,[o("strong",null,x(l.text||p(j)[l.type]||"按钮"),1),a(p(T),{size:"small",bordered:!1},{default:s(()=>[u(x(p(j)[l.type]||l.type),1)]),_:2},1024),l.pc_s?(r(),m(p(T),{key:0,size:"small",type:"info",bordered:!1},{default:s(()=>[...e[41]||(e[41]=[u("PC",-1)])]),_:1})):g("",!0),l.m_s?(r(),m(p(T),{key:1,size:"small",type:"warning",bordered:!1},{default:s(()=>[...e[42]||(e[42]=[u("移动",-1)])]),_:1})):g("",!0),a(p(T),{size:"small",type:l.enabled?"success":"default",bordered:!1},{default:s(()=>[u(x(l.enabled?"启用":"禁用"),1)]),_:2},1032,["type"])]),o("div",Oe,x(be(l)),1)])]),o("div",Ee,[a(p(k),{size:"tiny",quaternary:"",type:"primary",onClick:h=>ke(S)},{icon:s(()=>[...e[44]||(e[44]=[o("i",{class:"fas fa-edit",style:{"font-size":"12px"}},null,-1)])]),default:s(()=>[e[45]||(e[45]=u(" 编辑 ",-1))]),_:1},8,["onClick"]),a(p(k),{size:"tiny",quaternary:"",type:"error",onClick:h=>we(S)},{icon:s(()=>[...e[46]||(e[46]=[o("i",{class:"fas fa-trash-alt",style:{"font-size":"12px"}},null,-1)])]),default:s(()=>[e[47]||(e[47]=u(" 删除 ",-1))]),_:1},8,["onClick"])])])]),_:1},8,["modelValue"])):(r(),m(ee,{key:1,description:"暂无悬浮按钮,请点击上方按钮添加"}))]),_:1}),o("div",Ie,[a(p(k),{type:"primary",loading:A.value,onClick:X},{default:s(()=>[...e[49]||(e[49]=[u("保存悬浮按钮配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"]),a(Ce,{show:U.value,"onUpdate:show":e[26]||(e[26]=l=>U.value=l),"mask-closable":!1,preset:"card",title:q.value>=0?"编辑悬浮按钮":"添加悬浮按钮",class:"aksrt-modal-card",style:{"max-width":"640px"}},{footer:s(()=>[o("div",_t,[a(p(k),{onClick:e[25]||(e[25]=l=>U.value=!1)},{default:s(()=>[...e[66]||(e[66]=[u("取消",-1)])]),_:1}),a(p(k),{type:"primary",onClick:qe},{default:s(()=>[...e[67]||(e[67]=[u("保存",-1)])]),_:1})])]),default:s(()=>[a(J,{model:t,"label-placement":"top",class:"aksrt-form"},{default:s(()=>[a(P,{cols:2,"x-gap":16},{default:s(()=>[a(b,{label:"按钮类型"},{default:s(()=>[a(ze,{value:t.type,"onUpdate:value":[e[7]||(e[7]=l=>t.type=l),ce],options:O,placeholder:"选择按钮类型"},null,8,["value"])]),_:1}),t.type!=="theme_mode"?(r(),m(b,{key:0,label:"主图标 (Font Awesome)"},{default:s(()=>[a(y,{value:t.icon,"onUpdate:value":e[8]||(e[8]=l=>t.icon=l),placeholder:"例如: fas fa-home"},null,8,["value"])]),_:1})):(r(),m(b,{key:1,label:"主题图标"},{default:s(()=>[...e[50]||(e[50]=[o("div",{class:"theme-icon-preview"},[o("span",null,[o("i",{class:"fas fa-sun"}),u(" 亮色固定显示太阳")]),o("span",null,[o("i",{class:"fas fa-moon"}),u(" 暗色固定显示月亮")])],-1)])]),_:1}))]),_:1}),o("div",Re,[e[52]||(e[52]=o("span",null,"预览:",-1)),t.type==="theme_mode"?(r(),f("span",We,[...e[51]||(e[51]=[o("i",{class:"fas fa-sun"},null,-1),u(" / ",-1),o("i",{class:"fas fa-moon"},null,-1)])])):t.icon?(r(),f("i",{key:1,class:$(t.icon),style:{"font-size":"18px"}},null,2)):(r(),f("span",Xe,"未设置图标")),e[53]||(e[53]=o("a",{href:"https://fontawesome.com/search?m=free",target:"_blank",rel:"noopener"},[o("i",{class:"fas fa-external-link-alt"}),u(" Font Awesome ")],-1))]),a(P,{cols:2,"x-gap":16},{default:s(()=>[a(b,{label:"按钮标题"},{default:s(()=>[a(y,{value:t.text,"onUpdate:value":e[9]||(e[9]=l=>t.text=l),placeholder:"例如: 微信, 顶部, 会员"},null,8,["value"])]),_:1}),ue.value?(r(),m(b,{key:0,label:"悬停说明"},{default:s(()=>[a(y,{value:t.desc,"onUpdate:value":e[10]||(e[10]=l=>t.desc=l),placeholder:"例如: 扫码添加微信"},null,8,["value"])]),_:1})):g("",!0)]),_:1}),a(P,{cols:2,"x-gap":16},{default:s(()=>[a(b,{label:"PC 显示"},{default:s(()=>[a(d,{value:t.pc_s,"onUpdate:value":e[11]||(e[11]=l=>t.pc_s=l)},null,8,["value"])]),_:1}),a(b,{label:"移动端显示"},{default:s(()=>[a(d,{value:t.m_s,"onUpdate:value":e[12]||(e[12]=l=>t.m_s=l)},null,8,["value"])]),_:1})]),_:1}),a(P,{cols:2,"x-gap":16},{default:s(()=>[a(b,{label:"图标颜色"},{default:s(()=>[a(te,{value:t.color,"onUpdate:value":e[13]||(e[13]=l=>t.color=l),"show-alpha":!0,clearable:""},null,8,["value"])]),_:1}),a(b,{label:"背景颜色"},{default:s(()=>[a(te,{value:t.bg,"onUpdate:value":e[14]||(e[14]=l=>t.bg=l),"show-alpha":!0,clearable:""},null,8,["value"])]),_:1})]),_:1}),E.value?(r(),m(_,{key:0,label:"交互方式"},{default:s(()=>[a(H,{value:t.action_mode,"onUpdate:value":e[15]||(e[15]=l=>t.action_mode=l)},{default:s(()=>[a(V,null,{default:s(()=>[a(w,{value:"link"},{default:s(()=>[...e[54]||(e[54]=[u("点击跳转",-1)])]),_:1}),a(w,{value:"qrcode"},{default:s(()=>[...e[55]||(e[55]=[u("悬浮二维码",-1)])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1})):g("",!0),F.value?(r(),m(_,{key:1,label:"链接地址"},{default:s(()=>[a(y,{value:t.link,"onUpdate:value":e[16]||(e[16]=l=>t.link=l),placeholder:"https://example.com 或 /vip"},null,8,["value"])]),_:1})):g("",!0),t.type==="service_qq"&&t.action_mode!=="qrcode"?(r(),m(_,{key:2,label:"QQ 号码"},{default:s(()=>[a(y,{value:t.qq,"onUpdate:value":e[17]||(e[17]=l=>t.qq=l),placeholder:"仅填写数字"},null,8,["value"])]),_:1})):g("",!0),t.type==="service_qq"&&t.action_mode==="qrcode"?(r(),m(_,{key:3,label:"QQ 二维码地址"},{default:s(()=>[a(y,{value:t.qrcode_img,"onUpdate:value":e[18]||(e[18]=l=>t.qrcode_img=l),placeholder:"https://example.com/qq-qrcode.jpg"},null,8,["value"])]),_:1})):g("",!0),t.type==="service_wechat"&&t.action_mode==="qrcode"?(r(),m(_,{key:4,label:"微信二维码地址"},{default:s(()=>[a(y,{value:t.wechat_img,"onUpdate:value":e[19]||(e[19]=l=>t.wechat_img=l),placeholder:"https://example.com/qrcode.jpg"},null,8,["value"])]),_:1})):g("",!0),t.type==="qrcode"?(r(),m(_,{key:5,label:"二维码尺寸"},{default:s(()=>[a(le,{value:t.qr_size,"onUpdate:value":e[20]||(e[20]=l=>t.qr_size=l),min:80,max:240,style:{width:"180px"}},null,8,["value"])]),_:1})):g("",!0),t.type==="add"?(r(),f("div",Ye,[o("div",Ze,[e[60]||(e[60]=o("strong",null,"发布菜单项",-1)),o("div",Ge,[a($e,{trigger:"click",options:re.value,onSelect:ve},{default:s(()=>[a(p(k),{size:"small"},{icon:s(()=>[...e[56]||(e[56]=[o("i",{class:"fas fa-magic"},null,-1)])]),default:s(()=>[e[57]||(e[57]=u(" 一键预设 ",-1))]),_:1})]),_:1},8,["options"]),a(p(k),{size:"small",type:"primary",onClick:me},{icon:s(()=>[...e[58]||(e[58]=[o("i",{class:"fas fa-plus"},null,-1)])]),default:s(()=>[e[59]||(e[59]=u(" 添加子项 ",-1))]),_:1})])]),t.add_items.length?(r(),f("div",Je,[a(p(ae),{modelValue:t.add_items,"onUpdate:modelValue":e[21]||(e[21]=l=>t.add_items=l),"item-key":"id",handle:".add-items-editor__drag","ghost-class":"add-items-editor__ghost",animation:"180",onEnd:fe},{item:s(({element:l,index:S})=>[o("div",Ke,[e[62]||(e[62]=o("button",{type:"button",class:"add-items-editor__drag","aria-label":"拖拽排序"},[o("i",{class:"fas fa-grip-vertical"})],-1)),a(y,{value:l.label,"onUpdate:value":h=>l.label=h,placeholder:"名称,例如: 写文章"},null,8,["value","onUpdate:value"]),a(y,{value:l.icon,"onUpdate:value":h=>l.icon=h,placeholder:"图标,例如: fas fa-pen"},null,8,["value","onUpdate:value"]),a(y,{value:l.url,"onUpdate:value":h=>l.url=h,placeholder:"链接,例如: /submit"},null,8,["value","onUpdate:value"]),a(p(k),{quaternary:"",type:"error",onClick:h=>ye(S)},{icon:s(()=>[...e[61]||(e[61]=[o("i",{class:"fas fa-trash-alt"},null,-1)])]),_:1},8,["onClick"])])]),_:1},8,["modelValue"])])):(r(),m(ee,{key:1,description:"未配置子项时,发布按钮会退化为单链接模式"})),o("div",et,[e[65]||(e[65]=o("div",{class:"add-items-preview__title"},"展开预览",-1)),o("div",tt,[e[63]||(e[63]=o("div",{class:"add-items-preview__mode"},"亮色",-1)),o("div",lt,[o("i",{class:$(t.icon||"fas fa-plus")},null,2)]),o("div",at,[t.add_items.length?(r(),f("div",st,[(r(!0),f(ie,null,ne(t.add_items,l=>(r(),f("a",{key:l.id,href:"javascript:void(0)",class:"add-items-preview__item"},[o("i",{class:$(l.icon||"fas fa-pen")},null,2),o("span",null,x(l.label||"未命名子项"),1)]))),128))])):(r(),f("div",ot,"当前没有子菜单项,将使用单链接按钮。"))])]),o("div",it,[e[64]||(e[64]=o("div",{class:"add-items-preview__mode"},"暗色",-1)),o("div",nt,[o("i",{class:$(t.icon||"fas fa-plus")},null,2)]),o("div",dt,[t.add_items.length?(r(),f("div",rt,[(r(!0),f(ie,null,ne(t.add_items,l=>(r(),f("a",{key:`${l.id}-dark`,href:"javascript:void(0)",class:"add-items-preview__item add-items-preview__item--dark"},[o("i",{class:$(l.icon||"fas fa-pen")},null,2),o("span",null,x(l.label||"未命名子项"),1)]))),128))])):(r(),f("div",ut,"当前没有子菜单项,将使用单链接按钮。"))])])])])):g("",!0),Q.value?(r(),m(_,{key:7,label:"悬浮内容 HTML"},{default:s(()=>[a(y,{value:t.hover,"onUpdate:value":e[22]||(e[22]=l=>t.hover=l),type:"textarea",autosize:{minRows:4,maxRows:8},placeholder:"可填写简单 HTML 内容,填写后会优先展示弹层内容"},null,8,["value"])]),_:1})):g("",!0),Q.value?(r(),m(_,{key:8,label:"悬浮层宽度"},{default:s(()=>[a(le,{value:t.hover_width,"onUpdate:value":e[23]||(e[23]=l=>t.hover_width=l),min:120,max:480,style:{width:"180px"}},null,8,["value"])]),_:1})):g("",!0),a(_,{label:"启用状态"},{default:s(()=>[a(d,{value:t.enabled,"onUpdate:value":e[24]||(e[24]=l=>t.enabled=l)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["show","title"])])}}},qt=Ae(ct,[["__scopeId","data-v-3f29cff8"]]);export{qt as default};
diff --git a/assets/admin/build/FloatingButtonsSettings.css b/assets/admin/build/FloatingButtonsSettings.css
deleted file mode 100644
index a3c24379..00000000
--- a/assets/admin/build/FloatingButtonsSettings.css
+++ /dev/null
@@ -1 +0,0 @@
-.icon-preview-row[data-v-3f29cff8]{display:flex;align-items:center;gap:8px;margin-bottom:16px;font-size:13px}.theme-icon-preview[data-v-3f29cff8]{display:flex;flex-direction:column;gap:6px;color:var(--n-text-color-3);font-size:13px}.theme-icon-preview span[data-v-3f29cff8],.theme-icon-preview-inline[data-v-3f29cff8]{display:inline-flex;align-items:center;gap:6px}.icon-preview-row a[data-v-3f29cff8]{color:var(--n-primary-color);text-decoration:none}.icon-preview-row a[data-v-3f29cff8]:hover{text-decoration:underline}.muted-text[data-v-3f29cff8]{color:#999;font-size:12px}.aksrt-modal-footer[data-v-3f29cff8]{display:flex;justify-content:flex-end;gap:10px}.section-desc[data-v-3f29cff8]{color:var(--n-text-color-3);font-size:13px;margin:0 0 16px}.float-btn-sort[data-v-3f29cff8]{display:flex;flex-direction:column;gap:12px}.float-btn-sort__item[data-v-3f29cff8]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid var(--n-border-color);border-radius:14px;background:var(--n-card-color)}.float-btn-sort__main[data-v-3f29cff8]{display:flex;align-items:center;gap:12px;min-width:0;flex:1}.float-btn-sort__handle[data-v-3f29cff8]{width:30px;height:30px;border:0;background:transparent;color:var(--n-text-color-3);cursor:grab}.float-btn-sort__handle[data-v-3f29cff8]:active{cursor:grabbing}.float-btn-sort__icon[data-v-3f29cff8]{width:36px;height:36px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:#88abda1f;color:var(--n-text-color-2)}.float-btn-sort__meta[data-v-3f29cff8]{min-width:0;flex:1}.float-btn-sort__title-row[data-v-3f29cff8]{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:6px}.float-btn-sort__desc[data-v-3f29cff8]{font-size:13px;color:var(--n-text-color-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.float-btn-sort__actions[data-v-3f29cff8]{display:flex;gap:8px;flex-shrink:0}.float-btn-sort__ghost[data-v-3f29cff8]{opacity:.45}.add-items-editor[data-v-3f29cff8]{margin-bottom:16px}.add-items-editor__head[data-v-3f29cff8]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.add-items-editor__head-actions[data-v-3f29cff8]{display:flex;gap:8px}.add-items-editor__list[data-v-3f29cff8]{display:flex;flex-direction:column;gap:10px}.add-items-editor__row[data-v-3f29cff8]{display:grid;grid-template-columns:auto 1fr 1fr 1.4fr auto;gap:10px;align-items:center}.add-items-editor__drag[data-v-3f29cff8]{width:32px;height:32px;border:0;border-radius:8px;background:#88abda1f;color:var(--n-text-color-3);cursor:grab}.add-items-editor__drag[data-v-3f29cff8]:active{cursor:grabbing}.add-items-editor__ghost[data-v-3f29cff8]{opacity:.45}.add-items-preview[data-v-3f29cff8]{margin-top:14px;padding:14px;border:1px dashed var(--n-border-color);border-radius:14px;background:#88abda0a}.add-items-preview__title[data-v-3f29cff8]{font-size:13px;color:var(--n-text-color-3);margin-bottom:10px}.add-items-preview__panel[data-v-3f29cff8]{display:flex;align-items:center;gap:12px;margin-top:12px}.add-items-preview__panel[data-v-3f29cff8]:first-of-type{margin-top:0}.add-items-preview__mode[data-v-3f29cff8]{width:40px;flex-shrink:0;font-size:12px;color:var(--n-text-color-3)}.add-items-preview__trigger[data-v-3f29cff8]{width:42px;height:42px;border-radius:12px;background:#fff;border:1px solid var(--n-border-color);display:inline-flex;align-items:center;justify-content:center;color:var(--n-text-color-2);box-shadow:0 8px 20px #11182714}.add-items-preview__trigger--dark[data-v-3f29cff8]{background:#232734;border-color:#ffffff14;color:#d8dee9;box-shadow:0 12px 28px #00000047}.add-items-preview__menu[data-v-3f29cff8]{flex:1;min-width:0;padding:10px;border-radius:14px;background:#fff;border:1px solid var(--n-border-color)}.add-items-preview__menu--dark[data-v-3f29cff8]{background:#232734;border-color:#ffffff14}.add-items-preview__list[data-v-3f29cff8]{display:flex;flex-direction:column;gap:6px}.add-items-preview__item[data-v-3f29cff8]{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;background:#88abda0f;color:var(--n-text-color-2);text-decoration:none}.add-items-preview__item i[data-v-3f29cff8]{width:18px;text-align:center;color:var(--n-primary-color)}.add-items-preview__item--dark[data-v-3f29cff8]{background:#ffffff0d;color:#e5e7eb}.add-items-preview__item--dark i[data-v-3f29cff8]{color:#9fc0ec}.add-items-preview__empty[data-v-3f29cff8]{font-size:13px;color:var(--n-text-color-3);padding:10px 12px}.add-items-preview__empty--dark[data-v-3f29cff8]{color:#e5e7ebb8}
diff --git a/assets/admin/build/FooterSettings.css b/assets/admin/build/FooterSettings.css
deleted file mode 100644
index f7e50097..00000000
--- a/assets/admin/build/FooterSettings.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-modal-footer[data-v-75e6f4e1]{display:flex;justify-content:flex-end;gap:10px}.aksrt-media-row[data-v-75e6f4e1]{display:flex;align-items:center;gap:8px;width:100%}.aksrt-media-preview[data-v-75e6f4e1]{display:block;max-width:200px;max-height:80px;margin-top:8px;border-radius:6px;border:1px solid var(--n-border-color, #e0e0e6);object-fit:contain}.aksrt-media-preview--sm[data-v-75e6f4e1]{max-width:64px;max-height:64px}.aksrt-mini-img-row[data-v-75e6f4e1]{padding:10px 0;border-bottom:1px solid var(--n-border-color, #e0e0e6)}.aksrt-mini-img-row[data-v-75e6f4e1]:last-child{border-bottom:none}
diff --git a/assets/admin/build/FooterSettings.pT4aCC_F.js b/assets/admin/build/FooterSettings.pT4aCC_F.js
deleted file mode 100644
index b11f257a..00000000
--- a/assets/admin/build/FooterSettings.pT4aCC_F.js
+++ /dev/null
@@ -1 +0,0 @@
-import{a as P}from"./shared-api.D5_fnN32.js";import{P as Be}from"./PageHeader.Di3JTPjc.js";import{o as se}from"./media.BHNcAGK-.js";import{_ as Re}from"./index.js";import{u as je,a as He,B as r,b as ie,c as Pe}from"./vendor-naive.BuHWlEgf.js";import{o as Ne,X as q,a4 as t,a3 as l,r as y,a1 as c,e as N,W as m,N as _,f as d,Y as s,a5 as I,a2 as h,Z as Ie,F as Se,R as Ve,k}from"./vendor-vue.Bykizn0M.js";import"./vendor-misc.1adHN6i_.js";const Oe={class:"aksrt-page-container content-page"},Qe={class:"aksrt-media-row"},De=["src"],Ee={class:"aksrt-media-row"},Ge=["src"],Xe={class:"aksrt-card-header-row"},Ye={class:"aksrt-media-row"},Ze=["src"],We={class:"aksrt-card-header-row"},Je={class:"aksrt-card-header-row"},Ke={class:"aksrt-card-header-row"},et={class:"aksrt-card-header-row"},tt={class:"aksrt-card-header-row__left"},ot={class:"aksrt-card-header-row__title"},lt={class:"aksrt-card-header-row"},at={class:"aksrt-media-row",style:{flex:"1"}},nt=["src","alt"],st={class:"aksrt-form-actions"},it={class:"aksrt-modal-footer"},rt={class:"aksrt-modal-footer"},dt={class:"aksrt-modal-footer"},ut={class:"aksrt-modal-footer"},_t={__name:"FooterSettings",setup(ct){const w=je(),O=He(),Q=y(!0),S=y(!1),K=y("contacts"),o=N({contacts:[],quick_links:[],more_links:[],hot_categories:5,copyright_text:"",layout_template:"template_1",footer_t1_m_s:["pc","mobile"],footer_t1_img:"",footer_t1_img_dark:"",footer_t1_t:"",fcode_t1_code:"",footer_contact_wechat_img:"",footer_contact_qq:"",footer_contact_weibo:"",footer_contact_email:"",footer_contact_m_s:["pc","mobile"],footer_contact_more:[],fcode_t2_code_1:"",fcode_t2_code_2:"",footer_mini_img_m_s:["pc","mobile"],footer_mini_img:[],fcode_customize_code:""}),L=y(!1),M=y(-1),f=N({icon:"",url:"",title:"",enabled:!0});let ee=0;const te=[{label:"GitHub",value:"github"},{label:"X (Twitter)",value:"x"},{label:"Email",value:"email"},{label:"微信",value:"wechat"},{label:"QQ",value:"qq"},{label:"微博",value:"weibo"},{label:"Telegram",value:"telegram"},{label:"Discord",value:"discord"},{label:"Bilibili",value:"bilibili"},{label:"LinkedIn",value:"linkedin"},{label:"Facebook",value:"facebook"},{label:"YouTube",value:"youtube"},{label:"Instagram",value:"instagram"},{label:"RSS / 网站",value:"web"}];function re(){Object.assign(f,{icon:"",url:"",title:"",enabled:!0}),M.value=-1,L.value=!0}function de(n,e){Object.assign(f,{icon:n.icon,url:n.url,title:n.title,enabled:n.enabled}),M.value=e,L.value=!0}function ue(){if(!f.icon||!f.url){w.warning("请填写图标类型和链接地址");return}const n={_uid:M.value>=0?o.contacts[M.value]._uid:++ee,icon:f.icon,url:f.url,title:f.title,enabled:f.enabled};M.value>=0?o.contacts[M.value]=n:o.contacts.push(n),L.value=!1}function _e(n){O.warning({title:"确认删除",content:"确定删除这个联系方式图标吗?",positiveText:"删除",negativeText:"取消",onPositiveClick:()=>{o.contacts.splice(n,1)}})}const ce=[{title:"平台",key:"icon",width:120,render:n=>{var e;return((e=te.find(p=>p.value===n.icon))==null?void 0:e.label)||n.icon}},{title:"链接",key:"url",ellipsis:{tooltip:!0}},{title:"提示",key:"title",ellipsis:{tooltip:!0},className:"aksrt-table-mobile-hide"},{title:"状态",key:"enabled",width:80,render:n=>k(ie,{size:"small",type:n.enabled?"success":"default"},{default:()=>n.enabled?"启用":"禁用"})},{title:"操作",key:"actions",width:130,render:(n,e)=>k("div",{style:"display:flex;gap:6px;"},[k(r,{size:"tiny",onClick:()=>de(o.contacts[e],e)},{default:()=>"编辑"}),k(r,{size:"tiny",type:"error",quaternary:!0,onClick:()=>_e(e)},{default:()=>"删除"})])}],T=y(!1),D=y("quick_links"),E=y(-1),g=N({id:"",name:"",url:"",enabled:!0,sort_order:0});function G(n,e=null,p=-1){D.value=n,E.value=p,Object.assign(g,e||{id:"",name:"",url:"",enabled:!0,sort_order:n==="quick_links"?o.quick_links.length:o.more_links.length}),T.value=!0}function me(){if(!g.name||!g.url){w.warning("请填写链接名称和链接地址");return}const n=o[D.value],e={id:g.id||`link_${Date.now()}`,name:g.name,url:g.url,enabled:g.enabled,sort_order:g.sort_order??n.length};E.value>=0?n[E.value]=e:n.push(e),T.value=!1}function fe(n,e){O.warning({title:"确认删除",content:"确定删除这个链接吗?",positiveText:"删除",negativeText:"取消",onPositiveClick:()=>{o[n].splice(e,1)}})}function oe(n){return[{title:"名称",key:"name",width:160},{title:"URL",key:"url",ellipsis:{tooltip:!0}},{title:"状态",key:"enabled",width:80,render:e=>k(ie,{size:"small",type:e.enabled?"success":"default"},{default:()=>e.enabled?"启用":"禁用"})},{title:"操作",key:"actions",width:130,render:(e,p)=>k("div",{style:"display:flex;gap:6px;"},[k(r,{size:"tiny",onClick:()=>G(n,o[n][p],p)},{default:()=>"编辑"}),k(r,{size:"tiny",type:"error",quaternary:!0,onClick:()=>fe(n,p)},{default:()=>"删除"})])}]}const $=y([]),A=y(!1),X=y(!1),v=N({name:"",url:"",logo:"",description:""}),pe=[{title:"Logo",key:"logo",width:60,render:n=>n.logo?k(Pe,{src:n.logo,size:32,round:!0}):k("span",{style:"color:#bbb;font-size:12px;"},"—")},{title:"名称",key:"name",width:140,ellipsis:{tooltip:!0}},{title:"URL",key:"url",ellipsis:{tooltip:!0}},{title:"描述",key:"description",ellipsis:{tooltip:!0},className:"aksrt-table-mobile-hide"},{title:"操作",key:"actions",width:90,render:n=>k(r,{quaternary:!0,type:"error",size:"tiny",onClick:()=>ge(n)},{default:()=>"删除"})}];function ve(){Object.assign(v,{name:"",url:"",logo:"",description:""}),A.value=!0}async function Y(){try{const n=await P.getFriendLinks();n.code==="success"&&($.value=n.data||[])}catch(n){console.error("[FriendLinks] load failed:",n)}}async function ke(){if(!v.name||!v.url){w.warning("请填写站点名称和 URL");return}X.value=!0;try{const n=await P.addFriendLink({name:v.name,url:v.url,logo:v.logo,description:v.description,sort_order:$.value.length});n.code==="success"&&(w.success(n.message||"已添加"),A.value=!1,await Y())}catch(n){w.error(n.message||"添加失败")}finally{X.value=!1}}function ge(n){O.warning({title:"确认删除",content:`确定删除友链「${n.name}」?`,positiveText:"删除",negativeText:"取消",onPositiveClick:async()=>{try{await P.deleteFriendLink(n.id),w.success("已删除"),await Y()}catch(e){w.error(e.message||"删除失败")}}})}async function we(){Q.value=!0;try{const[n]=await Promise.all([P.getFooterSettings(),Y()]);if(n.code==="success"&&n.data){const e=n.data;o.contacts=(e.contacts||[]).map(p=>({...p,_uid:++ee})),o.quick_links=e.quick_links||[],o.more_links=e.more_links||[],o.hot_categories=e.hot_categories??5,o.copyright_text=e.copyright_text||"",o.layout_template="template_1",o.footer_t1_m_s=Array.isArray(e.footer_t1_m_s)?e.footer_t1_m_s:["pc","mobile"],o.footer_t1_img=e.footer_t1_img||"",o.footer_t1_img_dark=e.footer_t1_img_dark||"",o.footer_t1_t=e.footer_t1_t||"",o.fcode_t1_code=e.fcode_t1_code||"",o.footer_contact_wechat_img=e.footer_contact_wechat_img||"",o.footer_contact_qq=e.footer_contact_qq||"",o.footer_contact_weibo=e.footer_contact_weibo||"",o.footer_contact_email=e.footer_contact_email||"",o.footer_contact_m_s=Array.isArray(e.footer_contact_m_s)?e.footer_contact_m_s:["pc","mobile"],o.footer_contact_more=Array.isArray(e.footer_contact_more)?e.footer_contact_more:[],o.fcode_t2_code_1=e.fcode_t2_code_1||"",o.fcode_t2_code_2=e.fcode_t2_code_2||"",o.footer_mini_img_m_s=Array.isArray(e.footer_mini_img_m_s)?e.footer_mini_img_m_s:["pc","mobile"],o.footer_mini_img=Array.isArray(e.footer_mini_img)?e.footer_mini_img:[],o.fcode_customize_code=e.fcode_customize_code||""}}catch(n){console.error("[Footer] load failed:",n),w.error((n==null?void 0:n.message)||"加载失败")}finally{Q.value=!1}}async function le(){S.value=!0;try{const n={contacts:o.contacts.map(({_uid:p,...z})=>z),quick_links:o.quick_links,more_links:o.more_links,hot_categories:o.hot_categories,copyright_text:o.copyright_text,layout_template:o.layout_template,footer_t1_m_s:o.footer_t1_m_s,footer_t1_img:o.footer_t1_img,footer_t1_img_dark:o.footer_t1_img_dark,footer_t1_t:o.footer_t1_t,fcode_t1_code:o.fcode_t1_code,footer_contact_wechat_img:o.footer_contact_wechat_img,footer_contact_qq:o.footer_contact_qq,footer_contact_weibo:o.footer_contact_weibo,footer_contact_email:o.footer_contact_email,footer_contact_m_s:o.footer_contact_m_s,footer_contact_more:o.footer_contact_more,fcode_t2_code_1:o.fcode_t2_code_1,fcode_t2_code_2:o.fcode_t2_code_2,footer_mini_img_m_s:o.footer_mini_img_m_s,footer_mini_img:o.footer_mini_img,fcode_customize_code:o.fcode_customize_code},e=await P.saveFooterSettings(n);e.code==="success"?w.success(e.message||"保存成功"):w.error(e.message||"保存失败")}catch(n){console.error("[Footer] save failed:",n),w.error((n==null?void 0:n.message)||"保存失败")}finally{S.value=!1}}async function Z(n){try{const e=await se({title:"选择图片"});e!=null&&e.url&&(o[n]=e.url)}catch(e){e.message&&w.warning(e.message)}}function ye(){o.footer_contact_more.push({desc:"",icon:"",link:"",img:""})}function be(n){o.footer_contact_more.splice(n,1)}const B=y(!1),W=y(-1),b=N({desc:"",icon:"",link:"",img:""});function he(n,e){Object.assign(b,n),W.value=e,B.value=!0}function xe(){const n={...b};W.value>=0&&(o.footer_contact_more[W.value]=n),B.value=!1}const Ce=[{title:"描述",key:"desc",width:120},{title:"图标",key:"icon",width:100},{title:"链接",key:"link",ellipsis:{tooltip:!0}},{title:"图片",key:"img",width:60,render:n=>n.img?k("img",{src:n.img,style:"width:32px;height:32px;object-fit:cover;border-radius:4px;"}):k("span",{style:"color:#bbb;"},"—")},{title:"操作",key:"actions",width:130,render:(n,e)=>k("div",{style:"display:flex;gap:6px;"},[k(r,{size:"tiny",onClick:()=>he(o.footer_contact_more[e],e)},{default:()=>"编辑"}),k(r,{size:"tiny",type:"error",quaternary:!0,onClick:()=>be(e)},{default:()=>"删除"})])}];function Ue(){o.footer_mini_img.length<4&&o.footer_mini_img.push({text:"",img:""})}function ze(n){o.footer_mini_img.splice(n,1)}async function qe(n){try{const e=await se({title:"选择二维码图片"});e!=null&&e.url&&(o.footer_mini_img[n].img=e.url)}catch(e){e.message&&w.warning(e.message)}}return Ne(we),(n,e)=>{const p=c("n-checkbox"),z=c("n-space"),J=c("n-checkbox-group"),i=c("n-form-item"),u=c("n-input"),x=c("n-form"),C=c("n-card"),U=c("n-tab-pane"),R=c("n-data-table"),F=c("n-empty"),ae=c("n-divider"),Le=c("n-radio-button"),Me=c("n-radio-group"),Fe=c("n-input-number"),Te=c("n-tabs"),$e=c("n-spin"),Ae=c("n-select"),ne=c("n-switch"),V=c("n-modal");return m(),q("div",Oe,[t(Be,{title:"页脚配置",desc:"管理页脚区域的联系方式、快速链接、更多链接、友情链接和版权信息。"},{actions:l(()=>[t(_(r),{type:"primary",loading:S.value,onClick:le},{default:l(()=>[...e[50]||(e[50]=[d("保存",-1)])]),_:1},8,["loading"])]),_:1}),t($e,{show:Q.value,style:{width:"100%","min-height":"200px"}},{default:l(()=>[t(Te,{value:K.value,"onUpdate:value":e[26]||(e[26]=a=>K.value=a),type:"line",animated:"",class:"aksrt-tabs"},{default:l(()=>[t(U,{name:"brand",tab:"品牌与Logo"},{default:l(()=>[t(C,{class:"aksrt-section-card"},{default:l(()=>[e[55]||(e[55]=s("div",{class:"aksrt-section-header"},[s("span",{class:"section-icon"},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("path",{d:"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"}),s("polyline",{points:"9 22 9 12 15 12 15 22"})])]),s("h3",null,"品牌列(第一列)")],-1)),t(x,{model:o,"label-placement":"left","label-width":"160",class:"aksrt-form"},{default:l(()=>[t(i,{label:"显示设备"},{default:l(()=>[t(J,{value:o.footer_t1_m_s,"onUpdate:value":e[0]||(e[0]=a=>o.footer_t1_m_s=a)},{default:l(()=>[t(z,null,{default:l(()=>[t(p,{value:"pc",label:"PC"}),t(p,{value:"mobile",label:"移动端"})]),_:1})]),_:1},8,["value"])]),_:1}),t(i,{label:"页脚 Logo(日间)"},{default:l(()=>[s("div",Qe,[t(u,{value:o.footer_t1_img,"onUpdate:value":e[1]||(e[1]=a=>o.footer_t1_img=a),placeholder:"图片 URL",readonly:"",style:{flex:"1"}},null,8,["value"]),t(_(r),{size:"small",onClick:e[2]||(e[2]=a=>Z("footer_t1_img"))},{default:l(()=>[...e[51]||(e[51]=[d("选择",-1)])]),_:1}),t(_(r),{size:"small",quaternary:"",type:"error",disabled:!o.footer_t1_img,onClick:e[3]||(e[3]=a=>o.footer_t1_img="")},{default:l(()=>[...e[52]||(e[52]=[d("清除",-1)])]),_:1},8,["disabled"])]),o.footer_t1_img?(m(),q("img",{key:0,src:o.footer_t1_img,class:"aksrt-media-preview",alt:"footer logo day"},null,8,De)):I("",!0)]),_:1}),t(i,{label:"页脚 Logo(夜间)"},{default:l(()=>[s("div",Ee,[t(u,{value:o.footer_t1_img_dark,"onUpdate:value":e[4]||(e[4]=a=>o.footer_t1_img_dark=a),placeholder:"图片 URL",readonly:"",style:{flex:"1"}},null,8,["value"]),t(_(r),{size:"small",onClick:e[5]||(e[5]=a=>Z("footer_t1_img_dark"))},{default:l(()=>[...e[53]||(e[53]=[d("选择",-1)])]),_:1}),t(_(r),{size:"small",quaternary:"",type:"error",disabled:!o.footer_t1_img_dark,onClick:e[6]||(e[6]=a=>o.footer_t1_img_dark="")},{default:l(()=>[...e[54]||(e[54]=[d("清除",-1)])]),_:1},8,["disabled"])]),o.footer_t1_img_dark?(m(),q("img",{key:0,src:o.footer_t1_img_dark,class:"aksrt-media-preview",alt:"footer logo night"},null,8,Ge)):I("",!0)]),_:1}),t(i,{label:"品牌标题"},{default:l(()=>[t(u,{value:o.footer_t1_t,"onUpdate:value":e[7]||(e[7]=a=>o.footer_t1_t=a),placeholder:"留空则使用站点名称"},null,8,["value"])]),_:1}),t(i,{label:"品牌列自定义代码"},{default:l(()=>[t(u,{value:o.fcode_t1_code,"onUpdate:value":e[8]||(e[8]=a=>o.fcode_t1_code=a),type:"textarea",rows:3,placeholder:"可选,显示在品牌区域底部"},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1})]),_:1}),t(U,{name:"contacts",tab:"联系方式"},{default:l(()=>[t(C,{class:"aksrt-section-card"},{header:l(()=>[s("div",Xe,[e[57]||(e[57]=s("div",{class:"aksrt-card-header-row__left"},[s("span",{class:"header-icon"},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("rect",{x:"5",y:"2",width:"14",height:"20",rx:"2",ry:"2"}),s("line",{x1:"12",y1:"18",x2:"12.01",y2:"18"})])]),s("strong",{class:"aksrt-card-header-row__title"},"联系方式图标")],-1)),t(_(r),{type:"primary",size:"small",onClick:re},{default:l(()=>[...e[56]||(e[56]=[d("+ 添加图标",-1)])]),_:1})])]),default:l(()=>[e[65]||(e[65]=s("p",{class:"section-desc"},"页脚中的社交平台或联系入口。",-1)),o.contacts.length?(m(),h(R,{key:0,columns:ce,data:o.contacts,"row-key":a=>a._uid,bordered:!1,size:"small"},null,8,["data","row-key"])):(m(),h(F,{key:1,description:"暂无联系方式图标"})),t(ae,null,{default:l(()=>[...e[58]||(e[58]=[d("标准联系字段",-1)])]),_:1}),t(x,{model:o,"label-placement":"left","label-width":"160",class:"aksrt-form"},{default:l(()=>[t(i,{label:"显示设备"},{default:l(()=>[t(J,{value:o.footer_contact_m_s,"onUpdate:value":e[9]||(e[9]=a=>o.footer_contact_m_s=a)},{default:l(()=>[t(z,null,{default:l(()=>[t(p,{value:"pc",label:"PC"}),t(p,{value:"mobile",label:"移动端"})]),_:1})]),_:1},8,["value"])]),_:1}),t(i,{label:"微信二维码"},{default:l(()=>[s("div",Ye,[t(u,{value:o.footer_contact_wechat_img,"onUpdate:value":e[10]||(e[10]=a=>o.footer_contact_wechat_img=a),placeholder:"图片 URL",readonly:"",style:{flex:"1"}},null,8,["value"]),t(_(r),{size:"small",onClick:e[11]||(e[11]=a=>Z("footer_contact_wechat_img"))},{default:l(()=>[...e[59]||(e[59]=[d("选择",-1)])]),_:1}),t(_(r),{size:"small",quaternary:"",type:"error",disabled:!o.footer_contact_wechat_img,onClick:e[12]||(e[12]=a=>o.footer_contact_wechat_img="")},{default:l(()=>[...e[60]||(e[60]=[d("清除",-1)])]),_:1},8,["disabled"])]),o.footer_contact_wechat_img?(m(),q("img",{key:0,src:o.footer_contact_wechat_img,class:"aksrt-media-preview",alt:"wechat qr"},null,8,Ze)):I("",!0)]),_:1}),t(i,{label:"QQ"},{default:l(()=>[t(u,{value:o.footer_contact_qq,"onUpdate:value":e[13]||(e[13]=a=>o.footer_contact_qq=a),placeholder:"QQ 号或链接"},null,8,["value"])]),_:1}),t(i,{label:"微博"},{default:l(()=>[t(u,{value:o.footer_contact_weibo,"onUpdate:value":e[14]||(e[14]=a=>o.footer_contact_weibo=a),placeholder:"微博链接"},null,8,["value"])]),_:1}),t(i,{label:"邮箱"},{default:l(()=>[t(u,{value:o.footer_contact_email,"onUpdate:value":e[15]||(e[15]=a=>o.footer_contact_email=a),placeholder:"邮箱地址"},null,8,["value"])]),_:1}),t(i,{label:"链接 HTML(fcode_t2_code_1)"},{default:l(()=>[t(u,{value:o.fcode_t2_code_1,"onUpdate:value":e[16]||(e[16]=a=>o.fcode_t2_code_1=a),type:"textarea",rows:3,placeholder:'推荐直接写 首页 等链接 HTML;为空时回退快速链接/友链/热门分类'},null,8,["value"])]),_:1}),t(i,{label:"链接下方自定义代码"},{default:l(()=>[t(u,{value:o.fcode_t2_code_2,"onUpdate:value":e[17]||(e[17]=a=>o.fcode_t2_code_2=a),type:"textarea",rows:2,placeholder:"备案号等 HTML"},null,8,["value"])]),_:1})]),_:1},8,["model"]),t(ae,null,{default:l(()=>[...e[61]||(e[61]=[d("更多联系项",-1)])]),_:1}),t(C,{class:"aksrt-section-card",embedded:""},{header:l(()=>[s("div",We,[e[63]||(e[63]=s("strong",{class:"aksrt-card-header-row__title"},"扩展联系项",-1)),t(_(r),{type:"primary",size:"small",onClick:ye},{default:l(()=>[...e[62]||(e[62]=[d("+ 添加",-1)])]),_:1})])]),default:l(()=>[e[64]||(e[64]=s("p",{class:"section-desc"},"每项含描述、图标、链接、图片(hover 显示),用于补充标准联系方式。",-1)),o.footer_contact_more.length?(m(),h(R,{key:0,columns:Ce,data:o.footer_contact_more,"row-key":(a,j)=>j,bordered:!1,size:"small"},null,8,["data","row-key"])):(m(),h(F,{key:1,description:"暂无扩展联系项"}))]),_:1})]),_:1})]),_:1}),t(U,{name:"quick",tab:"快速链接"},{default:l(()=>[t(C,{class:"aksrt-section-card"},{header:l(()=>[s("div",Je,[e[67]||(e[67]=s("div",{class:"aksrt-card-header-row__left"},[s("span",{class:"header-icon"},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}),s("path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"})])]),s("strong",{class:"aksrt-card-header-row__title"},"快速链接")],-1)),t(_(r),{type:"primary",size:"small",onClick:e[18]||(e[18]=a=>G("quick_links"))},{default:l(()=>[...e[66]||(e[66]=[d("+ 添加链接",-1)])]),_:1})])]),default:l(()=>[e[68]||(e[68]=s("p",{class:"section-desc"},"页脚第二列的常用导航链接。",-1)),o.quick_links.length?(m(),h(R,{key:0,columns:oe("quick_links"),data:o.quick_links,"row-key":a=>a.id,bordered:!1,size:"small"},null,8,["columns","data","row-key"])):(m(),h(F,{key:1,description:"暂无快速链接"}))]),_:1})]),_:1}),t(U,{name:"more",tab:"更多链接"},{default:l(()=>[t(C,{class:"aksrt-section-card"},{header:l(()=>[s("div",Ke,[e[70]||(e[70]=s("div",{class:"aksrt-card-header-row__left"},[s("span",{class:"header-icon"},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}),s("path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"})])]),s("strong",{class:"aksrt-card-header-row__title"},"更多链接")],-1)),t(_(r),{type:"primary",size:"small",onClick:e[19]||(e[19]=a=>G("more_links"))},{default:l(()=>[...e[69]||(e[69]=[d("+ 添加链接",-1)])]),_:1})])]),default:l(()=>[e[71]||(e[71]=s("p",{class:"section-desc"},"页脚补充链接区域。",-1)),o.more_links.length?(m(),h(R,{key:0,columns:oe("more_links"),data:o.more_links,"row-key":a=>a.id,bordered:!1,size:"small"},null,8,["columns","data","row-key"])):(m(),h(F,{key:1,description:"暂无更多链接"}))]),_:1})]),_:1}),t(U,{name:"friends",tab:"友情链接"},{default:l(()=>[t(C,{class:"aksrt-section-card"},{header:l(()=>[s("div",et,[s("div",tt,[e[72]||(e[72]=s("span",{class:"header-icon"},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("path",{d:"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"}),s("circle",{cx:"9",cy:"7",r:"4"}),s("path",{d:"M23 21v-2a4 4 0 0 0-3-3.87"}),s("path",{d:"M16 3.13a4 4 0 0 1 0 7.75"})])],-1)),s("strong",ot,"友情链接 ("+Ie($.value.length)+")",1)]),t(_(r),{type:"primary",size:"small",onClick:e[20]||(e[20]=a=>ve())},{default:l(()=>[...e[73]||(e[73]=[d("+ 添加友链",-1)])]),_:1})])]),default:l(()=>[e[74]||(e[74]=s("p",{class:"section-desc"},"站点友情链接列表,支持 Logo 头像、名称、URL 与简短描述。",-1)),$.value.length?(m(),h(R,{key:0,columns:pe,data:$.value,"row-key":a=>a.id,bordered:!1,size:"small"},null,8,["data","row-key"])):(m(),h(F,{key:1,description:"暂无友情链接"}))]),_:1})]),_:1}),t(U,{name:"mini_qr",tab:"二维码图片组"},{default:l(()=>[t(C,{class:"aksrt-section-card"},{header:l(()=>[s("div",lt,[e[76]||(e[76]=s("div",{class:"aksrt-card-header-row__left"},[s("span",{class:"header-icon"},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("rect",{x:"3",y:"3",width:"7",height:"7"}),s("rect",{x:"14",y:"3",width:"7",height:"7"}),s("rect",{x:"14",y:"14",width:"7",height:"7"}),s("rect",{x:"3",y:"14",width:"7",height:"7"})])]),s("strong",{class:"aksrt-card-header-row__title"},"二维码图片组(最多 4 个)")],-1)),t(_(r),{type:"primary",size:"small",disabled:o.footer_mini_img.length>=4,onClick:Ue},{default:l(()=>[...e[75]||(e[75]=[d("+ 添加",-1)])]),_:1},8,["disabled"])])]),default:l(()=>[e[79]||(e[79]=s("p",{class:"section-desc"},"显示在页脚第三列区域,每项含文字描述和二维码图片。",-1)),t(x,{model:o,"label-placement":"left","label-width":"120",class:"aksrt-form"},{default:l(()=>[t(i,{label:"显示设备"},{default:l(()=>[t(J,{value:o.footer_mini_img_m_s,"onUpdate:value":e[21]||(e[21]=a=>o.footer_mini_img_m_s=a)},{default:l(()=>[t(z,null,{default:l(()=>[t(p,{value:"pc",label:"PC"}),t(p,{value:"mobile",label:"移动端"})]),_:1})]),_:1},8,["value"])]),_:1})]),_:1},8,["model"]),(m(!0),q(Se,null,Ve(o.footer_mini_img,(a,j)=>(m(),q("div",{key:j,class:"aksrt-mini-img-row"},[t(z,{align:"center",size:12,style:{width:"100%"}},{default:l(()=>[t(u,{value:a.text,"onUpdate:value":H=>a.text=H,placeholder:"文字描述",style:{width:"160px"}},null,8,["value","onUpdate:value"]),s("div",at,[t(u,{value:a.img,"onUpdate:value":H=>a.img=H,placeholder:"二维码图片 URL",readonly:"",style:{flex:"1"}},null,8,["value","onUpdate:value"]),t(_(r),{size:"small",onClick:H=>qe(j)},{default:l(()=>[...e[77]||(e[77]=[d("选择",-1)])]),_:1},8,["onClick"])]),t(_(r),{size:"small",quaternary:"",type:"error",onClick:H=>ze(j)},{default:l(()=>[...e[78]||(e[78]=[d("删除",-1)])]),_:1},8,["onClick"])]),_:2},1024),a.img?(m(),q("img",{key:0,src:a.img,class:"aksrt-media-preview aksrt-media-preview--sm",alt:a.text||"qr"},null,8,nt)):I("",!0)]))),128)),o.footer_mini_img.length?I("",!0):(m(),h(F,{key:0,description:"暂无二维码图片"}))]),_:1})]),_:1}),t(U,{name:"custom_code",tab:"自定义代码"},{default:l(()=>[t(C,{class:"aksrt-section-card"},{default:l(()=>[e[80]||(e[80]=s("div",{class:"aksrt-section-header"},[s("span",{class:"section-icon"},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("polyline",{points:"16 18 22 12 16 6"}),s("polyline",{points:"8 6 2 12 8 18"})])]),s("h3",null,"底部自定义代码")],-1)),e[81]||(e[81]=s("p",{class:"section-desc"},"插入在页脚底部区域(版权信息之后),支持 HTML。",-1)),t(x,{model:o,"label-placement":"top",class:"aksrt-form"},{default:l(()=>[t(i,{label:"fcode_customize_code"},{default:l(()=>[t(u,{value:o.fcode_customize_code,"onUpdate:value":e[22]||(e[22]=a=>o.fcode_customize_code=a),type:"textarea",rows:6,placeholder:"自定义 HTML 代码,显示在页脚最底部"},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1})]),_:1}),t(U,{name:"misc",tab:"版权与杂项"},{default:l(()=>[t(C,{class:"aksrt-section-card"},{default:l(()=>[e[84]||(e[84]=s("div",{class:"aksrt-section-header"},[s("span",{class:"section-icon"},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[s("circle",{cx:"12",cy:"12",r:"3"}),s("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"})])]),s("h3",null,"其他设置")],-1)),t(x,{model:o,"label-placement":"left","label-width":"140",class:"aksrt-form"},{default:l(()=>[t(i,{label:"页脚布局模板"},{default:l(()=>[t(Me,{value:o.layout_template,"onUpdate:value":e[23]||(e[23]=a=>o.layout_template=a)},{default:l(()=>[t(Le,{value:"template_1"},{default:l(()=>[...e[82]||(e[82]=[d("模板一(Zibll)",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(i,{label:"热门分类数量"},{default:l(()=>[t(z,{align:"center",size:10},{default:l(()=>[t(Fe,{value:o.hot_categories,"onUpdate:value":e[24]||(e[24]=a=>o.hot_categories=a),min:1,max:20,style:{width:"120px"}},null,8,["value"]),e[83]||(e[83]=s("span",{class:"aksrt-hint-text"},"范围 1 - 20",-1))]),_:1})]),_:1}),t(i,{label:"自定义版权文案"},{default:l(()=>[t(u,{value:o.copyright_text,"onUpdate:value":e[25]||(e[25]=a=>o.copyright_text=a),type:"textarea",rows:3,placeholder:"留空则使用默认版权信息"},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1})]),_:1})]),_:1},8,["value"]),s("div",st,[t(_(r),{type:"primary",loading:S.value,onClick:le},{default:l(()=>[...e[85]||(e[85]=[d("保存页脚配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"]),t(V,{show:L.value,"onUpdate:show":e[32]||(e[32]=a=>L.value=a),"mask-closable":!1,preset:"card",title:"编辑联系方式图标",class:"aksrt-modal-card"},{footer:l(()=>[s("div",it,[t(_(r),{onClick:e[31]||(e[31]=a=>L.value=!1)},{default:l(()=>[...e[86]||(e[86]=[d("取消",-1)])]),_:1}),t(_(r),{type:"primary",onClick:ue},{default:l(()=>[...e[87]||(e[87]=[d("保存",-1)])]),_:1})])]),default:l(()=>[t(x,{model:f,"label-placement":"top",class:"aksrt-form"},{default:l(()=>[t(i,{label:"图标类型"},{default:l(()=>[t(Ae,{value:f.icon,"onUpdate:value":e[27]||(e[27]=a=>f.icon=a),options:te,placeholder:"选择图标"},null,8,["value"])]),_:1}),t(i,{label:"链接地址"},{default:l(()=>[t(u,{value:f.url,"onUpdate:value":e[28]||(e[28]=a=>f.url=a),placeholder:"https://..."},null,8,["value"])]),_:1}),t(i,{label:"标题提示"},{default:l(()=>[t(u,{value:f.title,"onUpdate:value":e[29]||(e[29]=a=>f.title=a),placeholder:"鼠标悬停提示文案"},null,8,["value"])]),_:1}),t(i,{label:"启用状态"},{default:l(()=>[t(ne,{value:f.enabled,"onUpdate:value":e[30]||(e[30]=a=>f.enabled=a)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["show"]),t(V,{show:T.value,"onUpdate:show":e[37]||(e[37]=a=>T.value=a),"mask-closable":!1,preset:"card",title:D.value==="quick_links"?"编辑快速链接":"编辑更多链接",class:"aksrt-modal-card"},{footer:l(()=>[s("div",rt,[t(_(r),{onClick:e[36]||(e[36]=a=>T.value=!1)},{default:l(()=>[...e[88]||(e[88]=[d("取消",-1)])]),_:1}),t(_(r),{type:"primary",onClick:me},{default:l(()=>[...e[89]||(e[89]=[d("保存",-1)])]),_:1})])]),default:l(()=>[t(x,{model:g,"label-placement":"top",class:"aksrt-form"},{default:l(()=>[t(i,{label:"链接名称"},{default:l(()=>[t(u,{value:g.name,"onUpdate:value":e[33]||(e[33]=a=>g.name=a),placeholder:"例如:首页"},null,8,["value"])]),_:1}),t(i,{label:"链接地址"},{default:l(()=>[t(u,{value:g.url,"onUpdate:value":e[34]||(e[34]=a=>g.url=a),placeholder:"https:// 或 /path"},null,8,["value"])]),_:1}),t(i,{label:"启用状态"},{default:l(()=>[t(ne,{value:g.enabled,"onUpdate:value":e[35]||(e[35]=a=>g.enabled=a)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["show","title"]),t(V,{show:A.value,"onUpdate:show":e[43]||(e[43]=a=>A.value=a),"mask-closable":!1,preset:"card",title:"添加友情链接",class:"aksrt-modal-card"},{footer:l(()=>[s("div",dt,[t(_(r),{onClick:e[42]||(e[42]=a=>A.value=!1)},{default:l(()=>[...e[90]||(e[90]=[d("取消",-1)])]),_:1}),t(_(r),{type:"primary",loading:X.value,onClick:ke},{default:l(()=>[...e[91]||(e[91]=[d("保存",-1)])]),_:1},8,["loading"])])]),default:l(()=>[t(x,{model:v,"label-placement":"top",class:"aksrt-form"},{default:l(()=>[t(i,{label:"站点名称"},{default:l(()=>[t(u,{value:v.name,"onUpdate:value":e[38]||(e[38]=a=>v.name=a),placeholder:"如:某人的博客"},null,8,["value"])]),_:1}),t(i,{label:"站点 URL"},{default:l(()=>[t(u,{value:v.url,"onUpdate:value":e[39]||(e[39]=a=>v.url=a),placeholder:"https://"},null,8,["value"])]),_:1}),t(i,{label:"Logo 图片 URL"},{default:l(()=>[t(u,{value:v.logo,"onUpdate:value":e[40]||(e[40]=a=>v.logo=a),placeholder:"图标 URL(可选,方形 PNG 推荐)"},null,8,["value"])]),_:1}),t(i,{label:"描述"},{default:l(()=>[t(u,{value:v.description,"onUpdate:value":e[41]||(e[41]=a=>v.description=a),placeholder:"一句话简介(可选)"},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["show"]),t(V,{show:B.value,"onUpdate:show":e[49]||(e[49]=a=>B.value=a),"mask-closable":!1,preset:"card",title:"编辑扩展联系项",class:"aksrt-modal-card"},{footer:l(()=>[s("div",ut,[t(_(r),{onClick:e[48]||(e[48]=a=>B.value=!1)},{default:l(()=>[...e[92]||(e[92]=[d("取消",-1)])]),_:1}),t(_(r),{type:"primary",onClick:xe},{default:l(()=>[...e[93]||(e[93]=[d("保存",-1)])]),_:1})])]),default:l(()=>[t(x,{model:b,"label-placement":"top",class:"aksrt-form"},{default:l(()=>[t(i,{label:"描述"},{default:l(()=>[t(u,{value:b.desc,"onUpdate:value":e[44]||(e[44]=a=>b.desc=a),placeholder:"如:微信公众号"},null,8,["value"])]),_:1}),t(i,{label:"图标类名"},{default:l(()=>[t(u,{value:b.icon,"onUpdate:value":e[45]||(e[45]=a=>b.icon=a),placeholder:"如:fab fa-weixin"},null,8,["value"])]),_:1}),t(i,{label:"链接地址"},{default:l(()=>[t(u,{value:b.link,"onUpdate:value":e[46]||(e[46]=a=>b.link=a),placeholder:"https://..."},null,8,["value"])]),_:1}),t(i,{label:"Hover 图片"},{default:l(()=>[t(u,{value:b.img,"onUpdate:value":e[47]||(e[47]=a=>b.img=a),placeholder:"图片 URL(可选,hover 显示)"},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["show"])])}}},yt=Re(_t,[["__scopeId","data-v-75e6f4e1"]]);export{yt as default};
diff --git a/assets/admin/build/FooterTabbarSettings.RLdsCbkU.js b/assets/admin/build/FooterTabbarSettings.RLdsCbkU.js
deleted file mode 100644
index e0251993..00000000
--- a/assets/admin/build/FooterTabbarSettings.RLdsCbkU.js
+++ /dev/null
@@ -1 +0,0 @@
-import{d as E}from"./vendor-draggable.CceJcfGJ.js";import{a as V}from"./shared-api.D5_fnN32.js";import{P as pe}from"./PageHeader.Di3JTPjc.js";import{_ as fe}from"./index.js";import{u as _e,a as ce,B as b,b as I}from"./vendor-naive.BuHWlEgf.js";import{o as me,X as c,a4 as o,a3 as s,r as C,a1 as _,e as L,W as u,N as f,f as i,Y as n,Z as w,a2 as y,L as j,a5 as g,F as $,R as be,c as ye}from"./vendor-vue.Bykizn0M.js";import"./vendor-misc.1adHN6i_.js";const ge={class:"aksrt-page-container content-page"},ve={class:"aksrt-card-header-row"},ke={class:"aksrt-card-header-row__left"},we={class:"aksrt-card-header-row__title"},he={class:"section-desc section-desc--tight"},xe={class:"tabbar-sort__item"},Te={class:"tabbar-sort__main"},Ue={class:"tabbar-sort__icon"},Ce={class:"tabbar-sort__meta"},$e={class:"tabbar-sort__title-row"},ze={class:"tabbar-sort__desc"},Ie={class:"tabbar-sort__actions"},Ae={class:"aksrt-form-actions"},Fe={class:"icon-preview-row"},De={key:1,class:"muted-text"},Ve={key:5,class:"add-items-editor"},Ne={class:"add-items-editor__head"},Se={class:"add-items-editor__presets"},Pe={key:0,class:"add-items-editor__list"},Be={class:"add-items-editor__row"},Oe={key:1,class:"muted-text"},Me={class:"aksrt-modal-footer"},qe={__name:"FooterTabbarSettings",setup(Ee){const m=_e(),W=ce(),A=C(!0),z=C(!1),T=C(!1),h=C(-1),F=C([]),d=L({enabled:!0,scroll_hide:!1,scroll_down_hide:!0,footer_tabbar_single:"default",items:[]}),a=L({id:"",type:"link",icon:"",text:"",link:"",badge:"",badge_mode:"static",category_id:null,search_default_type:"post",new_window:!1,add_items:[],enabled:!0,sort_order:0,ontop:!1}),H=[{label:"首页",value:"home"},{label:"分类页",value:"category"},{label:"链接",value:"link"},{label:"中央发布按钮",value:"add"},{label:"用户中心",value:"user"},{label:"登录/我的",value:"auth"},{label:"搜索",value:"search"},{label:"消息中心",value:"msg"},{label:"开通会员",value:"pay_vip"},{label:"购物车",value:"shop_cart"}],R={home:"首页",category:"分类页",link:"链接",add:"中央发布按钮",user:"用户中心",auth:"登录/我的",search:"搜索",msg:"消息中心",pay_vip:"开通会员",shop_cart:"购物车"},N={home:{icon:"fas fa-home",text:"首页"},category:{icon:"fas fa-th-large",text:"分类"},link:{icon:"fas fa-link",text:"链接"},add:{icon:"fas fa-plus",text:"发布"},user:{icon:"fas fa-user",text:"用户中心"},auth:{icon:"fas fa-user",text:"我的"},search:{icon:"fas fa-search",text:"搜索"},msg:{icon:"fas fa-bell",text:"消息"},pay_vip:{icon:"fas fa-crown",text:"会员"},shop_cart:{icon:"fas fa-shopping-cart",text:"购物车"}},X=ye(()=>d.items.filter(t=>t.enabled));function Y(t){var e;if(t.type==="home")return t.ontop?"首页按钮,滚动后切换返回顶部":"首页按钮";if(t.type==="category"){if(t.category_id){const r=F.value.find(p=>p.value===t.category_id);return r?`跳转到分类: ${r.label}`:`跳转到分类 ID ${t.category_id}`}return"跳转到分类聚合页"}return t.type==="add"?(e=t.add_items)!=null&&e.length?`展开 ${t.add_items.length} 个发布入口`:"点击后打开默认发布入口":t.type==="search"?`打开顶部搜索面板,默认搜索${t.search_default_type==="category"?"分类":t.search_default_type==="tag"?"标签":"文章"}`:t.type==="user"?"自动跳转到用户中心或登录页":t.type==="auth"?"登录用户显示我的,游客显示登录":t.type==="msg"?"跳转到消息中心页面":t.type==="pay_vip"?t.link||"跳转到会员开通页":t.type==="shop_cart"?t.link||"跳转到购物车页面":t.link||"自定义链接按钮"}const Z=[{label:"写文章",icon:"fas fa-pen-fancy",url:"/post-new"},{label:"投稿页",icon:"fas fa-file-alt",url:"/submit"},{label:"发布资源",icon:"fas fa-cloud-upload-alt",url:"/resource-new"},{label:"创作中心",icon:"fas fa-palette",url:"/creator"}];function G(t){a.add_items.some(e=>e.url===t.url)||a.add_items.push({id:`add_${Date.now()}_${a.add_items.length}`,label:t.label,icon:t.icon,url:t.url})}function J(){a.add_items.push({id:`add_${Date.now()}_${a.add_items.length}`,label:"",icon:"fas fa-pen",url:""})}function K(t){a.add_items.splice(t,1)}function S(){d.items=d.items.map((t,e)=>({...t,sort_order:e}))}function Q(t,e=!1){const r=N[t]||N.link;(e||!a.icon)&&(a.icon=r.icon),(e||!a.text)&&(a.text=r.text),["link","msg","pay_vip","shop_cart"].includes(t)||(a.link=""),t!=="category"&&(a.category_id=null),t!=="search"&&(a.search_default_type="post"),t!=="add"&&(a.add_items=[]),t!=="home"&&(a.ontop=!1)}function ee(t){Q(t,!1)}function ae(){if(d.items.length>=5){m.warning("底部Tab最多只能配置 5 个按钮");return}Object.assign(a,{id:`tab_${Date.now()}`,type:"link",icon:"fas fa-link",text:"链接",link:"",badge:"",badge_mode:"static",category_id:null,search_default_type:"post",new_window:!1,add_items:[],enabled:!0,sort_order:d.items.length,ontop:!1}),h.value=-1,T.value=!0}function te(t){const e=d.items[t];Object.assign(a,{id:e.id,type:e.type||"link",icon:e.icon||"",text:e.text||"",link:e.link||"",badge:e.badge||"",badge_mode:e.badge_mode||"static",category_id:e.category_id||null,search_default_type:e.search_default_type||"post",new_window:!!e.new_window,add_items:Array.isArray(e.add_items)?e.add_items.map(r=>({...r})):[],enabled:e.enabled!==!1,sort_order:e.sort_order??t,ontop:e.ontop||!1}),h.value=t,T.value=!0}function le(){if(h.value<0&&d.items.length>=5){m.warning("底部Tab最多只能配置 5 个按钮");return}if(!a.icon){m.warning("请填写图标");return}if(!a.text){m.warning("请填写显示文字");return}const t={id:a.id||`tab_${Date.now()}`,type:a.type,icon:a.icon,text:a.text,link:["link","msg","pay_vip","shop_cart"].includes(a.type)?a.link:"",badge:(a.badge||"").trim(),badge_mode:a.badge_mode,category_id:a.type==="category"&&a.category_id||0,search_default_type:a.type==="search"?a.search_default_type:"post",new_window:a.type==="link"?!!a.new_window:!1,add_items:a.type==="add"?a.add_items.filter(e=>e.label&&e.url).map(e=>({id:e.id||`add_${Date.now()}`,label:e.label,icon:e.icon||"fas fa-pen",url:e.url})):[],enabled:a.enabled,sort_order:a.sort_order,ontop:a.type==="home"?a.ontop:!1};h.value>=0?d.items[h.value]=t:d.items.push(t),T.value=!1,m.success(h.value>=0?"已更新":"已添加")}async function se(){try{const t=await V.getCategories();t.code==="success"&&Array.isArray(t.data)&&(F.value=t.data.map(e=>({label:e.name,value:Number(e.id)})))}catch(t){console.error("[FooterTabbar] load categories failed:",t)}}function oe(t){W.warning({title:"确认删除",content:`确定删除「${d.items[t].text}」按钮吗?`,positiveText:"删除",negativeText:"取消",onPositiveClick:()=>{d.items.splice(t,1),S(),m.success("已删除")}})}async function ne(){A.value=!0;try{const[t]=await Promise.all([V.getFooterTabbarSettings(),se()]);if(t.code==="success"&&t.data){const e=t.data;d.enabled=e.enabled!==!1,d.scroll_hide=e.scroll_hide||!1,d.scroll_down_hide=e.scroll_down_hide!==!1,d.footer_tabbar_single=e.footer_tabbar_single||"default",d.items=(e.items||[]).map((r,p)=>({...r,badge:r.badge||"",badge_mode:r.badge_mode||"static",category_id:r.category_id||0,search_default_type:r.search_default_type||"post",new_window:!!r.new_window,add_items:Array.isArray(r.add_items)?r.add_items:[],sort_order:r.sort_order??p}))}}catch(t){console.error("[FooterTabbar] load failed:",t),m.error("加载配置失败")}finally{A.value=!1}}async function P(){if(d.items.length>5){m.warning("底部Tab最多只能配置 5 个按钮");return}z.value=!0;try{const t={enabled:d.enabled,scroll_hide:d.scroll_hide,scroll_down_hide:d.scroll_down_hide,footer_tabbar_single:d.footer_tabbar_single,items:d.items.map((r,p)=>({...r,sort_order:p}))},e=await V.saveFooterTabbarSettings(t);e.code==="success"?m.success(e.message||"保存成功"):m.error(e.message||"保存失败")}catch(t){console.error("[FooterTabbar] save failed:",t),m.error("保存失败")}finally{z.value=!1}}return me(ne),(t,e)=>{const r=_("n-switch"),p=_("n-form-item"),D=_("n-select"),B=_("n-form"),O=_("n-card"),de=_("n-empty"),re=_("n-spin"),x=_("n-input"),U=_("n-radio"),M=_("n-space"),q=_("n-radio-group"),ie=_("n-alert"),ue=_("n-modal");return u(),c("div",ge,[o(pe,{title:"底部Tab配置",desc:"自定义移动端底部导航栏的按钮,支持排序、图标配置和返回顶部功能。"},{actions:s(()=>[o(f(b),{type:"primary",loading:z.value,onClick:P},{default:s(()=>[...e[18]||(e[18]=[i("保存",-1)])]),_:1},8,["loading"])]),_:1}),o(re,{show:A.value,style:{width:"100%","min-height":"200px"}},{default:s(()=>[o(O,{class:"aksrt-section-card"},{header:s(()=>[...e[19]||(e[19]=[n("div",{class:"aksrt-card-header-row"},[n("div",{class:"aksrt-card-header-row__left"},[n("span",{class:"header-icon"},[n("i",{class:"fas fa-cog"})]),n("strong",{class:"aksrt-card-header-row__title"},"基础设置")])],-1)])]),default:s(()=>[o(B,{model:d,"label-placement":"left","label-width":"140",class:"aksrt-form"},{default:s(()=>[o(p,{label:"启用底部Tab"},{default:s(()=>[o(r,{value:d.enabled,"onUpdate:value":e[0]||(e[0]=l=>d.enabled=l)},null,8,["value"]),e[20]||(e[20]=n("span",{class:"aksrt-hint-text",style:{"margin-left":"12px"}},"移动端底部导航栏总开关",-1))]),_:1}),o(p,{label:"向下滚动隐藏"},{default:s(()=>[o(r,{value:d.scroll_down_hide,"onUpdate:value":e[1]||(e[1]=l=>d.scroll_down_hide=l)},null,8,["value"]),e[21]||(e[21]=n("span",{class:"aksrt-hint-text",style:{"margin-left":"12px"}},"页面向下滚动时隐藏,向上滚动时显示",-1))]),_:1}),o(p,{label:"文章页专属Tab"},{default:s(()=>[o(D,{value:d.footer_tabbar_single,"onUpdate:value":e[2]||(e[2]=l=>d.footer_tabbar_single=l),options:[{label:"默认按钮",value:"default"},{label:"文章扩展按钮(评论/收藏/分享)",value:"extend"}],style:{width:"240px"}},null,8,["value"]),e[22]||(e[22]=n("span",{class:"aksrt-hint-text",style:{"margin-left":"12px"}},"文章详情页底部显示的Tab按钮类型",-1))]),_:1})]),_:1},8,["model"])]),_:1}),o(O,{class:"aksrt-section-card"},{header:s(()=>[n("div",ve,[n("div",ke,[e[23]||(e[23]=n("span",{class:"header-icon"},[n("i",{class:"fas fa-list-ul"})],-1)),n("strong",we,"Tab按钮配置 ("+w(d.items.length)+")",1)]),o(f(b),{type:"primary",size:"small",onClick:ae},{icon:s(()=>[...e[24]||(e[24]=[n("i",{class:"fas fa-plus"},null,-1)])]),default:s(()=>[e[25]||(e[25]=i(" 添加按钮 ",-1))]),_:1})])]),default:s(()=>[e[32]||(e[32]=n("p",{class:"section-desc"},"配置移动端底部导航栏显示的按钮,支持拖拽排序。建议按钮数量不超过5个。",-1)),n("div",he,"当前已启用 "+w(X.value.length)+" 个按钮,最多允许 5 个。",1),d.items.length?(u(),y(f(E),{key:0,modelValue:d.items,"onUpdate:modelValue":e[3]||(e[3]=l=>d.items=l),"item-key":"id",handle:".tabbar-sort__handle","ghost-class":"tabbar-sort__ghost",animation:"180",class:"tabbar-sort",onEnd:S},{item:s(({element:l,index:v})=>[n("div",xe,[n("div",Te,[e[27]||(e[27]=n("button",{type:"button",class:"tabbar-sort__handle","aria-label":"拖拽排序"},[n("i",{class:"fas fa-grip-vertical"})],-1)),n("span",Ue,[l.icon?(u(),c("i",{key:0,class:j(l.icon)},null,2)):g("",!0)]),n("div",Ce,[n("div",$e,[n("strong",null,w(l.text||"按钮"),1),o(f(I),{size:"small",bordered:!1},{default:s(()=>[i(w(R[l.type]||l.type),1)]),_:2},1024),l.badge?(u(),y(f(I),{key:0,size:"small",type:"error",bordered:!1},{default:s(()=>[i("徽标 "+w(l.badge),1)]),_:2},1024)):g("",!0),l.type==="home"&&l.ontop?(u(),y(f(I),{key:1,size:"small",type:"success",bordered:!1},{default:s(()=>[...e[26]||(e[26]=[i("返回顶部",-1)])]),_:1})):g("",!0),o(f(I),{size:"small",type:l.enabled?"success":"default",bordered:!1},{default:s(()=>[i(w(l.enabled?"启用":"禁用"),1)]),_:2},1032,["type"])]),n("div",ze,w(Y(l)),1)])]),n("div",Ie,[o(f(b),{size:"tiny",quaternary:"",type:"primary",onClick:k=>te(v)},{icon:s(()=>[...e[28]||(e[28]=[n("i",{class:"fas fa-edit",style:{"font-size":"12px"}},null,-1)])]),default:s(()=>[e[29]||(e[29]=i(" 编辑 ",-1))]),_:1},8,["onClick"]),o(f(b),{size:"tiny",quaternary:"",type:"error",onClick:k=>oe(v)},{icon:s(()=>[...e[30]||(e[30]=[n("i",{class:"fas fa-trash-alt",style:{"font-size":"12px"}},null,-1)])]),default:s(()=>[e[31]||(e[31]=i(" 删除 ",-1))]),_:1},8,["onClick"])])])]),_:1},8,["modelValue"])):(u(),y(de,{key:1,description:"暂无Tab按钮,请点击上方按钮添加"}))]),_:1}),n("div",Ae,[o(f(b),{type:"primary",loading:z.value,onClick:P},{default:s(()=>[...e[33]||(e[33]=[i("保存底部Tab配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"]),o(ue,{show:T.value,"onUpdate:show":e[17]||(e[17]=l=>T.value=l),"mask-closable":!1,preset:"card",title:h.value>=0?"编辑Tab按钮":"添加Tab按钮",class:"aksrt-modal-card",style:{"max-width":"520px"}},{footer:s(()=>[n("div",Me,[o(f(b),{onClick:e[16]||(e[16]=l=>T.value=!1)},{default:s(()=>[...e[48]||(e[48]=[i("取消",-1)])]),_:1}),o(f(b),{type:"primary",onClick:le},{default:s(()=>[...e[49]||(e[49]=[i("保存",-1)])]),_:1})])]),default:s(()=>[o(B,{model:a,"label-placement":"top",class:"aksrt-form"},{default:s(()=>[o(p,{label:"按钮类型"},{default:s(()=>[o(D,{value:a.type,"onUpdate:value":[e[4]||(e[4]=l=>a.type=l),ee],options:H,placeholder:"选择按钮类型"},null,8,["value"])]),_:1}),o(p,{label:"图标 (Font Awesome)"},{feedback:s(()=>[n("div",Fe,[e[34]||(e[34]=n("span",null,"预览:",-1)),a.icon?(u(),c("i",{key:0,class:j(a.icon),style:{"font-size":"20px"}},null,2)):(u(),c("span",De,"无图标")),e[35]||(e[35]=n("a",{href:"https://fontawesome.com/search?m=free",target:"_blank",rel:"noopener",style:{"margin-left":"12px"}},[n("i",{class:"fas fa-external-link-alt"}),i(" Font Awesome 图标库 ")],-1))])]),default:s(()=>[o(x,{value:a.icon,"onUpdate:value":e[5]||(e[5]=l=>a.icon=l),placeholder:"例如: fas fa-home"},null,8,["value"])]),_:1}),o(p,{label:"显示文字"},{default:s(()=>[o(x,{value:a.text,"onUpdate:value":e[6]||(e[6]=l=>a.text=l),placeholder:"例如: 首页"},null,8,["value"])]),_:1}),o(p,{label:"徽标文本"},{default:s(()=>[o(x,{value:a.badge,"onUpdate:value":e[7]||(e[7]=l=>a.badge=l),placeholder:"例如: NEW, 9+,留空不显示",maxlength:"4"},null,8,["value"])]),_:1}),o(p,{label:"徽标模式"},{default:s(()=>[o(q,{value:a.badge_mode,"onUpdate:value":e[8]||(e[8]=l=>a.badge_mode=l)},{default:s(()=>[o(M,null,{default:s(()=>[o(U,{value:"static"},{default:s(()=>[...e[36]||(e[36]=[i("静态文本",-1)])]),_:1}),o(U,{value:"dynamic"},{default:s(()=>[...e[37]||(e[37]=[i("动态徽标",-1)])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1}),a.badge_mode==="dynamic"?(u(),y(ie,{key:0,type:"info","show-icon":!1,style:{"margin-bottom":"16px"}},{default:s(()=>[a.type==="auth"?(u(),c($,{key:0},[i("未登录时显示提醒徽标,登录后自动隐藏。")],64)):a.type==="user"?(u(),c($,{key:1},[i("登录用户显示评论数徽标,游客不显示。")],64)):a.type==="search"?(u(),c($,{key:2},[i("搜索结果页显示 ON 徽标,其它页面隐藏。")],64)):(u(),c($,{key:3},[i("当前类型不提供动态徽标,前端将回退为静态徽标。")],64))]),_:1})):g("",!0),a.type==="category"?(u(),y(p,{key:1,label:"指定分类"},{default:s(()=>[o(D,{value:a.category_id,"onUpdate:value":e[9]||(e[9]=l=>a.category_id=l),options:F.value,placeholder:"留空则跳转分类聚合页",clearable:"",filterable:""},null,8,["value","options"])]),_:1})):g("",!0),a.type==="search"?(u(),y(p,{key:2,label:"默认搜索类型"},{default:s(()=>[o(q,{value:a.search_default_type,"onUpdate:value":e[10]||(e[10]=l=>a.search_default_type=l)},{default:s(()=>[o(M,null,{default:s(()=>[o(U,{value:"post"},{default:s(()=>[...e[38]||(e[38]=[i("文章",-1)])]),_:1}),o(U,{value:"category"},{default:s(()=>[...e[39]||(e[39]=[i("分类",-1)])]),_:1}),o(U,{value:"tag"},{default:s(()=>[...e[40]||(e[40]=[i("标签",-1)])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1})):g("",!0),["link","msg","pay_vip","shop_cart"].includes(a.type)?(u(),y(p,{key:3,label:"链接地址"},{default:s(()=>[o(x,{value:a.link,"onUpdate:value":e[11]||(e[11]=l=>a.link=l),placeholder:a.type==="msg"?"留空使用默认消息中心地址":a.type==="pay_vip"?"留空使用默认会员页地址":a.type==="shop_cart"?"留空使用默认购物车地址":"https:// 或 /path"},null,8,["value","placeholder"])]),_:1})):g("",!0),a.type==="link"?(u(),y(p,{key:4,label:"新窗口打开"},{default:s(()=>[o(r,{value:a.new_window,"onUpdate:value":e[12]||(e[12]=l=>a.new_window=l)},null,8,["value"])]),_:1})):g("",!0),a.type==="add"?(u(),c("div",Ve,[n("div",Ne,[e[43]||(e[43]=n("strong",null,"发布菜单项",-1)),o(f(b),{size:"small",type:"primary",onClick:J},{icon:s(()=>[...e[41]||(e[41]=[n("i",{class:"fas fa-plus"},null,-1)])]),default:s(()=>[e[42]||(e[42]=i(" 添加子项 ",-1))]),_:1})]),n("div",Se,[e[44]||(e[44]=n("span",{class:"add-items-editor__presets-label"},"快速添加:",-1)),(u(),c($,null,be(Z,l=>o(f(b),{key:l.url,size:"tiny",secondary:"",type:a.add_items.some(v=>v.url===l.url)?"success":"default",disabled:a.add_items.some(v=>v.url===l.url),onClick:v=>G(l)},{default:s(()=>[i(w(l.label),1)]),_:2},1032,["type","disabled","onClick"])),64))]),a.add_items.length?(u(),c("div",Pe,[o(f(E),{modelValue:a.add_items,"onUpdate:modelValue":e[13]||(e[13]=l=>a.add_items=l),"item-key":"id",handle:".add-items-editor__drag","ghost-class":"add-items-editor__ghost",animation:"180"},{item:s(({element:l,index:v})=>[n("div",Be,[e[46]||(e[46]=n("button",{type:"button",class:"add-items-editor__drag","aria-label":"拖拽排序"},[n("i",{class:"fas fa-grip-vertical"})],-1)),o(x,{value:l.label,"onUpdate:value":k=>l.label=k,placeholder:"名称,例如:写文章"},null,8,["value","onUpdate:value"]),o(x,{value:l.icon,"onUpdate:value":k=>l.icon=k,placeholder:"图标,例如:fas fa-pen"},null,8,["value","onUpdate:value"]),o(x,{value:l.url,"onUpdate:value":k=>l.url=k,placeholder:"链接,例如:/wp-admin/post-new.php"},null,8,["value","onUpdate:value"]),o(f(b),{quaternary:"",type:"error",onClick:k=>K(v)},{icon:s(()=>[...e[45]||(e[45]=[n("i",{class:"fas fa-trash-alt"},null,-1)])]),_:1},8,["onClick"])])]),_:1},8,["modelValue"])])):(u(),c("div",Oe,"当前没有子项,前端将回退为默认发布入口。"))])):g("",!0),a.type==="home"?(u(),y(p,{key:6,label:"返回顶部功能"},{default:s(()=>[o(r,{value:a.ontop,"onUpdate:value":e[14]||(e[14]=l=>a.ontop=l)},null,8,["value"]),e[47]||(e[47]=n("span",{class:"aksrt-hint-text",style:{"margin-left":"12px"}},"页面滚动后切换为返回顶部按钮",-1))]),_:1})):g("",!0),o(p,{label:"启用状态"},{default:s(()=>[o(r,{value:a.enabled,"onUpdate:value":e[15]||(e[15]=l=>a.enabled=l)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["show","title"])])}}},Ze=fe(qe,[["__scopeId","data-v-13ae8f9c"]]);export{Ze as default};
diff --git a/assets/admin/build/FooterTabbarSettings.css b/assets/admin/build/FooterTabbarSettings.css
deleted file mode 100644
index ee267ace..00000000
--- a/assets/admin/build/FooterTabbarSettings.css
+++ /dev/null
@@ -1 +0,0 @@
-.icon-preview-row[data-v-13ae8f9c]{display:flex;align-items:center;gap:8px;margin-top:4px;font-size:13px}.icon-preview-row a[data-v-13ae8f9c]{color:var(--n-primary-color);text-decoration:none}.icon-preview-row a[data-v-13ae8f9c]:hover{text-decoration:underline}.muted-text[data-v-13ae8f9c]{color:#999;font-size:12px}.aksrt-modal-footer[data-v-13ae8f9c]{display:flex;justify-content:flex-end;gap:10px}.section-desc[data-v-13ae8f9c]{color:var(--n-text-color-3);font-size:13px;margin:0 0 16px}.section-desc--tight[data-v-13ae8f9c]{margin-top:-6px}.add-items-editor[data-v-13ae8f9c]{margin-bottom:16px}.add-items-editor__head[data-v-13ae8f9c]{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.add-items-editor__presets[data-v-13ae8f9c]{display:flex;align-items:center;gap:6px;margin-bottom:12px;flex-wrap:wrap}.add-items-editor__presets-label[data-v-13ae8f9c]{font-size:12px;color:var(--n-text-color-3, #999)}.add-items-editor__list[data-v-13ae8f9c]{display:flex;flex-direction:column;gap:10px}.add-items-editor__row[data-v-13ae8f9c]{display:grid;grid-template-columns:32px 1fr 1fr 1.2fr 40px;gap:8px;align-items:center}.add-items-editor__drag[data-v-13ae8f9c]{width:32px;height:32px;border:0;border-radius:10px;background:#f3f5f7;color:#6b7280;cursor:grab}.add-items-editor__ghost[data-v-13ae8f9c]{opacity:.5}.tabbar-sort[data-v-13ae8f9c]{display:flex;flex-direction:column;gap:12px}.tabbar-sort__item[data-v-13ae8f9c]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border:1px solid var(--n-border-color);border-radius:14px;background:#fff}.tabbar-sort__main[data-v-13ae8f9c]{min-width:0;display:flex;align-items:center;gap:12px;flex:1}.tabbar-sort__handle[data-v-13ae8f9c]{width:32px;height:32px;border:0;border-radius:10px;background:#f3f5f7;color:#6b7280;cursor:grab}.tabbar-sort__icon[data-v-13ae8f9c]{width:38px;height:38px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;background:#18a0581f;color:#18a058;font-size:18px;flex:0 0 auto}.tabbar-sort__meta[data-v-13ae8f9c]{min-width:0;flex:1}.tabbar-sort__title-row[data-v-13ae8f9c]{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:4px}.tabbar-sort__desc[data-v-13ae8f9c]{color:var(--n-text-color-3);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabbar-sort__actions[data-v-13ae8f9c]{display:flex;gap:6px;flex:0 0 auto}.tabbar-sort__ghost[data-v-13ae8f9c]{opacity:.5}@media(max-width:1023px){.tabbar-sort__item[data-v-13ae8f9c]{flex-direction:column;align-items:stretch}.tabbar-sort__actions[data-v-13ae8f9c]{justify-content:flex-end}.add-items-editor__row[data-v-13ae8f9c]{grid-template-columns:32px 1fr}}
diff --git a/assets/admin/build/HeroManager.css b/assets/admin/build/HeroManager.css
deleted file mode 100644
index cb171ed1..00000000
--- a/assets/admin/build/HeroManager.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-inline-setting[data-v-2bdc0f38]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.aksrt-inline-setting__hint[data-v-2bdc0f38]{color:#7a7f8a;font-size:13px}.aksrt-inline-setting__actions[data-v-2bdc0f38]{display:flex;justify-content:flex-end}.aksrt-modal-preview[data-v-2bdc0f38]{margin:-8px 0 18px;border-radius:8px;overflow:hidden;border:1px solid #eef1f6}.aksrt-modal-grid[data-v-2bdc0f38]{display:grid;grid-template-columns:1fr 1fr;gap:14px}.aksrt-layer-item[data-v-2bdc0f38]{border:1px solid #eef1f6;border-radius:8px;padding:14px;margin-bottom:10px;background:#fafbfc}.aksrt-layer-item__header[data-v-2bdc0f38]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.aksrt-modal-footer[data-v-2bdc0f38]{display:flex;justify-content:flex-end;gap:10px}@media(max-width:768px){.aksrt-modal-grid[data-v-2bdc0f38]{grid-template-columns:1fr}}
diff --git a/assets/admin/build/HeroManager.sfaSC084.js b/assets/admin/build/HeroManager.sfaSC084.js
deleted file mode 100644
index 90c712ca..00000000
--- a/assets/admin/build/HeroManager.sfaSC084.js
+++ /dev/null
@@ -1 +0,0 @@
-import{o as de,X as w,a4 as t,a3 as a,a1 as r,r as b,_ as ve,W as g,Y as u,N as _,f as i,a2 as N,Z as $,a5 as P,F as pe,R as _e,k as m}from"./vendor-vue.Bykizn0M.js";import{a as x}from"./shared-api.D5_fnN32.js";import{o as j}from"./media.BHNcAGK-.js";import{P as me}from"./PageHeader.Di3JTPjc.js";import{_ as fe}from"./index.js";import{u as ge,a as ce,B as p,d as D,b as T}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const be={class:"aksrt-page-container content-page"},ye={class:"aksrt-card-header-row"},ke={class:"aksrt-inline-setting"},xe={class:"aksrt-inline-setting__actions"},we={class:"aksrt-card-header-row"},he={class:"aksrt-card-header-row__left"},Ue={class:"header-icon"},He={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",style:{width:"18px",height:"18px"},"aria-hidden":"true"},ze={class:"aksrt-card-header-row__title"},Ce={key:0,class:"aksrt-modal-preview"},Ne={class:"aksrt-modal-grid"},Se={class:"aksrt-modal-grid"},Le={class:"aksrt-layer-item__header"},Be={class:"aksrt-modal-grid"},Me={class:"aksrt-modal-footer"},Pe={__name:"HeroManager",setup(Te){const q=ve(),v=ge(),A=ce();function W(){q.push("/page-display/header-components")}const S=b(!0),L=b(!1),h=b(!1),U=b(!1),H=b([]),z=b(!0),k=b(!1),n=b(R());function R(){return{id:0,title:"",subtitle:"",description:"",image_url:"",video_url:"",link_url:"",link_target:"_self",text_align:"left",device_visibility:"all",enabled:!0,show_text:!0,show_meta:!1,sort_order:0,text_size_pc:"",text_size_m:"",text_parallax:!1,layers:[]}}const X=[{title:"预览",key:"image_url",width:90,render(l){return l.image_url?m(D,{src:l.image_url,width:64,height:36,objectFit:"cover",previewSrc:l.image_url,style:"border-radius:4px;display:block;"}):m("span",{style:"color:#bbb;font-size:12px;"},"无")}},{title:"标题",key:"title",ellipsis:{tooltip:!0},render(l){return l.title||m("span",{style:"color:#bbb;"},"未命名")}},{title:"文字",key:"show_text",width:70,className:"aksrt-table-mobile-hide",render(l){return m(T,{size:"small",type:l.show_text?"info":"default"},{default:()=>l.show_text?"显示":"隐藏"})}},{title:"元信息",key:"show_meta",width:78,className:"aksrt-table-mobile-hide",render(l){return m(T,{size:"small",type:l.show_meta?"info":"default"},{default:()=>l.show_meta?"显示":"隐藏"})}},{title:"跳转",key:"link_url",ellipsis:{tooltip:!0},className:"aksrt-table-mobile-hide",render(l){return l.link_url||m("span",{style:"color:#bbb;font-size:12px;"},"—")}},{title:"排序",key:"sort_order",width:64,className:"aksrt-table-mobile-hide"},{title:"状态",key:"enabled",width:84,render(l){return m(T,{size:"small",type:l.enabled?"success":"default"},{default:()=>l.enabled?"启用":"禁用"})}},{title:"操作",key:"actions",width:130,render(l){return m("div",{style:"display:flex;gap:6px;"},[m(p,{size:"tiny",onClick:()=>J(l)},{default:()=>"编辑"}),m(p,{size:"tiny",type:"error",quaternary:!0,onClick:()=>te(l)},{default:()=>"删除"})])}}];async function B(){try{S.value=!0;const l=await x.getHeroes();l.code==="success"&&(H.value=l.data||[])}catch(l){v.error(l.message||"加载失败")}finally{S.value=!1}}async function Y(){h.value=!0;try{const l=await x.getHomepageSettings(),e=(l==null?void 0:l.data)||{};z.value=e.homepage_module_hero_enabled!==!1}catch(l){v.error(l.message||"加载 Hero 开关失败")}finally{h.value=!1}}async function Z(){U.value=!0;try{const l=await x.saveHomepageSettings({homepage_module_hero_enabled:z.value});if((l==null?void 0:l.code)==="success"){v.success("Hero 开关已保存");return}throw new Error((l==null?void 0:l.message)||"保存 Hero 开关失败")}catch(l){v.error(l.message||"保存 Hero 开关失败")}finally{U.value=!1}}function G(){n.value=R(),k.value=!0}function J(l){n.value={id:l.id,title:l.title||"",subtitle:l.subtitle||"",description:l.description||"",image_url:l.image_url||"",video_url:l.video_url||"",link_url:l.link_url||"",link_target:l.link_target||"_self",text_align:l.text_align||"left",device_visibility:l.device_visibility||"all",show_text:l.show_text!==!1,enabled:!!l.enabled,show_meta:l.show_meta===!0,sort_order:Number(l.sort_order)||0,text_size_pc:l.text_size_pc||"",text_size_m:l.text_size_m||"",text_parallax:!!l.text_parallax,layers:Array.isArray(l.layers)?l.layers:[]},k.value=!0}async function K(){try{const l=await j({title:"选择 Hero 背景图",buttonText:"使用这张 Hero 图"});l!=null&&l.url&&(n.value.image_url=l.url)}catch(l){v.error(l.message||"打开媒体库失败")}}function O(){n.value.layers.push({image:"",free_size:!1,align:"center",parallax:!1,parallax_scale:.3,parallax_opacity:.6})}function Q(l){n.value.layers.splice(l,1)}async function ee(l){try{const e=await j({title:"选择图层图片",buttonText:"使用这张图"});e!=null&&e.url&&(n.value.layers[l].image=e.url)}catch(e){v.error(e.message||"打开媒体库失败")}}async function le(){if(!n.value.image_url){v.warning("请填写 Hero 背景图");return}L.value=!0;try{n.value.id?(await x.updateHero(n.value.id,n.value),v.success("已保存")):(await x.createHero(n.value),v.success("已添加")),k.value=!1,await B()}catch(l){v.error(l.message||"保存失败")}finally{L.value=!1}}function te(l){A.warning({title:"确认删除",content:`确定删除 Hero「${l.title||"未命名"}」?`,positiveText:"删除",negativeText:"取消",onPositiveClick:async()=>{try{await x.deleteHero(l.id),v.success("已删除"),await B()}catch(e){v.error(e.message||"删除失败")}}})}return de(()=>{B(),Y()}),(l,e)=>{const y=r("n-switch"),o=r("n-form-item"),E=r("n-form"),F=r("n-card"),ae=r("n-data-table"),se=r("n-empty"),ne=r("n-spin"),f=r("n-input"),I=r("n-input-group"),c=r("n-radio-button"),M=r("n-radio-group"),oe=r("n-input-number"),ue=r("n-divider"),ie=r("n-select"),V=r("n-slider"),re=r("n-modal");return g(),w("div",be,[t(me,{title:"Hero 轮播管理",desc:"管理首页 Hero 幻灯片内容(图片/视频、文案、图层、跳转)。标题、副标题可留空。"}),t(F,{class:"aksrt-section-card",style:{"margin-bottom":"16px"}},{header:a(()=>[u("div",ye,[e[20]||(e[20]=u("strong",null,"Hero 显示开关",-1)),t(_(p),{size:"small",secondary:"",onClick:W},{default:a(()=>[...e[19]||(e[19]=[i("顶部多功能组件(搜索/卡片/轮播参数)",-1)])]),_:1})])]),default:a(()=>[t(E,{"label-placement":"left","label-width":"160",class:"aksrt-form"},{default:a(()=>[t(o,{label:"显示首页 Hero"},{default:a(()=>[u("div",ke,[t(y,{value:z.value,"onUpdate:value":e[0]||(e[0]=s=>z.value=s),disabled:h.value||U.value},null,8,["value","disabled"]),e[21]||(e[21]=u("span",{class:"aksrt-inline-setting__hint"},"关闭后,首页 Hero 区块将不再渲染。",-1))])]),_:1})]),_:1}),u("div",xe,[t(_(p),{type:"primary",loading:U.value,disabled:h.value,onClick:Z},{default:a(()=>[...e[22]||(e[22]=[i("保存 Hero 开关",-1)])]),_:1},8,["loading","disabled"])])]),_:1}),t(ne,{show:S.value,style:{width:"100%","min-height":"200px"}},{default:a(()=>[t(F,{class:"aksrt-section-card"},{header:a(()=>[u("div",we,[u("div",he,[u("span",Ue,[(g(),w("svg",He,[...e[23]||(e[23]=[u("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2"},null,-1),u("circle",{cx:"9",cy:"9",r:"2"},null,-1),u("path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"},null,-1)])]))]),u("strong",ze,"Hero 列表 ("+$(H.value.length)+")",1)]),t(_(p),{type:"primary",size:"small",onClick:G},{default:a(()=>[...e[24]||(e[24]=[i("+ 添加 Hero",-1)])]),_:1})])]),default:a(()=>[H.value.length?(g(),N(ae,{key:0,columns:X,data:H.value,"row-key":s=>s.id,bordered:!1,size:"small"},null,8,["data","row-key"])):(g(),N(se,{key:1,description:"暂无 Hero,添加后首页即可使用。"}))]),_:1})]),_:1},8,["show"]),t(re,{show:k.value,"onUpdate:show":e[18]||(e[18]=s=>k.value=s),"mask-closable":!1,preset:"card",title:n.value.id?"编辑 Hero":"添加 Hero",class:"aksrt-modal-card"},{footer:a(()=>[u("div",Me,[t(_(p),{onClick:e[17]||(e[17]=s=>k.value=!1)},{default:a(()=>[...e[38]||(e[38]=[i("取消",-1)])]),_:1}),t(_(p),{type:"primary",loading:L.value,onClick:le},{default:a(()=>[...e[39]||(e[39]=[i("保存",-1)])]),_:1},8,["loading"])])]),default:a(()=>[t(E,{model:n.value,"label-placement":"top",class:"aksrt-form"},{default:a(()=>[t(o,{label:"标题"},{default:a(()=>[t(f,{value:n.value.title,"onUpdate:value":e[1]||(e[1]=s=>n.value.title=s),placeholder:"可选,主标题"},null,8,["value"])]),_:1}),t(o,{label:"副标题"},{default:a(()=>[t(f,{value:n.value.subtitle,"onUpdate:value":e[2]||(e[2]=s=>n.value.subtitle=s),placeholder:"可选,副标题"},null,8,["value"])]),_:1}),t(o,{label:"背景图 URL"},{default:a(()=>[t(I,null,{default:a(()=>[t(f,{value:n.value.image_url,"onUpdate:value":e[3]||(e[3]=s=>n.value.image_url=s),placeholder:"https://..."},null,8,["value"]),t(_(p),{secondary:"",onClick:K},{default:a(()=>[...e[25]||(e[25]=[i("媒体库",-1)])]),_:1})]),_:1})]),_:1}),n.value.image_url?(g(),w("div",Ce,[t(_(D),{src:n.value.image_url,width:"100%",height:"160","object-fit":"cover","preview-src":n.value.image_url},null,8,["src","preview-src"])])):P("",!0),t(o,{label:"跳转链接"},{default:a(()=>[t(f,{value:n.value.link_url,"onUpdate:value":e[4]||(e[4]=s=>n.value.link_url=s),placeholder:"点击后跳转地址,可留空"},null,8,["value"])]),_:1}),t(o,{label:"描述文字"},{default:a(()=>[t(f,{value:n.value.description,"onUpdate:value":e[5]||(e[5]=s=>n.value.description=s),type:"textarea",rows:2,placeholder:"可选,显示在副标题下方"},null,8,["value"])]),_:1}),t(o,{label:"视频背景 URL"},{default:a(()=>[t(f,{value:n.value.video_url,"onUpdate:value":e[6]||(e[6]=s=>n.value.video_url=s),placeholder:"可选,MP4 视频地址替代背景图"},null,8,["value"])]),_:1}),u("div",Ne,[t(o,{label:"链接打开方式"},{default:a(()=>[t(M,{value:n.value.link_target,"onUpdate:value":e[7]||(e[7]=s=>n.value.link_target=s)},{default:a(()=>[t(c,{value:"_self"},{default:a(()=>[...e[26]||(e[26]=[i("当前窗口",-1)])]),_:1}),t(c,{value:"_blank"},{default:a(()=>[...e[27]||(e[27]=[i("新窗口",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(o,{label:"文字对齐"},{default:a(()=>[t(M,{value:n.value.text_align,"onUpdate:value":e[8]||(e[8]=s=>n.value.text_align=s)},{default:a(()=>[t(c,{value:"left"},{default:a(()=>[...e[28]||(e[28]=[i("左",-1)])]),_:1}),t(c,{value:"center"},{default:a(()=>[...e[29]||(e[29]=[i("居中",-1)])]),_:1}),t(c,{value:"right"},{default:a(()=>[...e[30]||(e[30]=[i("右",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(o,{label:"设备可见性"},{default:a(()=>[t(M,{value:n.value.device_visibility,"onUpdate:value":e[9]||(e[9]=s=>n.value.device_visibility=s)},{default:a(()=>[t(c,{value:"all"},{default:a(()=>[...e[31]||(e[31]=[i("全部",-1)])]),_:1}),t(c,{value:"pc"},{default:a(()=>[...e[32]||(e[32]=[i("仅电脑",-1)])]),_:1}),t(c,{value:"mobile"},{default:a(()=>[...e[33]||(e[33]=[i("仅移动",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),t(o,{label:"文字视差"},{default:a(()=>[t(y,{value:n.value.text_parallax,"onUpdate:value":e[10]||(e[10]=s=>n.value.text_parallax=s)},null,8,["value"])]),_:1}),t(o,{label:"文字大小(PC)"},{default:a(()=>[t(f,{value:n.value.text_size_pc,"onUpdate:value":e[11]||(e[11]=s=>n.value.text_size_pc=s),placeholder:"如 48px,留空默认"},null,8,["value"])]),_:1}),t(o,{label:"文字大小(移动)"},{default:a(()=>[t(f,{value:n.value.text_size_m,"onUpdate:value":e[12]||(e[12]=s=>n.value.text_size_m=s),placeholder:"如 28px,留空默认"},null,8,["value"])]),_:1})]),u("div",Se,[t(o,{label:"显示文字"},{default:a(()=>[t(y,{value:n.value.show_text,"onUpdate:value":e[13]||(e[13]=s=>n.value.show_text=s)},null,8,["value"])]),_:1}),t(o,{label:"排序"},{default:a(()=>[t(oe,{value:n.value.sort_order,"onUpdate:value":e[14]||(e[14]=s=>n.value.sort_order=s),min:0,style:{width:"100%"}},null,8,["value"])]),_:1}),t(o,{label:"启用"},{default:a(()=>[t(y,{value:n.value.enabled,"onUpdate:value":e[15]||(e[15]=s=>n.value.enabled=s)},null,8,["value"])]),_:1}),t(o,{label:"显示元信息"},{default:a(()=>[t(y,{value:n.value.show_meta,"onUpdate:value":e[16]||(e[16]=s=>n.value.show_meta=s)},null,8,["value"])]),_:1})]),t(ue,{"title-placement":"left",style:{margin:"16px 0 12px"}},{default:a(()=>[...e[34]||(e[34]=[i(" 图片图层(视差叠加) ",-1)])]),_:1}),(g(!0),w(pe,null,_e(n.value.layers,(s,C)=>(g(),w("div",{key:C,class:"aksrt-layer-item"},[u("div",Le,[u("strong",null,"图层 "+$(C+1),1),t(_(p),{size:"tiny",type:"error",quaternary:"",onClick:d=>Q(C)},{default:a(()=>[...e[35]||(e[35]=[i("删除",-1)])]),_:1},8,["onClick"])]),t(o,{label:"图片"},{default:a(()=>[t(I,null,{default:a(()=>[t(f,{value:s.image,"onUpdate:value":d=>s.image=d,placeholder:"图片 URL"},null,8,["value","onUpdate:value"]),t(_(p),{secondary:"",onClick:d=>ee(C)},{default:a(()=>[...e[36]||(e[36]=[i("媒体库",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:2},1024),u("div",Be,[t(o,{label:"原始尺寸"},{default:a(()=>[t(y,{value:s.free_size,"onUpdate:value":d=>s.free_size=d},null,8,["value","onUpdate:value"])]),_:2},1024),t(o,{label:"对齐方式"},{default:a(()=>[t(ie,{value:s.align,"onUpdate:value":d=>s.align=d,options:[{label:"居中",value:"center"},{label:"左上",value:"left top"},{label:"右上",value:"right top"},{label:"左下",value:"left bottom"},{label:"右下",value:"right bottom"}]},null,8,["value","onUpdate:value"])]),_:2},1024),t(o,{label:"视差"},{default:a(()=>[t(y,{value:s.parallax,"onUpdate:value":d=>s.parallax=d},null,8,["value","onUpdate:value"])]),_:2},1024),s.parallax?(g(),N(o,{key:0,label:"视差强度"},{default:a(()=>[t(V,{value:s.parallax_scale,"onUpdate:value":d=>s.parallax_scale=d,min:0,max:1,step:.05},null,8,["value","onUpdate:value"])]),_:2},1024)):P("",!0),s.parallax?(g(),N(o,{key:1,label:"视差透明度"},{default:a(()=>[t(V,{value:s.parallax_opacity,"onUpdate:value":d=>s.parallax_opacity=d,min:0,max:1,step:.05},null,8,["value","onUpdate:value"])]),_:2},1024)):P("",!0)])]))),128)),t(_(p),{size:"small",dashed:"",block:"",onClick:O,style:{"margin-top":"8px"}},{default:a(()=>[...e[37]||(e[37]=[i("+ 添加图层",-1)])]),_:1})]),_:1},8,["model"])]),_:1},8,["show","title"])])}}},De=fe(Pe,[["__scopeId","data-v-2bdc0f38"]]);export{De as default};
diff --git a/assets/admin/build/HomepageSettings.css b/assets/admin/build/HomepageSettings.css
deleted file mode 100644
index 1935e0f3..00000000
--- a/assets/admin/build/HomepageSettings.css
+++ /dev/null
@@ -1 +0,0 @@
-.homepage-settings__empty-tabs[data-v-ae4c5b65]{padding:24px;text-align:center;border:1px dashed var(--n-border-color);border-radius:4px;margin-bottom:12px}.homepage-settings__tab-row[data-v-ae4c5b65]{margin-bottom:8px}.homepage-settings__tab-fields[data-v-ae4c5b65]{display:flex;gap:8px;align-items:center}.aksrt-form-actions[data-v-ae4c5b65]{margin-top:16px;text-align:right}
diff --git a/assets/admin/build/HomepageSettings.iKd6UZP-.js b/assets/admin/build/HomepageSettings.iKd6UZP-.js
deleted file mode 100644
index 402b3449..00000000
--- a/assets/admin/build/HomepageSettings.iKd6UZP-.js
+++ /dev/null
@@ -1 +0,0 @@
-import{o as Y,X as w,a4 as t,a3 as a,Y as i,r as U,a1 as _,e as G,_ as K,W as f,f as d,a2 as F,a5 as H,F as Q,R as ee,N as I,c as M}from"./vendor-vue.Bykizn0M.js";import{a as S}from"./shared-api.D5_fnN32.js";import{P as te}from"./PageHeader.Di3JTPjc.js";import{_ as ae}from"./index.js";import{u as le}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const oe={class:"aksrt-page-container content-page"},se={style:{display:"flex","align-items":"center","justify-content":"space-between"}},ne={key:0,class:"homepage-settings__empty-tabs"},_e={class:"homepage-settings__tab-fields"},re={class:"aksrt-form-actions"},ie={__name:"HomepageSettings",setup(de){const A=K(),T=le(),v=U(!0),y=U(!1),$=U("stream"),B=U([]),C=[{label:"最近更新",value:"modified"},{label:"发布时间",value:"date"},{label:"浏览量",value:"views"},{label:"点赞数",value:"likes"},{label:"评论数",value:"comments"},{label:"收藏数",value:"favorites"},{label:"下载量",value:"downloads"},{label:"随机",value:"rand"}],l=G({home_posts_list_s:!0,home_list1_orderby_s:!0,home_list1_orderby_option:{orderby:"modified",options:["modified","date","views","likes","comments"]},index_list_title:"最新发布",home_exclude_posts:[],home_exclude_cats:[],home_lists:[],homepage_card_style:"default",homepage_multi_thumb_enabled:!0,homepage_multi_thumb_min_images:3,homepage_sidebar_mini_enabled:!0,homepage_default_view:"list",homepage_sort_ajax_enabled:!0,homepage_sticky_tabs_enabled:!0,home_list_sort_dropdown:!1,homepage_tab_posts_per_page:6,homepage_tab_limit:4}),N=M({get:()=>(l.home_exclude_posts||[]).join(","),set:s=>{l.home_exclude_posts=s.split(",").map(e=>parseInt(e.trim(),10)).filter(e=>e>0)}}),V=M({get:()=>(l.home_exclude_cats||[]).join(","),set:s=>{l.home_exclude_cats=s.split(",").map(e=>parseInt(e.trim(),10)).filter(e=>e>0)}});function R(){l.home_lists.push({term_id:0,title:"",orderby:"date",enabled:!0})}function X(s){l.home_lists.splice(s,1)}function h(s,e,n){l.home_lists[s][e]=n}async function Z(){try{const s=await S.getHomepageCategories(),e=(s==null?void 0:s.data)||[];B.value=e.map(n=>({label:`${n.taxonomy==="topics"?"[专题] ":""}${n.name} (${n.count})`,value:n.term_id||n.id}))}catch{}}async function q(){v.value=!0;try{const s=await S.getHomepageSettings(),e=(s==null?void 0:s.data)||{};l.home_posts_list_s=e.home_posts_list_s!==!1&&e.home_posts_list_enabled!==!1,l.home_list1_orderby_s=e.home_list1_orderby_s!==!1&&e.home_list_sort_enabled!==!1;const n=e.home_list1_orderby_option&&typeof e.home_list1_orderby_option=="object"?e.home_list1_orderby_option:{};l.home_list1_orderby_option={orderby:n.orderby||e.homepage_default_sort||"modified",options:Array.isArray(n.options)&&n.options.length?n.options:Array.isArray(e.home_list_sort_options)&&e.home_list_sort_options.length?e.home_list_sort_options:["modified","date","views","likes","comments"]},l.index_list_title=e.index_list_title||e.home_list_title||"最新发布",l.home_exclude_posts=Array.isArray(e.home_exclude_posts)?e.home_exclude_posts:Array.isArray(e.home_exclude_post_ids)?e.home_exclude_post_ids:[],l.home_exclude_cats=Array.isArray(e.home_exclude_cats)?e.home_exclude_cats:Array.isArray(e.home_exclude_category_ids)?e.home_exclude_category_ids:[],l.home_lists=Array.isArray(e.home_lists)?e.home_lists:Array.isArray(e.homepage_tabs)?e.homepage_tabs:[],l.homepage_card_style=e.homepage_card_style||"default",l.homepage_multi_thumb_enabled=e.homepage_multi_thumb_enabled!==!1,l.homepage_multi_thumb_min_images=e.homepage_multi_thumb_min_images||3,l.homepage_sidebar_mini_enabled=e.homepage_sidebar_mini_enabled!==!1,l.homepage_default_view=e.homepage_default_view||"list",l.homepage_sort_ajax_enabled=e.homepage_sort_ajax_enabled!==!1,l.homepage_sticky_tabs_enabled=e.homepage_sticky_tabs_enabled!==!1,l.home_list_sort_dropdown=!!e.home_list_sort_dropdown,l.homepage_tab_posts_per_page=e.homepage_tab_posts_per_page||6,l.homepage_tab_limit=e.homepage_tab_limit||4}catch(s){T.error(s.message||"加载设置失败")}finally{v.value=!1}}async function z(){y.value=!0;try{const s={...l},e=await S.saveHomepageSettings(s);if((e==null?void 0:e.code)==="success"){T.success("首页设置已保存");return}throw new Error((e==null?void 0:e.message)||"保存失败")}catch(s){T.error(s.message||"保存失败")}finally{y.value=!1}}return Y(()=>{Z(),q()}),(s,e)=>{const n=_("n-button"),x=_("n-alert"),r=_("n-form-item"),g=_("n-form"),u=_("n-card"),p=_("n-switch"),c=_("n-input"),k=_("n-select"),O=_("n-radio-button"),j=_("n-space"),J=_("n-radio-group"),P=_("n-input-number"),L=_("n-text"),D=_("n-spin"),E=_("n-tab-pane"),W=_("n-tabs");return f(),w("div",oe,[t(te,{title:"首页配置",desc:"配置首页主列表、分类 Tab 与基础交互。列表/卡片显示请在「文章列表」中设置。"},{actions:a(()=>[t(n,{type:"primary",loading:y.value,onClick:z},{default:a(()=>[...e[17]||(e[17]=[d("保存设置",-1)])]),_:1},8,["loading"])]),_:1}),t(W,{value:$.value,"onUpdate:value":e[16]||(e[16]=o=>$.value=o),type:"line",animated:""},{default:a(()=>[t(E,{name:"stream",tab:"主列表 & Tab"},{default:a(()=>[t(D,{show:v.value,style:{width:"100%","min-height":"200px"}},{default:a(()=>[t(u,{class:"aksrt-section-card",style:{"margin-bottom":"16px"}},{header:a(()=>[...e[18]||(e[18]=[i("strong",null,"首页说明",-1)])]),default:a(()=>[t(g,{model:l,"label-placement":"left","label-width":"160",class:"aksrt-form"},{default:a(()=>[t(r,{label:"内容说明"},{default:a(()=>[t(x,{type:"info","show-icon":!1},{default:a(()=>[...e[19]||(e[19]=[d(" 首页主列表只使用普通文章。下载/付费是文章能力(meta),不是第二种内容类型。当前为固定骨架模式,不再使用旧版自由模块画布。 ",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),t(u,{class:"aksrt-section-card",style:{"margin-bottom":"16px"}},{header:a(()=>[...e[20]||(e[20]=[i("strong",null,"主列表",-1)])]),default:a(()=>[t(g,{model:l,"label-placement":"left","label-width":"160",class:"aksrt-form"},{default:a(()=>[t(r,{label:"启用主列表"},{feedback:a(()=>[...e[21]||(e[21]=[i("span",{class:"aksrt-hint-text"},"首页主内容区保留 Zibll 式内容流,不建议关闭。",-1)])]),default:a(()=>[t(p,{value:l.home_posts_list_s,"onUpdate:value":e[0]||(e[0]=o=>l.home_posts_list_s=o)},null,8,["value"])]),_:1}),t(r,{label:"显示标题"},{default:a(()=>[t(c,{value:l.index_list_title,"onUpdate:value":e[1]||(e[1]=o=>l.index_list_title=o),placeholder:"最新发布"},null,8,["value"])]),_:1}),t(r,{label:"主栏目默认排序"},{default:a(()=>[t(k,{value:l.home_list1_orderby_option.orderby,"onUpdate:value":e[2]||(e[2]=o=>l.home_list1_orderby_option.orderby=o),options:C},null,8,["value"])]),_:1}),t(r,{label:"显示排序方式按钮"},{default:a(()=>[t(p,{value:l.home_list1_orderby_s,"onUpdate:value":e[3]||(e[3]=o=>l.home_list1_orderby_s=o)},null,8,["value"])]),_:1}),l.home_list1_orderby_s?(f(),F(r,{key:0,label:"排序栏样式"},{default:a(()=>[t(J,{value:l.home_list_sort_dropdown,"onUpdate:value":e[4]||(e[4]=o=>l.home_list_sort_dropdown=o)},{default:a(()=>[t(j,{size:"large"},{default:a(()=>[t(O,{value:!1},{default:a(()=>[...e[22]||(e[22]=[d("内联链接",-1)])]),_:1}),t(O,{value:!0},{default:a(()=>[...e[23]||(e[23]=[d("下拉菜单",-1)])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1})):H("",!0),l.home_list1_orderby_s?(f(),F(r,{key:1,label:"排序方式选项"},{default:a(()=>[t(k,{value:l.home_list1_orderby_option.options,"onUpdate:value":e[5]||(e[5]=o=>l.home_list1_orderby_option.options=o),options:C,multiple:"",placeholder:"选择排序选项"},null,8,["value"])]),_:1})):H("",!0)]),_:1},8,["model"])]),_:1}),t(u,{class:"aksrt-section-card",style:{"margin-bottom":"16px"}},{header:a(()=>[...e[24]||(e[24]=[i("strong",null,"排除规则",-1)])]),default:a(()=>[t(g,{model:l,"label-placement":"left","label-width":"160",class:"aksrt-form"},{default:a(()=>[t(r,{label:"排除文章"},{feedback:a(()=>[...e[25]||(e[25]=[i("span",{class:"aksrt-hint-text"},"主列表和首页 Tab 查询均排除这些文章。",-1)])]),default:a(()=>[t(c,{value:N.value,"onUpdate:value":e[6]||(e[6]=o=>N.value=o),type:"textarea",placeholder:"逗号分隔的文章 ID,如 12,34,56",rows:2},null,8,["value"])]),_:1}),t(r,{label:"排除分类"},{feedback:a(()=>[...e[26]||(e[26]=[i("span",{class:"aksrt-hint-text"},"主列表排除这些分类,首页 Tab 不能绑定已排除分类。",-1)])]),default:a(()=>[t(c,{value:V.value,"onUpdate:value":e[7]||(e[7]=o=>V.value=o),type:"textarea",placeholder:"逗号分隔的分类 ID,如 5,8",rows:2},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),t(u,{class:"aksrt-section-card",style:{"margin-bottom":"16px"}},{header:a(()=>[i("div",se,[e[28]||(e[28]=i("strong",null,"更多栏目",-1)),t(n,{size:"small",onClick:R},{default:a(()=>[...e[27]||(e[27]=[d("+ 添加栏目",-1)])]),_:1})])]),default:a(()=>[t(g,{model:l,"label-placement":"left","label-width":"160",class:"aksrt-form",style:{"margin-bottom":"16px"}},{default:a(()=>[t(r,{label:"Tab 数量上限"},{default:a(()=>[t(P,{value:l.homepage_tab_limit,"onUpdate:value":e[8]||(e[8]=o=>l.homepage_tab_limit=o),min:1,max:12},null,8,["value"])]),_:1}),t(r,{label:"每 Tab 文章数"},{default:a(()=>[t(P,{value:l.homepage_tab_posts_per_page,"onUpdate:value":e[9]||(e[9]=o=>l.homepage_tab_posts_per_page=o),min:1,max:20},null,8,["value"])]),_:1})]),_:1},8,["model"]),l.home_lists.length===0?(f(),w("div",ne,[t(L,{depth:"3"},{default:a(()=>[...e[29]||(e[29]=[d("暂无更多栏目,点击“添加栏目”创建分类/专题 Tab。",-1)])]),_:1})])):H("",!0),(f(!0),w(Q,null,ee(l.home_lists,(o,b)=>(f(),w("div",{key:b,class:"homepage-settings__tab-row"},[i("div",_e,[t(k,{value:o.term_id,options:B.value,placeholder:"分类",filterable:"",style:{flex:"2"},"onUpdate:value":m=>h(b,"term_id",m)},null,8,["value","options","onUpdate:value"]),t(c,{value:o.title,placeholder:"自定义标题",style:{flex:"1"},"onUpdate:value":m=>h(b,"title",m)},null,8,["value","onUpdate:value"]),t(k,{value:o.orderby,options:C,style:{flex:"1"},"onUpdate:value":m=>h(b,"orderby",m)},null,8,["value","onUpdate:value"]),t(p,{value:o.enabled,"onUpdate:value":m=>h(b,"enabled",m)},null,8,["value","onUpdate:value"]),t(n,{size:"small",quaternary:"",type:"error",onClick:m=>X(b)},{default:a(()=>[...e[30]||(e[30]=[d("删除",-1)])]),_:1},8,["onClick"])])]))),128))]),_:1})]),_:1},8,["show"])]),_:1}),t(E,{name:"cards",tab:"卡片 & 交互"},{default:a(()=>[t(D,{show:v.value,style:{width:"100%","min-height":"200px"}},{default:a(()=>[t(u,{class:"aksrt-section-card",style:{"margin-bottom":"16px"}},{header:a(()=>[...e[31]||(e[31]=[i("strong",null,"列表显示",-1)])]),default:a(()=>[t(x,{type:"info","show-icon":!1},{default:a(()=>[...e[32]||(e[32]=[d(" 首页文章列表/卡片模式、样式变体与缩略图比例已统一到「文章&列表 → 文章列表」设置(对齐 Zibll 全局 list_type / list_card_home)。此处不再单独维护 homepage_card_style / 默认视图。 ",-1)])]),_:1})]),_:1}),t(u,{class:"aksrt-section-card",style:{"margin-bottom":"16px"}},{header:a(()=>[...e[33]||(e[33]=[i("strong",null,"交互设置",-1)])]),default:a(()=>[t(g,{model:l,"label-placement":"left","label-width":"160",class:"aksrt-form"},{default:a(()=>[t(r,{label:"排序栏 AJAX"},{feedback:a(()=>[...e[34]||(e[34]=[i("span",{class:"aksrt-hint-text"},"关闭后排序链接使用整页跳转。",-1)])]),default:a(()=>[t(p,{value:l.homepage_sort_ajax_enabled,"onUpdate:value":e[10]||(e[10]=o=>l.homepage_sort_ajax_enabled=o)},null,8,["value"])]),_:1}),t(r,{label:"Tab 吸顶"},{default:a(()=>[t(p,{value:l.homepage_sticky_tabs_enabled,"onUpdate:value":e[11]||(e[11]=o=>l.homepage_sticky_tabs_enabled=o)},null,8,["value"])]),_:1}),t(r,{label:"迷你侧栏列表"},{default:a(()=>[t(p,{value:l.homepage_sidebar_mini_enabled,"onUpdate:value":e[12]||(e[12]=o=>l.homepage_sidebar_mini_enabled=o)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),t(u,{class:"aksrt-section-card"},{header:a(()=>[...e[35]||(e[35]=[i("strong",null,"固定骨架说明",-1)])]),default:a(()=>[t(j,{vertical:""},{default:a(()=>[t(x,{type:"warning","show-icon":!1},{default:a(()=>[...e[36]||(e[36]=[d(" Hero 与 Banner 已作为固定首页骨架的一部分维护,不再由旧版首页模块编排驱动。 ",-1)])]),_:1}),t(x,{type:"info","show-icon":!1},{default:a(()=>[...e[37]||(e[37]=[d(" 如需调整首页首屏运营区,请前往对应管理页配置幻灯片内容或顶部组件参数。 ",-1)])]),_:1}),t(j,null,{default:a(()=>[t(n,{secondary:"",type:"primary",onClick:e[13]||(e[13]=o=>I(A).push("/page-display/hero"))},{default:a(()=>[...e[38]||(e[38]=[d("管理 Hero 轮播",-1)])]),_:1}),t(n,{secondary:"",type:"primary",onClick:e[14]||(e[14]=o=>I(A).push("/page-display/banner"))},{default:a(()=>[...e[39]||(e[39]=[d("管理 Banner 轮播",-1)])]),_:1}),t(n,{secondary:"",onClick:e[15]||(e[15]=o=>I(A).push("/page-display/header-components"))},{default:a(()=>[...e[40]||(e[40]=[d(" 顶部多功能组件 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,["show"])]),_:1})]),_:1},8,["value"]),i("div",re,[t(n,{type:"primary",loading:y.value,onClick:z},{default:a(()=>[...e[41]||(e[41]=[d("保存设置",-1)])]),_:1},8,["loading"])])])}}},ve=ae(ie,[["__scopeId","data-v-ae4c5b65"]]);export{ve as default};
diff --git a/assets/admin/build/NativeOpsRedirect.C0bocwWY.js b/assets/admin/build/NativeOpsRedirect.C0bocwWY.js
deleted file mode 100644
index 5752da10..00000000
--- a/assets/admin/build/NativeOpsRedirect.C0bocwWY.js
+++ /dev/null
@@ -1 +0,0 @@
-import{o as d,X as a,Y as o,Z as u,c as l,$ as _,W as r}from"./vendor-vue.Bykizn0M.js";import{_ as m}from"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const v={class:"aks-native-ops-redirect"},f={key:0},h=["href"],k={key:1,class:"desc"},b={__name:"NativeOpsRedirect",setup(w){const n=_(),p=l(()=>{var e;return((e=n.meta)==null?void 0:e.title)||"运营功能已迁移"}),t=l(()=>{var i,c;const e=((i=n.meta)==null?void 0:i.nativeAdminPath)||"";return e?(((c=window.aksrtAdminData)==null?void 0:c.adminUrl)||"/wp-admin/").replace(/\/?$/,"/")+e.replace(/^\//,""):""});return d(()=>{t.value&&window.location.replace(t.value)}),(e,s)=>(r(),a("div",v,[o("h2",null,u(p.value),1),s[0]||(s[0]=o("p",{class:"desc"}," 此运营功能已迁移到 WordPress 原生后台侧栏(对齐 zibll)。正在跳转… ",-1)),t.value?(r(),a("p",f,[o("a",{class:"button button-primary",href:t.value},"立即打开原生页面",8,h)])):(r(),a("p",k,"未配置原生跳转地址,请从左侧 WP 菜单进入。"))]))}},P=m(b,[["__scopeId","data-v-da26f551"]]);export{P as default};
diff --git a/assets/admin/build/NativeOpsRedirect.css b/assets/admin/build/NativeOpsRedirect.css
deleted file mode 100644
index 57079d35..00000000
--- a/assets/admin/build/NativeOpsRedirect.css
+++ /dev/null
@@ -1 +0,0 @@
-.aks-native-ops-redirect[data-v-da26f551]{max-width:640px;margin:48px auto;padding:24px;background:var(--aks-surface, #fff);border-radius:8px;border:1px solid var(--aks-border, #e5e7eb)}.desc[data-v-da26f551]{color:#646970;line-height:1.6}.button[data-v-da26f551]{display:inline-block;margin-top:8px;padding:8px 14px;background:#2271b1;color:#fff;border-radius:4px;text-decoration:none}
diff --git a/assets/admin/build/PageHeader.Di3JTPjc.js b/assets/admin/build/PageHeader.Di3JTPjc.js
deleted file mode 100644
index 778459c5..00000000
--- a/assets/admin/build/PageHeader.Di3JTPjc.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as n}from"./index.js";import{X as s,Y as d,Z as o,l as r,a5 as c,W as t,f as i}from"./vendor-vue.Bykizn0M.js";const _={class:"aksrt-page-header"},l={class:"aksrt-page-header__main"},h={class:"aksrt-page-header__title"},p={key:0,class:"aksrt-page-header__desc"},u={key:1,class:"aksrt-page-header__desc"},g={key:0,class:"aksrt-page-header__actions"},k={__name:"PageHeader",props:{title:{type:String,required:!0},desc:{type:String,default:""}},setup(a){return(e,m)=>(t(),s("header",_,[d("div",l,[d("h2",h,o(a.title),1),a.desc?(t(),s("p",p,[r(e.$slots,"desc",{},()=>[i(o(a.desc),1)],!0)])):e.$slots.desc?(t(),s("div",u,[r(e.$slots,"desc",{},void 0,!0)])):c("",!0)]),e.$slots.actions?(t(),s("div",g,[r(e.$slots,"actions",{},void 0,!0)])):c("",!0)]))}},$=n(k,[["__scopeId","data-v-8ce32c14"]]);export{$ as P};
diff --git a/assets/admin/build/PageHeader.css b/assets/admin/build/PageHeader.css
deleted file mode 100644
index 85d21606..00000000
--- a/assets/admin/build/PageHeader.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-page-header[data-v-8ce32c14]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}.aksrt-page-header__main[data-v-8ce32c14]{flex:1 1 auto;min-width:0}.aksrt-page-header__title[data-v-8ce32c14]{margin:0 0 6px;color:#1a1a2e;font-size:22px;font-weight:700;letter-spacing:-.02em;line-height:1.3}.aksrt-page-header__desc[data-v-8ce32c14]{margin:0;color:#7a7f8a;font-size:13px;line-height:1.65}.aksrt-page-header__actions[data-v-8ce32c14]{flex:0 0 auto;display:flex;align-items:center;gap:8px}@media(max-width:768px){.aksrt-page-header[data-v-8ce32c14]{margin-bottom:14px;gap:10px}.aksrt-page-header__title[data-v-8ce32c14]{font-size:18px}.aksrt-page-header__desc[data-v-8ce32c14]{font-size:12px}.aksrt-page-header__actions[data-v-8ce32c14]{width:100%}}
diff --git a/assets/admin/build/PaymentGateway.BTbqvMWf.js b/assets/admin/build/PaymentGateway.BTbqvMWf.js
deleted file mode 100644
index 7513a509..00000000
--- a/assets/admin/build/PaymentGateway.BTbqvMWf.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as H,a1 as c,W as _,X as V,a4 as s,a3 as t,a2 as g,F as A,R as D,f as C,Z as d,a5 as $,l as I,N as h,c as z,o as T,r as F,Y as n,L as P}from"./vendor-vue.Bykizn0M.js";import{a as q}from"./shared-api.D5_fnN32.js";import{P as U}from"./PageHeader.Di3JTPjc.js";import{u as W,A as X,g as Y}from"./shared-api.B7o7Pzvu.js";import{u as L}from"./vendor-naive.BuHWlEgf.js";import{_ as Z}from"./index.js";import"./FaIcon.CX_hGmM4.js";import"./vendor-misc.1adHN6i_.js";const j={class:"aksrt-page-container"},J={__name:"PaymentSectionPage",props:{section:{type:String,required:!0},title:{type:String,required:!0},desc:{type:String,default:""},note:{type:String,default:""},links:{type:Array,default:()=>[]}},setup(m){const y=m,v=H(),o=L(),f=z(()=>Y("payment",y.section)||{groups:[]}),N=z(()=>{const l={};return(f.value.groups||[]).forEach(x=>{(x.fields||[]).forEach(w=>{w.default!==void 0&&(l[w.key]=w.default)})}),l}),{formData:u,loading:e,saving:i,loadError:p,dirty:S,save:B,reload:b}=W({fetch:()=>q.getSchemaPage("payment",y.section),submit:l=>q.saveSchemaPage("payment",y.section,l),defaults:N.value,onSaved:()=>{o.success("设置已保存")}});function E(l){v.push(l)}async function a(){try{await B()}catch(l){o.error(l.message||"保存失败")}}function r(){b(),o.info("已放弃更改")}return(l,x)=>{const w=c("n-button"),M=c("n-space"),R=c("n-alert"),G=c("n-card");return _(),V("div",j,[s(U,{title:m.title,desc:m.desc},{actions:t(()=>[m.links.length?(_(),g(M,{key:0},{default:t(()=>[(_(!0),V(A,null,D(m.links,k=>(_(),g(w,{key:k.path,quaternary:"",onClick:ne=>E(k.path)},{default:t(()=>[C(d(k.label),1)]),_:2},1032,["onClick"]))),128))]),_:1})):$("",!0)]),_:1},8,["title","desc"]),m.note?(_(),g(G,{key:0,class:"aksrt-section-card"},{default:t(()=>[s(R,{type:"info","show-icon":!1},{default:t(()=>[C(d(m.note),1)]),_:1})]),_:1})):$("",!0),I(l.$slots,"before-form"),s(X,{schema:f.value.groups,"form-data":h(u),dirty:h(S),loading:h(e),saving:h(i),"load-error":h(p),"show-search":!1,"onUpdate:formData":x[0]||(x[0]=k=>u.value=k),onSave:a,onReload:r},null,8,["schema","form-data","dirty","loading","saving","load-error"])])}}},K={class:"aksrt-gateway__card"},O={class:"aksrt-gateway__stat"},Q={class:"aksrt-gateway__stat"},ee={class:"aksrt-gateway__stat"},ae={class:"aksrt-gateway__stat"},te={__name:"PaymentGateway",setup(m){const y=L(),v=F([]),o=F({}),f=F(!1),N=z(()=>{var e;const u=(e=o.value.gateway)==null?void 0:e.mode;return u==="test_gateway"?"测试网关":u==="adapter_ready"?"适配器就绪":"人工确认"});return T(async()=>{var u;f.value=!0;try{const[e,i]=await Promise.all([q.request("/shop/gateways").catch(()=>null),q.request("/payment/overview").catch(()=>null)]);(u=e==null?void 0:e.data)!=null&&u.gateways&&(v.value=e.data.gateways),i!=null&&i.data&&(o.value=i.data)}catch{y.warning("部分支付接口暂不可用")}finally{f.value=!1}}),(u,e)=>{const i=c("n-tag"),p=c("n-grid-item"),S=c("n-grid"),B=c("n-empty"),b=c("n-card"),E=c("n-spin");return _(),g(J,{section:"gateway",title:"收款接口",desc:"管理支付网关、查看连接状态、配置回调口令。",note:"当前支持人工确认与测试联调;回调校验口令在接入真实网关时直接复用。",links:[{label:"余额充值",path:"/payment/recharge"},{label:"付费内容",path:"/payment/paid"}]},{"before-form":t(()=>[s(E,{show:f.value},{default:t(()=>[s(b,{class:"aksrt-section-card",title:"网关状态"},{default:t(()=>[s(S,{cols:3,"x-gap":12,"y-gap":12},{default:t(()=>[(_(!0),V(A,null,D(v.value,a=>(_(),g(p,{key:a.id},{default:t(()=>[n("div",K,[n("div",{class:P(["aksrt-gateway__icon",a.configured?"aksrt-gateway__icon--active":""])},[n("i",{class:P(a.id==="balance"?"fas fa-wallet":"fas fa-credit-card")},null,2)],2),n("div",null,[n("strong",null,d(a.name),1),n("p",null,d(a.configured?"已配置":"未配置"),1)]),s(i,{type:a.configured?"success":"default",size:"small",round:""},{default:t(()=>[C(d(a.configured?"可用":"不可用"),1)]),_:2},1032,["type"])])]),_:2},1024))),128))]),_:1}),!f.value&&v.value.length===0?(_(),g(B,{key:0,description:"暂无已注册的支付网关"})):$("",!0)]),_:1}),s(b,{class:"aksrt-section-card",title:"运行摘要"},{default:t(()=>[s(S,{cols:4,"x-gap":12,"y-gap":12},{default:t(()=>[s(p,null,{default:t(()=>[n("div",O,[n("strong",null,d(N.value),1),e[0]||(e[0]=n("p",null,"当前模式",-1))])]),_:1}),s(p,null,{default:t(()=>{var a,r;return[n("div",Q,[n("strong",{class:P((a=o.value.gateway)!=null&&a.test_enabled?"aksrt-text-warning":"")},d((r=o.value.gateway)!=null&&r.test_enabled?"启用":"关闭"),3),e[1]||(e[1]=n("p",null,"测试网关",-1))])]}),_:1}),s(p,null,{default:t(()=>{var a,r;return[n("div",ee,[n("strong",{class:P((a=o.value.gateway)!=null&&a.manual_review?"aksrt-text-info":"")},d((r=o.value.gateway)!=null&&r.manual_review?"启用":"关闭"),3),e[2]||(e[2]=n("p",null,"人工复核",-1))])]}),_:1}),s(p,null,{default:t(()=>{var a;return[n("div",ae,[s(i,{type:(a=o.value.gateway)!=null&&a.callback_secret?"success":"warning",size:"small",round:""},{default:t(()=>{var r;return[C(d((r=o.value.gateway)!=null&&r.callback_secret?"已设置":"未设置"),1)]}),_:1},8,["type"]),e[3]||(e[3]=n("p",null,"回调口令",-1))])]}),_:1})]),_:1})]),_:1})]),_:1},8,["show"])]),_:1})}}},_e=Z(te,[["__scopeId","data-v-fe319791"]]);export{_e as default};
diff --git a/assets/admin/build/PaymentGateway.css b/assets/admin/build/PaymentGateway.css
deleted file mode 100644
index c27e07b2..00000000
--- a/assets/admin/build/PaymentGateway.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-gateway__card[data-v-fe319791]{display:flex;align-items:center;gap:12px;padding:14px;border-radius:8px;background:var(--surface-2, #fafafa);border:1px solid var(--color-line, #f0f0f0)}.aksrt-gateway__icon[data-v-fe319791]{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:var(--surface-3, #f0f0f0);color:var(--color-ink-4, #8a909c);font-size:16px}.aksrt-gateway__icon--active[data-v-fe319791]{background:var(--color-primary-soft, #f0f5ff);color:var(--color-primary, #1890ff)}.aksrt-gateway__card strong[data-v-fe319791]{display:block;font-size:14px;color:var(--color-ink, #1a1a2e)}.aksrt-gateway__card p[data-v-fe319791]{margin:2px 0 0;font-size:12px;color:var(--color-ink-4, #8a909c)}.aksrt-gateway__stat[data-v-fe319791]{text-align:center;padding:16px;border-radius:8px;background:var(--surface-2, #fafafa)}.aksrt-gateway__stat strong[data-v-fe319791]{display:block;font-size:18px;font-weight:600;color:var(--color-ink, #1a1a2e)}.aksrt-gateway__stat p[data-v-fe319791]{margin:4px 0 0;font-size:12px;color:var(--color-ink-4, #8a909c)}.aksrt-text-warning[data-v-fe319791]{color:var(--color-warning, #f59e0b)}.aksrt-text-info[data-v-fe319791]{color:var(--color-info, #3b82f6)}
diff --git a/assets/admin/build/PermissionsCapabilities.DAu3e_3q.js b/assets/admin/build/PermissionsCapabilities.DAu3e_3q.js
deleted file mode 100644
index 1b27f68c..00000000
--- a/assets/admin/build/PermissionsCapabilities.DAu3e_3q.js
+++ /dev/null
@@ -1 +0,0 @@
-import{a as V}from"./shared-api.D5_fnN32.js";import{P as R}from"./PageHeader.Di3JTPjc.js";import{_ as T}from"./index.js";import{u as U,b as C,e as q,f as H}from"./vendor-naive.BuHWlEgf.js";import{o as L,X as j,a4 as l,a3 as o,r as _,e as B,a1 as f,W as h,f as m,a2 as P,Y as c,N as S,Z as v,a5 as W,F as X,R as Y,k as r}from"./vendor-vue.Bykizn0M.js";import"./vendor-misc.1adHN6i_.js";const Z={class:"aksrt-page-container"},A={class:"aksrt-cap-matrix__header"},G={class:"aksrt-cap-matrix__title"},I={class:"aksrt-cap-matrix__desc"},K={class:"aksrt-form-actions"},Q={__name:"PermissionsCapabilities",setup($){const y=U(),g=_(!0),k=_(!1),b=_([]),N=_({}),u=B({cap_count:0,group_count:0,column_count:0}),i=B({}),x=_({});L(w);async function w(){g.value=!0;try{const e=await V.getCapabilities(),a=(e==null?void 0:e.data)||{};N.value=a.columns||{},b.value=a.groups||[],Object.assign(u,a.summary||{cap_count:0,group_count:0,column_count:0});const s={};for(const t of b.value)for(const n of t.items||[])s[n.cap_id]={...n.values||{}};O(i,s),x.value=JSON.parse(JSON.stringify(s))}catch(e){y.error((e==null?void 0:e.message)||"加载能力矩阵失败")}finally{g.value=!1}}function O(e,a){Object.keys(e).forEach(s=>delete e[s]),Object.entries(a).forEach(([s,t])=>{e[s]={...t}})}function z(e){const a=[{title:"能力项",key:"label",fixed:"left",width:280,render:t=>r("div",{class:"aksrt-cap-matrix__cap"},[r("strong",t.label),r("code",t.cap_id)])}],s=new Set;for(const t of e.items||[])for(const n of t.visible_columns||[])s.add(n);for(const t of Object.keys(N.value||{}))s.has(t)&&a.push({title:N.value[t],key:t,width:t==="level"||t==="vip"?110:100,render:n=>E(n,t)});return a}function E(e,a){var t,n;return(e.visible_columns||[]).includes(a)?(i[e.cap_id]||(i[e.cap_id]={...e.values||{}}),a==="level"||a==="vip"?r(q,{value:((t=i[e.cap_id])==null?void 0:t[a])??-1,min:-1,max:a==="level"?10:2,step:1,size:"small",style:"width: 90px",onUpdateValue:d=>J(e.cap_id,a,d??-1)}):r(H,{value:!!((n=i[e.cap_id])!=null&&n[a]),size:"small",onUpdateValue:d=>J(e.cap_id,a,d)})):r("span",{class:"aksrt-cap-matrix__empty"},"—")}function J(e,a,s){i[e]||(i[e]={}),i[e][a]=s}function M(){O(i,JSON.parse(JSON.stringify(x.value||{}))),y.info("已恢复默认矩阵")}async function D(){k.value=!0;try{await V.saveCapabilities(JSON.parse(JSON.stringify(i))),x.value=JSON.parse(JSON.stringify(i)),y.success("能力矩阵已保存")}catch(e){y.error((e==null?void 0:e.message)||"保存能力矩阵失败")}finally{k.value=!1}}return(e,a)=>{const s=f("n-button"),t=f("n-space"),n=f("n-card"),d=f("n-data-table"),F=f("n-spin");return h(),j("div",Z,[l(R,{title:"基本权限 / 能力矩阵",desc:"统一管理用户治理、投稿和评论的角色能力矩阵。"},{actions:o(()=>[l(t,null,{default:o(()=>[l(s,{quaternary:"",onClick:M},{default:o(()=>[...a[0]||(a[0]=[m("恢复默认",-1)])]),_:1})]),_:1})]),_:1}),l(F,{show:g.value,style:{width:"100%","min-height":"240px"}},{default:o(()=>[u.cap_count?(h(),P(n,{key:0,class:"aksrt-section-card"},{default:o(()=>[a[1]||(a[1]=c("div",{class:"aksrt-section-header"},[c("h3",null,"矩阵概览")],-1)),l(t,null,{default:o(()=>[l(S(C),{round:"",type:"info"},{default:o(()=>[m("能力项:"+v(u.cap_count),1)]),_:1}),l(S(C),{round:"",type:"info"},{default:o(()=>[m("分组:"+v(u.group_count),1)]),_:1}),l(S(C),{round:"",type:"info"},{default:o(()=>[m("角色列:"+v(u.column_count),1)]),_:1})]),_:1})]),_:1})):W("",!0),(h(!0),j(X,null,Y(b.value,p=>(h(),P(n,{key:p.key,class:"aksrt-section-card"},{header:o(()=>[c("div",A,[c("div",null,[c("h3",G,v(p.title),1),c("p",I,"共 "+v(p.items.length)+" 项能力",1)])])]),default:o(()=>[l(d,{columns:z(p),data:p.items,bordered:!0,size:"small","single-line":!1,"scroll-x":1200},null,8,["columns","data"])]),_:2},1024))),128)),c("div",K,[l(s,{type:"primary",loading:k.value,onClick:D},{default:o(()=>[...a[2]||(a[2]=[m("保存能力矩阵",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}},ie=T(Q,[["__scopeId","data-v-34bd6923"]]);export{ie as default};
diff --git a/assets/admin/build/PermissionsCapabilities.css b/assets/admin/build/PermissionsCapabilities.css
deleted file mode 100644
index 7014a9bf..00000000
--- a/assets/admin/build/PermissionsCapabilities.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-cap-matrix__header[data-v-34bd6923]{display:flex;align-items:center;justify-content:space-between}.aksrt-cap-matrix__title[data-v-34bd6923]{margin:0;font-size:15px;font-weight:600}.aksrt-cap-matrix__desc[data-v-34bd6923]{margin:4px 0 0;font-size:12px;color:#8a909c}.aksrt-cap-matrix__cap[data-v-34bd6923]{display:flex;flex-direction:column;gap:4px}.aksrt-cap-matrix__cap code[data-v-34bd6923]{font-size:11px;color:#667085}.aksrt-cap-matrix__empty[data-v-34bd6923]{color:#c0c4cc}.aksrt-form-actions[data-v-34bd6923]{display:flex;justify-content:flex-end;margin-top:16px}
diff --git a/assets/admin/build/PostPageSettings.B1brRzY8.js b/assets/admin/build/PostPageSettings.B1brRzY8.js
deleted file mode 100644
index a3a97ac6..00000000
--- a/assets/admin/build/PostPageSettings.B1brRzY8.js
+++ /dev/null
@@ -1 +0,0 @@
-import t from"./SchemaPage.CSkx936u.js";import{a2 as o,W as r}from"./vendor-vue.Bykizn0M.js";import"./shared-api.B7o7Pzvu.js";import"./FaIcon.CX_hGmM4.js";import"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";import"./shared-api.D5_fnN32.js";const l={__name:"PostPageSettings",setup(e){return(p,a)=>(r(),o(t,{domain:"post_list",section:"page"}))}};export{l as default};
diff --git a/assets/admin/build/ResourceDownload.DvRILKEZ.js b/assets/admin/build/ResourceDownload.DvRILKEZ.js
deleted file mode 100644
index aea02b97..00000000
--- a/assets/admin/build/ResourceDownload.DvRILKEZ.js
+++ /dev/null
@@ -1 +0,0 @@
-import{o as z,X as L,a4 as t,a3 as o,r as f,a1 as s,e as W,_ as E,W as R,f as r,Y as _,Z as m,a2 as H,a5 as I,c as V}from"./vendor-vue.Bykizn0M.js";import{a as c}from"./shared-api.D5_fnN32.js";import{P as O}from"./PageHeader.Di3JTPjc.js";import{u as X}from"./vendor-naive.BuHWlEgf.js";import"./index.js";import"./vendor-misc.1adHN6i_.js";const Y={class:"aksrt-page-container"},Z={class:"aksrt-form-actions"},ae={__name:"ResourceDownload",setup(j){const B=E(),k=X(),b=f(!0),x=f(!1),C=f({}),v=f({}),P=f({}),a=W({download_login:!0,download_credit:!0,download_captcha:!1,download_default_cost:0,payment_paid_post_types:"post",payment_vip_free_download:!1,payment_vip_exempt_roles:"",payment_paid_catalog_note:"",payment_manual_delivery_note:"付费或人工确认内容请在订单备注中记录交付方式。"}),S=V(()=>P.value.currency_name||v.value.currency_name||"积分"),T=V(()=>{var e;const l=((e=P.value.gateway)==null?void 0:e.mode)||"manual_review";return l==="test_gateway"?"测试网关":l==="adapter_ready"?"适配器就绪":"人工确认"});function N(l){B.push(l)}function U(l){return(l==null?void 0:l.data)??l??{}}async function h(){var l;b.value=!0;try{const[e,y,w,u]=await Promise.all([c.getCmsFeatures(),c.getCreditSettings(),c.getSchemaPage("payment","paid"),c.getPaymentOverview()]),p=(e==null?void 0:e.cms_features)??((l=e==null?void 0:e.data)==null?void 0:l.cms_features)??{},i=U(y),d=U(w);C.value=p,v.value=i,P.value=U(u),a.download_login=p.download_login!==!1,a.download_credit=p.download_credit!==!1,a.download_captcha=!!p.download_captcha,a.download_default_cost=Number(i.download_default_cost||0),a.payment_paid_post_types=d.payment_paid_post_types||"post",a.payment_vip_free_download=!!d.payment_vip_free_download,a.payment_vip_exempt_roles=d.payment_vip_exempt_roles||"",a.payment_paid_catalog_note=d.payment_paid_catalog_note||"",a.payment_manual_delivery_note=d.payment_manual_delivery_note||"付费或人工确认内容请在订单备注中记录交付方式。"}catch(e){k.error(e.message||"加载下载/付费内容中心失败")}finally{b.value=!1}}async function F(){x.value=!0;try{const l={...C.value,download_login:a.download_login,download_credit:a.download_credit,download_captcha:a.download_captcha},e={...v.value,download_default_cost:Number(a.download_default_cost||0)};await Promise.all([c.saveCmsFeatures(l),c.saveCreditSettings(e),c.saveSchemaPage("payment","paid",{payment_paid_post_types:a.payment_paid_post_types,payment_vip_free_download:a.payment_vip_free_download,payment_vip_exempt_roles:a.payment_vip_exempt_roles,payment_paid_catalog_note:a.payment_paid_catalog_note,payment_manual_delivery_note:a.payment_manual_delivery_note})]),C.value=l,v.value=e,k.success("下载/付费内容中心已保存")}catch(l){k.error(l.message||"保存失败")}finally{x.value=!1}}return z(h),(l,e)=>{const y=s("n-button"),w=s("n-space"),u=s("n-tag"),p=s("n-card"),i=s("n-switch"),d=s("n-form-item"),M=s("n-input-number"),D=s("n-form"),g=s("n-input"),$=s("n-alert"),q=s("n-spin");return R(),L("div",Y,[t(O,{title:"下载/付费内容中心",desc:"统一管理资源下载门槛、积分购买模式开关、角色免扣和人工交付说明。付费解锁走收银台订单,下载 token 不再按次扣费。"},{actions:o(()=>[t(w,null,{default:o(()=>[t(y,{quaternary:"",onClick:e[0]||(e[0]=n=>N("/permissions/download"))},{default:o(()=>[...e[11]||(e[11]=[r("下载权限",-1)])]),_:1}),t(y,{quaternary:"",onClick:e[1]||(e[1]=n=>N("/payment/gateway"))},{default:o(()=>[...e[12]||(e[12]=[r("收款接口",-1)])]),_:1})]),_:1})]),_:1}),t(q,{show:b.value,style:{width:"100%","min-height":"200px"}},{default:o(()=>[t(p,{class:"aksrt-section-card"},{default:o(()=>[e[14]||(e[14]=_("div",{class:"aksrt-section-header"},[_("h3",null,"当前联动摘要")],-1)),t(w,null,{default:o(()=>[t(u,{round:"",type:a.download_login?"warning":"default"},{default:o(()=>[r(" 登录门槛:"+m(a.download_login?"已启用":"已关闭"),1)]),_:1},8,["type"]),t(u,{round:"",type:a.download_credit?"warning":"default"},{default:o(()=>[r(" 积分购买模式:"+m(a.download_credit?"已启用":"已关闭"),1)]),_:1},8,["type"]),t(u,{round:"",type:a.download_captcha?"warning":"default"},{default:o(()=>[r(" 下载验证码:"+m(a.download_captcha?"已启用":"已关闭"),1)]),_:1},8,["type"]),t(u,{round:"",type:"info"},{default:o(()=>[r(" 默认积分价:"+m(a.download_default_cost)+" "+m(S.value),1)]),_:1}),t(u,{round:"",type:a.payment_vip_free_download?"success":"default"},{default:o(()=>[r(" 角色白名单免费:"+m(a.payment_vip_free_download?"已启用":"未启用"),1)]),_:1},8,["type"]),t(u,{round:"",type:"info"},{default:o(()=>[...e[13]||(e[13]=[r(" Token TTL:10 分钟 ",-1)])]),_:1})]),_:1})]),_:1}),t(p,{class:"aksrt-section-card"},{default:o(()=>[e[17]||(e[17]=_("div",{class:"aksrt-section-header"},[_("h3",null,"下载门槛")],-1)),t(D,{model:a,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:o(()=>[t(d,{label:"下载需要登录"},{default:o(()=>[t(i,{value:a.download_login,"onUpdate:value":e[2]||(e[2]=n=>a.download_login=n)},null,8,["value"])]),_:1}),t(d,{label:"允许积分购买模式"},{feedback:o(()=>[...e[15]||(e[15]=[_("span",{class:"aksrt-hint-text"},"开启后,文章 pay_modo=积分 可走收银台一次购买解锁;下载 token 不再按次扣积分。关闭时积分模式资源按免费/需登录策略处理。",-1)])]),default:o(()=>[t(i,{value:a.download_credit,"onUpdate:value":e[3]||(e[3]=n=>a.download_credit=n)},null,8,["value"])]),_:1}),t(d,{label:"下载启用验证码"},{default:o(()=>[t(i,{value:a.download_captcha,"onUpdate:value":e[4]||(e[4]=n=>a.download_captcha=n)},null,8,["value"])]),_:1}),t(d,{label:`默认积分价(${S.value})`},{feedback:o(()=>[...e[16]||(e[16]=[_("span",{class:"aksrt-hint-text"},"仅作运营参考/兼容字段;实际价格以文章 _aksrt_pay 的积分价/现金价为准。角色白名单命中时免费下载。",-1)])]),default:o(()=>[t(M,{value:a.download_default_cost,"onUpdate:value":e[5]||(e[5]=n=>a.download_default_cost=n),min:0,max:1e5,style:{width:"180px"}},null,8,["value"])]),_:1},8,["label"])]),_:1},8,["model"])]),_:1}),t(p,{class:"aksrt-section-card"},{default:o(()=>[e[20]||(e[20]=_("div",{class:"aksrt-section-header"},[_("h3",null,"付费内容策略")],-1)),t(D,{model:a,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:o(()=>[t(d,{label:"受管内容类型"},{feedback:o(()=>[...e[18]||(e[18]=[_("span",{class:"aksrt-hint-text"},"逗号分隔,标记纳入统一付费策略的内容类型。",-1)])]),default:o(()=>[t(g,{value:a.payment_paid_post_types,"onUpdate:value":e[6]||(e[6]=n=>a.payment_paid_post_types=n),placeholder:"post,course,doc"},null,8,["value"])]),_:1}),t(d,{label:"角色白名单免扣下载"},{default:o(()=>[t(i,{value:a.payment_vip_free_download,"onUpdate:value":e[7]||(e[7]=n=>a.payment_vip_free_download=n)},null,8,["value"])]),_:1}),a.payment_vip_free_download?(R(),H(d,{key:0,label:"免扣角色列表"},{feedback:o(()=>[...e[19]||(e[19]=[_("span",{class:"aksrt-hint-text"},"命中这些 WordPress role 的用户可免费下载(无需购买)。",-1)])]),default:o(()=>[t(g,{value:a.payment_vip_exempt_roles,"onUpdate:value":e[8]||(e[8]=n=>a.payment_vip_exempt_roles=n),placeholder:"administrator,editor,vip"},null,8,["value"])]),_:1})):I("",!0),t(d,{label:"前台付费提示"},{default:o(()=>[t(g,{value:a.payment_paid_catalog_note,"onUpdate:value":e[9]||(e[9]=n=>a.payment_paid_catalog_note=n),type:"textarea",autosize:{minRows:3,maxRows:6},placeholder:"可填写资源购买须知、交付说明或人工确认提示。"},null,8,["value"])]),_:1}),t(d,{label:"人工交付备注"},{default:o(()=>[t(g,{value:a.payment_manual_delivery_note,"onUpdate:value":e[10]||(e[10]=n=>a.payment_manual_delivery_note=n),type:"textarea",autosize:{minRows:3,maxRows:6}},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),t(p,{class:"aksrt-section-card"},{default:o(()=>[t($,{type:"info","show-icon":!1},{default:o(()=>[r(" 当前收款模式:"+m(T.value)+"。充值、VIP、返佣和分成页均已提供稳定结构,订单和结算台账直接衔接这些字段。 ",1)]),_:1})]),_:1}),_("div",Z,[t(y,{type:"primary",loading:x.value,onClick:F},{default:o(()=>[...e[21]||(e[21]=[r("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}};export{ae as default};
diff --git a/assets/admin/build/SchemaPage.CSkx936u.js b/assets/admin/build/SchemaPage.CSkx936u.js
deleted file mode 100644
index b539ba11..00000000
--- a/assets/admin/build/SchemaPage.CSkx936u.js
+++ /dev/null
@@ -1 +0,0 @@
-import{aa as R,a1 as i,W as _,a2 as S,a3 as l,a4 as a,f,Y as C,c as x,w as te,b as ae,X as K,ab as ne,R as le,N as A,a5 as M,ac as oe,I as se,Z as ue,r as L,$ as ce,l as re,ad as ie,ae as de,n as pe}from"./vendor-vue.Bykizn0M.js";import{u as me,A as fe,n as ve,g as $}from"./shared-api.B7o7Pzvu.js";import{a as F}from"./shared-api.D5_fnN32.js";import{_ as _e}from"./index.js";import{u as ge}from"./vendor-naive.BuHWlEgf.js";import"./FaIcon.CX_hGmM4.js";import"./vendor-misc.1adHN6i_.js";const ye={__name:"TencentConfig",props:{modelValue:{type:Object,default:()=>({})},modelModifiers:{}},emits:["update:modelValue"],setup(T){const s=R(T,"modelValue"),y=x(()=>{const u=s.value;return!!(u.secret_id&&u.secret_key&&u.app_id&&u.app_secret_key)});return(u,e)=>{const v=i("n-divider"),o=i("n-a"),m=i("n-alert"),p=i("n-input"),g=i("n-form-item"),k=i("n-tag"),I=i("n-space"),V=i("n-form");return _(),S(V,{"label-placement":"left","label-width":"130"},{default:l(()=>[a(I,{vertical:"",style:{width:"100%"}},{default:l(()=>[a(v,{"title-placement":"left"},{default:l(()=>[...e[4]||(e[4]=[f("云 API 密钥(用于 TC3 签名)",-1)])]),_:1}),a(m,{type:"warning",style:{"margin-bottom":"12px"}},{default:l(()=>[e[6]||(e[6]=f(" 请从 ",-1)),a(o,{href:"https://console.cloud.tencent.com/cam/capi",target:"_blank"},{default:l(()=>[...e[5]||(e[5]=[f("访问管理控制台 → API 密钥管理",-1)])]),_:1}),e[7]||(e[7]=f(" 获取。建议使用子账号密钥并仅授予 ",-1)),e[8]||(e[8]=C("code",null,"QcloudCaptchaFullAccess",-1)),e[9]||(e[9]=f(" 权限。 ",-1))]),_:1}),a(g,{label:"SecretId"},{default:l(()=>[a(p,{value:s.value.secret_id,"onUpdate:value":e[0]||(e[0]=c=>s.value.secret_id=c),placeholder:"腾讯云 API SecretId",autocomplete:"off"},null,8,["value"])]),_:1}),a(g,{label:"SecretKey"},{default:l(()=>[a(p,{value:s.value.secret_key,"onUpdate:value":e[1]||(e[1]=c=>s.value.secret_key=c),type:"text",placeholder:"腾讯云 API SecretKey",autocomplete:"off","show-password-on":"click"},null,8,["value"])]),_:1}),a(v,{"title-placement":"left"},{default:l(()=>[...e[10]||(e[10]=[f("验证码密钥",-1)])]),_:1}),a(g,{label:"CaptchaAppId"},{default:l(()=>[a(p,{value:s.value.app_id,"onUpdate:value":e[2]||(e[2]=c=>s.value.app_id=c),placeholder:"从验证码控制台获取 CaptchaAppId",autocomplete:"off"},null,8,["value"])]),_:1}),a(g,{label:"AppSecretKey"},{feedback:l(()=>[...e[11]||(e[11]=[f("请从「验证管理 → 基础配置」完整复制,注意区分 I/l/1/O/0",-1)])]),default:l(()=>[a(p,{value:s.value.app_secret_key,"onUpdate:value":e[3]||(e[3]=c=>s.value.app_secret_key=c),type:"text",placeholder:"从验证码控制台获取 AppSecretKey",autocomplete:"off","show-password-on":"click"},null,8,["value"])]),_:1}),a(m,{type:"info",style:{"margin-bottom":"12px"}},{default:l(()=>[...e[12]||(e[12]=[f(" 腾讯云验证码 2.0 — 验证类型(滑动拼图、文字点选、空间语义等)请在",-1),C("a",{href:"https://console.cloud.tencent.com/captcha/graphical",target:"_blank"},"验证码控制台",-1),f("配置。 ",-1)])]),_:1}),y.value?(_(),S(k,{key:0,type:"success",size:"small"},{default:l(()=>[...e[13]||(e[13]=[f("✓ 已完整配置",-1)])]),_:1})):(_(),S(k,{key:1,type:"warning",size:"small"},{default:l(()=>[...e[14]||(e[14]=[f("未完成配置",-1)])]),_:1}))]),_:1})]),_:1})}}},we={__name:"AliyunConfig",props:{modelValue:{type:Object,default:()=>({})},modelModifiers:{}},emits:["update:modelValue"],setup(T){const s=R(T,"modelValue"),y=x(()=>{const u=s.value;return!!(u.region&&u.prefix&&u.scene_id&&u.access_key_id&&u.access_key_secret)});return(u,e)=>{const v=i("n-divider"),o=i("n-select"),m=i("n-form-item"),p=i("n-input"),g=i("n-alert"),k=i("n-tag"),I=i("n-space"),V=i("n-form");return _(),S(V,{"label-placement":"left","label-width":"130"},{default:l(()=>[a(I,{vertical:"",style:{width:"100%"}},{default:l(()=>[a(v,{"title-placement":"left"},{default:l(()=>[...e[5]||(e[5]=[f("前端配置",-1)])]),_:1}),a(m,{label:"所属地区"},{default:l(()=>[a(o,{value:s.value.region,"onUpdate:value":e[0]||(e[0]=c=>s.value.region=c),options:[{label:"中国内地 (cn)",value:"cn"},{label:"新加坡 (sgp)",value:"sgp"}],placeholder:"选择地区"},null,8,["value"])]),_:1}),a(m,{label:"身份标 (prefix)"},{default:l(()=>[a(p,{value:s.value.prefix,"onUpdate:value":e[1]||(e[1]=c=>s.value.prefix=c),placeholder:"从概览页获取身份标",autocomplete:"off"},null,8,["value"])]),_:1}),a(m,{label:"场景ID"},{default:l(()=>[a(p,{value:s.value.scene_id,"onUpdate:value":e[2]||(e[2]=c=>s.value.scene_id=c),placeholder:"从验证码场景列表获取 SceneId",autocomplete:"off"},null,8,["value"])]),_:1}),a(v,{"title-placement":"left"},{default:l(()=>[...e[6]||(e[6]=[f("后端 API 密钥(用于服务端验签)",-1)])]),_:1}),a(m,{label:"AccessKey ID"},{default:l(()=>[a(p,{value:s.value.access_key_id,"onUpdate:value":e[3]||(e[3]=c=>s.value.access_key_id=c),placeholder:"阿里云 RAM 用户 AccessKey ID",autocomplete:"off"},null,8,["value"])]),_:1}),a(m,{label:"AccessKey Secret"},{default:l(()=>[a(p,{value:s.value.access_key_secret,"onUpdate:value":e[4]||(e[4]=c=>s.value.access_key_secret=c),type:"password","show-password-on":"click",autocomplete:"current-password",placeholder:"阿里云 RAM 用户 AccessKey Secret"},null,8,["value"])]),_:1}),a(g,{type:"warning",style:{"margin-bottom":"8px"}},{default:l(()=>[...e[7]||(e[7]=[f(" 请使用 RAM 子账号密钥并授权 ",-1),C("code",null,"AliyunYundunAFSFullAccess",-1),f(" 权限,切勿使用主账号密钥。 ",-1)])]),_:1}),y.value?(_(),S(k,{key:0,type:"success",size:"small"},{default:l(()=>[...e[8]||(e[8]=[f("✓ 已完整配置",-1)])]),_:1})):(_(),S(k,{key:1,type:"warning",size:"small"},{default:l(()=>[...e[9]||(e[9]=[f("未完成配置",-1)])]),_:1}))]),_:1})]),_:1})}}},he={__name:"CloudflareConfig",props:{modelValue:{type:Object,default:()=>({})},modelModifiers:{}},emits:["update:modelValue"],setup(T){const s=R(T,"modelValue"),y=x(()=>{const v=s.value;return!!(v.site_key&&v.secret_key)}),u=[{label:"自动",value:"auto"},{label:"浅色",value:"light"},{label:"深色",value:"dark"}],e=[{label:"正常",value:"normal"},{label:"紧凑",value:"compact"}];return(v,o)=>{const m=i("n-input"),p=i("n-form-item"),g=i("n-select"),k=i("n-tag"),I=i("n-space"),V=i("n-form");return _(),S(V,{"label-placement":"left","label-width":"130"},{default:l(()=>[a(I,{vertical:"",style:{width:"100%"}},{default:l(()=>[a(p,{label:"Site Key"},{default:l(()=>[a(m,{value:s.value.site_key,"onUpdate:value":o[0]||(o[0]=c=>s.value.site_key=c),placeholder:"Cloudflare Turnstile Site Key",autocomplete:"off"},null,8,["value"])]),_:1}),a(p,{label:"Secret Key"},{default:l(()=>[a(m,{value:s.value.secret_key,"onUpdate:value":o[1]||(o[1]=c=>s.value.secret_key=c),type:"password","show-password-on":"click",autocomplete:"current-password"},null,8,["value"])]),_:1}),a(p,{label:"自定义域名"},{default:l(()=>[a(m,{value:s.value.domain,"onUpdate:value":o[2]||(o[2]=c=>s.value.domain=c),placeholder:"留空使用默认域名",autocomplete:"url"},null,8,["value"])]),_:1}),a(p,{label:"主题"},{default:l(()=>[a(g,{value:s.value.theme,"onUpdate:value":o[3]||(o[3]=c=>s.value.theme=c),options:u,clearable:""},null,8,["value"])]),_:1}),a(p,{label:"尺寸"},{default:l(()=>[a(g,{value:s.value.size,"onUpdate:value":o[4]||(o[4]=c=>s.value.size=c),options:e,clearable:""},null,8,["value"])]),_:1}),y.value?(_(),S(k,{key:0,type:"success",size:"small"},{default:l(()=>[...o[5]||(o[5]=[f("✓ 已完整配置",-1)])]),_:1})):(_(),S(k,{key:1,type:"warning",size:"small"},{default:l(()=>[...o[6]||(o[6]=[f("未完成配置",-1)])]),_:1}))]),_:1})]),_:1})}}},ke={__name:"GeetestConfig",props:{modelValue:{type:Object,default:()=>({product:"bind"})},modelModifiers:{}},emits:["update:modelValue"],setup(T){const s=R(T,"modelValue"),y=x(()=>{const u=s.value;return!!(u.captcha_id&&u.captcha_key)});return(u,e)=>{const v=i("n-input"),o=i("n-form-item"),m=i("n-tag"),p=i("n-space"),g=i("n-form");return _(),S(g,{"label-placement":"left","label-width":"130"},{default:l(()=>[a(p,{vertical:"",style:{width:"100%"}},{default:l(()=>[a(o,{label:"Captcha ID"},{default:l(()=>[a(v,{value:s.value.captcha_id,"onUpdate:value":e[0]||(e[0]=k=>s.value.captcha_id=k),placeholder:"极验 GeeTest CaptchaID",autocomplete:"off"},null,8,["value"])]),_:1}),a(o,{label:"Captcha Key"},{default:l(()=>[a(v,{value:s.value.captcha_key,"onUpdate:value":e[1]||(e[1]=k=>s.value.captcha_key=k),type:"password","show-password-on":"click",autocomplete:"current-password"},null,8,["value"])]),_:1}),y.value?(_(),S(m,{key:0,type:"success",size:"small"},{default:l(()=>[...e[2]||(e[2]=[f("✓ 已完整配置",-1)])]),_:1})):(_(),S(m,{key:1,type:"warning",size:"small"},{default:l(()=>[...e[3]||(e[3]=[f("未完成配置",-1)])]),_:1}))]),_:1})]),_:1})}}},be={class:"aksrt-schema-page"},Se={key:0,class:"aksrt-schema-page__tool-actions"},Ce={class:"captcha-test-panel"},Te={class:"captcha-test-body"},xe={key:0,style:{"text-align":"center",padding:"40px"}},Ue={style:{"font-size":"16px",margin:"0"}},Ae={key:2,id:"captcha-test-box",style:{"min-height":"150px"}},Ie={__name:"SchemaPage",props:{domain:{type:String,default:""},section:{type:String,default:""},showSearch:{type:Boolean,default:!0}},setup(T){const s=T,y=ce(),u=ge(),e=L(!1),v=L(!1),o=L(null),m=x(()=>{var n,t;return ve(s.domain||((n=y.meta)==null?void 0:n.canonicalDomain)||((t=y.meta)==null?void 0:t.schemaDomain)||I(y.path))}),p=x(()=>{var n,t;return s.section||((n=y.meta)==null?void 0:n.section)||((t=y.meta)==null?void 0:t.schemaSection)||V(y.path)}),g=x(()=>m.value==="permissions"&&p.value==="login"),k=x(()=>m.value==="permissions"&&p.value==="moderation");function I(n){return n.split("/").filter(Boolean)[0]||"global"}function V(n){const t=n.split("/").filter(Boolean);return t[t.length-1]||"common"}const c=x(()=>{var t,h;const n=$(m.value,p.value);return n&&n.groups&&n.groups.length>0?{title:n.title||"",description:n.description||"",icon:n.icon||"",groups:n.groups}:{title:((t=y.meta)==null?void 0:t.title)||"",description:((h=y.meta)==null?void 0:h.desc)||"",icon:"",groups:[]}}),N=x(()=>{const n=$(m.value,p.value);if(!n)return{};const t={};for(const h of n.groups||[])for(const d of h.fields||[])d.default!==void 0&&(t[d.key]=d.default);return t}),{formData:z,loading:B,saving:q,loadError:O,dirty:G,save:J,reload:E}=me({fetch:()=>F.getSchemaPage(m.value,p.value),submit:n=>F.saveSchemaPage(m.value,p.value,n),defaults:N.value,onSaved:()=>{u.success("设置已保存")}});async function Y(){try{await J()}catch(n){u.error("保存失败: "+((n==null?void 0:n.message)||"未知错误"))}}function Q(){U(),E(),u.info("已放弃更改")}function W(n){if(!z.value||!n)return{};const t=z.value[n];return t&&typeof t=="object"?t:{}}function X(){var r;const n=(r=z.value)==null?void 0:r.active_provider;if(!n)return;const t=W(n),d=({tencent:["secret_id","secret_key","app_id","app_secret_key"],aliyun:["region","prefix","scene_id","access_key_id","access_key_secret"],cloudflare:["site_key","secret_key"],geetest:["captcha_id","captcha_key"]}[n]||[]).filter(D=>!t[D]);if(d.length){u.warning(`请先填写必填字段: ${d.join(", ")}`);return}if(n==="tencent"){j(t);return}e.value=!0,o.value=null,v.value=!0,pe(()=>{Z(n,t)})}function j(n){const t="https://turing.captcha.qcloud.com/TJCaptcha.js";if(typeof window.TencentCaptcha<"u"){try{new window.TencentCaptcha(n.app_id,function(r){r.ret===0?u.success("腾讯云验证码测试成功!配置正确。"):u.warning("验证已取消。")},{userLanguage:"zh-cn"}).show()}catch(r){u.error("初始化失败: "+r.message)}return}const h=document.querySelector('script[src="'+t+'"]');if(h){h.addEventListener("load",function(){j(n)},{once:!0});return}const d=document.createElement("script");d.src=t,d.onload=function(){try{new window.TencentCaptcha(n.app_id,function(r){r.ret===0?u.success("腾讯云验证码测试成功!"):u.warning("验证已取消。")},{userLanguage:"zh-cn"}).show()}catch(r){u.error("初始化失败: "+r.message)}},d.onerror=function(){u.error("加载腾讯验证码SDK失败")},document.head.appendChild(d)}function Z(n,t){setTimeout(()=>{v.value=!1,H(n,t)},100)}function H(n,t){const h=document.getElementById("captcha-test-sdk");if(h&&h.remove(),window.__gtTestCaptcha){try{window.__gtTestCaptcha.destroy()}catch{}window.__gtTestCaptcha=null}const d=document.createElement("script");switch(d.id="captcha-test-sdk",n){case"tencent":d.src="https://turing.captcha.qcloud.com/TJCaptcha.js",d.onload=function(){try{new window.TencentCaptcha(t.app_id,function(r){o.value={success:r.ret===0,message:r.ret===0?"验证成功!":"验证已取消。"}},{userLanguage:"zh-cn"}).show()}catch(r){o.value={success:!1,message:"初始化失败: "+r.message}}},d.onerror=function(){o.value={success:!1,message:"加载SDK失败"}};break;case"cloudflare":window.onTurnstileTestLoad=function(){try{window.turnstile.render("#captcha-test-box",{sitekey:t.site_key,theme:"auto",size:t.size||"normal",callback:function(){o.value={success:!0,message:"验证成功!"},u.success("Cloudflare Turnstile 测试成功!"),setTimeout(U,1500)},"error-callback":function(){o.value={success:!1,message:"验证失败"}}})}catch(r){o.value={success:!1,message:"初始化失败: "+r.message}}},d.src="https://challenges.cloudflare.com/turnstile/v0/api.js?onload=onTurnstileTestLoad",d.onerror=function(){o.value={success:!1,message:"加载SDK失败"}};break;case"geetest":d.src="https://static.geetest.com/v4/gt4.js",d.onload=function(){try{window.initGeetest4({captchaId:t.captcha_id,product:t.product||"float"},function(r){window.__gtTestCaptcha=r;const D=function(){o.value={success:!0,message:"验证成功!"},u.success("极验 GeeTest 测试成功!"),setTimeout(U,1500)},P=function(b){o.value={success:!1,message:"出错: "+(b.msg||"?")}},w=function(){o.value||(o.value={success:!1,message:"已关闭"})};(t.product||"float")==="bind"?r.onReady(()=>r.showCaptcha()).onSuccess(D).onError(P).onClose(w):r.appendTo("#captcha-test-box").onReady(()=>{}).onSuccess(D).onError(P).onClose(w)})}catch(r){o.value={success:!1,message:"初始化失败: "+r.message}}},d.onerror=function(){o.value={success:!1,message:"加载SDK失败"}};break;case"aliyun":window.AliyunCaptchaConfig={region:t.region||"cn",prefix:t.prefix},d.src="https://o.alicdn.com/captcha-frontend/aliyunCaptcha/AliyunCaptcha.js",d.onload=function(){try{window.initAliyunCaptcha({SceneId:t.scene_id,mode:"embed",element:"#captcha-test-box",success:function(){o.value={success:!0,message:"验证成功!"},u.success("阿里云测试成功!"),setTimeout(U,1500)},fail:function(r){o.value={success:!1,message:String(r)}},getInstance:function(){},slideStyle:{width:360,height:40},language:"cn"})}catch(r){o.value={success:!1,message:"初始化失败: "+r.message}}},d.onerror=function(){o.value={success:!1,message:"加载SDK失败"}};break;default:o.value={success:!1,message:"未知服务商"};return}document.head.appendChild(d)}function U(){if(e.value=!1,o.value=null,v.value=!1,window.__gtTestCaptcha){try{window.__gtTestCaptcha.destroy()}catch{}window.__gtTestCaptcha=null}const n=document.getElementById("captcha-test-sdk");if(n&&n.remove(),window.onTurnstileTestLoad)try{delete window.onTurnstileTestLoad}catch{}}return te([m,p],([n,t],[h,d])=>{(n!==h||t!==d)&&(U(),E())}),ae(()=>{U()}),(n,t)=>{var D,P;const h=i("n-dynamic-tags"),d=i("n-button"),r=i("n-spin");return _(),K("div",be,[a(fe,{title:c.value.title,description:c.value.description,icon:c.value.icon,schema:c.value.groups,"form-data":A(z),dirty:A(G),loading:A(B),saving:A(q),"load-error":A(O),"show-search":T.showSearch,"onUpdate:formData":t[0]||(t[0]=w=>z.value=w),onSave:Y,onReload:Q},ne({_:2},[g.value?{name:"field-tencent",fn:l(({value:w,setValue:b})=>[a(ye,{"model-value":w||{},"onUpdate:modelValue":b},null,8,["model-value","onUpdate:modelValue"])]),key:"0"}:void 0,g.value?{name:"field-aliyun",fn:l(({value:w,setValue:b})=>[a(we,{"model-value":w||{},"onUpdate:modelValue":b},null,8,["model-value","onUpdate:modelValue"])]),key:"1"}:void 0,g.value?{name:"field-cloudflare",fn:l(({value:w,setValue:b})=>[a(he,{"model-value":w||{},"onUpdate:modelValue":b},null,8,["model-value","onUpdate:modelValue"])]),key:"2"}:void 0,g.value?{name:"field-geetest",fn:l(({value:w,setValue:b})=>[a(ke,{"model-value":w||{},"onUpdate:modelValue":b},null,8,["model-value","onUpdate:modelValue"])]),key:"3"}:void 0,k.value?{name:"field-geoip_block_countries",fn:l(({value:w,setValue:b})=>[a(h,{value:Array.isArray(w)?w:[],"onUpdate:value":b},null,8,["value","onUpdate:value"]),t[1]||(t[1]=C("p",{class:"aksrt-schema-page__field-hint"},"使用 ISO 国家代码,如 CN / US / RU。",-1))]),key:"4"}:void 0,le(n.$slots,(w,b)=>({name:b,fn:l(ee=>[re(n.$slots,b,ie(de(ee)),void 0,!0)])}))]),1032,["title","description","icon","schema","form-data","dirty","loading","saving","load-error","show-search"]),g.value&&!A(B)?(_(),K("div",Se,[a(d,{disabled:!((D=A(z))!=null&&D.enabled)||!((P=A(z))!=null&&P.active_provider),onClick:X},{default:l(()=>[...t[2]||(t[2]=[f(" 测试验证 ",-1)])]),_:1},8,["disabled"])])):M("",!0),e.value?(_(),K("div",{key:1,class:"captcha-test-overlay",onClick:oe(U,["self"])},[C("div",Ce,[C("div",{class:"captcha-test-header"},[t[3]||(t[3]=C("span",null,"测试验证码",-1)),C("button",{class:"captcha-test-close",onClick:U},"×")]),C("div",Te,[v.value?(_(),K("div",xe,[a(r),t[4]||(t[4]=C("p",{style:{"margin-top":"10px",color:"#999"}},"加载中...",-1))])):M("",!0),o.value&&!v.value?(_(),K("div",{key:1,style:se({color:o.value.success?"#18a058":"#d03050",textAlign:"center",padding:"20px"})},[C("p",Ue,ue(o.value.message),1)],4)):M("",!0),!v.value&&!o.value?(_(),K("div",Ae)):M("",!0)])])])):M("",!0)])}}},Le=_e(Ie,[["__scopeId","data-v-a4bec770"]]);export{Le as default};
diff --git a/assets/admin/build/SchemaPage.css b/assets/admin/build/SchemaPage.css
deleted file mode 100644
index ed661ac8..00000000
--- a/assets/admin/build/SchemaPage.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-schema-page[data-v-a4bec770]{max-width:1100px;margin:0 auto}.aksrt-schema-page__tool-actions[data-v-a4bec770]{display:flex;justify-content:flex-end;margin-top:16px}.aksrt-schema-page__field-hint[data-v-a4bec770]{margin:8px 0 0;font-size:12px;color:#8a909c}.captcha-test-overlay[data-v-a4bec770]{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:9999}.captcha-test-panel[data-v-a4bec770]{background:#fff;border-radius:12px;width:420px;max-width:90%;box-shadow:0 8px 32px #0000002e}.captcha-test-header[data-v-a4bec770]{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;border-bottom:1px solid #e8e8ec;font-size:16px;font-weight:600}.captcha-test-close[data-v-a4bec770]{background:none;border:none;font-size:24px;cursor:pointer;color:#999;padding:0;line-height:1}.captcha-test-close[data-v-a4bec770]:hover{color:#333}.captcha-test-body[data-v-a4bec770]{padding:24px;min-height:180px;display:flex;justify-content:center;align-items:center}
diff --git a/assets/admin/build/ThemeAuthorizationPage.exqEspJr.js b/assets/admin/build/ThemeAuthorizationPage.exqEspJr.js
deleted file mode 100644
index e85684f9..00000000
--- a/assets/admin/build/ThemeAuthorizationPage.exqEspJr.js
+++ /dev/null
@@ -1 +0,0 @@
-import{X as k,a4 as n,a3 as o,a1 as s,_ as c,W as x,f as e}from"./vendor-vue.Bykizn0M.js";import{P as C}from"./PageHeader.Di3JTPjc.js";import"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const b={class:"aksrt-page-container"},q={__name:"ThemeAuthorizationPage",setup(g){const d=c();function r(a){d.push(a)}return(a,t)=>{const i=s("n-button"),p=s("n-space"),_=s("n-alert"),u=s("n-card"),l=s("n-list-item"),m=s("n-list");return x(),k("div",b,[n(C,{title:"主题授权",desc:"当前版本按产品决策不实现在线授权/撤销授权,仅保留主题信息与更新能力。"},{actions:o(()=>[n(p,null,{default:o(()=>[n(i,{quaternary:"",onClick:t[0]||(t[0]=f=>r("/tools/import-export"))},{default:o(()=>[...t[2]||(t[2]=[e("兼容&工具",-1)])]),_:1}),n(i,{quaternary:"",onClick:t[1]||(t[1]=f=>r("/tools/update"))},{default:o(()=>[...t[3]||(t[3]=[e("更新中心",-1)])]),_:1})]),_:1})]),_:1}),n(u,{class:"aksrt-section-card"},{default:o(()=>[n(_,{type:"info",title:"按设计省略","show-icon":!0},{default:o(()=>[...t[4]||(t[4]=[e(" 本主题当前不实现 zibll 风格的授权码校验、域名绑定、撤销授权、本地免授权等机制。 `AKSRT_Update_Checker` 仅负责匿名版本检测与更新提示,不与授权系统耦合。 ",-1)])]),_:1})]),_:1}),n(u,{class:"aksrt-section-card",title:"当前策略",size:"small"},{default:o(()=>[n(m,{bordered:""},{default:o(()=>[n(l,null,{default:o(()=>[...t[5]||(t[5]=[e("不提供授权码输入框或“立即授权”按钮",-1)])]),_:1}),n(l,null,{default:o(()=>[...t[6]||(t[6]=[e("不提供“已授权 / 未授权 / 本地免授权”三态逻辑",-1)])]),_:1}),n(l,null,{default:o(()=>[...t[7]||(t[7]=[e("更新能力统一收口到“更新中心”与“主题信息”页",-1)])]),_:1}),n(l,null,{default:o(()=>[...t[8]||(t[8]=[e("若未来恢复授权体系,应单独立项,不与现有更新检测器混接",-1)])]),_:1})]),_:1})]),_:1})])}}};export{q as default};
diff --git a/assets/admin/build/ThemeInfoPage.CmzNxB-f.js b/assets/admin/build/ThemeInfoPage.CmzNxB-f.js
deleted file mode 100644
index c8558987..00000000
--- a/assets/admin/build/ThemeInfoPage.CmzNxB-f.js
+++ /dev/null
@@ -1 +0,0 @@
-import{P as M}from"./PageHeader.Di3JTPjc.js";import{_ as f}from"./FaIcon.CX_hGmM4.js";import{a as B}from"./shared-api.D5_fnN32.js";import{_ as P}from"./index.js";import{b as _,g as b}from"./vendor-naive.BuHWlEgf.js";import{o as T,X as z,a4 as e,F as w,a3 as a,r as V,a1 as c,W as p,N as d,f as n,Z as u,Y as m,R as N,a2 as x,a5 as S,k as C}from"./vendor-vue.Bykizn0M.js";import"./vendor-misc.1adHN6i_.js";const I={class:"aksrt-page-container"},F={key:0,class:"aksrt-theme-info__loading"},H={class:"aksrt-theme-info__modules"},E={class:"aksrt-theme-info__links"},L={__name:"ThemeInfoPage",setup(R){const g=V(!0),t=V({themeVersion:"",wpVersion:"",phpVersion:"",dbSchemaVersion:"",emailBackfillDone:!1,siteUrl:"",apiUrl:"",themeDir:"",uploadDir:"",isMultisite:!1,debugMode:!1,modules:[],tables:[]}),D=[{title:"数据表",key:"name",width:220},{title:"状态",key:"exists",width:100,render(s){return C(_,{type:s.exists?"success":"error",size:"small",bordered:!1},{default:()=>s.exists?"正常":"缺失"})}},{title:"行数",key:"rows",width:100,render(s){return s.exists?s.rows.toLocaleString():"—"}}];T(async()=>{var s,l,v,o,k;try{const r=await B.getHealthCheck(),i=(r==null?void 0:r.data)||r||{};t.value={themeVersion:((s=window.aksrtAdminData)==null?void 0:s.themeVersion)||i.theme_version||"3.4.0-dev",wpVersion:i.wp_version||"",phpVersion:i.php_version||"",dbSchemaVersion:i.db_schema_version||"",emailBackfillDone:!!i.email_backfill_done,siteUrl:i.site_url||((l=window.aksrtAdminData)==null?void 0:l.siteUrl)||"",apiUrl:i.api_url||((v=window.aksrtAdminData)==null?void 0:v.apiUrl)||"",themeDir:i.theme_dir||"",uploadDir:i.upload_dir||"",isMultisite:!!i.is_multisite,debugMode:!!i.debug_mode,modules:U(i.modules||[]),tables:A(i.tables||[])}}catch(r){console.error("[ThemeInfo] Failed to load health data:",r),t.value.themeVersion="3.4.0-dev",t.value.siteUrl=((o=window.aksrtAdminData)==null?void 0:o.siteUrl)||"",t.value.apiUrl=((k=window.aksrtAdminData)==null?void 0:k.apiUrl)||""}finally{g.value=!1}});function U(s){return Array.isArray(s)?s.map(l=>({key:l.key||l.name||"",label:l.label||l.name||l.key||"",enabled:!!l.enabled})):[]}function A(s){return Array.isArray(s)?s.map(l=>({name:l.name||"",exists:!!l.exists,rows:l.rows||0})):[]}return(s,l)=>{const v=c("n-spin"),o=c("n-descriptions-item"),k=c("n-descriptions"),r=c("n-card"),i=c("n-data-table"),h=c("router-link");return p(),z("div",I,[e(M,{title:"主题信息",desc:"主题版本、运行环境、已启用模块和关键系统信息。"}),g.value?(p(),z("div",F,[e(v,{size:"medium"})])):(p(),z(w,{key:1},[e(r,{class:"aksrt-theme-info__card",title:"版本信息",size:"small"},{default:a(()=>[e(k,{column:2,bordered:"","label-placement":"left",size:"small"},{default:a(()=>[e(o,{label:"主题版本"},{default:a(()=>[e(d(_),{type:"success",size:"small"},{default:a(()=>[n(u(t.value.themeVersion),1)]),_:1})]),_:1}),e(o,{label:"WordPress 版本"},{default:a(()=>[n(u(t.value.wpVersion),1)]),_:1}),e(o,{label:"PHP 版本"},{default:a(()=>[e(d(_),{type:t.value.phpVersion>="8.1"?"success":"warning",size:"small"},{default:a(()=>[n(u(t.value.phpVersion),1)]),_:1},8,["type"])]),_:1}),e(o,{label:"数据库 Schema"},{default:a(()=>[e(d(_),{type:"info",size:"small"},{default:a(()=>[n(u(t.value.dbSchemaVersion),1)]),_:1})]),_:1}),e(o,{label:"邮箱验证回填"},{default:a(()=>[e(d(_),{type:t.value.emailBackfillDone?"success":"default",size:"small"},{default:a(()=>[n(u(t.value.emailBackfillDone?"已完成":"未触发"),1)]),_:1},8,["type"])]),_:1})]),_:1})]),_:1}),e(r,{class:"aksrt-theme-info__card",title:"运行环境",size:"small"},{default:a(()=>[e(k,{column:2,bordered:"","label-placement":"left",size:"small"},{default:a(()=>[e(o,{label:"站点地址"},{default:a(()=>[e(d(b),{code:""},{default:a(()=>[n(u(t.value.siteUrl),1)]),_:1})]),_:1}),e(o,{label:"REST API"},{default:a(()=>[e(d(b),{code:""},{default:a(()=>[n(u(t.value.apiUrl),1)]),_:1})]),_:1}),e(o,{label:"主题目录"},{default:a(()=>[e(d(b),{code:""},{default:a(()=>[n(u(t.value.themeDir),1)]),_:1})]),_:1}),e(o,{label:"上传目录"},{default:a(()=>[e(d(b),{code:""},{default:a(()=>[n(u(t.value.uploadDir),1)]),_:1})]),_:1}),e(o,{label:"多站点"},{default:a(()=>[e(d(_),{type:t.value.isMultisite?"warning":"default",size:"small"},{default:a(()=>[n(u(t.value.isMultisite?"是":"否"),1)]),_:1},8,["type"])]),_:1}),e(o,{label:"调试模式"},{default:a(()=>[e(d(_),{type:t.value.debugMode?"warning":"default",size:"small"},{default:a(()=>[n(u(t.value.debugMode?"开启":"关闭"),1)]),_:1},8,["type"])]),_:1})]),_:1})]),_:1}),e(r,{class:"aksrt-theme-info__card",title:"已启用模块",size:"small"},{default:a(()=>[m("div",H,[(p(!0),z(w,null,N(t.value.modules,y=>(p(),x(d(_),{key:y.key,type:y.enabled?"success":"default",size:"small",class:"aksrt-theme-info__module-tag"},{default:a(()=>[e(f,{icon:y.enabled?"fas fa-check-circle":"fas fa-circle",size:10},null,8,["icon"]),n(" "+u(y.label),1)]),_:2},1032,["type"]))),128))]),t.value.modules.length?S("",!0):(p(),x(d(b),{key:0,depth:"3",style:{"font-size":"13px"}},{default:a(()=>[...l[0]||(l[0]=[n(" 暂无模块信息 ",-1)])]),_:1}))]),_:1}),e(r,{class:"aksrt-theme-info__card",title:"数据表状态",size:"small"},{default:a(()=>[e(i,{columns:D,data:t.value.tables,bordered:!0,size:"small","max-height":300},null,8,["data"])]),_:1}),e(r,{class:"aksrt-theme-info__card",title:"快速入口",size:"small"},{default:a(()=>[m("div",E,[e(h,{to:"/docs",class:"aksrt-theme-info__link"},{default:a(()=>[e(f,{icon:"fas fa-book",size:16}),l[1]||(l[1]=m("span",null,"文档中心",-1))]),_:1}),e(h,{to:"/tools/update",class:"aksrt-theme-info__link"},{default:a(()=>[e(f,{icon:"fas fa-cloud-arrow-down",size:16}),l[2]||(l[2]=m("span",null,"更新中心",-1))]),_:1}),e(h,{to:"/tools/backup",class:"aksrt-theme-info__link"},{default:a(()=>[e(f,{icon:"fas fa-box-archive",size:16}),l[3]||(l[3]=m("span",null,"数据备份",-1))]),_:1}),e(h,{to:"/tools/health",class:"aksrt-theme-info__link"},{default:a(()=>[e(f,{icon:"fas fa-heartbeat",size:16}),l[4]||(l[4]=m("span",null,"健康检查",-1))]),_:1}),e(h,{to:"/tools/import-export",class:"aksrt-theme-info__link"},{default:a(()=>[e(f,{icon:"fas fa-exchange-alt",size:16}),l[5]||(l[5]=m("span",null,"导入导出",-1))]),_:1})])]),_:1})],64))])}}},G=P(L,[["__scopeId","data-v-ded10315"]]);export{G as default};
diff --git a/assets/admin/build/ThemeInfoPage.css b/assets/admin/build/ThemeInfoPage.css
deleted file mode 100644
index da771f44..00000000
--- a/assets/admin/build/ThemeInfoPage.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-theme-info__loading[data-v-ded10315]{display:flex;justify-content:center;padding:60px 0}.aksrt-theme-info__card[data-v-ded10315]{margin-bottom:16px}.aksrt-theme-info__modules[data-v-ded10315]{display:flex;flex-wrap:wrap;gap:8px}.aksrt-theme-info__module-tag[data-v-ded10315]{display:inline-flex;align-items:center;gap:5px}.aksrt-theme-info__links[data-v-ded10315]{display:flex;flex-wrap:wrap;gap:12px}.aksrt-theme-info__link[data-v-ded10315]{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:6px;background:#f5f7fa;color:#333;text-decoration:none;font-size:13px;transition:background .2s}.aksrt-theme-info__link[data-v-ded10315]:hover{background:#e8eaed}
diff --git a/assets/admin/build/ToolsEmailRollback.YrJUTDzS.js b/assets/admin/build/ToolsEmailRollback.YrJUTDzS.js
deleted file mode 100644
index e4f69b01..00000000
--- a/assets/admin/build/ToolsEmailRollback.YrJUTDzS.js
+++ /dev/null
@@ -1 +0,0 @@
-import{o as N,X as u,a4 as o,a3 as s,r as _,a1 as n,_ as T,W as r,f as d,Y as l,Z as i,F as V,R as q,a2 as z}from"./vendor-vue.Bykizn0M.js";import{a as y}from"./shared-api.D5_fnN32.js";import{P as A}from"./PageHeader.Di3JTPjc.js";import{_ as D}from"./index.js";import{u as F}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const P={class:"aksrt-page-container"},$={class:"aksrt-section-header"},H={key:0,class:"aksrt-rollback-list"},I={style:{margin:"6px 0 0",color:"#4b5565"}},L={style:{margin:"6px 0 0",color:"#7a7f8a","font-size":"12px"}},S={__name:"ToolsEmailRollback",setup(U){const h=T(),c=F(),m=_(!0),p=_(0),f=_([]),v=_(0);function x(t){h.push(t)}function b(t){return(t==null?void 0:t.data)??t??{}}async function g(){m.value=!0;try{const t=b(await y.getEmailRollbackUsers());f.value=Array.isArray(t.items)?t.items:[],v.value=Number(t.total||0)}catch(t){c.error(t.message||"加载邮件回滚列表失败")}finally{m.value=!1}}async function w(t){p.value=t;try{const a=await y.executeEmailRollback(t);a.code==="success"?(c.success(a.message||"回滚成功"),await g()):c.error(a.message||"回滚失败")}catch(a){c.error(a.message||"回滚失败")}finally{p.value=0}}return N(g),(t,a)=>{const k=n("n-button"),R=n("n-space"),C=n("n-tag"),E=n("n-empty"),B=n("n-card"),M=n("n-spin");return r(),u("div",P,[o(A,{title:"邮件回滚",desc:"查看 14 天邮箱变更窗口内的账号,并在必要时执行回滚。"},{actions:s(()=>[o(R,null,{default:s(()=>[o(k,{quaternary:"",onClick:a[0]||(a[0]=e=>x("/tools/health"))},{default:s(()=>[...a[1]||(a[1]=[d("健康检查",-1)])]),_:1}),o(k,{quaternary:"",onClick:g},{default:s(()=>[...a[2]||(a[2]=[d("刷新列表",-1)])]),_:1})]),_:1})]),_:1}),o(M,{show:m.value,style:{width:"100%","min-height":"200px"}},{default:s(()=>[o(B,{class:"aksrt-section-card"},{default:s(()=>[l("div",$,[a[3]||(a[3]=l("h3",null,"待处理账号",-1)),o(C,{round:"",type:"info"},{default:s(()=>[d("总计 "+i(v.value),1)]),_:1})]),f.value.length?(r(),u("div",H,[(r(!0),u(V,null,q(f.value,e=>(r(),u("div",{key:e.user_id,class:"aksrt-rollback-list__item"},[l("div",null,[l("strong",null,i(e.display_name||e.login),1),l("p",I,i(e.current_email)+" → "+i(e.previous_email),1),l("p",L," 剩余窗口:"+i(Math.max(0,Math.floor((e.expires_in||0)/3600)))+" 小时 ",1)]),o(k,{size:"small",loading:p.value===e.user_id,onClick:W=>w(e.user_id)},{default:s(()=>[...a[4]||(a[4]=[d(" 执行回滚 ",-1)])]),_:1},8,["loading","onClick"])]))),128))])):(r(),z(E,{key:1,description:"当前没有可回滚的邮箱变更记录"}))]),_:1})]),_:1},8,["show"])])}}},K=D(S,[["__scopeId","data-v-775b42f3"]]);export{K as default};
diff --git a/assets/admin/build/ToolsEmailRollback.css b/assets/admin/build/ToolsEmailRollback.css
deleted file mode 100644
index 3e481db4..00000000
--- a/assets/admin/build/ToolsEmailRollback.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-rollback-list[data-v-775b42f3]{display:grid;gap:12px}.aksrt-rollback-list__item[data-v-775b42f3]{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:14px 16px;border:1px solid #e7ebf3;border-radius:14px}@media(max-width:768px){.aksrt-rollback-list__item[data-v-775b42f3]{align-items:flex-start;flex-direction:column}}
diff --git a/assets/admin/build/ToolsHealth.CoF-E7n8.js b/assets/admin/build/ToolsHealth.CoF-E7n8.js
deleted file mode 100644
index 6416afe1..00000000
--- a/assets/admin/build/ToolsHealth.CoF-E7n8.js
+++ /dev/null
@@ -1 +0,0 @@
-import{o as B,X as y,a4 as n,a3 as a,r as _,a1 as i,_ as V,W as f,f as r,Y as l,Z as u,F as D,R as E,a2 as N,c as P}from"./vendor-vue.Bykizn0M.js";import{a as b}from"./shared-api.D5_fnN32.js";import{P as q}from"./PageHeader.Di3JTPjc.js";import{_ as F}from"./index.js";import{u as I}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const M={class:"aksrt-page-container"},S={class:"aksrt-health-grid"},$={class:"aksrt-section-header"},j={style:{margin:"0",color:"#4b5565"}},L={__name:"ToolsHealth",setup(O){const w=V(),x=I(),d=_(!0),p=_({}),o=_({feature_enabled:!1,pending_users:0,rest_blocking_active:!1}),H=P(()=>Object.entries(p.value||{}).map(([e,t])=>({key:e,...t||{}})));function m(e){w.push(e)}function g(e){return(e==null?void 0:e.data)??e??{}}function T(e){return e==="ok"?"success":e==="warning"?"warning":e==="error"?"error":"info"}async function C(){d.value=!0;try{const[e,t]=await Promise.all([b.getHealthCheck(),b.getHealthEmailVerification()]);p.value=g(e).checks||{},o.value=g(t)}catch(e){x.error(e.message||"加载健康检查失败")}finally{d.value=!1}}return B(C),(e,t)=>{const v=i("n-button"),h=i("n-space"),c=i("n-tag"),k=i("n-card"),R=i("n-spin");return f(),y("div",M,[n(q,{title:"健康检查",desc:"集中查看运行环境、数据库表、邮箱验证迁移和系统诊断状态。"},{actions:a(()=>[n(h,null,{default:a(()=>[n(v,{quaternary:"",onClick:t[0]||(t[0]=s=>m("/tools/import-export"))},{default:a(()=>[...t[2]||(t[2]=[r("导入导出",-1)])]),_:1}),n(v,{quaternary:"",onClick:t[1]||(t[1]=s=>m("/tools/email-rollback"))},{default:a(()=>[...t[3]||(t[3]=[r("邮件回滚",-1)])]),_:1})]),_:1})]),_:1}),n(R,{show:d.value,style:{width:"100%","min-height":"200px"}},{default:a(()=>[n(k,{class:"aksrt-section-card"},{default:a(()=>[t[4]||(t[4]=l("div",{class:"aksrt-section-header"},[l("h3",null,"邮箱验证状态")],-1)),n(h,null,{default:a(()=>[n(c,{round:"",type:o.value.feature_enabled?"success":"default"},{default:a(()=>[r(" 功能开关:"+u(o.value.feature_enabled?"已启用":"未启用"),1)]),_:1},8,["type"]),n(c,{round:"",type:o.value.rest_blocking_active?"warning":"default"},{default:a(()=>[r(" REST 阻断:"+u(o.value.rest_blocking_active?"已开启":"仅记录/关闭"),1)]),_:1},8,["type"]),n(c,{round:"",type:"info"},{default:a(()=>[r(" 待验证用户:"+u(o.value.pending_users),1)]),_:1})]),_:1})]),_:1}),l("div",S,[(f(!0),y(D,null,E(H.value,s=>(f(),N(k,{key:s.key,class:"aksrt-section-card"},{default:a(()=>[l("div",$,[l("h3",null,u(s.label),1),n(c,{round:"",type:T(s.status)},{default:a(()=>[r(u(s.status),1)]),_:2},1032,["type"])]),l("p",j,u(s.value),1)]),_:2},1024))),128))])]),_:1},8,["show"])])}}},G=F(L,[["__scopeId","data-v-485f9fd2"]]);export{G as default};
diff --git a/assets/admin/build/ToolsHealth.css b/assets/admin/build/ToolsHealth.css
deleted file mode 100644
index 884d0c35..00000000
--- a/assets/admin/build/ToolsHealth.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-health-grid[data-v-485f9fd2]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}
diff --git a/assets/admin/build/ToolsImportExport.CBVCMq0z.js b/assets/admin/build/ToolsImportExport.CBVCMq0z.js
deleted file mode 100644
index 5b4fc82a..00000000
--- a/assets/admin/build/ToolsImportExport.CBVCMq0z.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import{X as $,a4 as a,a3 as l,a1 as c,_ as A,W as B,f as r,Y as n,Z as P,r as u}from"./vendor-vue.Bykizn0M.js";import{a as f}from"./shared-api.D5_fnN32.js";import{P as V}from"./PageHeader.Di3JTPjc.js";import{_ as q}from"./index.js";import{u as U}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const z={class:"aksrt-page-container"},H={class:"aksrt-tools-output"},M={__name:"ToolsImportExport",setup(W){const b=A(),s=U(),m=u(!1),i=u(!1),y=u(!1),g=u(!1),v=u(""),d=u(""),k=u("global"),N=[{label:"全局&功能",value:"global"},{label:"页面&显示",value:"page_display"},{label:"文章&列表",value:"post_list"},{label:"用户&互动",value:"users"},{label:"支付&付费",value:"payment"}];function w(e){b.push(e)}function C(e){return(e==null?void 0:e.data)??e??{}}function S(){try{return JSON.parse(v.value||"{}")}catch{throw new Error("导入 JSON 格式无效")}}async function O(){m.value=!0;try{const e=C(await f.exportSettings());v.value=JSON.stringify(e,null,2),d.value=`导出完成
-版本: ${e.version||"unknown"}
-时间: ${e.exported||"unknown"}`,s.success("导出成功")}catch(e){s.error(e.message||"导出失败")}finally{m.value=!1}}async function J(){i.value=!0;try{const e=S(),t=await f.importSettings({...e,dry_run:!0});d.value=JSON.stringify(t,null,2),s.success("Dry Run 校验完成")}catch(e){s.error(e.message||"校验失败")}finally{i.value=!1}}async function R(){i.value=!0;try{const e=S(),t=await f.importSettings(e);d.value=JSON.stringify(t,null,2),s.success("导入完成")}catch(e){s.error(e.message||"导入失败")}finally{i.value=!1}}async function D(){y.value=!0;try{const e=await f.resetDomain(k.value);d.value=JSON.stringify(e,null,2),s.success("域设置已重置")}catch(e){s.error(e.message||"重置失败")}finally{y.value=!1}}async function E(){if(window.confirm("确认重置全部 schema 托管设置吗?系统会先自动创建一份“重置全部前快照”。")){g.value=!0;try{const e=await f.resetAllSettings();d.value=JSON.stringify(e,null,2),s.success("全部设置已重置")}catch(e){s.error(e.message||"重置全部失败")}finally{g.value=!1}}}return(e,t)=>{const o=c("n-button"),x=c("n-space"),T=c("n-input"),_=c("n-card"),I=c("n-select");return B(),$("div",z,[a(V,{title:"导入导出",desc:"导出当前设置快照、执行 dry-run 导入校验,并支持按域重置到 schema 默认值。"},{actions:l(()=>[a(x,null,{default:l(()=>[a(o,{quaternary:"",onClick:t[0]||(t[0]=p=>w("/tools/backup"))},{default:l(()=>[...t[4]||(t[4]=[r("数据备份",-1)])]),_:1}),a(o,{quaternary:"",onClick:t[1]||(t[1]=p=>w("/tools/health"))},{default:l(()=>[...t[5]||(t[5]=[r("健康检查",-1)])]),_:1})]),_:1})]),_:1}),a(_,{class:"aksrt-section-card"},{default:l(()=>[t[9]||(t[9]=n("div",{class:"aksrt-section-header"},[n("h3",null,"导出与导入")],-1)),a(x,{style:{"margin-bottom":"16px"}},{default:l(()=>[a(o,{loading:m.value,onClick:O},{default:l(()=>[...t[6]||(t[6]=[r("导出当前配置",-1)])]),_:1},8,["loading"]),a(o,{loading:i.value,onClick:J},{default:l(()=>[...t[7]||(t[7]=[r("Dry Run 校验",-1)])]),_:1},8,["loading"]),a(o,{type:"primary",loading:i.value,onClick:R},{default:l(()=>[...t[8]||(t[8]=[r("执行导入",-1)])]),_:1},8,["loading"])]),_:1}),a(T,{value:v.value,"onUpdate:value":t[2]||(t[2]=p=>v.value=p),type:"textarea",autosize:{minRows:12,maxRows:20},placeholder:"导出的 JSON 会出现在这里,也可以直接粘贴导入。"},null,8,["value"]),t[10]||(t[10]=n("p",{class:"aksrt-tools-hint"}," 正式导入前会自动创建一份“导入前自动快照”,与“数据备份”页的快照体系共用,便于回滚。 ",-1))]),_:1}),a(_,{class:"aksrt-section-card"},{default:l(()=>[t[13]||(t[13]=n("div",{class:"aksrt-section-header"},[n("h3",null,"按域重置")],-1)),a(x,{align:"center",wrap:""},{default:l(()=>[a(I,{value:k.value,"onUpdate:value":t[3]||(t[3]=p=>k.value=p),options:N,style:{width:"220px"}},null,8,["value"]),a(o,{loading:y.value,onClick:D},{default:l(()=>[...t[11]||(t[11]=[r("重置所选域",-1)])]),_:1},8,["loading"]),a(o,{type:"error",tertiary:"",loading:g.value,onClick:E},{default:l(()=>[...t[12]||(t[12]=[r("重置全部",-1)])]),_:1},8,["loading"])]),_:1}),t[14]||(t[14]=n("p",{class:"aksrt-tools-hint"},"仅支持重置 schema 托管的业务域。健康检查、迁移状态和邮件回滚属于运维面板,不参与按域回滚。",-1))]),_:1}),a(_,{class:"aksrt-section-card"},{default:l(()=>[t[15]||(t[15]=n("div",{class:"aksrt-section-header"},[n("h3",null,"最近结果")],-1)),n("pre",H,P(d.value||"尚未执行操作。"),1)]),_:1})])}}},G=q(M,[["__scopeId","data-v-9ee419ed"]]);export{G as default};
diff --git a/assets/admin/build/ToolsImportExport.css b/assets/admin/build/ToolsImportExport.css
deleted file mode 100644
index 32fd237d..00000000
--- a/assets/admin/build/ToolsImportExport.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-tools-output[data-v-9ee419ed]{margin:0;padding:14px;border-radius:12px;background:#101828;color:#d0d7e2;font-size:12px;line-height:1.7;white-space:pre-wrap;word-break:break-word}.aksrt-tools-hint[data-v-9ee419ed]{margin:12px 0 0;color:#667085;font-size:12px;line-height:1.7}
diff --git a/assets/admin/build/ToolsUpdate.CTzLIO24.js b/assets/admin/build/ToolsUpdate.CTzLIO24.js
deleted file mode 100644
index f6db6135..00000000
--- a/assets/admin/build/ToolsUpdate.CTzLIO24.js
+++ /dev/null
@@ -1 +0,0 @@
-import{o as H,X as h,a4 as l,a3 as s,r as _,a1 as u,_ as M,W as c,f as o,Y as n,Z as r,a2 as N,a5 as b,F as S,R as T}from"./vendor-vue.Bykizn0M.js";import{a as w}from"./shared-api.D5_fnN32.js";import{P as q}from"./PageHeader.Di3JTPjc.js";import{_ as F}from"./index.js";import{u as L}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const Q={class:"aksrt-page-container"},R={key:0,class:"aksrt-update__changelog"},W={class:"aksrt-update__grid"},$=["href"],E={__name:"ToolsUpdate",setup(X){const C=M(),i=L(),f=_(!0),m=_(!1),g=_(!1),a=_({current_version:"0.0.0",remote_version:"",update_available:!1,download_url:"",changelog:"",last_check:0}),P=[{key:"rewrite",title:"伪静态配置",desc:"检查固定链接与重写规则",url:"/wp-admin/options-permalink.php"},{key:"docs-mode",title:"文档模式",desc:"配置文档分类与专题模板",url:"#/extensions/docs-mode"},{key:"oauth",title:"第三方登录",desc:"检查 GitHub / Gitee / QQ / Google 登录",url:"#/users/oauth"},{key:"backup",title:"设置快照",desc:"创建与恢复站点配置快照",url:"#/tools/backup"},{key:"health",title:"健康检查",desc:"查看 PHP / WP / 数据表状态",url:"#/tools/health"},{key:"meilisearch",title:"Meilisearch",desc:"配置搜索索引与同步策略",url:"#/global/search"},{key:"i18n",title:"多语言翻译",desc:"检查语言切换与术语配置",url:"#/global/i18n"},{key:"cdn",title:"静态资源与 CDN",desc:"核对前端资源地址与缓存策略",url:"#/global/common"},{key:"forum",title:"论坛体系",desc:"检查版块、话题与版主管理",url:"#/forum"},{key:"ip-geo",title:"IP 归属地",desc:"验证 IP 查询服务与密钥配置",url:"#/extensions/security"},{key:"payment",title:"支付与会员",desc:"核对网关、会员与充值配置",url:"#/payment/gateway"},{key:"credits",title:"积分与签到",desc:"检查积分规则、签到与邀请奖励",url:"#/users/signin"},{key:"badge",title:"等级与徽章",desc:"维护等级、认证与徽章体系",url:"#/users/badge"}];H(x);function D(e){C.push(e)}function I(e){if(!e)return"未检测";const t=Number(e);return!Number.isNaN(t)&&t>0?new Date(t*1e3).toLocaleString():String(e)}async function x(){f.value=!0;try{const e=await w.getUpdateInfo();a.value=(e==null?void 0:e.data)||{}}catch(e){i.error((e==null?void 0:e.message)||"加载更新状态失败")}finally{f.value=!1}}async function U(){m.value=!0;try{const e=await w.detectUpdate();a.value=(e==null?void 0:e.data)||{},i.success("更新检测完成")}catch(e){i.error((e==null?void 0:e.message)||"检测更新失败")}finally{m.value=!1}}async function B(){if(a.value.remote_version){g.value=!0;try{await w.dismissUpdate(a.value.remote_version),i.success("已忽略此版本"),await x()}catch(e){i.error((e==null?void 0:e.message)||"忽略版本失败")}finally{g.value=!1}}}return(e,t)=>{const p=u("n-button"),v=u("n-space"),k=u("n-tag"),y=u("n-card"),V=u("n-alert"),G=u("n-spin");return c(),h("div",Q,[l(q,{title:"更新中心",desc:"查看版本状态、检测更新并浏览更新日志与教程入口。"},{actions:s(()=>[l(v,null,{default:s(()=>[l(p,{quaternary:"",loading:m.value,onClick:U},{default:s(()=>[...t[1]||(t[1]=[o("检测更新",-1)])]),_:1},8,["loading"]),l(p,{quaternary:"",onClick:t[0]||(t[0]=d=>D("/docs"))},{default:s(()=>[...t[2]||(t[2]=[o("文档中心",-1)])]),_:1})]),_:1})]),_:1}),l(G,{show:f.value,style:{width:"100%","min-height":"220px"}},{default:s(()=>[l(y,{class:"aksrt-section-card"},{default:s(()=>[t[3]||(t[3]=n("div",{class:"aksrt-section-header"},[n("h3",null,"版本状态")],-1)),l(v,null,{default:s(()=>[l(k,{round:"",type:"info"},{default:s(()=>[o("当前版本:"+r(a.value.current_version||"0.0.0"),1)]),_:1}),l(k,{round:"",type:a.value.update_available?"warning":"success"},{default:s(()=>[o(r(a.value.update_available?`发现新版本 ${a.value.remote_version}`:"已是最新版本"),1)]),_:1},8,["type"]),l(k,{round:"",type:"default"},{default:s(()=>[o("上次检测:"+r(I(a.value.last_check)),1)]),_:1})]),_:1})]),_:1}),a.value.update_available?(c(),N(y,{key:0,class:"aksrt-section-card"},{default:s(()=>[t[7]||(t[7]=n("div",{class:"aksrt-section-header"},[n("h3",null,"可用更新")],-1)),l(V,{type:"warning",style:{"margin-bottom":"12px"}},{default:s(()=>[o(" 检测到新版本 "+r(a.value.remote_version)+",当前版本为 "+r(a.value.current_version)+"。 ",1)]),_:1}),l(v,null,{default:s(()=>[a.value.download_url?(c(),N(p,{key:0,type:"primary",tag:"a",href:a.value.download_url,target:"_blank"},{default:s(()=>[...t[4]||(t[4]=[o(" 下载更新 ",-1)])]),_:1},8,["href"])):b("",!0),l(p,{onClick:B,loading:g.value},{default:s(()=>[...t[5]||(t[5]=[o("忽略此版本",-1)])]),_:1},8,["loading"])]),_:1}),a.value.changelog?(c(),h("div",R,[t[6]||(t[6]=n("h4",null,"更新日志",-1)),n("pre",null,r(a.value.changelog),1)])):b("",!0)]),_:1})):b("",!0),l(y,{class:"aksrt-section-card"},{default:s(()=>[t[8]||(t[8]=n("div",{class:"aksrt-section-header"},[n("h3",null,"常用教程入口")],-1)),n("div",W,[(c(),h(S,null,T(P,d=>n("a",{key:d.key,class:"aksrt-update__guide",href:d.url,target:"_blank",rel:"noreferrer"},[n("strong",null,r(d.title),1),n("span",null,r(d.desc),1)],8,$)),64))])]),_:1})]),_:1},8,["show"])])}}},K=F(E,[["__scopeId","data-v-8fad1124"]]);export{K as default};
diff --git a/assets/admin/build/ToolsUpdate.css b/assets/admin/build/ToolsUpdate.css
deleted file mode 100644
index 62c537c0..00000000
--- a/assets/admin/build/ToolsUpdate.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-update__changelog[data-v-8fad1124]{margin-top:16px}.aksrt-update__changelog pre[data-v-8fad1124]{margin:8px 0 0;padding:12px 14px;border-radius:12px;background:#101828;color:#d0d7e2;font-size:12px;line-height:1.7;white-space:pre-wrap;word-break:break-word}.aksrt-update__grid[data-v-8fad1124]{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.aksrt-update__guide[data-v-8fad1124]{display:flex;flex-direction:column;gap:4px;padding:14px;border:1px solid #eef1f6;border-radius:12px;text-decoration:none;color:inherit;background:#fafafa}.aksrt-update__guide[data-v-8fad1124]:hover{border-color:#1890ff;background:#f5faff}.aksrt-update__guide span[data-v-8fad1124]{font-size:12px;color:#667085}
diff --git a/assets/admin/build/UsersBadge.BAdBIwxF.js b/assets/admin/build/UsersBadge.BAdBIwxF.js
deleted file mode 100644
index 93245fa6..00000000
--- a/assets/admin/build/UsersBadge.BAdBIwxF.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import{o as E,X as H,a4 as t,a3 as n,r as N,a1 as l,e as S,_ as T,W as v,f as d,Y as u,Z as _,a2 as P,a5 as R,c as W}from"./vendor-vue.Bykizn0M.js";import{a as k}from"./shared-api.D5_fnN32.js";import{P as X}from"./PageHeader.Di3JTPjc.js";import{u as Y}from"./vendor-naive.BuHWlEgf.js";import"./index.js";import"./vendor-misc.1adHN6i_.js";const Z={class:"aksrt-page-container"},j={class:"aksrt-form-actions"},O={__name:"UsersBadge",setup(A){const U=T(),m=Y(),g=N(!0),p=N(!1),a=S({user_badge_enabled:!1,user_badge_public_display:!0,user_badge_limit:3,user_badge_dictionary:`founder|创始成员|warning
-staff|站务团队|info`}),y=S({dynamicBadge:!1}),h=W(()=>String(a.user_badge_dictionary||"").split(/\r?\n/).map(s=>s.trim()).filter(Boolean).length);function w(s){U.push(s)}function x(s){return(s==null?void 0:s.data)??s??{}}async function D(){g.value=!0;try{const[s,e]=await Promise.all([k.getSchemaPage("users","badge"),k.getNotificationSettings()]),o=x(s),c=x(e);a.user_badge_enabled=!!o.user_badge_enabled,a.user_badge_public_display=o.user_badge_public_display!==!1,a.user_badge_limit=Number(o.user_badge_limit||3),a.user_badge_dictionary=o.user_badge_dictionary||`founder|创始成员|warning
-staff|站务团队|info`,y.dynamicBadge=!!c.user_badge_enabled}catch(s){m.error(s.message||"加载用户徽章配置失败")}finally{g.value=!1}}async function V(){p.value=!0;try{await k.saveSchemaPage("users","badge",{user_badge_enabled:a.user_badge_enabled,user_badge_public_display:a.user_badge_public_display,user_badge_limit:Number(a.user_badge_limit||3),user_badge_dictionary:a.user_badge_dictionary}),m.success("用户徽章配置已保存")}catch(s){m.error(s.message||"保存失败")}finally{p.value=!1}}return E(D),(s,e)=>{const o=l("n-button"),c=l("n-space"),i=l("n-tag"),b=l("n-card"),B=l("n-switch"),f=l("n-form-item"),q=l("n-input-number"),C=l("n-form"),M=l("n-input"),$=l("n-alert"),z=l("n-spin");return v(),H("div",Z,[t(X,{title:"用户徽章",desc:"维护公开徽章字典、展示数量和前台展示位。具体授予逻辑可以后续再接业务,但字段和展示契约已经固定。"},{actions:n(()=>[t(c,null,{default:n(()=>[t(o,{quaternary:"",onClick:e[0]||(e[0]=r=>w("/users/notifications"))},{default:n(()=>[...e[6]||(e[6]=[d("消息通知",-1)])]),_:1}),t(o,{quaternary:"",onClick:e[1]||(e[1]=r=>w("/users/level"))},{default:n(()=>[...e[7]||(e[7]=[d("用户等级",-1)])]),_:1})]),_:1})]),_:1}),t(z,{show:g.value,style:{width:"100%","min-height":"200px"}},{default:n(()=>[t(b,{class:"aksrt-section-card"},{default:n(()=>[e[8]||(e[8]=u("div",{class:"aksrt-section-header"},[u("h3",null,"当前联动摘要")],-1)),t(c,null,{default:n(()=>[t(i,{round:"",type:a.user_badge_enabled?"success":"default"},{default:n(()=>[d(" 徽章系统:"+_(a.user_badge_enabled?"已启用":"已关闭"),1)]),_:1},8,["type"]),t(i,{round:"",type:a.user_badge_public_display?"info":"default"},{default:n(()=>[d(" 公开展示:"+_(a.user_badge_public_display?"开启":"关闭"),1)]),_:1},8,["type"]),t(i,{round:"",type:"info"},{default:n(()=>[d(" 最多显示:"+_(a.user_badge_limit)+" 枚 ",1)]),_:1}),t(i,{round:"",type:y.dynamicBadge?"success":"default"},{default:n(()=>[d(" 通知红点联动:"+_(y.dynamicBadge?"启用":"关闭"),1)]),_:1},8,["type"]),t(i,{round:"",type:"info"},{default:n(()=>[d(" 字典条目:"+_(h.value),1)]),_:1})]),_:1})]),_:1}),t(b,{class:"aksrt-section-card"},{default:n(()=>[e[9]||(e[9]=u("div",{class:"aksrt-section-header"},[u("h3",null,"徽章展示")],-1)),t(C,{model:a,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:n(()=>[t(f,{label:"启用徽章系统"},{default:n(()=>[t(B,{value:a.user_badge_enabled,"onUpdate:value":e[2]||(e[2]=r=>a.user_badge_enabled=r)},null,8,["value"])]),_:1}),a.user_badge_enabled?(v(),P(f,{key:0,label:"公开页显示徽章"},{default:n(()=>[t(B,{value:a.user_badge_public_display,"onUpdate:value":e[3]||(e[3]=r=>a.user_badge_public_display=r)},null,8,["value"])]),_:1})):R("",!0),a.user_badge_enabled?(v(),P(f,{key:1,label:"最多显示数量"},{default:n(()=>[t(q,{value:a.user_badge_limit,"onUpdate:value":e[4]||(e[4]=r=>a.user_badge_limit=r),min:1,max:8,style:{width:"180px"}},null,8,["value"])]),_:1})):R("",!0)]),_:1},8,["model"])]),_:1}),t(b,{class:"aksrt-section-card"},{default:n(()=>[e[11]||(e[11]=u("div",{class:"aksrt-section-header"},[u("h3",null,"徽章字典")],-1)),t(C,{model:a,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:n(()=>[t(f,{label:"徽章列表"},{feedback:n(()=>[...e[10]||(e[10]=[u("span",{class:"aksrt-hint-text"},"每行一个徽章,格式 `slug|显示文案|色调`,色调支持 `neutral / info / success / warning / brand`。",-1)])]),default:n(()=>[t(M,{value:a.user_badge_dictionary,"onUpdate:value":e[5]||(e[5]=r=>a.user_badge_dictionary=r),type:"textarea",autosize:{minRows:5,maxRows:10},placeholder:`founder|创始成员|warning
-staff|站务团队|info`,disabled:!a.user_badge_enabled},null,8,["value","disabled"])]),_:1})]),_:1},8,["model"])]),_:1}),t(b,{class:"aksrt-section-card"},{default:n(()=>[t($,{type:"info","show-icon":!1},{default:n(()=>[...e[12]||(e[12]=[d(" 前台从 `aksrt_user_badges` user meta 读取已授予徽章列表,并在公开主页和本人中心头部展示。这里只负责定义合法徽章字典和展示上限。 ",-1)])]),_:1})]),_:1}),u("div",j,[t(o,{type:"primary",loading:p.value,onClick:V},{default:n(()=>[...e[13]||(e[13]=[d("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}};export{O as default};
diff --git a/assets/admin/build/UsersFeatures.8x2S0GR6.js b/assets/admin/build/UsersFeatures.8x2S0GR6.js
deleted file mode 100644
index eac9fda8..00000000
--- a/assets/admin/build/UsersFeatures.8x2S0GR6.js
+++ /dev/null
@@ -1 +0,0 @@
-import{o as M,X as W,a4 as s,a3 as a,r as S,a1 as r,e as D,_ as $,W as j,f as l,Y as n,Z as P}from"./vendor-vue.Bykizn0M.js";import{a as v}from"./shared-api.D5_fnN32.js";import{P as E}from"./PageHeader.Di3JTPjc.js";import{u as F}from"./vendor-naive.BuHWlEgf.js";import"./index.js";import"./vendor-misc.1adHN6i_.js";const H={class:"aksrt-page-container"},X={class:"aksrt-form-actions"},L={__name:"UsersFeatures",setup(Y){const A=$(),b=F(),k=S(!0),g=S(!1),y=S(!1),m=D({tabs:[],sidebar:!0}),t=D({dynamicTabs:["posts","comments","favorites"],user_avatar_upload:!0,user_cover_upload:!0,user_social_links:!0});function T(o){A.push(o)}function w(o){return(o==null?void 0:o.data)??o??{}}function U(o){return(Array.isArray(o)?o:String(o||"").split(/[\s,]+/).filter(Boolean)).map(i=>String(i).trim()).filter(i=>["posts","comments","favorites","credits"].includes(i))}async function B(){k.value=!0;try{const[o,e,i]=await Promise.all([v.getSchemaPage("users","features"),v.getSchemaPage("page_display","user-home"),v.getPermissionsAttachmentSettings()]),d=w(o),u=w(e),f=w(i);t.dynamicTabs=U(d.user_center_tabs||"profile,posts,comments,favorites"),t.user_avatar_upload=d.user_avatar_upload!==!1,t.user_cover_upload=d.user_cover_upload!==!1,t.user_social_links=d.user_social_links!==!1,m.tabs=U(u.user_home_tabs||"posts,comments,favorites"),m.sidebar=u.user_home_sidebar!==!1,y.value=!!f.allow_background_upload}catch(o){b.error(o.message||"加载用户功能配置失败")}finally{k.value=!1}}async function R(){g.value=!0;try{await v.saveSchemaPage("users","features",{user_center_tabs:["profile",...t.dynamicTabs].join(","),user_avatar_upload:t.user_avatar_upload,user_cover_upload:t.user_cover_upload,user_social_links:t.user_social_links}),b.success("用户功能配置已保存")}catch(o){b.error(o.message||"保存失败")}finally{g.value=!1}}return M(B),(o,e)=>{const i=r("n-button"),d=r("n-space"),u=r("n-tag"),f=r("n-card"),p=r("n-form-item"),c=r("n-checkbox"),N=r("n-checkbox-group"),C=r("n-form"),x=r("n-switch"),V=r("n-alert"),q=r("n-spin");return j(),W("div",H,[s(E,{title:"用户功能",desc:"统一配置用户中心和公开主页的功能模块,让前台页面和后台字段使用同一份契约。"},{actions:a(()=>[s(d,null,{default:a(()=>[s(i,{quaternary:"",onClick:e[0]||(e[0]=_=>T("/page-display/user-home"))},{default:a(()=>[...e[6]||(e[6]=[l("公开主页",-1)])]),_:1}),s(i,{quaternary:"",onClick:e[1]||(e[1]=_=>T("/permissions/attachment"))},{default:a(()=>[...e[7]||(e[7]=[l("附件权限",-1)])]),_:1})]),_:1})]),_:1}),s(q,{show:k.value,style:{width:"100%","min-height":"200px"}},{default:a(()=>[s(f,{class:"aksrt-section-card"},{default:a(()=>[e[9]||(e[9]=n("div",{class:"aksrt-section-header"},[n("h3",null,"当前联动摘要")],-1)),s(d,null,{default:a(()=>[s(u,{type:"info",round:""},{default:a(()=>[...e[8]||(e[8]=[l("固定入口:个人信息 / 账号设置 / 消息通知",-1)])]),_:1}),s(u,{round:"",type:t.user_cover_upload?"success":"default"},{default:a(()=>[l(" 背景图编辑位:"+P(t.user_cover_upload?"已展示":"已隐藏"),1)]),_:1},8,["type"]),s(u,{round:"",type:y.value?"success":"warning"},{default:a(()=>[l(" 背景图上传权限:"+P(y.value?"已开放":"未开放"),1)]),_:1},8,["type"]),s(u,{round:"",type:m.sidebar?"success":"default"},{default:a(()=>[l(" 公开主页侧栏:"+P(m.sidebar?"开启":"关闭"),1)]),_:1},8,["type"])]),_:1})]),_:1}),s(f,{class:"aksrt-section-card"},{default:a(()=>[e[18]||(e[18]=n("div",{class:"aksrt-section-header"},[n("h3",null,"用户中心面板")],-1)),s(C,{"label-placement":"left","label-width":"170",class:"aksrt-form"},{default:a(()=>[s(p,{label:"固定面板"},{default:a(()=>[s(d,null,{default:a(()=>[s(u,{round:""},{default:a(()=>[...e[10]||(e[10]=[l("个人信息",-1)])]),_:1}),s(u,{round:""},{default:a(()=>[...e[11]||(e[11]=[l("账号设置",-1)])]),_:1}),s(u,{round:""},{default:a(()=>[...e[12]||(e[12]=[l("消息通知",-1)])]),_:1})]),_:1})]),_:1}),s(p,{label:"可切换业务面板"},{feedback:a(()=>[...e[17]||(e[17]=[n("span",{class:"aksrt-hint-text"},"“个人信息”始终保留在首位;积分面板仅在积分系统启用时显示。",-1)])]),default:a(()=>[s(N,{value:t.dynamicTabs,"onUpdate:value":e[2]||(e[2]=_=>t.dynamicTabs=_)},{default:a(()=>[s(d,{vertical:""},{default:a(()=>[s(c,{value:"posts"},{default:a(()=>[...e[13]||(e[13]=[l("我的文章",-1)])]),_:1}),s(c,{value:"comments"},{default:a(()=>[...e[14]||(e[14]=[l("我的评论",-1)])]),_:1}),s(c,{value:"favorites"},{default:a(()=>[...e[15]||(e[15]=[l("我的收藏",-1)])]),_:1}),s(c,{value:"credits"},{default:a(()=>[...e[16]||(e[16]=[l("账户余额 / 签到",-1)])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1})]),_:1})]),_:1}),s(f,{class:"aksrt-section-card"},{default:a(()=>[e[22]||(e[22]=n("div",{class:"aksrt-section-header"},[n("h3",null,"公开资料编辑位")],-1)),s(C,{model:t,"label-placement":"left","label-width":"170",class:"aksrt-form"},{default:a(()=>[s(p,{label:"头像编辑入口"},{feedback:a(()=>[...e[19]||(e[19]=[n("span",{class:"aksrt-hint-text"},"开启后,用户中心会显示跳转到 WordPress 原生资料页的头像修改入口。",-1)])]),default:a(()=>[s(x,{value:t.user_avatar_upload,"onUpdate:value":e[3]||(e[3]=_=>t.user_avatar_upload=_)},null,8,["value"])]),_:1}),s(p,{label:"背景图编辑位"},{feedback:a(()=>[...e[20]||(e[20]=[n("span",{class:"aksrt-hint-text"},"这里只控制前台入口显示;真正的上传权限仍由“附件权限”页治理。",-1)])]),default:a(()=>[s(x,{value:t.user_cover_upload,"onUpdate:value":e[4]||(e[4]=_=>t.user_cover_upload=_)},null,8,["value"])]),_:1}),s(p,{label:"公开社交链接"},{feedback:a(()=>[...e[21]||(e[21]=[n("span",{class:"aksrt-hint-text"},"关闭后,用户中心联系方式编辑区和公开主页联系卡片会一起隐藏。",-1)])]),default:a(()=>[s(x,{value:t.user_social_links,"onUpdate:value":e[5]||(e[5]=_=>t.user_social_links=_)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),s(f,{class:"aksrt-section-card"},{default:a(()=>[s(V,{type:"info","show-icon":!1},{default:a(()=>[...e[23]||(e[23]=[l(" 公开主页的封面、侧栏、关注按钮和公开 Tab 仍在“页面&显示 / 用户主页”维护;本页负责“用户中心能否编辑哪些内容”。 ",-1)])]),_:1})]),_:1}),n("div",X,[s(i,{type:"primary",loading:g.value,onClick:R},{default:a(()=>[...e[24]||(e[24]=[l("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}};export{L as default};
diff --git a/assets/admin/build/UsersLevel.D9sYKZP1.js b/assets/admin/build/UsersLevel.D9sYKZP1.js
deleted file mode 100644
index b3d2e0cb..00000000
--- a/assets/admin/build/UsersLevel.D9sYKZP1.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import{o as E,X as H,a4 as s,a3 as a,r as U,a1 as r,e as B,_ as T,W as g,f as u,Y as _,Z as p,a2 as M,a5 as P,c as W}from"./vendor-vue.Bykizn0M.js";import{a as k}from"./shared-api.D5_fnN32.js";import{P as X}from"./PageHeader.Di3JTPjc.js";import{u as Y}from"./vendor-naive.BuHWlEgf.js";import"./index.js";import"./vendor-misc.1adHN6i_.js";const Z={class:"aksrt-page-container"},j={class:"aksrt-form-actions"},Q={__name:"UsersLevel",setup(A){const R=T(),m=Y(),b=U(!0),y=U(!1),l=B({user_level_enabled:!1,user_level_public_display:!0,user_level_source:"credits_balance",user_level_prefix:"Lv.",user_level_thresholds:`1|0
-2|30
-3|100
-4|300`}),i=B({enabled:!0,currencyName:"积分"}),D=W(()=>String(l.user_level_thresholds||"").split(/\r?\n/).map(t=>t.trim()).filter(Boolean).length);function h(t){R.push(t)}function x(t){return(t==null?void 0:t.data)??t??{}}async function L(){b.value=!0;try{const[t,e]=await Promise.all([k.getSchemaPage("users","level"),k.getCreditSettings()]),o=x(t),d=x(e);l.user_level_enabled=!!o.user_level_enabled,l.user_level_public_display=o.user_level_public_display!==!1,l.user_level_source=o.user_level_source||"credits_balance",l.user_level_prefix=o.user_level_prefix||"Lv.",l.user_level_thresholds=o.user_level_thresholds||`1|0
-2|30
-3|100
-4|300`,i.enabled=d.enabled!==!1,i.currencyName=d.currency_name||"积分"}catch(t){m.error(t.message||"加载用户等级配置失败")}finally{b.value=!1}}async function V(){y.value=!0;try{await k.saveSchemaPage("users","level",{user_level_enabled:l.user_level_enabled,user_level_public_display:l.user_level_public_display,user_level_source:l.user_level_source,user_level_prefix:l.user_level_prefix,user_level_thresholds:l.user_level_thresholds}),m.success("用户等级配置已保存")}catch(t){m.error(t.message||"保存失败")}finally{y.value=!1}}return E(L),(t,e)=>{const o=r("n-button"),d=r("n-space"),v=r("n-tag"),f=r("n-card"),w=r("n-switch"),c=r("n-form-item"),C=r("n-input"),N=r("n-form"),S=r("n-radio"),q=r("n-radio-group"),z=r("n-alert"),$=r("n-spin");return g(),H("div",Z,[s(X,{title:"用户等级",desc:"配置等级来源、展示前缀和阈值规则。前台公开主页会按照这里的规则输出等级身份芯片。"},{actions:a(()=>[s(d,null,{default:a(()=>[s(o,{quaternary:"",onClick:e[0]||(e[0]=n=>h("/users/credits"))},{default:a(()=>[...e[7]||(e[7]=[u("用户积分",-1)])]),_:1}),s(o,{quaternary:"",onClick:e[1]||(e[1]=n=>h("/users/badge"))},{default:a(()=>[...e[8]||(e[8]=[u("用户徽章",-1)])]),_:1})]),_:1})]),_:1}),s($,{show:b.value,style:{width:"100%","min-height":"200px"}},{default:a(()=>[s(f,{class:"aksrt-section-card"},{default:a(()=>[e[9]||(e[9]=_("div",{class:"aksrt-section-header"},[_("h3",null,"当前联动摘要")],-1)),s(d,null,{default:a(()=>[s(v,{round:"",type:l.user_level_enabled?"success":"default"},{default:a(()=>[u(" 等级系统:"+p(l.user_level_enabled?"已启用":"已关闭"),1)]),_:1},8,["type"]),s(v,{round:"",type:i.enabled?"info":"warning"},{default:a(()=>[u(" 积分系统:"+p(i.enabled?"已启用":"未启用"),1)]),_:1},8,["type"]),s(v,{round:"",type:"info"},{default:a(()=>[u(" 当前货币:"+p(i.currencyName),1)]),_:1}),s(v,{round:"",type:l.user_level_source==="credits_balance"?"success":"warning"},{default:a(()=>[u(" 来源:"+p(l.user_level_source==="credits_balance"?"积分余额":"手动 Meta"),1)]),_:1},8,["type"]),s(v,{round:"",type:"info"},{default:a(()=>[u(" 阈值条目:"+p(D.value),1)]),_:1})]),_:1})]),_:1}),s(f,{class:"aksrt-section-card"},{default:a(()=>[e[10]||(e[10]=_("div",{class:"aksrt-section-header"},[_("h3",null,"等级显示")],-1)),s(N,{model:l,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:a(()=>[s(c,{label:"启用等级系统"},{default:a(()=>[s(w,{value:l.user_level_enabled,"onUpdate:value":e[2]||(e[2]=n=>l.user_level_enabled=n)},null,8,["value"])]),_:1}),l.user_level_enabled?(g(),M(c,{key:0,label:"公开页显示等级"},{default:a(()=>[s(w,{value:l.user_level_public_display,"onUpdate:value":e[3]||(e[3]=n=>l.user_level_public_display=n)},null,8,["value"])]),_:1})):P("",!0),l.user_level_enabled?(g(),M(c,{key:1,label:"等级前缀"},{default:a(()=>[s(C,{value:l.user_level_prefix,"onUpdate:value":e[4]||(e[4]=n=>l.user_level_prefix=n),maxlength:"12",placeholder:"Lv."},null,8,["value"])]),_:1})):P("",!0)]),_:1},8,["model"])]),_:1}),s(f,{class:"aksrt-section-card"},{default:a(()=>[e[14]||(e[14]=_("div",{class:"aksrt-section-header"},[_("h3",null,"等级规则")],-1)),s(N,{model:l,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:a(()=>[s(c,{label:"等级来源"},{default:a(()=>[s(q,{value:l.user_level_source,"onUpdate:value":e[5]||(e[5]=n=>l.user_level_source=n),disabled:!l.user_level_enabled},{default:a(()=>[s(d,{size:"large"},{default:a(()=>[s(S,{value:"credits_balance"},{default:a(()=>[...e[11]||(e[11]=[u("积分余额",-1)])]),_:1}),s(S,{value:"manual_meta"},{default:a(()=>[...e[12]||(e[12]=[u("手动 Meta",-1)])]),_:1})]),_:1})]),_:1},8,["value","disabled"])]),_:1}),s(c,{label:"等级阈值"},{feedback:a(()=>[...e[13]||(e[13]=[_("span",{class:"aksrt-hint-text"},"每行一个等级,格式 `等级|所需积分`。手动 Meta 模式下仍建议保留完整字典,方便后续切换回自动计算。",-1)])]),default:a(()=>[s(C,{value:l.user_level_thresholds,"onUpdate:value":e[6]||(e[6]=n=>l.user_level_thresholds=n),type:"textarea",autosize:{minRows:5,maxRows:10},placeholder:`1|0
-2|30
-3|100
-4|300`,disabled:!l.user_level_enabled},null,8,["value","disabled"])]),_:1})]),_:1},8,["model"])]),_:1}),s(f,{class:"aksrt-section-card"},{default:a(()=>[s(z,{type:"info","show-icon":!1},{default:a(()=>[...e[15]||(e[15]=[u(" 手动模式读取 `aksrt_user_level` user meta;自动模式则根据当前积分余额和上方阈值表实时计算等级,不需要单独写库。 ",-1)])]),_:1})]),_:1}),_("div",j,[s(o,{type:"primary",loading:y.value,onClick:V},{default:a(()=>[...e[16]||(e[16]=[u("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}};export{Q as default};
diff --git a/assets/admin/build/UsersSignin.frRX-AHK.js b/assets/admin/build/UsersSignin.frRX-AHK.js
deleted file mode 100644
index c1da36e1..00000000
--- a/assets/admin/build/UsersSignin.frRX-AHK.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import{a as C}from"./shared-api.D5_fnN32.js";import{_ as O,a1 as o,W as f,X as $,a4 as i,a3 as n,a2 as x,F,R as W,f as v,Z as p,a5 as k,l as D,o as X,r as P,e as M,Y as m,c as Y}from"./vendor-vue.Bykizn0M.js";import{P as Z}from"./PageHeader.Di3JTPjc.js";import{u as G}from"./vendor-naive.BuHWlEgf.js";import"./index.js";import"./vendor-misc.1adHN6i_.js";const J={class:"aksrt-page-container"},K={__name:"UsersSectionPage",props:{title:{type:String,required:!0},desc:{type:String,default:""},note:{type:String,default:""},links:{type:Array,default:()=>[]}},setup(w){const S=O();function U(g){S.push(g)}return(g,N)=>{const j=o("n-button"),y=o("n-space"),e=o("n-alert"),R=o("n-card");return f(),$("div",J,[i(Z,{title:w.title,desc:w.desc},{actions:n(()=>[w.links.length?(f(),x(y,{key:0},{default:n(()=>[(f(!0),$(F,null,W(w.links,h=>(f(),x(j,{key:h.path,quaternary:"",onClick:B=>U(h.path)},{default:n(()=>[v(p(h.label),1)]),_:2},1032,["onClick"]))),128))]),_:1})):k("",!0)]),_:1},8,["title","desc"]),w.note?(f(),x(R,{key:0,class:"aksrt-section-card"},{default:n(()=>[i(e,{type:"info","show-icon":!1},{default:n(()=>[v(p(w.note),1)]),_:1})]),_:1})):k("",!0),D(g.$slots,"before-form"),D(g.$slots,"default")])}}},Q={class:"aksrt-hint-text"},ee={class:"aksrt-hint-text"},te={class:"aksrt-form-actions"},oe={__name:"UsersSignin",setup(w){const S=G(),U=P(!0),g=P(!1),N=P({}),j=P({}),y=M({register:!1,signin:!1}),e=M({credits_enabled:!0,currency_name:"",signin_enabled:!0,signin_base:1,signin_streak_text:`3|2
-7|5
-30|20`,invite_enabled:!0,inviter_amount:5,invitee_amount:2,require_verify:!0,ip_daily_cap:3,invite_registration_enabled:!0,invite_code_length:6,invite_register_field:"optional",invite_reject_invalid:!0}),R=Y(()=>e.currency_name||"积分");function h(s){return(s==null?void 0:s.data)??s??{}}function B(s){return Object.entries(s||{}).map(([r,l])=>[Number(r),Number(l)]).filter(([r,l])=>Number.isFinite(r)&&r>0&&Number.isFinite(l)&&l>=0).sort((r,l)=>r[0]-l[0]).map(([r,l])=>`${r}|${l}`).join(`
-`)}function V(s){const t=String(s||"").split(/\r?\n/).map(l=>l.trim()).filter(Boolean),r={};return t.forEach(l=>{const d=l.split("|").map(_=>_.trim());if(d.length!==2)return;const c=Number(d[0]),b=Number(d[1]);!Number.isFinite(c)||!Number.isFinite(b)||c<=0||b<0||(r[Math.trunc(c)]=Math.trunc(b))}),r}async function L(){U.value=!0;try{const[s,t,r]=await Promise.all([C.getCreditSettings(),C.getAuthSettings(),C.getPermissionsLoginSettings()]),l=h(s),d=h(t),c=h(r),b=l.daily_signin||{},_=l.invite_reward||{},u=Array.isArray(c.disabled_scenarios)?c.disabled_scenarios:[];N.value=l,j.value=d,e.credits_enabled=l.enabled!==!1,e.currency_name=l.currency_name||"",e.signin_enabled=b.enabled!==!1,e.signin_base=Number(b.base||0),e.signin_streak_text=B(b.streak||{3:2,7:5,30:20}),e.invite_enabled=_.enabled!==!1,e.inviter_amount=Number(_.inviter_amount||0),e.invitee_amount=Number(_.invitee_amount||0),e.require_verify=_.require_verify!==!1,e.ip_daily_cap=Number(_.ip_daily_cap||0),e.invite_registration_enabled=d.invite_registration_enabled!==!1,e.invite_code_length=Number(d.invite_code_length||6),e.invite_register_field=d.invite_register_field||"optional",e.invite_reject_invalid=d.invite_reject_invalid!==!1,y.register=!!c.enabled&&!!c.active_provider&&!u.includes("register"),y.signin=!!c.enabled&&!!c.active_provider&&!u.includes("signin")}catch(s){S.error(s.message||"加载签到奖励配置失败")}finally{U.value=!1}}async function z(){g.value=!0;try{const s={...N.value,daily_signin:{...N.value.daily_signin||{},enabled:e.signin_enabled,base:Number(e.signin_base||0),streak:V(e.signin_streak_text)},invite_reward:{...N.value.invite_reward||{},enabled:e.invite_enabled,inviter_amount:Number(e.inviter_amount||0),invitee_amount:Number(e.invitee_amount||0),require_verify:e.require_verify,ip_daily_cap:Number(e.ip_daily_cap||0),register_field:e.invite_register_field,reject_invalid:e.invite_reject_invalid}},t={...j.value,invite_registration_enabled:e.invite_registration_enabled,invite_code_length:Number(e.invite_code_length||6),invite_register_field:e.invite_register_field,invite_reject_invalid:e.invite_reject_invalid};await Promise.all([C.saveCreditSettings(s),C.saveAuthSettings(t)]),N.value=s,j.value=t,S.success("签到奖励配置已保存")}catch(s){S.error(s.message||"保存失败")}finally{g.value=!1}}return X(L),(s,t)=>{const r=o("n-tag"),l=o("n-space"),d=o("n-card"),c=o("n-alert"),b=o("n-spin"),_=o("n-switch"),u=o("n-form-item"),q=o("n-input-number"),E=o("n-input"),A=o("n-radio"),T=o("n-radio-group"),H=o("n-button"),I=o("n-form");return f(),x(K,{title:"签到奖励",desc:"直接管理签到与邀请奖励的真实运行配置,保存后会立即影响前台签到、邀请链接和注册页邀请码行为。",links:[{label:"注册登录",path:"/users/auth"},{label:"用户积分",path:"/users/credits"}]},{"before-form":n(()=>[i(b,{show:U.value,style:{width:"100%","min-height":"200px"}},{default:n(()=>[i(d,{class:"aksrt-section-card"},{default:n(()=>[t[12]||(t[12]=m("div",{class:"aksrt-section-header"},[m("h3",null,"当前联动摘要")],-1)),i(l,null,{default:n(()=>[i(r,{round:"",type:e.credits_enabled?"success":"warning"},{default:n(()=>[v(" 积分系统:"+p(e.credits_enabled?"已启用":"未启用"),1)]),_:1},8,["type"]),i(r,{round:"",type:e.signin_enabled?"success":"default"},{default:n(()=>[v(" 签到能力:"+p(e.signin_enabled?"已启用":"已关闭"),1)]),_:1},8,["type"]),i(r,{round:"",type:e.invite_enabled?"success":"default"},{default:n(()=>[v(" 邀请奖励:"+p(e.invite_enabled?"已启用":"已关闭"),1)]),_:1},8,["type"]),i(r,{round:"",type:e.invite_registration_enabled?"info":"default"},{default:n(()=>[v(" 邀请注册:"+p(e.invite_registration_enabled?"开启":"关闭"),1)]),_:1},8,["type"]),i(r,{round:"",type:y.register?"info":"default"},{default:n(()=>[v(" 注册验证码:"+p(y.register?"启用":"未启用"),1)]),_:1},8,["type"]),i(r,{round:"",type:y.signin?"info":"default"},{default:n(()=>[v(" 签到验证码:"+p(y.signin?"启用":"未启用"),1)]),_:1},8,["type"])]),_:1})]),_:1}),e.credits_enabled?k("",!0):(f(),x(d,{key:0,class:"aksrt-section-card"},{default:n(()=>[i(c,{type:"warning","show-icon":!1},{default:n(()=>[...t[13]||(t[13]=[v(" 当前积分系统处于关闭状态。即使保存签到和邀请奖励配置,前台也不会真正发放奖励,直到“用户积分”页重新启用积分系统。 ",-1)])]),_:1})]),_:1}))]),_:1},8,["show"])]),default:n(()=>[i(I,{model:e,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:n(()=>[i(d,{class:"aksrt-section-card"},{default:n(()=>[t[14]||(t[14]=m("div",{class:"aksrt-section-header"},[m("h3",null,"每日签到")],-1)),i(u,{label:"启用签到奖励"},{default:n(()=>[i(_,{value:e.signin_enabled,"onUpdate:value":t[0]||(t[0]=a=>e.signin_enabled=a)},null,8,["value"])]),_:1}),e.signin_enabled?(f(),x(u,{key:0,label:"基础奖励"},{feedback:n(()=>[m("span",Q,"每次签到基础发放 "+p(R.value)+" 数量。",1)]),default:n(()=>[i(q,{value:e.signin_base,"onUpdate:value":t[1]||(t[1]=a=>e.signin_base=a),min:0,max:1e5,style:{width:"180px"}},null,8,["value"])]),_:1})):k("",!0),e.signin_enabled?(f(),x(u,{key:1,label:"连续签到加成"},{feedback:n(()=>[m("span",ee,"每行一个周期,格式 `天数|额外奖励`。例如 `7|5` 表示连续 7 天额外获得 5 "+p(R.value)+"。",1)]),default:n(()=>[i(E,{value:e.signin_streak_text,"onUpdate:value":t[2]||(t[2]=a=>e.signin_streak_text=a),type:"textarea",autosize:{minRows:4,maxRows:8},placeholder:`3|2
-7|5
-30|20`},null,8,["value"])]),_:1})):k("",!0)]),_:1}),i(d,{class:"aksrt-section-card"},{default:n(()=>[t[20]||(t[20]=m("div",{class:"aksrt-section-header"},[m("h3",null,"邀请奖励与注册页邀请码")],-1)),i(u,{label:"启用邀请奖励"},{default:n(()=>[i(_,{value:e.invite_enabled,"onUpdate:value":t[3]||(t[3]=a=>e.invite_enabled=a)},null,8,["value"])]),_:1}),i(u,{label:"开放邀请注册"},{feedback:n(()=>[...t[15]||(t[15]=[m("span",{class:"aksrt-hint-text"},"关闭后,邀请链接入口、注册页邀请码字段和个人中心邀请模块会一起隐藏。",-1)])]),default:n(()=>[i(_,{value:e.invite_registration_enabled,"onUpdate:value":t[4]||(t[4]=a=>e.invite_registration_enabled=a)},null,8,["value"])]),_:1}),e.invite_registration_enabled?(f(),$(F,{key:0},[i(u,{label:"邀请码长度"},{default:n(()=>[i(q,{value:e.invite_code_length,"onUpdate:value":t[5]||(t[5]=a=>e.invite_code_length=a),min:4,max:12,style:{width:"180px"}},null,8,["value"])]),_:1}),i(u,{label:"注册页邀请码字段"},{default:n(()=>[i(T,{value:e.invite_register_field,"onUpdate:value":t[6]||(t[6]=a=>e.invite_register_field=a)},{default:n(()=>[i(l,{size:"large"},{default:n(()=>[i(A,{value:"hidden"},{default:n(()=>[...t[16]||(t[16]=[v("隐藏",-1)])]),_:1}),i(A,{value:"optional"},{default:n(()=>[...t[17]||(t[17]=[v("选填",-1)])]),_:1}),i(A,{value:"required"},{default:n(()=>[...t[18]||(t[18]=[v("必填",-1)])]),_:1})]),_:1})]),_:1},8,["value"])]),_:1}),e.invite_register_field==="required"?(f(),x(u,{key:0,label:"无效邀请码处理"},{feedback:n(()=>[...t[19]||(t[19]=[m("span",{class:"aksrt-hint-text"},"开启后,必填模式下无效邀请码会直接拒绝注册。关闭则忽略邀请码错误并继续注册。",-1)])]),default:n(()=>[i(_,{value:e.invite_reject_invalid,"onUpdate:value":t[7]||(t[7]=a=>e.invite_reject_invalid=a)},null,8,["value"])]),_:1})):k("",!0)],64)):k("",!0),e.invite_enabled?(f(),$(F,{key:1},[i(u,{label:"邀请人奖励"},{default:n(()=>[i(q,{value:e.inviter_amount,"onUpdate:value":t[8]||(t[8]=a=>e.inviter_amount=a),min:0,max:1e5,style:{width:"180px"}},null,8,["value"])]),_:1}),i(u,{label:"被邀请人奖励"},{default:n(()=>[i(q,{value:e.invitee_amount,"onUpdate:value":t[9]||(t[9]=a=>e.invitee_amount=a),min:0,max:1e5,style:{width:"180px"}},null,8,["value"])]),_:1}),i(u,{label:"验证邮箱后发放"},{default:n(()=>[i(_,{value:e.require_verify,"onUpdate:value":t[10]||(t[10]=a=>e.require_verify=a)},null,8,["value"])]),_:1}),i(u,{label:"同 IP 日上限"},{default:n(()=>[i(q,{value:e.ip_daily_cap,"onUpdate:value":t[11]||(t[11]=a=>e.ip_daily_cap=a),min:0,max:1e3,style:{width:"180px"}},null,8,["value"])]),_:1})],64)):k("",!0)]),_:1}),m("div",te,[i(H,{type:"primary",loading:g.value,onClick:z},{default:n(()=>[...t[21]||(t[21]=[v("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["model"])]),_:1})}}};export{oe as default};
diff --git a/assets/admin/build/UsersVerify.DlTUYsYd.js b/assets/admin/build/UsersVerify.DlTUYsYd.js
deleted file mode 100644
index ed0d3e52..00000000
--- a/assets/admin/build/UsersVerify.DlTUYsYd.js
+++ /dev/null
@@ -1 +0,0 @@
-import{a as C}from"./shared-api.D5_fnN32.js";import{P as ne}from"./PageHeader.Di3JTPjc.js";import{_ as ee}from"./index.js";import{u as te,h as Y,b as V,B as H}from"./vendor-naive.BuHWlEgf.js";import{w as ie,W as w,a2 as X,a3 as s,a4 as e,X as P,f,Z as v,Y as p,F as K,R as ue,a1 as i,r as g,e as S,o as oe,N as m,c as Q,k as Z}from"./vendor-vue.Bykizn0M.js";import"./vendor-misc.1adHN6i_.js";const de={class:"aksrt-verify-drawer__section"},_e={class:"aksrt-verify-drawer__section"},fe={key:0,class:"aksrt-verify-drawer__timeline"},ve={class:"aksrt-verify-drawer__timeline-head"},pe={class:"aksrt-verify-drawer__section"},ce={__name:"VerifyReviewDrawer",props:{show:{type:Boolean,default:!1},userId:{type:[Number,String],default:null}},emits:["update:show","updated"],setup(A,{emit:z}){const y=A,D=z,b=te(),U=g(!1),k=g(!1),d=g({request:null,history:[],options:{statuses:[]}}),l=S({status:"verified",note:""});ie(()=>[y.show,y.userId],async([n,r])=>{n&&r&&await h(),n||(d.value={request:null,history:[],options:{statuses:[]}},l.status="verified",l.note="")});async function h(){var n,r;if(y.userId){U.value=!0;try{const o=await C.request(`/verify/requests/${y.userId}`);d.value=(o==null?void 0:o.data)||{request:null,history:[],options:{statuses:[]}},l.status=(((r=(n=d.value)==null?void 0:n.request)==null?void 0:r.status)==="rejected","verified"),l.note=""}catch(o){b.error((o==null?void 0:o.message)||"加载认证详情失败")}finally{U.value=!1}}}async function x(){if(y.userId){k.value=!0;try{await C.request(`/verify/requests/${y.userId}/review`,{method:"POST",data:{status:l.status,note:l.note}}),b.success("认证审核已提交"),await h(),D("updated")}catch(n){b.error((n==null?void 0:n.message)||"审核失败")}finally{k.value=!1}}}return(n,r)=>{const o=i("n-descriptions-item"),F=i("n-descriptions"),O=i("n-alert"),I=i("n-empty"),B=i("n-select"),N=i("n-input"),j=i("n-button"),E=i("n-space"),q=i("n-spin"),T=i("n-drawer-content"),L=i("n-drawer");return w(),X(L,{show:A.show,width:680,"onUpdate:show":r[2]||(r[2]=R=>n.$emit("update:show",R))},{default:s(()=>[e(T,{title:"认证审核",closable:""},{default:s(()=>[e(q,{show:U.value},{default:s(()=>{var R;return[d.value.request?(w(),P(K,{key:0},[e(F,{bordered:"",column:1,size:"small","label-placement":"left"},{default:s(()=>[e(o,{label:"用户"},{default:s(()=>[f(v(d.value.request.display_name||"-"),1)]),_:1}),e(o,{label:"邮箱"},{default:s(()=>[f(v(d.value.request.email||"-"),1)]),_:1}),e(o,{label:"当前状态"},{default:s(()=>[f(v(d.value.request.status||"-"),1)]),_:1}),e(o,{label:"邮箱验证"},{default:s(()=>[f(v(d.value.request.email_verified?"已完成":"未完成"),1)]),_:1}),e(o,{label:"申请时间"},{default:s(()=>[f(v(d.value.request.requested_at||"-"),1)]),_:1}),e(o,{label:"最近处理"},{default:s(()=>[f(v(d.value.request.reviewed_at||"-"),1)]),_:1})]),_:1}),p("div",de,[r[3]||(r[3]=p("div",{class:"aksrt-verify-drawer__title"},"当前备注",-1)),e(O,{type:"info","show-icon":!1},{default:s(()=>[f(v(d.value.request.reason||"暂无备注"),1)]),_:1})]),p("div",_e,[r[4]||(r[4]=p("div",{class:"aksrt-verify-drawer__title"},"审核历史",-1)),(R=d.value.history)!=null&&R.length?(w(),P("div",fe,[(w(!0),P(K,null,ue(d.value.history,(t,a)=>(w(),P("div",{key:a,class:"aksrt-verify-drawer__timeline-item"},[p("div",ve,[p("strong",null,v(t.status||"-"),1),p("span",null,v(t.time||"-"),1)]),p("p",null,v(t.reason||"无备注"),1),p("small",null,v(t.reviewer_name||"系统"),1)]))),128))])):(w(),X(I,{key:1,description:"暂无审核历史"}))]),p("div",pe,[r[7]||(r[7]=p("div",{class:"aksrt-verify-drawer__title"},"执行审核",-1)),e(E,{vertical:"",size:12},{default:s(()=>{var t;return[e(B,{value:l.status,"onUpdate:value":r[0]||(r[0]=a=>l.status=a),options:((t=d.value.options)==null?void 0:t.statuses)||[]},null,8,["value","options"]),e(N,{value:l.note,"onUpdate:value":r[1]||(r[1]=a=>l.note=a),type:"textarea",rows:4,placeholder:"填写审核说明或驳回原因"},null,8,["value"]),e(E,null,{default:s(()=>[e(j,{type:"primary",loading:k.value,onClick:x},{default:s(()=>[...r[5]||(r[5]=[f("提交审核",-1)])]),_:1},8,["loading"]),e(j,{onClick:h},{default:s(()=>[...r[6]||(r[6]=[f("刷新详情",-1)])]),_:1})]),_:1})]}),_:1})])],64)):(w(),X(I,{key:1,description:"暂无认证详情"}))]}),_:1},8,["show"])]),_:1})]),_:1},8,["show"])}}},ye=ee(ce,[["__scopeId","data-v-84e367b4"]]),me={class:"aksrt-page-container"},ge={class:"aksrt-form-actions"},we={__name:"UsersVerify",setup(A){const z=te(),y=g(!0),D=g(!1),b=g(!1),U=g([]),k=g(!1),d=g(null),l=S({user_verify_enabled:!0,user_verify_public_display:!0,user_verify_badge_text:"已认证",user_verify_accept_email_verified:!0,user_verify_require_manual_review:!1}),h=S({emailVerificationEnabled:!1}),x=S({pending:0,verified:0,rejected:0,total:0}),n=S({keyword:"",status:"",dateRange:null}),r=S({page:1,pageSize:20,itemCount:0}),o=S({statuses:[]}),F=Q(()=>o.statuses.length?[{label:"全部状态",value:""},...o.statuses]:[{label:"全部状态",value:""},{label:"待审核",value:"pending"},{label:"已通过",value:"verified"},{label:"已驳回",value:"rejected"}]),O=Q(()=>({page:r.page,pageSize:r.pageSize,itemCount:r.itemCount,showSizePicker:!0,pageSizes:[10,20,50],onUpdatePage:t=>{r.page=t,q()},onUpdatePageSize:t=>{r.pageSize=t,r.page=1,q()}})),I=[{title:"用户",key:"display_name",width:160},{title:"邮箱",key:"email",minWidth:220,ellipsis:{tooltip:!0}},{title:"状态",key:"status",width:100,render:t=>Z(V,{size:"small",round:!0,type:{pending:"warning",verified:"success",rejected:"error"}[t.status]||"default"},()=>t.status)},{title:"邮箱验证",key:"email_verified",width:100,render:t=>t.email_verified?"已完成":"未完成"},{title:"申请时间",key:"requested_at",width:170},{title:"处理时间",key:"reviewed_at",width:170,render:t=>t.reviewed_at||"-"},{title:"历史",key:"history_count",width:80},{title:"操作",key:"actions",width:120,render:t=>Z(Y,{size:"small"},()=>[Z(H,{size:"tiny",type:"primary",quaternary:!0,onClick:()=>R(t.user_id)},()=>"审核")])}];oe(async()=>{await E()});function B(t){return(t==null?void 0:t.data)??t??{}}function N(t){const a=new Date(t),_=a.getFullYear(),c=`${a.getMonth()+1}`.padStart(2,"0"),W=`${a.getDate()}`.padStart(2,"0");return`${_}-${c}-${W}`}function j(){const t={page:r.page,per_page:r.pageSize};return n.keyword&&(t.keyword=n.keyword),n.status&&(t.status=n.status),Array.isArray(n.dateRange)&&n.dateRange.length===2&&(t.date_from=N(n.dateRange[0]),t.date_to=N(n.dateRange[1])),t}async function E(){y.value=!0;try{const[t,a]=await Promise.all([C.getSchemaPage("users","verify"),C.getAuthSettings()]),_=B(t),c=B(a);l.user_verify_enabled=_.user_verify_enabled!==!1,l.user_verify_public_display=_.user_verify_public_display!==!1,l.user_verify_badge_text=_.user_verify_badge_text||"已认证",l.user_verify_accept_email_verified=_.user_verify_accept_email_verified!==!1,l.user_verify_require_manual_review=!!_.user_verify_require_manual_review,h.emailVerificationEnabled=!!c.registration_email_verification_enabled,await q()}catch(t){z.error((t==null?void 0:t.message)||"加载身份认证页失败")}finally{y.value=!1}}async function q(){var t;b.value=!0;try{const a=await C.request("/verify/requests",{params:j()}),_=(a==null?void 0:a.data)||{};U.value=_.items||[],r.itemCount=_.total||0,Object.assign(x,_.counts||{}),o.statuses=((t=_.options)==null?void 0:t.statuses)||[]}catch(a){z.error((a==null?void 0:a.message)||"加载认证审核台失败")}finally{b.value=!1}}async function T(){D.value=!0;try{await C.saveSchemaPage("users","verify",{user_verify_enabled:l.user_verify_enabled,user_verify_public_display:l.user_verify_public_display,user_verify_badge_text:l.user_verify_badge_text,user_verify_accept_email_verified:l.user_verify_accept_email_verified,user_verify_require_manual_review:l.user_verify_require_manual_review}),z.success("身份认证配置已保存")}catch(t){z.error((t==null?void 0:t.message)||"保存失败")}finally{D.value=!1}}function L(){r.page=1,q()}function R(t){d.value=t,k.value=!0}return(t,a)=>{const _=i("n-card"),c=i("n-grid-item"),W=i("n-alert"),G=i("n-grid"),M=i("n-switch"),$=i("n-form-item"),J=i("n-input"),ae=i("n-form"),se=i("n-select"),le=i("n-date-picker"),re=i("n-data-table");return w(),P("div",me,[e(ne,{title:"身份认证",desc:"维护公开认证展示和后台审核台,统一查看待审、已通过、已驳回的人工认证记录。"}),e(G,{cols:"1 s:1 m:2","x-gap":16,"y-gap":16,responsive:"screen"},{default:s(()=>[e(c,null,{default:s(()=>[e(_,{size:"small",title:"当前状态"},{default:s(()=>[e(m(Y),{wrap:""},{default:s(()=>[e(m(V),{round:"",type:l.user_verify_enabled?"success":"default"},{default:s(()=>[f(" 认证结构:"+v(l.user_verify_enabled?"已启用":"已关闭"),1)]),_:1},8,["type"]),e(m(V),{round:"",type:h.emailVerificationEnabled?"info":"default"},{default:s(()=>[f(" 邮箱验证:"+v(h.emailVerificationEnabled?"已启用":"未启用"),1)]),_:1},8,["type"]),e(m(V),{round:"",type:"warning"},{default:s(()=>[f(" 待审核:"+v(x.pending),1)]),_:1}),e(m(V),{round:"",type:"success"},{default:s(()=>[f(" 已通过:"+v(x.verified),1)]),_:1}),e(m(V),{round:"",type:"default"},{default:s(()=>[f(" 已驳回:"+v(x.rejected),1)]),_:1})]),_:1})]),_:1})]),_:1}),e(c,null,{default:s(()=>[e(_,{size:"small",title:"审核说明"},{default:s(()=>[e(W,{type:"info","show-icon":!1},{default:s(()=>[...a[9]||(a[9]=[f(" 人工审核台读取 `aksrt_user_verify_status`、`aksrt_user_verify_reason` 和审核日志。开启“邮箱验证通过视为已认证”后,公开页仍会优先展示邮件验证结果。 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),e(_,{class:"aksrt-verify-page__card",size:"small",title:"公开展示与审核开关"},{default:s(()=>[e(ae,{model:l,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:s(()=>[e($,{label:"启用身份认证结构"},{default:s(()=>[e(M,{value:l.user_verify_enabled,"onUpdate:value":a[0]||(a[0]=u=>l.user_verify_enabled=u)},null,8,["value"])]),_:1}),e($,{label:"公开显示认证徽标"},{default:s(()=>[e(M,{value:l.user_verify_public_display,"onUpdate:value":a[1]||(a[1]=u=>l.user_verify_public_display=u),disabled:!l.user_verify_enabled},null,8,["value","disabled"])]),_:1}),e($,{label:"认证徽标文案"},{default:s(()=>[e(J,{value:l.user_verify_badge_text,"onUpdate:value":a[2]||(a[2]=u=>l.user_verify_badge_text=u),disabled:!l.user_verify_enabled,maxlength:"20"},null,8,["value","disabled"])]),_:1}),e($,{label:"邮箱验证通过视为已认证"},{default:s(()=>[e(M,{value:l.user_verify_accept_email_verified,"onUpdate:value":a[3]||(a[3]=u=>l.user_verify_accept_email_verified=u),disabled:!l.user_verify_enabled},null,8,["value","disabled"])]),_:1}),e($,{label:"启用人工审核台"},{default:s(()=>[e(M,{value:l.user_verify_require_manual_review,"onUpdate:value":a[4]||(a[4]=u=>l.user_verify_require_manual_review=u),disabled:!l.user_verify_enabled},null,8,["value","disabled"])]),_:1}),p("div",ge,[e(m(H),{type:"primary",loading:D.value,onClick:T},{default:s(()=>[...a[10]||(a[10]=[f("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["model"])]),_:1}),e(_,{class:"aksrt-verify-page__card",size:"small",title:"认证审核台"},{default:s(()=>[e(m(Y),{vertical:"",size:12},{default:s(()=>[e(G,{cols:"1 s:2 m:4","x-gap":12,"y-gap":12,responsive:"screen"},{default:s(()=>[e(c,null,{default:s(()=>[e(J,{value:n.keyword,"onUpdate:value":a[5]||(a[5]=u=>n.keyword=u),clearable:"",placeholder:"搜索用户、邮箱、备注"},null,8,["value"])]),_:1}),e(c,null,{default:s(()=>[e(se,{value:n.status,"onUpdate:value":a[6]||(a[6]=u=>n.status=u),options:F.value,placeholder:"审核状态"},null,8,["value","options"])]),_:1}),e(c,null,{default:s(()=>[e(le,{value:n.dateRange,"onUpdate:value":a[7]||(a[7]=u=>n.dateRange=u),type:"daterange",clearable:"",style:{width:"100%"}},null,8,["value"])]),_:1}),e(c,null,{default:s(()=>[e(m(H),{type:"primary",block:"",onClick:L},{default:s(()=>[...a[11]||(a[11]=[f("筛选记录",-1)])]),_:1})]),_:1})]),_:1}),e(re,{columns:I,data:U.value,loading:b.value,bordered:!1,pagination:O.value,"row-key":u=>u.user_id},null,8,["data","loading","pagination","row-key"])]),_:1})]),_:1}),e(ye,{show:k.value,"onUpdate:show":a[8]||(a[8]=u=>k.value=u),"user-id":d.value,onUpdated:q},null,8,["show","user-id"])])}}},Ue=ee(we,[["__scopeId","data-v-96c64f9f"]]);export{Ue as default};
diff --git a/assets/admin/build/UsersVerify.css b/assets/admin/build/UsersVerify.css
deleted file mode 100644
index 421596a2..00000000
--- a/assets/admin/build/UsersVerify.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-verify-drawer__section[data-v-84e367b4]{margin-top:20px}.aksrt-verify-drawer__title[data-v-84e367b4]{margin-bottom:10px;font-size:14px;font-weight:600;color:#1f2937}.aksrt-verify-drawer__timeline[data-v-84e367b4]{display:grid;gap:12px}.aksrt-verify-drawer__timeline-item[data-v-84e367b4]{padding:12px;border:1px solid #e5e7eb;border-radius:12px;background:#f8fafc}.aksrt-verify-drawer__timeline-head[data-v-84e367b4]{display:flex;justify-content:space-between;gap:12px;margin-bottom:6px}.aksrt-verify-drawer__timeline-item p[data-v-84e367b4]{margin:0 0 6px;color:#111827;white-space:pre-wrap}.aksrt-verify-drawer__timeline-item small[data-v-84e367b4]{color:#6b7280}.aksrt-verify-page__card[data-v-96c64f9f]{margin-top:16px}
diff --git a/assets/admin/build/UsersWechatTemplate.BTkLtWGJ.js b/assets/admin/build/UsersWechatTemplate.BTkLtWGJ.js
deleted file mode 100644
index c7f4e2e1..00000000
--- a/assets/admin/build/UsersWechatTemplate.BTkLtWGJ.js
+++ /dev/null
@@ -1 +0,0 @@
-import{X as u,a4 as w,Y as s,L as r,Z as o,j as _,af as y,f as b,ag as p,F as g,R as x,o as T,c as S,r as f,e as D,a1 as V,W as k}from"./vendor-vue.Bykizn0M.js";import{P as I}from"./PageHeader.Di3JTPjc.js";import{a as h}from"./shared-api.D5_fnN32.js";import{_ as U}from"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const A={name:"UsersWechatTemplate",components:{PageHeader:I},setup(){const n=f({enabled:!1,configured:!1,has_token:!1,has_template:!1,bound_users:0}),t=D({enabled:!1,app_id:"",app_secret:"",template_id:""}),d=f(!1),a=[{key:"comment_reply",desc:"评论回复通知"},{key:"system_notice",desc:"系统公告通知"},{key:"order_paid",desc:"订单支付通知"},{key:"credits_change",desc:"积分变动通知"},{key:"forum_reply",desc:"论坛回复通知"}],i=f([]),m=S(()=>a.map(e=>({...e,ready:i.value.length===0||i.value.includes(e.key)})));async function c(){try{const e=await h.request("/wechat/status");e.success&&(n.value=e.data,t.enabled=e.data.enabled||!1,t.app_id=e.data.appid||"",t.app_secret=(e.data.app_secret==="***",""),t.template_id=e.data.template_id||"",i.value=e.data.allowed_types||[])}catch(e){console.error("Load WeChat status failed:",e)}}async function l(){d.value=!0;try{const e={...t};!e.app_secret&&n.value.configured&&(e.app_secret="***");const v=await h.request("/wechat/settings",{method:"POST",data:e});v.success?(alert("设置已保存"),c()):alert(v.message||"保存失败")}catch(e){console.error("Save failed:",e),alert("保存失败: "+(e.message||"未知错误"))}finally{d.value=!1}}return T(()=>c()),{status:n,form:t,saving:d,eventTypes:m,saveSettings:l}}},C={class:"aksrt-page-container"},P={class:"aksrt-wechat__status"},W={class:"aksrt-wechat__status-card"},j={class:"aksrt-wechat__status-info"},B={class:"aksrt-wechat__status-value"},H={class:"aksrt-wechat__status-card"},L={class:"aksrt-wechat__status-info"},M={class:"aksrt-wechat__status-value"},N={class:"aksrt-wechat__status-card"},q={class:"aksrt-wechat__status-info"},F={class:"aksrt-wechat__status-value"},z={class:"aksrt-wechat__status-card"},E={class:"aksrt-wechat__status-info"},O={class:"aksrt-wechat__status-value"},R={class:"aksrt-wechat__form-card"},X={class:"aksrt-form-group"},Y={class:"aksrt-form-group"},Z={class:"aksrt-form-group"},G={class:"aksrt-form-group"},J={class:"aksrt-form-actions"},K=["disabled"],Q={class:"aksrt-wechat__form-card"},$={class:"aksrt-table aksrt-table--sm"};function ss(n,t,d,a,i,m){const c=V("PageHeader");return k(),u("div",C,[w(c,{title:"微信模板消息",desc:"配置微信公众号模板消息推送。"}),s("div",P,[s("div",W,[s("div",{class:r(["aksrt-wechat__status-icon",a.status.configured?"aksrt-wechat__status-icon--ok":"aksrt-wechat__status-icon--warn"])},[s("i",{class:r(a.status.configured?"fas fa-check":"fas fa-exclamation")},null,2)],2),s("div",j,[t[5]||(t[5]=s("div",{class:"aksrt-wechat__status-label"},"配置状态",-1)),s("div",B,o(a.status.configured?"已配置":"未配置"),1)])]),s("div",H,[s("div",{class:r(["aksrt-wechat__status-icon",a.status.has_token?"aksrt-wechat__status-icon--ok":"aksrt-wechat__status-icon--warn"])},[s("i",{class:r((a.status.has_token,"fas fa-key"))},null,2)],2),s("div",L,[t[6]||(t[6]=s("div",{class:"aksrt-wechat__status-label"},"Access Token",-1)),s("div",M,o(a.status.has_token?"已获取":"未获取"),1)])]),s("div",N,[s("div",{class:r(["aksrt-wechat__status-icon",a.status.has_template?"aksrt-wechat__status-icon--ok":"aksrt-wechat__status-icon--warn"])},[s("i",{class:r((a.status.has_template,"fas fa-file-alt"))},null,2)],2),s("div",q,[t[7]||(t[7]=s("div",{class:"aksrt-wechat__status-label"},"模板 ID",-1)),s("div",F,o(a.status.has_template?"已配置":"未配置"),1)])]),s("div",z,[t[9]||(t[9]=s("div",{class:"aksrt-wechat__status-icon aksrt-wechat__status-icon--info"},[s("i",{class:"fas fa-users"})],-1)),s("div",E,[t[8]||(t[8]=s("div",{class:"aksrt-wechat__status-label"},"绑定用户",-1)),s("div",O,o(a.status.bound_users||0)+" 人",1)])])]),s("div",R,[t[15]||(t[15]=s("h3",null,"基本配置",-1)),s("div",X,[s("label",null,[_(s("input",{type:"checkbox","onUpdate:modelValue":t[0]||(t[0]=l=>a.form.enabled=l)},null,512),[[y,a.form.enabled]]),t[10]||(t[10]=b(" 启用微信模板消息 ",-1))])]),s("div",Y,[t[11]||(t[11]=s("label",null,"AppID",-1)),_(s("input",{"onUpdate:modelValue":t[1]||(t[1]=l=>a.form.app_id=l),type:"text",class:"aksrt-input",placeholder:"微信公众号 AppID"},null,512),[[p,a.form.app_id]])]),s("div",Z,[t[12]||(t[12]=s("label",null,"AppSecret",-1)),_(s("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>a.form.app_secret=l),type:"password",class:"aksrt-input",placeholder:"微信公众号 AppSecret"},null,512),[[p,a.form.app_secret]]),t[13]||(t[13]=s("p",{class:"aksrt-form-hint"},"保存后不会回显完整密钥",-1))]),s("div",G,[t[14]||(t[14]=s("label",null,"模板 ID",-1)),_(s("input",{"onUpdate:modelValue":t[3]||(t[3]=l=>a.form.template_id=l),type:"text",class:"aksrt-input",placeholder:"微信模板消息模板 ID"},null,512),[[p,a.form.template_id]])]),s("div",J,[s("button",{class:"aksrt-button aksrt-button--primary",disabled:a.saving,onClick:t[4]||(t[4]=(...l)=>a.saveSettings&&a.saveSettings(...l))},o(a.saving?"保存中...":"保存设置"),9,K)])]),s("div",Q,[t[17]||(t[17]=s("h3",null,"支持的通知类型",-1)),t[18]||(t[18]=s("p",{class:"aksrt-form-hint"},"以下事件类型可触发微信模板消息推送(需用户绑定微信且开启对应订阅):",-1)),s("table",$,[t[16]||(t[16]=s("thead",null,[s("tr",null,[s("th",null,"事件类型"),s("th",null,"说明"),s("th",null,"状态")])],-1)),s("tbody",null,[(k(!0),u(g,null,x(a.eventTypes,l=>(k(),u("tr",{key:l.key},[s("td",null,[s("code",null,o(l.key),1)]),s("td",null,o(l.desc),1),s("td",null,[s("span",{class:r(["aksrt-badge",l.ready?"aksrt-badge--success":"aksrt-badge--warning"])},o(l.ready?"可用":"待接入"),3)])]))),128))])])])])}const ns=U(A,[["render",ss],["__scopeId","data-v-cb377b9c"]]);export{ns as default};
diff --git a/assets/admin/build/UsersWechatTemplate.css b/assets/admin/build/UsersWechatTemplate.css
deleted file mode 100644
index ad4ce9c8..00000000
--- a/assets/admin/build/UsersWechatTemplate.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-wechat__status[data-v-cb377b9c]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.aksrt-wechat__status-card[data-v-cb377b9c]{display:flex;align-items:center;gap:12px;padding:16px;background:#fff;border-radius:8px;border:1px solid #e8e8e8}.aksrt-wechat__status-icon[data-v-cb377b9c]{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px}.aksrt-wechat__status-icon--ok[data-v-cb377b9c]{background:#d4edda;color:#155724}.aksrt-wechat__status-icon--warn[data-v-cb377b9c]{background:#fff3cd;color:#856404}.aksrt-wechat__status-icon--info[data-v-cb377b9c]{background:#d1ecf1;color:#0c5460}.aksrt-wechat__status-value[data-v-cb377b9c]{font-size:18px;font-weight:600;color:#1a1a2e}.aksrt-wechat__status-label[data-v-cb377b9c]{font-size:12px;color:#888}.aksrt-wechat__form-card[data-v-cb377b9c]{background:#fff;border:1px solid #e8e8e8;border-radius:8px;padding:24px;margin-bottom:16px}.aksrt-wechat__form-card h3[data-v-cb377b9c]{margin:0 0 16px;font-size:16px;font-weight:600}.aksrt-form-hint[data-v-cb377b9c]{font-size:12px;color:#888;margin-top:4px}
diff --git a/assets/admin/build/index.css b/assets/admin/build/index.css
deleted file mode 100644
index 859977f0..00000000
--- a/assets/admin/build/index.css
+++ /dev/null
@@ -1 +0,0 @@
-.aksrt-mobile-topbar[data-v-cdd0c306]{display:flex;align-items:center;gap:10px;height:48px;padding:0 14px;background:#fff;border-bottom:1px solid #eceff5;position:sticky;top:0;z-index:50}.aksrt-mobile-topbar__menu[data-v-cdd0c306]{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:8px;background:transparent;color:#1a1a2e;cursor:pointer;margin-left:-6px}.aksrt-mobile-topbar__menu[data-v-cdd0c306]:hover{background:#f3f5f9}.aksrt-mobile-topbar__title[data-v-cdd0c306]{flex:1 1 auto;font-size:15px;font-weight:600;color:#1a1a2e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.aksrt-mobile-topbar__brand[data-v-cdd0c306]{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;background:#18a058;color:#fff;font-size:11px;font-weight:700;letter-spacing:.06em}.aksrt-logo[data-v-06997596]{display:flex;align-items:center;justify-content:center;height:60px;gap:10px;border-bottom:1px solid var(--n-border-color, #efeff5)}.aksrt-logo--drawer[data-v-06997596]{justify-content:flex-start;padding:0 18px}.logo-icon[data-v-06997596]{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;background:#18a058;color:#fff;font-size:12px;font-weight:700;letter-spacing:.08em}.logo-text[data-v-06997596]{font-size:18px;font-weight:700;color:#1a1a2e;letter-spacing:1px}.aksrt-admin-content__inner[data-v-06997596]{padding:24px 28px}.aksrt-admin-mobile[data-v-06997596]{background:#f5f7fb;min-height:100vh}.aksrt-admin-mobile__body[data-v-06997596]{padding:14px 12px 32px}.aksrt-page-wrapper[data-v-06997596]{min-height:calc(100vh - 120px)}.aksrt-error-fallback[data-v-06997596]{padding:48px 20px;text-align:center}.aksrt-error-title[data-v-06997596]{margin:0 0 10px;font-size:16px;color:#d03050}.aksrt-error-msg[data-v-06997596]{margin:0 0 16px;font-size:13px;color:#777}#aksrt-admin-app,#aksrt-admin-app *{box-sizing:border-box}#aksrt-admin-app{min-height:100%;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans SC,sans-serif;font-size:14px;line-height:1.6}#aksrt-admin-app .n-menu .n-menu-item-content i[class*=fa-],#aksrt-admin-app .n-menu-item-content i[class*=fa-]{font-size:18px;width:18px;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:inherit;opacity:.75;transition:opacity .15s}#aksrt-admin-app .n-menu-item-content--selected i[class*=fa-],#aksrt-admin-app .n-menu-item-content:hover i[class*=fa-]{opacity:1}#aksrt-admin-app .n-layout,#aksrt-admin-app .n-layout-sider{min-height:100vh}#aksrt-admin-app .aksrt-admin-layout{min-height:100vh;background:#f5f7fb}#aksrt-admin-app .aksrt-page-container,#aksrt-admin-app .content-page{max-width:1100px;margin:0 auto}#aksrt-admin-app .aksrt-page-title{margin:0 0 12px;color:#1a1a2e;font-size:22px;font-weight:700;letter-spacing:-.02em}#aksrt-admin-app .aksrt-page-desc{margin:0 0 24px;color:#7a7f8a;font-size:13px;line-height:1.7}#aksrt-admin-app .aksrt-section-card{margin-bottom:18px;border-radius:12px!important;border:1px solid #eceff5!important;box-shadow:0 1px 3px #0f172a0a}#aksrt-admin-app .aksrt-section-card .n-card__content{padding:18px 20px 20px!important}#aksrt-admin-app .aksrt-section-card .n-card-header{padding:18px 20px 0!important}#aksrt-admin-app .aksrt-section-header{display:flex;align-items:center;gap:10px;margin-bottom:14px}#aksrt-admin-app .aksrt-section-header h3{margin:0;color:#1a1a2e;font-size:15px;font-weight:600}#aksrt-admin-app .section-icon,#aksrt-admin-app .header-icon{font-size:17px;opacity:.8;display:inline-flex;align-items:center}#aksrt-admin-app .section-desc,#aksrt-admin-app .aksrt-hint-text{color:#8a909c;font-size:12px;line-height:1.6}#aksrt-admin-app .section-desc{margin:0 0 14px}#aksrt-admin-app .aksrt-form .n-form-item{margin-bottom:18px}#aksrt-admin-app .aksrt-form .n-form-item:last-child{margin-bottom:0}#aksrt-admin-app .aksrt-form .n-form-item-label{color:#555!important;font-size:13px;font-weight:500}#aksrt-admin-app .aksrt-form .n-input,#aksrt-admin-app .aksrt-form .n-select .n-base-selection,#aksrt-admin-app .aksrt-form .n-input-number{min-height:38px;--n-height: 38px !important}#aksrt-admin-app .aksrt-form .n-input--textarea textarea{min-height:84px}#aksrt-admin-app .aksrt-form .n-switch{--n-rail-height: 26px !important;--n-rail-width: 48px !important}#aksrt-admin-app .aksrt-form-actions{display:flex;justify-content:flex-end;align-items:center;gap:12px;padding:24px 0 8px;margin-top:28px;border-top:1px solid #eef1f6}#aksrt-admin-app .aksrt-form-actions .n-button{min-width:120px;height:40px;font-weight:500}#aksrt-admin-app .aksrt-tabs .n-tabs-nav{margin-bottom:20px!important}#aksrt-admin-app .aksrt-tabs .n-tabs-tab{padding:10px 20px!important;font-size:14px!important;font-weight:500}#aksrt-admin-app .n-data-table{border-radius:10px;overflow:hidden}#aksrt-admin-app .n-data-table .n-data-table-th{background:#f8fafc}#aksrt-admin-app .n-empty{padding:24px 0}#aksrt-admin-app .aksrt-card-header-row__left{display:inline-flex;align-items:center;gap:8px;min-width:0}#aksrt-admin-app .aksrt-card-header-row__title{font-weight:600}#aksrt-admin-app .aksrt-card-header-row{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;flex-wrap:wrap}#aksrt-admin-app .aksrt-card-header-row__left{display:flex;align-items:center;gap:8px;min-width:0}#aksrt-admin-app .aksrt-card-header-row__title{margin:0;font-size:15px;font-weight:600;color:#1a1a2e}.fade-slide-enter-active,.fade-slide-leave-active{transition:opacity .24s ease,transform .24s ease}.fade-slide-enter-from{opacity:0;transform:translateY(12px)}.fade-slide-leave-to{opacity:0;transform:translateY(-8px)}.aksrt-modal-card{width:100%;max-width:520px}@media(max-width:768px){#aksrt-admin-app .aksrt-page-container,#aksrt-admin-app .content-page{max-width:100%;padding:0}#aksrt-admin-app .aksrt-page-title{font-size:18px;margin-bottom:8px}#aksrt-admin-app .aksrt-page-desc{font-size:12px;margin-bottom:14px}#aksrt-admin-app .aksrt-section-card{margin-bottom:12px;border-radius:10px!important}#aksrt-admin-app .aksrt-section-card .n-card__content{padding:14px!important}#aksrt-admin-app .aksrt-section-card .n-card-header{padding:14px 14px 0!important}#aksrt-admin-app .aksrt-section-header{margin-bottom:10px}#aksrt-admin-app .aksrt-form .n-form-item{margin-bottom:14px}#aksrt-admin-app .aksrt-form .n-form-item .n-form-item-label{text-align:left!important;padding:0 0 6px!important;width:auto!important;height:auto!important;line-height:1.5!important;justify-content:flex-start!important}#aksrt-admin-app .aksrt-form .n-form-item-blank{width:100%}#aksrt-admin-app .aksrt-form .n-form-item .n-form-item-label,#aksrt-admin-app .aksrt-form .n-form-item-row{display:block!important}#aksrt-admin-app .aksrt-form .n-radio-group{width:100%}#aksrt-admin-app .aksrt-form .n-radio-group .n-space{flex-wrap:wrap!important;gap:6px 8px!important}#aksrt-admin-app .aksrt-form .n-radio-button{flex:1 1 auto;min-width:0}#aksrt-admin-app .aksrt-form .n-input-group{flex-wrap:wrap;gap:6px}#aksrt-admin-app .aksrt-form .n-input-group>.n-input,#aksrt-admin-app .aksrt-form .n-input-group>.n-button{border-radius:6px!important}#aksrt-admin-app .aksrt-form-actions{flex-direction:column-reverse;align-items:stretch;padding:16px 0 8px;margin-top:20px;gap:8px}#aksrt-admin-app .aksrt-form-actions .n-button{width:100%;min-width:0;height:42px}#aksrt-admin-app .aksrt-card-header-row{gap:8px}.n-modal-mask+.n-modal-body-wrapper .n-modal,.n-modal-body-wrapper>.n-modal{width:100vw!important;max-width:100vw!important;border-radius:0!important;margin:0!important;min-height:100vh}.aksrt-modal-card{max-width:100vw!important;width:100vw!important;min-height:100vh;border-radius:0!important}.aksrt-table-mobile-hide,#aksrt-admin-app .n-data-table .aksrt-table-mobile-hide{display:none!important}#aksrt-admin-app .n-data-table .n-data-table-td,#aksrt-admin-app .n-data-table .n-data-table-th{padding:8px 10px!important}#aksrt-admin-app .aksrt-tabs .n-tabs-tab{padding:8px 12px!important;font-size:13px!important}.n-drawer .n-menu .n-menu-item-content{padding-left:18px!important}}@media(max-width:480px){#aksrt-admin-app .aksrt-section-card .n-card__content{padding:12px!important}#aksrt-admin-app .aksrt-section-card .n-card-header{padding:12px 12px 0!important}}
diff --git a/assets/admin/build/index.html b/assets/admin/build/index.html
deleted file mode 100644
index 56bad250..00000000
--- a/assets/admin/build/index.html
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
- AKSRT 主题设置
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/admin/build/index.js b/assets/admin/build/index.js
deleted file mode 100644
index 80cf0a28..00000000
--- a/assets/admin/build/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SchemaPage.CSkx936u.js","./vendor-vue.Bykizn0M.js","./shared-api.B7o7Pzvu.js","./FaIcon.CX_hGmM4.js","./vendor-misc.1adHN6i_.js","./shared-api.D5_fnN32.js","./index2.css","./vendor-naive.BuHWlEgf.js","./SchemaPage.css","./DeferredPage.DrhT6-8i.js","./DeferredPage.css","./NativeOpsRedirect.C0bocwWY.js","./NativeOpsRedirect.css","./FloatingButtonsSettings.-1uwNMV9.js","./vendor-draggable.CceJcfGJ.js","./PageHeader.Di3JTPjc.js","./PageHeader.css","./FloatingButtonsSettings.css","./FooterTabbarSettings.RLdsCbkU.js","./FooterTabbarSettings.css","./FooterSettings.pT4aCC_F.js","./media.BHNcAGK-.js","./FooterSettings.css","./HomepageSettings.iKd6UZP-.js","./HomepageSettings.css","./HeroManager.sfaSC084.js","./HeroManager.css","./BannerManager.DIeolpAQ.js","./BannerManager.css","./PostPageSettings.B1brRzY8.js","./CommentSettings.BXEQmxrU.js","./CommentPermissions.wWXEnm5v.js","./PermissionsCapabilities.DAu3e_3q.js","./PermissionsCapabilities.css","./AttachmentPermissions.NUq74TjZ.js","./AttachmentPermissions.css","./DownloadPermissions.D_4Tmrvf.js","./CmsCredits.xTl3ugX1.js","./ResourceDownload.DvRILKEZ.js","./ThemeInfoPage.CmzNxB-f.js","./ThemeInfoPage.css","./ThemeAuthorizationPage.exqEspJr.js","./DocsPage.Cef6fL12.js","./DocsPage.css","./UsersFeatures.8x2S0GR6.js","./UsersSignin.frRX-AHK.js","./UsersVerify.DlTUYsYd.js","./UsersVerify.css","./UsersLevel.D9sYKZP1.js","./UsersBadge.BAdBIwxF.js","./UsersWechatTemplate.BTkLtWGJ.js","./UsersWechatTemplate.css","./PaymentGateway.BTbqvMWf.js","./PaymentGateway.css","./ToolsImportExport.CBVCMq0z.js","./ToolsImportExport.css","./ToolsHealth.CoF-E7n8.js","./ToolsHealth.css","./ToolsEmailRollback.YrJUTDzS.js","./ToolsEmailRollback.css","./ToolsUpdate.CTzLIO24.js","./ToolsUpdate.css","./ExtensionTools.D5LShWF9.js","./ExtensionTools.css","./ExtensionSecurity.Dusc4b9q.js","./ExtensionSecurity.css","./ExtensionAI.vrglPKlb.js","./ExtensionAI.css"])))=>i.map(i=>d[i]);
-import{W as v,X as L,Y as p,Z as B,r as O,k as te,_ as oe,$ as ae,o as ne,b as se,a0 as ie,a1 as D,a2 as V,a3 as y,a4 as u,a5 as F,N as w,z as M,a6 as N,f as G,c as K,p as le,a7 as re,a8 as ce,M as me,a9 as pe}from"./vendor-vue.Bykizn0M.js";import{N as ue,n as de}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))c(r);new MutationObserver(r=>{for(const m of r)if(m.type==="childList")for(const d of m.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&c(d)}).observe(document,{childList:!0,subtree:!0});function i(r){const m={};return r.integrity&&(m.integrity=r.integrity),r.referrerPolicy&&(m.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?m.credentials="include":r.crossOrigin==="anonymous"?m.credentials="omit":m.credentials="same-origin",m}function c(r){if(r.ep)return;r.ep=!0;const m=i(r);fetch(r.href,m)}})();const W=(e,a)=>{const i=e.__vccOpts||e;for(const[c,r]of a)i[c]=r;return i},ye={class:"aksrt-mobile-topbar"},ge={class:"aksrt-mobile-topbar__title"},he={__name:"MobileTopBar",props:{title:{type:String,default:"AKSRT"}},emits:["toggle"],setup(e){return(a,i)=>(v(),L("header",ye,[p("button",{class:"aksrt-mobile-topbar__menu",type:"button","aria-label":"打开菜单",onClick:i[0]||(i[0]=c=>a.$emit("toggle"))},[...i[1]||(i[1]=[p("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[p("line",{x1:"4",y1:"6",x2:"20",y2:"6"}),p("line",{x1:"4",y1:"12",x2:"20",y2:"12"}),p("line",{x1:"4",y1:"18",x2:"20",y2:"18"})],-1)])]),p("div",ge,B(e.title),1),i[2]||(i[2]=p("div",{class:"aksrt-mobile-topbar__brand"},"AK",-1))]))}},_e=W(he,[["__scopeId","data-v-cdd0c306"]]),q=O(null);function f(e){return()=>te("i",{class:e,style:"font-size:18px;width:18px;text-align:center"})}function j(e){return{status:"available",component:"SchemaPage",canonicalDomain:"",section:"",phase:"",dependsOn:[],reason:"",features:[],iconClass:"",...e}}function l(e){return j(e)}function t(e){return j({component:"SchemaPage",...e})}const fe={key:"global",label:"全局&功能",icon:f("fas fa-globe"),route:"/global",children:[t({key:"global-common",name:"GlobalCommon",label:"常用功能",route:"/global/common",title:"常用功能",desc:"评论、性能、头像源与备案等全局基础配置。",canonicalDomain:"global",section:"common"}),t({key:"global-logo",name:"GlobalLogo",label:"LOGO图像",route:"/global/logo",title:"LOGO图像",desc:"管理站点 Logo、站点图标和品牌标识。",canonicalDomain:"global",section:"logo"}),t({key:"global-seo",name:"GlobalSeo",label:"SEO优化",route:"/global/seo",title:"SEO优化",desc:"站点标题、描述、关键词、Sitemap 等搜索引擎优化设置。",canonicalDomain:"global",section:"seo"}),t({key:"global-layout",name:"GlobalLayout",label:"显示&布局",route:"/global/layout",title:"显示&布局",desc:"全局布局风格、颜色方案、字体设置。",canonicalDomain:"global",section:"layout"}),t({key:"global-search",name:"GlobalSearch",label:"搜索功能",route:"/global/search",title:"搜索功能",desc:"搜索页面样式、搜索建议、热门搜索配置。",canonicalDomain:"global",section:"search"}),l({key:"global-tabbar",name:"GlobalTabbar",label:"手机底部Tab",route:"/global/tabbar",title:"手机底部Tab",desc:"移动端底部导航栏配置。",component:"FooterTabbarSettings"}),l({key:"global-floating",name:"GlobalFloating",label:"右侧悬浮按钮",route:"/global/floating",title:"右侧悬浮按钮",desc:"页面右侧浮动按钮的显示与配置。",component:"FloatingButtonsSettings"}),t({key:"global-i18n",name:"GlobalI18n",label:"多语言翻译",route:"/global/i18n",title:"多语言翻译",desc:"配置站点语言、语言切换器和翻译管理。",canonicalDomain:"global",section:"i18n"}),t({key:"global-email",name:"GlobalEmail",label:"Email邮件",route:"/global/email",title:"Email邮件",desc:"SMTP 发信配置、邮件模板与测试。",canonicalDomain:"global",section:"email"}),t({key:"global-custom-code",name:"GlobalCustomCode",label:"自定义代码",route:"/global/custom-code",title:"自定义代码",desc:"自定义 CSS、JS 代码注入。",canonicalDomain:"global",section:"custom-code"})]},be={key:"page-display",label:"页面&显示",icon:f("fas fa-desktop"),route:"/page-display",children:[t({key:"page-display-header-nav",name:"PageDisplayHeaderNav",label:"顶部导航栏",route:"/page-display/header-nav",title:"顶部导航栏",desc:"导航栏布局、菜单位置、LOGO 与搜索入口配置。",canonicalDomain:"page_display",section:"header-nav"}),t({key:"page-display-background",name:"PageDisplayBackground",label:"全局背景",route:"/page-display/background",title:"全局背景",desc:"配置站点全局背景图、背景色、暗色模式背景和遮罩。",canonicalDomain:"page_display",section:"background"}),t({key:"page-display-menu-decoration",name:"PageDisplayMenuDecoration",label:"菜单装饰",route:"/page-display/menu-decoration",title:"菜单装饰",desc:"配置导航菜单的图标、徽章、下拉样式和图文卡片子菜单。",canonicalDomain:"page_display",section:"menu-decoration"}),t({key:"page-display-header-components",name:"PageDisplayHeaderComponents",label:"顶部多功能组件",route:"/page-display/header-components",title:"顶部多功能组件",desc:"配置顶部组件显示范围、轮播参数、搜索覆盖层与图标卡片。幻灯片内容见「Hero 轮播」「Banner 轮播」。",canonicalDomain:"page_display",section:"header-components"}),l({key:"page-display-hero",name:"PageDisplayHero",label:"Hero 轮播",route:"/page-display/hero",title:"Hero 轮播管理",desc:"管理首页顶部 Hero 幻灯片内容(图片/视频、文案、图层、跳转)。显示开关与搜索/卡片配置见「顶部多功能组件」。",component:"HeroManager",canonicalDomain:"page_display",section:"hero"}),l({key:"page-display-banner",name:"PageDisplayBanner",label:"Banner 轮播",route:"/page-display/banner",title:"Banner 管理",desc:"管理首页内容流 Banner 幻灯片(图片、文案、跳转、启用状态)。",component:"BannerManager",canonicalDomain:"page_display",section:"banner"}),l({key:"page-display-footer",name:"PageDisplayFooter",label:"底部页脚",route:"/page-display/footer",title:"底部页脚",desc:"页脚布局、友链、版权信息配置。",component:"FooterSettings"}),l({key:"page-display-homepage",name:"PageDisplayHomepage",label:"首页配置",route:"/page-display/homepage",title:"首页配置",desc:"首页内容模型、主列表、分类 Tab 与首页交互配置。",component:"HomepageSettings"}),t({key:"page-display-float-btn",name:"PageDisplayFloatBtn",label:"悬浮按钮",route:"/page-display/float-btn",title:"悬浮按钮",desc:"悬浮按钮的显示规则、样式与滚动隐藏设置。",canonicalDomain:"page_display",section:"float-btn"}),t({key:"page-display-category",name:"PageDisplayCategory",label:"分类页面",route:"/page-display/category",title:"分类页面",desc:"分类归档页的头图、简介、列表模式、侧栏配置。",canonicalDomain:"page_display",section:"category"}),t({key:"page-display-tag",name:"PageDisplayTag",label:"标签页面",route:"/page-display/tag",title:"标签页面",desc:"标签归档页的展示样式与配置。",canonicalDomain:"page_display",section:"tag"}),t({key:"page-display-special",name:"PageDisplaySpecial",label:"专题页面",route:"/page-display/special",title:"专题页面",desc:"配置专题聚合页的封面、摘要、布局、聚合规则和子页面展示策略。",canonicalDomain:"page_display",section:"special"}),t({key:"page-display-user-home",name:"PageDisplayUserHome",label:"用户主页",route:"/page-display/user-home",title:"用户主页",desc:"用户公开主页的布局与展示配置。",canonicalDomain:"page_display",section:"user-home"}),t({key:"page-display-other",name:"PageDisplayOther",label:"其它页面",route:"/page-display/other",title:"其它页面",desc:"404 页面、搜索结果页等其它页面配置。",canonicalDomain:"page_display",section:"other"})]},ke={key:"post-list",label:"文章&列表",icon:f("fas fa-file-alt"),route:"/post-list",children:[t({key:"post-list-list",name:"PostListList",label:"文章列表",route:"/post-list/list",title:"文章列表",desc:"列表样式、元信息开关、分页方式配置。",canonicalDomain:"post_list",section:"list"}),t({key:"post-list-thumb",name:"PostListThumb",label:"列表缩略图",route:"/post-list/thumb",title:"列表缩略图",desc:"缩略图策略、封面回退、多图模式配置。",canonicalDomain:"post_list",section:"thumb"}),t({key:"post-list-page",name:"PostListPage",label:"文章页面",route:"/post-list/page",component:"PostPageSettings",title:"文章页面",desc:"文章页布局、目录树、灯箱、版权区配置。",canonicalDomain:"post_list",section:"page"}),t({key:"post-list-filter",name:"PostListFilter",label:"高级筛选",route:"/post-list/filter",title:"高级筛选",desc:"筛选栏、排序方式、分类筛选配置。",canonicalDomain:"post_list",section:"filter"}),t({key:"post-list-feature",name:"PostListFeature",label:"文章功能",route:"/post-list/feature",title:"文章功能",desc:"收藏、分享、阅读进度、相关推荐等功能开关。",canonicalDomain:"post_list",section:"feature"}),t({key:"post-list-share",name:"PostListShare",label:"分享设置",route:"/post-list/share",title:"分享设置",desc:"配置微信分享凭据、海报分享和社交分享选项。",canonicalDomain:"post_list",section:"share"}),t({key:"post-list-comment",name:"PostListComment",label:"评论设置",route:"/post-list/comment",component:"CommentSettings",title:"评论设置",desc:"评论排序、楼层展示、登录限制、回复限制等配置。",canonicalDomain:"post_list",section:"comment"}),t({key:"post-list-submit",name:"PostListSubmit",label:"前台投稿",route:"/post-list/submit",title:"前台投稿",desc:"配置前台投稿表单字段、审核流程、附件权限和封面策略。",canonicalDomain:"post_list",section:"submit"})]},ve={key:"permissions",label:"功能&权限",icon:f("fas fa-shield-alt"),route:"/permissions",children:[l({key:"permissions-comment",name:"PermissionsComment",label:"评论权限",route:"/permissions/comment",component:"CommentPermissions",title:"评论权限",desc:"游客评论、频率限制、敏感词和审核策略。",canonicalDomain:"permissions",section:"comment"}),l({key:"permissions-attachment",name:"PermissionsAttachment",label:"附件权限",route:"/permissions/attachment",component:"AttachmentPermissions",title:"附件权限",desc:"上传角色、文件类型、大小限制和审核状态。",canonicalDomain:"permissions",section:"attachment"}),l({key:"permissions-download",name:"PermissionsDownload",label:"下载权限",route:"/permissions/download",component:"DownloadPermissions",title:"下载权限",desc:"登录要求、积分要求、角色要求和 VIP 特权。",canonicalDomain:"permissions",section:"download"}),t({key:"permissions-login",name:"PermissionsLogin",label:"登录权限",route:"/permissions/login",title:"登录权限",desc:"登录验证、人机验证、注册限制配置。",canonicalDomain:"permissions",section:"login"}),t({key:"permissions-moderation",name:"PermissionsModeration",label:"审核和风控",route:"/permissions/moderation",title:"审核和风控",desc:"评论审核、反垃圾、限流与风控配置。",canonicalDomain:"permissions",section:"moderation"}),l({key:"permissions-capabilities",name:"PermissionsCapabilities",label:"基本权限",route:"/permissions/capabilities",component:"PermissionsCapabilities",title:"基本权限 / 能力矩阵",desc:"统一管理用户治理、投稿和评论的角色能力矩阵。",canonicalDomain:"permissions",section:"capabilities"})]},Pe={key:"users",label:"用户&互动",icon:f("fas fa-users"),route:"/users",children:[t({key:"users-auth",name:"UsersAuth",label:"注册登录",route:"/users/auth",title:"注册登录",desc:"注册方式、登录限制和密码策略配置。",canonicalDomain:"users",section:"auth"}),t({key:"users-oauth",name:"UsersOauth",label:"第三方登录",route:"/users/oauth",title:"第三方登录",desc:"GitHub、Gitee、QQ、Google 等第三方登录配置。",canonicalDomain:"users",section:"oauth"}),l({key:"users-features",name:"UsersFeatures",label:"用户功能",route:"/users/features",component:"UsersFeatures",title:"用户功能",desc:"用户中心与个人主页模块配置。",canonicalDomain:"users",section:"features"}),l({key:"users-signin",name:"UsersSignin",label:"签到奖励",route:"/users/signin",component:"UsersSignin",title:"签到奖励",desc:"签到规则、连续签到奖励和签到页面配置。",canonicalDomain:"users",section:"signin"}),l({key:"users-credits",name:"UsersCredits",label:"用户积分",route:"/users/credits",title:"用户积分",desc:"积分规则、积分日志和用户积分管理。",component:"CmsCredits",canonicalDomain:"users",section:"credits"}),l({key:"users-verify",name:"UsersVerify",label:"身份认证",route:"/users/verify",component:"UsersVerify",status:"available",title:"身份认证",desc:"身份认证字段与展示配置(审核队列在 用户 → 身份认证)。",canonicalDomain:"users",section:"verify"}),l({key:"users-level",name:"UsersLevel",label:"用户等级",route:"/users/level",component:"UsersLevel",status:"available",title:"用户等级",desc:"等级规则、升级条件和权益映射。",canonicalDomain:"users",section:"level"}),l({key:"users-badge",name:"UsersBadge",label:"用户徽章",route:"/users/badge",component:"UsersBadge",status:"available",title:"用户徽章",desc:"徽章规则、授予条件和前台展示。",canonicalDomain:"users",section:"badge"}),t({key:"users-notifications",name:"UsersNotifications",label:"消息通知",route:"/users/notifications",title:"消息通知",desc:"站内通知、邮件通知和通知策略配置。",canonicalDomain:"users",section:"notifications"}),t({key:"users-sms",name:"UsersSms",label:"短信接口",route:"/users/sms",title:"短信接口",desc:"配置短信验证码和短信通知服务的供应商、模板和限流策略。",canonicalDomain:"users",section:"sms"}),t({key:"users-wechat",name:"UsersWechat",label:"微信通知",route:"/users/wechat",title:"微信通知",desc:"配置微信模板消息、订阅/解绑和站外通知策略。",canonicalDomain:"users",section:"wechat"}),l({key:"users-wechat-template",name:"UsersWechatTemplate",label:"微信模板消息",route:"/users/wechat-template",component:"UsersWechatTemplate",status:"available",title:"微信模板消息",desc:"配置微信公众号模板消息推送。",canonicalDomain:"users",section:"wechat-template"})]},De={key:"payment",label:"支付&付费",icon:f("fas fa-wallet"),route:"/payment",children:[l({key:"payment-paid",name:"PaymentPaid",label:"下载/付费内容中心",route:"/payment/paid",title:"下载/付费内容中心",desc:"资源下载门槛、付费内容策略和人工交付说明。",component:"ResourceDownload"}),t({key:"payment-recharge",name:"PaymentRecharge",label:"余额充值",route:"/payment/recharge",status:"available",title:"余额充值",desc:"余额充值策略、记录和手动确认配置。",canonicalDomain:"payment",section:"recharge"}),t({key:"payment-vip",name:"PaymentVip",label:"VIP会员",route:"/payment/vip",status:"available",title:"VIP会员",desc:"会员套餐、会员特权和免扣策略。",canonicalDomain:"payment",section:"vip"}),l({key:"payment-gateway",name:"PaymentGateway",label:"收款接口",route:"/payment/gateway",component:"PaymentGateway",status:"available",title:"收款接口",desc:"支付网关适配器、测试网关和手动确认配置。",canonicalDomain:"payment",section:"gateway"}),t({key:"payment-order",name:"PaymentOrder",label:"订单设置",route:"/payment/order",status:"available",title:"订单设置",desc:"订单前缀、有效期、展示字段和状态文案。",canonicalDomain:"payment",section:"order"}),t({key:"payment-affiliate",name:"PaymentAffiliate",label:"推广返佣",route:"/payment/affiliate",status:"available",title:"推广返佣",desc:"返佣规则、邀请链路和结算策略(返佣工单在支付中心)。",canonicalDomain:"payment",section:"affiliate"}),t({key:"payment-card-pass",name:"PaymentCardPass",label:"卡密设置",route:"/payment/card-pass",status:"available",title:"卡密设置",desc:"充值卡类型、卡号规则与兑换文案(卡密工单在支付中心)。",canonicalDomain:"payment",section:"card-pass"}),t({key:"payment-withdrawal",name:"PaymentWithdrawal",label:"提现策略",route:"/payment/withdrawal",status:"available",title:"提现策略",desc:"最低提现、手续费与说明文案(提现工单在支付中心)。",canonicalDomain:"payment",section:"withdrawal"})]},Ee={key:"shop",label:"商城&商品",icon:f("fas fa-shopping-cart"),route:"/shop",children:[t({key:"shop-basic",name:"ShopBasic",label:"商城基础",route:"/shop/basic",title:"商城基础",desc:"商城总开关、首页链接、面包屑和 URL 别名设置。",canonicalDomain:"shop",section:"basic"}),t({key:"shop-list",name:"ShopList",label:"商品列表",route:"/shop/list",title:"商品列表",desc:"商品列表排序、分页、卡片样式和销量显示配置。",canonicalDomain:"shop",section:"list"}),t({key:"shop-single",name:"ShopSingle",label:"商品详情",route:"/shop/single",title:"商品详情",desc:"商品详情页布局、相关推荐和底部内容设置。",canonicalDomain:"shop",section:"single"}),t({key:"shop-product-defaults",name:"ShopProductDefaults",label:"商品默认参数",route:"/shop/product-defaults",title:"商品默认参数",desc:"主题级商品参数默认值,作为参数继承链的根。",canonicalDomain:"shop",section:"product-defaults"}),t({key:"shop-contact",name:"ShopContact",label:"客服配置",route:"/shop/contact",title:"客服配置",desc:"商品详情页客服按钮和联系方式配置。",canonicalDomain:"shop",section:"contact"}),t({key:"shop-shipping-config",name:"ShopShippingConfig",label:"物流配置",route:"/shop/shipping-config",title:"物流配置",desc:"快递查询接口、物流公司列表和收货地址设置。",canonicalDomain:"shop",section:"shipping-config"}),t({key:"shop-timing",name:"ShopTiming",label:"时效与售后原因",route:"/shop/timing",title:"时效与售后原因",desc:"确认收货、评价、退货时效和售后原因配置。",canonicalDomain:"shop",section:"timing"})]},Ae={key:"forum",label:"社区&论坛",icon:f("fas fa-comments"),route:"/forum",children:[t({key:"forum-settings-basic",name:"ForumSettingsBasic",label:"基础设置",route:"/forum/settings",title:"论坛基础设置",desc:"论坛总开关、管理员和名称定义。",canonicalDomain:"forum",section:"basic"}),t({key:"forum-settings-names",name:"ForumSettingsNames",label:"名称定义",route:"/forum/settings/names",title:"名称定义",desc:"自定义论坛各实体的显示名称。",canonicalDomain:"forum",section:"names"}),t({key:"forum-settings-homepage",name:"ForumSettingsHomepage",label:"首页设置",route:"/forum/settings/homepage",title:"论坛首页设置",desc:"首页 Tab 引擎、快速发帖入口和移动端交互配置。",canonicalDomain:"forum",section:"homepage"}),t({key:"forum-settings-board-page",name:"ForumSettingsBoardPage",label:"版块页面",route:"/forum/settings/board-page",title:"版块页面设置",desc:"版块页布局、Tab 栏目和移动端交互配置。",canonicalDomain:"forum",section:"board_page"}),t({key:"forum-settings-post-page",name:"ForumSettingsPostPage",label:"帖子页面",route:"/forum/settings/post-page",title:"帖子页面设置",desc:"面包屑、评分、高度限制和封面配置。",canonicalDomain:"forum",section:"post_page"}),t({key:"forum-settings-reply",name:"ForumSettingsReply",label:"回复评论",route:"/forum/settings/reply",title:"回复评论设置",desc:"回复翻页方式、工具栏功能和快捷回复配置。",canonicalDomain:"forum",section:"reply"}),t({key:"forum-settings-permissions",name:"ForumSettingsPermissions",label:"权限配置",route:"/forum/settings/permissions",title:"论坛权限配置",desc:"发帖限制、帖子付费和版块付费关注。",canonicalDomain:"forum",section:"permissions"}),t({key:"forum-settings-other",name:"ForumSettingsOther",label:"其它设置",route:"/forum/settings/other",title:"论坛其它设置",desc:"投票、版主申请说明、标题字数和 URL 别名。",canonicalDomain:"forum",section:"other"}),t({key:"forum-settings-upload",name:"ForumSettingsUpload",label:"上传权限",route:"/forum/settings/upload",title:"上传权限设置",desc:"图片、视频和文件上传大小与格式限制。",canonicalDomain:"forum",section:"upload"}),t({key:"forum-settings-credits",name:"ForumSettingsCredits",label:"积分设置",route:"/forum/settings/credits",title:"论坛积分设置",desc:"论坛行为积分奖励矩阵和每日上限。",canonicalDomain:"forum",section:"credits"})]},Se={key:"extensions",label:"扩展&增强",icon:f("fas fa-puzzle-piece"),route:"/extensions",children:[t({key:"extensions-ip",name:"ExtensionsIp",label:"IP归属地",route:"/extensions/ip",title:"IP归属地",desc:"配置 IP 数据源、缓存策略和前台归属地展示。",canonicalDomain:"extensions",section:"ip"}),t({key:"extensions-audit",name:"ExtensionsAudit",label:"API内容审核",route:"/extensions/audit",title:"API内容审核",desc:"配置第三方内容审核 API 接入、审核范围和失败回退策略。",canonicalDomain:"extensions",section:"audit"}),t({key:"extensions-push",name:"ExtensionsPush",label:"百度推送",route:"/extensions/push",title:"百度推送",desc:"配置搜索引擎主动推送、批量提交和状态追踪。",canonicalDomain:"extensions",section:"push"}),t({key:"extensions-docs-mode",name:"ExtensionsDocsMode",label:"文档模式",route:"/extensions/docs-mode",title:"文档模式",desc:"文档专题内容模式与页面增强。",canonicalDomain:"extensions",section:"docs-mode"}),l({key:"extensions-security",name:"ExtensionsSecurity",label:"网站安全",route:"/extensions/security",component:"ExtensionSecurity",title:"网站安全",desc:"扩展安全策略和第三方安全集成。"}),l({key:"extensions-tools",name:"ExtensionsTools",label:"系统工具",route:"/extensions/tools",component:"ExtensionTools",title:"系统工具",desc:"额外运维工具与扩展能力。"}),l({key:"extensions-ai",name:"ExtensionAI",label:"AI 连接配置",route:"/extensions/ai",component:"ExtensionAI",status:"available",title:"AI 连接配置",desc:"配置 AI 生成连接;SEO 在文章独立 SEO 框,摘要/标签在前台投稿页。"})]},Te={key:"tools-compat",label:"兼容&工具",icon:f("fas fa-toolbox"),route:"/tools",hidden:!0,children:[l({key:"theme-info-dashboard",name:"ThemeInfoDashboard",label:"主题信息",route:"/theme-info",component:"ThemeInfoPage",title:"主题信息",desc:"主题版本、授权信息和帮助入口。"}),l({key:"theme-authorization",name:"ThemeAuthorization",label:"主题授权",route:"/theme-info/authorization",component:"ThemeAuthorizationPage",title:"主题授权",desc:"当前版本的授权策略与产品决策说明。"})]},Le={key:"tools-compat",label:"兼容&工具",icon:f("fas fa-toolbox"),route:"/tools",hidden:!0,children:[l({key:"docs-dashboard",name:"DocsDashboard",label:"文档中心",route:"/docs",component:"DocsPage",title:"文档中心",desc:"更新日志、文档链接和发布说明。"})]},xe={key:"tools-compat",label:"工具",icon:f("fas fa-toolbox"),route:"/tools",children:[l({key:"tools-import-export",name:"ToolsImportExport",label:"导入导出",route:"/tools/import-export",title:"导入导出",desc:"导出当前配置、执行 dry-run 导入并按域重置。",component:"ToolsImportExport"}),t({key:"tools-backup",name:"ToolsBackup",label:"数据备份",route:"/tools/backup",title:"数据备份",desc:"管理设置快照、创建备份并执行恢复或删除。",canonicalDomain:"tools",section:"backup"}),l({key:"tools-health",name:"ToolsHealth",label:"健康检查",route:"/tools/health",title:"健康检查",desc:"查看主题环境、数据表、邮箱验证迁移和系统诊断状态。",component:"ToolsHealth"}),l({key:"tools-email-rollback",name:"ToolsEmailRollback",label:"邮件回滚",route:"/tools/email-rollback",title:"邮件回滚",desc:"查看 14 天邮箱变更窗口内的账号并执行回滚。",component:"ToolsEmailRollback"}),l({key:"tools-update",name:"ToolsUpdate",label:"更新中心",route:"/tools/update",title:"更新中心",desc:"查看版本状态、检测更新并浏览更新日志与教程入口。",component:"ToolsUpdate",canonicalDomain:"tools",section:"update"})]},we={global:"global-common","page-display":"page-display-header-nav","post-list":"post-list-page",permissions:"permissions-comment",users:"users-auth",payment:"payment-paid",shop:"shop-basic",forum:"forum-settings-basic",extensions:"extensions-ip",tools:"tools-import-export","theme-info":"theme-info-dashboard",docs:"docs-dashboard"};function _(e){const a=we[e.key],i=(e.children||[]).find(c=>c.key===a);return i?{...e,defaultRoute:i.route}:e}const R=[_(fe),_(be),_(ke),_(ve),_(Pe),_(De),_(Ee),_(Ae),_(Se),_(xe),_(Te),_(Le)];function Re(){return R}function Ie(){const e=[];for(const a of R){if(a.placeholder){e.push({sectionKey:a.key,...a});continue}for(const i of a.children||[])e.push({sectionKey:a.key,...i})}return e}const Oe={class:"aksrt-logo"},Ce={key:0,class:"logo-text"},Ve={class:"aksrt-admin-content__inner"},Ue={key:0,class:"aksrt-error-fallback"},Fe={class:"aksrt-error-msg"},Be={key:1,class:"aksrt-admin-mobile"},He={class:"aksrt-admin-mobile__body"},Me={key:0,class:"aksrt-error-fallback"},Ne={class:"aksrt-error-msg"},Ge={__name:"App",setup(e){const a=oe(),i=ae(),c=O(!1),r=O(null),m=O(!1),d=O(!1);function h(){m.value=window.innerWidth<768}ne(()=>{h(),window.addEventListener("resize",h)}),se(()=>{window.removeEventListener("resize",h)}),le("collapsed",c),ie(n=>(console.error("[AKSRT] 组件渲染错误:",n),r.value=(n==null?void 0:n.message)||String(n),!1));const b={};for(const n of R){if(n.children)for(const o of n.children)b[o.key]=o.route;n.placeholder&&(b[n.key]=n.route)}const I=R.filter(n=>!n.hidden).map(n=>n.placeholder?{label:n.label,key:n.key,icon:n.icon}:{label:n.label,key:n.key,icon:n.icon,children:n.children.map(o=>({label:o.secondaryEntry?`${o.label} · 次级`:o.label,key:o.key,props:o.secondaryEntry?{class:"aksrt-menu-item--secondary"}:void 0}))}),g=K(()=>{var o,k,A;const n=i.path;for(const S of R){if(S.children){for(const x of S.children)if(n===x.route||n.startsWith(x.route+"/"))return x.key}if(S.placeholder&&(n===S.route||n.startsWith(S.route+"/")))return S.key}return((A=(k=(o=R[0])==null?void 0:o.children)==null?void 0:k[0])==null?void 0:A.key)||"global-common"}),E=K(()=>{var n;return((n=i.meta)==null?void 0:n.title)||"AKSRT"});function T(n){b[n]&&(a.push(b[n]),m.value&&(d.value=!1))}return(n,o)=>{const k=D("n-menu"),A=D("n-layout-sider"),S=D("router-view"),x=D("n-button"),H=D("n-layout"),J=D("n-drawer-content"),X=D("n-drawer"),Y=D("n-notification-provider"),Z=D("n-dialog-provider"),ee=D("n-message-provider");return v(),V(w(ue),{"style-mount-target":w(q)},{default:y(()=>[u(ee,null,{default:y(()=>[u(Z,null,{default:y(()=>[u(Y,null,{default:y(()=>[m.value?(v(),L("div",Be,[u(_e,{title:E.value,onToggle:o[3]||(o[3]=P=>d.value=!0)},null,8,["title"]),u(X,{show:d.value,"onUpdate:show":o[4]||(o[4]=P=>d.value=P),placement:"left",width:280},{default:y(()=>[u(J,{"native-scrollbar":!1,"body-content-style":"padding:0;"},{default:y(()=>[o[9]||(o[9]=p("div",{class:"aksrt-logo aksrt-logo--drawer"},[p("span",{class:"logo-icon"},"AK"),p("span",{class:"logo-text"},"AKSRT")],-1)),u(k,{value:g.value,options:w(I),"onUpdate:value":T},null,8,["value","options"])]),_:1})]),_:1},8,["show"]),p("div",He,[u(S,null,{default:y(({Component:P})=>[u(M,{name:"fade-slide",mode:"out-in"},{default:y(()=>[(v(),L("div",{class:"aksrt-page-wrapper",key:w(i).fullPath},[(v(),V(N(P)))]))]),_:2},1024)]),_:1}),r.value?(v(),L("div",Me,[o[11]||(o[11]=p("p",{class:"aksrt-error-title"},"页面渲染异常",-1)),p("p",Ne,B(r.value),1),u(x,{size:"small",onClick:o[5]||(o[5]=P=>r.value=null)},{default:y(()=>[...o[10]||(o[10]=[G("重试",-1)])]),_:1})])):F("",!0)])])):(v(),V(H,{key:0,class:"aksrt-admin-layout","has-sider":""},{default:y(()=>[u(A,{bordered:"","collapse-mode":"width","collapsed-width":64,width:240,"show-collapse-trigger":"",collapsed:c.value,"native-scrollbar":!1,onCollapse:o[0]||(o[0]=P=>c.value=!0),onExpand:o[1]||(o[1]=P=>c.value=!1)},{default:y(()=>[p("div",Oe,[o[6]||(o[6]=p("span",{class:"logo-icon"},"AK",-1)),c.value?F("",!0):(v(),L("span",Ce,"AKSRT"))]),u(k,{value:g.value,collapsed:c.value,"collapsed-width":64,options:w(I),"onUpdate:value":T},null,8,["value","collapsed","options"])]),_:1},8,["collapsed"]),u(H,{"native-scrollbar":!1,class:"aksrt-admin-content"},{default:y(()=>[p("div",Ve,[u(S,null,{default:y(({Component:P})=>[u(M,{name:"fade-slide",mode:"out-in"},{default:y(()=>[(v(),L("div",{class:"aksrt-page-wrapper",key:w(i).fullPath},[(v(),V(N(P)))]))]),_:2},1024)]),_:1}),r.value?(v(),L("div",Ue,[o[8]||(o[8]=p("p",{class:"aksrt-error-title"},"页面渲染异常",-1)),p("p",Fe,B(r.value),1),u(x,{size:"small",onClick:o[2]||(o[2]=P=>r.value=null)},{default:y(()=>[...o[7]||(o[7]=[G("重试",-1)])]),_:1})])):F("",!0)])]),_:1})]),_:1}))]),_:1})]),_:1})]),_:1})]),_:1},8,["style-mount-target"])}}},Ke=W(Ge,[["__scopeId","data-v-06997596"]]),$e="modulepreload",ze=function(e,a){return new URL(e,a).href},$={},s=function(a,i,c){let r=Promise.resolve();if(i&&i.length>0){let d=function(g){return Promise.all(g.map(E=>Promise.resolve(E).then(T=>({status:"fulfilled",value:T}),T=>({status:"rejected",reason:T}))))};const h=document.getElementsByTagName("link"),b=document.querySelector("meta[property=csp-nonce]"),I=(b==null?void 0:b.nonce)||(b==null?void 0:b.getAttribute("nonce"));r=d(i.map(g=>{if(g=ze(g,c),g in $)return;$[g]=!0;const E=g.endsWith(".css"),T=E?'[rel="stylesheet"]':"";if(!!c)for(let k=h.length-1;k>=0;k--){const A=h[k];if(A.href===g&&(!E||A.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${g}"]${T}`))return;const o=document.createElement("link");if(o.rel=E?"stylesheet":$e,E||(o.as="script"),o.crossOrigin="",o.href=g,I&&o.setAttribute("nonce",I),document.head.appendChild(o),E)return new Promise((k,A)=>{o.addEventListener("load",k),o.addEventListener("error",()=>A(new Error(`Unable to preload CSS for ${g}`)))})}))}function m(d){const h=new Event("vite:preloadError",{cancelable:!0});if(h.payload=d,window.dispatchEvent(h),!h.defaultPrevented)throw d}return r.then(d=>{for(const h of d||[])h.status==="rejected"&&m(h.reason);return a().catch(m)})},We={SchemaPage:()=>s(()=>import("./SchemaPage.CSkx936u.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url),DeferredPage:()=>s(()=>import("./DeferredPage.DrhT6-8i.js"),__vite__mapDeps([9,1,3,7,4,10]),import.meta.url),NativeOpsRedirect:()=>s(()=>import("./NativeOpsRedirect.C0bocwWY.js"),__vite__mapDeps([11,1,7,4,12]),import.meta.url),FloatingButtonsSettings:()=>s(()=>import("./FloatingButtonsSettings.-1uwNMV9.js"),__vite__mapDeps([13,14,1,5,15,16,7,4,17]),import.meta.url),FooterTabbarSettings:()=>s(()=>import("./FooterTabbarSettings.RLdsCbkU.js"),__vite__mapDeps([18,14,1,5,15,16,7,4,19]),import.meta.url),FooterSettings:()=>s(()=>import("./FooterSettings.pT4aCC_F.js"),__vite__mapDeps([20,5,15,1,16,21,7,4,22]),import.meta.url),HomepageSettings:()=>s(()=>import("./HomepageSettings.iKd6UZP-.js"),__vite__mapDeps([23,1,5,15,16,7,4,24]),import.meta.url),HeroManager:()=>s(()=>import("./HeroManager.sfaSC084.js"),__vite__mapDeps([25,1,5,21,15,16,7,4,26]),import.meta.url),BannerManager:()=>s(()=>import("./BannerManager.DIeolpAQ.js"),__vite__mapDeps([27,1,5,21,15,16,7,4,28]),import.meta.url),PostPageSettings:()=>s(()=>import("./PostPageSettings.B1brRzY8.js"),__vite__mapDeps([29,0,1,2,3,4,5,6,7,8]),import.meta.url),CommentSettings:()=>s(()=>import("./CommentSettings.BXEQmxrU.js"),__vite__mapDeps([30,0,1,2,3,4,5,6,7,8]),import.meta.url),CommentPermissions:()=>s(()=>import("./CommentPermissions.wWXEnm5v.js"),__vite__mapDeps([31,1,5,15,16,7,4]),import.meta.url),PermissionsCapabilities:()=>s(()=>import("./PermissionsCapabilities.DAu3e_3q.js"),__vite__mapDeps([32,5,15,1,16,7,4,33]),import.meta.url),AttachmentPermissions:()=>s(()=>import("./AttachmentPermissions.NUq74TjZ.js"),__vite__mapDeps([34,1,5,15,16,3,7,4,35]),import.meta.url),DownloadPermissions:()=>s(()=>import("./DownloadPermissions.D_4Tmrvf.js"),__vite__mapDeps([36,1,5,15,16,7,4]),import.meta.url),CmsCredits:()=>s(()=>import("./CmsCredits.xTl3ugX1.js"),__vite__mapDeps([37,5,7,4,1]),import.meta.url),ResourceDownload:()=>s(()=>import("./ResourceDownload.DvRILKEZ.js"),__vite__mapDeps([38,1,5,15,16,7,4]),import.meta.url),ThemeInfoPage:()=>s(()=>import("./ThemeInfoPage.CmzNxB-f.js"),__vite__mapDeps([39,15,1,16,3,5,7,4,40]),import.meta.url),ThemeAuthorizationPage:()=>s(()=>import("./ThemeAuthorizationPage.exqEspJr.js"),__vite__mapDeps([41,1,15,16,7,4]),import.meta.url),DocsPage:()=>s(()=>import("./DocsPage.Cef6fL12.js"),__vite__mapDeps([42,15,1,16,3,5,7,4,43]),import.meta.url)},qe={UsersFeatures:()=>s(()=>import("./UsersFeatures.8x2S0GR6.js"),__vite__mapDeps([44,1,5,15,16,7,4]),import.meta.url),UsersSignin:()=>s(()=>import("./UsersSignin.frRX-AHK.js"),__vite__mapDeps([45,5,1,15,16,7,4]),import.meta.url),UsersVerify:()=>s(()=>import("./UsersVerify.DlTUYsYd.js"),__vite__mapDeps([46,5,15,1,16,7,4,47]),import.meta.url),UsersLevel:()=>s(()=>import("./UsersLevel.D9sYKZP1.js"),__vite__mapDeps([48,1,5,15,16,7,4]),import.meta.url),UsersBadge:()=>s(()=>import("./UsersBadge.BAdBIwxF.js"),__vite__mapDeps([49,1,5,15,16,7,4]),import.meta.url),UsersWechatTemplate:()=>s(()=>import("./UsersWechatTemplate.BTkLtWGJ.js"),__vite__mapDeps([50,1,15,16,5,7,4,51]),import.meta.url)},je={PaymentGateway:()=>s(()=>import("./PaymentGateway.BTbqvMWf.js"),__vite__mapDeps([52,1,5,15,16,2,3,4,6,7,53]),import.meta.url)},Qe={ToolsImportExport:()=>s(()=>import("./ToolsImportExport.CBVCMq0z.js"),__vite__mapDeps([54,1,5,15,16,7,4,55]),import.meta.url),ToolsHealth:()=>s(()=>import("./ToolsHealth.CoF-E7n8.js"),__vite__mapDeps([56,1,5,15,16,7,4,57]),import.meta.url),ToolsEmailRollback:()=>s(()=>import("./ToolsEmailRollback.YrJUTDzS.js"),__vite__mapDeps([58,1,5,15,16,7,4,59]),import.meta.url),ToolsUpdate:()=>s(()=>import("./ToolsUpdate.CTzLIO24.js"),__vite__mapDeps([60,1,5,15,16,7,4,61]),import.meta.url)},Je={},Xe={},Ye={ExtensionTools:()=>s(()=>import("./ExtensionTools.D5LShWF9.js"),__vite__mapDeps([62,1,15,16,3,5,7,4,63]),import.meta.url),ExtensionSecurity:()=>s(()=>import("./ExtensionSecurity.Dusc4b9q.js"),__vite__mapDeps([64,1,15,16,3,5,7,4,65]),import.meta.url),ExtensionAI:()=>s(()=>import("./ExtensionAI.vrglPKlb.js"),__vite__mapDeps([66,1,15,16,5,7,4,67]),import.meta.url)},U={...We,...qe,...je,...Qe,...Je,...Xe,...Ye},Ze="/global/common";function et(e){return U[e.component]?U[e.component]:(e.component&&e.component!=="DeferredPage"&&console.warn(`[AKSRT Route] Component "${e.component}" not found in componentLoaders for route "${e.route}". Falling back to DeferredPage.`),U.DeferredPage)}function tt(e){const a={title:e.title,section:e.sectionKey||"",desc:e.desc||"",status:e.status||"available",secondaryEntry:e.secondaryEntry===!0};return e.compatSourceSection&&(a.compatSourceSection=e.compatSourceSection),e.canonicalDomain&&(a.canonicalDomain=e.canonicalDomain),e.section&&(a.section=e.section),e.component==="DeferredPage"&&(a.deferred=!0,a.deferredProps={title:e.title,description:e.desc||"",icon:e.iconClass||"fas fa-compass-drafting",phase:e.phase||"",status:e.status||"deferred",dependsOn:e.dependsOn||[],reason:e.reason||"",features:e.features||[]}),a}function ot(){const e=new Set(["/"]);return Re().filter(a=>a.defaultRoute&&a.route!==a.defaultRoute&&!e.has(a.route)).map(a=>(e.add(a.route),{path:a.route,redirect:a.defaultRoute}))}const at=[{path:"/shop/products",title:"商品管理",nativeAdminPath:"edit.php?post_type=aksrt_product"},{path:"/shop/orders",title:"订单管理",nativeAdminPath:"admin.php?page=aksrt_orders"},{path:"/shop/after-sale",title:"售后管理",nativeAdminPath:"admin.php?page=aksrt_after_sale"},{path:"/shop/shipping",title:"物流管理",nativeAdminPath:"admin.php?page=aksrt_shipping"},{path:"/shop/coupons",title:"优惠券",nativeAdminPath:"admin.php?page=aksrt_coupons"},{path:"/shop/withdrawals",title:"提现管理",nativeAdminPath:"admin.php?page=aksrt_withdraw"},{path:"/shop/dashboard",title:"商城概览",nativeAdminPath:"admin.php?page=aksrt_pay"},{path:"/forum/boards",title:"板块管理",nativeAdminPath:"edit.php?post_type=aksrt_forum_plate"},{path:"/forum/topics",title:"主题治理",nativeAdminPath:"edit.php?post_type=aksrt_forum_topic"},{path:"/forum/moderators",title:"版主管理",nativeAdminPath:"edit.php?post_type=aksrt_forum_plate"},{path:"/forum/moderator-applications",title:"版主申请",nativeAdminPath:"edit.php?post_type=aksrt_forum_plate"},{path:"/forum/dashboard",title:"论坛概览",nativeAdminPath:"edit.php?post_type=aksrt_forum_topic"},{path:"/payment/charge-card",title:"充值卡",nativeAdminPath:"admin.php?page=aksrt_charge_cards"},{path:"/payment/revenue",title:"创作分成",nativeAdminPath:"admin.php?page=aksrt_income"},{path:"/payment/rebate",title:"返佣管理",nativeAdminPath:"admin.php?page=aksrt_rebate"},{path:"/users/messages",title:"消息中心",nativeAdminPath:"users.php?page=aksrt_messages"},{path:"/users/invite-codes",title:"邀请码运营",nativeAdminPath:"users.php?page=aksrt_invite_codes"},{path:"/users/ban",title:"禁封管理",nativeAdminPath:"users.php?page=aksrt_user_ban&tab=restrictions"},{path:"/users/report",title:"禁封/举报",nativeAdminPath:"users.php?page=aksrt_user_ban&tab=reports"}],nt=[{path:"/",redirect:Ze},...ot(),...Ie().map(e=>({path:e.route,name:e.name,component:et(e),meta:tt(e)})),...at.map(e=>({path:e.path,name:`NativeRedirect_${e.path.replace(/\W+/g,"_")}`,component:U.NativeOpsRedirect,meta:{title:e.title,nativeAdminPath:e.nativeAdminPath,status:"redirect"}}))],Q=re({history:ce(),routes:nt}),C=me(Ke);C.use(pe());C.use(Q);C.use(de);C.config.errorHandler=(e,a,i)=>{console.error("[AKSRT] 全局错误:",e,i)};function st(e){e.innerHTML='