koishi-plugin-oni-sync-bot 0.5.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{defineComponent as Y,ref as M,watch as N,onMounted as K,resolveComponent as b,openBlock as g,createBlock as I,withCtx as v,createVNode as d,createElementBlock as C,Fragment as V,renderList as z,createElementVNode as e,toDisplayString as f,computed as D,reactive as Q,createCommentVNode as _,normalizeClass as S,createTextVNode as x,unref as J,withDirectives as H,vModelText as Z,vModelSelect as ee}from"vue";import{store as U,Time as te,message as P,send as se}from"@koishijs/client";const oe="yyyy-MM-dd hh:mm:ss",le=Y({__name:"page",setup(l){const i=M(),s=M([]);function o(m){const r=te.template(oe,new Date(m.timestamp)),t=m.type.toUpperCase(),u=m.content.replace(/\u001b\[[0-9;]*m/g,"");return`[${r}] [${t}] ${u}`}N(()=>U.onilogs,m=>{m&&(s.value=m.map(o))},{deep:true,immediate:true});const p=()=>{i.value&&(i.value.scrollTop=i.value.scrollHeight)};return N(()=>s.value.length,()=>{setTimeout(p,0)}),K(()=>{p()}),(m,r)=>{const t=b("k-card"),u=b("k-layout");return g(),I(u,null,{default:v(()=>[d(t,{class:"log-container",ref_key:"scrollRef",ref:i},{default:v(()=>[(g(true),C(V,null,z(s.value,(k,y)=>(g(),C("div",{key:y,class:"log-line"},[e("pre",null,f(k),1)]))),128))]),_:1},512)]),_:1})}}}),O=(l,i)=>{const s=l.__vccOpts||l;for(const[o,p]of i)s[o]=p;return s},ae=O(le,[["__scopeId","data-v-361e99da"]]),X=10,ne=2e4,ie=1.33,E={steamEngine:2e3,oilEngine:200,hydrogenEngine:500,biodieselEngine:200,CommandModule:200,RoboPilotCommandModule:200,SolidBooster:1e3,LiquidFuelTank:100,OxidizerTank:100,OxidizerTankLiquid:100,CargoBay:2e3,GasCargoBay:2e3,LiquidCargoBay:2e3,SpecialCargoBay:2e3,TouristModule:200,ResearchModule:200,person:30},W={steam:20,oil:40,hydrogen:60,biodiesel:50,booster:12e3},F={steam:900,fuel:900,oxygen:2700},ce={steam:"steamEngine",oil:"oilEngine",hydrogen:"hydrogenEngine",biodiesel:"biodieselEngine"},de={ResearchModule:"研究舱",CargoBay:"固体货舱",GasCargoBay:"气体货舱",LiquidCargoBay:"液体货舱",SpecialCargoBay:"生物货舱",TouristModule:"观光舱",RoboPilotCommandModule:"机器驾驶舱"};function j(l){return Math.ceil(Math.max(l,Math.pow(l/300,3.2)))}function re(l){const i={};for(const[s,o]of Object.entries(l))typeof o=="number"&&o>=0&&(i[s]=o);return i}function ue(l){let i=E.CommandModule;for(const s in l)Object.prototype.hasOwnProperty.call(l,s)&&(i+=(E[s]||0)*l[s]);return i}function G(l){return l.length===0?[]:(l.sort((i,s)=>i.weight-s.weight),[l[0]])}function pe(l,i){l+=E.steamEngine;const s=[];for(let o=0;o<=X;o++){const p=l+E.SolidBooster*o,m=W.booster*o;for(let r=0;r<=F.steam;r++){const t=p+r,u=m+W.steam*r,k=j(t),y=u-k;if(y>=i){s.push({capacity:r,booster:o,weight:t,mergedDistance:u,punish:k,finalDistance:y});break}}}return G(s)}function me(l,i,s,o,p,m,r,t){const u=Math.ceil(l/F.fuel),k=Math.ceil(l/F.oxygen),y=t==="liquid"?E.OxidizerTankLiquid:E.OxidizerTank,h=s+E.LiquidFuelTank*u+y*k,w=l*2,L=h+w,B=Math.floor(o+p*l*m),R=j(L),$=B-R;return $<r?{isValid:false}:{isValid:true,solution:{capacity:l,booster:i,fuelCount:u,oxygenCount:k,dryWeight:h,wetWeight:w,weight:L,mergedDistance:B,punish:R,finalDistance:$}}}function ve(l,i,s,o,p){const m=W[l],r=o==="liquid"?ie:1;i+=E[ce[l]];const t=[];for(let u=0;u<=X;u++){const k=i+E.SolidBooster*u,y=W.booster*u;for(let h=0;h<=ne;h+=10){const w=me(h,u,k,y,m,r,s,o);if(w.isValid){t.push(w.solution);break}}}if(t.length===0)return[];if(!p){const u=new Map;for(const k of t){const y=k.fuelCount;(!u.has(y)||u.get(y).weight>k.weight)&&u.set(y,k)}return G(Array.from(u.values()))}return G(t)}function _e(l){const{type:i,distance:s,oxygenType:o,allowWaste:p,...m}=l,r=re(m),t=ue(r);return i==="steam"?pe(t,s):ve(i,t,s,o,p)}const fe={class:"rocket-calculator sci-fi-bg"},ge={class:"content-layout"},ye={class:"config-section"},be={class:"distance-control"},ke={class:"distance-step-selector"},Ce={class:"distance-input-wrapper"},he={class:"distance-value"},we={class:"oxidizer-hint"},Te={class:"config-section"},Se={class:"modules-grid"},$e={class:"module-header"},xe={class:"module-name"},Me={key:0,class:"empty-state"},Ee={key:1,class:"empty-state"},Be={class:"key-stats"},Le={class:"stat-item primary"},Re={class:"stat-value"},De={class:"stat-item success"},Ve={class:"stat-value"},Ie={class:"stat-item warning"},Oe={class:"stat-value"},qe={class:"detail-stats"},ze={class:"detail-grid"},We={class:"detail-item"},Ae={class:"detail-label"},Pe={class:"detail-value"},Ne={class:"detail-item"},Ue={class:"detail-value"},Fe={key:0,class:"detail-item"},Ge={class:"detail-value"},Ye={key:1,class:"detail-item"},He={class:"detail-value"},Xe={class:"data-table-section"},je={class:"table-wrapper"},Ke=Y({__name:"calculator",setup(l){const i=D(()=>{const r=[];for(let t=1e4;t<=19e4;t+=1e4)r.push(t);return r}),s=Q({type:"steam",distance:1e4,oxygenType:"solid",allowWaste:false,ResearchModule:0,CargoBay:0,GasCargoBay:0,LiquidCargoBay:0,SpecialCargoBay:0,TouristModule:0,RoboPilotCommandModule:0}),o=M(null),p=()=>{try{const r=_e(s);o.value=r,r.length>0?P.success("解算完成!已收敛到最优解"):P.warning("解算失败,无解空间")}catch(r){P.error("解算器异常"),console.error(r)}},m=()=>{s.type="steam",s.distance=1e4,s.oxygenType="solid",s.ResearchModule=0,s.CargoBay=0,s.GasCargoBay=0,s.LiquidCargoBay=0,s.SpecialCargoBay=0,s.TouristModule=0,s.RoboPilotCommandModule=0,o.value=null};return(r,t)=>{const u=b("el-option"),k=b("el-select"),y=b("el-form-item"),h=b("el-button"),w=b("el-radio-button"),L=b("el-radio-group"),B=b("el-form"),R=b("el-input-number"),$=b("k-card"),q=b("el-divider"),c=b("el-table-column"),n=b("el-table");return g(),C("div",fe,[_(" 背景装饰网格 "),t[32]||(t[32]=e("div",{class:"grid-overlay"},null,-1)),d($,{class:"header-card sci-fi-card"},{default:v(()=>[t[29]||(t[29]=e("div",{class:"header-glow"},null,-1)),t[30]||(t[30]=e("h1",{class:"sci-fi-title"},"ONI ROCKET CALCULATOR",-1)),t[31]||(t[31]=e("p",{class:"sci-fi-subtitle"},"缺氧火箭最优配置解算系统 · 基于官方物理引擎",-1)),e("div",ge,[_(" 输入控制台 "),d($,{class:"form-card sci-fi-card"},{default:v(()=>[t[9]||(t[9]=e("div",{class:"card-header-line"},null,-1)),_(" 主配置 "),e("div",ye,[t[6]||(t[6]=e("h3",{class:"section-title"},"【核心参数】",-1)),d(B,{model:s,size:"large",class:"sci-fi-form","label-position":"top"},{default:v(()=>[d(y,{label:"引擎类型"},{default:v(()=>[d(k,{modelValue:s.type,"onUpdate:modelValue":t[0]||(t[0]=a=>s.type=a),style:{width:"100%"},class:"sci-fi-select"},{default:v(()=>[d(u,{label:"蒸汽引擎",value:"steam"}),d(u,{label:"石油引擎",value:"oil"}),d(u,{label:"液氢引擎",value:"hydrogen"}),d(u,{label:"生物柴油引擎",value:"biodiesel"})]),_:1},8,["modelValue"])]),_:1}),d(y,{label:"目标轨道"},{default:v(()=>[e("div",be,[_(" 10000km 一档的步进选择器 "),e("div",ke,[(g(true),C(V,null,z(i.value,a=>(g(),I(h,{key:a,class:S(["step-btn",{active:s.distance===a}]),onClick:T=>s.distance=a},{default:v(()=>[x(f(a/1e3)+"k ",1)]),_:2},1032,["class","onClick"]))),128))]),e("div",Ce,[t[2]||(t[2]=e("span",{class:"distance-label"},"当前:",-1)),e("span",he,f(s.distance.toLocaleString()),1),t[3]||(t[3]=e("span",{class:"unit"},"km",-1))])])]),_:1}),s.type!=="steam"?(g(),I(y,{key:0,label:"氧化剂"},{default:v(()=>[d(L,{modelValue:s.oxygenType,"onUpdate:modelValue":t[1]||(t[1]=a=>s.oxygenType=a),class:"sci-fi-radio-group"},{default:v(()=>[d(w,{label:"solid"},{default:v(()=>[...t[4]||(t[4]=[x("氧石",-1)])]),_:1}),d(w,{label:"liquid"},{default:v(()=>[...t[5]||(t[5]=[x("液氧",-1)])]),_:1})]),_:1},8,["modelValue"]),e("div",we,[e("span",{class:S(["hint-item",{active:s.oxygenType==="solid"}])},"1.0x 效率",2),e("span",{class:S(["hint-item",{active:s.oxygenType==="liquid"}])},"1.33x 效率",2)])]),_:1})):_("v-if",true)]),_:1},8,["model"])]),t[10]||(t[10]=e("div",{class:"divider-line"},null,-1)),_(" 可选模块 "),e("div",Te,[t[8]||(t[8]=e("h3",{class:"section-title"},"【载荷配置】",-1)),d(B,{model:s,size:"large",class:"modules-form","label-position":"top"},{default:v(()=>[e("div",Se,[(g(true),C(V,null,z(J(de),(a,T)=>(g(),C("div",{key:T,class:"module-item"},[e("div",$e,[e("span",xe,f(a),1)]),d(R,{modelValue:s[T],"onUpdate:modelValue":A=>s[T]=A,min:0,max:20,class:"module-input"},null,8,["modelValue","onUpdate:modelValue"])]))),128))]),d(y,{class:"calculate-btn-wrapper"},{default:v(()=>[d(h,{onClick:p,class:"sci-fi-calculate-btn"},{default:v(()=>[...t[7]||(t[7]=[e("span",{class:"btn-text"},"▶ 执行解算",-1),e("span",{class:"btn-glow"},null,-1)])]),_:1})]),_:1})]),_:1},8,["model"])])]),_:1}),_(" 结果显示面板 "),d($,{class:"result-card sci-fi-card"},{default:v(()=>[t[28]||(t[28]=e("div",{class:"card-header-line"},null,-1)),o.value?o.value.length===0?(g(),C("div",Ee,[t[13]||(t[13]=e("div",{class:"empty-icon"},"⚠️",-1)),t[14]||(t[14]=e("p",{class:"empty-text error"},"解算失败",-1)),t[15]||(t[15]=e("p",{class:"empty-hint"},"无法找到满足条件的配置,请尝试减少载荷",-1)),d(h,{onClick:m,class:"sci-fi-reset-btn"},{default:v(()=>[...t[12]||(t[12]=[x("重置参数",-1)])]),_:1})])):(g(),C(V,{key:2},[t[27]||(t[27]=e("div",{class:"result-header"},[e("h3",{class:"result-title"},"✅ 最优解算结果"),e("div",{class:"result-status"},[e("span",{class:"status-dot"}),e("span",null,"CONVERGED")])],-1)),e("div",Be,[e("div",Le,[t[17]||(t[17]=e("div",{class:"stat-label"},"总起飞重量",-1)),e("div",Re,[x(f(o.value[0].weight.toLocaleString())+" ",1),t[16]||(t[16]=e("span",{class:"stat-unit"},"kg",-1))])]),e("div",De,[t[19]||(t[19]=e("div",{class:"stat-label"},"预计射程",-1)),e("div",Ve,[x(f(o.value[0].finalDistance.toLocaleString())+" ",1),t[18]||(t[18]=e("span",{class:"stat-unit"},"km",-1))])]),e("div",Ie,[t[21]||(t[21]=e("div",{class:"stat-label"},"质量惩罚",-1)),e("div",Oe,[x(f(o.value[0].punish.toLocaleString())+" ",1),t[20]||(t[20]=e("span",{class:"stat-unit"},"km",-1))])])]),d(q,{class:"sci-fi-divider"}),e("div",qe,[t[25]||(t[25]=e("h4",{class:"detail-title"},"【配置详情】",-1)),e("div",ze,[e("div",We,[e("span",Ae,f(s.type==="steam"?"蒸汽填充量":"燃料填充量"),1),e("span",Pe,f(o.value[0].capacity.toLocaleString())+" kg",1)]),e("div",Ne,[t[22]||(t[22]=e("span",{class:"detail-label"},"助推器数量",-1)),e("span",Ue,f(o.value[0].booster)+" 个",1)]),o.value[0].fuelCount!==void 0?(g(),C("div",Fe,[t[23]||(t[23]=e("span",{class:"detail-label"},"燃料舱数量",-1)),e("span",Ge,f(o.value[0].fuelCount)+" 个",1)])):_("v-if",true),o.value[0].oxygenCount!==void 0?(g(),C("div",Ye,[t[24]||(t[24]=e("span",{class:"detail-label"},"氧化剂舱数量",-1)),e("span",He,f(o.value[0].oxygenCount)+" 个",1)])):_("v-if",true)])]),d(q,{class:"sci-fi-divider"}),e("div",Xe,[t[26]||(t[26]=e("h4",{class:"detail-title"},"【原始数据】",-1)),e("div",je,[d(n,{data:o.value,stripe:"",class:"sci-fi-table"},{default:v(()=>[d(c,{prop:"weight",label:"总重(kg)",sortable:""}),d(c,{prop:"finalDistance",label:"射程(km)",sortable:""}),d(c,{prop:"booster",label:"助推器"}),d(c,{prop:"fuelCount",label:"燃料舱"}),d(c,{prop:"oxygenCount",label:"氧化剂舱"})]),_:1},8,["data"])])])],64)):(g(),C("div",Me,[...t[11]||(t[11]=[e("div",{class:"scan-line"},null,-1),e("div",{class:"empty-icon"},"📡",-1),e("p",{class:"empty-text"},"等待输入参数...",-1),e("p",{class:"empty-hint"},"请配置核心参数与载荷",-1)])]))]),_:1})])]),_:1})])}}}),Qe=O(Ke,[["__scopeId","data-v-3e8f9409"]]),Je={};function Ze(l,i){const s=b("k-slot"),o=b("el-scrollbar"),p=b("k-layout");return g(),I(p,null,{default:v(()=>[d(o,{class:"scrollbar"},{default:v(()=>[d(s,{name:"calculator"})]),_:1})]),_:1})}const et=O(Je,[["render",Ze],["__scopeId","data-v-e3ac158b"]]),tt={};function st(l,i){const s=b("k-slot"),o=b("el-scrollbar"),p=b("k-layout");return g(),I(p,null,{default:v(()=>[d(o,{class:"scrollbar"},{default:v(()=>[d(s,{name:"wikimodule"})]),_:1})]),_:1})}const ot=O(tt,[["render",st],["__scopeId","data-v-8201028f"]]),lt={class:"page-container"},at={class:"search-bar"},nt={class:"content-wrap"},it={class:"main-card"},ct={class:"card-header"},dt={class:"header-count"},rt={class:"list-wrap"},ut={key:0,class:"empty-state"},pt={class:"item-content"},mt=["href"],vt={class:"item-meta"},_t={class:"meta-tag"},ft={class:"meta-tag"},gt={class:"item-actions"},yt=["onClick","disabled"],bt={class:"card-footer"},kt={class:"pagination-group"},Ct=["disabled"],ht={class:"page-text"},wt=["disabled"],Tt={class:"sidebar-card"},St={class:"sidebar-menu"},$t=Y({__name:"wikimodule",setup(l){const i=D(()=>U.moduleManager||[]),s=M(""),o=M(false),p=M("all"),m=M(1),r=M(50),t=M({show:false,message:"",type:"success"});let u=null;const k=D(()=>i.value.filter(c=>!c.syncStatus).length),y=D(()=>{let c=i.value;if(p.value==="synced"?c=c.filter(n=>n.syncStatus):p.value==="unsynced"&&(c=c.filter(n=>!n.syncStatus)),s.value){const n=s.value.toLowerCase();c=c.filter(a=>a.pageTitle.toLowerCase().includes(n))}return c}),h=D(()=>Math.ceil(y.value.length/r.value)||1),w=D(()=>{const c=(m.value-1)*r.value;return y.value.slice(c,c+r.value)});N([p,s],()=>{m.value=1});const L=c=>`https://zh.kleiwikigg.org/${encodeURIComponent(c)}`,B=c=>c?new Date(c).toLocaleString("zh-CN"):"-",R=c=>c?Date.now()-new Date(c).getTime()>1e3*60*60*24*30:false,$=(c,n="success")=>{u&&clearTimeout(u),t.value={show:true,message:c,type:n},u=setTimeout(()=>{t.value.show=false},3e3)},q=async c=>{if(!c.syncStatus){o.value=true;try{const n=c.pageid;await se("module-sync/update",{pageid:n,operator:"Console-Admin"});const a=U.moduleManager;if(a&&Array.isArray(a)){const T=a.find(A=>A.pageid===n);T&&(T.syncStatus=true,T.lastEditTime=new Date().toISOString(),T.user="Console-Admin")}$("✅ 已标记为已同步")}catch(n){console.error(n),$("❌ 操作失败,请重试","error")}finally{o.value=false}}};return(c,n)=>(g(),C("div",lt,[_(" 顶部标题 "),n[10]||(n[10]=e("h1",{class:"page-title"},"📦 模块同步管理",-1)),_(" 搜索栏 "),e("div",at,[H(e("input",{"onUpdate:modelValue":n[0]||(n[0]=a=>s.value=a),class:"search-input",placeholder:"搜索模块名称..."},null,512),[[Z,s.value]])]),_(" 主内容区(左侧列表+右侧筛选栏) "),e("div",nt,[_(" 左侧主卡片 "),e("div",it,[_(" 卡片头部 - 剩余未同步数量放在顶部 "),e("div",ct,[e("span",dt,[n[7]||(n[7]=x(" 🔴 剩余 ",-1)),e("strong",null,f(k.value),1),x(" 个未同步模块 | 总计 "+f(i.value.length)+" 个模块 ",1)])]),_(" 列表区域 "),e("div",rt,[!w.value||w.value.length===0?(g(),C("div",ut," 暂无匹配的数据,请调整搜索或筛选条件 ")):_("v-if",true),(g(true),C(V,null,z(w.value,a=>(g(),C("div",{key:a.pageid,class:S(["todo-item",{"item-synced":a.syncStatus,"item-unsynced":!a.syncStatus}])},[_(" 左侧内容 "),e("div",pt,[e("a",{href:L(a.pageTitle),target:"_blank",class:"item-title"},f(a.pageTitle),9,mt),e("div",vt,[e("span",_t,"ID: "+f(a.pageid),1),e("span",ft,"编辑者: "+f(a.user),1),e("span",{class:S(["meta-tag",{stale:R(a.lastEditTime)}])}," 🕐 "+f(B(a.lastEditTime)),3)])]),_(" 右侧操作区 "),e("div",gt,[e("span",{class:S(["status-badge",a.syncStatus?"status-on":"status-off"])},f(a.syncStatus?"✅ 已同步":"⏸️ 未同步"),3),_(" 按钮文字改为“标记同步”,点击直接触发,不再弹窗 "),e("button",{class:"btn-mark-sync",onClick:T=>q(a),disabled:a.syncStatus},f(a.syncStatus?"已处理":"✅ 标记同步"),9,yt)])],2))),128))]),_(" 底部分页 "),e("div",bt,[e("div",kt,[e("button",{class:"btn-page",onClick:n[1]||(n[1]=a=>m.value--),disabled:m.value<=1},"← 上一页",8,Ct),e("span",ht,"第 "+f(m.value)+" 页 / 共 "+f(h.value)+" 页",1),e("button",{class:"btn-page",onClick:n[2]||(n[2]=a=>m.value++),disabled:m.value>=h.value},"下一页 →",8,wt),H(e("select",{class:"page-size-select","onUpdate:modelValue":n[3]||(n[3]=a=>r.value=a)},[...n[8]||(n[8]=[e("option",{value:20},"20条/页",-1),e("option",{value:50},"50条/页",-1),e("option",{value:100},"100条/页",-1)])],512),[[ee,r.value,void 0,{number:true}]])])])]),_(" 右侧筛选操作栏 "),e("div",Tt,[n[9]||(n[9]=e("div",{class:"sidebar-header"}," 筛选✨ ",-1)),e("div",St,[e("button",{class:S(["menu-item",{active:p.value==="all"}]),onClick:n[4]||(n[4]=a=>p.value="all")}," 全部 ",2),e("button",{class:S(["menu-item",{active:p.value==="synced"}]),onClick:n[5]||(n[5]=a=>p.value="synced")}," 已同步 ",2),e("button",{class:S(["menu-item",{active:p.value==="unsynced"}]),onClick:n[6]||(n[6]=a=>p.value="unsynced")}," 未同步 ",2)])])]),_(" Toast 提示 "),t.value.show?(g(),C("div",{key:0,class:S(["toast",t.value.type])},f(t.value.message),3)):_("v-if",true)]))}}),xt=O($t,[["__scopeId","data-v-f5f301cb"]]),Bt=l=>{l.page({name:"同步机器人",path:"/onilogs",component:ae,fields:["onilogs"]}),l.page({name:"火箭计算器",path:"/calculator",component:et}),l.page({name:"wiki模块同步状态",path:"/wikimodules",fields:["moduleManager"],component:ot}),l.slot({type:"calculator",component:Qe}),l.slot({type:"wikimodule",component:xt})};export{Bt as default};
1
+ import{defineComponent as z,openBlock as _,createElementBlock as g,createElementVNode as t,ref as B,computed as V,watch as Y,onMounted as j,resolveComponent as d,createBlock as D,withCtx as i,createVNode as o,unref as F,createTextVNode as T,Fragment as W,renderList as $,normalizeClass as q,toDisplayString as k,createCommentVNode as E,reactive as K}from"vue";import{store as Q,Time as J,message as A}from"@koishijs/client";/*! Element Plus Icons Vue v2.3.2 */var Z=z({name:"Bottom",__name:"bottom",setup(a){return(n,l)=>(_(),g("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[t("path",{fill:"currentColor",d:"M544 805.888V168a32 32 0 1 0-64 0v637.888L246.656 557.952a30.72 30.72 0 0 0-45.312 0 35.52 35.52 0 0 0 0 48.064l288 306.048a30.72 30.72 0 0 0 45.312 0l288-306.048a35.52 35.52 0 0 0 0-48 30.72 30.72 0 0 0-45.312 0L544 805.824z"})]))}}),ee=Z,te=z({name:"Top",__name:"top",setup(a){return(n,l)=>(_(),g("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[t("path",{fill:"currentColor",d:"M572.235 205.282v600.365a30.118 30.118 0 1 1-60.235 0V205.282L292.382 438.633a28.913 28.913 0 0 1-42.646 0 33.43 33.43 0 0 1 0-45.236l271.058-288.045a28.913 28.913 0 0 1 42.647 0L834.5 393.397a33.43 33.43 0 0 1 0 45.176 28.913 28.913 0 0 1-42.647 0l-219.618-233.23z"})]))}}),le=te;const se={class:"filter-container"},oe={class:"filter-row"},ae={class:"button-group"},ne={key:0,class:"empty-state"},ie="yyyy-MM-dd hh:mm:ss",re=z({__name:"page",setup(a){const n=B(),l=B("all"),s=B(""),m=B([]);function h(u){const p=J.template(ie,new Date(u.timestamp)),x=u.type.toUpperCase(),R=u.content.replace(/\u001b\[[0-9;]*m/g,"");return`[${p}] [${x}] ${R}`}const c=V(()=>m.value.filter(u=>!u.includes("[ERROR]")&&!u.includes("[WARN]"))),e=V(()=>m.value.filter(u=>u.includes("[ERROR]")||u.includes("[WARN]"))),r=V(()=>{switch(l.value){case"normal":return c.value;case"error":return e.value;default:return m.value}}),v=V(()=>{if(!s.value.trim())return r.value;const u=s.value.toLowerCase();return r.value.filter(p=>p.toLowerCase().includes(u))});function f(u){return u.includes("[ERROR]")?"log-error":u.includes("[WARN]")?"log-warn":u.includes("[INFO]")?"log-info":""}const y=()=>{n.value&&(n.value.scrollTop=0)},b=()=>{n.value&&(n.value.scrollTop=n.value.scrollHeight)};return Y(()=>Q.onilogs,u=>{u&&(m.value=u.map(h))},{deep:true,immediate:true}),Y(()=>m.value.length,()=>{setTimeout(b,0)}),j(()=>{b()}),(u,p)=>{const x=d("el-tab-pane"),R=d("el-tabs"),S=d("el-input"),M=d("el-icon"),O=d("el-button"),C=d("k-layout");return _(),D(C,null,{default:i(()=>[t("div",se,[o(R,{modelValue:l.value,"onUpdate:modelValue":p[0]||(p[0]=w=>l.value=w),class:"log-tabs"},{default:i(()=>[o(x,{name:"all",label:"全部日志"}),o(x,{name:"normal",label:"正常日志"}),o(x,{name:"error",label:"错误/警告"})]),_:1},8,["modelValue"]),t("div",oe,[o(S,{modelValue:s.value,"onUpdate:modelValue":p[1]||(p[1]=w=>s.value=w),placeholder:"搜索日志内容...",clearable:"",class:"filter-input"},null,8,["modelValue"]),t("div",ae,[o(O,{size:"small",onClick:y},{default:i(()=>[o(M,null,{default:i(()=>[o(F(le))]),_:1}),p[2]||(p[2]=T(" 顶部 ",-1))]),_:1}),o(O,{size:"small",onClick:b},{default:i(()=>[o(M,null,{default:i(()=>[o(F(ee))]),_:1}),p[3]||(p[3]=T(" 底部 ",-1))]),_:1})])])]),t("div",{class:"log-container",ref_key:"scrollRef",ref:n},[(_(true),g(W,null,$(v.value,(w,N)=>(_(),g("div",{key:N,class:"log-line"},[t("pre",{class:q(f(w))},k(w),3)]))),128)),v.value.length===0?(_(),g("div",ne,[...p[4]||(p[4]=[t("p",null,"暂无日志",-1)])])):E("v-if",true)],512)]),_:1})}}}),P=(a,n)=>{const l=a.__vccOpts||a;for(const[s,m]of n)l[s]=m;return l},ue=P(re,[["__scopeId","data-v-62639236"]]),H=10,ce=2e4,de=1.33,L={steamEngine:2e3,oilEngine:200,hydrogenEngine:500,biodieselEngine:200,CommandModule:200,RoboPilotCommandModule:200,SolidBooster:1e3,LiquidFuelTank:100,OxidizerTank:100,OxidizerTankLiquid:100,CargoBay:2e3,GasCargoBay:2e3,LiquidCargoBay:2e3,SpecialCargoBay:2e3,TouristModule:200,ResearchModule:200,person:30},I={steam:20,oil:40,hydrogen:60,biodiesel:50,booster:12e3},U={steam:900,fuel:900,oxygen:2700},pe={steam:"steamEngine",oil:"oilEngine",hydrogen:"hydrogenEngine",biodiesel:"biodieselEngine"},me={ResearchModule:"研究舱",CargoBay:"固体货舱",GasCargoBay:"气体货舱",LiquidCargoBay:"液体货舱",SpecialCargoBay:"生物货舱",TouristModule:"观光舱",RoboPilotCommandModule:"机器驾驶舱"};function X(a){return Math.ceil(Math.max(a,Math.pow(a/300,3.2)))}function _e(a){const n={};for(const[l,s]of Object.entries(a))typeof s=="number"&&s>=0&&(n[l]=s);return n}function fe(a){let n=L.CommandModule;for(const l in a)Object.prototype.hasOwnProperty.call(a,l)&&(n+=(L[l]||0)*a[l]);return n}function G(a){return a.length===0?[]:(a.sort((n,l)=>n.weight-l.weight),[a[0]])}function ve(a,n){a+=L.steamEngine;const l=[];for(let s=0;s<=H;s++){const m=a+L.SolidBooster*s,h=I.booster*s;for(let c=0;c<=U.steam;c++){const e=m+c,r=h+I.steam*c,v=X(e),f=r-v;if(f>=n){l.push({capacity:c,booster:s,weight:e,mergedDistance:r,punish:v,finalDistance:f});break}}}return G(l)}function ge(a,n,l,s,m,h,c,e){const r=Math.ceil(a/U.fuel),v=Math.ceil(a/U.oxygen),f=e==="liquid"?L.OxidizerTankLiquid:L.OxidizerTank,y=l+L.LiquidFuelTank*r+f*v,b=a*2,u=y+b,p=Math.floor(s+m*a*h),x=X(u),R=p-x;return R<c?{isValid:false}:{isValid:true,solution:{capacity:a,booster:n,fuelCount:r,oxygenCount:v,dryWeight:y,wetWeight:b,weight:u,mergedDistance:p,punish:x,finalDistance:R}}}function ye(a,n,l,s,m){const h=I[a],c=s==="liquid"?de:1;n+=L[pe[a]];const e=[];for(let r=0;r<=H;r++){const v=n+L.SolidBooster*r,f=I.booster*r;for(let y=0;y<=ce;y+=10){const b=ge(y,r,v,f,h,c,l,s);if(b.isValid){e.push(b.solution);break}}}if(e.length===0)return[];if(!m){const r=new Map;for(const v of e){const f=v.fuelCount;(!r.has(f)||r.get(f).weight>v.weight)&&r.set(f,v)}return G(Array.from(r.values()))}return G(e)}function be(a){const{type:n,distance:l,oxygenType:s,allowWaste:m,...h}=a,c=_e(h),e=fe(c);return n==="steam"?ve(e,l):ye(n,e,l,s,m)}const Ce={class:"rocket-calculator sci-fi-bg"},ke={class:"content-layout"},he={class:"config-section"},we={class:"distance-control"},xe={class:"distance-step-selector"},Re={class:"distance-input-wrapper"},Ee={class:"distance-value"},Te={class:"oxidizer-hint"},Le={class:"config-section"},Me={class:"modules-grid"},Be={class:"module-header"},Ve={class:"module-name"},Se={key:0,class:"empty-state"},Oe={key:1,class:"empty-state"},We={class:"key-stats"},qe={class:"stat-item primary"},De={class:"stat-value"},Ie={class:"stat-item success"},ze={class:"stat-value"},Ne={class:"stat-item warning"},Ae={class:"stat-value"},Fe={class:"detail-stats"},$e={class:"detail-grid"},Ue={class:"detail-item"},Ge={class:"detail-label"},Pe={class:"detail-value"},Ye={class:"detail-item"},He={class:"detail-value"},Xe={key:0,class:"detail-item"},je={class:"detail-value"},Ke={key:1,class:"detail-item"},Qe={class:"detail-value"},Je={class:"data-table-section"},Ze={class:"table-wrapper"},et=z({__name:"calculator",setup(a){const n=V(()=>{const c=[];for(let e=1e4;e<=19e4;e+=1e4)c.push(e);return c}),l=K({type:"steam",distance:1e4,oxygenType:"solid",allowWaste:false,ResearchModule:0,CargoBay:0,GasCargoBay:0,LiquidCargoBay:0,SpecialCargoBay:0,TouristModule:0,RoboPilotCommandModule:0}),s=B(null),m=()=>{try{const c=be(l);s.value=c,c.length>0?A.success("解算完成!已收敛到最优解"):A.warning("解算失败,无解空间")}catch(c){A.error("解算器异常"),console.error(c)}},h=()=>{l.type="steam",l.distance=1e4,l.oxygenType="solid",l.ResearchModule=0,l.CargoBay=0,l.GasCargoBay=0,l.LiquidCargoBay=0,l.SpecialCargoBay=0,l.TouristModule=0,l.RoboPilotCommandModule=0,s.value=null};return(c,e)=>{const r=d("el-option"),v=d("el-select"),f=d("el-form-item"),y=d("el-button"),b=d("el-radio-button"),u=d("el-radio-group"),p=d("el-form"),x=d("el-input-number"),R=d("k-card"),S=d("el-divider"),M=d("el-table-column"),O=d("el-table");return _(),g("div",Ce,[E(" 背景装饰网格 "),e[32]||(e[32]=t("div",{class:"grid-overlay"},null,-1)),o(R,{class:"header-card sci-fi-card"},{default:i(()=>[e[29]||(e[29]=t("div",{class:"header-glow"},null,-1)),e[30]||(e[30]=t("h1",{class:"sci-fi-title"},"ONI ROCKET CALCULATOR",-1)),e[31]||(e[31]=t("p",{class:"sci-fi-subtitle"},"缺氧火箭最优配置解算系统 · 基于官方物理引擎",-1)),t("div",ke,[E(" 输入控制台 "),o(R,{class:"form-card sci-fi-card"},{default:i(()=>[e[9]||(e[9]=t("div",{class:"card-header-line"},null,-1)),E(" 主配置 "),t("div",he,[e[6]||(e[6]=t("h3",{class:"section-title"},"【核心参数】",-1)),o(p,{model:l,size:"large",class:"sci-fi-form","label-position":"top"},{default:i(()=>[o(f,{label:"引擎类型"},{default:i(()=>[o(v,{modelValue:l.type,"onUpdate:modelValue":e[0]||(e[0]=C=>l.type=C),style:{width:"100%"},class:"sci-fi-select"},{default:i(()=>[o(r,{label:"蒸汽引擎",value:"steam"}),o(r,{label:"石油引擎",value:"oil"}),o(r,{label:"液氢引擎",value:"hydrogen"}),o(r,{label:"生物柴油引擎",value:"biodiesel"})]),_:1},8,["modelValue"])]),_:1}),o(f,{label:"目标轨道"},{default:i(()=>[t("div",we,[E(" 10000km 一档的步进选择器 "),t("div",xe,[(_(true),g(W,null,$(n.value,C=>(_(),D(y,{key:C,class:q(["step-btn",{active:l.distance===C}]),onClick:w=>l.distance=C},{default:i(()=>[T(k(C/1e3)+"k ",1)]),_:2},1032,["class","onClick"]))),128))]),t("div",Re,[e[2]||(e[2]=t("span",{class:"distance-label"},"当前:",-1)),t("span",Ee,k(l.distance.toLocaleString()),1),e[3]||(e[3]=t("span",{class:"unit"},"km",-1))])])]),_:1}),l.type!=="steam"?(_(),D(f,{key:0,label:"氧化剂"},{default:i(()=>[o(u,{modelValue:l.oxygenType,"onUpdate:modelValue":e[1]||(e[1]=C=>l.oxygenType=C),class:"sci-fi-radio-group"},{default:i(()=>[o(b,{label:"solid"},{default:i(()=>[...e[4]||(e[4]=[T("氧石",-1)])]),_:1}),o(b,{label:"liquid"},{default:i(()=>[...e[5]||(e[5]=[T("液氧",-1)])]),_:1})]),_:1},8,["modelValue"]),t("div",Te,[t("span",{class:q(["hint-item",{active:l.oxygenType==="solid"}])},"1.0x 效率",2),t("span",{class:q(["hint-item",{active:l.oxygenType==="liquid"}])},"1.33x 效率",2)])]),_:1})):E("v-if",true)]),_:1},8,["model"])]),e[10]||(e[10]=t("div",{class:"divider-line"},null,-1)),E(" 可选模块 "),t("div",Le,[e[8]||(e[8]=t("h3",{class:"section-title"},"【载荷配置】",-1)),o(p,{model:l,size:"large",class:"modules-form","label-position":"top"},{default:i(()=>[t("div",Me,[(_(true),g(W,null,$(F(me),(C,w)=>(_(),g("div",{key:w,class:"module-item"},[t("div",Be,[t("span",Ve,k(C),1)]),o(x,{modelValue:l[w],"onUpdate:modelValue":N=>l[w]=N,min:0,max:20,class:"module-input"},null,8,["modelValue","onUpdate:modelValue"])]))),128))]),o(f,{class:"calculate-btn-wrapper"},{default:i(()=>[o(y,{onClick:m,class:"sci-fi-calculate-btn"},{default:i(()=>[...e[7]||(e[7]=[t("span",{class:"btn-text"},"▶ 执行解算",-1),t("span",{class:"btn-glow"},null,-1)])]),_:1})]),_:1})]),_:1},8,["model"])])]),_:1}),E(" 结果显示面板 "),o(R,{class:"result-card sci-fi-card"},{default:i(()=>[e[28]||(e[28]=t("div",{class:"card-header-line"},null,-1)),s.value?s.value.length===0?(_(),g("div",Oe,[e[13]||(e[13]=t("div",{class:"empty-icon"},"⚠️",-1)),e[14]||(e[14]=t("p",{class:"empty-text error"},"解算失败",-1)),e[15]||(e[15]=t("p",{class:"empty-hint"},"无法找到满足条件的配置,请尝试减少载荷",-1)),o(y,{onClick:h,class:"sci-fi-reset-btn"},{default:i(()=>[...e[12]||(e[12]=[T("重置参数",-1)])]),_:1})])):(_(),g(W,{key:2},[e[27]||(e[27]=t("div",{class:"result-header"},[t("h3",{class:"result-title"},"✅ 最优解算结果"),t("div",{class:"result-status"},[t("span",{class:"status-dot"}),t("span",null,"CONVERGED")])],-1)),t("div",We,[t("div",qe,[e[17]||(e[17]=t("div",{class:"stat-label"},"总起飞重量",-1)),t("div",De,[T(k(s.value[0].weight.toLocaleString())+" ",1),e[16]||(e[16]=t("span",{class:"stat-unit"},"kg",-1))])]),t("div",Ie,[e[19]||(e[19]=t("div",{class:"stat-label"},"预计射程",-1)),t("div",ze,[T(k(s.value[0].finalDistance.toLocaleString())+" ",1),e[18]||(e[18]=t("span",{class:"stat-unit"},"km",-1))])]),t("div",Ne,[e[21]||(e[21]=t("div",{class:"stat-label"},"质量惩罚",-1)),t("div",Ae,[T(k(s.value[0].punish.toLocaleString())+" ",1),e[20]||(e[20]=t("span",{class:"stat-unit"},"km",-1))])])]),o(S,{class:"sci-fi-divider"}),t("div",Fe,[e[25]||(e[25]=t("h4",{class:"detail-title"},"【配置详情】",-1)),t("div",$e,[t("div",Ue,[t("span",Ge,k(l.type==="steam"?"蒸汽填充量":"燃料填充量"),1),t("span",Pe,k(s.value[0].capacity.toLocaleString())+" kg",1)]),t("div",Ye,[e[22]||(e[22]=t("span",{class:"detail-label"},"助推器数量",-1)),t("span",He,k(s.value[0].booster)+" 个",1)]),s.value[0].fuelCount!==void 0?(_(),g("div",Xe,[e[23]||(e[23]=t("span",{class:"detail-label"},"燃料舱数量",-1)),t("span",je,k(s.value[0].fuelCount)+" 个",1)])):E("v-if",true),s.value[0].oxygenCount!==void 0?(_(),g("div",Ke,[e[24]||(e[24]=t("span",{class:"detail-label"},"氧化剂舱数量",-1)),t("span",Qe,k(s.value[0].oxygenCount)+" 个",1)])):E("v-if",true)])]),o(S,{class:"sci-fi-divider"}),t("div",Je,[e[26]||(e[26]=t("h4",{class:"detail-title"},"【原始数据】",-1)),t("div",Ze,[o(O,{data:s.value,stripe:"",class:"sci-fi-table"},{default:i(()=>[o(M,{prop:"weight",label:"总重(kg)",sortable:""}),o(M,{prop:"finalDistance",label:"射程(km)",sortable:""}),o(M,{prop:"booster",label:"助推器"}),o(M,{prop:"fuelCount",label:"燃料舱"}),o(M,{prop:"oxygenCount",label:"氧化剂舱"})]),_:1},8,["data"])])])],64)):(_(),g("div",Se,[...e[11]||(e[11]=[t("div",{class:"scan-line"},null,-1),t("div",{class:"empty-icon"},"📡",-1),t("p",{class:"empty-text"},"等待输入参数...",-1),t("p",{class:"empty-hint"},"请配置核心参数与载荷",-1)])]))]),_:1})])]),_:1})])}}}),tt=P(et,[["__scopeId","data-v-3e8f9409"]]),lt={};function st(a,n){const l=d("k-slot"),s=d("el-scrollbar"),m=d("k-layout");return _(),D(m,null,{default:i(()=>[o(s,{class:"scrollbar"},{default:i(()=>[o(l,{name:"calculator"})]),_:1})]),_:1})}const ot=P(lt,[["render",st],["__scopeId","data-v-7f2607d9"]]),it=a=>{a.page({name:"同步机器人",path:"/onilogs",component:ue,fields:["onilogs"]}),a.page({name:"火箭计算器",path:"/calculator",component:ot}),a.slot({type:"calculator",component:tt})};export{it as default};
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .log-container[data-v-361e99da]{width:100%;height:100%;overflow-y:auto;padding:12px;font-family:monospace;background:#1e1e1e;color:#d4d4d4}.log-line[data-v-361e99da]{line-height:1.5;font-size:13px}pre[data-v-361e99da]{margin:0;font-family:inherit;white-space:pre-wrap;word-break:break-all}[data-v-3e8f9409]{box-sizing:border-box}.rocket-calculator[data-v-3e8f9409]{max-width:800px;margin:0 auto;padding:20px;box-sizing:border-box;position:relative;min-height:100vh;overflow-x:hidden}.sci-fi-bg[data-v-3e8f9409]{background:linear-gradient(135deg,#0a0e27,#1a1f3a,#0f172a);color:#e0e7ff}.grid-overlay[data-v-3e8f9409]{position:fixed;top:0;left:0;right:0;bottom:0;background-image:linear-gradient(rgba(0,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(0,255,255,.03) 1px,transparent 1px);background-size:40px 40px;pointer-events:none;z-index:0}.sci-fi-card[data-v-3e8f9409]{background:#0f172af2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(0,255,255,.2);box-shadow:0 0 20px #00ffff1a,inset 0 0 20px #00000080;position:relative;overflow:visible;z-index:1}.sci-fi-card[data-v-3e8f9409] .k-card__body{padding:24px}.card-header-line[data-v-3e8f9409]{position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,#00ffff,#8b5cf6,transparent);animation:lineGlow-3e8f9409 3s ease-in-out infinite;z-index:1}@keyframes lineGlow-3e8f9409{0%,to{opacity:.5}50%{opacity:1}}.header-card[data-v-3e8f9409]{margin-bottom:24px;text-align:center;position:relative;z-index:10;margin-top:8px}.header-glow[data-v-3e8f9409]{position:absolute;top:-50%;left:50%;transform:translate(-50%);width:200%;height:100%;background:radial-gradient(ellipse,rgba(139,92,246,.15) 0%,transparent 70%);pointer-events:none;z-index:-1}.sci-fi-title[data-v-3e8f9409]{margin:0 0 8px;font-size:28px;font-weight:800;letter-spacing:4px;color:#0ff;background:linear-gradient(90deg,#0ff,#8b5cf6,#0ff);background-size:200% auto;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:titleShine-3e8f9409 4s linear infinite;position:relative;z-index:2;text-shadow:0 0 30px rgba(0,255,255,.3);line-height:1.4}@keyframes titleShine-3e8f9409{0%{background-position:0% center}to{background-position:200% center}}.sci-fi-subtitle[data-v-3e8f9409]{margin:0;color:#64748b;font-size:13px;letter-spacing:2px;text-transform:uppercase;position:relative;z-index:2;line-height:1.5}.content-layout[data-v-3e8f9409]{display:flex;flex-direction:column;gap:24px;position:relative;z-index:1}.config-section[data-v-3e8f9409]{margin-bottom:20px;position:relative;z-index:1}.section-title[data-v-3e8f9409]{margin:0 0 20px;font-size:14px;color:#0ff;letter-spacing:2px;font-weight:600}.distance-control[data-v-3e8f9409]{width:100%}.distance-step-selector[data-v-3e8f9409]{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:16px}.step-btn[data-v-3e8f9409]{margin:0;background:#0000004d;border:1px solid rgba(0,255,255,.2);color:#94a3b8;padding:8px 4px;font-size:12px;font-weight:600;transition:all .2s ease;white-space:nowrap}.step-btn[data-v-3e8f9409]:hover{border-color:#00ffff80;color:#0ff;transform:translateY(-1px)}.step-btn.active[data-v-3e8f9409]{background:#00ffff26;border-color:#0ff;color:#0ff;box-shadow:0 0 15px #00ffff4d}.distance-input-wrapper[data-v-3e8f9409]{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px;background:#0000004d;border:1px solid rgba(139,92,246,.3);border-radius:4px}.distance-label[data-v-3e8f9409]{color:#64748b;font-size:13px}.distance-value[data-v-3e8f9409]{font-size:20px;font-weight:800;color:#8b5cf6}.unit[data-v-3e8f9409]{color:#8b5cf6;font-weight:600;font-size:14px}.modules-grid[data-v-3e8f9409]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.module-item[data-v-3e8f9409]{background:#00ffff0d;border:1px solid rgba(0,255,255,.1);padding:12px;border-radius:4px;transition:all .3s ease;display:flex;flex-direction:column;gap:8px}.module-item[data-v-3e8f9409]:hover{border-color:#00ffff4d;background:#00ffff14}.module-name[data-v-3e8f9409]{font-size:13px;color:#94a3b8}.module-input[data-v-3e8f9409]{width:100%}.module-input[data-v-3e8f9409] .el-input__wrapper{background:#0000004d;border:1px solid rgba(0,255,255,.2);box-shadow:none;padding:4px 6px}.module-input[data-v-3e8f9409] .el-input__inner{text-align:center;color:#0ff;font-weight:700;font-size:16px}.module-input[data-v-3e8f9409] .el-input-number__decrease,.module-input[data-v-3e8f9409] .el-input-number__increase{background:#0ff3;color:#0ff;border-color:#00ffff4d;font-weight:800;font-size:16px;transition:all .2s ease}.module-input[data-v-3e8f9409] .el-input-number__decrease:hover,.module-input[data-v-3e8f9409] .el-input-number__increase:hover{background:#0ff6;color:#fff}.module-input[data-v-3e8f9409] .el-input-number__decrease.is-disabled,.module-input[data-v-3e8f9409] .el-input-number__increase.is-disabled{background:#0003;color:#475569;border-color:#ffffff1a}.calculate-btn-wrapper[data-v-3e8f9409]{margin-top:24px;margin-bottom:0}.sci-fi-calculate-btn[data-v-3e8f9409]{width:100%;height:50px;background:linear-gradient(135deg,#0ff,#8b5cf6);border:none;color:#0a0e27;font-weight:800;font-size:16px;letter-spacing:2px;position:relative;overflow:hidden;transition:all .3s ease}.sci-fi-calculate-btn[data-v-3e8f9409]:hover{transform:translateY(-2px);box-shadow:0 10px 30px #00ffff4d}.btn-text[data-v-3e8f9409]{position:relative;z-index:1}.btn-glow[data-v-3e8f9409]{position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent);animation:btnScan-3e8f9409 2s ease-in-out infinite}@keyframes btnScan-3e8f9409{0%{left:-100%}to{left:100%}}.sci-fi-radio-group[data-v-3e8f9409]{width:100%;display:flex}.sci-fi-radio-group[data-v-3e8f9409] .el-radio-button{flex:1}.sci-fi-radio-group[data-v-3e8f9409] .el-radio-button__inner{width:100%;background:#0000004d;border:1px solid rgba(0,255,255,.2);color:#94a3b8;font-weight:600;padding:12px 10px;transition:all .2s ease}.sci-fi-radio-group[data-v-3e8f9409] .el-radio-button__inner:hover{color:#0ff;border-color:#0ff6}.sci-fi-radio-group[data-v-3e8f9409] .el-radio-button__orig-radio:checked+.el-radio-button__inner{background:#00ffff26;border-color:#0ff;color:#0ff;box-shadow:0 0 15px #0ff3}.oxidizer-hint[data-v-3e8f9409]{display:flex;justify-content:space-around;margin-top:8px}.hint-item[data-v-3e8f9409]{font-size:12px;color:#64748b;transition:all .2s ease}.hint-item.active[data-v-3e8f9409]{color:#0ff;font-weight:600}.divider-line[data-v-3e8f9409]{height:1px;background:linear-gradient(90deg,transparent,rgba(0,255,255,.3),transparent);margin:24px 0}.result-header[data-v-3e8f9409]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:8px}.result-title[data-v-3e8f9409]{margin:0;font-size:18px;color:#0ff;letter-spacing:2px}.result-status[data-v-3e8f9409]{display:flex;align-items:center;gap:8px;font-size:12px;color:#67c23a;letter-spacing:1px}.status-dot[data-v-3e8f9409]{width:8px;height:8px;background:#67c23a;border-radius:50%;animation:statusPulse-3e8f9409 2s ease-in-out infinite}@keyframes statusPulse-3e8f9409{0%,to{box-shadow:0 0 #67c23a66}50%{box-shadow:0 0 0 8px #67c23a00}}.key-stats[data-v-3e8f9409]{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}.stat-item[data-v-3e8f9409]{background:#0000004d;border:1px solid rgba(255,255,255,.1);padding:16px;text-align:center;position:relative}.stat-item.primary[data-v-3e8f9409]{border-color:#0ff6;box-shadow:0 0 20px #00ffff1a}.stat-item.success[data-v-3e8f9409]{border-color:#67c23a66;box-shadow:0 0 20px #67c23a1a}.stat-item.warning[data-v-3e8f9409]{border-color:#e6a23c66;box-shadow:0 0 20px #e6a23c1a}.stat-label[data-v-3e8f9409]{font-size:12px;color:#64748b;margin-bottom:8px;text-transform:uppercase;letter-spacing:1px}.stat-value[data-v-3e8f9409]{font-size:24px;font-weight:800}.stat-item.primary .stat-value[data-v-3e8f9409]{color:#0ff}.stat-item.success .stat-value[data-v-3e8f9409]{color:#67c23a}.stat-item.warning .stat-value[data-v-3e8f9409]{color:#e6a23c}.stat-unit[data-v-3e8f9409]{font-size:14px;opacity:.7}.detail-title[data-v-3e8f9409]{margin:0 0 16px;font-size:14px;color:#8b5cf6;letter-spacing:2px}.detail-grid[data-v-3e8f9409]{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.detail-item[data-v-3e8f9409]{display:flex;justify-content:space-between;align-items:center;background:#0003;padding:12px 16px;border-left:3px solid #8b5cf6;gap:8px}.detail-label[data-v-3e8f9409]{font-size:13px;color:#94a3b8}.detail-value[data-v-3e8f9409]{font-size:16px;font-weight:700;color:#e0e7ff;text-align:right}.sci-fi-divider[data-v-3e8f9409]{border-color:#00ffff1a;margin:24px 0}.table-wrapper[data-v-3e8f9409]{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.sci-fi-table[data-v-3e8f9409]{background:#0003;min-width:500px}.sci-fi-table[data-v-3e8f9409] .el-table__header-wrapper{background:#00ffff0d}.sci-fi-table[data-v-3e8f9409] .el-table th{background:transparent;color:#0ff;border-color:#00ffff1a}.sci-fi-table[data-v-3e8f9409] .el-table td{border-color:#ffffff0d}.sci-fi-table[data-v-3e8f9409] .el-table--striped .el-table__body tr.el-table__row--striped{background:#0000001a}.empty-state[data-v-3e8f9409]{text-align:center;padding:60px 20px;position:relative}.scan-line[data-v-3e8f9409]{position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,rgba(0,255,255,.5),transparent);animation:scanMove-3e8f9409 3s linear infinite}@keyframes scanMove-3e8f9409{0%{top:0;opacity:0}10%{opacity:1}90%{opacity:1}to{top:100%;opacity:0}}.empty-icon[data-v-3e8f9409]{font-size:48px;margin-bottom:16px}.empty-text[data-v-3e8f9409]{font-size:16px;color:#64748b;margin:0 0 8px;letter-spacing:1px}.empty-text.error[data-v-3e8f9409]{color:#f87171}.empty-hint[data-v-3e8f9409]{font-size:13px;color:#475569;margin:0 0 24px;line-height:1.5}.sci-fi-reset-btn[data-v-3e8f9409]{background:#8b5cf633;border:1px solid #8b5cf6;color:#8b5cf6}.sci-fi-reset-btn[data-v-3e8f9409]:hover{background:#8b5cf64d;color:#a78bfa}.sci-fi-form[data-v-3e8f9409] .el-form-item__label{color:#94a3b8;font-weight:600;padding-bottom:6px;line-height:1.4}.sci-fi-select[data-v-3e8f9409] .el-input__wrapper{background:#0000004d;border:1px solid rgba(0,255,255,.2);box-shadow:none}.sci-fi-select[data-v-3e8f9409] .el-input__wrapper:hover{border-color:#0ff6}.sci-fi-select[data-v-3e8f9409] .el-input__wrapper.is-focus{border-color:#0ff;box-shadow:0 0 10px #0ff3}@media screen and (max-width: 600px){.rocket-calculator[data-v-3e8f9409]{padding:12px}.sci-fi-title[data-v-3e8f9409]{font-size:20px;letter-spacing:2px}.sci-fi-card[data-v-3e8f9409] .k-card__body{padding:16px}.key-stats[data-v-3e8f9409],.modules-grid[data-v-3e8f9409],.detail-grid[data-v-3e8f9409]{grid-template-columns:1fr}.distance-step-selector[data-v-3e8f9409]{grid-template-columns:repeat(3,1fr)}}.scrollbar[data-v-e3ac158b]{background:linear-gradient(135deg,#0a0e27,#1a1f3a,#0f172a);color:#e0e7ff}.page-container[data-v-f5f301cb]{font-family:PingFang SC,Microsoft YaHei,-apple-system,BlinkMacSystemFont,sans-serif;background-color:#e8f4f8;background-image:radial-gradient(#d0e2e9 10%,transparent 11%),radial-gradient(#d0e2e9 10%,transparent 11%);background-size:30px 30px;background-position:0 0,15px 15px;min-height:100vh;padding:30px 20px;box-sizing:border-box}.page-title[data-v-f5f301cb]{text-align:center;font-size:42px;font-weight:800;color:#333;margin:0 0 20px;letter-spacing:2px;text-shadow:2px 2px 0 #ffffff}.search-bar[data-v-f5f301cb]{max-width:1000px;margin:0 auto 30px}.search-input[data-v-f5f301cb]{width:100%;box-sizing:border-box;padding:18px 22px;font-size:18px;border:3px solid #333333;border-radius:16px;background:#fff;box-shadow:4px 4px #333;outline:none;transition:all .2s ease}.search-input[data-v-f5f301cb]:focus{transform:translate(2px,2px);box-shadow:2px 2px #333}.search-input[data-v-f5f301cb]::placeholder{color:#999}.content-wrap[data-v-f5f301cb]{display:flex;gap:20px;max-width:1100px;margin:0 auto;align-items:flex-start}.main-card[data-v-f5f301cb]{flex:1;min-width:0;background:#fff;border:3px solid #333333;border-radius:18px;box-shadow:6px 6px #333;overflow:hidden}.card-header[data-v-f5f301cb]{background:#8dd7d0;padding:14px 24px;border-bottom:3px solid #333333}.header-count[data-v-f5f301cb]{font-size:16px;color:#333;font-weight:500}.header-count strong[data-v-f5f301cb]{font-size:20px;color:#c0392b}.list-wrap[data-v-f5f301cb]{padding:24px;min-height:300px}.empty-state[data-v-f5f301cb]{text-align:center;padding:60px 20px;color:#666;font-size:16px}.todo-item[data-v-f5f301cb]{border:3px solid #333333;border-radius:16px;padding:18px 22px;margin-bottom:16px;box-shadow:4px 4px #333;display:flex;justify-content:space-between;align-items:center;gap:20px;transition:all .2s ease}.todo-item[data-v-f5f301cb]:last-child{margin-bottom:0}.todo-item[data-v-f5f301cb]:hover{transform:translate(2px,2px);box-shadow:2px 2px #333}.item-unsynced[data-v-f5f301cb]{background:#f8f3e6}.item-synced[data-v-f5f301cb]{background:#d4f1f0;opacity:.9}.item-content[data-v-f5f301cb]{flex:1;min-width:0}.item-title[data-v-f5f301cb]{display:block;font-size:17px;font-weight:600;color:#333;text-decoration:none;margin-bottom:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-title[data-v-f5f301cb]:hover{color:#569edf;text-decoration:underline}.item-meta[data-v-f5f301cb]{display:flex;gap:16px;flex-wrap:wrap}.meta-tag[data-v-f5f301cb]{font-size:13px;color:#666}.meta-tag.stale[data-v-f5f301cb]{color:#e07a5f;font-weight:500}.item-actions[data-v-f5f301cb]{display:flex;align-items:center;gap:12px;flex-shrink:0}.status-badge[data-v-f5f301cb]{padding:6px 12px;border-radius:10px;border:2px solid #333;font-size:13px;font-weight:600;box-shadow:2px 2px #333}.status-on[data-v-f5f301cb]{background:#d4edda;color:#155724}.status-off[data-v-f5f301cb]{background:#f8d7da;color:#721c24}button[data-v-f5f301cb]{cursor:pointer;border-radius:10px;border:2px solid #333333;font-weight:600;transition:all .2s ease;box-shadow:2px 2px #333}button[data-v-f5f301cb]:hover:not(:disabled){transform:translate(1px,1px);box-shadow:1px 1px #333}button[data-v-f5f301cb]:disabled{opacity:.6;cursor:not-allowed;background:#e0e0e0;color:#999}.btn-mark-sync[data-v-f5f301cb]{padding:7px 14px;font-size:14px;background:#b5e48c;color:#2d5016}.btn-mark-sync[data-v-f5f301cb]:hover:not(:disabled){background:#90d26d}.card-footer[data-v-f5f301cb]{background:#fff;padding:16px 24px;border-top:3px solid #333333;display:flex;justify-content:center;align-items:center}.pagination-group[data-v-f5f301cb]{display:flex;align-items:center;gap:12px}.btn-page[data-v-f5f301cb]{padding:6px 12px;font-size:14px;background:#ffd6e0;color:#333}.page-text[data-v-f5f301cb]{font-size:14px;color:#666}.page-size-select[data-v-f5f301cb]{padding:6px 8px;border:2px solid #333;border-radius:8px;background:#fff;font-weight:500;box-shadow:2px 2px #333;outline:none}.sidebar-card[data-v-f5f301cb]{width:180px;flex-shrink:0;background:#fff;border:3px solid #333333;border-radius:16px;box-shadow:6px 6px #333;overflow:hidden;position:sticky;top:20px}.sidebar-header[data-v-f5f301cb]{background:#8dd7d0;padding:12px;text-align:center;font-size:18px;font-weight:700;color:#333;border-bottom:3px solid #333}.sidebar-menu[data-v-f5f301cb]{display:flex;flex-direction:column}.menu-item[data-v-f5f301cb]{padding:12px 16px;background:#fff;border:none;border-radius:0;box-shadow:none;border-bottom:2px solid #f0f0f0;font-size:15px;transition:all .2s}.menu-item[data-v-f5f301cb]:last-child{border-bottom:none}.menu-item[data-v-f5f301cb]:hover{background:#f0f8ff;transform:none;box-shadow:none}.menu-item.active[data-v-f5f301cb]{background:#8dd7d0;color:#333;font-weight:700}.toast[data-v-f5f301cb]{position:fixed;top:30px;left:50%;transform:translate(-50%);padding:14px 24px;border-radius:12px;border:3px solid #333;box-shadow:4px 4px #333;color:#333;font-weight:600;font-size:15px;z-index:9999;animation:toastDown-f5f301cb .3s ease-out}.toast.success[data-v-f5f301cb]{background:#d4edda}.toast.error[data-v-f5f301cb]{background:#f8d7da}@keyframes toastDown-f5f301cb{0%{transform:translate(-50%,-20px);opacity:0}to{transform:translate(-50%);opacity:1}}
1
+ .filter-container[data-v-62639236]{background:#fff;padding:16px;margin-bottom:12px;border-radius:4px;box-shadow:0 2px 4px #0000001a}.log-tabs[data-v-62639236]{margin-bottom:16px}.filter-row[data-v-62639236]{display:flex;gap:12px;align-items:center}.filter-input[data-v-62639236]{flex:1}.button-group[data-v-62639236]{display:flex;gap:8px}.log-container[data-v-62639236]{width:100%;height:calc(100vh - 220px);overflow-y:auto;padding:12px;font-family:monospace;background:#1e1e1e;color:#d4d4d4;border-radius:4px}.log-line[data-v-62639236]{line-height:1.5;font-size:13px}pre[data-v-62639236]{margin:0;font-family:inherit;white-space:pre-wrap;word-break:break-all}.log-error[data-v-62639236]{color:#f44747}.log-warn[data-v-62639236]{color:#dcdcaa}.log-info[data-v-62639236]{color:#4fc1ff}.empty-state[data-v-62639236]{display:flex;justify-content:center;align-items:center;height:100%;color:gray;font-size:14px}[data-v-3e8f9409]{box-sizing:border-box}.rocket-calculator[data-v-3e8f9409]{max-width:800px;margin:0 auto;padding:20px;box-sizing:border-box;position:relative;min-height:100vh;overflow-x:hidden}.sci-fi-bg[data-v-3e8f9409]{background:linear-gradient(135deg,#0a0e27,#1a1f3a,#0f172a);color:#e0e7ff}.grid-overlay[data-v-3e8f9409]{position:fixed;top:0;left:0;right:0;bottom:0;background-image:linear-gradient(rgba(0,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(0,255,255,.03) 1px,transparent 1px);background-size:40px 40px;pointer-events:none;z-index:0}.sci-fi-card[data-v-3e8f9409]{background:#0f172af2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(0,255,255,.2);box-shadow:0 0 20px #00ffff1a,inset 0 0 20px #00000080;position:relative;overflow:visible;z-index:1}.sci-fi-card[data-v-3e8f9409] .k-card__body{padding:24px}.card-header-line[data-v-3e8f9409]{position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,#00ffff,#8b5cf6,transparent);animation:lineGlow-3e8f9409 3s ease-in-out infinite;z-index:1}@keyframes lineGlow-3e8f9409{0%,to{opacity:.5}50%{opacity:1}}.header-card[data-v-3e8f9409]{margin-bottom:24px;text-align:center;position:relative;z-index:10;margin-top:8px}.header-glow[data-v-3e8f9409]{position:absolute;top:-50%;left:50%;transform:translate(-50%);width:200%;height:100%;background:radial-gradient(ellipse,rgba(139,92,246,.15) 0%,transparent 70%);pointer-events:none;z-index:-1}.sci-fi-title[data-v-3e8f9409]{margin:0 0 8px;font-size:28px;font-weight:800;letter-spacing:4px;color:#0ff;background:linear-gradient(90deg,#0ff,#8b5cf6,#0ff);background-size:200% auto;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:titleShine-3e8f9409 4s linear infinite;position:relative;z-index:2;text-shadow:0 0 30px rgba(0,255,255,.3);line-height:1.4}@keyframes titleShine-3e8f9409{0%{background-position:0% center}to{background-position:200% center}}.sci-fi-subtitle[data-v-3e8f9409]{margin:0;color:#64748b;font-size:13px;letter-spacing:2px;text-transform:uppercase;position:relative;z-index:2;line-height:1.5}.content-layout[data-v-3e8f9409]{display:flex;flex-direction:column;gap:24px;position:relative;z-index:1}.config-section[data-v-3e8f9409]{margin-bottom:20px;position:relative;z-index:1}.section-title[data-v-3e8f9409]{margin:0 0 20px;font-size:14px;color:#0ff;letter-spacing:2px;font-weight:600}.distance-control[data-v-3e8f9409]{width:100%}.distance-step-selector[data-v-3e8f9409]{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:16px}.step-btn[data-v-3e8f9409]{margin:0;background:#0000004d;border:1px solid rgba(0,255,255,.2);color:#94a3b8;padding:8px 4px;font-size:12px;font-weight:600;transition:all .2s ease;white-space:nowrap}.step-btn[data-v-3e8f9409]:hover{border-color:#00ffff80;color:#0ff;transform:translateY(-1px)}.step-btn.active[data-v-3e8f9409]{background:#00ffff26;border-color:#0ff;color:#0ff;box-shadow:0 0 15px #00ffff4d}.distance-input-wrapper[data-v-3e8f9409]{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px;background:#0000004d;border:1px solid rgba(139,92,246,.3);border-radius:4px}.distance-label[data-v-3e8f9409]{color:#64748b;font-size:13px}.distance-value[data-v-3e8f9409]{font-size:20px;font-weight:800;color:#8b5cf6}.unit[data-v-3e8f9409]{color:#8b5cf6;font-weight:600;font-size:14px}.modules-grid[data-v-3e8f9409]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.module-item[data-v-3e8f9409]{background:#00ffff0d;border:1px solid rgba(0,255,255,.1);padding:12px;border-radius:4px;transition:all .3s ease;display:flex;flex-direction:column;gap:8px}.module-item[data-v-3e8f9409]:hover{border-color:#00ffff4d;background:#00ffff14}.module-name[data-v-3e8f9409]{font-size:13px;color:#94a3b8}.module-input[data-v-3e8f9409]{width:100%}.module-input[data-v-3e8f9409] .el-input__wrapper{background:#0000004d;border:1px solid rgba(0,255,255,.2);box-shadow:none;padding:4px 6px}.module-input[data-v-3e8f9409] .el-input__inner{text-align:center;color:#0ff;font-weight:700;font-size:16px}.module-input[data-v-3e8f9409] .el-input-number__decrease,.module-input[data-v-3e8f9409] .el-input-number__increase{background:#0ff3;color:#0ff;border-color:#00ffff4d;font-weight:800;font-size:16px;transition:all .2s ease}.module-input[data-v-3e8f9409] .el-input-number__decrease:hover,.module-input[data-v-3e8f9409] .el-input-number__increase:hover{background:#0ff6;color:#fff}.module-input[data-v-3e8f9409] .el-input-number__decrease.is-disabled,.module-input[data-v-3e8f9409] .el-input-number__increase.is-disabled{background:#0003;color:#475569;border-color:#ffffff1a}.calculate-btn-wrapper[data-v-3e8f9409]{margin-top:24px;margin-bottom:0}.sci-fi-calculate-btn[data-v-3e8f9409]{width:100%;height:50px;background:linear-gradient(135deg,#0ff,#8b5cf6);border:none;color:#0a0e27;font-weight:800;font-size:16px;letter-spacing:2px;position:relative;overflow:hidden;transition:all .3s ease}.sci-fi-calculate-btn[data-v-3e8f9409]:hover{transform:translateY(-2px);box-shadow:0 10px 30px #00ffff4d}.btn-text[data-v-3e8f9409]{position:relative;z-index:1}.btn-glow[data-v-3e8f9409]{position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent);animation:btnScan-3e8f9409 2s ease-in-out infinite}@keyframes btnScan-3e8f9409{0%{left:-100%}to{left:100%}}.sci-fi-radio-group[data-v-3e8f9409]{width:100%;display:flex}.sci-fi-radio-group[data-v-3e8f9409] .el-radio-button{flex:1}.sci-fi-radio-group[data-v-3e8f9409] .el-radio-button__inner{width:100%;background:#0000004d;border:1px solid rgba(0,255,255,.2);color:#94a3b8;font-weight:600;padding:12px 10px;transition:all .2s ease}.sci-fi-radio-group[data-v-3e8f9409] .el-radio-button__inner:hover{color:#0ff;border-color:#0ff6}.sci-fi-radio-group[data-v-3e8f9409] .el-radio-button__orig-radio:checked+.el-radio-button__inner{background:#00ffff26;border-color:#0ff;color:#0ff;box-shadow:0 0 15px #0ff3}.oxidizer-hint[data-v-3e8f9409]{display:flex;justify-content:space-around;margin-top:8px}.hint-item[data-v-3e8f9409]{font-size:12px;color:#64748b;transition:all .2s ease}.hint-item.active[data-v-3e8f9409]{color:#0ff;font-weight:600}.divider-line[data-v-3e8f9409]{height:1px;background:linear-gradient(90deg,transparent,rgba(0,255,255,.3),transparent);margin:24px 0}.result-header[data-v-3e8f9409]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:8px}.result-title[data-v-3e8f9409]{margin:0;font-size:18px;color:#0ff;letter-spacing:2px}.result-status[data-v-3e8f9409]{display:flex;align-items:center;gap:8px;font-size:12px;color:#67c23a;letter-spacing:1px}.status-dot[data-v-3e8f9409]{width:8px;height:8px;background:#67c23a;border-radius:50%;animation:statusPulse-3e8f9409 2s ease-in-out infinite}@keyframes statusPulse-3e8f9409{0%,to{box-shadow:0 0 #67c23a66}50%{box-shadow:0 0 0 8px #67c23a00}}.key-stats[data-v-3e8f9409]{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}.stat-item[data-v-3e8f9409]{background:#0000004d;border:1px solid rgba(255,255,255,.1);padding:16px;text-align:center;position:relative}.stat-item.primary[data-v-3e8f9409]{border-color:#0ff6;box-shadow:0 0 20px #00ffff1a}.stat-item.success[data-v-3e8f9409]{border-color:#67c23a66;box-shadow:0 0 20px #67c23a1a}.stat-item.warning[data-v-3e8f9409]{border-color:#e6a23c66;box-shadow:0 0 20px #e6a23c1a}.stat-label[data-v-3e8f9409]{font-size:12px;color:#64748b;margin-bottom:8px;text-transform:uppercase;letter-spacing:1px}.stat-value[data-v-3e8f9409]{font-size:24px;font-weight:800}.stat-item.primary .stat-value[data-v-3e8f9409]{color:#0ff}.stat-item.success .stat-value[data-v-3e8f9409]{color:#67c23a}.stat-item.warning .stat-value[data-v-3e8f9409]{color:#e6a23c}.stat-unit[data-v-3e8f9409]{font-size:14px;opacity:.7}.detail-title[data-v-3e8f9409]{margin:0 0 16px;font-size:14px;color:#8b5cf6;letter-spacing:2px}.detail-grid[data-v-3e8f9409]{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.detail-item[data-v-3e8f9409]{display:flex;justify-content:space-between;align-items:center;background:#0003;padding:12px 16px;border-left:3px solid #8b5cf6;gap:8px}.detail-label[data-v-3e8f9409]{font-size:13px;color:#94a3b8}.detail-value[data-v-3e8f9409]{font-size:16px;font-weight:700;color:#e0e7ff;text-align:right}.sci-fi-divider[data-v-3e8f9409]{border-color:#00ffff1a;margin:24px 0}.table-wrapper[data-v-3e8f9409]{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.sci-fi-table[data-v-3e8f9409]{background:#0003;min-width:500px}.sci-fi-table[data-v-3e8f9409] .el-table__header-wrapper{background:#00ffff0d}.sci-fi-table[data-v-3e8f9409] .el-table th{background:transparent;color:#0ff;border-color:#00ffff1a}.sci-fi-table[data-v-3e8f9409] .el-table td{border-color:#ffffff0d}.sci-fi-table[data-v-3e8f9409] .el-table--striped .el-table__body tr.el-table__row--striped{background:#0000001a}.empty-state[data-v-3e8f9409]{text-align:center;padding:60px 20px;position:relative}.scan-line[data-v-3e8f9409]{position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,rgba(0,255,255,.5),transparent);animation:scanMove-3e8f9409 3s linear infinite}@keyframes scanMove-3e8f9409{0%{top:0;opacity:0}10%{opacity:1}90%{opacity:1}to{top:100%;opacity:0}}.empty-icon[data-v-3e8f9409]{font-size:48px;margin-bottom:16px}.empty-text[data-v-3e8f9409]{font-size:16px;color:#64748b;margin:0 0 8px;letter-spacing:1px}.empty-text.error[data-v-3e8f9409]{color:#f87171}.empty-hint[data-v-3e8f9409]{font-size:13px;color:#475569;margin:0 0 24px;line-height:1.5}.sci-fi-reset-btn[data-v-3e8f9409]{background:#8b5cf633;border:1px solid #8b5cf6;color:#8b5cf6}.sci-fi-reset-btn[data-v-3e8f9409]:hover{background:#8b5cf64d;color:#a78bfa}.sci-fi-form[data-v-3e8f9409] .el-form-item__label{color:#94a3b8;font-weight:600;padding-bottom:6px;line-height:1.4}.sci-fi-select[data-v-3e8f9409] .el-input__wrapper{background:#0000004d;border:1px solid rgba(0,255,255,.2);box-shadow:none}.sci-fi-select[data-v-3e8f9409] .el-input__wrapper:hover{border-color:#0ff6}.sci-fi-select[data-v-3e8f9409] .el-input__wrapper.is-focus{border-color:#0ff;box-shadow:0 0 10px #0ff3}@media screen and (max-width: 600px){.rocket-calculator[data-v-3e8f9409]{padding:12px}.sci-fi-title[data-v-3e8f9409]{font-size:20px;letter-spacing:2px}.sci-fi-card[data-v-3e8f9409] .k-card__body{padding:16px}.key-stats[data-v-3e8f9409],.modules-grid[data-v-3e8f9409],.detail-grid[data-v-3e8f9409]{grid-template-columns:1fr}.distance-step-selector[data-v-3e8f9409]{grid-template-columns:repeat(3,1fr)}}.scrollbar[data-v-7f2607d9]{background:linear-gradient(135deg,#0a0e27,#1a1f3a,#0f172a);color:#e0e7ff}
package/lib/index.d.ts CHANGED
@@ -1,22 +1,11 @@
1
1
  import { Context, Schema } from "koishi";
2
- import { Mwn } from "mwn";
2
+ import { WikiBotServiceConfig } from "./services/wikiBotService";
3
+ import { RouteRedirectConfig } from "./plugins/routeRedirect";
4
+ import { SyncCommandsConfig } from "./plugins/syncCommands";
5
+ import { QueryCommandsConfig } from "./plugins/queryCommands";
6
+ import { UpdateCommandsConfig } from "./plugins/updateCommands";
3
7
  export declare const name = "oni-sync-bot";
4
- export declare const inject: string[];
5
- export interface Config {
6
- ggUsername: string;
7
- ggPassword: string;
8
- bwikiusername: string;
9
- bwikipassword: string;
10
- domain: string;
11
- logsUrl: string;
12
- }
13
- declare module "koishi" {
14
- interface Context {
15
- wikibot: {
16
- wikigg: Mwn;
17
- bwiki: Mwn;
18
- };
19
- }
8
+ export interface Config extends WikiBotServiceConfig, RouteRedirectConfig, SyncCommandsConfig, QueryCommandsConfig, UpdateCommandsConfig {
20
9
  }
21
10
  export declare const Config: Schema<Config>;
22
11
  export declare function apply(ctx: Context, config: Config): void;