diff --git a/.gitignore b/.gitignore index 6a36beaf..9754596e 100644 --- a/.gitignore +++ b/.gitignore @@ -70,9 +70,9 @@ ask-*.md assets/css/routes/docs/* !assets/css/routes/docs/toolbar-search-enhancements.css -# Frontend build output and installed dependencies -/assets/admin/build/* -!/assets/admin/build/.gitkeep +# Installed dependencies (the SPA build output IS tracked so git-based deploys +# carry assets/admin/build as one unit; rebuild with: cd assets/admin && npm run build) +/assets/admin/node_modules/ /assets/admin/node_modules/* !/assets/admin/node_modules/.gitkeep assets/admin/.vite-temp/ diff --git a/assets/admin/build/AttachmentPermissions.Dzsg-DfQ.js b/assets/admin/build/AttachmentPermissions.Dzsg-DfQ.js new file mode 100644 index 00000000..bfe0a6f3 --- /dev/null +++ b/assets/admin/build/AttachmentPermissions.Dzsg-DfQ.js @@ -0,0 +1 @@ +import{o as S,X as v,a4 as a,a3 as t,r as g,a1 as m,e as U,_ as V,W as p,f as b,Y as o,F,R as I,a2 as q,Z as z,c as D}from"./vendor-vue.BxZIRU0_.js";import{a as k}from"./shared-api.DnsQ5cxS.js";import{P as E}from"./PageHeader.CtT29f8Y.js";import{_ as H}from"./FaIcon.NZ6TDkNu.js";import{_ as L}from"./index.js";import{u as R}from"./vendor-naive.CKYCZmXD.js";import"./vendor-misc.bELTaXdf.js";const T={class:"aksrt-page-container"},W={class:"aksrt-attach__summary"},X={class:"aksrt-form-actions"},Y={__name:"AttachmentPermissions",setup(Z){const y=V(),u=R(),c=g(!0),d=g(!1),s=U({avatar_max_size:2,submit_image_max_size:5,comment_image_max_size:2,resource_max_size:50}),h=D(()=>[{key:"profile",icon:"fa fas fa-id-card",label:"资料卡图片",enabled:!0},{key:"submit",icon:"fa fas fa-edit",label:"投稿图片",enabled:!0},{key:"comment",icon:"fa fas fa-comment-dots",label:"评论图片",enabled:!0},{key:"resource",icon:"fa fas fa-file-archive",label:"资源附件",enabled:!0}]);function w(){y.push("/permissions/moderation")}async function B(){c.value=!0;try{const l=await k.getPermissionsAttachmentSettings(),e=(l==null?void 0:l.data)??l??{};s.avatar_max_size=Number(e.avatar_max_size||2),s.submit_image_max_size=Number(e.submit_image_max_size||5),s.comment_image_max_size=Number(e.comment_image_max_size||2),s.resource_max_size=Number(e.resource_max_size||50)}catch(l){u.error(l.message||"加载附件权限失败")}finally{c.value=!1}}async function M(){d.value=!0;try{await k.savePermissionsAttachmentSettings({avatar_max_size:s.avatar_max_size,submit_image_max_size:s.submit_image_max_size,comment_image_max_size:s.comment_image_max_size,resource_max_size:s.resource_max_size}),u.success("附件治理配置已保存")}catch(l){u.error(l.message||"保存失败")}finally{d.value=!1}}return S(B),(l,e)=>{const x=m("n-button"),N=m("n-space"),P=m("n-grid-item"),A=m("n-grid"),i=m("n-card"),r=m("n-input-number"),_=m("n-form-item"),f=m("n-form"),C=m("n-spin");return p(),v("div",T,[a(E,{title:"附件治理",desc:"管理各类上传文件的大小、安全限制和审核策略;准入权限请在“基本权限”中配置。"},{actions:t(()=>[a(N,null,{default:t(()=>[a(x,{quaternary:"",onClick:w},{default:t(()=>[...e[4]||(e[4]=[b("审核策略",-1)])]),_:1})]),_:1})]),_:1}),a(C,{show:c.value,style:{width:"100%","min-height":"200px"}},{default:t(()=>[a(i,{class:"aksrt-section-card"},{default:t(()=>[e[5]||(e[5]=o("div",{class:"aksrt-section-header"},[o("h3",null,"上传策略总览")],-1)),a(A,{cols:3,"x-gap":12,"y-gap":12},{default:t(()=>[(p(!0),v(F,null,I(h.value,n=>(p(),q(P,{key:n.key},{default:t(()=>[o("div",W,[a(H,{icon:n.icon,size:16,color:n.enabled?"#52c41a":"var(--aksrt-color-muted)"},null,8,["icon","color"]),o("div",null,[o("strong",null,z(n.label),1),o("p",null,z(n.enabled?"已启用":"已关闭"),1)])])]),_:2},1024))),128))]),_:1})]),_:1}),a(i,{class:"aksrt-section-card"},{default:t(()=>[e[6]||(e[6]=o("div",{class:"aksrt-section-header"},[o("h3",null,"用户资料卡背景图")],-1)),a(f,{model:s,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:t(()=>[a(_,{label:"头像/用户资料卡背景图大小上限 (MB)"},{default:t(()=>[a(r,{value:s.avatar_max_size,"onUpdate:value":e[0]||(e[0]=n=>s.avatar_max_size=n),min:1,max:10,style:{"max-width":"160px"}},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),a(i,{class:"aksrt-section-card"},{default:t(()=>[e[7]||(e[7]=o("div",{class:"aksrt-section-header"},[o("h3",null,"内容上传")],-1)),a(f,{model:s,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:t(()=>[a(_,{label:"投稿图片大小上限 (MB)"},{default:t(()=>[a(r,{value:s.submit_image_max_size,"onUpdate:value":e[1]||(e[1]=n=>s.submit_image_max_size=n),min:1,max:20,style:{"max-width":"160px"}},null,8,["value"])]),_:1}),a(_,{label:"评论图片大小上限 (MB)"},{default:t(()=>[a(r,{value:s.comment_image_max_size,"onUpdate:value":e[2]||(e[2]=n=>s.comment_image_max_size=n),min:1,max:10,style:{"max-width":"160px"}},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),a(i,{class:"aksrt-section-card"},{default:t(()=>[e[8]||(e[8]=o("div",{class:"aksrt-section-header"},[o("h3",null,"资源附件")],-1)),a(f,{model:s,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:t(()=>[a(_,{label:"资源附件大小上限 (MB)"},{default:t(()=>[a(r,{value:s.resource_max_size,"onUpdate:value":e[3]||(e[3]=n=>s.resource_max_size=n),min:1,max:200,style:{"max-width":"160px"}},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),o("div",X,[a(x,{type:"primary",loading:d.value,onClick:M},{default:t(()=>[...e[9]||(e[9]=[b("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}},ee=L(Y,[["__scopeId","data-v-d6037ce3"]]);export{ee as default}; diff --git a/assets/admin/build/AttachmentPermissions.css b/assets/admin/build/AttachmentPermissions.css new file mode 100644 index 00000000..2af5f0ee --- /dev/null +++ b/assets/admin/build/AttachmentPermissions.css @@ -0,0 +1 @@ +.aksrt-attach__summary[data-v-d6037ce3]{display:flex;align-items:center;gap:10px;padding:12px;border-radius:6px;background:#fafafa}.aksrt-attach__summary strong[data-v-d6037ce3]{display:block;font-size:13px;color:var(--aksrt-color-text)}.aksrt-attach__summary p[data-v-d6037ce3]{margin:2px 0 0;font-size:12px;color:var(--aksrt-color-muted)} diff --git a/assets/admin/build/CmsCredits.BYsXdX89.js b/assets/admin/build/CmsCredits.BYsXdX89.js new file mode 100644 index 00000000..4063180b --- /dev/null +++ b/assets/admin/build/CmsCredits.BYsXdX89.js @@ -0,0 +1 @@ +import{a as U}from"./shared-api.DnsQ5cxS.js";import{u as R}from"./vendor-naive.CKYCZmXD.js";import{o as W,X as E,Y as o,a4 as a,a3 as n,a1 as m,r as v,e as L,W as I,f as C}from"./vendor-vue.BxZIRU0_.js";import"./vendor-misc.bELTaXdf.js";const T={class:"aksrt-page-container"},D={class:"aksrt-form-footer"},K={__name:"CmsCredits",setup(F){const b=R(),t=L({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},referral_reward:{enabled:!0,promoter_amount:5,referred_amount:2,level_points:0,require_verify:!0,ip_daily_cap:3},download_default_cost:0}),g=v("{}"),k=v(!1),y=v(!1),$=v([]),c=v(1),N=v(1),u=L({asset:null,transaction_id:"",operation_key:"",ref_type:"",ref_key:"",actor_user_id:""}),z=[{label:"积分",value:"points"},{label:"余额",value:"balance"}],B=[{title:"交易号",key:"transaction_label",width:100,fixed:"left"},{title:"幂等键",key:"operation_key",width:260,ellipsis:{tooltip:!0}},{title:"资产",key:"assets_label",width:100},{title:"原因",key:"reason",width:150,ellipsis:{tooltip:!0}},{title:"业务引用",key:"reference_label",width:200,ellipsis:{tooltip:!0}},{title:"操作者",key:"actor_label",width:100},{title:"增减 / 手续费",key:"delta_label",width:180,ellipsis:{tooltip:!0}},{title:"变动后余额",key:"balance_label",width:150,ellipsis:{tooltip:!0}},{title:"备注",key:"remark",width:180,ellipsis:{tooltip:!0}},{title:"UTC 时间",key:"created_at",width:190}];function j(d,e){if(d==="balance")return typeof e=="string"&&/^[+-]?\d+\.\d{2}$/.test(e)?e:"0.00";const i=String(e??"0");return/^-?\d+$/.test(i)?i:"0"}async function w(){y.value=!0;try{const d={page:c.value,per_page:20};Object.entries(u).forEach(([r,p])=>{p!==null&&String(p).trim()!==""&&(d[r]=p)});const e=await U.getCreditLog(d),i=(e==null?void 0:e.data)||e||{};$.value=(i.items||[]).map(r=>{const p=Array.isArray(r.entries)?r.entries:[];return{...r,transaction_label:`#${r.id}`,assets_label:(r.assets||[]).join(" / "),reference_label:[r.ref_type,r.ref_key].filter(Boolean).join(":")||"—",actor_label:r.actor_user_id?`#${r.actor_user_id}`:"系统",delta_label:p.map(s=>{const _=j(s.asset,s.delta),f=s.asset==="points"&&!_.startsWith("-")&&_!=="0"?`+${_}`:_;return`${s.asset}:${f}`}).join(";"),balance_label:p.map(s=>`${s.asset}:${j(s.asset,s.balance_after)}`).join(";")}}),N.value=Math.max(1,Math.ceil(Number(i.total||0)/Number(i.per_page||20)))}catch(d){b.error(d.message||"加载账本失败")}finally{y.value=!1}}function O(){c.value=1,w()}function J(){Object.assign(u,{asset:null,transaction_id:"",operation_key:"",ref_type:"",ref_key:"",actor_user_id:""}),O()}async function M(){var d;try{const e=await U.getCreditSettings(),i=(e==null?void 0:e.data)||e||{};Object.assign(t,i),g.value=JSON.stringify(((d=t.daily_signin)==null?void 0:d.streak)||{},null,0)}catch(e){b.error(e.message||"加载失败")}}async function P(){k.value=!0;try{let d={};try{d=JSON.parse(g.value||"{}")}catch{}t.daily_signin.streak=d,await U.saveCreditSettings(t),b.success("已保存")}catch(d){b.error(d.message||"保存失败")}finally{k.value=!1}}return W(()=>{M(),w()}),(d,e)=>{const i=m("n-switch"),r=m("n-form-item"),p=m("n-input"),s=m("n-input-number"),_=m("n-form"),f=m("n-card"),V=m("n-select"),x=m("n-button"),S=m("n-space"),q=m("n-data-table"),A=m("n-pagination");return I(),E("div",T,[e[36]||(e[36]=o("h2",{class:"aksrt-page-title"},"积分配置",-1)),e[37]||(e[37]=o("p",{class:"aksrt-page-desc"}," 配置积分规则与发放策略。可自定义货币名称(如”金币”、”魔石”等)。用户余额与手工调整在 WordPress 原生”用户”菜单中管理。 ",-1)),a(f,{class:"aksrt-section-card"},{default:n(()=>[e[26]||(e[26]=o("div",{class:"aksrt-section-header"},[o("h3",null,"主开关 + 基础设置")],-1)),a(_,{model:t,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:n(()=>[a(r,{label:"启用积分系统"},{default:n(()=>[a(i,{value:t.enabled,"onUpdate:value":e[0]||(e[0]=l=>t.enabled=l)},null,8,["value"])]),_:1}),a(r,{label:"自定义货币名称"},{feedback:n(()=>[...e[25]||(e[25]=[o("span",{class:"aksrt-hint-text"},'自定义货币显示名称,如"金币"、"魔石"等。留空则使用默认名称"积分"。',-1)])]),default:n(()=>[a(p,{value:t.currency_name,"onUpdate:value":e[1]||(e[1]=l=>t.currency_name=l),placeholder:"积分",maxlength:"20"},null,8,["value"])]),_:1}),a(r,{label:"注册赠送积分"},{default:n(()=>[a(s,{value:t.register_bonus,"onUpdate:value":e[2]||(e[2]=l=>t.register_bonus=l),min:0,max:1e4},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),a(f,{title:"统一资产账本",class:"aksrt-section-card"},{default:n(()=>[a(S,{vertical:"",size:12},{default:n(()=>[a(S,{wrap:""},{default:n(()=>[a(V,{value:u.asset,"onUpdate:value":e[3]||(e[3]=l=>u.asset=l),options:z,clearable:"",placeholder:"资产",style:{width:"130px"}},null,8,["value"]),a(p,{value:u.transaction_id,"onUpdate:value":e[4]||(e[4]=l=>u.transaction_id=l),placeholder:"交易号",clearable:"",style:{width:"130px"}},null,8,["value"]),a(p,{value:u.operation_key,"onUpdate:value":e[5]||(e[5]=l=>u.operation_key=l),placeholder:"幂等键",clearable:"",style:{width:"240px"}},null,8,["value"]),a(p,{value:u.ref_type,"onUpdate:value":e[6]||(e[6]=l=>u.ref_type=l),placeholder:"引用类型",clearable:"",style:{width:"130px"}},null,8,["value"]),a(p,{value:u.ref_key,"onUpdate:value":e[7]||(e[7]=l=>u.ref_key=l),placeholder:"引用键",clearable:"",style:{width:"180px"}},null,8,["value"]),a(p,{value:u.actor_user_id,"onUpdate:value":e[8]||(e[8]=l=>u.actor_user_id=l),placeholder:"操作者 ID",clearable:"",style:{width:"130px"}},null,8,["value"]),a(x,{type:"primary",loading:y.value,onClick:O},{default:n(()=>[...e[27]||(e[27]=[C("查询",-1)])]),_:1},8,["loading"]),a(x,{onClick:J},{default:n(()=>[...e[28]||(e[28]=[C("重置",-1)])]),_:1})]),_:1}),a(q,{columns:B,data:$.value,loading:y.value,"row-key":l=>l.id,"scroll-x":1600,size:"small"},null,8,["data","loading","row-key"]),a(A,{page:c.value,"onUpdate:page":[e[9]||(e[9]=l=>c.value=l),w],"page-count":N.value,"page-size":20},null,8,["page","page-count"])]),_:1})]),_:1}),a(f,{class:"aksrt-section-card"},{default:n(()=>[e[30]||(e[30]=o("div",{class:"aksrt-section-header"},[o("h3",null,"每日签到")],-1)),a(_,{model:t.daily_signin,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:n(()=>[a(r,{label:"启用"},{default:n(()=>[a(i,{value:t.daily_signin.enabled,"onUpdate:value":e[10]||(e[10]=l=>t.daily_signin.enabled=l)},null,8,["value"])]),_:1}),a(r,{label:"基础奖励"},{default:n(()=>[a(s,{value:t.daily_signin.base,"onUpdate:value":e[11]||(e[11]=l=>t.daily_signin.base=l),min:0,max:1e4},null,8,["value"])]),_:1}),a(r,{label:"连续奖励(JSON)"},{feedback:n(()=>[...e[29]||(e[29]=[o("span",{class:"aksrt-hint-text"},"连续 N 天时额外发放的积分。",-1)])]),default:n(()=>[a(p,{type:"textarea",value:g.value,"onUpdate:value":e[12]||(e[12]=l=>g.value=l),placeholder:'{"3":2,"7":5,"30":20}',autosize:{minRows:2}},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),a(f,{class:"aksrt-section-card"},{default:n(()=>[e[31]||(e[31]=o("div",{class:"aksrt-section-header"},[o("h3",null,"评论奖励")],-1)),a(_,{model:t.comment_reward,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:n(()=>[a(r,{label:"启用"},{default:n(()=>[a(i,{value:t.comment_reward.enabled,"onUpdate:value":e[13]||(e[13]=l=>t.comment_reward.enabled=l)},null,8,["value"])]),_:1}),a(r,{label:"单次奖励"},{default:n(()=>[a(s,{value:t.comment_reward.amount,"onUpdate:value":e[14]||(e[14]=l=>t.comment_reward.amount=l),min:0,max:1e4},null,8,["value"])]),_:1}),a(r,{label:"每日上限"},{default:n(()=>[a(s,{value:t.comment_reward.daily_cap,"onUpdate:value":e[15]||(e[15]=l=>t.comment_reward.daily_cap=l),min:0,max:100},null,8,["value"])]),_:1}),a(r,{label:"最少字符数"},{default:n(()=>[a(s,{value:t.comment_reward.min_length,"onUpdate:value":e[16]||(e[16]=l=>t.comment_reward.min_length=l),min:0,max:500},null,8,["value"])]),_:1}),a(r,{label:"审核通过后发放"},{default:n(()=>[a(i,{value:t.comment_reward.on_approved,"onUpdate:value":e[17]||(e[17]=l=>t.comment_reward.on_approved=l)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),a(f,{class:"aksrt-section-card"},{default:n(()=>[e[32]||(e[32]=o("div",{class:"aksrt-section-header"},[o("h3",null,"Ref 推广奖励")],-1)),a(_,{model:t.referral_reward,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:n(()=>[a(r,{label:"启用"},{default:n(()=>[a(i,{value:t.referral_reward.enabled,"onUpdate:value":e[18]||(e[18]=l=>t.referral_reward.enabled=l)},null,8,["value"])]),_:1}),a(r,{label:"推广人奖励"},{default:n(()=>[a(s,{value:t.referral_reward.promoter_amount,"onUpdate:value":e[19]||(e[19]=l=>t.referral_reward.promoter_amount=l),min:0,max:1e4},null,8,["value"])]),_:1}),a(r,{label:"新用户奖励"},{default:n(()=>[a(s,{value:t.referral_reward.referred_amount,"onUpdate:value":e[20]||(e[20]=l=>t.referral_reward.referred_amount=l),min:0,max:1e4},null,8,["value"])]),_:1}),a(r,{label:"推广等级积分"},{default:n(()=>[a(s,{value:t.referral_reward.level_points,"onUpdate:value":e[21]||(e[21]=l=>t.referral_reward.level_points=l),min:0,max:1e4},null,8,["value"])]),_:1}),a(r,{label:"需邮箱验证后发放"},{default:n(()=>[a(i,{value:t.referral_reward.require_verify,"onUpdate:value":e[22]||(e[22]=l=>t.referral_reward.require_verify=l)},null,8,["value"])]),_:1}),a(r,{label:"同 IP 当日上限"},{default:n(()=>[a(s,{value:t.referral_reward.ip_daily_cap,"onUpdate:value":e[23]||(e[23]=l=>t.referral_reward.ip_daily_cap=l),min:0,max:100},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),a(f,{class:"aksrt-section-card"},{default:n(()=>[e[34]||(e[34]=o("div",{class:"aksrt-section-header"},[o("h3",null,"下载消费(参考)")],-1)),a(_,{model:t,"label-placement":"left","label-width":"200",class:"aksrt-form"},{default:n(()=>[a(r,{label:`默认积分价参考(${t.currency_name||"积分"})`},{feedback:n(()=>[...e[33]||(e[33]=[o("span",{class:"aksrt-hint-text"},"实际价格以文章「付费内容设置」的积分价或现金价为准;下载解锁走收银台订单,不按次扣费。",-1)])]),default:n(()=>[a(s,{value:t.download_default_cost,"onUpdate:value":e[24]||(e[24]=l=>t.download_default_cost=l),min:0,max:1e5},null,8,["value"])]),_:1},8,["label"])]),_:1},8,["model"])]),_:1}),o("div",D,[a(x,{type:"primary",loading:k.value,onClick:P},{default:n(()=>[...e[35]||(e[35]=[C("保存配置",-1)])]),_:1},8,["loading"])])])}}};export{K as default}; diff --git a/assets/admin/build/CommentSettings.Cc5FzO9W.js b/assets/admin/build/CommentSettings.Cc5FzO9W.js new file mode 100644 index 00000000..3dbf23f1 --- /dev/null +++ b/assets/admin/build/CommentSettings.Cc5FzO9W.js @@ -0,0 +1 @@ +import t from"./SchemaPage._RXlmOMl.js";import{a2 as o,W as m}from"./vendor-vue.BxZIRU0_.js";import"./shared-api.DsnKC5vk.js";import"./FaIcon.NZ6TDkNu.js";import"./index.js";import"./vendor-naive.CKYCZmXD.js";import"./vendor-misc.bELTaXdf.js";import"./FaIconPicker.DuahAn6_.js";import"./shared-api.DnsQ5cxS.js";import"./level.E3ANSDAX.js";import"./badge.CKTsmH1z.js";const h={__name:"CommentSettings",setup(r){return(p,e)=>(m(),o(t,{domain:"post_list",section:"comment"}))}};export{h as default}; diff --git a/assets/admin/build/DeferredPage.DpQpYrho.js b/assets/admin/build/DeferredPage.DpQpYrho.js new file mode 100644 index 00000000..ff5a3648 --- /dev/null +++ b/assets/admin/build/DeferredPage.DpQpYrho.js @@ -0,0 +1 @@ +import{X as n,Y as a,a4 as f,Z as l,a3 as u,a2 as y,a5 as c,F as h,R as P,c as o,a1 as V,$ as b,W as r,f as _}from"./vendor-vue.BxZIRU0_.js";import{_ as S}from"./FaIcon.NZ6TDkNu.js";import{_ as C}from"./index.js";import"./vendor-naive.CKYCZmXD.js";import"./vendor-misc.bELTaXdf.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)||"fa 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 r(),n("div",F,[a("div",R,[f(S,{icon:D.value,size:48},null,8,["icon"])]),a("h2",w,l(O.value),1),a("p",A,l(x.value),1),a("div",I,[f(p,{size:"small",type:"info"},{default:u(()=>[_(l(B.value),1)]),_:1}),g.value?(r(),y(p,{key:0,size:"small",type:"warning"},{default:u(()=>[_("Phase "+l(g.value),1)]),_:1})):c("",!0)]),m.value.length?(r(),n("div",T,[e[0]||(e[0]=a("span",{class:"aksrt-deferred-page__label"},"依赖",-1)),a("div",$,[(r(!0),n(h,null,P(m.value,i=>(r(),y(p,{key:i,size:"small",type:"default"},{default:u(()=>[_(l(i),1)]),_:2},1024))),128))])])):c("",!0),k.value?(r(),n("div",E,[e[1]||(e[1]=a("span",{class:"aksrt-deferred-page__label"},"原因",-1)),a("p",null,l(k.value),1)])):c("",!0),v.value&&v.value.length?(r(),n("div",L,[(r(!0),n(h,null,P(v.value,(i,N)=>(r(),n("div",{key:N,class:"aksrt-deferred-page__feature"},[f(S,{icon:"fa fas fa-check-circle",size:14}),a("span",null,l(i),1)]))),128))])):c("",!0),a("div",W,[f(p,{type:"info",size:"small"},{default:u(()=>[...e[2]||(e[2]=[_("即将推出",-1)])]),_:1})])])}}},H=C(X,[["__scopeId","data-v-2af15f85"]]);export{H as default}; diff --git a/assets/admin/build/DeferredPage.css b/assets/admin/build/DeferredPage.css new file mode 100644 index 00000000..0b00eab5 --- /dev/null +++ b/assets/admin/build/DeferredPage.css @@ -0,0 +1 @@ +.aksrt-deferred-page[data-v-2af15f85]{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-2af15f85]{color:var(--aksrt-color-border-strong);margin-bottom:20px}.aksrt-deferred-page__title[data-v-2af15f85]{margin:0 0 10px;font-size:20px;font-weight:600;color:var(--aksrt-color-text)}.aksrt-deferred-page__desc[data-v-2af15f85]{margin:0 0 20px;font-size:14px;color:var(--aksrt-color-muted);max-width:400px;line-height:1.6}.aksrt-deferred-page__meta[data-v-2af15f85]{display:flex;gap:10px;margin-bottom:18px}.aksrt-deferred-page__depends[data-v-2af15f85],.aksrt-deferred-page__reason[data-v-2af15f85]{width:min(520px,100%);margin-bottom:18px;text-align:left}.aksrt-deferred-page__label[data-v-2af15f85]{display:inline-block;margin-bottom:8px;font-size:12px;font-weight:600;color:var(--aksrt-color-text-secondary)}.aksrt-deferred-page__depends-list[data-v-2af15f85]{display:flex;flex-wrap:wrap;gap:8px}.aksrt-deferred-page__reason p[data-v-2af15f85]{margin:0;color:var(--aksrt-color-muted);line-height:1.7}.aksrt-deferred-page__features[data-v-2af15f85]{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.aksrt-deferred-page__feature[data-v-2af15f85]{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--aksrt-color-muted)}.aksrt-deferred-page__feature[data-v-2af15f85] i{color:#52c41a} diff --git a/assets/admin/build/DocsPage.css b/assets/admin/build/DocsPage.css new file mode 100644 index 00000000..c5bc53f3 --- /dev/null +++ b/assets/admin/build/DocsPage.css @@ -0,0 +1 @@ +.aksrt-docs__grid[data-v-096fd8a8]{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px;margin-bottom:16px}.aksrt-docs__card[data-v-096fd8a8]{cursor:pointer;transition:box-shadow .2s}.aksrt-docs__card[data-v-096fd8a8]:hover{box-shadow:0 2px 12px #00000014}.aksrt-docs__card-inner[data-v-096fd8a8]{display:flex;align-items:center;gap:12px}.aksrt-docs__card-icon[data-v-096fd8a8]{flex-shrink:0;width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center}.aksrt-docs__card-body[data-v-096fd8a8]{flex:1;min-width:0}.aksrt-docs__card-title[data-v-096fd8a8]{margin:0 0 2px;font-size:14px;font-weight:600;color:var(--aksrt-color-text)}.aksrt-docs__card-desc[data-v-096fd8a8]{margin:0;font-size:12px;color:var(--aksrt-color-muted);line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aksrt-docs__card-arrow[data-v-096fd8a8]{flex-shrink:0;color:#c0c4cc}.aksrt-docs__section[data-v-096fd8a8]{margin-bottom:16px}.aksrt-docs__action[data-v-096fd8a8]{display:flex;gap:12px;align-items:flex-start;padding:12px;border-radius:6px;background:#fafafa}.aksrt-docs__action i[data-v-096fd8a8]{color:var(--aksrt-color-primary);margin-top:2px}.aksrt-docs__action strong[data-v-096fd8a8]{display:block;font-size:14px;color:var(--aksrt-color-text);margin-bottom:2px}.aksrt-docs__action p[data-v-096fd8a8]{margin:0 0 4px;font-size:12px;color:var(--aksrt-color-muted)}.aksrt-docs__action a[data-v-096fd8a8]{font-size:12px;color:var(--aksrt-color-primary);text-decoration:none}.aksrt-docs__action a[data-v-096fd8a8]:hover{text-decoration:underline} diff --git a/assets/admin/build/DocsPage.mFfiXsYT.js b/assets/admin/build/DocsPage.mFfiXsYT.js new file mode 100644 index 00000000..6aa7b669 --- /dev/null +++ b/assets/admin/build/DocsPage.mFfiXsYT.js @@ -0,0 +1 @@ +import{P as h}from"./PageHeader.CtT29f8Y.js";import{_ as r}from"./FaIcon.NZ6TDkNu.js";import{a as A}from"./shared-api.DnsQ5cxS.js";import{_ as C}from"./index.js";import{r as m,o as D,X as y,a4 as t,a3 as o,Y as s,F as V,R as P,a1 as i,W as p,f as d,a2 as B,I as T,Z as _}from"./vendor-vue.BxZIRU0_.js";import"./vendor-naive.CKYCZmXD.js";import"./vendor-misc.bELTaXdf.js";const $={class:"aksrt-page-container"},I={class:"aksrt-docs__action"},K={class:"aksrt-docs__action"},N={class:"aksrt-docs__action"},R={class:"aksrt-docs__action"},F={class:"aksrt-docs__grid"},H={class:"aksrt-docs__card-inner"},L={class:"aksrt-docs__card-body"},E={class:"aksrt-docs__card-title"},J={class:"aksrt-docs__card-desc"},M={__name:"DocsPage",setup(O){var k;const b=m(((k=window.aksrtAdminData)==null?void 0:k.themeVersion)||"3.4.0-dev"),u=m("—"),w=m([{key:"admin-ia-map",title:"后台 IA 蓝图",description:"完整的后台信息架构映射,12 个顶级分区及子页面清单。",icon:"fa fas fa-sitemap",color:"var(--aksrt-color-primary)",file:"admin-ia-map.md"},{key:"legacy-gap-matrix",title:"对标差异矩阵",description:"AKSRT 当前 → 原主题参考 → AKSRT 目标三层对照表。",icon:"fa fas fa-columns",color:"#722ed1",file:"legacy-gap-matrix.md"},{key:"frontend-page-matrix",title:"前端页面矩阵",description:"前端模板、CSS、JS 资产映射与覆盖范围。",icon:"fa fas fa-desktop",color:"#13c2c2",file:"frontend-page-matrix.md"},{key:"manual-acceptance-baseline",title:"验收基线",description:"每个 Phase 的人工验收标准和检查清单。",icon:"fa fas fa-clipboard",color:"#52c41a",file:"manual-acceptance-baseline.md"},{key:"feature-domain-map",title:"功能域地图",description:"业务域划分、依赖关系和模块边界说明。",icon:"fa fas fa-map",color:"#fa8c16",file:"feature-domain-map.md"},{key:"migration-map",title:"迁移地图",description:"设置 key 迁移、旧选项兼容和 Schema 版本对照。",icon:"fa fas fa-exchange-alt",color:"#eb2f96",file:"migration-map.md"}]);D(async()=>{try{const e=await A.getHealthCheck();e!=null&&e.data&&(u.value=e.data.db_schema_version||"—")}catch{}});function x(e){var n;const a=((n=window.aksrtAdminData)==null?void 0:n.siteUrl)||window.location.origin;window.open(`${a}/wp-content/themes/AKSRT-theme/docs/${e.file}`,"_blank")}return(e,a)=>{const n=i("router-link"),c=i("n-grid-item"),z=i("n-grid"),f=i("n-card"),g=i("n-tag"),v=i("n-descriptions-item"),S=i("n-descriptions");return p(),y("div",$,[t(h,{title:"文档中心",desc:"主题使用文档、开发指南、迁移说明和更新日志。"}),t(f,{title:"常用操作",size:"small",class:"aksrt-docs__section"},{default:o(()=>[t(z,{cols:2,"x-gap":12,"y-gap":12},{default:o(()=>[t(c,null,{default:o(()=>[s("div",I,[t(r,{icon:"fa fas fa-paint-brush",size:16}),s("div",null,[a[1]||(a[1]=s("strong",null,"全局设置",-1)),a[2]||(a[2]=s("p",null,"Logo、导航栏、自定义代码",-1)),t(n,{to:"/global/common"},{default:o(()=>[...a[0]||(a[0]=[d("前往配置 →",-1)])]),_:1})])])]),_:1}),t(c,null,{default:o(()=>[s("div",K,[t(r,{icon:"fa fas fa-home",size:16}),s("div",null,[a[4]||(a[4]=s("strong",null,"首页配置",-1)),a[5]||(a[5]=s("p",null,"首页模块、布局、排序和预设模板",-1)),t(n,{to:"/page-display/homepage"},{default:o(()=>[...a[3]||(a[3]=[d("前往配置 →",-1)])]),_:1})])])]),_:1}),t(c,null,{default:o(()=>[s("div",N,[t(r,{icon:"fa fas fa-users",size:16}),s("div",null,[a[7]||(a[7]=s("strong",null,"用户管理",-1)),a[8]||(a[8]=s("p",null,"登录注册、OAuth、签到、积分",-1)),t(n,{to:"/users/auth"},{default:o(()=>[...a[6]||(a[6]=[d("前往配置 →",-1)])]),_:1})])])]),_:1}),t(c,null,{default:o(()=>[s("div",R,[t(r,{icon:"fa fas fa-wrench",size:16}),s("div",null,[a[10]||(a[10]=s("strong",null,"工具",-1)),a[11]||(a[11]=s("p",null,"导入导出、健康检查、备份与更新",-1)),t(n,{to:"/tools/import-export"},{default:o(()=>[...a[9]||(a[9]=[d("前往配置 →",-1)])]),_:1})])])]),_:1})]),_:1})]),_:1}),s("div",F,[(p(!0),y(V,null,P(w.value,l=>(p(),B(f,{key:l.key,class:"aksrt-docs__card",size:"small",hoverable:"",onClick:U=>x(l)},{default:o(()=>[s("div",H,[s("div",{class:"aksrt-docs__card-icon",style:T({background:l.color})},[t(r,{icon:l.icon,size:20,color:"#fff"},null,8,["icon"])],4),s("div",L,[s("h4",E,_(l.title),1),s("p",J,_(l.description),1)]),t(r,{icon:"fa fas fa-external-link-alt",size:12,class:"aksrt-docs__card-arrow"})])]),_:2},1032,["onClick"]))),128))]),t(f,{title:"当前版本",size:"small",class:"aksrt-docs__section"},{default:o(()=>[t(S,{column:2,bordered:"","label-placement":"left",size:"small"},{default:o(()=>[t(v,{label:"主题版本"},{default:o(()=>[t(g,{type:"success",size:"small"},{default:o(()=>[d(_(b.value),1)]),_:1})]),_:1}),t(v,{label:"Schema 版本"},{default:o(()=>[t(g,{type:"info",size:"small"},{default:o(()=>[d(_(u.value),1)]),_:1})]),_:1})]),_:1})]),_:1})])}}},Q=C(M,[["__scopeId","data-v-096fd8a8"]]);export{Q as default}; diff --git a/assets/admin/build/ExtensionAI.BmvoDo9B.js b/assets/admin/build/ExtensionAI.BmvoDo9B.js new file mode 100644 index 00000000..ee8f4a50 --- /dev/null +++ b/assets/admin/build/ExtensionAI.BmvoDo9B.js @@ -0,0 +1 @@ +import{X as l,a4 as I,Y as s,f as d,Z as i,a5 as m,L as k,j as _,ag as P,aj as w,ah 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.BxZIRU0_.js";import{P as U}from"./PageHeader.CtT29f8Y.js";import{a as A}from"./shared-api.DnsQ5cxS.js";import{_ as L}from"./index.js";import"./vendor-naive.CKYCZmXD.js";import"./vendor-misc.bELTaXdf.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}),a=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},a.enabled=!!t.enabled,a.provider=t.provider||"none",a.model=t.model||"gpt-3.5-turbo",a.rate_limit=t.rate_limit||10,t.api_base&&(a.api_base=t.api_base),typeof t.max_tokens=="number"&&t.max_tokens>0&&(a.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:a.enabled,provider:a.provider,api_base:a.api_base,model:a.model,max_tokens:a.max_tokens,rate_limit:a.rate_limit};a.api_key&&a.api_key!=="***"&&(t.api_key=a.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:a,saving:v,loadError:e,features:c,backendLabel:b,saveSettings:x}}},j={class:"aksrt-page-container"},N={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"},aa={key:2,class:"aksrt-form-group"},sa={key:3,class:"aksrt-form-group"},ta={key:4,class:"aksrt-form-group"},ea={class:"aksrt-form-actions"},oa=["disabled"],la={class:"aksrt-ai__form-card"},ia={class:"aksrt-table aksrt-table--sm"};function ra(n,a,v,e,b,c){const p=O("PageHeader");return r(),l("div",j,[I(p,{title:"AI 连接配置",desc:"配置 AI 生成能力的连接方式。优先使用 WordPress AI Connectors;也可填写 OpenAI 兼容接口。SEO 生成入口在文章「独立 SEO」框,摘要/标签入口在前台投稿页。"}),e.loadError?(r(),l("div",N,[a[8]||(a[8]=s("strong",null,"加载失败:",-1)),d(i(e.loadError),1)])):m("",!0),s("div",B,[s("div",M,[s("div",{class:k(["aksrt-ai__status-icon",e.status.available?"aksrt-ai__status-icon--ok":"aksrt-ai__status-icon--off"])},[...a[9]||(a[9]=[s("i",{class:"fa fab fa-android"},null,-1)])],2),s("div",R,[a[10]||(a[10]=s("div",{class:"aksrt-ai__status-label"},"可用状态",-1)),s("div",F,i(e.status.available?"可用":"不可用"),1)])]),s("div",H,[s("div",{class:k(["aksrt-ai__status-icon",e.status.wp_ai_available?"aksrt-ai__status-icon--ok":"aksrt-ai__status-icon--warn"])},[...a[11]||(a[11]=[s("i",{class:"fa fas fa-plug"},null,-1)])],2),s("div",T,[a[12]||(a[12]=s("div",{class:"aksrt-ai__status-label"},"WP AI Client",-1)),s("div",D,i(e.status.wp_ai_available?"已就绪":"不可用"),1)])]),s("div",K,[s("div",{class:k(["aksrt-ai__status-icon",e.status.theme_available?"aksrt-ai__status-icon--ok":"aksrt-ai__status-icon--warn"])},[...a[13]||(a[13]=[s("i",{class:"fa fas fa-key"},null,-1)])],2),s("div",z,[a[14]||(a[14]=s("div",{class:"aksrt-ai__status-label"},"主题 Provider",-1)),s("div",X,i(e.status.theme_available?"已配置":"未配置"),1)])]),s("div",Y,[a[16]||(a[16]=s("div",{class:"aksrt-ai__status-icon aksrt-ai__status-icon--info"},[s("i",{class:"fa fas fa-road"})],-1)),s("div",Z,[a[15]||(a[15]=s("div",{class:"aksrt-ai__status-label"},"当前后端",-1)),s("div",q,i(e.backendLabel),1)])])]),s("div",G,[a[27]||(a[27]=s("h3",null,"主题 Provider 配置(回退链路)",-1)),a[28]||(a[28]=s("p",{class:"aksrt-form-hint"},[d("已配置主题 Provider 时优先走下方接口;未配置时才尝试 WordPress AI Connectors。NewAPI/兼容网关请填到 "),s("code",null,"/v1"),d("(也可只填域名,保存时会自动补全)。")],-1)),s("div",J,[s("label",null,[_(s("input",{type:"checkbox","onUpdate:modelValue":a[0]||(a[0]=o=>e.form.enabled=o)},null,512),[[P,e.form.enabled]]),a[17]||(a[17]=d(" 启用主题 AI Provider ",-1))])]),s("div",Q,[a[19]||(a[19]=s("label",null,"AI Provider",-1)),_(s("select",{"onUpdate:modelValue":a[1]||(a[1]=o=>e.form.provider=o),class:"aksrt-select"},[...a[18]||(a[18]=[s("option",{value:"none"},"不使用",-1),s("option",{value:"openai"},"OpenAI 兼容接口",-1)])],512),[[w,e.form.provider]])]),e.form.provider!=="none"?(r(),l("div",h,[a[20]||(a[20]=s("label",null,"API Key",-1)),_(s("input",{"onUpdate:modelValue":a[2]||(a[2]=o=>e.form.api_key=o),type:"password",class:"aksrt-input",placeholder:"sk-..."},null,512),[[u,e.form.api_key]]),a[21]||(a[21]=s("p",{class:"aksrt-form-hint"},"保存后不会回显完整密钥",-1))])):m("",!0),e.form.provider==="openai"?(r(),l("div",$,[a[22]||(a[22]=s("label",null,"API Base URL",-1)),_(s("input",{"onUpdate:modelValue":a[3]||(a[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]]),a[23]||(a[23]=s("p",{class:"aksrt-form-hint"},"示例:https://api.openai.com/v1 或 https://你的网关/v1(不要填到 /chat/completions)",-1))])):m("",!0),e.form.provider!=="none"?(r(),l("div",aa,[a[24]||(a[24]=s("label",null,"模型",-1)),_(s("input",{"onUpdate:modelValue":a[4]||(a[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",sa,[a[25]||(a[25]=s("label",null,"最大 Token 数",-1)),_(s("input",{"onUpdate:modelValue":a[5]||(a[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",ta,[a[26]||(a[26]=s("label",null,"每分钟请求限制",-1)),_(s("input",{"onUpdate:modelValue":a[6]||(a[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),s("div",ea,[s("button",{class:"aksrt-button aksrt-button--primary",disabled:e.saving,onClick:a[7]||(a[7]=(...o)=>e.saveSettings&&e.saveSettings(...o))},i(e.saving?"保存中...":"保存设置"),9,oa)])]),s("div",la,[a[30]||(a[30]=s("h3",null,"已接通能力",-1)),s("table",ia,[a[29]||(a[29]=s("thead",null,[s("tr",null,[s("th",null,"能力"),s("th",null,"入口"),s("th",null,"状态")])],-1)),s("tbody",null,[(r(!0),l(S,null,E(e.features,o=>(r(),l("tr",{key:o.key},[s("td",null,i(o.name),1),s("td",null,i(o.scene),1),s("td",null,[s("span",{class:k(["aksrt-badge",o.ready?"aksrt-badge--success":"aksrt-badge--warning"])},i(o.ready?"可用":"未就绪"),3)])]))),128))])]),a[31]||(a[31]=s("p",{class:"aksrt-form-hint"},"SEO 开关与提示词请到「全局 → SEO」配置(seo_ai_enabled / ai_seo_*_prompt)。",-1))]),a[32]||(a[32]=s("div",{class:"aksrt-ai__form-card aksrt-ai__notice"},[s("h3",null,[s("i",{class:"fa fas fa-exclamation-triangle"}),d(" 重要说明")]),s("ul",null,[s("li",null,[d("AI 输出仅作为"),s("strong",null,"建议"),d(",不会自动写库;需用户点「更新/提交」才保存")]),s("li",null,"主题 API Key 已配置时优先使用;否则回退 WordPress AI Connectors"),s("li",null,"生成接口要求登录与编辑/投稿权限;配置接口仍需管理员")])],-1))])}const ka=L(W,[["render",ra],["__scopeId","data-v-290bff3b"]]);export{ka as default}; diff --git a/assets/admin/build/ExtensionAI.css b/assets/admin/build/ExtensionAI.css new file mode 100644 index 00000000..4e17c2eb --- /dev/null +++ b/assets/admin/build/ExtensionAI.css @@ -0,0 +1 @@ +.aksrt-ai__status[data-v-290bff3b]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.aksrt-ai__status-card[data-v-290bff3b]{display:flex;align-items:center;gap:12px;padding:16px;background:#fff;border-radius:8px;border:1px solid #e8e8e8}.aksrt-ai__status-icon[data-v-290bff3b]{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-290bff3b]{background:#d4edda;color:#155724}.aksrt-ai__status-icon--warn[data-v-290bff3b]{background:#fff3cd;color:#856404}.aksrt-ai__status-icon--off[data-v-290bff3b]{background:#f8d7da;color:#721c24}.aksrt-ai__status-icon--info[data-v-290bff3b]{background:#d1ecf1;color:#0c5460}.aksrt-ai__status-value[data-v-290bff3b]{font-size:18px;font-weight:600;color:var(--aksrt-color-text)}.aksrt-ai__status-label[data-v-290bff3b]{font-size:12px;color:#888}.aksrt-ai__form-card[data-v-290bff3b]{background:#fff;border:1px solid #e8e8e8;border-radius:8px;padding:24px;margin-bottom:16px}.aksrt-ai__form-card h3[data-v-290bff3b]{margin:0 0 16px;font-size:16px;font-weight:600}.aksrt-form-hint[data-v-290bff3b]{font-size:12px;color:#888;margin-top:4px}.aksrt-ai__load-error[data-v-290bff3b]{background:#fdecea;border-color:#f5c2c0;color:#842029;margin-bottom:16px}.aksrt-ai__notice[data-v-290bff3b]{background:#fff8e1;border-color:#ffe082}.aksrt-ai__notice h3[data-v-290bff3b]{color:#e65100}.aksrt-ai__notice ul[data-v-290bff3b]{margin:0;padding-left:20px}.aksrt-ai__notice li[data-v-290bff3b]{margin-bottom:8px;font-size:14px}.aksrt-ai__notice code[data-v-290bff3b]{background:#0000000f;padding:2px 6px;border-radius:3px;font-size:13px}.aksrt-badge[data-v-290bff3b]{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px}.aksrt-badge--success[data-v-290bff3b]{background:#d4edda;color:#155724}.aksrt-badge--warning[data-v-290bff3b]{background:#fff3cd;color:#856404}.aksrt-table[data-v-290bff3b]{width:100%;border-collapse:collapse}.aksrt-table th[data-v-290bff3b],.aksrt-table td[data-v-290bff3b]{border-bottom:1px solid #eee;padding:10px 8px;text-align:left}.aksrt-form-group[data-v-290bff3b]{margin-bottom:14px}.aksrt-input[data-v-290bff3b],.aksrt-select[data-v-290bff3b]{width:100%;max-width:480px;padding:8px 10px}.aksrt-button[data-v-290bff3b]{padding:8px 16px;border:0;border-radius:6px;cursor:pointer}.aksrt-button--primary[data-v-290bff3b]{background:#1677ff;color:#fff}.aksrt-button[data-v-290bff3b]:disabled{opacity:.6;cursor:not-allowed} diff --git a/assets/admin/build/FaIcon.NZ6TDkNu.js b/assets/admin/build/FaIcon.NZ6TDkNu.js new file mode 100644 index 00000000..fac4b8d1 --- /dev/null +++ b/assets/admin/build/FaIcon.NZ6TDkNu.js @@ -0,0 +1 @@ +import{W as r,X as p,I as f,L as u,c as a}from"./vendor-vue.BxZIRU0_.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("fa","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:u(i.value),style:f(n.value),"aria-hidden":"true"},null,6))}};export{c as _}; diff --git a/assets/admin/build/FaIconPicker.DuahAn6_.js b/assets/admin/build/FaIconPicker.DuahAn6_.js new file mode 100644 index 00000000..c1c9220d --- /dev/null +++ b/assets/admin/build/FaIconPicker.DuahAn6_.js @@ -0,0 +1 @@ +import{_ as x}from"./FaIcon.NZ6TDkNu.js";import{_ as H}from"./index.js";import{N as p,W as a,X as n,L as V,a5 as z,c as C,o as O,a1 as g,a4 as d,a3 as v,Y as k,F as S,R as $,a2 as A,f as I,Z as R,r as y}from"./vendor-vue.BxZIRU0_.js";import{a as U}from"./shared-api.DnsQ5cxS.js";function L(e){const i=String(e||"").trim();if(!i)return"";let c;try{c=new DOMParser().parseFromString(i,"image/svg+xml")}catch{return""}if(c.querySelector("parsererror"))return"";const o=c.querySelector("svg");if(!o||o.querySelector("script, foreignObject, animate"))return"";["class","id","style","t","version","p-id"].forEach(l=>o.removeAttribute(l)),Array.from(o.attributes).forEach(l=>{l.name.indexOf("data-")===0&&o.removeAttribute(l.name)});const u=new XMLSerializer().serializeToString(o);return/