PageSourceSearch

https://gin-vue-admin.com/assets/index.md.BEJh76Nv.lean.js

js gin-vue-admin.com collected 2026-09-25 19:53:13 UTC 101,595 bytes, 1 lines download raw bytes

1import{a5 as ce,v as K,$ as ne,o as s,c as n,j as e,n as y,e as G,Z as re,p as F,a2 as M,E as $,_ as q,q as oe,b as pe,w as O,a0 as z,a6 as ee,F as _,B as A,T as se,a7 as xe,P as le,x as ie,a as u,t as p,N as B,h as R}from"./chunks/framework.b3K37OPx.js";const ge=["aria-expanded"],de={__name:"ExperienceDropdown",props:{menuAlign:{type:String,default:"center",validator:g=>["center","left"].includes(g)}},setup(g){const i=F(!1),o=F(null),r=`experience-version-menu-${ce()}`;function a(){i.value=!i.value}function t(){i.value=!1}function l(c){var h;(h=o.value)!=null&&h.contains(c.relatedTarget)||t()}function m(c){var h;i.value&&!((h=o.value)!=null&&h.contains(c.target))&&t()}return K(()=>document.addEventListener("click",m)),ne(()=>document.removeEventListener("click",m)),(c,h)=>(s(),n("div",{ref_key:"root",ref:o,class:"relative inline-flex",onFocusout:l,onKeydown:re(t,["escape"])},[e("button",{type:"button",class:"inline-flex h-[43px] w-full cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-[8px] border border-transparent bg-[var(--gva-primary)] px-7 text-[14px] font-normal text-white transition-[transform,box-shadow,background-color,border-color,color] duration-200 hover:-translate-y-px hover:bg-[var(--gva-primary-hover)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gva-primary)] focus-visible:ring-offset-2 max-[860px]:h-12","aria-haspopup":"menu","aria-expanded":i.value,"aria-controls":r,onClick:a},[h[0]||(h[0]=e("span",null,"立即体验",-1)),e("span",{class:y(["h-2 w-2 border-b border-r border-current transition-transform duration-200",i.value?"translate-y-[2px] rotate-[225deg]":"-translate-y-[2px] rotate-45"]),"aria-hidden":"true"},null,2)],8,ge),i.value?(s(),n("div",{key:0,id:r,class:y(["absolute top-[calc(100%+8px)] z-30 w-[280px] max-w-[calc(100vw-32px)] overflow-hidden rounded-[8px] border border-[var(--gva-border)] bg-white p-1.5 text-left shadow-[0_16px_36px_rgba(15,23,42,0.16)] dark:bg-[var(--gva-bg-dark-soft)]",g.menuAlign==="left"?"left-0":"left-1/2 -translate-x-1/2"]),role:"menu","aria-label":"选择体验版本"},[e("a",{class:"flex h-11 items-center justify-between rounded-[6px] px-3.5 text-[14px] text-[var(--gva-text-strong)] transition-colors hover:bg-[var(--gva-primary-soft)] hover:text-[var(--gva-primary)] focus-visible:bg-[var(--gva-primary-soft)] focus-visible:text-[var(--gva-primary)] focus-visible:outline-none",href:"https://demo.gin-vue-admin.com",target:"_blank",rel:"noopener",role:"menuitem",onClick:t},[...h[1]||(h[1]=[e("span",{class:"font-medium"},"标准版",-1),e("span",{class:"text-[13px] text-[var(--gva-text-muted)]"},"v2.9.2",-1)])]),e("a",{class:"flex h-11 items-center justify-between rounded-[6px] px-3.5 text-[14px] text-[var(--gva-text-strong)] transition-colors hover:bg-[var(--gva-primary-soft)] hover:text-[var(--gva-primary)] focus-visible:bg-[var(--gva-primary-soft)] focus-visible:text-[var(--gva-primary)] focus-visible:outline-none",href:"https://vip.gin-vue-admin.com",target:"_blank",rel:"noopener",role:"menuitem",onClick:t},[...h[2]||(h[2]=[e("span",{class:"font-medium"},"授权版",-1),e("span",{class:"text-[13px] text-[var(--gva-text-muted)]"},"v3.0.1",-1)])])],2)):G("",!0)],544))}},me={class:"gva-section flex justify-center pt-[240px] px-6 pb-[80px] bg-[#F9F9F9] dark:bg-[var(--gva-bg-base)] max-[860px]:pt-[60px] max-[860px]:pb-[18px] min-[2560px]:pt-[210px] min-[2560px]:pb-[110px]"},ve={class:"gva-container text-center flex flex-col items-center max-[860px]:w-[min(100%,300px)]"},ue={class:"hero__actions flex gap-4 flex-wrap justify-center max-[860px]:w-full max-[860px]:flex-col max-[860px]:gap-3 max-[860px]:items-stretch"},be={__name:"HeroSection",setup(g){return(i,o)=>(s(),n("section",me,[e("div",ve,[o[1]||(o[1]=M('<h1 class="text-[clamp(34px,5vw,56px)] min-[2560px]:text-[clamp(56px,3.2vw,76px)] leading-[1.2] font-semibold tracking-[-0.02em] text-[#1a1a1a] dark:text-[var(--gva-text-strong)] mx-0 mt-0 mb-5 max-[860px]:hidden"> 用 AI 构建<span class="text-[#2264F2] dark:text-[var(--gva-primary)]">系统</span>,让系统为 <span class="text-[#2264F2] dark:text-[var(--gva-primary)]">AI</span> 工作 </h1><h1 class="text-[clamp(34px,5vw,56px)] leading-[1.2] font-semibold tracking-[-0.02em] text-[#1a1a1a] dark:text-[var(--gva-text-strong)] mx-0 mt-0 mb-5 hidden max-[860px]:block max-[860px]:mb-[18px] max-[860px]:text-[28px] max-[860px]:leading-[1.32] max-[860px]:font-bold max-[860px]:tracking-[0]" aria-label="让现有 API 成为 AI Agent 可直接调用的业务能力"> 让现有 API 成为 <span class="inline max-[860px]:block">AI Agent <span class="text-[var(--gva-primary)]">可直接调用</span>的</span> 业务能力 </h1><p class="text-[clamp(15px,1.5vw,18px)] min-[2560px]:text-[clamp(16px,1.1vw,22px)] leading-[2] text-[#808080] dark:text-[var(--gva-text-body)] mt-2 mx-0 mb-[20px] max-[860px]:hidden max-[860px]:font-light"> GVA 3.0 将 AI 辅助开发、全栈工程能力与智能调用体系融为一体,<br> 让开发者更高效地构建系统,也让系统中的 API、服务与业务流程能够被 AI 理解和调用。<br> 让每一个业务系统,天然具备 AI 能力。 </p><p class="hidden text-[clamp(15px,1.5vw,18px)] leading-[2] text-[#808080] dark:text-[var(--gva-text-body)] mt-10 mx-0 mb-[30px] max-[860px]:block max-[860px]:font-light max-[860px]:text-[13px] max-[860px]:leading-[2.15] max-[860px]:max-w-full max-[860px]:mt-0 max-[860px]:mb-[28px]"> 在 GVA 中选择 API,填写每个 Skill 的名称与描述,<br> 点击生成,下载包含 API 代码与自动生成的<br> Skill 文件的 ZIP 包。<br>
1 将 Skill 文件放入项目后,任何 AI Agent 即可直接<br> 调用这些 API,统一内部权限校验,无需额外配置。 </p>',4)),e("div",ue,[$(de,{class:"min-w-40 max-[860px]:mx-auto max-[860px]:w-[90%] max-[860px]:min-w-0 max-[860px]:flex-none"}),o[0]||(o[0]=e("a",{class:"gva-btn gva-btn--ghost gva-btn--commercial min-w-40 max-[860px]:w-[90%] max-[860px]:mx-auto max-[860px]:flex-none max-[860px]:min-w-0",href:"https://plugin.gin-vue-admin.com/license",target:"_blank",rel:"noopener","aria-label":"商业授权(合规)"},[e("span",null,"商业授权"),e("span",{class:"gva-btn__badge","aria-hidden":"true"},"合规")],-1))])])]))}},fe=["aria-label"],he=["src","alt"],ke={key:2,class:"flex justify-center gap-2 mt-5 shrink-0"},we=["aria-label","onClick"],ye={__name:"ImageLightbox",props:{slides:{type:Array,required:!0},open:{type:Boolean,default:!1},index:{type:Number,default:0}},emits:["update:open","update:index"],setup(g,{emit:i}){const o=g,r=i,a=F("slide-left"),t=F(null);let l=null;function m(){r("update:open",!1)}function c(v){const f=o.slides.length;f<2||(a.value=v>0?"slide-left":"slide-right",r("update:index",(o.index+v+f)%f))}function h(v){if(v===o.index)return;const f=o.slides.length,b=(v-o.index+f)%f;a.value=b<=f/2?"slide-left":"slide-right",r("update:index",v)}function E(v){v.key==="Escape"?m():v.key==="ArrowLeft"?c(-1):v.key==="ArrowRight"&&c(1)}let j=0;function T(v){j=v.touches[0].clientX}function S(v){const f=v.changedTouches[0].clientX-j;Math.abs(f)>40&&c(f<0?1:-1)}return oe(()=>o.open,async v=>{var f,b;typeof document>"u"||(document.body.style.overflow=v?"hidden":"",v?(l=document.activeElement,window.addEventListener("keydown",E),await le(),(f=t.value)==null||f.focus()):(window.removeEventListener("keydown",E),(b=l==null?void 0:l.focus)==null||b.call(l),l=null))}),ne(()=>{window.removeEventListener("keydown",E),typeof document<"u"&&(document.body.style.overflow="")}),(v,f)=>(s(),pe(xe,{to:"body"},[$(se,{name:"lb-fade"},{default:O(()=>[g.open?(s(),n("div",{key:0,ref:"root",class:"fixed inset-0 z-[9999] bg-[rgba(6,8,15,0.72)] backdrop-blur-[6px] flex flex-col items-center justify-center px-6 py-14 max-[860px]:px-3 max-[860px]:py-10",role:"dialog","aria-modal":"true","aria-label":`图片查看器,第 ${g.index+1} / ${g.slides.length} 张`,onClick:z(m,["self"]),onTouchstart:T,onTouchend:S},[e("button",{ref_key:"closeBtn",ref:t,class:"lb-glass absolute right-5 top-5 z-[2] w-9 h-9 rounded-[10px] grid place-items-center text-white text-[15px] leading-none max-[860px]:right-3 max-[860px]:top-3","aria-label":"关闭",onClick:m}," ✕ ",512),g.slides.length>1?(s(),n("button",{key:0,class:"lb-glass absolute left-5 top-1/2 -translate-y-1/2 z-[2] w-11 h-11 rounded-full grid place-items-center text-white text-[18px] leading-none max-[860px]:hidden","aria-label":"上一张",onClick:f[0]||(f[0]=z(b=>c(-1),["stop"]))}," ‹ ")):G("",!0),g.slides.length>1?(s(),n("button",{key:1,class:"lb-glass absolute right-5 top-1/2 -translate-y-1/2 z-[2] w-11 h-11 rounded-full grid place-items-center text-white text-[18px] leading-none max-[860px]:hidden","aria-label":"下一张",onClick:f[1]||(f[1]=z(b=>c(1),["stop"]))}," › ")):G("",!0),e("div",{class:"relative flex-1 w-full flex items-center justify-center min-h-0",onClick:z(m,["self"])},[$(ee,{name:a.value,tag:"div",class:"contents"},{default:O(()=>[(s(),n("img",{key:g.slides[g.index]+g.index,src:g.slides[g.index],alt:`GVA 演示 ${g.index+1}`,loading:"lazy",class:"lb-img max-w-[92vw] max-h-full w-auto h-auto object-contain rounded-[var(--gva-radius)] shadow-[0_40px_90px_rgba(0,0,0,0.55)] select-none",draggable:"false"},null,8,he))]),_:1},8,["name"])]),g.slides.length>1?(s(),n("div",ke,[(s(!0),n(_,null,A(g.slides,(b,d)=>(s(),n("button",{key:d,class:y(["h-2 rounded-full border-none cursor-pointer transition-all duration-200",d===g.index?"w-[22px] bg-[var(--gva-primary)]":"w-2 bg-[rgba(255,255,255,0.32)] hover:bg-[rgba(255,255,255,0.5)]"]),"aria-label":`第 ${d+1} 张`,onClick:z(C=>h(d),["stop"])},null,10,we))),128))])):G("",!0)],40,fe)):G("",!0)]),_:1})]))}},_e=q(ye,[["__scopeId","data-v-816c82ec"]]),Ae={class:"relative -mt-[60px] z-10 pt-[40px] px-6 pb-20 min-[861px]:bg-[linear-gradient(to_bottom,#F9F9F9_67%,transparent_67%)] min-[861px]:dark:bg-[linear-gradient(to_bottom,var(--gva-bg-base)_67%,transparent_67%)] max-[860px]:mt-0 max-[860px]:bg-[var(--gva-bg-base)] max-[860px]:pt-7 max-[860px]:px-4 max-[860px]:pb-0"},$e={class:"max-w-[860px] min-[2560px]:max-w-[1100px] mx-auto p-4 bg-white rounded-2xl shadow-[shadow:var(--gva-shadow-sm)] dark:bg-[var(--gva-bg-dark-soft)] max-[860px]:rounded-[14px]"},Fe=["onKeydown"],Ce=["src","alt"],Ie={class:"flex justify-center gap-2 mt-4"},Ee=["aria-label","onClick"],Te="https://qmplusimg.henrongyi.top/website/player.png",je=3500,De={__name:"VideoSection",setup(g){const i=["https://qmplusimg.henrongyi.top/website/lbt3.png","https://qmplusimg.henrongyi.top/website/lbt1.png","https://qmplusimg.henrongyi.top/website/lbt2.png","https://qmplusimg.henrongyi.top/website/lbt4.png","https://qmplusimg.henrongyi.top/website/lbt5.png","https://qmplusimg.henrongyi.top/website/lbt7.png"],o=i.length,r=F(0),a=F("slide-left");function t(d){a.value=d>0?"slide-left":"slide-right",r.value=(r.value+d+o)%o}function l(d){if(d===r.value)return;const D=(d-r.value+o)%o<=o/2;a.value=D?"slide-left":"slide-right",r.value=d}const m=F(!1);function c(){if(v){v=!1;return}m.value=!0,j()}oe(m,d=>{d||T()});let h=null;function E(){h=setInterval(()=>t(1),je)}function j(){clearInterval(h),h=null}function T(){!h&&!m.value&&E()}let S=0,v=!1;function f(d){S=d.touches[0].clientX,v=!1,j()}function b(d){const C=d.changedTouches[0].clientX-S;Math.abs(C)>40&&(v=!0,t(C<0?1:-1)),T()}return K(E),ie(j),(d,C)=>(s(),n("section",Ae,[e("div",$e,[e("div",{class:"flex items-center gap-2.5 mb-2.5 max-[860px]:mb-3"},[e("span",{class:"inline-flex text-[var(--gva-primary)]","aria-hidden":"true"},[e("img",{class:"block w-[18px] h-[18px]",src:Te,alt:"",loading:"lazy"})]),C[2]||(C[2]=e("span",{class:"text-[14px] font-medium text-[var(--gva-text-strong)] max-[860px]:font-semibold"},"观看工作流程演示",-1))]),e("div",{class:"relative w-full aspect-[35/19] rounded-[4px] overflow-hidden bg-[#eef1f6] dark:bg-[#161c2b] cursor-zoom-in max-[860px]:rounded-lg",role:"button",tabindex:"0","aria-label":"点击放大查看",onMouseenter:j,onMouseleave:T,onTouchstart:f,onTouchend:b,onClick:c,onKeydown:[re(z(c,["prevent"]),["enter"]),re(z(c,["prevent"]),["space"])]},[$(ee,{name:a.value,tag:"div",class:"absolute inset-0"},{default:O(()=>[(s(),n("img",{key:i[r.value]+r.value,src:i[r.value],alt:`GVA 演示 ${r.value+1}`,loading:"lazy",class:"carousel-slide absolute inset-0 w-full h-full object-cover select-none",draggable:"false"},null,8,Ce))]),_:1},8,["name"])],40,Fe),e("div",Ie,[(s(),n(_,null,A(i,(D,L)=>e("button",{key:L,class:y(["h-2 rounded-full border-none cursor-pointer transition-all duration-200",L===r.value?"w-[22px] bg-[var(--gva-primary)]":"w-2 bg-[var(--gva-border-strong)]"]),"aria-label":`第 ${L+1} 张`,onClick:Y=>l(L)},null,10,Ee)),64))])]),$(_e,{open:m.value,"onUpdate:open":C[0]||(C[0]=D=>m.value=D),index:r.value,"onUpdate:index":C[1]||(C[1]=D=>r.value=D),slides:i},null,8,["open","index"])]))}},Se=q(De,[["__scopeId","data-v-1845d198"]]),Me={class:"gva-section pt-[92px] pb-[116px] px-6 bg-[#fff] dark:bg-[var(--gva-bg-base)] max-[720px]:py-14 max-[720px]:px-4"},Pe={class:"gva-container"},Be={class:"grid items-center grid-cols-[378px_minmax(0,1fr)] gap-14 max-[1120px]:grid-cols-[minmax(0,1fr)] max-[1120px]:gap-[42px]"},Le={class:"bg-[var(--gva-bg-base)] border border-[#dfe5ee] rounded-[16px] shadow-[0_10px_34px_rgba(18,37,63,0.04)] transition-[transform,box-shadow,border-color] duration-200 min-h-[446px] pt-11 px-[26px] pb-[34px] dark:bg-[var(--gva-bg-dark-soft)] dark:border-[var(--gva-border)] max-[720px]:min-h-[auto] max-[720px]:py-5 max-[720px]:px-3.5"},Ge={class:"grid grid-cols-3 gap-y-7 gap-x-6 max-[720px]:grid-cols-2 max-[720px]:gap-2.5"},Ve=["src","alt"],ze={key:1},qe={class:"text-[18px] leading-none font-normal text-[#626770] max-[720px]:text-[14px]"},Ne="https://qmplusimg.henrongyi.top/website/claude.png",Re="https://qmplusimg.henrongyi.top/website/icon-chatgpt.png",Oe="https://qmplusimg.henrongyi.top/website/hermes.png",Ue="https://qmplusimg.henrongyi.top/website/openclaw.png",Xe="https://qmplusimg.henrongyi.top/website/trae.png",He="https://qmplusimg.henrongyi.top/website/arr-right.png",Ke={__name:"ToolCompat",setup(g){const i=[{name:"Claude Code",icon:Ne},{name:"Cursor",glyph:"I",iconClass:"tools__icon--cursor"},{name:"Codex",icon:Re},{name:"Trae",icon:Xe},{name:"Hermes",icon:Oe},{name:"OpenClaw",icon:Ue}];return(o,r)=>(s(),n("section",Me,[e("div",Pe,[e("div",Be,[e("div",null,[r[1]||(r[1]=e("p",{class:"max-w-[432px] m-0 text-[42px] leading-[1.43] font-semibold tracking-[0] text-[#030303] dark:text-[var(--gva-text-strong)] max-[1120px]:max-w-[720px] max-[720px]:text-[34px]"},[u("你熟悉的 "),e("span",{class:"text-[#2264F2]"},"AI 工具"),u(),e("br"),u(" 直接接入 GVA")],-1)),r[2]||(r[2]=e("p",{class:"max-w-[432px] mx-0 mt-[34px] mb-[42px] text-[16px] leading-[1.72] font-normal text-[#60656f] max-[1120px]:max-w-[720px] max-[720px]:text-[14px] max-[720px]:font-light"},[u(" 所有支持 MCP 协议的主流 AI Coding Agent,"),e("br"),u(" 无需任何额外适配,直接连接 GVA,"),e("br"),u("开始搭建。 ")],-1)),e("a",{class:"relative inline-flex items-center gap-2.5 pb-[13px] text-[16px] leading-none font-medium text-[#2264F2] after:content-[''] after:absolute after:left-0 after:bottom-0 after:w-full after:h-0.5 after:bg-[#2264F2] max-[720px]:text-[14px]",href:"/guide/server/mcp"},[r[0]||(r[0]=u(" 查看接入文档 ",-1)),e("img",{class:"block w-3.5 h-3.5 object-contain",src:He,alt:"","aria-hidden":"true",loading:"lazy"})])]),e("div",Le,[e("div",Ge,[(s(),n(_,null,A(i,a=>e("div",{key:a.name,class:"flex flex-col items-center justify-center justify-self-center gap-3.5 w-[98%] h-[148px] pt-[18px] px-2 pb-4 border border-[#dfe5ee] rounded-[10px] bg-[#fff] shadow-[0_5px_13px_rgba(16,24,40,0.045)] transition-[border-color,transform,box-shadow] duration-200 hover:border-[rgba(34,100,242,0.28)] hover:shadow-[0_8px_18px_rgba(16,24,40,0.065)] dark:bg-[var(--gva-bg-dark-soft)] dark:border-[var(--gva-border)] dark:hover:border-[var(--gva-border)] max-[720px]:flex-row max-[720px]:justify-start max-[720px]:w-full max-[720px]:h-auto max-[720px]:gap-2.5 max-[720px]:px-3 max-[720px]:py-2.5 max-[720px]:rounded-lg"},[e("span",{class:y(["w-[66px] h-[66px] shrink-0 grid place-items-center overflow-hidden rounded-full max-[720px]:w-10 max-[720px]:h-10",a.iconClass])},[a.icon?(s(),n("img",{key:0,src:a.icon,alt:a.name,loading:"lazy",class:"block w-full h-full object-contain"},null,8,Ve)):(s(),n("span",ze,p(a.glyph),1))],2),e("span",qe,p(a.name),1)])),64))]),r[3]||(r[3]=e("p",{class:"mt-7 mx-0 mb-0 text-center text-[16px] leading-none font-normal text-[#8d929b] max-[720px]:mt-4 max-[720px]:text-[13px]"},"以及所有支持 MCP 协议的 AI 工具",-1))])])])]))}},Ye=q(Ke,[["__scopeId","data-v-8f3ffff1"]]),Ze={class:"gva-section max-[859px]:max-[859px]:!py-[18px]"},Je={class:"gva-container"},We={class:"grid grid-cols-1 gap-10 max-[859px]:mx-auto max-[859px]:w-full max-[859px]:max-w-[404px] max-[859px]:gap-0 min-[860px]:grid-cols-[minmax(0,1.5fr)_minmax(0,1fr)] min-[860px]:items-stretch min-[860px]:gap-[72px] min-[1920px]:grid-cols-[800px_minmax(0,1fr)]"},Qe={class:"order-1 flex min-w-0 flex-col justify-start min-[860px]:order-2 min-[860px]:justify-center"},et={class:"mt-7 hidden flex-wrap gap-x-3 gap-y-3 min-[860px]:flex"},tt={__name:"SkillsSystem",setup(g){const i=["user-list","user-create","role-update","menu-list","api-create","dept-list","dict-list","login"];return(o,r)=>(s(),n("section",Ze,[e("div",Je,[e("div",We,[r[2]||(r[2]=M('<div class="order-2 mt-[18px] flex min-w-0 flex-col min-[860px]:order-1 min-[860px]:mt-0 min-[1920px]:w-[800px]"><div class="flex h-[228px] flex-col overflow-hidden rounded-[15p
1x] bg-[#151617] shadow-[0_16px_30px_-12px_rgba(0,0,0,0.46)] ring-1 ring-black/10 min-[860px]:h-auto min-[860px]:flex-1 min-[860px]:rounded-xl min-[860px]:shadow-[0_30px_70px_-28px_rgba(0,0,0,0.45)] min-[860px]:ring-black/5"><div class="relative flex h-[40px] shrink-0 items-center border-b border-white/10 bg-[#242526] px-[16px] min-[860px]:h-11 min-[860px]:border-b-0 min-[860px]:bg-[#282828] min-[860px]:px-5"><div class="flex items-center gap-[8px]"><span class="h-[12px] w-[12px] rounded-full bg-[#f25f59] min-[860px]:h-3 min-[860px]:w-3 min-[860px]:bg-[#eb534c]"></span><span class="h-[12px] w-[12px] rounded-full bg-[#f7c843] min-[860px]:h-3 min-[860px]:w-3 min-[860px]:bg-[#efae41]"></span><span class="h-[12px] w-[12px] rounded-full bg-[#46c85a] min-[860px]:h-3 min-[860px]:w-3 min-[860px]:bg-[#3db63e]"></span></div><span class="absolute left-1/2 -translate-x-1/2 text-[12px] font-normal leading-none text-[#b9b9b9] min-[860px]:hidden"> Terminal </span><span class="absolute left-1/2 hidden -translate-x-1/2 text-[13px] font-medium tracking-wide text-[#8a8a8a] min-[860px]:block"> zsh </span></div><div class="flex-1 overflow-hidden px-[20px] pt-[11px] font-mono text-[12px] leading-[1.62] min-[860px]:hidden"><p class="flex items-center gap-[9px] whitespace-nowrap"><span class="text-[#85888d]">$</span><span class="font-semibold text-[#e8e8e8]"> gva user-list --page 1 </span></p><p class="flex items-center gap-[9px] whitespace-nowrap text-[#a9aaae]"><span class="w-[6px] shrink-0 text-[#6d7075]">›</span><span>Loading manifest</span></p><p class="flex items-center gap-[9px] whitespace-nowrap text-[#a9aaae]"><span class="w-[6px] shrink-0 text-[#6d7075]">›</span><span>GET /user/getUserList</span></p><p class="flex items-center gap-[9px] whitespace-nowrap text-[#a9aaae]"><span class="w-[6px] shrink-0 text-[#6d7075]">›</span><span>Auth · x-token</span></p><p class="mt-[7px] flex items-center gap-[9px] whitespace-nowrap text-[#528cff]"><span class="w-[6px] shrink-0">✓</span><span class="font-medium"> code 0 · 128 records </span></p><p class="mt-[1px] whitespace-nowrap text-[#a9aaae]"> Your agent now calls your APIs. </p></div><div class="hidden flex-1 overflow-x-auto px-6 py-5 font-mono text-[14px] leading-[1.85] min-[860px]:block min-[860px]:text-[15px]"><p class="whitespace-pre text-[#8d8d8d]"> ~ gva login --token eyJhbGci... </p><p class="whitespace-pre text-[#8d8d8d]"> ~ gva --help </p><p class="h-[1.85em]"> </p><p class="whitespace-pre text-[#d2d2d2]"> Loading embedded manifest... </p><p class="whitespace-pre text-[#d2d2d2]"> Registering API commands... </p><p class="h-[1.85em]"> </p><p class="whitespace-pre text-[#4eb849]"> ✓ Skill loaded: gva-cli </p><p class="whitespace-pre text-[#4eb849]"> ✓ 12 commands ready: user-list, user-create, </p><p class="whitespace-pre pl-[4ch] text-[#4eb849]"> role-update, menu-list, api-create... </p><p class="h-[1.85em]"> </p><p class="whitespace-pre text-[#5b9bf0]"> Ready. Your AI agent now calls GVA APIs. </p><span class="mt-1 inline-block h-[1.05em] w-[8px] translate-y-[3px] animate-pulse bg-[#9a9a9a]"></span></div></div><p class="mt-[11px] text-center text-[14px] font-normal leading-[1.5] text-[#777b82] dark:text-[var(--gva-text-muted)] min-[860px]:hidden"> 一条命令,让 AI 直接调用你的后台 </p><p class="mt-3 hidden text-center text-[14px] text-[#60656f] dark:text-[var(--gva-text-body)] min-[860px]:block"> gva 调用后台接口的示例输出 </p></div>',1)),e("div",Qe,[r[0]||(r[0]=M('<h3 class="mt-[13px] text-[34px] font-bold leading-[1.2] tracking-[-0.04em] text-[#050505] dark:text-[var(--gva-text-strong)] min-[860px]:hidden"><span class="block">不只是接入</span><span class="block text-[#2264F2] dark:text-[var(--gva-primary)]"> 让 AI 直接调用 </span><span class="block">你的</span><span class="block"><span class="text-[#2264F2] dark:text-[var(--gva-primary)]">GVA</span><span class="ml-[4px]">系统</span></span></h3><h3 class="hidden text-[32px] font-semibold leading-[1.32] tracking-tight text-[#030303] dark:text-[var(--gva-text-strong)] min-[860px]:block min-[860px]:text-[40px] min-[860px]:leading-[1.32] min-[1920px]:text-[44px]"> 不只是接入<br>
1 让AI <span class="text-[#2264F2] dark:text-[var(--gva-primary)]">直接调用</span>你的系统 </h3><div class="min-[860px]:hidden"><p class="mt-[17px] text-[14px] font-light leading-[1.58] text-[#4f535a] dark:text-[var(--gva-text-body)]"> 在后台勾选要开放的接口,<br> GVA 依据 Swagger<br> 自动生成命令行 Skill,<br> 装进 Claude Code 等 AI 助手。 </p><p class="mt-[11px] text-[14px] font-light leading-[1.58] text-[#4f535a] dark:text-[var(--gva-text-body)]"> 一次 login 完成鉴权,<br> AI 就能在终端<br> 直接调用你的后台接口,<br> 不必再逐个解释接口怎么用。 </p></div><div class="hidden min-[860px]:block"><p class="mt-6 text-[16px] leading-[1.72] text-[#60656f] dark:text-[var(--gva-text-body)]"> 在后台勾选要开放的接口,<br> GVA 依据 Swagger 自动生成命令行,<br> 打包成 Skill 装进 Claude Code 等 AI 助手。 </p><p class="mt-5 text-[16px] leading-[1.72] text-[#60656f] dark:text-[var(--gva-text-body)]"> 一次 login 完成鉴权,<br> AI 就能在终端直接调用你的后台接口,<br> 不必再逐个解释接口怎么用。 </p></div>',4)),e("div",et,[(s(),n(_,null,A(i,a=>e("span",{key:a,class:"rounded-lg bg-[#EBF2FC] dark:bg-[var(--gva-primary-soft)] px-3.5 py-1.5 text-[12px] font-medium leading-none text-[#2264F2] dark:text-[var(--gva-primary)]"},p(a),1)),64))]),r[1]||(r[1]=e("a",{class:"mt-[15px] inline-flex w-fit items-center gap-[8px] border-b-2 border-[#2264F2] dark:border-[var(--gva-primary)] pb-[4px] text-[14px] font-medium leading-none text-[#2264F2] dark:text-[var(--gva-primary)] transition-opacity hover:opacity-80 min-[860px]:mt-8 min-[860px]:gap-2.5 min-[860px]:pb-[3px] min-[860px]:text-[16px]",href:"/guide/server/ai-cli.html"},[e("span",null,"了解 AI CLI"),e("span",{class:"text-[14px] leading-none min-[860px]:text-[18px]"}," → ")],-1))])])])]))}},at={class:"gva-section bg-[#F9F9F9] dark:bg-[var(--gva-bg-base)] max-[859px]:!py-[22px]"},rt={class:"gva-container"},st={class:"mx-auto w-full max-w-[442px] min-[860px]:hidden"},nt={class:"mt-[24px] overflow-hidden rounded-[14px] border border-[#dce2eb] dark:border-[var(--gva-border)] bg-[linear-gradient(180deg,#ffffff_0%,#fbfdff_100%)] dark:bg-[#0f1628] p-[20px] shadow-[0_16px_34px_-20px_rgba(23,43,77,0.34)]"},ot={class:"overflow-hidden rounded-[10px] border border-[#dce3ed] dark:border-[var(--gva-border)] bg-white dark:bg-[#0c1322]"},lt={class:"flex h-[184px]"},it={class:"w-[29%] shrink-0 border-r border-[#e3e8ef] dark:border-[var(--gva-border)] bg-[#fafbfc] dark:bg-[#0c1322] py-[7px]"},pt={class:"min-w-0 flex-1 px-[10px] pb-[8px] pt-[9px]"},xt={class:"mt-[9px] overflow-hidden rounded-[4px] border border-[#e1e6ed] dark:border-[var(--gva-border)]"},dt={class:"hidden grid-cols-1 gap-12 min-[860px]:grid min-[860px]:grid-cols-[minmax(0,0.46fr)_minmax(0,1fr)] min-[860px]:items-center min-[860px]:gap-16"},ct={class:"flex min-w-0 flex-col"},gt={class:"mt-7 flex flex-col gap-3"},mt={class:"overflow-hidden rounded-2xl border border-[#e6e7ea] dark:border-[var(--gva-border)] bg-white dark:bg-[#0f1628] shadow-[0_30px_70px_-30px_rgba(20,30,60,0.28)]"},vt={class:"relative flex flex-col min-[860px]:flex-row"},ut={class:"w-full bg-[#1d1f2b] p-6 min-[860px]:w-[43%]"},bt={class:"flex flex-col gap-[11px]"},ft={key:0,class:"w-4 shrink-0 text-center text-[#9a9ba4]"},ht={key:1,class:"h-3.5 w-3.5 shrink-0 animate-spin rounded-full border-2 border-[#2264F2] border-t-transparent"},kt={class:"w-full flex-1 bg-white dark:bg-[#0f1628] p-6 min-[860px]:p-7"},wt={__name:"LiveGenerate",setup(g){const i=["数据模型自动定义","API 接口自动生成","路由注册自动完成","权限配置自动就位"],o=[{t:"分析需求...",done:!0},{t:"创建数据模型 User...",done:!0},{t:"生成 API 接口 ×6...",done:!0},{t:"注册路由...",done:!0},{t:"配置权限规则...",done:!0},{t:"生成前端页面 ...",done:!1}],r=[{id:"001",name:"张三",role:"管理员",active:!0,muted:!1},{id:"002",name:"李四",role:"普通用户",active:!0,muted:!1},{id:"003",name:"王五",role:"访客",active:!1,muted:!0}
1];return(a,t)=>(s(),n("section",at,[e("div",rt,[e("div",st,[t[6]||(t[6]=M('<h3 class="mt-[17px] text-[34px] font-extrabold leading-[1.43] tracking-[-0.045em] text-[#050505] dark:text-[var(--gva-text-strong)]"><span class="block"> 从 <span class="ml-[5px] text-[#2264F2] dark:text-[var(--gva-primary)]">一句话需求</span></span><span class="block">到完整的</span><span class="block text-[#2264F2] dark:text-[var(--gva-primary)]">业务</span><span class="block text-[#2264F2] dark:text-[var(--gva-primary)]">模块</span></h3><div class="mt-[18px] text-[14px] font-light leading-[1.82] tracking-[0.005em] text-[#555a63] dark:text-[var(--gva-text-body)]"><p> 描述你需要什么,AI 在 GVA 里<br> 完成数据模型定义、API 生成、<br> 路由注册和权限配置,<br> 最终生成完整业务模块。 </p><p class="mt-[14px]"> 你不需要手动介入每一步,<br> 只需要检查生成过程,<br> 并审查最终结果。 </p></div><a href="/guide/server/ai-generate.html" class="mt-[18px] inline-flex w-fit items-center gap-[8px] border-b-2 border-[#2264F2] dark:border-[var(--gva-primary)] pb-[4px] text-[14px] font-medium leading-none text-[#2264F2] dark:text-[var(--gva-primary)] transition-opacity hover:opacity-80"><span>查看演示文档</span><span class="text-[14px] leading-none">→</span></a>',3)),e("div",nt,[t[5]||(t[5]=M('<div class="overflow-hidden rounded-[10px] border border-[#dce3ed] dark:border-[var(--gva-border)] bg-white dark:bg-[#0c1322]"><div class="flex h-[31px] items-center gap-[8px] border-b border-[#e2e7ee] dark:border-[var(--gva-border)] px-[10px]"><span class="grid h-[19px] w-[19px] shrink-0 place-items-center rounded-full bg-black dark:bg-[var(--gva-primary)] text-[10px] font-semibold leading-none text-white"> I </span><span class="text-[12px] font-medium text-[#555a63] dark:text-[var(--gva-text-body)]"> AI Coding Agent </span></div><div class="relative m-[11px] min-h-[75px] rounded-[10px] border border-[#dce3ed] dark:border-[var(--gva-border)] bg-white dark:bg-[#0c1322] px-[13px] pb-[24px] pt-[11px]"><p class="text-[12px] font-medium leading-[1.72] text-[#17191d] dark:text-[var(--gva-text-strong)]"> 帮我创建一个用户管理模块,<br> 包含列表、编辑和权限控制。 </p><svg class="absolute bottom-[9px] right-[10px] h-[18px] w-[18px] text-[#2264F2] dark:text-[var(--gva-primary)]" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M21.3 3.2 3.9 9.9c-.9.35-.87 1.64.05 1.94l6.7 2.16 2.15 6.7c.3.92 1.59.95 1.94.05L21.5 3.36c.05-.13-.08-.26-.2-.16Z" fill="currentColor"></path><path d="m10.65 14 5.15-5.15" stroke="white" stroke-width="1.5" stroke-linecap="round"></path></svg></div></div><div class="flex h-[47px] items-center justify-center gap-[18px]"><span class="h-px flex-1 border-t border-dashed border-[#b8d2ff] dark:border-[rgba(79,134,255,0.35)]"></span><svg class="h-[26px] w-[26px] shrink-0 text-[#2264F2] dark:text-[var(--gva-primary)]" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M12 3v16M6.5 13.5 12 19l5.5-5.5" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="h-px flex-1 border-t border-dashed border-[#b8d2ff] dark:border-[rgba(79,134,255,0.35)]"></span></div>',2)),e("div",ot,[t[4]||(t[4]=e("div",{class:"flex h-[31px] items-center justify-between border-b border-[#e2e7ee] dark:border-[var(--gva-border)] px-[11px]"},[e("span",{class:"text-[11px] font-medium text-[#555a63] dark:text-[var(--gva-text-body)]"}," GVA Admin "),e("span",{class:"h-[8px] w-[8px] rounded-full bg-[#2264F2] dark:bg-[var(--gva-primary)] shadow-[0_0_7px_rgba(34,100,242,0.34)]"})],-1)),e("div",lt,[e("div",it,[(s(),n(_,null,A(4,l=>e("div",{key:l,class:y(["relative flex h-[35px] items-center gap-[8px] px-[11px]",l===3?"bg-[#eef4ff] dark:bg-[var(--gva-primary-soft)] before:absolute before:inset-y-0 before:left-0 before:w-[3px] before:bg-[#2264F2] dark:before:bg-[var(--gva-primary)]":""])},[e("span",{class:y(["h-[10px] w-[10px] shrink-0 rounded-[1px]",l===3?"bg-[#b8c4d8] dark:bg-[rgba(255,255,255,0.20)]":"bg-[#c4c8cf] dark:bg-[rgba(255,255,255,0.12)]"])},null,2),e("span",{class:y(["h-[4px] rounded-full",l===3?"w-[30px] bg-[#8fa2c2] dark:bg-[rgba(255,255,255,0.24)]":"w-[27px] bg-[#9da1a8] dark:bg-[rgba(255,255,255,0.14)]"])},null,2)],2)),64))]),e("div",pt,[t[2]||(t[2]=e("div",{class:"flex items-center justify-between"},[e("h4",{class:"text-[12px] font-semibold leading-none text-[#202329] dark:text-[var(--gva-text-strong)]"}," 用户管理 "),e("button",{class:"rounded-[4px] bg-[#2264F2] dark:bg-[var(--gva-primary)] px-[8px] py-[5px] text-[9px] font-medium leading-none text-white"}," 新增用户 ")],-1)),e("div",xt,[t[1]||(t[1]=M('<div class="grid h-[28px] grid-cols-4 items-center border-b border-[#e3e8ee] dark:border-[var(--gva-border)] bg-[#f7f8fa] dark:bg-[rgba(255,255,255,0.03)] px-[10px]"><span class="h-[5px] w-[24px] bg-[#c1c5cc] dark:bg-[rgba(255,255,255,0.14)]"></span><span class="h-[5px] w-[20px] bg-[#c1c5cc] dark:bg-[rgba(255,255,255,0.14)]"></span><span class="h-[5px] w-[22px] bg-[#c1c5cc] dark:bg-[rgba(255,255,255,0.14)]"></span><span class="h-[5px] w-[20px] bg-[#c1c5cc] dark:bg-[rgba(255,255,255,0.14)]"></span></div>',1)),(s(),n(_,null,A(r,(l,m)=>e("div",{key:l.id,class:y(["grid h-[35px] grid-cols-4 items-center px-[10px]",m<r.length-1?"border-b border-[#e6eaf0] dark:border-[var(--gva-border)]":""])},[...t[0]||(t[0]=[e("span",{class:"h-[5px] w-[25px] bg-[#bfc3ca] dark:bg-[rgba(255,255,255,0.12)]"},null,-1),e("span",{class:"h-[5px] w-[20px] bg-[#bfc3ca] dark:bg-[rgba(255,255,255,0.12)]"}
1,null,-1),e("span",{class:"w-fit rounded-full bg-[#edf4ff] dark:bg-[var(--gva-primary-soft)] px-[5px] py-[3px] text-[8px] font-medium leading-none text-[#2264F2] dark:text-[var(--gva-primary)]"}," 启用 ",-1),e("span",{class:"h-[5px] w-[25px] bg-[#bfc3ca] dark:bg-[rgba(255,255,255,0.12)]"},null,-1)])],2)),64))]),t[3]||(t[3]=e("div",{class:"mt-[8px] flex items-center justify-end gap-[3px] text-[9px] font-medium leading-none text-[#2264F2] dark:text-[var(--gva-primary)]"},[e("span",null,"✓"),e("span",null,"Module generated")],-1))])])])]),t[7]||(t[7]=e("p",{class:"mt-[19px] text-center text-[14px] font-normal leading-[1.5] text-[#777b82] dark:text-[var(--gva-text-muted)]"}," 一句话输入,一个可运行的业务模块 ",-1))]),e("div",dt,[e("div",ct,[t[9]||(t[9]=e("h3",{class:"text-[34px] font-extrabold leading-[1.22] tracking-tight text-[#1c1c1c] dark:text-[var(--gva-text-strong)] min-[860px]:text-[36px]"},[u(" 从 "),e("span",{class:"text-[#2264F2] dark:text-[var(--gva-primary)]"},"一句话需求"),e("br"),u(" 到完整的业务模块 ")],-1)),t[10]||(t[10]=e("p",{class:"mt-6 text-[16px] leading-[1.72] text-[#60656f] dark:text-[var(--gva-text-body)]"},[u(" 描述你需要什么,AI 在 GVA 里完成"),e("br"),u(" 数据模型定义、API 生成、"),e("br"),u(" 路由注册和权限配置。 ")],-1)),t[11]||(t[11]=e("p",{class:"mt-5 text-[16px] leading-[1.72] text-[#60656f] dark:text-[var(--gva-text-body)]"},[u(" 你不需要手动介入每一步,"),e("br"),u(" 只需要审查最终结果。 ")],-1)),e("ul",gt,[(s(),n(_,null,A(i,l=>e("li",{key:l,class:"flex items-center gap-3 text-[15px] font-medium text-[#33373f] dark:text-[var(--gva-text-body)]"},[t[8]||(t[8]=e("span",{class:"h-[7px] w-[7px] shrink-0 rounded-full bg-[#9aa1ac] dark:bg-[rgba(255,255,255,0.28)]"},null,-1)),u(" "+p(l),1)])),64))]),t[12]||(t[12]=e("a",{class:"mt-9 inline-flex w-fit items-center gap-2.5 border-b-2 border-[#2264F2] dark:border-[var(--gva-primary)] pb-[3px] text-[16px] font-medium leading-none text-[#2264F2] dark:text-[var(--gva-primary)] transition-opacity hover:opacity-80",href:"/guide/server/ai-generate.html"},[u(" 查看演示文档 "),e("span",{class:"text-[18px]"},"→")],-1))]),e("div",mt,[t[18]||(t[18]=M('<div class="relative flex h-12 items-center border-b border-[#ececef] dark:border-[var(--gva-border)] bg-[#f7f7f9] dark:bg-[#0c1322] px-5"><div class="flex items-center gap-2"><span class="h-3 w-3 rounded-full bg-[#ff5f56]"></span><span class="h-3 w-3 rounded-full bg-[#febc2e]"></span><span class="h-3 w-3 rounded-full bg-[#28c840]"></span></div><span class="absolute left-1/2 -translate-x-1/2 text-[13px] font-medium text-[#8a8b90] dark:text-[var(--gva-text-muted)]"> GVA AI 开发演示 </span></div>',1)),e("div",vt,[e("div",ut,[t[13]||(t[13]=e("div",{class:"mb-5 text-[15px] font-medium text-[#c9cad1]"}," Claude Code ",-1)),t[14]||(t[14]=e("div",{class:"mb-6 rounded-2xl bg-[#3a3a4f] px-4 py-3 text-[14px] leading-[1.6] text-[#f1f1f4]"}," 帮我创建一个用户管理模块,包含用户列表、新增、编辑和权限分配功能。 ",-1)),e("ul",bt,[(s(),n(_,null,A(o,l=>e("li",{key:l.t,class:y(["flex items-center gap-2.5 text-[14px]",l.done?"text-[#b9bac1]":"text-[#2264F2]"])},[l.done?(s(),n("span",ft," ✓ ")):(s(),n("span",ht)),e("span",{class:y({"font-medium":!l.done})},p(l.t),3)],2)),64))])]),e("div",kt,[t[15]||(t[15]=e("div",{class:"mb-5 flex items-center justify-between"},[e("h4",{class:"text-[18px] font-bold text-[#1c1c1e] dark:text-[var(--gva-text-strong)]"}," 用户管理 "),e("button",{class:"rounded-lg bg-[#2264F2] dark:bg-[var(--gva-primary)] px-3.5 py-2 text-[13px] font-medium text-white transition-colors hover:bg-[#1B52D4] dark:hover:bg-[var(--gva-primary-hover)]"}," + 新增用户 ")],-1)),t[16]||(t[16]=e("div",{class:"grid grid-cols-[44px_1fr_1.3fr_0.9fr_0.7fr] gap-2 border-b border-[#eef0f3] dark:border-[var(--gva-border)] pb-3 text-[13px] text-[#8a8b90] dark:text-[var(--gva-text-muted)]"},[e("span",null,"ID"),e("span",null,"用户名"),e("span",null,"角色"),e("span",null,"状态"),e("span",null,"操作")],-1)),(s(),n(_,null,A(r,(l,m)=>e("div",{key:l.id,class:y(["grid grid-cols-[44px_1fr_1.3fr_0.9fr_0.7fr] items-center gap-2 py-[18px] text-[14px]",m
1<r.length-1?"border-b border-[#f2f3f5] dark:border-[var(--gva-border)]":""])},[e("span",{class:y(l.muted?"text-[#bcbfc7] dark:text-[var(--gva-text-muted)]":"text-[#2a2a2e] dark:text-[var(--gva-text-strong)]")},p(l.id),3),e("span",{class:y(l.muted?"text-[#bcbfc7] dark:text-[var(--gva-text-muted)]":"font-medium text-[#2a2a2e] dark:text-[var(--gva-text-strong)]")},p(l.name),3),e("span",{class:y(l.muted?"text-[#bcbfc7] dark:text-[var(--gva-text-muted)]":"text-[#2a2a2e] dark:text-[var(--gva-text-strong)]")},p(l.role),3),e("span",null,[e("span",{class:y(["inline-block rounded-md border px-2 py-[3px] text-[12px] leading-none",l.active?"border-[#c6efd5] dark:border-[rgba(22,163,74,0.30)] bg-[#ecfdf3] dark:bg-[rgba(22,163,74,0.12)] text-[#16a34a]":"border-[#e6e8eb] dark:border-[var(--gva-border)] bg-[#f4f5f6] dark:bg-[rgba(255,255,255,0.06)] text-[#9aa0aa] dark:text-[var(--gva-text-muted)]"])},p(l.active?"启用":"停用"),3)]),e("a",{href:"#",class:y(["text-[14px]",l.muted?"text-[#bcbfc7] dark:text-[var(--gva-text-muted)]":"text-[#2264F2] dark:text-[var(--gva-primary)] hover:opacity-80"])}," 编辑 ",2)],2)),64))]),t[17]||(t[17]=e("div",{class:"absolute left-[43%] top-1/2 hidden h-12 w-12 -translate-x-1/2 -translate-y-1/2 place-items-center rounded-full border border-[#eceef2] dark:border-[var(--gva-border)] bg-white dark:bg-[#0f1628] shadow-[0_8px_24px_-6px_rgba(20,30,60,0.25)] min-[860px]:grid"},[e("span",{class:"text-[20px] font-semibold text-[#2264F2] dark:text-[var(--gva-primary)]"}," → ")],-1))])])])])]))}},yt={class:"gva-section !bg-white dark:!bg-[var(--gva-bg-base)] !py-[72px] sm:!py-[112px] lg:!py-[128px] xl:!pt-[152px] xl:!pb-[156px]"},_t={class:"gva-container"},At={class:"relative !mx-auto mt-[44px] flex !w-full !max-w-[404px] !list-none flex-col gap-[40px] !p-0 min-[860px]:hidden [&>li:last-child_.apicli\\_\\_mline]:hidden"},$t={class:"relative flex justify-center"},Ft={class:"select-none bg-[linear-gradient(180deg,rgba(34,100,242,0.30)_0%,rgba(34,100,242,0.18)_46%,rgba(34,100,242,0.09)_78%,rgba(34,100,242,0.025)_100%)] bg-clip-text text-[56px] font-semibold leading-[0.92] tracking-[-0.065em] text-transparent"},Ct={class:"min-w-0 pt-[3px]"},It={class:"!m-0 text-[20px] font-semibold leading-[1.3] tracking-[-0.02em] text-[#080A0E] dark:text-[var(--gva-text-strong)]"},Et={class:"!mx-0 !mb-0 mt-[12px] text-[14px] font-normal leading-[1.72] tracking-[0.01em] text-[#747981] dark:text-[var(--gva-text-body)]"},Tt={class:"apicli relative !m-0 !mt-[72px] hidden !list-none grid-cols-1 !p-0 min-[860px]:grid sm:grid-cols-2 sm:gap-x-10 sm:gap-y-16 lg:!mt-[92px] xl:!mt-[110px] xl:grid-cols-4 xl:gap-x-0 [&>li:last-child_.apicli\\_\\_dot]:!hidden"},jt={class:"gva-ghost-num relative z-0 mx-auto block select-none bg-[linear-gradient(180deg,rgba(34,100,242,0.175)_0%,rgba(34,100,242,0.125)_40%,rgba(34,100,242,0.065)_72%,rgba(34,100,242,0.012)_100%)] bg-clip-text text-[104px] font-semibold leading-[0.92] tracking-[-0.065em] text-transparent sm:text-[116px] lg:text-[132px] xl:text-[148px]"},Dt={class:"apicli__title relative z-10 !mx-auto !mb-0 !mt-[-8px] w-fit !text-[20px] !font-semibold !leading-[1.3] !tracking-[-0.025em] !text-[#080A0E] dark:!text-[var(--gva-text-strong)] sm:!text-[22px] lg:!text-[24px] xl:!text-[27px]"},St={class:"apicli__desc !mx-auto !mb-0 !mt-[28px] max-w-[230px] !text-[15px] !font-normal !leading-[2] !tracking-[0.015em] !text-[#747981] dark:!text-[var(--gva-text-body)] sm:!text-[16px] lg:!mt-[32px] lg:!text-[17px] xl:!mt-[36px] xl:max-w-[250px] xl:!text-[18px] xl:!leading-[2.15]"},Mt={__name:"ApiCli",setup(g){const i=[{num:"01",title:"选择 API",mDesc:["从系统已有接口中","勾选需要开放的 API"]},{num:"02",title:"填写描述",mDesc:["命名 Skill,说明用途","系统预填草稿,确认即可"]},{num:"03",title:"生成 ZIP",mDesc:["下载含 API 代码","与 Skill 文件的压缩包"]},{num:"04",title:"Agent 调用",mDesc:["Skill 放入项目","任意 Agent 直接调用"]}];return(o,r)=>(s(),n("section",yt,[e("div",_t,[r[4]||(r[4]=M('<div class="gva-head !mx-auto !max-w-none !text-center max-[859px]:!mx-auto max-[859px]:!w-full max-[859px]:!max-w-[404px]"><h2 class="!m-0 text-[34px] font-bold leading-[1.2] tracking-[-0.04em] text-[#050505] dark:text-[var(--gva-text-strong)] min-[860px]:hidden"> 已有 API,<span class="text-[#2264F2] dark:text-[var(--gva-primary)]">一键生成</span><br>可调用的 Skill </h2><h2 class="gva-h2 !m-0 hidden !text-[38px] !font-bold !leading-[1.18] !tracking-[-0.045em] !text-[#050505] dark:!text-[var(--gva-text-strong)] min-[860px]:block sm:!text-[34px] lg:!text-[40px] xl:!text-[40px]"> 已有 API,<span class="gva-hl !text-[#2264F2] dark:!text-[var(--gva-primary)]">一键生成</span>可调用的 Skill </h2><p class="!mx-auto !mb-0 mt-[16px] !max-w-[360px] text-[14px] font-light leading-[1.7] tracking-[0.015em] text-[#747981] dark:text-[var(--gva-text-body)] min-[860px]:hidden"> 选择 API,填写描述,GVA 自动分析<br> 调用依赖与入参出参,<br> 生成完整 Skill 文件,Agent 开箱即用。 </p><p class="gva-lead !mx-auto !mb-0 hidden !max-w-[1220px] !text-[16
1px] !font-normal !leading-[1.8] !tracking-[0.025em] !text-[#747981] dark:!text-[var(--gva-text-body)] min-[860px]:block sm:!mt-[32px] sm:!text-[14px] lg:!mt-[36px] lg:!text-[16px] xl:!mt-[38px] xl:!text-[16px] xl:!whitespace-nowrap"> 把现成的接口包装成 Agent 能直接理解和调用的 Skill,不必为 AI 重写任何后端逻辑。 </p></div>',1)),e("ol",At,[(s(),n(_,null,A(i,a=>e("li",{key:a.title,class:"relative grid min-w-0 grid-cols-[64px_minmax(0,1fr)] items-start gap-x-[18px]"},[e("div",$t,[e("span",Ft,p(a.num),1),r[0]||(r[0]=e("span",{class:"apicli__mline absolute left-1/2 top-[54px] h-[72px] w-[2px] -translate-x-1/2 bg-[linear-gradient(180deg,rgba(34,100,242,0.32)_0%,rgba(34,100,242,0.06)_100%)]"},null,-1))]),e("div",Ct,[e("h4",It,p(a.title),1),e("p",Et,[u(p(a.mDesc[0]),1),r[1]||(r[1]=e("br",null,null,-1)),u(p(a.mDesc[1]),1)])])])),64))]),e("ol",Tt,[(s(),n(_,null,A(i,(a,t)=>e("li",{key:a.title,class:"apicli__step relative min-w-0 !px-0 text-center"},[e("span",jt,p(a.num),1),r[3]||(r[3]=e("span",{class:"apicli__dot absolute left-[78%] top-[134px] z-0 hidden h-px w-[44%] bg-[linear-gradient(90deg,rgba(34,100,242,0.04)_0%,rgba(34,100,242,0.28)_24%,rgba(34,100,242,0.28)_76%,rgba(34,100,242,0.04)_100%)] xl:block after:absolute after:left-1/2 after:top-1/2 after:h-[10px] after:w-[10px] after:-translate-x-1/2 after:-translate-y-1/2 after:rotate-45 after:bg-[#2264F2] dark:after:bg-[var(--gva-primary)] after:shadow-[0_0_12px_rgba(34,100,242,0.16)] after:content-['']"},null,-1)),e("h4",Dt,p(a.title),1),e("p",St,[u(p(a.mDesc[0]),1),r[2]||(r[2]=e("br",null,null,-1)),u(p(a.mDesc[1]),1)])])),64))])])]))}},Pt={},Bt={class:"gva-section"};function Lt(g,i){return s(),n("section",Bt,[...i[0]||(i[0]=[M('<div class="gva-container"><div class="mb-[38px] text-center max-[859px]:mb-[28px]"><span class="hidden">调用依赖</span><h2 class="text-[clamp(28px,3.6vw,40px)] font-bold leading-[1.18] tracking-[-0.02em] text-[var(--gva-text-strong)] dark:text-[var(--gva-text-strong)] max-[859px]:text-[34px] max-[859px]:leading-[1.22]"> 调用顺序<span class="text-[var(--gva-primary)]">自动编排</span></h2><p class="mx-auto mt-4 max-w-[820px] text-[clamp(15px,1.5vw,18px)] leading-[2] text-[var(--gva-text-body)] max-[859px]:mt-[12px] max-[859px]:text-[14px] max-[859px]:leading-[1.65]"> 从 API 选择到 Skill 生成,GVA 全程处理。 </p></div><div class="grid grid-cols-1 items-stretch gap-0 min-[860px]:grid-cols-[minmax(0,1fr)_116px_minmax(0,1fr)]"><div class="flex min-w-0 flex-col"><div class="flex h-full min-h-0 flex-col overflow-hidden rounded-[13px] border border-[#F6C9C5] dark:border-[rgba(239,81,72,0.30)] bg-[#FEF4F3] dark:bg-[rgba(239,81,72,0.08)]"><div class="flex h-[48px] shrink-0 items-center gap-[10px] border-b border-[#F0D2CF] dark:border-[rgba(239,81,72,0.20)] bg-[#FEF4F3] dark:bg-[rgba(239,81,72,0.08)] px-[21px] max-[859px]:h-[42px] max-[859px]:px-[16px]"><span class="h-[11px] w-[11px] shrink-0 rounded-full bg-[#EF5148]"></span><span class="text-[13px] font-semibold tracking-[0.01em] text-[#F05A51] max-[859px]:text-[14px]"> 未使用 GVA </span></div><div class="min-h-[276px] flex-1 bg-[radial-gradient(circle_at_50%_0%,#252525_0%,#1E1E1E_42%,#191919_100%)] px-[22px] py-[12px] font-mono text-[13.5px] leading-[1.55] tracking-[0.005em] text-[#D0D0D0] max-[859px]:min-h-0 max-[859px]:px-[17px] max-[859px]:py-[15px] max-[859px]:text-[12px] max-[859px]:leading-[1.72]"><p class="whitespace-pre text-[#858585]"># 尝试调用 createOrder</p><p class="whitespace-pre text-[#D6D6D6]"> $ agent.call(&#39;createOrder&#39;, { </p><p class="whitespace-pre text-[#D6D6D6]"> productId: &#39;P001&#39;, </p><p class="whitespace-pre"><span class="text-[#EB584C]">userId: ???</span> <span class="text-[#DF5148]"># 从哪里来?</span></p><p class="whitespace-pre text-[#D6D6D6]">})</p><div class="h-[0.75em]"></div><p class="whitespace-pre text-[#ED5C4F]"> × Error: Missing required param &#39;userId&#39; </p><p class="whitespace-pre pl-[2.2em] text-[#ED5C4F]"> getUserList must be called first </p><p class="whitespace-pre pl-[2.2em] text-[#ED5C4F]">
1 but no dependency defined </p><div class="h-[0.6em]"></div><p class="whitespace-pre text-[#8C8C8C]"> # 调用顺序未知,执行失败 </p></div><div class="flex h-[52px] shrink-0 items-center justify-center border-t border-[#F0D2CF] dark:border-[rgba(239,81,72,0.20)] bg-[#FEF4F3] dark:bg-[rgba(239,81,72,0.08)] text-[14px] font-semibold text-[#F05A51] max-[859px]:h-[40px]"> 调用失败 </div></div></div><div class="flex h-[54px] items-center justify-center max-[859px]:my-[6px] min-[860px]:h-auto"><span class="block h-px w-[76px] bg-[linear-gradient(90deg,rgba(190,190,190,0)_0%,rgba(190,190,190,0.68)_24%,rgba(190,190,190,0.68)_76%,rgba(190,190,190,0)_100%)] max-[859px]:rotate-90"></span></div><div class="flex min-w-0 flex-col"><div class="flex h-full min-h-0 flex-col overflow-hidden rounded-[13px] border border-[#BFEAD1] dark:border-[rgba(53,185,102,0.30)] bg-[#F4FCF7] dark:bg-[rgba(53,185,102,0.08)]"><div class="flex h-[48px] shrink-0 items-center gap-[10px] border-b border-[#CFE9DA] dark:border-[rgba(53,185,102,0.20)] bg-[#F4FCF7] dark:bg-[rgba(53,185,102,0.08)] px-[21px] max-[859px]:h-[42px] max-[859px]:px-[16px]"><span class="h-[11px] w-[11px] shrink-0 rounded-full bg-[#35B966]"></span><span class="text-[13px] font-semibold tracking-[0.01em] text-[#39B767] max-[859px]:text-[14px]"> 使用 GVA CLI </span></div><div class="min-h-[276px] flex-1 bg-[radial-gradient(circle_at_50%_0%,#252525_0%,#1E1E1E_42%,#191919_100%)] px-[22px] py-[12px] font-mono text-[13.5px] leading-[1.55] tracking-[0.005em] text-[#D0D0D0] max-[859px]:min-h-0 max-[859px]:px-[17px] max-[859px]:py-[15px] max-[859px]:text-[12px] max-[859px]:leading-[1.72]"><p class="whitespace-pre text-[#39B54A]"> # GVA 自动生成 Skill 调用链 </p><p class="whitespace-pre text-[#D6D6D6]"> Step 1 → getUserList() </p><p class="whitespace-pre text-[#39B54A]"> ✓ userId: &#39;U001&#39; ← 上游步骤产出 </p><div class="h-[0.75em]"></div><p class="whitespace-pre text-[#D6D6D6]"> Step 2 → createOrder({ </p><p class="whitespace-pre text-[#D6D6D6]"> productId: &#39;P001&#39;, </p><p class="whitespace-pre text-[#39B54A]"> userId: &#39;U001&#39; ← 按编排引用 getUserList.userId </p><p class="whitespace-pre text-[#D6D6D6]">})</p><div class="h-[0.6em]"></div><p class="whitespace-pre text-[#39B54A]"> ✓ Order created successfully </p><p class="whitespace-pre text-[#39B54A]"> # 步骤顺序由编排图自动推导 </p></div><div class="flex h-[52px] shrink-0 items-center justify-center border-t border-[#CFE9DA] dark:border-[rgba(53,185,102,0.20)] bg-[#F4FCF7] dark:bg-[rgba(53,185,102,0.08)] text-[14px] font-semibold text-[#34B765] max-[859px]:h-[40px]"> 调用成功 </div></div></div></div><div class="mt-[36px] text-center max-[859px]:mt-[22px]"><a class="group inline-flex items-center gap-[9px] border-b-2 border-[var(--gva-primary)] pb-[5px] text-[15px] font-semibold leading-none text-[var(--gva-primary)] transition-opacity hover:opacity-80 max-[859px]:text-[14px]" href="/guide/server/ai-scenario.html"><span>了解 Skill 生成机制</span><span class="text-[17px] leading-none transition-transform group-hover:translate-x-[3px] max-[859px]:text-[14px]"> → </span></a></div></div>',1)])])}const Gt=q(Pt,[["render",Lt]]),Vt={class:"gva-section !bg-[#F7F7F7] dark:!bg-[var(--gva-bg-alt)] !py-[40px] sm:!py-[48px] lg:!py-[56px] xl:!py-[64px]"},zt={class:"gva-container"},qt={class:"mt-[22px] mx-auto max-w-[442px] min-[860px]:hidden"},Nt={class:"rounded-[16px] border border-[#E6E7EA] dark:border-[var(--gva-border)] bg-white dark:bg-[var(--gva-bg-dark-soft)] overflow-hidden"},Rt={class:"flex items-center gap-[9px] min-w-0"},Ot={class:"min-w-0"},Ut={class:"block font-semibold text-[#080A0E] dark:text-[var(--gva-text-strong)] text-[13.5px] leading-[1.25] truncate"},Xt={key:0,viewBox:"0 0 20 20",class:"inline-block w-[15px] h-[15px] text-[#16A34A]"},Ht={key:1,viewBox:"0 0 20 20",class:"inline-block w-[15px] h-[15px] text-[#DC2626]"},Kt={key:2,class:"block text-[10px] text-[#9499A3] dark:text-[var(--gva-text-muted)] mt-[1px]"},Yt={class:"mt-[26px] hidden min-[860px]:block"},Zt={class:"max-w-[940px] mx-auto rounded-[18px] border border-[#
1E6E7EA] dark:border-[var(--gva-border)] bg-white dark:bg-[var(--gva-bg-dark-soft)] overflow-hidden"},Jt={class:"flex items-center gap-[11px] min-w-0"},Wt={class:"min-w-0"},Qt={class:"block font-semibold text-[#080A0E] dark:text-[var(--gva-text-strong)] text-[14px] leading-[1.25]"},ea={class:"flex items-center gap-[8px] flex-wrap"},ta={key:0,class:"text-[12px] text-[#9499A3] dark:text-[var(--gva-text-muted)] whitespace-nowrap"},aa={key:0,viewBox:"0 0 20 20",class:"inline-block w-[17px] h-[17px] text-[#16A34A]"},ra={key:1,viewBox:"0 0 20 20",class:"inline-block w-[17px] h-[17px] text-[#DC2626]"},sa={key:2,class:"block text-[11.5px] text-[#9499A3] dark:text-[var(--gva-text-muted)] mt-[2px]"},na={class:"mt-[22px] mx-auto max-w-[442px] min-[860px]:hidden"},oa={class:"flex flex-col gap-[14px]"},la={class:"flex items-center gap-[8px] font-semibold text-[#050505] dark:text-[var(--gva-text-strong)] text-[14.5px]"},ia={class:"mt-[5px] text-[13px] font-light leading-[1.6] text-[#747981] dark:text-[var(--gva-text-body)]"},pa={class:"mt-[26px] hidden min-[860px]:grid max-w-[940px] mx-auto grid-cols-3 gap-x-[32px]"},xa={class:"flex items-center gap-[8px] font-semibold text-[#050505] dark:text-[var(--gva-text-strong)] text-[15px]"},da={class:"mt-[7px] text-[13.5px] leading-[1.65] text-[#747981] dark:text-[var(--gva-text-body)]"},ca={__name:"Permissions",setup(g){const i=[{name:"管理员",sub:"人类用户",subBlue:!1,icon:"user",iconBg:"#E5EBFD",iconColor:"#2264F2",badge:"admin",badgeBlue:!1,badgeNote:"",perms:[!0,!0,!0],permsMobile:[!0,!0],permNote:"",permNoteMobile:"",highlight:!1},{name:"普通成员",sub:"人类用户",subBlue:!1,icon:"user",iconBg:"#EFEFF1",iconColor:"#71757D",badge:"member",badgeBlue:!1,badgeNote:"",perms:[!0,!1,!1],permsMobile:[!0,!1],permNote:"",permNoteMobile:"",highlight:!1},{name:"AI Agent",sub:"自动调用",subBlue:!0,icon:"bolt",iconBg:"#2264F2",iconColor:"#FFFFFF",badge:"member",badgeBlue:!0,badgeNote:"与普通成员相同",perms:[!0,!1,!1],permsMobile:[!0,!1],permNote:"与成员相同",permNoteMobile:"同成员",highlight:!0}],o=[{title:"现有配置直接生效",desc:["无需为 Agent 重新设置权限,","已有角色和规则自动适用。"],descMobile:"已有角色和规则自动适用于 Agent,无需重新设置。"},{title:"权限精确到字段级别",desc:["Agent 只能读写被授权的字段,","越权操作直接拒绝。"],descMobile:"Agent 只能读写被授权的字段,越权操作直接拒绝。"},{title:"操作全程可审计",desc:["每次 Agent 调用均有记录,","可追溯每一次数据变更。"],descMobile:"每次 Agent 调用均有记录,可追溯每一次数据变更。"}];return(r,a)=>(s(),n("section",Vt,[e("div",zt,[a[15]||(a[15]=M('<div class="text-center max-w-[640px] mx-auto max-[859px]:max-w-[404px]"><h2 class="!m-0 mt-[10px] text-[28px] leading-[1.22] font-bold tracking-[-0.02em] text-[#050505] dark:text-[var(--gva-text-strong)] min-[860px]:hidden"> Agent 与人<br>遵守<span class="text-[#2264F2] dark:text-[var(--gva-primary)]">同一套规则</span></h2><h2 class="!m-0 mt-[10px] hidden text-[30px] leading-[1.18] font-bold tracking-[-0.025em] text-[#050505] dark:text-[var(--gva-text-strong)] min-[860px]:block sm:text-[33px] lg:text-[37px] xl:text-[40px]"> Agent 与人,遵守<span class="text-[#2264F2] dark:text-[var(--gva-primary)]">同一套规则</span></h2><p class="mt-[10px] text-[14px] font-light leading-[1.7] text-[#747981] dark:text-[var(--gva-text-body)] min-[860px]:hidden"> 无需为 Agent 单独配置权限,<br>现有角色与权限设置直接生效。 </p><p class="mt-[10px] hidden text-[14.5px] leading-[1.7] text-[#747981] dark:text-[var(--gva-text-body)] min-[860px]:block sm:text-[15px]"> 无需为 Agent 单独配置权限,<br>现有角色与权限设置直接生效。 </p></div>',1)),e("div",qt,[e("div",Nt,[a[4]||(a[4]=M('<div class="flex items-center justify-between px-[16px] py-[11px] border-b border-[#E6E7EA] dark:border-[var(--gva-border)]"><span class="font-bold text-[#080A0E] dark:text-[var(--gva-text-strong)] text-[14px]">GVA 权限配置</span><span class="inline-flex items-center gap-[6px] text-[11.5px] font-semibold text-[#16A34A] bg-[rgba(22,163,74,0.1)] px-[10px] py-[4px] rounded-full"><i class="w-[6px] h-[6px] rounded-full bg-[#16A34A] not-italic"></i>统一管控中 </span></div><div class="grid grid-cols-[1.7fr_1fr_1fr] items-center px-[16px] py-[8px] border-b border-[#
1E6E7EA] dark:border-[var(--gva-border)] bg-[#FAFAFB] dark:bg-[rgba(255,255,255,0.03)] text-[12px] text-[#9499A3] dark:text-[var(--gva-text-muted)] font-semibold"><span>身份</span><span class="text-center">读取</span><span class="text-center">写入</span></div>',2)),(s(),n(_,null,A(i,t=>e("div",{key:t.name,class:y(["grid grid-cols-[1.7fr_1fr_1fr] items-center px-[16px] py-[9px] border-b border-[#E6E7EA] dark:border-[var(--gva-border)] last:border-b-0",t.highlight?"bg-[#F2F6FE] dark:bg-[rgba(79,134,255,0.10)]":""])},[e("span",Rt,[e("span",{class:"grid place-items-center w-[30px] h-[30px] rounded-full shrink-0",style:B({background:t.iconBg})},[t.icon==="user"?(s(),n("svg",{key:0,viewBox:"0 0 24 24",class:"w-[14px] h-[14px]",style:B({color:t.iconColor})},[...a[0]||(a[0]=[e("circle",{cx:"12",cy:"8",r:"3.6",fill:"currentColor"},null,-1),e("path",{d:"M4.5 20c0-4.1 3.4-7.4 7.5-7.4s7.5 3.3 7.5 7.4",fill:"currentColor"},null,-1)])],4)):(s(),n("svg",{key:1,viewBox:"0 0 24 24",class:"w-[13px] h-[13px]",style:B({color:t.iconColor})},[...a[1]||(a[1]=[e("path",{d:"M13 2 4.5 13.6h5.3L9 22l9.5-12.4h-5.3L13 2z",fill:"currentColor"},null,-1)])],4))],4),e("span",Ot,[e("span",Ut,p(t.name),1),e("span",{class:y(["block text-[11.5px] leading-[1.4]",t.subBlue?"text-[#2264F2] dark:text-[var(--gva-primary)] font-medium":"text-[#9499A3] dark:text-[var(--gva-text-muted)]"])},p(t.sub),3)])]),(s(!0),n(_,null,A(t.permsMobile,(l,m)=>(s(),n("span",{key:m,class:"text-center"},[l?(s(),n("svg",Xt,[...a[2]||(a[2]=[e("path",{d:"M4 10.2l3.6 3.6L16 5",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])):(s(),n("svg",Ht,[...a[3]||(a[3]=[e("path",{d:"M5 5l10 10M15 5L5 15",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},null,-1)])])),t.permNoteMobile?(s(),n("span",Kt,p(t.permNoteMobile),1)):G("",!0)]))),128))],2)),64)),a[5]||(a[5]=e("div",{class:"px-[16px] py-[10px] text-center text-[12px] text-[#9499A3] dark:text-[var(--gva-text-muted)] border-t border-[#E6E7EA] dark:border-[var(--gva-border)]"}," Agent 权限由 GVA 统一管控,无需额外配置 ",-1))])]),e("div",Yt,[e("div",Zt,[a[10]||(a[10]=M('<div class="flex items-center justify-between px-[24px] py-[13px] border-b border-[#E6E7EA] dark:border-[var(--gva-border)]"><span class="font-bold text-[#080A0E] dark:text-[var(--gva-text-strong)] text-[15px]">GVA 权限配置</span><span class="inline-flex items-center gap-[7px] text-[12.5px] font-semibold text-[#16A34A] bg-[rgba(22,163,74,0.1)] px-[12px] py-[5px] rounded-full"><i class="w-[7px] h-[7px] rounded-full bg-[#16A34A] not-italic"></i>统一管控中 </span></div><div class="grid grid-cols-[1.6fr_0.85fr_1fr_1fr_1fr] items-center px-[24px] py-[9px] border-b border-[#E6E7EA] dark:border-[var(--gva-border)] bg-[#FAFAFB] dark:bg-[rgba(255,255,255,0.03)] text-[12.5px] text-[#9499A3] dark:text-[var(--gva-text-muted)] font-semibold"><span>身份</span><span>角色</span><span class="text-center">数据读取</span><span class="text-center">数据写入</span><span class="text-center">敏感操作</span></div>',2)),(s(),n(_,null,A(i,t=>e("div",{key:t.name,class:y(["grid grid-cols-[1.6fr_0.85fr_1fr_1fr_1fr] items-center px-[24px] py-[11px] border-b border-[#E6E7EA] dark:border-[var(--gva-border)] last:border-b-0",t.highlight?"bg-[#F2F6FE] dark:bg-[rgba(79,134,255,0.10)]":""])},[e("span",Jt,[e("span",{class:"grid place-items-center w-[32px] h-[32px] rounded-full shrink-0",style:B({background:t.iconBg})},[t.icon==="user"?(s(),n("svg",{key:0,viewBox:"0 0 24 24",class:"w-[15px] h-[15px]",style:B({color:t.iconColor})},[...a[6]||(a[6]=[e("circle",{cx:"12",cy:"8",r:"3.6",fill:"currentColor"},null,-1),e("path",{d:"M4.5 20c0-4.1 3.4-7.4 7.5-7.4s7.5 3.3 7.5 7.4",fill:"currentColor"},null,-1)])],4)):(s(),n("svg",{key:1,viewBox:"0 0 24 24",class:"w-[14px] h-[14px]",style:B({color:t.iconColor})},[...a[7]||(a[7]=[e("path",{d:"M13 2 4.5 13.6h5.3L9 22l9.5-12.4h-5.3L13 2z",fill:"currentColor"},null,-1)])],4))],4),e("span",Wt,[e("span",Qt,p(t.name),1),e("span",{class:y(["block text-[12px] leading-[1.4]",t.subBlue?"text-[#2264F2] dark:text-[var(--gva-primary)] font-medium":"text-[#9499A3] dark:text-[var(--gva-text-muted)]"])},p(t.sub),3)])]),e("span",ea,[e("span",{class:y(["inline-flex items-center px-[11px] py-[3px] rounded-full text-[12.5px] font-semibold",t.badgeBlue?"bg-[#E5EBFD] dark:bg-[var(--gva-primary-soft)] text-[#2264F2] dark:text-[var(--gva-primary)]":"bg-[#F3F4F6] dark:bg-[rgba(255,255,255,0.06)] text-[#71757D] dark:text-[var(--gva-text-muted)]"])},p(t.badge),3),t.badgeNote?(s(),n("span",ta,p(t.badgeNote),1)):G("",!0)]),(s(!0),n(_,null,A(t.perms,(l,m)=>(s(),n("span",{key:m,class:"text-center"},[l?(s(),n("svg",aa,[...a[8]||(a[8]=[e("path",{d:"M4 10.2l3.6 3.6L16 5",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])])):(s(),n("svg",ra,[...a[9]||(a[9]=[e("path",{d:"M5 5l10 10M15 5L5 15",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},null,-1)])])),t.permNote?(s(),n("span",sa,p(t.permNote),1)):G("",!0)]))),128))],2)),64)),a[11]||(a[11]=e("div",{class:"flex items-center justify-between px-[24px] py-[12px] text-[13.5px] text-[#9499A3] dark:text-[var(--gva-text-muted)] border-t border-[#
1E6E7EA] dark:border-[var(--gva-border)]"},[e("span",null,"Agent 的权限由 GVA 统一管控,无需额外配置")],-1))])]),e("div",na,[e("ul",oa,[(s(),n(_,null,A(o,t=>e("li",{key:t.title},[e("span",la,[a[12]||(a[12]=e("i",{class:"w-[6px] h-[6px] rounded-full bg-[#2264F2] dark:bg-[var(--gva-primary)] not-italic shrink-0"},null,-1)),u(p(t.title),1)]),e("p",ia,p(t.descMobile),1)])),64))])]),e("div",pa,[(s(),n(_,null,A(o,t=>e("div",{key:t.title},[e("span",xa,[a[13]||(a[13]=e("i",{class:"w-[7px] h-[7px] rounded-full bg-[#2264F2] dark:bg-[var(--gva-primary)] not-italic shrink-0"},null,-1)),u(p(t.title),1)]),e("p",da,[u(p(t.desc[0]),1),a[14]||(a[14]=e("br",null,null,-1)),u(p(t.desc[1]),1)])])),64))])])]))}},ga={class:"gva-section bg-white dark:bg-[var(--gva-bg-base)]"},ma={class:"gva-container"},va={class:"grid grid-cols-1 gap-6 min-[860px]:grid-cols-3 min-[1200px]:gap-8"},ua=["onClick"],ba={class:"mb-2 block select-none bg-[linear-gradient(180deg,#CEDBFF_0%,#DEE7FF_58%,#EDF2FF_100%)] bg-clip-text text-[clamp(40px,5vw,64px)] font-extrabold leading-none tracking-[-0.02em] text-transparent max-[859px]:text-[52px]"},fa={class:"m-0 mb-2.5 text-[19px] font-bold leading-[1.35] tracking-[-0.015em] text-[var(--gva-text-strong)] max-[859px]:text-[20px]"},ha={class:"m-0 text-[14px] font-normal leading-[1.6] text-[var(--gva-text-body)] max-[859px]:text-[14px] max-[859px]:leading-[1.7]"},ka={class:"w-full max-w-[820px] rounded-[var(--gva-radius)] border border-[var(--gva-border)] bg-[var(--gva-bg-base)] p-6 shadow-[var(--gva-shadow-sm)] max-[859px]:rounded-[14px] max-[859px]:p-4 min-[860px]:max-w-[clamp(880px,56vw,1600px)] min-[860px]:p-[clamp(24px,2vw,40px)]"},wa={class:"mb-[22px] mt-[18px] flex gap-1.5"},ya={class:"relative mt-1 grid aspect-[35/19] w-full place-items-center overflow-hidden rounded-[10px] border border-[var(--gva-border)] bg-[var(--gva-bg-alt)]"},_a=["src","alt"],Aa={key:1,class:"absolute inset-0 flex flex-col"},$a={class:"flex min-h-0 flex-1"},Fa={class:"flex flex-1 flex-col items-center justify-center gap-[10px] bg-[#1b1e25] text-white/65"},Ca={class:"text-[36px] leading-none"},Ia={class:"text-[13px] font-medium"},Ea=["aria-label"],Ta="https://qmplusimg.henrongyi.top/website/arr-right.png",ja=13,Da=10,Q=4.5,Sa={__name:"CoreFeatures",setup(g){const i=[{num:"01",title:"AI 驱动开发",desc:"用 Claude Code、Cursor、Codex 等主流 AI Coding Agent 快速搭建完整系统。配置 MCP 即可开工,Skills 一键下载安装,AI 协作规范随仓库预置,无需手动配置任何规范文件。",steps:[{icon:"🧰",t:"定义工具",d:"填写名称与参数,即可生成工具骨架代码。",img:"https://qmplusimg.henrongyi.top/website/demo10.png",ratio:"2926 / 1408",hotspot:{x:30,y:21,side:"right"}},{icon:"🔌",t:"接入客户端",d:"服务启动后,配置可直接复制到 7 种 AI 客户端。",img:"https://qmplusimg.henrongyi.top/website/demo11.png",ratio:"1702 / 924",hotspot:{x:23,y:44,side:"right"}},{icon:"🧩",t:"工具开箱可用",d:"内置 17 个工具,均可在线测试调用。",img:"https://qmplusimg.henrongyi.top/website/demo12.png",ratio:"2940 / 1596",hotspot:{x:42,y:19,side:"right"}},{icon:"🏗️",t:"构建业务 MCP",d:"把系统已有的业务 API 组装成自定义 MCP。",img:"https://qmplusimg.henrongyi.top/website/demo14.png",ratio:"2940 / 1596",hotspot:{x:23,y:28,side:"right"}},{icon:"✅",t:"绑定 API",d:"勾选需要开放的接口,保存后即时生效。",img:"https://qmplusimg.henrongyi.top/website/demo15.png",ratio:"2940 / 1596",hotspot:{x:61,y:50,side:"left"}}]},{num:"02",title:"API 一键 CLI 化",desc:"在 GVA 中选择已有 API,填写 Skill 名称,系统自动解析入参与出参,调用链路可视化编排,一键打包成完整 Skill,任何 AI Agent 导入即用。",steps:[{icon:"🖥️",t:"新建 CLI",d:"新建 CLI,定义名称、主命令与版本。",img:"https://qmplusimg.henrongyi.top/website/demo20.png",ratio:"2940 / 1596",hotspot:{x:22.5,y:28,side:"right"}},{icon:"✅",t:"选择 API",d:"从项目里勾选要开放给 AI 的接口。",img:"https://qmplusimg.henrongyi.top/website/demo21.png",ratio:"2940 / 1596",hotspot:{x:61,y:50,side:"left"}},{icon:"📝",t:"命令定义",d:"参数与返回自动解析,说明可自行调整。",img:"https://qmplusimg.henrongyi.top/website/demo22.png",ratio:"2940 / 1596",hotspot:{x:91.5,y:24,side:"left"}},{icon:"🔀",t:"场景编排",d:"拖拽节点连线,编排多命令的调用链路。",img:"https://qmplusimg.henrongyi.top/website/demo23.png",ratio:"2940 / 1596",hotspot:{x:53.5,y:61,side:"left"}}]},{num:"03",title:"权限统一管控",desc:"Agent 调用仍经过 GVA 内部权限校验,现有角色与权限配置直接生效。无需重新设置,现有系统低成本接入 AI。",steps:[{icon:"👥",t:"定义角色",d:"为 AI Agent 单独建ç«
1‹è§’色,权限边界独立。",img:"https://qmplusimg.henrongyi.top/website/demo30.png",ratio:"2940 / 1596",hotspot:{x:22.75,y:24.4,side:"right"}},{icon:"🎚️",t:"配置能力",d:"查看、导入、批量、删除逐项授权。",img:"https://qmplusimg.henrongyi.top/website/demo31.png",ratio:"2940 / 1596",hotspot:{x:50,y:23.3,side:"right"}},{icon:"🗂️",t:"菜单授权",d:"菜单按角色分配,控制页面可见范围。",img:"https://qmplusimg.henrongyi.top/website/demo32.png",ratio:"2940 / 1596",hotspot:{x:86.85,y:36.1,side:"left"}},{icon:"🙋",t:"分配用户",d:"用户可同时归属多个角色,随时调整。",img:"https://qmplusimg.henrongyi.top/website/demo33.png",ratio:"2940 / 1596",hotspot:{x:76.35,y:58.4,side:"left"}},{icon:"🏢",t:"部门与数据",d:"维护部门与成员归属,数据权限据此划分。",img:"https://qmplusimg.henrongyi.top/website/demo34.png",ratio:"2940 / 1596",hotspot:{x:24.3,y:32.8,side:"right"}}]}],o=F(null),r=F(0),a=F(!1);let t=null;const l=()=>{t&&(clearTimeout(t),t=null)},m=()=>{a.value=!1,l(),t=setTimeout(()=>{a.value=!0},2e3)},c=R(()=>o.value===null?null:i[o.value].steps[r.value]),h=R(()=>{const b=c.value;if(!b)return{};const d=`${ja+Da}px`;return b.hotspot.side==="left"?{right:`calc(${100-b.hotspot.x}% + ${d})`,top:`${b.hotspot.y}%`,transform:"translateY(-50%)"}:{left:`calc(${b.hotspot.x}% + ${d})`,top:`${b.hotspot.y}%`,transform:"translateY(-50%)"}}),E=R(()=>{const b=c.value;return b?b.hotspot.side==="left"?{right:`-${Q}px`,top:`calc(50% - ${Q}px)`}:{left:`-${Q}px`,top:`calc(50% - ${Q}px)`}:{}});oe(r,()=>{o.value!==null&&m()});const j=b=>{o.value=b,r.value=0,m()},T=()=>{o.value=null,l()},S=()=>{o.value!==null&&(r.value<i[o.value].steps.length-1?r.value++:T())},v=()=>{r.value>0&&r.value--},f=b=>{o.value!==null&&(b.key==="Escape"?T():b.key==="ArrowRight"?S():b.key==="ArrowLeft"&&v())};return K(()=>{window.addEventListener("keydown",f)}),ne(()=>{window.removeEventListener("keydown",f),l()}),(b,d)=>(s(),n("section",ga,[e("div",ma,[d[2]||(d[2]=M('<div class="mb-14 text-center max-[859px]:mb-10" data-v-3f6e18a1><span class="hidden" data-v-3f6e18a1>核心功能</span><h2 class="m-0 text-[clamp(28px,3.6vw,40px)] font-bold leading-[1.18] tracking-[-0.02em] text-[var(--gva-text-strong)] dark:text-[var(--gva-text-strong)] max-[859px]:text-[34px] max-[859px]:leading-[1.22]" data-v-3f6e18a1><span class="block" data-v-3f6e18a1>亲自试一试:</span><span class="block" data-v-3f6e18a1> 用 <span class="text-[var(--gva-primary)]" data-v-3f6e18a1>AI 驱动</span>你的 GVA 系统 </span></h2><p class="mx-auto mb-0 mt-4 max-w-[820px] text-[clamp(15px,1.5vw,18px)] leading-[2] text-[var(--gva-text-body)] max-[859px]:mt-3 max-[859px]:text-[14px] max-[859px]:leading-[1.65]" data-v-3f6e18a1> 选择你的方式——AI 搭建、API CLI 化、或统一管控权限 </p></div>',1)),e("div",va,[(s(),n(_,null,A(i,(C,D)=>e("button",{key:C.title,type:"button",class:"group relative flex h-full w-full flex-col overflow-hidden rounded-[12px] borderd bg-white dark:bg-[var(--gva-bg-dark-soft)] p-7 text-left [font:inherit] transition-[transform,border-color] duration-200 hover:-translate-y-[2px] hover:border-[#B7C2D2] dark:hover:border-[var(--gva-border-strong)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#2264F2]/25 min-[860px]:min-h-[310px] max-[859px]:min-h-0 max-[859px]:rounded-[12px] max-[859px]:p-6",onClick:L=>j(D)},[e("span",ba,p(C.num),1),e("h3",fa,p(C.title),1),e("p",ha,p(C.desc),1),e("span",{class:"relative mt-auto inline-flex w-fit items-center gap-2.5 pb-[13px] pt-[18px] text-[16px] font-medium leading-none text-[#2264F2] dark:text-[var(--gva-primary)] after:absolute after:bottom-0 after:left-0 after:h-0.5 after:w-full after:bg-[#2264F2] dark:after:bg-[var(--gva-primary)] after:content-[''] max-[859px]:text-[17px]"},[d[1]||(d[1]=u(" 试一下 ",-1)),e("img",{class:"block h-3.5 w-3.5 object-contain",src:Ta,alt:"","aria-hidden":"true",loading:"lazy"})])],8,ua)),64))])]),(s(),pe(xe,{to:"body"},[$(se,{name:"cf-modal"},{default:O(()=>[o.value!==null?(s(),n("div",{key:0,class:"fixed inset-0 z-[9999] grid place-items-center bg-[rgba(6,8,15,0.6)] p-6 backdrop-blur-[6px]",onClick:z(T,["self"])},[e("div",ka,[e("div",{class:"flex justify-end"},[e("button",{type:"button",class:"grid h-[30px] w-[30px] shrink-0 cursor-pointer place-items-center rounded-[8px] border-0 bg-[var(--gva-primary-soft)] text-[14px] text-[var(--gva-text-body)]","aria-label":"关闭",onClick:T}," ✕ ")]),e("div",wa,[(s(!0),n(_,null,A(i[o.value].steps,(C,D)=>(s(),n("span",{key:D,class:y(["h-1 flex-1 rounded-full transition-colors duration-[250ms]",D<=r.value?"bg-[var(--gva-primary)]":"bg-[var(--gva-border-strong)]"])},null,2))),128))]),e("div",ya,[e("div",{class:"relative max-h-full w-full",style:B({aspectRatio:c.value.ratio||"35 / 19"})},[c.value.img?(s(),n("img",{key:0,class:"absolute inset-0 h-full w-full object-contain",src:c.value.img,alt:c.value.t,loading:"lazy",draggable:"false"},null,8,_a)):(s(),n("div",Aa,[d[4]||(d[4]=e("div",{class:"flex h-[34px] shrink-0 items-center gap-[6px] border-b border-white/10 px-3"},[e("span",{class:"h-[9px] w-[9px] rounded-full bg-white/15"}),e("span",{class:"h-[9px] w-[9px] rounded-full bg-white/15"}),e("span",{class:"h-[9px] w-[9px] rounded-full bg-white/15"})],-1)),e("div",$a,[d[3]||(d[3]=e("div",{class:"hidden w-[64px] shrink-0 border-r border-white/10 bg-white/[0.03] sm:block"},null,-1)),e("div",Fa,[e("span",Ca,p(c.value.icon),1),e("span",Ia,p(c.value.t),1)])])])),e("button",{type:"button",class:"absolute z-10 grid h-[26px] w-[26px] -translate-x-1/2 -translate-y-1/2 cursor-pointer place-items-center border-0 bg-transparent p-0",style:B({left:c.value.hotspot.x+"%",top:c.value.hotspot.y+"%"}),"aria-label":r.value<i[o.value].steps.length-1?"下一步":"完成",onMouseenter:d[0]||(d[0]=C=>a.value=!0),onClick:S},[...d[5]||(d[5]=[e("span",{class:"cf-pulse-ring pointer-events-none absolute h-[26px] w-[26px] rounded-full border border-[var(--gva-primary)]"},null,-1),e("span",{class:"relative grid h-[26px] w-[26px] place-items-center rounded-full bg-[var(--gva-primary)] shadow-[0_2px_8px_rgba(0,0,0,0.35)]"},[e("span",{class:"h-[11px] w-[11px] rounded-full border-2 border-[#0b
10e16]"})],-1)])],44,Ea),$(se,{name:"cf-tip"},{default:O(()=>[a.value?(s(),n("div",{key:0,class:"absolute z-10 w-[190px] rounded-[10px] bg-[var(--gva-primary)] px-[14px] py-[12px] text-[13px] font-medium leading-[1.5] text-white shadow-[0_10px_24px_-8px_rgba(0,0,0,0.45)]",style:B(h.value)},[u(p(c.value.d)+" ",1),e("span",{class:"absolute h-[9px] w-[9px] rotate-45 bg-[var(--gva-primary)]",style:B(E.value)},null,4)],4)):G("",!0)]),_:1})],4)])])])):G("",!0)]),_:1})]))]))}},Ma=q(Sa,[["__scopeId","data-v-3f6e18a1"]]),Pa={},Ba={class:"gva-section bg-white dark:bg-[var(--gva-bg-base)]","aria-labelledby":"licensed-edition-title"};function La(g,i){return s(),n("section",Ba,[...i[0]||(i[0]=[M('<div class="gva-container"><div class="mb-14 text-center max-[859px]:mb-10"><p class="m-0 text-[14px] font-semibold leading-none text-[var(--gva-primary)]"> GVA 授权版 </p><h2 id="licensed-edition-title" class="m-0 mt-4 text-[clamp(28px,3.6vw,40px)] font-bold leading-[1.18] tracking-[-0.02em] text-[var(--gva-text-strong)] max-[859px]:leading-[1.22]"> 从开发底座,升级为可交付的业务系统 </h2><p class="mx-auto mb-0 mt-4 max-w-[820px] text-[clamp(15px,1.5vw,18px)] leading-[2] text-[var(--gva-text-body)] max-[859px]:mt-3 max-[859px]:text-[14px] max-[859px]:leading-[1.65]"> 当项目进入商业运营或客户交付,授权版把合规使用、专属服务与企业能力接到同一条交付路径上。 </p></div><div class="grid grid-cols-1 gap-6 min-[860px]:grid-cols-3 min-[1200px]:gap-8"><article class="group flex h-full min-w-0 flex-col rounded-[12px] border border-[var(--gva-border)] bg-[var(--gva-bg-base)] p-7 shadow-[var(--gva-shadow-sm)] transition-[transform,box-shadow,border-color] duration-200 hover:-translate-y-[2px] hover:border-[var(--gva-border-strong)] hover:shadow-[var(--gva-shadow)] max-[859px]:p-6"><span class="mb-3 block select-none text-[48px] font-extrabold leading-none text-[var(--gva-primary-soft)]"> 01 </span><h3 class="m-0 mb-2.5 text-[19px] font-bold leading-[1.35] text-[var(--gva-text-strong)] max-[859px]:text-[20px]"> 表单 · 流程 · 通知 </h3><p class="m-0 text-[14px] leading-[1.7] text-[var(--gva-text-body)]"> 把数据采集、审批流转和站内信、邮件及 Webhook 触达连成业务协作闭环。 </p></article><article class="group flex h-full min-w-0 flex-col rounded-[12px] border border-[var(--gva-border)] bg-[var(--gva-bg-base)] p-7 shadow-[var(--gva-shadow-sm)] transition-[transform,box-shadow,border-color] duration-200 hover:-translate-y-[2px] hover:border-[var(--gva-border-strong)] hover:shadow-[var(--gva-shadow)] max-[859px]:p-6"><span class="mb-3 block select-none text-[48px] font-extrabold leading-none text-[var(--gva-primary-soft)]"> 02 </span><h3 class="m-0 mb-2.5 text-[19px] font-bold leading-[1.35] text-[var(--gva-text-strong)] max-[859px]:text-[20px]"> 数据集 · 看板 · 报表 </h3><p class="m-0 text-[14px] leading-[1.7] text-[var(--gva-text-body)]"> 从数据查询到可视化分析,再到定时导出与发送,形成持续的数据交付链路。 </p></article><article class="group flex h-full min-w-0 flex-col rounded-[12px] border border-[var(--gva-border)] bg-[var(--gva-bg-base)] p-7 shadow-[var(--gva-shadow-sm)] transition-[transform,box-shadow,border-color] duration-200 hover:-translate-y-[2px] hover:border-[var(--gva-border-strong)] hover:shadow-[var(--gva-shadow)] max-[859px]:p-6"><span class="mb-3 block select-none text-[48px] font-extrabold leading-none text-[var(--gva-primary-soft)]"> 03 </span><h3 class="m-0 mb-2.5 text-[19px] font-bold leading-[1.35] text-[var(--gva-text-strong)] max-[859px]:text-[20px]"> 达梦 · 人大金仓 </h3><p class="m-0 text-[14px] leading-[1.7] text-[var(--gva-text-body)]"> 授权版支持达梦、人大金仓等国产数据库,与业务协作和数据分析能力一并交付ã€
1‚ </p></article></div><div class="mt-8 flex items-center justify-between gap-8 border-t border-[var(--gva-border)] pt-8 max-[700px]:items-stretch max-[700px]:flex-col max-[700px]:gap-5"><p class="m-0 max-w-[780px] text-[14px] leading-[1.8] text-[var(--gva-text-body)]"><strong class="mb-1 block text-[var(--gva-text-strong)]">授权版即包含上述业务、数据与国产数据库能力。</strong> 独立版在此基础上部署客户专属私有仓库,并提供商标与品牌定制,让底层仍由 Gin-Vue-Admin 驱动的产品,在使用感受和持续维护上成为客户自己的框架。 </p><a class="gva-btn gva-btn--primary min-w-[150px] shrink-0 max-[700px]:w-full" href="/empower/"> 了解授权版 </a></div></div>',1)])])}const Ga=q(Pa,[["render",La]]),Va={class:"gva-section gva-section--alt"},za={class:"gva-container"},qa={class:"grid grid-cols-1 gap-8 min-[860px]:grid-cols-2 min-[860px]:items-center min-[860px]:gap-14"},Na={class:"grid grid-cols-3 gap-3.5 max-[560px]:gap-2.5"},Ra=["href","title"],Oa={class:"aspect-[16/10] w-full overflow-hidden bg-[var(--gva-bg-alt)]"},Ua=["src","alt"],Xa={class:"px-2.5 py-2 max-[560px]:px-2 max-[560px]:py-1.5"},Ha={class:"line-clamp-2 text-[13px] font-medium leading-[1.35] text-[var(--gva-text-strong)] max-[560px]:text-[12px]"},Ka="https://qmplusimg.henrongyi.top/website/arr-right.png",Ya="https://qmplusimg.henrongyi.top/",Za="/pluginApi/shopPlugin/getShopPluginList?page=1&pageSize=9&recommend=true",Ja="/pluginApi/shopPlugin/getShopPluginList?page=1&pageSize=9",Wa={__name:"Ecosystem",setup(g){const i=a=>`https://plugin.gin-vue-admin.com/details/${a}`,o=F([{id:158,name:"极光CRM--企业级客户关系管理系统",picture:"1772209628未命名(5) (1).jpg"},{id:139,name:"极光商城 【小程序】 基于UNI-APP 命令行模式开发",picture:"1751191617shopplus.jpg"},{id:133,name:"GVA多租户版本",picture:"1749901916稿定智能设计202406151522.jpg"},{id:67,name:"定时任务配置化管理",picture:"1745826267定时任务.jpg"},{id:42,name:"Kubernetes容器管理",picture:"plugin/k8s.jpg"},{id:162,name:"【BBS】极光论坛--基于GVA开发的积分论坛系统",picture:"1774856291jiguangbbs.jpg"},{id:159,name:"【gvaClaw】适配GVA的多端兼容claw",picture:"1773150030未命名(5).jpg"},{id:157,name:"dify管理插件",picture:"1771478253dify.jpg"},{id:87,name:"微信公众号管理插件",picture:"1745825686微信公众号管理插件.jpg"}].map(a=>({id:a.id,name:a.name,picture:Ya+a.picture,link:i(a.id)})));async function r(a){var m;const t=await fetch(a);if(!t.ok)throw new Error(`HTTP ${t.status}`);const l=await t.json();if(l.code!==0)throw new Error(`API code ${l.code}`);return((m=l.data)==null?void 0:m.list)||[]}return K(async()=>{try{const[a,t]=await Promise.all([r(Za),r(Ja)]),l=new Set(a.map(c=>c.ID)),m=[...a,...t.filter(c=>!l.has(c.ID))].slice(0,9);m.length&&(o.value=m.map(c=>({id:c.ID,name:c.name,picture:c.picture,link:i(c.ID)})))}catch(a){console.warn("[Ecosystem] 加载插件市场推荐失败,使用兜底数据:",a)}}),(a,t)=>(s(),n("section",Va,[e("div",za,[e("div",qa,[e("div",null,[t[1]||(t[1]=e("h2",{class:"text-[clamp(28px,3.6vw,40px)] leading-[1.18] font-bold tracking-[-0.02em] text-[var(--gva-text-strong)]"},[u("不只是框架,"),e("br"),u("是一个"),e("span",{class:"text-[var(--gva-primary)]"},"持续生长"),u("的生态")],-1)),t[2]||(t[2]=e("p",{class:"text-[clamp(14px,1.5vw,18px)] leading-[2] text-[var(--gva-text-body)] max-w-[820px] mt-[18px] mb-6 max-[860px]:font-light"}," 论坛、支付、消息、存储、工作流……数百个官方与社区插件,让你像搭积木一样扩展系统能力。 ",-1)),e("a",{class:"relative inline-flex items-center gap-2.5 pb-[13px] text-[16px] leading-none font-medium text-[#2264F2] dark:text-[var(--gva-primary)] after:content-[''] after:absolute after:left-0 after:bottom-0 after:w-full after:h-0.5 after:bg-[#2264F2] dark:after:bg-[var(--gva-primary)] max-[860px]:text-[14px]",href:"https://plugin.gin-vue-admin.com/#/layout/home",target:"_blank",rel:"noopener"},[t[0]||(t[0]=u(" 逛逛插件市场 ",-1)),e("img",{class:"block w-3.5 h-3.5 object-contain",src:Ka,alt:"","aria-hidden":"true",loading:"lazy"})])]),e("div",Na,[(s(!0),n(_,null,A(o.value,l=>(s(),n("a",{key:l.id,class:"group flex flex-col overflow-hidden rounded-[14px] border border-[var(--gva-border)] bg-[var(--gva-bg-base)] shadow-[var(--gva-shadow-sm)] transition-[transform,box-shadow,border-color] duration-200 hover:-translate-y-[3px] hover:border-[var(--gva-border-strong)] hover:shadow-[var(--gva-shadow)]",href:l.link,target:"_blank",rel:"noopener",title:l.name},[e("div",Oa,[e("img",{src:l.picture,alt:l.name,loading:"lazy",class:"h-full w-full object-cover transition-transform duration-300 group-hover:scale-[1.04]"},null,8,Ua)]),e("div",Xa,[e("p",Ha,p(l.name),1)])],8,Ra))),128))])])])]))}},Qa={class:"gva-section"},er={class:"gva-container"}
1,tr={class:"relative grid grid-cols-4 gap-5 mb-[52px] max-[860px]:grid-cols-2"},ar={class:"block mt-2 text-[13.5px] text-[var(--gva-text-muted)]"},rr={key:0,class:"absolute right-0 top-1/2 hidden h-[60%] w-px -translate-y-1/2 bg-[var(--gva-border)] min-[861px]:block"},sr={class:"text-[14px] leading-[1.7] text-[var(--gva-text-body)] m-0 mb-5 line-clamp-3"},nr={class:"flex items-center gap-3"},or={class:"block text-[14px] text-[var(--gva-text-strong)]"},lr={class:"not-italic text-[12.5px] text-[var(--gva-text-muted)]"},ir={class:"text-[14px] leading-[1.7] text-[var(--gva-text-body)] m-0 mb-5 line-clamp-3 font-light"},pr={class:"flex items-center gap-3"},xr={class:"block text-[14px] text-[var(--gva-text-strong)]"},dr={class:"not-italic text-[12.5px] text-[var(--gva-text-muted)] font-light"},cr={class:"flex justify-center gap-2 mt-7"},gr=["aria-label","onClick"],mr=3500,vr={__name:"Community",setup(g){const i=[{num:"30,000+",label:"GitHub Stars"},{num:"5,800+",label:"Forks"},{num:"400+",label:"贡献者"},{num:"200+",label:"生态插件"}],o=[{text:"从建模到上线,GVA 把重复劳动几乎全部自动化了,团队真正把精力放在业务上。",name:"李工",role:"后端负责人 · 某 SaaS 团队",color:"#2264F2"},{text:"接入 MCP 后,AI 直接读懂我们的项目结构,生成的代码风格和现有工程完全一致。",name:"王敏",role:"全栈工程师",color:"#16a34a"},{text:"权限体系做得很扎实,把 AI Agent 也纳入同一套 RBAC,安全上让人放心。",name:"张磊",role:"技术架构师",color:"#f59e0b"},{text:"代码生成器 + 插件市场,让一个小团队也能快速交付企业级后台。",name:"陈晨",role:"独立开发者",color:"#8b5cf6"},{text:"文档和社区都很活跃,遇到问题基本当天就能找到答案。",name:"赵宇",role:"前端负责人",color:"#ef4444"}],r=o.length,a=F(0),t=F("slide-left"),l=[-2,-1,0,1,2],m=R(()=>l.map(x=>{const w=(a.value+x+r*2)%r;return{...o[w],off:x}})),c=F(null),h=F(0),E=F(!1),j=F(0),T=F(!1),S=F(500);let v=0,f=0,b=1,d=null;function C(){const x=c.value;return!x||x.children.length<2?0:(v=x.children[1].offsetLeft-x.children[0].offsetLeft,v)}const D=R(()=>({transform:`translateX(${h.value}px)`,transition:E.value?`transform ${S.value}ms cubic-bezier(0.22, 1, 0.36, 1)`:"none"}));function L(x){if(!C()){a.value=(a.value+x+r)%r;return}E.value=!0,j.value=x,h.value=-x*v,d=setTimeout(Y,S.value+100)}function Y(){if(clearTimeout(d),!E.value)return;const x=j.value;T.value=!0,E.value=!1,j.value=0,a.value=(a.value+x+r)%r,h.value=0,requestAnimationFrame(()=>{requestAnimationFrame(()=>{T.value=!1,f>0?(f--,L(b)):S.value=500})})}function V(x){x.target===c.value&&x.propertyName==="transform"&&Y()}function J(x){if(t.value=x>0?"slide-left":"slide-right",E.value){f=Math.min(f+1,1),b=x;return}L(x)}function U(x){if(x===a.value)return;const w=(x-a.value+r)%r,I=w<=r/2,P=I?w:r-w,ae=I?1:-1;if(t.value=I?"slide-left":"slide-right",!C()){a.value=x;return}E.value||(f=P-1,b=ae,S.value=P>1?280:500,L(ae))}let N=null;function X(){N=setInterval(()=>J(1),mr)}function H(){clearInterval(N),N=null}function Z(){N||X()}K(()=>{le(C),window.addEventListener("resize",C),X()}),ie(()=>{H(),clearTimeout(d),window.removeEventListener("resize",C)});let W=0;function te(x){W=x.touches[0].clientX,H()}function k(x){const w=x.changedTouches[0].clientX-W;Math.abs(w)>40&&J(w<0?1:-1),Z()}return(x,w)=>(s(),n("section",Qa,[e("div",er,[w[2]||(w[2]=M('<div class="text-center mb-14 max-[860px]:mb-10" data-v-1b7ee354><h2 class="text-[clamp(28px,3.6vw,40px)] leading-[1.18] font-bold tracking-[-0.02em] text-[var(--gva-text-strong)] dark:text-[var(--gva-text-strong)]" style="margin-top:16px;" data-v-1b7ee354><span class="block" data-v-1b7ee354><span class="text-[var(--gva-primary)]" data-v-1b7ee354>3 万+</span> 开发者</span><span class="block" data-v-1b7ee354>已经在用 GVA</span></h2><p class="text-[clamp(14px,1.5vw,18px)] leading-[2] text-[var(--gva-text-body)] max-w-[820px] mt-4 mx-auto max-[860px]:font-light" data-v-1b7ee354> 一个被持续验证、持续生长的开源全栈框架。 </p></div>',1)),e("div",tr,[(s(),n(_,null,A(i,(I,P)=>e("div",{key:I.label,class:"relative text-center py-[26px] px-3"},[e("span",{class:y(["block text-[clamp(26px,3.2vw,36px)] font-extrabold tracking-[-0.02em]",P===0?"text-[var(--gva-primary)]":"text-[var(--gva-text-strong)]"])},p(I.num),3),e("span",ar,p(I.label),1),P<i.length-1?(s(),n("span",rr)):G("",!0)])),64)),w[0]||(w[0]=e("span",{class:"stats-cross-h min-[861px]:hidden","aria-hidden":"true"},null,-1)),w[1]||(w[1]=e("span",{class:"stats-cross-v min-[861px]:hidden","aria-hidden":"true"},null,-1))]),e("div",{class:"hidden min-[861px]:block carousel-viewport",onMouseenter:H,onMouseleave:Z},[e("div",{ref_key:"trackRef",ref:c,class:y(["carousel-belt",{"snap-frame":T.value}]),style:B(D.value),onTransitionend:V},[(s(!0),n(_,null,A(m.value,I=>(s(),n("div",{key:I.off,class:y(["carousel-card h-[200px] overflow-hidden bg-[var(--gva-bg-base)] border rounded-[var(--gva-radius)] p-6 flex flex-col justify-between",I.off===j.value?"card-center shadow-[shadow:var(--gva-shadow)] border-[var(--gva-primary-ring)]":"card-side shadow-[shadow:var(--gva-shadow-sm)] border-[var(--gva-border)]"])},[e("p",sr,'"'+p(I.text)+'"',1),e("div",nr,[e("span",{class:"shrink-0 w-[38px] h-[38px] rounded-full grid place-items-center text-white font-bold",style:B({background:I.color})},p(I.name[0]),5),e("span",null,[e("strong",or,p(I.name),1),e("em",lr,p(I.role),1)])])],2))),128))],38)],32),e("div",{class:"block min-[861px]:hidden carousel-track",onTouchstart:te,onTouchend:k},[$(ee,{name:t.value,tag:"div",class:"carousel-inner-mobile"},{default:O(()=>[(s(),n("div",{key:o[a.value].name+a.value,class:"carousel-card-mobile h-[200px] w-full overflow-hidden bg-[var(--gva-bg-base)] border rounded-[var(--gva-radius)] p-6 flex flex-col justify-between shadow-[shadow:var(--gva-shadow)] border-[var(--gva-primary-ring)]"},[e("p",ir,'"'+p(o[a.value].text)+'"',1),e("div",pr,[e("span",{class:"shrink-0 w-[38px] h-[38px] rounded-full grid place-items-center text-white font-bold",style:B({background:o[a.value].color})},p(o[a.value].name[0]),5),e("span",null,[e("strong",xr,p(o[a.value].name),1),e("em",dr,p(o[a.value].role),1)])])]))]),_:1},8,["name"])],32),e("div",cr,[(s(),n(_,null,A(o,(I,P)=>e("button",{key:P,class:y(["h-2 rounded-full border-none cursor-pointer transition-all duration-200",P===a.value?"w-[22px] bg-[var(--gva-primary)]":"w-2 bg-[var(--gva-border-strong)]"]),"aria-label":`第 ${P+1} 条`,onClick:ae=>U(P)},null,10,gr)),64))])])]))}},ur=q(vr,[["__scopeId","data-v-1b7ee354"]]),br={class:"gva-section min-h-screen bg-[#F5F5F5] dark:bg-[var(--gva-bg-alt)] flex items-center"},fr={class:"gva-container"},hr={class:"grid grid-cols-3 gap-[22px] max-[860px]:grid-cols-1"},kr={class:"text-[20px] font-bold text-[var(--gva-text-strong)] mb-3"},wr={class:"text-[14px] leading-[1.7] text-[var(--gva-text-body)] mb-5 max-[860px]:font-light"},yr={class:"inline-flex items-center gap-[7px] text-[12.5px] font-semibold text-[var(--gva-primary)]"},_r={__name:"Trust",setup(g){const i=[{title:"安全",desc:"支持完全私有化部署,源码、数据与模型调用都在自有环境内闭环ï¼
1Œä¸ä¾èµ–任何外部托管。",tag:"支持私有化部署",icon:'<svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3l7 3v5c0 4.5-3 8-7 10-4-2-7-5.5-7-10V6z"/><path d="M9 12l2 2 4-4"/></svg>'},{title:"可靠",desc:"基于 Go + Vue 的成熟全栈架构,经过大量项目在生产环境长期打磨,稳定可维护。",tag:"生产环境验证",icon:'<svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12h4l3 7 4-14 3 7h4"/></svg>'},{title:"可控",desc:"细到字段级的权限与可见性控制,Agent 能看到什么、能做什么,完全由你定义。",tag:"你决定 Agent 能看见什么",icon:'<svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M12 3v3M12 18v3M3 12h3M18 12h3M5.6 5.6l2.1 2.1M16.3 16.3l2.1 2.1M18.4 5.6l-2.1 2.1M7.7 16.3l-2.1 2.1"/></svg>'}];return(o,r)=>(s(),n("section",br,[e("div",fr,[r[1]||(r[1]=e("div",{class:"text-center mb-14 max-[860px]:mb-10"},[e("h2",{class:"text-[clamp(28px,3.6vw,40px)] leading-[1.18] font-bold tracking-[-0.02em] text-[var(--gva-text-strong)]",style:{"margin-top":"16px"}},[u("安全、可靠、"),e("span",{class:"text-[var(--gva-primary)]"},"可控")]),e("p",{class:"text-[clamp(14px,1.5vw,18px)] leading-[2] text-[var(--gva-text-body)] max-w-[820px] mt-4 mx-auto max-[860px]:font-light"}," 你决定暴露哪些 API,Agent 只能调用这些;数据留在你自己的服务器上,边界始终掌握在你手里。 ")],-1)),e("div",hr,[(s(),n(_,null,A(i,a=>e("div",{key:a.title,class:"bg-[var(--gva-bg-base)] border border-[var(--gva-border)] rounded-[var(--gva-radius)] shadow-[shadow:var(--gva-shadow-sm)] transition-[transform,box-shadow,border-color] duration-200 hover:-translate-y-[3px] hover:shadow-[shadow:var(--gva-shadow)] hover:border-[var(--gva-border-strong)] p-[30px]"},[e("h3",kr,p(a.title),1),e("p",wr,p(a.desc),1),e("span",yr,[r[0]||(r[0]=e("i",{class:"w-[7px] h-[7px] rounded-full bg-[var(--gva-primary)]"},null,-1)),u(" "+p(a.tag),1)])])),64))])])]))}},Ar={class:"gva-section !py-[44px] min-[861px]:!py-[100px] lg:!py-[128px] xl:!py-[160px]"},$r={class:"gva-container"},Fr={class:"flex-1 carousel-viewport"},Cr=["src","alt"],Ir={class:"flex-1 carousel-mobile-track"},Er=["src","alt"],Tr={class:"flex justify-center gap-[7px] mt-[26px] min-[861px]:mt-[34px] flex-wrap"},jr=["aria-label","onClick"],Dr=3200,Sr={__name:"StarUsers",setup(g){const i=[{name:"华数传媒",img:"/user/huashu-tight.png"},{name:"Alibaba Cloud",img:"/user/ali.svg"},{name:"ByteDance",img:"/user/zijie.svg"},{name:"Tencent",img:"/user/tengxun.svg"},{name:"vivo",img:"/user/vivo-tight.svg"},{name:"Anker",img:"/user/anker.svg"},{name:"China Mobile",img:"/user/mobile-tight.png"},{name:"Douyu",img:"/user/douyu.svg"},{name:"Cadence",img:"/user/cadence.svg"},{name:"Transsion",img:"/user/transsion.svg"}],o=i.length,r=F(2),a=F("slide-left"),t=[-3,-2,-1,0,1,2,3],l=R(()=>t.map(k=>{const x=(r.value+k+o*2)%o;return{...i[x],off:k}})),m=F(null),c=F(0),h=F(!1),E=F(0),j=F(!1),T=F(500);let S=0,v=0,f=1,b=null;function d(){const k=m.value;return!k||k.children.length<2?0:(S=k.children[1].offsetLeft-k.children[0].offsetLeft,S)}const C=R(()=>({transform:`translateX(${c.value}px)`,transition:h.value?`transform ${T.value}ms cubic-bezier(0.22, 1, 0.36, 1)`:"none"}));function D(k){if(!d()){r.value=(r.value+k+o)%o;return}h.value=!0,E.value=k,c.value=-k*S,b=setTimeout(L,T.value+100)}function L(){if(clearTimeout(b),!h.value)return;const k=E.value;j.value=!0,h.value=!1,E.value=0,r.value=(r.value+k+o)%o,c.value=0,requestAnimationFrame(()=>{requestAnimationFrame(()=>{j.value=!1,v>0?(v--,D(f)):T.value=500})})}function Y(k){k.target===m.value&&k.propertyName==="transform"&&L()}function V(k){if(a.value=k>0?"slide-left":"slide-right",h.value){v=Math.min(v+1,1),f=k;return}D(k)}function J(k){if(k===r.value)return;const x=(k-r.value+o)%o,w=x<=o/2,I=w?x:o-x,P=w?1:-1;if(a.value=w?"slide-left":"slide-right",!d()){r.value=k;return}
1h.value||(v=I-1,f=P,T.value=I>1?280:500,D(P))}let U=null;function N(){U=setInterval(()=>V(1),Dr)}function X(){clearInterval(U),U=null}function H(){U||N()}K(()=>{le(d),window.addEventListener("resize",d),N()}),ie(()=>{X(),clearTimeout(b),window.removeEventListener("resize",d)});let Z=0;function W(k){Z=k.touches[0].clientX,X()}function te(k){const x=k.changedTouches[0].clientX-Z;Math.abs(x)>40&&V(x<0?1:-1),H()}return(k,x)=>(s(),n("section",Ar,[e("div",$r,[x[4]||(x[4]=e("div",{class:"text-center mb-14 min-[861px]:mb-16 max-[860px]:mb-10"},[e("h2",{class:"text-[clamp(28px,3.8vw,44px)] leading-[1.18] font-bold tracking-[-0.02em] text-[var(--gva-text-strong)] dark:text-[var(--gva-text-strong)]",style:{"margin-top":"16px"}},[u("他们都在用 "),e("span",{class:"text-[var(--gva-primary)]"},"GVA")]),e("p",{class:"text-[clamp(14px,1.6vw,19px)] leading-[2] text-[var(--gva-text-body)] max-w-[820px] mt-4 mx-auto"},"从云厂商到内容平台,众多团队把 GVA 用在生产环境。")],-1)),e("div",{class:"hidden min-[521px]:flex items-center gap-3.5 min-[861px]:gap-5",onMouseenter:X,onMouseleave:H},[e("button",{class:"shrink-0 w-[42px] h-[42px] min-[861px]:w-[50px] min-[861px]:h-[50px] rounded-full cursor-pointer border border-[var(--gva-border-strong)] bg-[var(--gva-bg-base)] text-[var(--gva-text-body)] text-[22px] min-[861px]:text-[26px] leading-none transition-all duration-[180ms] hover:border-[var(--gva-primary)] hover:text-[var(--gva-primary)]","aria-label":"上一组",onClick:x[0]||(x[0]=w=>V(-1))},"‹"),e("div",Fr,[e("div",{ref_key:"trackRef",ref:m,class:y(["carousel-belt",{"snap-frame":j.value}]),style:B(C.value),onTransitionend:Y},[(s(!0),n(_,null,A(l.value,w=>(s(),n("div",{key:w.off,class:y(["logo-card grid place-items-center p-[18px] min-[861px]:p-7 bg-[var(--gva-bg-base)] border rounded-[var(--gva-radius)]",w.off===E.value?"card-center shadow-[shadow:var(--gva-shadow)] border-[var(--gva-primary-ring)]":"card-side shadow-[shadow:var(--gva-shadow-sm)] border-[var(--gva-border)]"])},[e("img",{src:w.img,alt:w.name,loading:"lazy",class:y(["logo-img max-w-full max-h-12 min-[861px]:max-h-16 object-contain",w.off===E.value?"grayscale-0":"grayscale"])},null,10,Cr)],2))),128))],38)]),e("button",{class:"shrink-0 w-[42px] h-[42px] min-[861px]:w-[50px] min-[861px]:h-[50px] rounded-full cursor-pointer border border-[var(--gva-border-strong)] bg-[var(--gva-bg-base)] text-[var(--gva-text-body)] text-[22px] min-[861px]:text-[26px] leading-none transition-all duration-[180ms] hover:border-[var(--gva-primary)] hover:text-[var(--gva-primary)]","aria-label":"下一组",onClick:x[1]||(x[1]=w=>V(1))},"›")],32),e("div",{class:"flex min-[521px]:hidden items-center gap-3",onTouchstart:W,onTouchend:te},[e("button",{class:"shrink-0 w-[38px] h-[38px] rounded-full cursor-pointer border border-[var(--gva-border-strong)] bg-[var(--gva-bg-base)] text-[var(--gva-text-body)] text-[20px] leading-none transition-all duration-[180ms] hover:border-[var(--gva-primary)] hover:text-[var(--gva-primary)]","aria-label":"上一个",onClick:x[2]||(x[2]=w=>V(-1))},"‹"),e("div",Ir,[$(ee,{name:a.value,tag:"div",class:"carousel-mobile-inner"},{default:O(()=>[(s(),n("div",{key:i[r.value].name+"-"+r.value,class:"carousel-mobile-card grid place-items-center h-24 p-[18px] bg-[var(--gva-bg-base)] border rounded-[var(--gva-radius)] shadow-[shadow:var(--gva-shadow)] border-[var(--gva-primary-ring)]"},[e("img",{src:i[r.value].img,alt:i[r.value].name,loading:"lazy",class:"max-w-full max-h-12 object-contain"},null,8,Er)]))]),_:1},8,["name"])]),e("button",{class:"shrink-0 w-[38px] h-[38px] rounded-full cursor-pointer border border-[var(--gva-border-strong)] bg-[var(--gva-bg-base)] text-[var(--gva-text-body)] text-[20px] leading-none transition-all duration-[180ms] hover:border-[var(--gva-primary)] hover:text-[var(--gva-primary)]","aria-label":"下一个",onClick:x[3]||(x[3]=w=>V(1))},"›")],32),e("div",Tr,[(s(),n(_,null,A(i,(w,I)=>e("button",{key:I,class:y(["h-2 rounded-full border-0 cursor-pointer transition-all duration-200",I===r.value?"w-[22px] bg-[var(--gva-primary)]":"w-2 bg-[var(--gva-border-strong)]"]),"aria-label":w.name,onClick:P=>J(I)},null,10,jr)),64))])])]))}},Mr=q(Sr,[["__scopeId","data-v-6ca07577"]]),Pr={class:"gva-section [background:radial-gradient(720px_360px_at_50%_120%,rgba(34,100,242,0.12),transparent_70%),var(--gva-bg-base)]"},Br={class:"gva-container text-center flex flex-col items-center"},Lr={class:"flex gap-3.5 flex-wrap justify-center"},Gr={__name:"FinalCta",setup(g){return(i,o)=>(s(),n("section",Pr,[e("div",Br,[o[1]||(o[1]=e("h2",{class:"text-[clamp(28px,3.6vw,40px)] leading-[1.18] font-bold tracking-[-0.02em] text-[var(--gva-text-strong)] dark:text-[var(--gva-text-strong)] mt-4"},[u("强大的 API,"),e("span",{class:"text-[var(--gva-primary)]"},"更强大的 AI")],-1)),o[2]||(o[2]=e("p",{class:"text-[clamp(15px,1.5vw,18px)] leading-[2] text-[var(--gva-text-body)] max-w-[820px] mt-4 mx-auto mb-8 max-[860px]:font-light"},"GVA 3.0,让 API 也能被 AI 理解、调用、自动化。",-1)),e("div",Lr,[$(de,{"menu-align":"left",class:"max-[560px]:min-w-[140px] max-[560px]:flex-1"}),o[0]||(o[0]=e("a",{class:"inline-flex items-center justify-center gap-2 h-[43px] max-[860px]:h-12 px-7 rounded-[8px] text-[14px] font-normal cursor-pointer whitespace-nowrap border border-[var(--gva-primary)] transition-[transform,box-shadow,background-color,border-color,color] duration-200 bg-transparent text-[var(--gva-primary)] hover:border-[var(--gva-primary)] hover:text-[var(--gva-primary)] max-[560px]:flex-1 max-[560px]:min-w-[140px]",href:"/guide/introduce/project"},"阅读文档 →",-1))])])]))}},Vr={class:"gva-section gva-section--dark pt-16 pb-7"},zr={class:"gva-container"},qr={class:"grid grid-cols-[auto_1fr_1fr_1fr] gap-12 pb-11 border-b border-white/[0.08] max-[860px]:grid-cols-1 max-[860px]:gap-9 max-[1024px]:grid-cols-[auto_1fr_1fr] max-[1024px]:gap-8"},Nr={class:"flex flex-col gap-5"},Rr={class:"flex gap-2.5"},Or=["href","title","innerHTML"],Ur=["href","target","rel"],Xr=["href","target","rel"],Hr={class:"max-[1024px]:hidden"},Kr=["href","target","rel"],Yr=2026,Zr={__name:"SiteFooter",setup(g){const i=[{title:"产品",links:[{text:"社区论坛",href:"https://github.com/flipped-aurora/gin-vue-admin/discussions",ext:!0},{text:"插件市场",href:"https://plugin.gin-vue-admin.com/#/layout/home",ext:!0},{text:"在线体验",href:"https://demo.gin-vue-admin.com",ext:!0},{text:"GVA 3.0",href:"/guide/introduce/project"}]},{title:"资源",links:[{text:"开发文档",href:"/guide/introduce/project"},{text:"视频教程",href:"/guide/video/golang"},{text:"关于我们",href:"/about/join"}]},{title:"授权与支持",links:[{text:"企业版",href:"https://plugin.gin-vue-admin.com/license",ext:!0},{text:"服务协议",href:"/terms"},{text:"常见问题",href:"/guide/manual/qa"}]}],o=[{name:"GitHub",href:"https://github.com/flipped-aurora/gin-vue-admin",icon:'<svg viewBox="0 0 24 24" width="20" height="20" fill="currentColor"><path d="M12 2C6.5 2 2 6.6 2 12.3c0 4.5 2.9 8.3 6.8 9.7.5.1.7-.2.7-.5v-1.7c-2.8.6-3.4-1.4-3.4-1.4-.5-1.2-1.1-1.5-1.1-1.5-.9-.6.1-.6.1-.6 1 .1 1.5 1 1.5 1 .9 1.6 2.4 1.1 3 .9.1-.7.4-1.1.6-1.4-2.2-.3-4.6-1.1-4.6-5 0-1.1.4-2 1-2.7-.1-.3-.4-1.3.1-2.7 0 0 .8-.3 2.7 1 .8-.2 1.7-.3 2.5-.3s1.7.1 2.5.3c1.9-1.3 2.7-1 2.7-1 .5 1.4.2 2.4.1 2.7.6.7 1 1.6 1 2.7 0 3.9-2.4 4.7-4.6 5 .4.3.7.9.7 1.9v2.8c0 .3.2.6.7.5 3.9-1.4 6.8-5.2 6.8-9.7C22 6.6 17.5 2 12 2z"/></svg>'},{name:"Gitee",href:"https://gitee.com/pixelmax/gin-vue-admin",icon:'<img src="/icons/gitee.png" alt="Gitee" width="20" height="20" loading="lazy" />'},{name:"GitCode",href:"https://gitcode.com/flipped-aurora/gin-vue-admin",icon:'<img src="/icons/gitcode.svg" alt="GitCode" width="20" height="20" loading="lazy" />'}];return(r,a)=>
1(s(),n("footer",Vr,[e("div",zr,[e("div",qr,[e("div",Nr,[a[0]||(a[0]=e("a",{href:"https://trendshift.io/repositories/3250?utm_source=repository-badge&utm_medium=badge&utm_campaign=badge-repository-3250",target:"_blank",rel:"noopener noreferrer",class:"inline-block"},[e("img",{src:"https://trendshift.io/api/badge/repositories/3250",alt:"flipped-aurora/gin-vue-admin | Trendshift",width:"250",height:"55",loading:"lazy"})],-1)),e("div",Rr,[(s(),n(_,null,A(o,t=>e("a",{key:t.name,href:t.href,title:t.name,target:"_blank",rel:"noopener",innerHTML:t.icon,class:"w-[38px] h-[38px] rounded-[10px] grid place-items-center bg-white/[0.06] border border-white/[0.1] text-white/[0.8] transition-all duration-[180ms] hover:bg-[var(--gva-primary)] hover:border-[var(--gva-primary)] hover:text-white [&_img]:block [&_img]:rounded-[4px]"},null,8,Or)),64))])]),e("div",null,[a[1]||(a[1]=e("h4",{class:"mt-0 mb-4 text-[13px] font-bold text-white tracking-[0.04em]"},"产品",-1)),(s(!0),n(_,null,A(i[0].links,t=>(s(),n("a",{key:t.text,href:t.href,target:t.ext?"_blank":void 0,rel:t.ext?"noopener":void 0,class:"block text-[14px] text-white/[0.6] mb-3 transition-[color] duration-[180ms] hover:text-white"},p(t.text),9,Ur))),128))]),e("div",null,[a[2]||(a[2]=e("h4",{class:"mt-0 mb-4 text-[13px] font-bold text-white tracking-[0.04em]"},"资源",-1)),(s(!0),n(_,null,A(i[1].links,t=>(s(),n("a",{key:t.text,href:t.href,target:t.ext?"_blank":void 0,rel:t.ext?"noopener":void 0,class:"block text-[14px] text-white/[0.6] mb-3 transition-[color] duration-[180ms] hover:text-white"},p(t.text),9,Xr))),128))]),e("div",Hr,[a[3]||(a[3]=e("h4",{class:"mt-0 mb-4 text-[13px] font-bold text-white tracking-[0.04em]"},"授权与支持",-1)),(s(!0),n(_,null,A(i[2].links,t=>(s(),n("a",{key:t.text,href:t.href,target:t.ext?"_blank":void 0,rel:t.ext?"noopener":void 0,class:"block text-[14px] text-white/[0.6] mb-3 transition-[color] duration-[180ms] hover:text-white"},p(t.text),9,Kr))),128))])]),e("div",{class:"flex items-center justify-between gap-4 flex-wrap pt-6 max-[860px]:flex-col max-[860px]:items-start"},[e("p",{class:"m-0 text-[13px] text-white/[0.45]"},[u(" Copyright © 2020-"+p(Yr)+" Flipped-aurora Open Source Community · "),a[4]||(a[4]=e("a",{href:"https://beian.miit.gov.cn/",target:"_blank",rel:"noopener",class:"text-white/[0.6] hover:text-white"},"鲁ICP备17040210号-2",-1))]),a[5]||(a[5]=e("nav",{class:"flex gap-5 flex-wrap"},[e("a",{href:"/terms",class:"text-[13px] text-white/[0.55] hover:text-white"},"Terms of Service"),e("a",{href:"/privacy",class:"text-[13px] text-white/[0.55] hover:text-white"},"Privacy Policy"),e("a",{href:"/refund",class:"text-[13px] text-white/[0.55] hover:text-white"},"Refund Policy")],-1))])])]))}},Jr={class:"gva-landing"},Wr={__name:"HomeLanding",setup(g){return(i,o)=>(s(),n("div",Jr,[$(be),$(Se),$(Ye),$(tt),$(wt),$(Mt),$(Gt),$(ca),$(Ma),$(Ga),$(Wa),$(ur),$(_r),$(Mr),$(Gr),$(Zr)]))}},ts=JSON.parse('{"title":"Gin-Vue-Admin","titleTemplate":"用 AI 构建系统,让系统为 AI 工作","description":"","frontmatter":{"layout":"page","title":"Gin-Vue-Admin","titleTemplate":"用 AI 构建系统,让系统为 AI 工作","pageClass":"gva-home-page","footer":false,"sidebar":false,"aside":false},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),Qr={name:"index.md"},as=Object.assign(Qr,{setup(g){return(i,o)=>(s(),n("div",null,[$(Wr)]))}});export{ts as __pageData,as as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.