feat(admin): strip SPA ops menus; redirect old hashes to native WP (Phase 4)

SPA shop/forum/payment/users sections now keep configuration pages only.
Operational workbenches were removed from the sidebar and loaders; legacy
hash routes open NativeOpsRedirect into the matching WP native admin page.
Admin SPA production build refreshed accordingly.
This commit is contained in:
kate522 committed 2026-07-15 02:10:05 +08:00
1 parent bf061f43ee
commit a3dde3874a
85 files changed
+15987 -249

No files matched your search

@@ -0,0 +1 @@
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 faLine truncated