| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- (function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))n(l);new MutationObserver(l=>{for(const a of l)if(a.type==="childList")for(const c of a.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&n(c)}).observe(document,{childList:!0,subtree:!0});function s(l){const a={};return l.integrity&&(a.integrity=l.integrity),l.referrerPolicy&&(a.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?a.credentials="include":l.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function n(l){if(l.ep)return;l.ep=!0;const a=s(l);fetch(l.href,a)}})();/**
- * @vue/shared v3.5.43
- * (c) 2018-present Yuxi (Evan) You and Vue contributors
- * @license MIT
- **/function jn(t){const e=Object.create(null);for(const s of t.split(","))e[s]=1;return s=>s in e}const Ft={},Le=[],he=()=>{},Bl=()=>!1,Bs=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&(t.charCodeAt(2)>122||t.charCodeAt(2)<97),Ws=t=>t.startsWith("onUpdate:"),Ht=Object.assign,qn=(t,e)=>{const s=t.indexOf(e);s>-1&&t.splice(s,1)},so=Object.prototype.hasOwnProperty,Mt=(t,e)=>so.call(t,e),mt=Array.isArray,Oe=t=>vs(t)==="[object Map]",Os=t=>vs(t)==="[object Set]",sl=t=>vs(t)==="[object Date]",vt=t=>typeof t=="function",Dt=t=>typeof t=="string",_e=t=>typeof t=="symbol",Ct=t=>t!==null&&typeof t=="object",Wl=t=>(Ct(t)||vt(t))&&vt(t.then)&&vt(t.catch),Kl=Object.prototype.toString,vs=t=>Kl.call(t),no=t=>vs(t).slice(8,-1),Ul=t=>vs(t)==="[object Object]",Dn=t=>Dt(t)&&t!=="NaN"&&t[0]!=="-"&&""+parseInt(t,10)===t,ns=jn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ks=t=>{const e=Object.create(null);return(s=>e[s]||(e[s]=t(s)))},lo=/-\w/g,Yt=Ks(t=>t.replace(lo,e=>e.slice(1).toUpperCase())),ao=/\B([A-Z])/g,qe=Ks(t=>t.replace(ao,"-$1").toLowerCase()),Us=Ks(t=>t.charAt(0).toUpperCase()+t.slice(1)),en=Ks(t=>t?`on${Us(t)}`:""),fe=(t,e)=>!Object.is(t,e),Ts=(t,...e)=>{for(let s=0;s<t.length;s++)t[s](...e)},Vl=(t,e,s,n=!1)=>{Object.defineProperty(t,e,{configurable:!0,enumerable:!1,writable:n,value:s})},Pn=t=>{const e=parseFloat(t);return isNaN(e)?t:e};let nl;const Vs=()=>nl||(nl=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Rt(t){if(mt(t)){const e={};for(let s=0;s<t.length;s++){const n=t[s],l=Dt(n)?co(n):Rt(n);if(l)for(const a in l)e[a]=l[a]}return e}else if(Dt(t)||Ct(t))return t}const oo=/;(?![^(]*\))/g,ro=/:([^]+)/,io=/"(?:[^"\\]|\\[^])*"|'(?:[^'\\]|\\[^])*'|\\[^]|\/\*[^]*?\*\//g;function co(t){const e={};return t.replace(io,s=>s.startsWith("/*")?"":s).split(oo).forEach(s=>{if(s){const n=s.split(ro);n.length>1&&(e[n[0].trim()]=n[1].trim())}}),e}function Qt(t){let e="";if(Dt(t))e=t;else if(mt(t))for(let s=0;s<t.length;s++){const n=Qt(t[s]);n&&(e+=n+" ")}else if(Ct(t))for(const s in t)t[s]&&(e+=s+" ");return e.trim()}const uo="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",po=jn(uo);function zl(t){return!!t||t===""}function fo(t,e,s){if(t.length!==e.length)return!1;let n=!0;for(let l=0;n&&l<t.length;l++)n=zs(t[l],e[l],s);return n}function ll(t,e,s){if(t.size!==e.size)return!1;const n=Array.from(e),l=new Uint8Array(n.length);for(const a of t){let c=-1;for(let r=0;r<n.length;r++)if(!l[r]&&zs(a,n[r],s)){c=r;break}if(c<0)return!1;l[c]=1}return!0}function ho(t,e,s){let n=Oe(t),l=Oe(e);if(n||l||(n=Os(t),l=Os(e),n||l))return n&&l?ll(t,e,s):!1;const a=Object.keys(t).length,c=Object.keys(e).length;if(a!==c)return!1;for(const r in t){const u=t.hasOwnProperty(r),_=e.hasOwnProperty(r);if(u&&!_||!u&&_||!zs(t[r],e[r],s))return!1}return String(t)===String(e)}function al(t,e,s,n){s||(s=[new Map,new Map]);const[l,a]=s;if(l.has(t)||a.has(e))return l.get(t)===e&&a.get(e)===t;l.set(t,e),a.set(e,t);const c=n(t,e,s);return l.delete(t),a.delete(e),c}function zs(t,e,s){if(t===e)return!0;let n=sl(t),l=sl(e);return n||l?n&&l?t.getTime()===e.getTime():!1:(n=_e(t),l=_e(e),n||l?t===e:(n=mt(t),l=mt(e),n||l?n&&l?al(t,e,s,fo):!1:(n=Ct(t),l=Ct(e),n||l?!n||!l?!1:al(t,e,s,ho):String(t)===String(e))))}const Gl=t=>!!(t&&t.__v_isRef===!0),d=t=>Dt(t)?t:t==null?"":mt(t)||Ct(t)&&(t.toString===Kl||!vt(t.toString))?Gl(t)?d(t.value):JSON.stringify(t,Yl,2):String(t),Yl=(t,e)=>Gl(e)?Yl(t,e.value):Oe(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((s,[n,l],a)=>(s[sn(n,a)+" =>"]=l,s),{})}:Os(e)?{[`Set(${e.size})`]:[...e.values()].map(s=>sn(s))}:_e(e)?sn(e):Ct(e)&&!mt(e)&&!Ul(e)?String(e):e,sn=(t,e="")=>{var s;return _e(t)?`Symbol(${(s=t.description)!=null?s:e})`:t};/**
- * @vue/reactivity v3.5.43
- * (c) 2018-present Yuxi (Evan) You and Vue contributors
- * @license MIT
- **/let It;class mo{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!e&&It&&(It.active?(this.parent=It,this.index=(It.scopes||(It.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,s;if(this.scopes){const n=this.scopes.slice();for(e=0,s=n.length;e<s;e++)n[e].pause()}for(e=0,s=this.effects.length;e<s;e++)this.effects[e].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let e,s;if(this.scopes){const l=this.scopes.slice();for(e=0,s=l.length;e<s;e++)l[e].resume()}const n=this.effects.slice();for(e=0,s=n.length;e<s;e++)n[e].resume()}}run(e){if(this._active){const s=It;try{return It=this,e()}finally{It=s}}}on(){++this._on===1&&(this.prevScope=It,It=this)}off(){if(this._on>0&&--this._on===0){if(It===this)It=this.prevScope;else{let e=It;for(;e;){if(e.prevScope===this){e.prevScope=this.prevScope;break}e=e.prevScope}}this.prevScope=void 0}}stop(e){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s<n;s++)this.effects[s].stop();for(this.effects.length=0,s=0,n=this.cleanups.length;s<n;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){const l=this.scopes.slice();for(s=0,n=l.length;s<n;s++)l[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!e){const l=this.parent.scopes.pop();l&&l!==this&&(this.parent.scopes[this.index]=l,l.index=this.index)}this.parent=void 0}}}function _o(){return It}let Ot;const nn=new WeakSet;class Jl{constructor(e){this.fn=e,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,It&&(It.active?It.effects.push(this):this.flags&=-2)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,nn.has(this)&&(nn.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Zl(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,ol(this),Ql(this);const e=Ot,s=le;Ot=this,le=!0;try{return this.fn()}finally{ta(this),Ot=e,le=s,this.flags&=-3}}stop(){if(this.flags&1){for(let e=this.deps;e;e=e.nextDep)In(e);this.deps=this.depsTail=void 0,ol(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?nn.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){gn(this)&&this.run()}get dirty(){return gn(this)}}let Xl=0,ls,as;function Zl(t,e=!1){if(t.flags|=8,e){t.next=as,as=t;return}t.next=ls,ls=t}function Rn(){Xl++}function Ln(){if(--Xl>0)return;if(as){let e=as;for(as=void 0;e;){const s=e.next;e.next=void 0,e.flags&=-9,e=s}}let t;for(;ls;){let e=ls;for(ls=void 0;e;){const s=e.next;if(e.next=void 0,e.flags&=-9,e.flags&1)try{e.trigger()}catch(n){t||(t=n)}e=s}}if(t)throw t}function Ql(t){for(let e=t.deps;e;e=e.nextDep)e.version=-1,e.prevActiveLink=e.dep.activeLink,e.dep.activeLink=e}function ta(t){let e,s=t.depsTail,n=s;for(;n;){const l=n.prevDep;n.version===-1?(n===s&&(s=l),In(n),vo(n)):e=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=l}t.deps=e,t.depsTail=s}function gn(t){for(let e=t.deps;e;e=e.nextDep)if(e.dep.version!==e.version||e.dep.computed&&(ea(e.dep.computed)||e.dep.version!==e.version))return!0;return!!t._dirty}function ea(t){if(t.flags&4&&!(t.flags&16)||(t.flags&=-17,t.globalVersion===cs)||(t.globalVersion=cs,!t.isSSR&&t.flags&128&&(!t.deps&&!t._dirty||!gn(t))))return;t.flags|=2;const e=t.dep,s=Ot,n=le;Ot=t,le=!0;try{Ql(t);const l=t.fn(t._value);(e.version===0||fe(l,t._value))&&(t.flags|=128,t._value=l,e.version++)}catch(l){throw e.version++,l}finally{Ot=s,le=n,ta(t),t.flags&=-3}}function In(t,e=!1){const{dep:s,prevSub:n,nextSub:l}=t;if(n&&(n.nextSub=l,t.prevSub=void 0),l&&(l.prevSub=n,t.nextSub=void 0),s.subs===t&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let a=s.computed.deps;a;a=a.nextDep)In(a,!0)}!e&&!--s.sc&&s.map&&s.map.delete(s.key)}function vo(t){const{prevDep:e,nextDep:s}=t;e&&(e.nextDep=s,t.prevDep=void 0),s&&(s.prevDep=e,t.nextDep=void 0)}let le=!0;const sa=[];function we(){sa.push(le),le=!1}function ke(){const t=sa.pop();le=t===void 0?!0:t}function ol(t){const{cleanup:e}=t;if(t.cleanup=void 0,e){const s=Ot;Ot=void 0;try{e()}finally{Ot=s}}}let cs=0;class go{constructor(e,s){this.sub=e,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Hn{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!Ot||!le||Ot===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==Ot)s=this.activeLink=new go(Ot,this),Ot.deps?(s.prevDep=Ot.depsTail,Ot.depsTail.nextDep=s,Ot.depsTail=s):Ot.deps=Ot.depsTail=s,na(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=Ot.depsTail,s.nextDep=void 0,Ot.depsTail.nextDep=s,Ot.depsTail=s,Ot.deps===s&&(Ot.deps=n)}return s}trigger(e){this.version++,cs++,this.notify(e)}notify(e){Rn();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Ln()}}}function na(t){if(t.dep.sc++,t.sub.flags&4){const e=t.dep.computed;if(e&&!t.dep.subs){e.flags|=20;for(let n=e.deps;n;n=n.nextDep)na(n)}const s=t.dep.subs;s!==t&&(t.prevSub=s,s&&(s.nextSub=t)),t.dep.subs=t}}const bn=new WeakMap,Ie=Symbol(""),$n=Symbol(""),us=Symbol("");function Bt(t,e,s){if(le&&Ot){let n=bn.get(t);n||bn.set(t,n=new Map);let l=n.get(s);l||(n.set(s,l=new Hn),l.map=n,l.key=s),l.track()}}function ye(t,e,s,n,l,a){const c=bn.get(t);if(!c){cs++;return}const r=u=>{u&&u.trigger()};if(Rn(),e==="clear")c.forEach(r);else{const u=mt(t),_=u&&Dn(s);if(u&&s==="length"){const h=Number(n);c.forEach((m,v)=>{(v==="length"||v===us||!_e(v)&&v>=h)&&r(m)})}else switch((s!==void 0||c.has(void 0))&&r(c.get(s)),_&&r(c.get(us)),e){case"add":u?_&&r(c.get("length")):(r(c.get(Ie)),Oe(t)&&r(c.get($n)));break;case"delete":u||(r(c.get(Ie)),Oe(t)&&r(c.get($n)));break;case"set":Oe(t)&&r(c.get(Ie));break}}Ln()}function Ke(t){const e=kt(t);return e===t||(Bt(e,"iterate",us),se(t))?e:ve(t)?Ae(t)?e.map(s=>je(ne(s))):e.map(je):e.map(ne)}function Gs(t){return Bt(t=kt(t),"iterate",us),t}function de(t,e){return ve(t)?je(Ae(t)?ne(e):e):ne(e)}const bo={__proto__:null,[Symbol.iterator](){return ln(this,Symbol.iterator,t=>de(this,t))},concat(...t){return Ke(this).concat(...t.map(e=>mt(e)?Ke(e):e))},entries(){return ln(this,"entries",t=>(t[1]=de(this,t[1]),t))},every(t,e){return ge(this,"every",t,e,void 0,arguments)},filter(t,e){return ge(this,"filter",t,e,s=>s.map(n=>de(this,n)),arguments)},find(t,e){return ge(this,"find",t,e,s=>de(this,s),arguments)},findIndex(t,e){return ge(this,"findIndex",t,e,void 0,arguments)},findLast(t,e){return ge(this,"findLast",t,e,s=>de(this,s),arguments)},findLastIndex(t,e){return ge(this,"findLastIndex",t,e,void 0,arguments)},forEach(t,e){return ge(this,"forEach",t,e,void 0,arguments)},includes(...t){return an(this,"includes",t)},indexOf(...t){return an(this,"indexOf",t)},join(t){return Ke(this).join(t)},lastIndexOf(...t){return an(this,"lastIndexOf",t)},map(t,e){return ge(this,"map",t,e,void 0,arguments)},pop(){return Xe(this,"pop")},push(...t){return Xe(this,"push",t)},reduce(t,...e){return rl(this,"reduce",t,e)},reduceRight(t,...e){return rl(this,"reduceRight",t,e)},shift(){return Xe(this,"shift")},some(t,e){return ge(this,"some",t,e,void 0,arguments)},splice(...t){return Xe(this,"splice",t)},toReversed(){return Ke(this).toReversed()},toSorted(t){return Ke(this).toSorted(t)},toSpliced(...t){return Ke(this).toSpliced(...t)},unshift(...t){return Xe(this,"unshift",t)},values(){return ln(this,"values",t=>de(this,t))}};function ln(t,e,s){const n=Gs(t),l=n[e]();return n!==t&&!se(t)&&(l._next=l.next,l.next=()=>{const a=l._next();return a.done||(a.value=s(a.value)),a}),l}const $o=Array.prototype;function ge(t,e,s,n,l,a){const c=Gs(t),r=c!==t&&!se(t),u=c[e];if(u!==$o[e]){const m=u.apply(t,a);return r?ne(m):m}let _=s;c!==t&&(r?_=function(m,v){return s.call(this,de(t,m),v,t)}:s.length>2&&(_=function(m,v){return s.call(this,m,v,t)}));const h=u.call(c,_,n);return r&&l?l(h):h}function rl(t,e,s,n){const l=Gs(t),a=l!==t&&!se(t);let c=s,r=!1;l!==t&&(a?(r=n.length===0,c=function(_,h,m){return r&&(r=!1,_=de(t,_)),s.call(this,_,de(t,h),m,t)}):s.length>3&&(c=function(_,h,m){return s.call(this,_,h,m,t)}));const u=l[e](c,...n);return r?de(t,u):u}function an(t,e,s){const n=kt(t);Bt(n,"iterate",us);const l=n[e](...s);return(l===-1||l===!1)&&Wn(s[0])?(s[0]=kt(s[0]),n[e](...s)):l}function Xe(t,e,s=[]){we(),Rn();const n=kt(t)[e].apply(t,s);return Ln(),ke(),n}const yo=jn("__proto__,__v_isRef,__isVue"),la=new Set(Object.getOwnPropertyNames(Symbol).filter(t=>t!=="arguments"&&t!=="caller").map(t=>Symbol[t]).filter(_e));function xo(t){_e(t)||(t=String(t));const e=kt(this);return Bt(e,"has",t),e.hasOwnProperty(t)}class aa{constructor(e=!1,s=!1){this._isReadonly=e,this._isShallow=s}get(e,s,n){if(s==="__v_skip")return e.__v_skip;const l=this._isReadonly,a=this._isShallow;if(s==="__v_isReactive")return!l;if(s==="__v_isReadonly")return l;if(s==="__v_isShallow")return a;if(s==="__v_raw")return n===(l?a?Ao:ca:a?ia:ra).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const c=mt(e);if(!l){let u;if(c&&(u=bo[s]))return u;if(s==="hasOwnProperty")return xo}const r=Reflect.get(e,s,Kt(e)?e:n);if((_e(s)?la.has(s):yo(s))||(l||Bt(e,"get",s),a))return r;if(Kt(r)){const u=c&&Dn(s)?r:r.value;return l&&Ct(u)?xn(u):u}return Ct(r)?l?xn(r):gs(r):r}}class oa extends aa{constructor(e=!1){super(!1,e)}set(e,s,n,l){let a=e[s];const c=mt(e)&&Dn(s);if(!this._isShallow){const _=ve(a);if(!se(n)&&!ve(n)&&(a=kt(a),n=kt(n)),!c&&Kt(a)&&!Kt(n))return _||(a.value=n),!0}const r=c?Number(s)<e.length:Mt(e,s),u=Reflect.set(e,s,n,Kt(e)?e:l);return e===kt(l)&&u&&(r?fe(n,a)&&ye(e,"set",s,n):ye(e,"add",s,n)),u}deleteProperty(e,s){const n=Mt(e,s);e[s];const l=Reflect.deleteProperty(e,s);return l&&n&&ye(e,"delete",s,void 0),l}has(e,s){const n=Reflect.has(e,s);return(!_e(s)||!la.has(s))&&Bt(e,"has",s),n}ownKeys(e){return Bt(e,"iterate",mt(e)?"length":Ie),Reflect.ownKeys(e)}}class wo extends aa{constructor(e=!1){super(!0,e)}set(e,s){return!0}deleteProperty(e,s){return!0}}const ko=new oa,Mo=new wo,So=new oa(!0);const yn=t=>t,ys=t=>Reflect.getPrototypeOf(t);function To(t,e,s){return function(...n){const l=this.__v_raw,a=kt(l),c=Oe(a),r=t==="entries"||t===Symbol.iterator&&c,u=t==="keys"&&c,_=l[t](...n),h=s?yn:e?je:ne;return!e&&Bt(a,"iterate",u?$n:Ie),Ht(Object.create(_),{next(){const{value:m,done:v}=_.next();return v?{value:m,done:v}:{value:r?[h(m[0]),h(m[1])]:h(m),done:v}}})}}function xs(t){return function(...e){return t==="delete"?!1:t==="clear"?void 0:this}}function Co(t,e){const s={get(l){const a=this.__v_raw,c=kt(a),r=kt(l);t||(fe(l,r)&&Bt(c,"get",l),Bt(c,"get",r));const{has:u}=ys(c),_=e?yn:t?je:ne;if(u.call(c,l))return _(a.get(l));if(u.call(c,r))return _(a.get(r));a!==c&&a.get(l)},get size(){const l=this.__v_raw;return!t&&Bt(kt(l),"iterate",Ie),l.size},has(l){const a=this.__v_raw,c=kt(a),r=kt(l);return t||(fe(l,r)&&Bt(c,"has",l),Bt(c,"has",r)),l===r?a.has(l):a.has(l)||a.has(r)},forEach(l,a){const c=this,r=c.__v_raw,u=kt(r),_=e?yn:t?je:ne;return!t&&Bt(u,"iterate",Ie),r.forEach((h,m)=>l.call(a,_(h),_(m),c))}};return Ht(s,t?{add:xs("add"),set:xs("set"),delete:xs("delete"),clear:xs("clear")}:{add(l){const a=kt(this),c=ys(a),r=kt(l),u=!e&&!se(l)&&!ve(l)?r:l;return c.has.call(a,u)||fe(l,u)&&c.has.call(a,l)||fe(r,u)&&c.has.call(a,r)||(a.add(u),ye(a,"add",u,u)),this},set(l,a){!e&&!se(a)&&!ve(a)&&(a=kt(a));const c=kt(this),{has:r,get:u}=ys(c);let _=r.call(c,l);_||(l=kt(l),_=r.call(c,l));const h=u.call(c,l);return c.set(l,a),_?fe(a,h)&&ye(c,"set",l,a):ye(c,"add",l,a),this},delete(l){const a=kt(this),{has:c,get:r}=ys(a);let u=c.call(a,l);u||(l=kt(l),u=c.call(a,l)),r&&r.call(a,l);const _=a.delete(l);return u&&ye(a,"delete",l,void 0),_},clear(){const l=kt(this),a=l.size!==0,c=l.clear();return a&&ye(l,"clear",void 0,void 0),c}}),["keys","values","entries",Symbol.iterator].forEach(l=>{s[l]=To(l,t,e)}),s}function Nn(t,e){const s=Co(t,e);return(n,l,a)=>l==="__v_isReactive"?!t:l==="__v_isReadonly"?t:l==="__v_raw"?n:Reflect.get(Mt(s,l)&&l in n?s:n,l,a)}const Eo={get:Nn(!1,!1)},Fo={get:Nn(!1,!0)},Oo={get:Nn(!0,!1)};const ra=new WeakMap,ia=new WeakMap,ca=new WeakMap,Ao=new WeakMap;function jo(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function gs(t){return ve(t)?t:Bn(t,!1,ko,Eo,ra)}function qo(t){return Bn(t,!1,So,Fo,ia)}function xn(t){return Bn(t,!0,Mo,Oo,ca)}function Bn(t,e,s,n,l){if(!Ct(t)||t.__v_raw&&!(e&&t.__v_isReactive)||t.__v_skip||!Object.isExtensible(t))return t;const a=l.get(t);if(a)return a;const c=jo(no(t));if(c===0)return t;const r=new Proxy(t,c===2?n:s);return l.set(t,r),r}function Ae(t){return ve(t)?Ae(t.__v_raw):!!(t&&t.__v_isReactive)}function ve(t){return!!(t&&t.__v_isReadonly)}function se(t){return!!(t&&t.__v_isShallow)}function Wn(t){return t?!!t.__v_raw:!1}function kt(t){const e=t&&t.__v_raw;return e?kt(e):t}function Do(t){return!Mt(t,"__v_skip")&&Object.isExtensible(t)&&Vl(t,"__v_skip",!0),t}const ne=t=>Ct(t)?gs(t):t,je=t=>Ct(t)?xn(t):t;function Kt(t){return t?t.__v_isRef===!0:!1}function xt(t){return Po(t,!1)}function Po(t,e){return Kt(t)?t:new Ro(t,e)}class Ro{constructor(e,s){this.dep=new Hn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?e:kt(e),this._value=s?e:ne(e),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(e){const s=this._rawValue,n=this.__v_isShallow||se(e)||ve(e);e=n?e:kt(e),fe(e,s)&&(this._rawValue=e,this._value=n?e:ne(e),this.dep.trigger())}}function p(t){return Kt(t)?t.value:t}const Lo={get:(t,e,s)=>e==="__v_raw"?t:p(Reflect.get(t,e,s)),set:(t,e,s,n)=>{const l=t[e];return Kt(l)&&!Kt(s)?(l.value=s,!0):Reflect.set(t,e,s,n)}};function ua(t){return Ae(t)?t:new Proxy(t,Lo)}class Io{constructor(e,s,n){this.fn=e,this.setter=s,this._value=void 0,this.dep=new Hn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=cs-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&Ot!==this)return Zl(this,!0),!0}get value(){const e=this.dep.track();return ea(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}function Ho(t,e,s=!1){let n,l;return vt(t)?n=t:(n=t.get,l=t.set),new Io(n,l,s)}const ws={},As=new WeakMap;let Re;function No(t,e=!1,s=Re){if(s){let n=As.get(s);n||As.set(s,n=[]),n.push(t)}}function Bo(t,e,s=Ft){const{immediate:n,deep:l,once:a,scheduler:c,augmentJob:r,call:u}=s,_=T=>l?T:se(T)||l===!1||l===0?xe(T,1):xe(T);let h,m,v,b,E=!1,H=!1;if(Kt(t)?(m=()=>t.value,E=se(t)):Ae(t)?(m=()=>_(t),E=!0):mt(t)?(H=!0,E=t.some(T=>Ae(T)||se(T)),m=()=>t.map(T=>{if(Kt(T))return T.value;if(Ae(T))return _(T);if(vt(T))return u?u(T,2):T()})):vt(t)?e?m=u?()=>u(t,2):t:m=()=>{if(v){we();try{v()}finally{ke()}}const T=Re;Re=h;try{return u?u(t,3,[b]):t(b)}finally{Re=T}}:m=he,e&&l){const T=m,N=l===!0?1/0:l;m=()=>xe(T(),N)}const X=_o(),nt=()=>{h.stop(),X&&X.active&&qn(X.effects,h)};if(a&&e){const T=e;e=(...N)=>{const pt=T(...N);return nt(),pt}}let L=H?new Array(t.length).fill(ws):ws;const K=T=>{if(!(!(h.flags&1)||!h.dirty&&!T))if(e){const N=h.run();if(T||l||E||(H?N.some((pt,ot)=>fe(pt,L[ot])):fe(N,L))){v&&v();const pt=Re;Re=h;try{const ot=[N,L===ws?void 0:H&&L[0]===ws?[]:L,b];L=N,u?u(e,3,ot):e(...ot)}finally{Re=pt}}}else h.run()};return r&&r(K),h=new Jl(m),h.scheduler=c?()=>c(K,!1):K,b=T=>No(T,!1,h),v=h.onStop=()=>{const T=As.get(h);if(T){if(u)u(T,4);else for(const N of T)N();As.delete(h)}},e?n?K(!0):L=h.run():c?c(K.bind(null,!0),!0):h.run(),nt.pause=h.pause.bind(h),nt.resume=h.resume.bind(h),nt.stop=nt,nt}function xe(t,e=1/0,s){if(e<=0||!Ct(t)||t.__v_skip||(s=s||new Map,(s.get(t)||0)>=e))return t;if(s.set(t,e),e--,Kt(t))xe(t.value,e,s);else if(mt(t))for(let n=0;n<t.length;n++)xe(t[n],e,s);else if(Os(t)||Oe(t))t.forEach(n=>{xe(n,e,s)});else if(Ul(t)){for(const n in t)xe(t[n],e,s);for(const n of Object.getOwnPropertySymbols(t))Object.prototype.propertyIsEnumerable.call(t,n)&&xe(t[n],e,s)}return t}/**
- * @vue/runtime-core v3.5.43
- * (c) 2018-present Yuxi (Evan) You and Vue contributors
- * @license MIT
- **/function bs(t,e,s,n){try{return n?t(...n):t()}catch(l){Ys(l,e,s)}}function ae(t,e,s,n){if(vt(t)){const l=bs(t,e,s,n);return l&&Wl(l)&&l.catch(a=>{Ys(a,e,s)}),l}if(mt(t)){const l=[];for(let a=0;a<t.length;a++)l.push(ae(t[a],e,s,n));return l}}function Ys(t,e,s,n=!0){const l=e?e.vnode:null,{errorHandler:a,throwUnhandledErrorInProduction:c}=e&&e.appContext.config||Ft;if(e){let r=e.parent;const u=e.proxy,_=`https://vuejs.org/error-reference/#runtime-${s}`;for(;r;){const h=r.ec;if(h){for(let m=0;m<h.length;m++)if(h[m](t,u,_)===!1)return}r=r.parent}if(a){we(),bs(a,null,10,[t,u,_]),ke();return}}Wo(t,s,l,n,c)}function Wo(t,e,s,n=!0,l=!1){if(l)throw t;console.error(t)}const Gt=[];let ue=-1;const ze=[];let Ce=null,Ue=0;const da=Promise.resolve();let js=null;function Ko(t){const e=js||da;return t?e.then(this?t.bind(this):t):e}function Uo(t){let e=ue+1,s=Gt.length;for(;e<s;){const n=e+s>>>1,l=Gt[n],a=ds(l);a<t||a===t&&l.flags&2?e=n+1:s=n}return e}function Kn(t){if(!(t.flags&1)){const e=ds(t),s=Gt[Gt.length-1];!s||!(t.flags&2)&&e>=ds(s)?Gt.push(t):Gt.splice(Uo(e),0,t),t.flags|=1,pa()}}function pa(){js||(js=da.then(ha))}function Vo(t){if(!mt(t))Ce&&t.id===-1?Ce.splice(Ue+1,0,t):t.flags&1||(ze.push(t),t.flags|=1);else for(let e=0;e<t.length;e++)ze.push(t[e]);pa()}function il(t,e,s=ue+1){for(;s<Gt.length;s++){const n=Gt[s];if(n&&n.flags&2){if(t&&n.id!==t.uid)continue;Gt.splice(s,1),s--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function fa(t){if(ze.length){const e=[...new Set(ze)].sort((s,n)=>ds(s)-ds(n));if(ze.length=0,Ce){for(let s=0;s<e.length;s++)Ce.push(e[s]);return}for(Ce=e,Ue=0;Ue<Ce.length;Ue++){const s=Ce[Ue];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}Ce=null,Ue=0}}const ds=t=>t.id==null?t.flags&2?-1:1/0:t.id;function ha(t){try{for(ue=0;ue<Gt.length;ue++){const e=Gt[ue];e&&!(e.flags&8)&&(e.flags&4&&(e.flags&=-2),bs(e,e.i,e.i?15:14),e.flags&4||(e.flags&=-2))}}finally{for(;ue<Gt.length;ue++){const e=Gt[ue];e&&(e.flags&=-2)}ue=-1,Gt.length=0,fa(),js=null,(Gt.length||ze.length)&&ha()}}let te=null,ma=null;function qs(t){const e=te;return te=t,ma=t&&t.type.__scopeId||null,e}function zo(t,e=te,s){if(!e||t._n)return t;const n=(...l)=>{n._d&&$l(-1);const a=qs(e),c=Ne.length;let r;try{r=t(...l)}finally{for(let u=Ne.length;u>c;u--)Ia();qs(a),n._d&&$l(1)}return r};return n._n=!0,n._c=!0,n._d=!0,n}function wn(t,e){if(te===null)return t;const s=tn(te),n=t.dirs||(t.dirs=[]);for(let l=0;l<e.length;l++){let[a,c,r,u=Ft]=e[l];a&&(vt(a)&&(a={mounted:a,updated:a}),a.deep&&xe(c),n.push({dir:a,instance:s,value:c,oldValue:void 0,arg:r,modifiers:u}))}return t}function De(t,e,s,n){const l=t.dirs,a=e&&e.dirs;for(let c=0;c<l.length;c++){const r=l[c];a&&(r.oldValue=a[c].value);let u=r.dir[n];u&&(we(),ae(u,s,8,[t.el,r,t,e]),ke())}}function Go(t,e){if(Wt){let s=Wt.provides;const n=Wt.parent&&Wt.parent.provides;n===s&&(s=Wt.provides=Object.create(n)),s[t]=e}}function Cs(t,e,s=!1){const n=Gr();if(n||Ge){let l=Ge?Ge._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(l&&t in l)return l[t];if(arguments.length>1)return s&&vt(e)?e.call(n&&n.proxy):e}}const Yo=Symbol.for("v-scx"),Jo=()=>Cs(Yo);function He(t,e,s){return _a(t,e,s)}function _a(t,e,s=Ft){const{immediate:n,deep:l,flush:a,once:c}=s,r=Ht({},s),u=e&&n||!e&&a!=="post";let _;if(hs){if(a==="sync"){const b=Jo();_=b.__watcherHandles||(b.__watcherHandles=[])}else if(!u){const b=()=>{};return b.stop=he,b.resume=he,b.pause=he,b}}const h=Wt;r.call=(b,E,H)=>ae(b,h,E,H);let m=!1;a==="post"?r.scheduler=b=>{Jt(b,h&&h.suspense)}:a!=="sync"&&(m=!0,r.scheduler=(b,E)=>{E?b():Kn(b)}),r.augmentJob=b=>{e&&(b.flags|=4),m&&(b.flags|=2,h&&(b.id=h.uid,b.i=h))};const v=Bo(t,e,r);return hs&&(_?_.push(v):u&&v()),v}function Xo(t,e,s){const n=this.proxy,l=Dt(t)?t.includes(".")?va(n,t):()=>n[t]:t.bind(n,n);let a;vt(e)?a=e:(a=e.handler,s=e);const c=$s(this),r=_a(l,a.bind(n),s);return c(),r}function va(t,e){const s=e.split(".");return()=>{let n=t;for(let l=0;l<s.length&&n;l++)n=n[s[l]];return n}}const Zo=Symbol("_vte"),Js=t=>t.__isTeleport,on=Symbol("_leaveCb");function Qo(t){let e=t[0];if(t.length>1){for(const s of t)if(s.type!==Me){e=s;break}}return e}function ga(t){if(!Vn(t))return Js(t.type)&&t.children?Qo(t.children):t;if(t.component)return t.component.subTree;const{shapeFlag:e,children:s}=t;if(s){if(e&16)return s[0];if(e&32&&vt(s.default))return s.default()}}function Un(t,e){if(t.shapeFlag&6&&t.component){t.transition=e;const s=t.component.subTree;Un(Js(s.type)&&ga(s)||s,e)}else t.shapeFlag&128?(t.ssContent.transition=e.clone(t.ssContent),t.ssFallback.transition=e.clone(t.ssFallback)):t.transition=e}function Ut(t,e){return vt(t)?Ht({name:t.name},e,{setup:t}):t}function ba(t){t.ids=[t.ids[0]+t.ids[2]+++"-",0,0]}function cl(t,e){let s;return!!((s=Object.getOwnPropertyDescriptor(t,e))&&!s.configurable)}const Ds=new WeakMap;function os(t,e,s,n,l=!1){if(mt(t)){t.forEach((H,X)=>os(H,e&&(mt(e)?e[X]:e),s,n,l));return}if(rs(n)&&!l){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&os(t,e,s,n.component.subTree);return}const a=n.shapeFlag&4?tn(n.component):n.el,c=l?null:a,{i:r,r:u}=t,_=e&&e.r,h=r.refs===Ft?r.refs={}:r.refs,m=r.setupState,v=kt(m),b=m===Ft?Bl:H=>cl(h,H)?!1:Mt(v,H),E=(H,X)=>!(X&&cl(h,X));if(_!=null&&_!==u){if(ul(e),Dt(_))h[_]=null,b(_)&&(m[_]=null);else if(Kt(_)){const H=e;E(_,H.k)&&(_.value=null),H.k&&(h[H.k]=null)}}if(vt(u))bs(u,r,12,[c,h]);else{const H=Dt(u),X=Kt(u);if(H||X){const nt=()=>{if(t.f){const L=H?b(u)?m[u]:h[u]:E()||!t.k?u.value:h[t.k];if(l)mt(L)&&qn(L,a);else if(mt(L))L.includes(a)||L.push(a);else if(H)h[u]=[a],b(u)&&(m[u]=h[u]);else{const K=[a];E(u,t.k)&&(u.value=K),t.k&&(h[t.k]=K)}}else H?(h[u]=c,b(u)&&(m[u]=c)):X&&(E(u,t.k)&&(u.value=c),t.k&&(h[t.k]=c))};if(c){const L=()=>{nt(),Ds.delete(t)};L.id=-1,Ds.set(t,L),Jt(L,s)}else ul(t),nt()}}}function ul(t){const e=Ds.get(t);e&&(e.flags|=8,Ds.delete(t))}Vs().requestIdleCallback;Vs().cancelIdleCallback;const rs=t=>!!t.type.__asyncLoader,Vn=t=>t.type.__isKeepAlive;function tr(t,e){$a(t,"a",e)}function er(t,e){$a(t,"da",e)}function $a(t,e,s=Wt){const n=t.__wdc||(t.__wdc=()=>{let l=s;for(;l;){if(l.isDeactivated)return;l=l.parent}return t()});if(Xs(e,n,s),s){let l=s.parent;for(;l&&l.parent;)Vn(l.parent.vnode)&&sr(n,e,s,l),l=l.parent}}function sr(t,e,s,n){const l=Xs(e,t,n,!0);ya(()=>{qn(n[e],l)},s)}function Xs(t,e,s=Wt,n=!1){if(s){const l=s[t]||(s[t]=[]),a=e.__weh||(e.__weh=(...c)=>{we();const r=$s(s),u=ae(e,s,t,c);return r(),ke(),u});return n?l.unshift(a):l.push(a),a}}const Te=t=>(e,s=Wt)=>{(!hs||t==="sp")&&Xs(t,(...n)=>e(...n),s)},nr=Te("bm"),We=Te("m"),lr=Te("bu"),ar=Te("u"),or=Te("bum"),ya=Te("um"),rr=Te("sp"),ir=Te("rtg"),cr=Te("rtc");function ur(t,e=Wt){Xs("ec",t,e)}const dr="components";function pr(t,e){return hr(dr,t,!0,e)||t}const fr=Symbol.for("v-ndc");function hr(t,e,s=!0,n=!1){const l=te||Wt;if(l){const a=l.type;{const r=Qr(a,!1);if(r&&(r===e||r===Yt(e)||r===Us(Yt(e))))return a}const c=dl(l[t]||a[t],e)||dl(l.appContext[t],e);return!c&&n?a:c}}function dl(t,e){return t&&(t[e]||t[Yt(e)]||t[Us(Yt(e))])}function $t(t,e,s,n){let l;const a=s,c=mt(t);if(c||Dt(t)){const r=c&&Ae(t);let u=!1,_=!1;r&&(u=!se(t),_=ve(t),t=Gs(t)),l=new Array(t.length);for(let h=0,m=t.length;h<m;h++)l[h]=e(u?_?je(ne(t[h])):ne(t[h]):t[h],h,void 0,a)}else if(typeof t=="number"){l=new Array(t);for(let r=0;r<t;r++)l[r]=e(r+1,r,void 0,a)}else if(Ct(t))if(t[Symbol.iterator])l=Array.from(t,(r,u)=>e(r,u,void 0,a));else{const r=Object.keys(t);l=new Array(r.length);for(let u=0,_=r.length;u<_;u++){const h=r[u];l[u]=e(t[h],h,u,a)}}else l=[];return l}const kn=t=>t?Wa(t)?tn(t):kn(t.parent):null,is=Ht(Object.create(null),{$:t=>t,$el:t=>t.vnode.el,$data:t=>t.data,$props:t=>t.props,$attrs:t=>t.attrs,$slots:t=>t.slots,$refs:t=>t.refs,$parent:t=>kn(t.parent),$root:t=>kn(t.root),$host:t=>t.ce,$emit:t=>t.emit,$options:t=>wa(t),$forceUpdate:t=>t.f||(t.f=()=>{Kn(t.update)}),$nextTick:t=>t.n||(t.n=Ko.bind(t.proxy)),$watch:t=>Xo.bind(t)}),rn=(t,e)=>t!==Ft&&!t.__isScriptSetup&&Mt(t,e),mr={get({_:t},e){if(e==="__v_skip")return!0;const{ctx:s,setupState:n,data:l,props:a,accessCache:c,type:r,appContext:u}=t;if(e[0]!=="$"){const v=c[e];if(v!==void 0)switch(v){case 1:return n[e];case 2:return l[e];case 4:return s[e];case 3:return a[e]}else{if(rn(n,e))return c[e]=1,n[e];if(l!==Ft&&Mt(l,e))return c[e]=2,l[e];if(Mt(a,e))return c[e]=3,a[e];if(s!==Ft&&Mt(s,e))return c[e]=4,s[e];Mn&&(c[e]=0)}}const _=is[e];let h,m;if(_)return e==="$attrs"&&Bt(t.attrs,"get",""),_(t);if((h=r.__cssModules)&&(h=h[e]))return h;if(s!==Ft&&Mt(s,e))return c[e]=4,s[e];if(m=u.config.globalProperties,Mt(m,e))return m[e]},set({_:t},e,s){const{data:n,setupState:l,ctx:a}=t;return rn(l,e)?(l[e]=s,!0):n!==Ft&&Mt(n,e)?(n[e]=s,!0):Mt(t.props,e)||e[0]==="$"&&e.slice(1)in t?!1:(a[e]=s,!0)},has({_:{data:t,setupState:e,accessCache:s,ctx:n,appContext:l,props:a,type:c}},r){let u;return!!(s[r]||t!==Ft&&r[0]!=="$"&&Mt(t,r)||rn(e,r)||Mt(a,r)||Mt(n,r)||Mt(is,r)||Mt(l.config.globalProperties,r)||(u=c.__cssModules)&&u[r])},defineProperty(t,e,s){return s.get!=null?t._.accessCache[e]=0:Mt(s,"value")&&this.set(t,e,s.value,null),Reflect.defineProperty(t,e,s)}};function pl(t){return mt(t)?t.reduce((e,s)=>(e[s]=null,e),{}):t}let Mn=!0;function _r(t){const e=wa(t),s=t.proxy,n=t.ctx;Mn=!1,e.beforeCreate&&fl(e.beforeCreate,t,"bc");const{data:l,computed:a,methods:c,watch:r,provide:u,inject:_,created:h,beforeMount:m,mounted:v,beforeUpdate:b,updated:E,activated:H,deactivated:X,beforeDestroy:nt,beforeUnmount:L,destroyed:K,unmounted:T,render:N,renderTracked:pt,renderTriggered:ot,errorCaptured:ft,serverPrefetch:ht,expose:jt,inheritAttrs:O,components:J,directives:Z,filters:q}=e;if(_&&vr(_,n,null),c)for(const k in c){const P=c[k];vt(P)&&(n[k]=P.bind(s))}if(l){const k=l.call(s,s);Ct(k)&&(t.data=gs(k))}if(Mn=!0,a)for(const k in a){const P=a[k],B=vt(P)?P.bind(s,s):vt(P.get)?P.get.bind(s,s):he,U=!vt(P)&&vt(P.set)?P.set.bind(s):he,Q=G({get:B,set:U});Object.defineProperty(n,k,{enumerable:!0,configurable:!0,get:()=>Q.value,set:lt=>Q.value=lt})}if(r)for(const k in r)xa(r[k],n,s,k);if(u){const k=vt(u)?u.call(s):u;Reflect.ownKeys(k).forEach(P=>{Go(P,k[P])})}h&&fl(h,t,"c");function F(k,P){mt(P)?P.forEach(B=>k(B.bind(s))):P&&k(P.bind(s))}if(F(nr,m),F(We,v),F(lr,b),F(ar,E),F(tr,H),F(er,X),F(ur,ft),F(cr,pt),F(ir,ot),F(or,L),F(ya,T),F(rr,ht),mt(jt))if(jt.length){const k=t.exposed||(t.exposed={});jt.forEach(P=>{Object.defineProperty(k,P,{get:()=>s[P],set:B=>s[P]=B,enumerable:!0})})}else t.exposed||(t.exposed={});N&&t.render===he&&(t.render=N),O!=null&&(t.inheritAttrs=O),J&&(t.components=J),Z&&(t.directives=Z),ht&&ba(t)}function vr(t,e,s=he){mt(t)&&(t=Sn(t));for(const n in t){const l=t[n];let a;Ct(l)?"default"in l?a=Cs(l.from||n,l.default,!0):a=Cs(l.from||n):a=Cs(l),Kt(a)?Object.defineProperty(e,n,{enumerable:!0,configurable:!0,get:()=>a.value,set:c=>a.value=c}):e[n]=a}}function fl(t,e,s){ae(mt(t)?t.map(n=>n.bind(e.proxy)):t.bind(e.proxy),e,s)}function xa(t,e,s,n){let l=n.includes(".")?va(s,n):()=>s[n];if(Dt(t)){const a=e[t];vt(a)&&He(l,a)}else if(vt(t))He(l,t.bind(s));else if(Ct(t))if(mt(t))t.forEach(a=>xa(a,e,s,n));else{const a=vt(t.handler)?t.handler.bind(s):e[t.handler];vt(a)&&He(l,a,t)}}function wa(t){const e=t.type,{mixins:s,extends:n}=e,{mixins:l,optionsCache:a,config:{optionMergeStrategies:c}}=t.appContext,r=a.get(e);let u;return r?u=r:!l.length&&!s&&!n?u=e:(u={},l.length&&l.forEach(_=>Ps(u,_,c,!0)),Ps(u,e,c)),Ct(e)&&a.set(e,u),u}function Ps(t,e,s,n=!1){const{mixins:l,extends:a}=e;a&&Ps(t,a,s,!0),l&&l.forEach(c=>Ps(t,c,s,!0));for(const c in e)if(!(n&&c==="expose")){const r=gr[c]||s&&s[c];t[c]=r?r(t[c],e[c]):e[c]}return t}const gr={data:hl,props:ml,emits:ml,methods:es,computed:es,beforeCreate:Vt,created:Vt,beforeMount:Vt,mounted:Vt,beforeUpdate:Vt,updated:Vt,beforeDestroy:Vt,beforeUnmount:Vt,destroyed:Vt,unmounted:Vt,activated:Vt,deactivated:Vt,errorCaptured:Vt,serverPrefetch:Vt,components:es,directives:es,watch:$r,provide:hl,inject:br};function hl(t,e){return e?t?function(){return Ht(vt(t)?t.call(this,this):t,vt(e)?e.call(this,this):e)}:e:t}function br(t,e){return es(Sn(t),Sn(e))}function Sn(t){if(mt(t)){const e={};for(let s=0;s<t.length;s++)e[t[s]]=t[s];return e}return t}function Vt(t,e){return t?[...new Set([].concat(t,e))]:e}function es(t,e){return t?Ht(Object.create(null),t,e):e}function ml(t,e){return t?mt(t)&&mt(e)?[...new Set([...t,...e])]:Ht(Object.create(null),pl(t),pl(e??{})):e}function $r(t,e){if(!t)return e;if(!e)return t;const s=Ht(Object.create(null),t);for(const n in e)s[n]=Vt(t[n],e[n]);return s}function ka(){return{app:null,config:{isNativeTag:Bl,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let yr=0;function xr(t,e){return function(n,l=null){vt(n)||(n=Ht({},n)),l!=null&&!Ct(l)&&(l=null);const a=ka(),c=new WeakSet,r=[];let u=!1;const _=a.app={_uid:yr++,_component:n,_props:l,_container:null,_context:a,_instance:null,version:ei,get config(){return a.config},set config(h){},use(h,...m){return c.has(h)||(h&&vt(h.install)?(c.add(h),h.install(_,...m)):vt(h)&&(c.add(h),h(_,...m))),_},mixin(h){return a.mixins.includes(h)||a.mixins.push(h),_},component(h,m){return m?(a.components[h]=m,_):a.components[h]},directive(h,m){return m?(a.directives[h]=m,_):a.directives[h]},mount(h,m,v){if(!u){const b=_._ceVNode||At(n,l);return b.appContext=a,v===!0?v="svg":v===!1&&(v=void 0),t(b,h,v),u=!0,_._container=h,h.__vue_app__=_,tn(b.component)}},onUnmount(h){r.push(h)},unmount(){u&&(ae(r,_._instance,16),t(null,_._container),delete _._container.__vue_app__)},provide(h,m){return a.provides[h]=m,_},runWithContext(h){const m=Ge;Ge=_;try{return h()}finally{Ge=m}}};return _}}let Ge=null;const wr=(t,e)=>e==="modelValue"||e==="model-value"?t.modelModifiers:t[`${e}Modifiers`]||t[`${Yt(e)}Modifiers`]||t[`${qe(e)}Modifiers`];function kr(t,e,...s){if(t.isUnmounted)return;const n=t.vnode.props||Ft;let l=s;const a=e.startsWith("update:"),c=a&&wr(n,e.slice(7));c&&(c.trim&&(l=s.map(h=>Dt(h)?h.trim():h)),c.number&&(l=l.map(Pn)));let r,u=n[r=en(e)]||n[r=en(Yt(e))];!u&&a&&(u=n[r=en(qe(e))]),u&&ae(u,t,6,l);const _=n[r+"Once"];if(_){if(!t.emitted)t.emitted={};else if(t.emitted[r])return;t.emitted[r]=!0,ae(_,t,6,l)}}const Mr=new WeakMap;function Ma(t,e,s=!1){const n=s?Mr:e.emitsCache,l=n.get(t);if(l!==void 0)return l;const a=t.emits;let c={},r=!1;if(!vt(t)){const u=_=>{const h=Ma(_,e,!0);h&&(r=!0,Ht(c,h))};!s&&e.mixins.length&&e.mixins.forEach(u),t.extends&&u(t.extends),t.mixins&&t.mixins.forEach(u)}return!a&&!r?(Ct(t)&&n.set(t,null),null):(mt(a)?a.forEach(u=>c[u]=null):Ht(c,a),Ct(t)&&n.set(t,c),c)}function Zs(t,e){return!t||!Bs(e)?!1:(e=e.slice(2),e=e==="Once"?e:e.replace(/Once$/,""),Mt(t,e[0].toLowerCase()+e.slice(1))||Mt(t,qe(e))||Mt(t,e))}function _l(t){const{type:e,vnode:s,proxy:n,withProxy:l,propsOptions:[a],slots:c,attrs:r,emit:u,render:_,renderCache:h,props:m,data:v,setupState:b,ctx:E,inheritAttrs:H}=t,X=qs(t);let nt,L;try{if(s.shapeFlag&4){const T=l||n,N=T;nt=pe(_.call(N,T,h,m,b,v,E)),L=r}else{const T=e;nt=pe(T.length>1?T(m,{attrs:r,slots:c,emit:u}):T(m,null)),L=e.props?r:Sr(r)}}catch(T){Ne.length=0,Ys(T,t,1),nt=At(Me)}let K=nt;if(L&&H!==!1){const T=Object.keys(L),{shapeFlag:N}=K;T.length&&N&7&&(a&&T.some(Ws)&&(L=Tr(L,a)),K=Ye(K,L,!1,!0))}if(s.dirs&&(K=Ye(K,null,!1,!0),K.dirs=K.dirs?K.dirs.concat(s.dirs):s.dirs),s.transition){const T=Js(K.type)&&ga(K)||K;Un(T,s.transition)}return nt=K,qs(X),nt}const Sr=t=>{let e;for(const s in t)(s==="class"||s==="style"||Bs(s))&&((e||(e={}))[s]=t[s]);return e},Tr=(t,e)=>{const s={};for(const n in t)(!Ws(n)||!(n.slice(9)in e))&&(s[n]=t[n]);return s};function Cr(t,e,s){const{props:n,children:l,component:a}=t,{props:c,children:r,patchFlag:u}=e,_=a.emitsOptions;if(e.dirs||e.transition)return!0;if(s&&u>=0){if(u&1024)return!0;if(u&16)return n?vl(n,c,_):!!c;if(u&8){const h=e.dynamicProps;for(let m=0;m<h.length;m++){const v=h[m];if(Sa(c,n,v)&&!Zs(_,v))return!0}}}else return(l||r)&&(!r||!r.$stable)?!0:n===c?!1:n?c?vl(n,c,_):!0:!!c;return!1}function vl(t,e,s){const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!0;for(let l=0;l<n.length;l++){const a=n[l];if(Sa(e,t,a)&&!Zs(s,a))return!0}return!1}function Sa(t,e,s){const n=t[s],l=e[s];return s==="style"&&Ct(n)&&Ct(l)?!zs(n,l):n!==l}function Er({vnode:t,parent:e,suspense:s},n){for(;e;){const l=e.subTree;if(l.suspense&&l.suspense.activeBranch===t&&(l.suspense.vnode.el=l.el=n,t=l),l===t)(t=e.vnode).el=n,e=e.parent;else break}s&&s.activeBranch===t&&(s.vnode.el=n)}const Ta={},Ca=()=>Object.create(Ta),Ea=t=>Object.getPrototypeOf(t)===Ta;function Fr(t,e,s,n=!1){const l={},a=Ca();t.propsDefaults=Object.create(null),Fa(t,e,l,a);for(const c in t.propsOptions[0])c in l||(l[c]=void 0);s?t.props=n?l:qo(l):t.type.props?t.props=l:t.props=a,t.attrs=a}function Or(t,e,s,n){const{props:l,attrs:a,vnode:{patchFlag:c}}=t,r=kt(l),[u]=t.propsOptions;let _=!1;if((n||c>0)&&!(c&16)){if(c&8){const h=t.vnode.dynamicProps;for(let m=0;m<h.length;m++){let v=h[m];if(Zs(t.emitsOptions,v))continue;const b=e[v];if(u)if(Mt(a,v))b!==a[v]&&(a[v]=b,_=!0);else{const E=Yt(v);l[E]=Tn(u,r,E,b,t,!1)}else b!==a[v]&&(a[v]=b,_=!0)}}}else{Fa(t,e,l,a)&&(_=!0);let h;for(const m in r)(!e||!Mt(e,m)&&((h=qe(m))===m||!Mt(e,h)))&&(u?s&&(s[m]!==void 0||s[h]!==void 0)&&(l[m]=Tn(u,r,m,void 0,t,!0)):delete l[m]);if(a!==r)for(const m in a)(!e||!Mt(e,m))&&(delete a[m],_=!0)}_&&ye(t.attrs,"set","")}function Fa(t,e,s,n){const[l,a]=t.propsOptions;let c=!1,r;if(e)for(let u in e){if(ns(u))continue;const _=e[u];let h;l&&Mt(l,h=Yt(u))?!a||!a.includes(h)?s[h]=_:(r||(r={}))[h]=_:Zs(t.emitsOptions,u)||(!(u in n)||_!==n[u])&&(n[u]=_,c=!0)}if(a){const u=kt(s),_=r||Ft;for(let h=0;h<a.length;h++){const m=a[h];s[m]=Tn(l,u,m,_[m],t,!Mt(_,m))}}return c}function Tn(t,e,s,n,l,a){const c=t[s];if(c!=null){const r=Mt(c,"default");if(r&&n===void 0){const u=c.default;if(c.type!==Function&&!c.skipFactory&&vt(u)){const{propsDefaults:_}=l;if(s in _)n=_[s];else{const h=$s(l);n=_[s]=u.call(null,e),h()}}else n=u;l.ce&&l.ce._setProp(s,n)}c[0]&&(a&&!r?n=!1:c[1]&&(n===""||n===qe(s))&&(n=!0))}return n}const Ar=new WeakMap;function Oa(t,e,s=!1){const n=s?Ar:e.propsCache,l=n.get(t);if(l)return l;const a=t.props,c={},r=[];let u=!1;if(!vt(t)){const h=m=>{u=!0;const[v,b]=Oa(m,e,!0);Ht(c,v),b&&r.push(...b)};!s&&e.mixins.length&&e.mixins.forEach(h),t.extends&&h(t.extends),t.mixins&&t.mixins.forEach(h)}if(!a&&!u)return Ct(t)&&n.set(t,Le),Le;if(mt(a))for(let h=0;h<a.length;h++){const m=Yt(a[h]);gl(m)&&(c[m]=Ft)}else if(a)for(const h in a){const m=Yt(h);if(gl(m)){const v=a[h],b=c[m]=mt(v)||vt(v)?{type:v}:Ht({},v),E=b.type;let H=!1,X=!0;if(mt(E))for(let nt=0;nt<E.length;++nt){const L=E[nt],K=vt(L)&&L.name;if(K==="Boolean"){H=!0;break}else K==="String"&&(X=!1)}else H=vt(E)&&E.name==="Boolean";b[0]=H,b[1]=X,(H||Mt(b,"default"))&&r.push(m)}}const _=[c,r];return Ct(t)&&n.set(t,_),_}function gl(t){return t[0]!=="$"&&!ns(t)}const zn=t=>t==="_"||t==="_ctx"||t==="$stable",Gn=t=>mt(t)?t.map(pe):[pe(t)],jr=(t,e,s)=>{if(e._n)return e;const n=zo((...l)=>Gn(e(...l)),s);return n._c=!1,n},Aa=(t,e,s)=>{const n=t._ctx;for(const l in t){if(zn(l))continue;const a=t[l];if(vt(a))e[l]=jr(l,a,n);else if(a!=null){const c=Gn(a);e[l]=()=>c}}},ja=(t,e)=>{const s=Gn(e);t.slots.default=()=>s},qa=(t,e,s)=>{for(const n in e)(s||!zn(n))&&(t[n]=e[n])},qr=(t,e,s)=>{const n=t.slots=Ca();if(t.vnode.shapeFlag&32){const l=e._;l?(qa(n,e,s),s&&Vl(n,"_",l,!0)):Aa(e,n)}else e&&ja(t,e)},Dr=(t,e,s)=>{const{vnode:n,slots:l}=t;let a=!0,c=Ft;if(n.shapeFlag&32){const r=e._;r?s&&r===1?a=!1:qa(l,e,s):(a=!e.$stable,Aa(e,l)),c=e}else e&&(ja(t,e),c={default:1});if(a)for(const r in l)!zn(r)&&c[r]==null&&delete l[r]},Jt=Hr;function Pr(t){return Rr(t)}function Rr(t,e){const s=Vs();s.__VUE__=!0;const{insert:n,remove:l,patchProp:a,createElement:c,createText:r,createComment:u,setText:_,setElementText:h,parentNode:m,nextSibling:v,setScopeId:b=he,insertStaticContent:E}=t,H=(f,g,$,y=null,S=null,A=null,R=void 0,I=null,x=!!g.dynamicChildren)=>{if(f===g)return;f&&!Ze(f,g)&&(y=D(f),lt(f,S,A,!0),f=null),g.patchFlag===-2&&(x=!1,g.dynamicChildren=null),g.dynamicChildren&&f&&f.dynamicChildren&&f.dynamicChildren.hasOnce&&(g.dynamicChildren===Le&&(g.dynamicChildren=[]),g.dynamicChildren.hasOnce=!0);const{type:w,ref:st,shapeFlag:z}=g;switch(w){case Qs:X(f,g,$,y);break;case Me:nt(f,g,$,y);break;case Es:f==null&&L(g,$,y,R);break;case ct:J(f,g,$,y,S,A,R,I,x);break;default:z&1?N(f,g,$,y,S,A,R,I,x):z&6?Z(f,g,$,y,S,A,R,I,x):(z&64||z&128)&&w.process(f,g,$,y,S,A,R,I,x,W)}st!=null&&S?os(st,f&&f.ref,A,g||f,!g):st==null&&f&&f.ref!=null&&os(f.ref,null,A,f,!0)},X=(f,g,$,y)=>{if(f==null)n(g.el=r(g.children),$,y);else{const S=g.el=f.el;g.children!==f.children&&_(S,g.children)}},nt=(f,g,$,y)=>{f==null?n(g.el=u(g.children||""),$,y):g.el=f.el},L=(f,g,$,y)=>{[f.el,f.anchor]=E(f.children,g,$,y,f.el,f.anchor)},K=({el:f,anchor:g},$,y)=>{let S;for(;f&&f!==g;)S=v(f),n(f,$,y),f=S;n(g,$,y)},T=({el:f,anchor:g})=>{let $;for(;f&&f!==g;)$=v(f),l(f),f=$;l(g)},N=(f,g,$,y,S,A,R,I,x)=>{if(g.type==="svg"?R="svg":g.type==="math"&&(R="mathml"),f==null)pt(g,$,y,S,A,R,I,x);else{const w=f.el&&f.el._isVueCE?f.el:null;try{w&&w._beginPatch(),ht(f,g,S,A,R,I,x)}finally{w&&w._endPatch()}}},pt=(f,g,$,y,S,A,R,I)=>{let x,w;const{props:st,shapeFlag:z,transition:rt,dirs:dt}=f;if(x=f.el=c(f.type,A,st&&st.is,st),z&8?h(x,f.children):z&16&&ft(f.children,x,null,y,S,cn(f,A),R,I),dt&&De(f,null,y,"created"),ot(x,f,f.scopeId,R,y),st){for(const Et in st)Et!=="value"&&!ns(Et)&&a(x,Et,null,st[Et],A,y);"value"in st&&a(x,"value",null,st.value,A),(w=st.onVnodeBeforeMount)&&ce(w,y,f)}dt&&De(f,null,y,"beforeMount");const yt=Lr(S,rt);yt&&rt.beforeEnter(x),n(x,g,$),((w=st&&st.onVnodeMounted)||yt||dt)&&Jt(()=>{try{w&&ce(w,y,f),yt&&rt.enter(x),dt&&De(f,null,y,"mounted")}finally{}},S)},ot=(f,g,$,y,S)=>{if($&&b(f,$),y)for(let A=0;A<y.length;A++)b(f,y[A]);if(S){let A=S.subTree;if(g===A||La(A.type)&&(A.ssContent===g||A.ssFallback===g)){const R=S.vnode;ot(f,R,R.scopeId,R.slotScopeIds,S.parent)}}},ft=(f,g,$,y,S,A,R,I,x=0)=>{for(let w=x;w<f.length;w++){const st=f[w]=I?$e(f[w]):pe(f[w]);H(null,st,g,$,y,S,A,R,I)}},ht=(f,g,$,y,S,A,R)=>{const I=g.el=f.el;let{patchFlag:x,dynamicChildren:w,dirs:st}=g;x|=f.patchFlag&16;const z=f.props||Ft,rt=g.props||Ft;let dt;if($&&Pe($,!1),(dt=rt.onVnodeBeforeUpdate)&&ce(dt,$,g,f),st&&De(g,f,$,"beforeUpdate"),$&&Pe($,!0),w&&(!f.dynamicChildren||f.dynamicChildren.length!==w.length)&&(x=0,R=!1,w=null),(z.innerHTML&&rt.innerHTML==null||z.textContent&&rt.textContent==null)&&h(I,""),w?jt(f.dynamicChildren,w,I,$,y,cn(g,S),A):R||P(f,g,I,null,$,y,cn(g,S),A,!1),x>0){if(x&16)O(I,z,rt,$,S);else if(x&2&&z.class!==rt.class&&a(I,"class",null,rt.class,S),x&4&&a(I,"style",z.style,rt.style,S),x&8){const yt=g.dynamicProps;for(let Et=0;Et<yt.length;Et++){const St=yt[Et],Pt=z[St],Lt=rt[St];(Lt!==Pt||St==="value")&&a(I,St,Pt,Lt,S,$)}}x&1&&f.children!==g.children&&h(I,g.children)}else!R&&w==null&&O(I,z,rt,$,S);((dt=rt.onVnodeUpdated)||st)&&Jt(()=>{dt&&ce(dt,$,g,f),st&&De(g,f,$,"updated")},y)},jt=(f,g,$,y,S,A,R)=>{for(let I=0;I<g.length;I++){const x=f[I],w=g[I],st=x.el&&(x.type===ct||!Ze(x,w)||x.shapeFlag&198)?m(x.el):$;H(x,w,st,null,y,S,A,R,!0)}},O=(f,g,$,y,S)=>{if(g!==$){if(g!==Ft)for(const A in g)!ns(A)&&!(A in $)&&a(f,A,g[A],null,S,y);for(const A in $){if(ns(A))continue;const R=$[A],I=g[A];R!==I&&A!=="value"&&a(f,A,I,R,S,y)}"value"in $&&a(f,"value",g.value,$.value,S)}},J=(f,g,$,y,S,A,R,I,x)=>{const w=g.el=f?f.el:r(""),st=g.anchor=f?f.anchor:r("");let{patchFlag:z,dynamicChildren:rt,slotScopeIds:dt}=g;dt&&(I=I?I.concat(dt):dt),f==null?(n(w,$,y),n(st,$,y),ft(g.children||[],$,st,S,A,R,I,x)):z>0&&z&64&&rt&&f.dynamicChildren&&f.dynamicChildren.length===rt.length?(jt(f.dynamicChildren,rt,$,S,A,R,I),(g.key!=null||S&&g===S.subTree)&&Da(f,g,!0)):P(f,g,$,st,S,A,R,I,x)},Z=(f,g,$,y,S,A,R,I,x)=>{g.slotScopeIds=I,f==null?g.shapeFlag&512?S.ctx.activate(g,$,y,R,x):q(g,$,y,S,A,R,x):j(f,g,x)},q=(f,g,$,y,S,A,R)=>{const I=f.component=zr(f,y,S);if(Vn(f)&&(I.ctx.renderer=W),Yr(I,!1,R),I.asyncDep){if(S&&S.registerDep(I,F,R),!f.el){const x=I.subTree=At(Me);nt(null,x,g,$),f.placeholder=x.el}}else F(I,f,g,$,S,A,R)},j=(f,g,$)=>{const y=g.component=f.component;if(Cr(f,g,$))if(y.asyncDep&&!y.asyncResolved){g.el=f.el,k(y,g,$);return}else y.next=g,y.update();else g.el=f.el,y.vnode=g},F=(f,g,$,y,S,A,R)=>{const I=()=>{if(f.isMounted){let{next:z,bu:rt,u:dt,parent:yt,vnode:Et}=f;{const re=Pa(f);if(re){z&&(z.el=Et.el,k(f,z,R)),re.asyncDep.then(()=>{Jt(()=>{f.isUnmounted||w()},S)});return}}let St=z,Pt;Pe(f,!1),z?(z.el=Et.el,k(f,z,R)):z=Et,rt&&Ts(rt),(Pt=z.props&&z.props.onVnodeBeforeUpdate)&&ce(Pt,yt,z,Et),Pe(f,!0);const Lt=_l(f),oe=f.subTree;f.subTree=Lt,H(oe,Lt,m(oe.el),D(oe),f,S,A),z.el=Lt.el,St===null&&Er(f,Lt.el),dt&&Jt(dt,S),(Pt=z.props&&z.props.onVnodeUpdated)&&Jt(()=>ce(Pt,yt,z,Et),S)}else{let z;const{el:rt,props:dt}=g,{bm:yt,m:Et,parent:St,root:Pt,type:Lt}=f,oe=rs(g);Pe(f,!1),yt&&Ts(yt),!oe&&(z=dt&&dt.onVnodeBeforeMount)&&ce(z,St,g),Pe(f,!0);{Pt.ce&&Pt.ce._hasShadowRoot()&&Pt.ce._injectChildStyle(Lt,f.parent?f.parent.type:void 0);const re=f.subTree=_l(f);H(null,re,$,y,f,S,A),g.el=re.el}if(Et&&Jt(Et,S),!oe&&(z=dt&&dt.onVnodeMounted)){const re=g;Jt(()=>ce(z,St,re),S)}(g.shapeFlag&256||St&&rs(St.vnode)&&St.vnode.shapeFlag&256)&&f.a&&Jt(f.a,S),f.isMounted=!0,g=$=y=null}};f.scope.on();const x=f.effect=new Jl(I);f.scope.off();const w=f.update=x.run.bind(x),st=f.job=x.runIfDirty.bind(x);st.i=f,st.id=f.uid,x.scheduler=()=>Kn(st),Pe(f,!0),w()},k=(f,g,$)=>{g.component=f;const y=f.vnode.props;f.vnode=g,f.next=null,Or(f,g.props,y,$),Dr(f,g.children,$),we(),il(f),ke()},P=(f,g,$,y,S,A,R,I,x=!1)=>{const w=f&&f.children,st=f?f.shapeFlag:0,z=g.children,{patchFlag:rt,shapeFlag:dt}=g;if(rt>0){if(rt&128){U(w,z,$,y,S,A,R,I,x);return}else if(rt&256){B(w,z,$,y,S,A,R,I,x);return}}dt&8?(st&16&&_t(w,S,A),z!==w&&h($,z)):st&16?dt&16?U(w,z,$,y,S,A,R,I,x):_t(w,S,A,!0):(st&8&&h($,""),dt&16&&ft(z,$,y,S,A,R,I,x))},B=(f,g,$,y,S,A,R,I,x)=>{f=f||Le,g=g||Le;const w=f.length,st=g.length,z=Math.min(w,st);let rt;for(rt=0;rt<z;rt++){const dt=g[rt]=x?$e(g[rt]):pe(g[rt]);H(f[rt],dt,$,null,S,A,R,I,x)}w>st?_t(f,S,A,!0,!1,z):ft(g,$,y,S,A,R,I,x,z)},U=(f,g,$,y,S,A,R,I,x)=>{let w=0;const st=g.length;let z=f.length-1,rt=st-1;for(;w<=z&&w<=rt;){const dt=f[w],yt=g[w]=x?$e(g[w]):pe(g[w]);if(Ze(dt,yt))H(dt,yt,$,null,S,A,R,I,x);else break;w++}for(;w<=z&&w<=rt;){const dt=f[z],yt=g[rt]=x?$e(g[rt]):pe(g[rt]);if(Ze(dt,yt))H(dt,yt,$,null,S,A,R,I,x);else break;z--,rt--}if(w>z){if(w<=rt){const dt=rt+1,yt=dt<st?g[dt].el:y;for(;w<=rt;)H(null,g[w]=x?$e(g[w]):pe(g[w]),$,yt,S,A,R,I,x),w++}}else if(w>rt)for(;w<=z;)lt(f[w],S,A,!0),w++;else{const dt=w,yt=w,Et=new Map;for(w=yt;w<=rt;w++){const Zt=g[w]=x?$e(g[w]):pe(g[w]);Zt.key!=null&&Et.set(Zt.key,w)}let St,Pt=0;const Lt=rt-yt+1;let oe=!1,re=0;const Je=new Array(Lt);for(w=0;w<Lt;w++)Je[w]=0;for(w=dt;w<=z;w++){const Zt=f[w];if(Pt>=Lt){lt(Zt,S,A,!0);continue}let ie;if(Zt.key!=null)ie=Et.get(Zt.key);else for(St=yt;St<=rt;St++)if(Je[St-yt]===0&&Ze(Zt,g[St])){ie=St;break}ie===void 0?lt(Zt,S,A,!0):(Je[ie-yt]=w+1,ie>=re?re=ie:oe=!0,H(Zt,g[ie],$,null,S,A,R,I,x),Pt++)}const Qn=oe?Ir(Je):Le;for(St=Qn.length-1,w=Lt-1;w>=0;w--){const Zt=yt+w,ie=g[Zt],tl=g[Zt+1],el=Zt+1<st?tl.el||Ra(tl):y;Je[w]===0?H(null,ie,$,el,S,A,R,I,x):oe&&(St<0||w!==Qn[St]?Q(ie,$,el,2):St--)}}},Q=(f,g,$,y,S=null)=>{const{el:A,type:R,transition:I,children:x,shapeFlag:w}=f;if(w&6){Q(f.component.subTree,g,$,y);return}if(w&128){f.suspense.move(g,$,y);return}if(w&64){R.move(f,g,$,W);return}if(R===ct){n(A,g,$);for(let z=0;z<x.length;z++)Q(x[z],g,$,y);n(f.anchor,g,$);return}if(R===Es){K(f,g,$);return}if(y!==2&&w&1&&I)if(y===0)I.persisted&&!A[on]?n(A,g,$):(I.beforeEnter(A),n(A,g,$),Jt(()=>I.enter(A),S));else{const{leave:z,delayLeave:rt,afterLeave:dt}=I,yt=()=>{f.ctx.isUnmounted?l(A):n(A,g,$)},Et=()=>{const St=A._isLeaving||!!A[on];A._isLeaving&&A[on](!0),I.persisted&&!St?yt():z(A,()=>{yt(),dt&&dt()})};rt?rt(A,yt,Et):Et()}else n(A,g,$)},lt=(f,g,$,y=!1,S=!1)=>{const{type:A,props:R,ref:I,children:x,dynamicChildren:w,shapeFlag:st,patchFlag:z,dirs:rt,cacheIndex:dt,memo:yt}=f;if((z===-2||w&&w.hasOnce)&&(S=!1),I!=null&&(we(),os(I,null,$,f,!0),ke()),dt!=null&&(!f.ctx||f.ctx===g)&&(g.renderCache[dt]=void 0),st&256){g.ctx.deactivate(f);return}const Et=st&1&&rt,St=!rs(f);let Pt;if(St&&(Pt=R&&R.onVnodeBeforeUnmount)&&ce(Pt,g,f),st&6)ut(f.component,$,y);else{if(st&128){f.suspense.unmount($,y);return}Et&&De(f,null,g,"beforeUnmount"),st&64?f.type.remove(f,g,$,W,y):w&&!w.hasOnce&&(A!==ct||z>0&&z&64)?_t(w,g,$,!1,!0):(A===ct&&z&384||!S&&st&16)&&_t(x,g,$),y&&at(f)}const Lt=yt!=null&&dt==null;(St&&(Pt=R&&R.onVnodeUnmounted)||Et||Lt)&&Jt(()=>{Pt&&ce(Pt,g,f),Et&&De(f,null,g,"unmounted"),Lt&&(f.el=null)},$)},at=f=>{const{type:g,el:$,anchor:y,transition:S}=f;if(g===ct){et($,y);return}if(g===Es){T(f),S&&!S.persisted&&S.afterLeave&&S.afterLeave();return}const A=()=>{l($),S&&!S.persisted&&S.afterLeave&&S.afterLeave()};if(f.shapeFlag&1&&S&&!S.persisted){const{leave:R,delayLeave:I}=S,x=()=>R($,A);I?I(f.el,A,x):x()}else A()},et=(f,g)=>{let $;for(;f!==g;)$=v(f),l(f),f=$;l(g)},ut=(f,g,$)=>{const{bum:y,scope:S,job:A,subTree:R,um:I,m:x,a:w}=f;bl(x),bl(w),y&&Ts(y),S.stop(),A?(A.flags|=8,lt(R,f,g,$)):f.vnode.el&&R&&(R.transition=f.vnode.transition,lt(R,f,g,$)),I&&Jt(I,g),Jt(()=>{f.isUnmounted=!0},g)},_t=(f,g,$,y=!1,S=!1,A=0)=>{for(let R=A;R<f.length;R++)lt(f[R],g,$,y,S)},D=f=>{if(f.shapeFlag&6)return D(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const g=v(f.anchor||f.el),$=g&&g[Zo];return $?v($):g};let V=!1;const tt=(f,g,$)=>{let y;f==null?g._vnode&&(lt(g._vnode,null,null,!0),y=g._vnode.component):H(g._vnode||null,f,g,null,null,null,$),g._vnode=f,V||(V=!0,il(y),fa(),V=!1)},W={p:H,um:lt,m:Q,r:at,mt:q,mc:ft,pc:P,pbc:jt,n:D,o:t};return{render:tt,hydrate:void 0,createApp:xr(tt)}}function cn({type:t,props:e},s){return s==="svg"&&t==="foreignObject"||s==="mathml"&&t==="annotation-xml"&&e&&e.encoding&&e.encoding.includes("html")?void 0:s}function Pe({effect:t,job:e},s){s?(t.flags|=32,e.flags|=4):(t.flags&=-33,e.flags&=-5)}function Lr(t,e){return(!t||t&&!t.pendingBranch)&&e&&!e.persisted}function Da(t,e,s=!1){const n=t.children,l=e.children;if(mt(n)&&mt(l))for(let a=0;a<n.length;a++){const c=n[a];let r=l[a];r.shapeFlag&1&&!r.dynamicChildren&&((r.patchFlag<=0||r.patchFlag===32)&&(r=l[a]=$e(l[a]),r.el=c.el),!s&&r.patchFlag!==-2&&Da(c,r)),r.type===Qs&&(r.patchFlag===-1&&(r=l[a]=$e(r)),r.el=c.el),r.type===Me&&!r.el&&(r.el=c.el)}}function Ir(t){const e=t.slice(),s=[0];let n,l,a,c,r;const u=t.length;for(n=0;n<u;n++){const _=t[n];if(_!==0){if(l=s[s.length-1],t[l]<_){e[n]=l,s.push(n);continue}for(a=0,c=s.length-1;a<c;)r=a+c>>1,t[s[r]]<_?a=r+1:c=r;_<t[s[a]]&&(a>0&&(e[n]=s[a-1]),s[a]=n)}}for(a=s.length,c=s[a-1];a-- >0;)s[a]=c,c=e[c];return s}function Pa(t){const e=t.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:Pa(e)}function bl(t){if(t)for(let e=0;e<t.length;e++)t[e].flags|=8}function Ra(t){if(t.placeholder)return t.placeholder;const e=t.component;return e?Ra(e.subTree):null}const La=t=>t.__isSuspense;function Hr(t,e){e&&e.pendingBranch?mt(t)?e.effects.push(...t):e.effects.push(t):Vo(t)}const ct=Symbol.for("v-fgt"),Qs=Symbol.for("v-txt"),Me=Symbol.for("v-cmt"),Es=Symbol.for("v-stc"),Ne=[];let ee=null;function M(t=!1){Ne.push(ee=t?null:[])}function Ia(){Ne.pop(),ee=Ne[Ne.length-1]||null}let ps=1;function $l(t,e=!1){ps+=t,t<0&&ee&&e&&(ee.hasOnce=!0)}function Ha(t){return t.dynamicChildren=ps>0?ee||Le:null,Ia(),ps>0&&ee&&ee.push(t),t}function C(t,e,s,n,l,a){return Ha(o(t,e,s,n,l,a,!0))}function Nt(t,e,s,n,l){return Ha(At(t,e,s,n,l,!0))}function Na(t){return t?t.__v_isVNode===!0:!1}function Ze(t,e){return t.type===e.type&&t.key===e.key}const Ba=({key:t})=>t??null,Fs=({ref:t,ref_key:e,ref_for:s})=>(typeof t=="number"&&(t=""+t),t!=null?Dt(t)||Kt(t)||vt(t)?{i:te,r:t,k:e,f:!!s}:t:null);function o(t,e=null,s=null,n=0,l=null,a=t===ct?0:1,c=!1,r=!1){const u={__v_isVNode:!0,__v_skip:!0,type:t,props:e,key:e&&Ba(e),ref:e&&Fs(e),scopeId:ma,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:n,dynamicProps:l,dynamicChildren:null,appContext:null,ctx:te};return r?(Rs(u,s),a&128&&t.normalize(u)):s&&(u.shapeFlag|=Dt(s)?8:16),ps>0&&!c&&ee&&(u.patchFlag>0||a&6)&&u.patchFlag!==32&&ee.push(u),u}const At=Nr;function Nr(t,e=null,s=null,n=0,l=null,a=!1){if((!t||t===fr)&&(t=Me),Na(t)){const r=Ye(t,e,!0);return s&&Rs(r,s),ps>0&&!a&&ee&&(r.shapeFlag&6?ee[ee.indexOf(t)]=r:ee.push(r)),r.patchFlag=-2,r}if(ti(t)&&(t=t.__vccOpts),e){e=Br(e);let{class:r,style:u}=e;r&&!Dt(r)&&(e.class=Qt(r)),Ct(u)&&(Wn(u)&&!mt(u)&&(u=Ht({},u)),e.style=Rt(u))}const c=Dt(t)?1:La(t)?128:Js(t)?64:Ct(t)?4:vt(t)?2:0;return o(t,e,s,n,l,c,a,!0)}function Br(t){return t?Wn(t)||Ea(t)?Ht({},t):t:null}function Ye(t,e,s=!1,n=!1){const{props:l,ref:a,patchFlag:c,children:r,transition:u}=t,_=e?Kr(l||{},e):l,h={__v_isVNode:!0,__v_skip:!0,type:t.type,props:_,key:_&&Ba(_),ref:e&&e.ref?s&&a?mt(a)?a.concat(Fs(e)):[a,Fs(e)]:Fs(e):a,scopeId:t.scopeId,slotScopeIds:t.slotScopeIds,children:r,target:t.target,targetStart:t.targetStart,targetAnchor:t.targetAnchor,staticCount:t.staticCount,shapeFlag:t.shapeFlag,patchFlag:e&&t.type!==ct?c===-1?16:c|16:c,dynamicProps:t.dynamicProps,dynamicChildren:t.dynamicChildren,appContext:t.appContext,dirs:t.dirs,transition:u,component:t.component,suspense:t.suspense,ssContent:t.ssContent&&Ye(t.ssContent),ssFallback:t.ssFallback&&Ye(t.ssFallback),placeholder:t.placeholder,el:t.el,anchor:t.anchor,ctx:t.ctx,ce:t.ce,cacheIndex:t.cacheIndex};return u&&n&&Un(h,u.clone(h)),h}function it(t=" ",e=0){return At(Qs,null,t,e)}function Wr(t,e){const s=At(Es,null,t);return s.staticCount=e,s}function bt(t="",e=!1){return e?(M(),Nt(Me,null,t)):At(Me,null,t)}function pe(t){return t==null||typeof t=="boolean"?At(Me):mt(t)?At(ct,null,t.slice()):Na(t)?$e(t):At(Qs,null,String(t))}function $e(t){return t.el===null&&t.patchFlag!==-1||t.memo?t:Ye(t)}function Rs(t,e){let s=0;const{shapeFlag:n}=t;if(e==null)e=null;else if(mt(e))s=16;else if(typeof e=="object")if(n&65){const l=e.default;l&&(l._c&&(l._d=!1),Rs(t,l()),l._c&&(l._d=!0));return}else{s=32;const l=e._;!l&&!Ea(e)?e._ctx=te:l===3&&te&&(te.slots._===1?e._=1:(e._=2,t.patchFlag|=1024))}else if(vt(e)){if(n&65){Rs(t,{default:e});return}e={default:e,_ctx:te},s=32}else e=String(e),n&64?(s=16,e=[it(e)]):s=8;t.children=e,t.shapeFlag|=s}function Kr(...t){const e={};for(let s=0;s<t.length;s++){const n=t[s];for(const l in n)if(l==="class")e.class!==n.class&&(e.class=Qt([e.class,n.class]));else if(l==="style")e.style=Rt([e.style,n.style]);else if(Bs(l)){const a=e[l],c=n[l];c&&a!==c&&!(mt(a)&&a.includes(c))?e[l]=a?[].concat(a,c):c:c==null&&a==null&&!Ws(l)&&(e[l]=c)}else l!==""&&(e[l]=n[l])}return e}function ce(t,e,s,n=null){ae(t,e,7,[s,n])}const Ur=ka();let Vr=0;function zr(t,e,s){const n=t.type,l=(e?e.appContext:t.appContext)||Ur,a={uid:Vr++,vnode:t,type:n,parent:e,appContext:l,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new mo(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:e?e.provides:Object.create(l.provides),ids:e?e.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Oa(n,l),emitsOptions:Ma(n,l),emit:null,emitted:null,propsDefaults:Ft,inheritAttrs:n.inheritAttrs,ctx:Ft,data:Ft,props:Ft,attrs:Ft,slots:Ft,refs:Ft,setupState:Ft,setupContext:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return a.ctx={_:a},a.root=e?e.root:a,a.emit=kr.bind(null,a),t.ce&&t.ce(a),a}let Wt=null;const Gr=()=>Wt||te;let Ls,fs;{const t=Vs(),e=(s,n)=>{let l;return(l=t[s])||(l=t[s]=[]),l.push(n),a=>{l.length>1?l.forEach(c=>c(a)):l[0](a)}};Ls=e("__VUE_INSTANCE_SETTERS__",s=>Wt=s),fs=e("__VUE_SSR_SETTERS__",s=>hs=s)}const $s=t=>{const e=Wt;return Ls(t),t.scope.on(),()=>{t.scope.off(),Ls(e)}},yl=()=>{Wt&&Wt.scope.off(),Ls(null)};function Wa(t){return t.vnode.shapeFlag&4}let hs=!1;function Yr(t,e=!1,s=!1){e&&fs(e);const{props:n,children:l}=t.vnode,a=Wa(t);Fr(t,n,a,e),qr(t,l,s||e);const c=a?Jr(t,e):void 0;return e&&fs(!1),c}function Jr(t,e){const s=t.type;t.accessCache=Object.create(null),t.proxy=new Proxy(t.ctx,mr);const{setup:n}=s;if(n){we();const l=t.setupContext=n.length>1?Zr(t):null,a=$s(t),c=bs(n,t,0,[t.props,l]),r=Wl(c);if(ke(),a(),(r||t.sp)&&!rs(t)&&ba(t),r){if(c.then(yl,yl),e)return c.then(u=>{fs(!0);try{xl(t,u,e)}finally{fs(!1)}}).catch(u=>{Ys(u,t,0)});t.asyncDep=c}else xl(t,c)}else Ka(t)}function xl(t,e,s){vt(e)?t.type.__ssrInlineRender?t.ssrRender=e:t.render=e:Ct(e)&&(t.setupState=ua(e)),Ka(t)}function Ka(t,e,s){const n=t.type;t.render||(t.render=n.render||he);{const l=$s(t);we();try{_r(t)}finally{ke(),l()}}}const Xr={get(t,e){return Bt(t,"get",""),t[e]}};function Zr(t){const e=s=>{t.exposed=s||{}};return{attrs:new Proxy(t.attrs,Xr),slots:t.slots,emit:t.emit,expose:e}}function tn(t){return t.exposed?t.exposeProxy||(t.exposeProxy=new Proxy(ua(Do(t.exposed)),{get(e,s){if(s in e)return e[s];if(s in is)return is[s](t)},has(e,s){return s in e||s in is}})):t.proxy}function Qr(t,e=!0){return vt(t)?t.displayName||t.name:t.name||e&&t.__name}function ti(t){return vt(t)&&"__vccOpts"in t}const G=(t,e)=>Ho(t,e,hs),ei="3.5.43";/**
- * @vue/runtime-dom v3.5.43
- * (c) 2018-present Yuxi (Evan) You and Vue contributors
- * @license MIT
- **/let Cn;const wl=typeof window<"u"&&window.trustedTypes;if(wl)try{Cn=wl.createPolicy("vue",{createHTML:t=>t})}catch{}const Ua=Cn?t=>Cn.createHTML(t):t=>t,si="http://www.w3.org/2000/svg",ni="http://www.w3.org/1998/Math/MathML",be=typeof document<"u"?document:null,kl=be&&be.createElement("template"),li={insert:(t,e,s)=>{e.insertBefore(t,s||null)},remove:t=>{const e=t.parentNode;e&&e.removeChild(t)},createElement:(t,e,s,n)=>{const l=e==="svg"?be.createElementNS(si,t):e==="mathml"?be.createElementNS(ni,t):s?be.createElement(t,{is:s}):be.createElement(t);return t==="select"&&n&&n.multiple!=null&&l.setAttribute("multiple",n.multiple),l},createText:t=>be.createTextNode(t),createComment:t=>be.createComment(t),setText:(t,e)=>{t.nodeValue=e},setElementText:(t,e)=>{t.textContent=e},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>be.querySelector(t),setScopeId(t,e){t.setAttribute(e,"")},insertStaticContent(t,e,s,n,l,a){const c=s?s.previousSibling:e.lastChild;if(l&&(l===a||l.nextSibling))for(;e.insertBefore(l.cloneNode(!0),s),!(l===a||!(l=l.nextSibling)););else{kl.innerHTML=Ua(n==="svg"?`<svg>${t}</svg>`:n==="mathml"?`<math>${t}</math>`:t);const r=kl.content;if(n==="svg"||n==="mathml"){const u=r.firstChild;for(;u.firstChild;)r.appendChild(u.firstChild);r.removeChild(u)}e.insertBefore(r,s)}return[c?c.nextSibling:e.firstChild,s?s.previousSibling:e.lastChild]}},ai=Symbol("_vtc");function oi(t,e,s){const n=t[ai];n&&(e=(e?[e,...n]:[...n]).join(" ")),e==null?t.removeAttribute("class"):s?t.setAttribute("class",e):t.className=e}const Is=Symbol("_vod"),Va=Symbol("_vsh"),ri={name:"show",beforeMount(t,{value:e},{transition:s}){t[Is]=t.style.display==="none"?"":t.style.display,s&&e?s.beforeEnter(t):Qe(t,e)},mounted(t,{value:e},{transition:s}){s&&e&&s.enter(t)},updated(t,{value:e,oldValue:s},{transition:n}){!e!=!s&&(n?e?(n.beforeEnter(t),Qe(t,!0),n.enter(t)):n.leave(t,()=>{Qe(t,!1)}):Qe(t,e))},beforeUnmount(t,{value:e}){Qe(t,e)}};function Qe(t,e){t.style.display=e?t[Is]:"none",t[Va]=!e}const ii=Symbol(""),ci=/(?:^|;)\s*display\s*:/;function ui(t,e,s){const n=t.style,l=Dt(s);let a=!1;if(s&&!l){if(e)if(Dt(e))for(const c of e.split(";")){const r=c.slice(0,c.indexOf(":")).trim();s[r]==null&&ss(n,r,"")}else for(const c in e)s[c]==null&&ss(n,c,"");for(const c in s){c==="display"&&(a=!0);const r=s[c];r!=null?pi(t,c,!Dt(e)&&e?e[c]:void 0,r)||ss(n,c,r):ss(n,c,"")}}else if(l){if(e!==s){const c=n[ii];c&&(s+=";"+c),n.cssText=s,a=ci.test(s)}}else e&&t.removeAttribute("style");Is in t&&(t[Is]=a?n.display:"",t[Va]&&(n.display="none"))}const ks=/\s*!important$/;function ss(t,e,s){if(mt(s))s.forEach(n=>ss(t,e,n));else if(s==null&&(s=""),e.startsWith("--"))ks.test(s)?t.setProperty(e,s.replace(ks,""),"important"):t.setProperty(e,s);else{const n=di(t,e);ks.test(s)?t.setProperty(qe(n),s.replace(ks,""),"important"):t[n]=s}}const Ml=["Webkit","Moz","ms"],un={};function di(t,e){const s=un[e];if(s)return s;let n=Yt(e);if(n!=="filter"&&n in t)return un[e]=n;n=Us(n);for(let l=0;l<Ml.length;l++){const a=Ml[l]+n;if(a in t)return un[e]=a}return e}function pi(t,e,s,n){return t.tagName==="TEXTAREA"&&(e==="width"||e==="height")&&Dt(n)&&s===n}const Sl="http://www.w3.org/1999/xlink";function Tl(t,e,s,n,l,a=po(e)){n&&e.startsWith("xlink:")?s==null?t.removeAttributeNS(Sl,e.slice(6,e.length)):t.setAttributeNS(Sl,e,s):s==null||a&&!zl(s)?t.removeAttribute(e):t.setAttribute(e,a?"":_e(s)?String(s):s)}function Cl(t,e,s,n,l){if(e==="innerHTML"||e==="textContent"){s!=null&&(t[e]=e==="innerHTML"?Ua(s):s);return}const a=t.tagName;if(e==="value"&&a!=="PROGRESS"&&!a.includes("-")){const r=a==="OPTION"?t.getAttribute("value")||"":t.value,u=s==null?t.type==="checkbox"?"on":"":String(s);(r!==u||!("_value"in t))&&(t.value=u),s==null&&t.removeAttribute(e),t._value=s;return}let c=!1;if(s===""||s==null){const r=typeof t[e];r==="boolean"?s=zl(s):s==null&&r==="string"?(s="",c=!0):r==="number"&&(s=0,c=!0)}try{t[e]=s}catch{}c&&t.removeAttribute(l||e)}function Ve(t,e,s,n){t.addEventListener(e,s,n)}function fi(t,e,s,n){t.removeEventListener(e,s,n)}const El=Symbol("_vei");function hi(t,e,s,n,l=null){const a=t[El]||(t[El]={}),c=a[e];if(n&&c)c.value=n;else{const[r,u]=vi(e);if(n){const _=a[e]=$i(n,l);Ve(t,r,_,u)}else c&&(fi(t,r,c,u),a[e]=void 0)}}const mi=/(Once|Passive|Capture)$/,_i=/^on:?(?:Once|Passive|Capture)$/;function vi(t){let e,s;for(;(s=t.match(mi))&&!_i.test(t);)e||(e={}),t=t.slice(0,t.length-s[1].length),e[s[1].toLowerCase()]=!0;return[t[2]===":"?t.slice(3):qe(t.slice(2)),e]}let dn=0;const gi=Promise.resolve(),bi=()=>dn||(gi.then(()=>dn=0),dn=Date.now());function $i(t,e){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;const l=s.value;if(mt(l)){const a=n.stopImmediatePropagation;n.stopImmediatePropagation=()=>{a.call(n),n._stopped=!0};const c=l.slice(),r=[n];for(let u=0;u<c.length&&!n._stopped;u++){const _=c[u];_&&ae(_,e,5,r)}}else ae(l,e,5,[n])};return s.value=t,s.attached=bi(),s}const Fl=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&t.charCodeAt(2)>96&&t.charCodeAt(2)<123,yi=(t,e,s,n,l,a)=>{const c=l==="svg";e==="class"?oi(t,n,c):e==="style"?ui(t,s,n):Bs(e)?Ws(e)||hi(t,e,s,n,a):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):xi(t,e,n,c))?(Cl(t,e,n),!t.tagName.includes("-")&&(e==="value"||e==="checked"||e==="selected")&&Tl(t,e,n,c,a,e!=="value")):t._isVueCE&&(wi(t,e)||t._def.__asyncLoader&&(/[A-Z]/.test(e)||!Dt(n)))?Cl(t,Yt(e),n,a,e):(e==="true-value"?t._trueValue=n:e==="false-value"&&(t._falseValue=n),Tl(t,e,n,c))};function xi(t,e,s,n){if(n)return!!(e==="innerHTML"||e==="textContent"||e in t&&Fl(e)&&vt(s));if(e==="spellcheck"||e==="draggable"||e==="translate"||e==="autocorrect"||e==="sandbox"&&t.tagName==="IFRAME"||e==="form"||e==="list"&&t.tagName==="INPUT"||e==="type"&&t.tagName==="TEXTAREA")return!1;if(e==="width"||e==="height"){const l=t.tagName;if(l==="IMG"||l==="VIDEO"||l==="CANVAS"||l==="SOURCE")return!1}return Fl(e)&&Dt(s)?!1:e in t}function wi(t,e){const s=t._def.props;if(!s)return!1;const n=Yt(e);return Array.isArray(s)?s.some(l=>Yt(l)===n):Object.keys(s).some(l=>Yt(l)===n)}const Ol=t=>{const e=t.props["onUpdate:modelValue"]||!1;return mt(e)?s=>Ts(e,s):e};function ki(t){t.target.composing=!0}function Al(t){const e=t.target;e.composing&&(e.composing=!1,e.dispatchEvent(new Event("input")))}const Ms=Symbol("_assign"),Ss=Symbol("_initialValue");function pn(t,e,s){return e&&(t=t.trim()),s&&(t=Pn(t)),t}const jl={created(t,{modifiers:{lazy:e,trim:s,number:n}},l){t.parentNode&&(t.type==="text"?t[Ss]=t.defaultValue.replace(/[\r\n]/g,""):t.type==="textarea"&&(t[Ss]=t.defaultValue.replace(/\r\n?/g,`
- `))),t[Ms]=Ol(l);const a=n||l.props&&l.props.type==="number";Ve(t,e?"change":"input",c=>{c.target.composing||t[Ms](pn(t.value,s,a))}),(s||a)&&Ve(t,"change",()=>{t.value=pn(t.value,s,a)}),e||(Ve(t,"compositionstart",ki),Ve(t,"compositionend",Al),Ve(t,"change",Al))},mounted(t,{value:e,modifiers:{trim:s,number:n}}){const l=e??"",a=t[Ss];delete t[Ss],a!==void 0&&(t.type==="text"||t.type==="textarea")&&t.value!==a?t[Ms](pn(t.value,s,n)):t.value=l},beforeUpdate(t,{value:e,oldValue:s,modifiers:{lazy:n,trim:l,number:a}},c){if(t[Ms]=Ol(c),t.composing)return;const r=(a||t.type==="number")&&!/^0\d/.test(t.value)?Pn(t.value):t.value,u=e??"";if(r===u)return;const _=t.getRootNode();(_ instanceof Document||_ instanceof ShadowRoot)&&_.activeElement===t&&t.type!=="range"&&(n&&e===s||l&&t.value.trim()===u)||(t.value=u)}},Mi=["ctrl","shift","alt","meta"],Si={stop:t=>t.stopPropagation(),prevent:t=>t.preventDefault(),self:t=>t.target!==t.currentTarget,ctrl:t=>!t.ctrlKey,shift:t=>!t.shiftKey,alt:t=>!t.altKey,meta:t=>!t.metaKey,left:t=>"button"in t&&t.button!==0,middle:t=>"button"in t&&t.button!==1,right:t=>"button"in t&&t.button!==2,exact:(t,e)=>Mi.some(s=>t[`${s}Key`]&&!e.includes(s))},Ti=(t,e)=>{if(!t)return t;const s=t._withMods||(t._withMods={}),n=e.join(".");return s[n]||(s[n]=((l,...a)=>{for(let c=0;c<e.length;c++){const r=Si[e[c]];if(r&&r(l,e))return}return t(l,...a)}))},Ci={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Ei=(t,e)=>{const s=t._withKeys||(t._withKeys={}),n=e.join(".");return s[n]||(s[n]=(l=>{if(!("key"in l))return;const a=qe(l.key);if(e.some(c=>c===a||Ci[c]===a))return t(l)}))},Fi=Ht({patchProp:yi},li);let ql;function Oi(){return ql||(ql=Pr(Fi))}const Ai=((...t)=>{const e=Oi().createApp(...t),{mount:s}=e;return e.mount=n=>{const l=qi(n);if(!l)return;const a=e._component;!vt(a)&&!a.render&&!a.template&&(a.template=l.innerHTML),l.nodeType===1&&(l.textContent="");const c=s(l,!1,ji(l));return l instanceof Element&&(l.removeAttribute("v-cloak"),l.setAttribute("data-v-app","")),c},e});function ji(t){if(t instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&t instanceof MathMLElement)return"mathml"}function qi(t){return Dt(t)?document.querySelector(t):t}const za={fleet:"/api/fleet",curves:"/api/curves",channels:"/api/channels",facts:"/api/facts",maintSurvey:"/api/maint_survey",maintStd:"/api/maint_std",maintFramework:"/api/maint_framework",dqFindings:"/api/dq_findings",ontList:"/api/ont_list",askStatus:"/api/ask_status",askModels:"/api/ask_models",vibcms:"/api/vibcms",algoHealth:"/algorithm/healthz",algoEndpoints:"/algorithm/api/endpoints",algoMatrix:"/algorithm/api/matrix",algoReliability:"/algorithm/api/reliability",algoPurity:"/algorithm/api/curves_check"};async function Di(t,e){const s=za[t],n=performance.now();try{const l=await fetch(s,{headers:{Accept:"application/json",...e?.body?{"Content-Type":"application/json"}:{}},...e}),a=await l.text();let c=a;try{c=JSON.parse(a)}catch{}return{name:t,path:s,ok:l.ok,status:l.status,ms:Math.round(performance.now()-n),data:c}}catch(l){return{name:t,path:s,ok:!1,status:0,ms:Math.round(performance.now()-n),error:l instanceof Error?l.message:String(l)}}}const fn=["facts","maintSurvey","ontList","askStatus","channels","dqFindings","algoHealth","algoEndpoints","algoMatrix","algoReliability","algoPurity"],Pi={class:"card"},Ri={class:"hint"},Li=["disabled"],Ii={class:"hint"},Hi=Ut({__name:"ContractSmoke",setup(t){const e=xt([]),s=xt(!1),n=xt(0);function l(c){return Array.isArray(c)?`list[${c.length}]`:c&&typeof c=="object"?Object.keys(c).slice(0,8).join(", "):typeof c}async function a(){s.value=!0,e.value=[],n.value=0;for(const c of fn){const r=await Di(c);e.value.push({name:c,path:r.path,ok:r.ok,status:r.status,ms:r.ms,keys:l(r.data),error:r.error}),n.value+=1}s.value=!1}return We(a),(c,r)=>(M(),C("section",Pi,[r[3]||(r[3]=o("h2",null,[it("契约自检 "),o("small",null,"(后端结构与算法服务可达性;对拍基准见 docs/接口契约_前后端_v0.1.md)")],-1)),o("p",Ri,[it(" 进度 "+d(n.value)+"/"+d(p(fn).length)+' · 只判"通不通",不比数据值(值随数据变,锚点在 Python 侧的门禁里) ',1),o("button",{class:"re",disabled:s.value,onClick:a},"重跑",8,Li)]),o("table",null,[r[0]||(r[0]=o("thead",null,[o("tr",null,[o("th",null,"接口"),o("th",null,"路径"),o("th",null,"状态"),o("th",null,"耗时"),o("th",null,"顶层键 / 形状")])],-1)),o("tbody",null,[(M(!0),C(ct,null,$t(e.value,u=>(M(),C("tr",{key:u.name,class:Qt({bad:!u.ok})},[o("td",null,d(u.name),1),o("td",null,[o("code",null,d(u.path),1)]),o("td",null,d(u.status),1),o("td",null,d(u.ms)+" ms",1),o("td",null,d(u.error||u.keys),1)],2))),128))])]),o("p",Ii,[it(" 契约登记接口合计 "+d(Object.keys(p(za)).length)+" 条(本页抽样 "+d(p(fn).length)+" 条); 全量 42 条由 ",1),r[1]||(r[1]=o("code",null,"python scripts/http_contract_audit.py",-1)),r[2]||(r[2]=it(" 在线复核。 ",-1))])]))}}),Ga={"app.data_missing":"暂无数据:产物尚未生成或已被清除。请到「系统维护」页执行「数据重算」(或在 /ops 控制台点「执行重算」),完成后本页会自动刷新。","app.brand":"观澜","app.build":"最新完成构建","app.lang_en":"英文","app.lang_zh":"中文","app.subtitle":"海上风电场","app.title":"观澜 · 风电数据分析与决策支持","ask.common_q":"{cat} · 常用问题 (点即问, 或下方自由输入)","ask.done_meta":"模型 {m} · 用时 {s} 秒 · {n} 步","ask.elapsed":"{s} 秒","ask.empty":"问题为空","ask.en_qa_failed":"英文质检未通过: 已拦截这次模型回答, 请重新提问。","ask.error":"出错: {e}","ask.go":"提问","ask.grounding":"答案句句带 [对象id] 溯源 + 数据回抓校验核验; 判级只转述本体原文带审级, 模型零判级权。","ask.idle":"空闲 — 点常用问题或输入后提问。串行一次一问。","ask.local_down":"本机模型未启动 (Ollama 127.0.0.1:11434 未响应); 离线版不转云","ask.model":"模型","ask.no_models":"无可用模型","ask.offline":"离线版: 模型问答需连接系统。","ask.partial":"初答 · 27B 复核中","ask.placeholder":"自由提问 ({cat})","ask.question":"问题: {q}","ask.refined":"已复核 (默认档 {m} 未过成文校验, 由更强模型重答)","ask.refs.none":"无匹配契约条目 (契约 {sha}): 本回答未被结构化事实契约背书, 按模型输出对待","ask.refs.title":"契约引用 ({n} 条, 契约 {sha}) — 按问题/回答匹配的可交付结论, 引文来自 qa_refs","ask.review":"交叉审核 · {m}","ask.review_err":"审核未完成: {e}","ask.review_note":"由另一模型基于同一份证据复核上述答案。溯源核验仅校验数字与机组号是否越界, 本项校验结论是否有证据支撑。","ask.running":"推理中…","ask.verify_bad":"溯源核验未全过 (引用 {n})","ask.verify_ok":"溯源核验 {n}/{n} 全真","ask.xrev":"交叉审核","ask.xrev_note":"(DeepSeek 14B 互审, +约 1 分钟)","ask.xrev_title":"由另一模型基于同一份证据复核; 同一模型自审无法构成独立校验","asst.alarm_type":"告警类型 {t}","asst.cause_counts":"手册 {r} 次 · 工单 {w} 次 · 涉码 {c}","asst.causes":"← 可能原因 (手册排查方向 + 工单实证)","asst.check":"查什么","asst.code_placeholder":"报警码, 如 3225 / 3130 / 13902","asst.common":"常见","asst.corrective":"抢修","asst.corrective_flow":"报警码 → 失效模式 → 手册分步处置 → 历史工单","asst.drawings":"对应图纸","asst.failmodes":"指向的失效模式","asst.faulttree":"故障树","asst.faulttree_flow":"按证据量排序的系统失效模式 + 部件级成因","asst.fm_counts":"该类本场报警 {a} 条 / 工单 {w} 条","asst.head":"检修助手 — 确定性本体查询","asst.head_note":"结果逐字取自手册与工单, 不经模型","asst.identity":"系统 {sys} · 本场 {n} 条","asst.interval":"周期 {i}","asst.known_tags":"该系统手册出现过的位号 (对图纸时参考):","asst.no_causes":"(手册无该类排查条目 — 原因层待补)","asst.no_name":"(码表未收录)","asst.no_steps":"本码无手册处置条目 (手册覆盖本场 161/322 码) — 需查图纸或联系厂商支持。","asst.node":"节点","asst.nodes":"应检节点 · {c}","asst.nodes_note":"手册此步未给位号 → 按回路构成展开, 逐点查","asst.prev_empty":"(该系统无匹配的年度维护条目 — 维护作业指导书按位置代号编排, 未必逐系统对齐)","asst.prev_fm":"失效模式 (按本场报警量)","asst.prev_head":"{sys} 预防链 · 失效模式 {f} 类 · 预防性任务 {n} 项","asst.prev_tasks":"年度任务","asst.preventive":"预防性维护","asst.preventive_flow":"系统 → 失效模式 → 年度任务 → 作业指导步骤","asst.qty":"量: {q}","asst.query_failed":"查询失败: {e}","asst.querying":"查询中…","asst.spec_name":"名称","asst.spec_no":"参数号","asst.spec_range":"允许范围","asst.spec_val":"整定值","asst.specs":"判定规范 (实机参数表)","asst.step_n":"第 {n} 步","asst.steps":"现场处置 {n} 步","asst.steps_note":"节点部件 = 手册原文元件位号 (确定); 判定规范 = 实机参数表按物理量匹配的候选判据, 非厂商绑定 — 现场以铭牌与图纸复核。","asst.tags":"节点部件","asst.tree_codes":"征兆码 {c}","asst.tree_counts":"本场报警 {a} 条 · 工单 {w} 条","asst.tree_empty":"该系统无失效模式记录","asst.tree_head":"{sys} 故障树 · {n} 个失效模式","asst.tree_note":"一层 = 系统 × 失效类 (归纳自本场码表与工单) · 二层 = 手册排查方向归一 + 工单原因计数; 条长按实证量 (报警条数 + 工单 × 10), 因果来自手册与工单原文非推断, 树深两层不外推。","asst.unassigned":"未归属","asst.wi_steps":"WI {n} 步","asst.wo_action":"处置","asst.wo_fault":"故障","asst.wo_head":"现场实际怎么修的 ({sys} 历史工单 {n} 条, 台账 2020~2024)","asst.wo_note":'工单时间窗止 2024-11-21; 2025–26 现场未提供 ⇒ "0 条" 是记录缺失非未修过。',"attr.变桨与液压":"变桨与液压","attr.塔架/结构":"塔架/结构","attr.无记录停机":"无记录停机","attr.未归类":"未归类","attr.电网/供电(外部)":"电网/供电(外部)","attr.轮毂/叶片":"轮毂/叶片","attr.运维操作":"运维操作","attr.风况(外部)":"风况(外部)","cat.equip":"设备类","cat.equip.hint":"设备状态 / 机制 / 判级 — 从机组档案、对象查询与机制检索取证","cat.equip.q1":"29号机组现在什么状态、为什么、该怎么办?","cat.equip.q2":"全场哪些机组有报警级或定论级判级?逐台列出并注明审级","cat.equip.q3":"失效机制库里有哪些机制族?各涉及哪些机组、状态如何?","cat.loss":"损失分析","cat.loss.hint":"当前 3 个月损失 / 未来损失 — ont_loss / ont_scenario 取证, 金额带电价区间统计方法","cat.loss.q1":"近3个月全场损失结构如何?分状态和分机组说, 电量与金额都给","cat.loss.q2":"29号如果拖到主轴承失效, 未来损失量级是多少?与现在修对比","cat.loss.q3":"限电常态化对检修机会成本有什么影响?","cat.risk":"安全风险预测","cat.risk.hint":"风险敞口 / 劣化趋势 / 盲区 — ont_risk / ont_mechanism_search 取证, 未列 ≠ 正常","cat.risk.q1":"当前哪些机组风险在上升需要重点盯?联动监视读数如何?","cat.risk.q2":'监测有哪些盲区?哪些"没报警"不等于正常?',"cat.risk.q3":"29号轴承正在承受金属接触, 风险敞口怎么评估?","cat.sched":"检修排程决策","cat.sched.hint":"排期沙盘 / 天气窗 / 验收树 — ont_scenario / ont_get 取证","cat.sched.q1":"29号修泵什么时候做最合适?对比各情景的损失与风险","cat.sched.q2":"未来几个月哪些月份适合安排CTV检修和吊装作业?依据历史可作业窗","cat.sched.q3":"29号修好之后按什么判据验收?三分支分别是什么条件?","ch.attrib.none":"无记录 {h}h ({p}%)","ch.attrib.ok":"已归因到部件 {h}h ({p}%)","ch.attrib.uncls":"未归类 {h}h","ch.beta.median":"全场中位 {v}°","ch.blame.d1":"限电与调度令, 不进设备责任","ch.blame.d2":"故障与检修停机, 唯一进设备考核","ch.blame.d3":"正常发电欠发与低风待机","ch.blame.n1":"交易与调度侧","ch.blame.n2":"设备侧","ch.blame.n3":"运行侧","ch.blame.title":"损失 {tot} MWh 按责任归属","ch.cap.legend":"圆内数字 = 台数, 圆面积 ∝ 台数","ch.cap.median":"中位 {v}","ch.cap.p":"满发封顶","ch.cap.w":"转速封顶","ch.ml.legend":"— {s}","ch.pareto.cum80":"累计 80%","ch.pareto.cumtip":"{k} · 累计 {p}%","ch.pareto.key":"关键少数: 前 {k} 项占 80%","ch.pareto.none":"时间窗内无数据","ch.pareto.top3":"前三: ","ch.pareto.total":"共 {n} 项, 合计 {tot}{unit}","ch.pareto.xlab":"报警码 (悬停看全名)","ch.quad.few":"时间窗内码数不足, 不作四象限","ch.quad.q1":"低频长时 · 硬故障","ch.quad.q1s":"备件与检修窗","ch.quad.q2":"高频长时 · 重点治理","ch.quad.q2s":"优先派工","ch.quad.q3":"低频短时 · 本底","ch.quad.q3s":"不单独处置","ch.quad.q4":"高频短时 · 重复触发","ch.quad.q4s":"调整参数或屏蔽, 非硬件故障","ch.quad.tip":"{n} 条 · 单次中位 {med}s · 累计 {h}h · {nt} 台","ch.quad.xlab":"发生条数 (对数)","ch.quad.ylab":"单次中位时长 (对数)","ch.ram.area":"圆面积 = 累计停机时长","ch.ram.equip":"设备类","ch.ram.ext":"外部类","ch.ram.few":"部件数不足, 不作象限","ch.ram.median":"虚线 = 本场中位分界","ch.ram.q1":"常坏且难修","ch.ram.q1s":"最高优先级","ch.ram.q2":"罕发难修","ch.ram.q2s":"备件与作业窗","ch.ram.q3":"频发易修","ch.ram.q3s":"查根因, 换件无用","ch.ram.q4":"少发好修","ch.ram.q4s":"维持","ch.ram.tip":"{p}: 平均无故障间隔(MTBF){mtbf}h · 单次停机时长(MDT){mdt}h · 停机 {h}h · {n}起 · {u}台","ch.ram.tip_ext":" · 外部类不计设备可靠性","ch.ram.xlab":"平均无故障间隔(MTBF,h,对数)→ 越右越可靠","ch.ram.ylab":"单次停机时长(MDT,h)→ 越上越难修","ch.rate.days":"仅{d}天","ch.rate.month":"{m}月","ch.rate.n":"{n}条","ch.rate.tip":"{m}: {v} 条/日 (总 {n} 条, 数据覆盖 {cov}%)","ch.rate.ylab":"条/日","ch.ruler.norm":"正态期望 3.7σ","ch.ruler.row":"{r}σ σ = {s}","ch.wf.act":"实际上网","ch.wf.theo":"理论可发","ch.wf.tip":"{nm}: 损失 {loss} MWh, 占理论 {pct}%, 时长 {h}h","chain.gb":"齿轮箱","chain.gde":"发电机DE","chain.gen":"发电机","chain.gnde":"发电机NDE","chain.hss":"高速","chain.ims":"中间","chain.mba":"主轴承后","chain.mbf":"主轴承前","chain.ps":"行星","cmp.alarm_n":"报警 {a}","cmp.alarm_units":"报警机组","cmp.basis":"依据","cmp.by_system":"按系统查看","cmp.cards_note":"点系统卡 → 该系统全场机组与依据; 九系统 = 交付九分册一一对应; 叶片与叶根 / 塔架与基础无 SCADA 轴 (分册蓝本取 CMS / 巡检)","cmp.counts":"报警 {a} · 不可判 {u} · 良好 {g} · 优秀 {e}","cmp.cross_eyebrow":"多系统交叉机组","cmp.detail":"详情","cmp.detail_head":"{sys} · 全场 {n} 台","cmp.external":"外部","cmp.fleet_n":" · 全场 {n} 台","cmp.fusion_moved":"振动线结论与四源融合已移至独立板块 →","cmp.fusion_n":"({n} 台次收录)","cmp.good_units":"良好 {n} 台 (轻微偏离, 周期观察 — 点开看逐台依据)","cmp.grading_pending":"正在按所选时间窗重算判级…","cmp.grading_pending_why":"时间窗 {span}:变桨/偏航/蓄能/温度四个判级面正按该时间窗重算(首次约 25 秒),下面的系统卡暂时还是上一份统计方法 —— 算完会自动刷新,不会静默混用。","cmp.hit_sys":"命中系统","cmp.n_sys":"系统数","cmp.n_units":"({n} 台)","cmp.none":"本系统全场无非常态。","cmp.problem_page":"该问题页 →","cmp.rel_ev":"事件","cmp.rel_eyebrow":"部件可靠性 · 时间窗 {win}","cmp.rel_fm":"典型失效模式 (按时长)","cmp.rel_h":"停机时长","cmp.rel_head":"部件停机贡献与可靠性","cmp.rel_mdt":"单次停机时长(MDT,h)","cmp.rel_meta":"总停机 {t}h = 设备类 {a} + 外部类 {b}","cmp.rel_mtbo":"平均停机间隔(MTBO,h)","cmp.rel_note":'统计方法 ≥1h 停机段, 不含调度令 — 与"电量算账"里的停机时长{h} 不同, 差额是短于 1h 的停机段 (本页按段做可靠性指标须成段, 能量账按逐条工况态算电量): 两个数都对, 不可互相相减。',"cmp.rel_part":"部件","cmp.rel_units":"影响机组","cmp.unk_n":" · 不可判 {u}","cmp.unk_units":"不可判 (监测/数据不足, ≠ 正常)","cmp.watch_head":"关注机组 (≥2 系统交叉, {n} 台; 点机组号 → 该台独立页)","dec.classic":"维护标准 / 维护框架 / 数据质量三块尚未迁入新版 —","dec.head":"检修决策 · 本体问答 (推理无界, 结论须过校验)","en.balance":"电量平衡","en.blame":"损失责任分账","en.blame_note":'最大一笔是限电不是故障。进设备考核的只有"故障与检修停机" {n} MWh; 限电属交易与调度侧, 2026 起交易策略主导, 少发未必是弃风。',"en.cap_fail":"不通过","en.cap_note":"能量守恒核 · 理论 {op} 全额定上限 {cap}","en.cap_pass":"通过","en.kpi_act":"实际上网 · 等效满发 {h} h","en.kpi_loss":"损失率 · {v} MWh","en.kpi_theo":"理论可发 (实际+损失)","en.loss_mwh":"损失 MWh","en.share":"时长占比","en.state":"工况态","en.states":"工况态明细","en.states_note":"控制参数一致性与曲线欠发筛查在固定干净窗判, 已迁入「发电性能」页 — 本页只出当期电量账。","en.win":"窗 {win}","fig.fleet_median":"全场中位","fig.point":"测点","fig.quartile":"四分位","fig.this_unit":"本台","fig.trend":"趋势","fig.vibbar_note":"条为本台与全场中位之比; 色按 z (稳健离群度): 绿 <2 · 橙 2~3 · 红 ≥3","fig.x_median":"×中位","flt.alarm_face":"报警面","flt.alarm_meta":"{n} 条 · {c} 个码 · 时间窗 {win}","flt.attrib_note":'归因覆盖: "无记录停机" {h}h 是全场最大单项, 因不给 MTBF 而在上图中不出现 — 它不是"没有故障", 是"没归上因"。统计方法为段起点 ±30min 首发码。缺口成因待定: 此前写的"98% 的段在前 72h 内有报警 ⇒ 长停远窗"不成立 — 前 72h 有报警不等于该报警与本段停机有因果 (双模审 2026-08-28 逮)。要定成因须改判"段起止是否落在某条报警的持续区间内", 未做之前只报缺口不报原因。',"flt.block_err":"本块未算出 ({k}): {e}","flt.eyebrow":"故障统计与可靠性","flt.pareto_d":"帕累托 · 按持续时长","flt.pareto_d_note":"时长 = 闩锁统计方法 (复位 − 激活), 只作排序参考不作停机时长","flt.pareto_n":"帕累托 · 按发生条数","flt.pareto_n_note":"条数 = 发生频次, 不反映影响程度 — 高频短时报警码 (信号抖动或重复触发) 排序靠前","flt.per_t":"台级分布 · 报警条数 top{n}","flt.per_t_note":"全场合计 {n} 条 · 单台占比高须先核查是否为单一报警码重复触发","flt.per_t_share":"占全场","flt.quad":"故障模式四象限 · 条数 × 单次时长","flt.quad_note":"时间窗内共 {n} 个码, 图上为条数前 {m} 个。","flt.quad_note2":"点面积表示影响机组数, 大点为批次共性、小点为单台; 竖分界取条数中位, 横分界取 10min (一个 SCADA 采样格)。右下角的码不要按条数排优先级 — 属重复触发, 非硬件故障。上面两张帕累托对照看即此图的两条投影。","flt.quad_partial":"窗含不满月 {m} (覆盖 {c}%), 条数为原始累计未按天归一。","flt.ram":"可靠性 × 可维修性 · 部件象限","flt.ram_note":'按停机时长排序的表看不出这层结构: 同样 500h 的停机, "频发易修"要查根因、"罕发难修"要备件, 处置相反。设备类停机 {a}h / 外部类 {b}h (外部 = 电网·风况·运维操作, 不计设备可靠性)。海上机组 MDT 普遍偏高是交通窗口决定的, 不等于维修本身慢 — 跨场比 MDT 须同为海上。',"flt.rate":"月度故障率","flt.rate_example":"实测: {m} 总数最低但日均 {v} 条/日 = 全时间窗前列。","flt.rate_full":"各月覆盖完整。","flt.rate_note":"柱高 = 日均条数, 不是月总数","flt.rate_partial":"本时间窗 {m} 数据不满月 (灰虚线柱), 直接比月总数会读反。","flt.seasonal":"故障季节性 · top 报警族 × 月","flt.seasonal_note":"全程 19 个月 (跨 2 冬 1 夏); 未做 χ² 显著性检验前为【参考级】, 只看形态不作季节归因","flt.seasonal_unit":"条/月","flt.seasonal_x":"月","flt.stop_face":"停机面","flt.stop_h":"停机时长","flt.stop_meta":"{h}h · {n} 起 · 统计方法 ≥1h 段, 不含调度令","flt.stop_n":"次数","flt.stop_pareto":"停机归因帕累托","flt.stop_pareto_note":"按停机时长; 事件次数见悬停","flt.stop_units":"台级停机 top{n}","flt.stop_units_note":"停机时长高 ≠ 设备差 — 须先看归因里外部类占比 (调度令已剔除)","fus.alarm_n":"{n} 条","fus.alarm_rank":" · 第 {r}/{t}","fus.burst":"⚠ {p}% 是码 {c} 抖动","fus.burst_tip":"⚠ 单码 {c} 占 {p}%, 中位 {m} 秒/次 — 条数被抖动灌满","fus.clear":"× 清除","fus.cms_act":"行动","fus.cms_action":"需行动机组 (报警 / 不可判)","fus.cms_basis":"统计方法说明","fus.cms_basis_note":"本表 = windcms 状态管理判级 (含标量趋势与数据可判性); 融合矩阵 / 逐台结论 = 振动线确诊链转录 (候选以上)。两统计方法差异台: 仅本表列 {a} (多为标量发作 / 数据不可判, 未到确诊链); 仅确诊链列 {b} (预警级在察, 状态管理未升)。","fus.cms_chain":"部件状态链","fus.cms_chain_note":"(主承前 · 主承后 · 齿轮箱 · 发电机; 悬停看逐件等级)","fus.cms_evidence":"证据强度","fus.cms_focus":"状态焦点","fus.cms_focus_note":"(传动链: 主承前 · 主承后 · 齿轮箱 · 发电机两端)","fus.cms_grades":"38 台部件等级一览","fus.cms_head":"振动状态评估 (windcms 报告 {d} 结果转录)","fus.cms_link":"谱图 · 波形 · 判据 · 工作台等分析功能在独立 windcms 系统 →","fus.cms_loading":"载入振动评估结果…","fus.cms_note":"状态管理判级, 不代表确诊数量; 判据/谱线/计算过程不在本页 — 深潜走底部独立系统。","fus.cms_open":"打开 windcms ↗","fus.cms_overall":"综合","fus.cms_static":"(未启动时用静态版)","fus.cms_window":'数据窗 {r} —— 本时间窗**实算**覆盖区间 (窗名只是起始日代号); 页面上的图谱与"末窗"状态取自时间窗内最新记录, 故多显示末期日期。',"fus.col.alarm":"报警","fus.col.claim":"证据时间窗","fus.col.claim_axis":"26-01 → 09","fus.col.display_only":" · 只展示","fus.col.fixed":" · 不随本时间窗","fus.col.lub":"润滑柱塞","fus.col.oil":"油样","fus.col.part":"部件","fus.col.signal":"振动信号","fus.col.state_concl":"设备状态 / 振动结论","fus.col.temp":"温度","fus.col.tempaxis":"温度轴","fus.col.tempaxis_note":"±6 K","fus.col.vib":"振动","fus.col.wo":"工单","fus.ev_code":"码","fus.ev_dur":"累计时长 h","fus.ev_head":"{c} — 报警 {an} 条 / {au} 台 · 工单 {wn} 条 / {wu} 台 (时间窗内)","fus.ev_min":"时长 min","fus.ev_no_alarm":"时间窗内无该部件报警","fus.ev_no_wo":"时间窗内无该部件工单 (工单数据止 2024-11, 2026 类窗必空 = 数据边界)","fus.ev_recent":"最近 {n} 条明细","fus.ev_text":"报警内容","fus.ev_time":"时间","fus.ev_top":"台分布 top: ","fus.ev_units":"台数","fus.ev_win":"时间窗 {win} · 顶部选择器可换","fus.ev_wo_act":"处理","fus.ev_wo_cause":"原因","fus.ev_wo_name":"故障名称","fus.eval_head":"评价体系 (规范化定义 — 两轴并存, 不可互相替代)","fus.eval_meaning":"含义","fus.eval_note":'设备状态答"这台设备现在怎么样" (危险 > 报警 > 良好 > 优秀 > 不可判); 证据状态答"这个判断有多可信" (定论 → INSUFFICIENT)。设备状态一律取自振动线的判级栏这一个来源。本页判级为转录, 不产新判级; 标注为参照同型机组/频谱信号级 (未定位到具体零件)/测量链/未对应到具体部件的行不作部件级结论消费; claim_window = 该结论的证据时间窗, 窗外状态该结论不背书。',"fus.eval_state":"设备状态 (业主统计方法)","fus.eval_tier":"证据状态 (可信度)","fus.eyebrow":"振动与 SCADA 证据视图 · 展示振动结论、SCADA 指标、报警与工单线索","fus.fam_tip":"{n} 条 · 全场最多 {m} 条","fus.legend_note":'两轴不可互相替代: "候选"说的是可信度不是设备好坏; "良好"说的是设备状态不是证据强度。设备状态只取自振动线的判级栏这一个来源。',"fus.legend_state":"格子颜色 = 设备状态 (业主统计方法, 与 windcms 报告同一套):","fus.legend_tier":"徽章 = 证据状态 (可信度, windcms 九枚举):","fus.loop_ba":"换前 → 换后 (同标尺)","fus.loop_bound":"数据边界: {b}","fus.loop_closed":"已闭环 · 换件后恢复 ({n} 例)","fus.loop_date":"换件日","fus.loop_el":"早期 → 近期 (同标尺)","fus.loop_head":"维修后验证案例 (检出 → 换件 → 恢复)","fus.loop_item":"事项","fus.loop_neg":"负面对照: 工单后持平 {n} 例 (换件 ≠ 必然回落, 说明回落非巧合)。","fus.loop_none":"暂无端到端闭环证据:现场提交的振动数据包里没有「报警→检修→复测」的成对记录","fus.loop_note":"有换件记录且同一统计方法指标回落, 可作为检测链已闭合的案例; 指标仍在上升但缺少可匹配工单的机组, 需现场或台账确认后再关闭。","fus.loop_ratio":"恢复比","fus.loop_rising":"未闭环 · 指标上升待现场/工单确认 ({n} 台)","fus.loop_state":"状态","fus.loop_verdict":"判","fus.loop_x":"倍比","fus.lub_now":"润滑柱塞现状","fus.lv.bad":"定论/报警级","fus.lv.note":"候选/监视/观察级","fus.lv.ok":"销案/无新证","fus.lv.warn":"预警级","fus.m.bad":"异常严重, 建议尽快停机检查","fus.m.bad_e":"证据: 已定案","fus.m.ex":"未见异常, 保持常规监视","fus.m.ex_e":"证据: 仅记录 / 已取消","fus.m.ok":"轻微偏离, 记录观察","fus.m.ok_e":"证据: 待现场核实 / 已记为基线下窗观察","fus.m.unk":"数据不足或监测中断 — 不等于正常","fus.m.unk_e":"证据: 数据不足","fus.m.warn":"存在需现场核实或处置的异常","fus.m.warn_e":"证据: 基本确认 / 新出现待核实","fus.matrix_foot":'润滑柱塞各台设定本就不同 (全场单次循环 22~961 秒), 所以此列只展示不判级, 只有已定案的机制链才标色; 油液多数台末次取样距今超 12 个月, 此列看的是"样够不够新", 不代表当前状态。',"fus.matrix_head":"全场融合矩阵 (38 台 × 6 个证据面)","fus.matrix_note1":'各列取数窗口不同 (见列头) — 不同窗的两格同时发红不等于"同时发生", 不可当共时印证。',"fus.matrix_note2":'每格右侧曲线 = 逐月记忆轨迹 ({n} 个月, {m0} 起; 实心点 = 现窗) — 现窗快照会丢形态, 轨迹才看得见"塌→回升→翻转"类机制签名。',"fus.no_alarm":"时间窗内无报警","fus.none_word":"无","fus.oil_fresh":"近共时","fus.oil_none":"无样","fus.oil_stale":"stale > 12 个月","fus.rule1":"① 同一失效机制的多个观测面 ≠ 多源印证 — 融合禁按源数加权 (29# 柱塞/温度/振动稳态/振动瞬态 = 四个观测面一条机制链)。","fus.rule2":'② "没报警" ≠ "正常" — 在已知盲区上, 缺报警只说明监测面无效, 不说明设备无恙。',"fus.rules_head":"两条判读纪律 (随板块常显)","fus.short.nodata":"数据不足","fus.short.normal":"正常","fus.short.nosample":"未取样","fus.short.stale":"样龄过期","fus.short.uneval":"未评估","fus.short.unlisted":"未收录","fus.sub.portal_cms":"振动 CMS","fus.sub.cms":"振动分析","fus.sub.events":"报警工单","fus.sub.loop":"端到端闭环","fus.sub.matrix":"融合矩阵","fus.sub.units":"逐台情况","fus.temp_now":"温度轴现状","fus.tip_state":" — 设备状态 {s}","fus.tip_tier":" / 证据状态 {e}","fus.unavailable":"融合面数据不可用: {e}","fus.units_filter":" · 筛选: {l}","fus.units_head":'逐台情况 (全场 {u} 台 / {n} 台次{f}; 深入谱图/波形 → "振动分析")',"fus.unlisted_head":"未列机组 {n} 台 (振动线未收录 — 未列 ≠ 正常)","fus.unlisted_link":"未列 {n} 台","fus.win_n":"{n} 个窗段","fus.win_none":"未标窗","fus.wo_n":"{n} 单","fus.wo_none":"时间窗内无传动链工单","gen.beta":"桨距调度同档差","gen.beta_note":"同一功率档下的桨角与全场中位之差。{units} 偏离达中位的 {k} 倍 → {v}","gen.cands":"曲线欠发筛查","gen.cands_meta":"{note} · σ = {s}%","gen.cap":"封顶参数落位","gen.cap_note":"台数落在几个离散位置上, 不是连成一片 — 这是配置/版本差异的形状; 磨损或工况引起的会是连续散布。两轴各自成组且分组不同台 ⇒ 参数级差异, 成因须配置台账。","gen.ctrl":"控制参数一致性","gen.ctrl_win":"窗 {win}","gen.eyebrow":"特性曲线与控制参数","gen.figs":"七个镜头 · 逐档中位与同型机群残差","gen.fixed_win":"随上方时间窗 · 按时间窗重算","gen.loading":"正在计算七个镜头 (剥限电 · 逐档中位 · 同型机群残差)…","gen.no_cands":"无候选","gen.recomputing":"正在按所选时间窗重算七镜头…","gen.recomputing_short":"正在按窗重算…","gen.ruler":"尺子巡检 · 极差 ÷ σ","gen.ruler_note":"判据自身的分辨力。38 台正态抽样的极差期望约 3.7σ, 明显超出即分布非单峰 — 与左图的分组互为印证; 落在期望附近的轴 (额定桨角) 则是连续分布。","gen.win_range":"时间窗 {span}","gen.win_why":'七镜头与月度时序都按所选时间窗重算(含自定义起止日期)。提示:2025-07 ~ 2025-12 是"限电前干净判别窗"——2026 起交易策略主导,曲线含策略性少发,作设备判据时须注意;选到含 2026 的窗时该影响存在但不再遮掩。',"kpi.alarm_units":"九系统有报警的台数 / 全场","kpi.alarm_units.hint":"统计方法: 九系统 (叶片与叶根/变桨/偏航/齿轮箱/发电机/主轴承/变流器/塔架与基础/主控与传感网) 中任一被判「报警」即计一台。与下方「全场状态」格的统计方法不同 —— 那里按每台 振动/温度/润滑/油液/报警/工单 六列取最严一级, 所以两处数字可以不同, 不是矛盾。","kpi.avail":"时间可用率 (不含调度令) · {win}","kpi.curtail":"限电·绑定 电量损失","kpi.downtime":"停机时长 · {n} 起","kpi.loss":"停机电量损失 · {win}","kpi.loss_dispatch":"另调度令 {n}","kpi.mtbo":"平均停机间隔(MTBO;非行业 MTBF)","loss.curtail_bound":"限电 (命令与实际功率对得上)","loss.curtail_unbound":"限电命令期 · 功率未被压制","loss.dispatch":"调度令停机","loss.lowwind":"低风待机","loss.normal":"正常发电时的欠发","loss.stop":"故障与检修停机","mdl.cloud":"云端","mdl.deepseek-chat.nm":"DeepSeek","mdl.deepseek-chat.t":"约 3 到 10 秒","mdl.deepseek-r1:14b.nm":"本机 DeepSeek 14B · 审核档","mdl.deepseek-r1:14b.t":"约 1 到 3 分钟","mdl.deepseek-r1:32b.nm":"本机 DeepSeek 32B","mdl.deepseek-r1:32b.t":"约 3 到 8 分钟","mdl.deepseek-v4-pro.nm":"云端 DS","mdl.deepseek-v4-pro.t":"约 2 到 6 分钟","mdl.kimi-fast.nm":"Kimi","mdl.kimi-fast.t":"约 5 到 20 秒","mdl.local":"本地","mdl.outbound_warn":"内容会外发到模型厂商, 场名与台号已去标识化","mdl.qwen-plus.nm":"通义千问","mdl.qwen-plus.t":"约 5 到 20 秒","mdl.qwen3.8:27b.nm":"标准 27B · 复杂题","mdl.qwen3.8:27b.t":"约 2 到 4 分钟","mdl.qwen3:30b-a3b.nm":"快 30B (a3b)","mdl.qwen3:30b-a3b.t":"约 20 到 60 秒","mdl.qwen3:8b.nm":"轻量 8B · 默认","mdl.qwen3:8b.t":"约 30 到 60 秒","mdl.unknown_warn":"未知档位, 按内容会外发处理","mdl.zero_outbound":"全程零外发","mt.cov":"当前覆盖","mt.eyebrow":"系统维护 · 数据输入与更新端口","mt.fail":"盘点失败: {e}","mt.freq":"频率","mt.head":"数据维护面 · {n} 个源","mt.how":"补数据怎么做","mt.last":"末次更新","mt.layer_data":"数据层","mt.layer_data_note":"随运营滚动 — 新数据到位后跑摄入, 本体与判级自动刷新","mt.layer_mech":"机理层","mt.layer_mech_note":"相对稳定 — 换厂商资料或现场反馈修正时才动; 它是判据的地基, 变更须过审","mt.note":'每个源给出: 当前覆盖 / 末次更新 / 约定位置 / 摄入命令 / 更新频率 / 责任方。要补数据就把新文件放到"约定位置"再跑"摄入命令"。',"mt.put":"放到:","mt.resp":"责任","mt.rows_n":" ({n} 条)","mt.run":"跑:","mt.src":"源","mt.surveying":"盘点中…","ov.all_steps_done":"已走完(待验收)","ov.attention":"需要关注","ov.attention_n":"{n} 台","ov.basis_fusion":"本台依据来自融合面(九系统判级无「报警」行):部件 {part} · 链路走到第 {done}/{n} 步 · 卡在「{stuck}」 · 证据源 {srcs}","ov.caveat":"限定","ov.evidence":"查看完整依据","ov.fus_gap_hint":"这一面(需要关注 / 全场状态)取数来自融合面;缺件时如实为空,不从交付包补齐。在本机放好原始件后跑一次重算即会由观澜自己的生成端补上(scripts/rudong_fusion_handoff.py,见 docs 的「源代码化清单」)。","ov.illustrative":"示意数据","ov.no_srcs":"无(该台无外部证据源)","ov.quiet":"其余 {n} 台未进入优先关注清单;设备状态请查看全场状态评估。","ov.quiet_all":"当前优先关注清单为空;{n} 台机组的设备状态请查看全场状态评估。","ov.ranked_by":"按 设备状态 × 证据量 排序","ov.strip":"全场状态","ov.strip_hint":"一格一台 · 点格定位","ov.systems":"九系统","ov.systems_hint":"点系统看逐台依据","pop.acts":"动作统计","pop.close":"关闭","pop.loading":"载入中…","pop.none":"本时间窗无记录","pop.o_act":"处置","pop.o_cause":"原因","pop.o_check":"排查","pop.o_date":"日期","pop.o_fault":"故障","pop.o_kind":"类别","pop.orders":"工单 {n} 单","pop.orders_none":"时间窗内无工单","pop.orders_one":"工单 1 单","pop.problem":"{u} · {sys}","pop.unit":"{u} · 全部问题","rpt.attrib.note":'"无记录停机"不是没有故障, 是没归上因。',"rpt.attrib.title":"归因覆盖","rpt.aud_in":"场站内部 (全量)","rpt.aud_up":"上报集团 (脱敏)","rpt.b.attrib.d":"已归因 vs 无记录停机的占比 — 无记录不等于没有故障","rpt.b.attrib.nm":"归因覆盖","rpt.b.blame.d":'交易调度侧 / 设备侧 / 运行侧 三段占比 — 回答"谁的责任"',"rpt.b.blame.nm":"损失责任分账","rpt.b.caliber.d":"统计期 / 残月 / 工单时间窗 / 判级性质 — 建议常驻, 没有边界的数字堆不能作汇报依据","rpt.b.caliber.nm":"统计方法与适用边界","rpt.b.chain.d":"证据→机制→判级→排期→动作→验收 六步的瓶颈分布","rpt.b.chain.nm":"决策链进度","rpt.b.emon.d":"逐月上网 / 损失 / 损失率 / 等效满发, 含数据覆盖率","rpt.b.emon.nm":"逐月发电表","rpt.b.frate.d":"按天归一的日均条数, 数据不满月单独标注","rpt.b.frate.nm":"月度故障率","rpt.b.kpi.d":"六个核心数: 上网电量 / 等效满发 / 可用率 / 损失率 / 停机间隔 / 需行动台","rpt.b.kpi.nm":"一级指标","rpt.b.loop.d":"检出 → 换件 → 复测回落的历史例证, 证明这条链是通的","rpt.b.loop.nm":"闭环实证","rpt.b.narr.d":"模型基于实测数据生成的运行总结 — 为图表补充文字结论, 供汇报使用","rpt.b.narr.nm":"运行总结","rpt.b.pareto.d":"按条数降序 + 累计 80% 线, 找关键少数","rpt.b.pareto.nm":"故障帕累托","rpt.b.parts.d":"逐部件停机时长 / 事件数 / 平均无故障间隔(MTBF)/ 单次停机时长(MDT)/ 影响机组数","rpt.b.parts.nm":"部件停机表","rpt.b.plan.d":"由数据推出的行动项, 不是套话","rpt.b.plan.nm":"下期建议","rpt.b.quad.d":"条数 × 单次时长, 区分重复触发与实际停机 — 按条数排序会误定优先级","rpt.b.quad.nm":"故障四象限","rpt.b.ram.d":'平均无故障间隔(MTBF)× 单次停机时长(MDT)部件象限, 分出"频发易修"与"罕发难修", 处置方向相反',"rpt.b.ram.nm":"可靠性象限","rpt.b.units.d":"需跟踪台的部件 / 证据源 / 六步进度 / 卡在哪一步","rpt.b.units.nm":"重点机组","rpt.b.water.d":"理论可发 → 逐段扣损 → 实际上网, 用于定位电量流向","rpt.b.water.nm":"能量瀑布","rpt.blame.cal":"工况态分解 + 限电命令面绑定判别; 平均出力=实发÷台时, 用作风资源代理量","rpt.blame.note":'进设备考核的只有"故障与检修停机"; 限电属交易与调度侧。',"rpt.blame.note2":'限电不是"低风时段收到的空令": 限电·绑定时段平均出力 1.435 MW, 正常发电时段 1.412 MW, 比值 1.02 — 风况相同而出力被压, 说明限电是真压制; 但"限电命令期·功率未被压制"那一档平均出力仅 0.724 MW (18% 额定), 确属低风时段收令。',"rpt.blame.title":"损失责任分账","rpt.cal.deid":"脱敏","rpt.cal.deid_d":"上报版隐去判据门槛与特征频率","rpt.cal.denom":"可用率与损失率分母不同","rpt.cal.denom_d":'可用率分母剔除低风待机与调度令(问"该发时能不能发"), 损失率分母含全部时段(问"理论能发多少"); 同一低风时段在可用率里不计时间、在损失率里计入基数 — 这是两个指标的设计差异不是错, 但两者不可直接相乘或互推。低风待机对损失的贡献仅 118 MWh(0.5%)',"rpt.cal.partial":" — {m} 数据不满月(覆盖 {c}%), 月度已按天归一","rpt.cal.period":"统计期","rpt.cal.rating":"判级","rpt.cal.rating_d":"由振动/温度/润滑/油液四源融合得出; 行动等级由综合报告出具","rpt.cal.stop":"停机","rpt.cal.stop_d":"可靠性统计方法 ≥1h 段, 电量账为逐条工况态 — 两个数都对, 不可相减","rpt.cal.title":"统计方法与数据边界","rpt.cal.wo":"工单","rpt.cal.wo_d":"台账 2020~2024-11, 本报告不对本期检修执行下结论","rpt.caliber_lbl":"统计方法: ","rpt.chain.cal":"「动作」一列不可判 — {b}","rpt.chain.note":"六步: 证据 → 机制 → 判级 → 排期 → 动作 → 验收。当前 {s}。","rpt.chain.title":"决策链进度","rpt.chapters":"{n} 个章节","rpt.cloud_note":"; 内容会外发到模型厂商","rpt.compose":"生成","rpt.compose_fail":"生成失败: {e}","rpt.composed":"已按需求编排 {n} 块{narr} · {m} 用时 {s}s","rpt.composing":"模型编排中… 挑组件 + 写总结","rpt.emon.act":"上网 MWh","rpt.emon.cal":"覆盖率<50% 的月不参与环比","rpt.emon.cov":"覆盖","rpt.emon.eflh":"等效满发 h","rpt.emon.loss":"损失 MWh","rpt.emon.m":"月","rpt.emon.partial":" 不满月","rpt.emon.pct":"损失率","rpt.emon.title":"逐月发电","rpt.empty_canvas":"画布是空的 — 先从组件库选内容","rpt.export_docx":"导出 Word","rpt.export_xlsx":"导出 Excel","rpt.eyebrow":"汇报定制 · 画布","rpt.facts.agg":"聚合层","rpt.facts.sub":"{n} 条, 契约 {sha}; 数据/时间窗/结论只经契约更新","rpt.facts.sys":"系统","rpt.facts.text":"结论","rpt.facts.title":"可交付级结论 · 契约生成","rpt.facts.verdict":"裁决","rpt.foot_asof":"出件 {d}","rpt.foot_deid":"判据门槛与特征频率已脱敏","rpt.foot_src":"数据源 SCADA 10min · 报警事件 · 工单台账 · CMS 振动 · 油液化验","rpt.foot_trace":"结论可回溯至本体对象","rpt.frate.cal":"不满月按天归一","rpt.frate.note":"柱高=日均条数, 不是月总数。","rpt.frate.title":"月度故障率","rpt.g.end":"收尾","rpt.g.flt":"故障","rpt.g.gen":"发电","rpt.g.rel":"可靠性","rpt.g.unit":"机组","rpt.grounded":"数字全部接地","rpt.hint_idle":"悬停查看组件说明 · 已选组件再次点击移出 · 右侧 ↑↓ 调整顺序","rpt.kpi.act":"上网电量","rpt.kpi.action":"需行动机组","rpt.kpi.action_n":"定论 {a} · 预警 {b} · 候选 {c}","rpt.kpi.annual":"年化约 {v} h","rpt.kpi.avail":"时间可用率","rpt.kpi.avail_n":"不含调度令与低风待机","rpt.kpi.eflh":"等效满发小时","rpt.kpi.loss":"损失率","rpt.kpi.mom":"环比 {v}%","rpt.kpi.mom_na":"环比不可比(末月不满)","rpt.kpi.mtbo":"平均停机间隔","rpt.kpi.mtbo_n":"停机 {n} 起 · 单次均 {h}h","rpt.kpi.theo":"理论可发 {v}","rpt.library":"组件库","rpt.library_note":"点击加入报告, 再次点击移出 · 画布里已有 {n} 块","rpt.local_note":"; 数据不出本地","rpt.loop.cal":"振动标量前后对比","rpt.loop.comp":"部件","rpt.loop.date":"换件日期","rpt.loop.note":"这几台正是算法当初的检出台 ⇒ 故障前能看见、换件后能看见恢复。","rpt.loop.post":"换后","rpt.loop.pre":"换前","rpt.loop.ratio":"比值","rpt.loop.title":"端到端闭环实证","rpt.narr.cal":"模型 {m} 生成 · 数字取自系统实测摘要 · 数据回抓校验{g}","rpt.narr.empty":"还没有生成 — 在上面的交互窗输入报告要求。","rpt.narr.g_n":"报 {n} 处待核","rpt.narr.g_ok":"全通过","rpt.narr.title":"运行总结","rpt.narr.ungr":"⚠ 以下数值由模型自行推算, 不在原始数据摘要中, 引用前须核对: {v}","rpt.narr_plus":" + 一段运行总结","rpt.need_empty":"先输入报告要求","rpt.need_head":"输入报告要求","rpt.need_hint":"模型依据需求选取组件, 并基于实测数据生成运行总结","rpt.need_ph":"例如: 上报集团月报, 侧重设备可靠性与重点机组","rpt.no_compose":"本部署未启用编排接口, 画布仍可手动拼装","rpt.no_models":"本部署未配置任何模型密钥, 编排不可用","rpt.paper_sub":"统计期 {win} | {n} 台","rpt.paper_title":"运行分析报告","rpt.pareto.cal":"报警事件表","rpt.pareto.title":"故障帕累托","rpt.parts.cal":"归因=段起点±30min 首发码","rpt.parts.ev":"事件","rpt.parts.ext":" (外部)","rpt.parts.h":"停机h","rpt.parts.mdt":"单次停机时长(MDT,h)","rpt.parts.mtbf":"平均无故障间隔(MTBF,h)","rpt.parts.part":"部件","rpt.parts.title":"部件停机","rpt.parts.units":"影响机组","rpt.plan.1":'补机制定性 — {n} 台停在"判了级但根因未定", 是当前最大单一瓶颈',"rpt.plan.2":"回收 25~26 工单 — 台账止 2024-11, 本期检修执行与闭环无法自动判定","rpt.plan.3":"油液采样节奏 — 四源里油液长期 stale, 只能作回测锚","rpt.plan.4":"限电侧 — 损失六成在交易与调度侧, 设备侧改善空间有限","rpt.plan.cal":"建议级 — 排期与动作须经审批","rpt.plan.title":"下期计划与建议","rpt.preset.blank":"空白画布","rpt.preset.month":"月度运行分析","rpt.preset.topic":"设备专题","rpt.preset.week":"周报","rpt.preset.year":"年度总结","rpt.presets":"预设","rpt.preview_empty":"文档预览窗 — 从上面的组件库点选内容, 此处显示报告预览","rpt.print":"打印 / 存 PDF","rpt.quad.cal":"纵界=10min(一个SCADA采样格)","rpt.quad.note":"右下角报警码属重复触发, 不应按条数排定优先级。","rpt.quad.title":"故障模式四象限","rpt.ram.cal":"SCADA ≥1h 停机段, 不含调度令; 海上 MDT 含交通窗口","rpt.ram.note":"设备类 {a}h / 外部类 {b}h (电网·风况·运维操作不计设备可靠性)","rpt.ram.title":"可靠性 × 可维修性","rpt.ungrounded_n":"{n} 个数字待核","rpt.units.at":"卡在","rpt.units.cal":"四源融合判级","rpt.units.clear":"全通","rpt.units.ev":"部件与证据","rpt.units.head":"需跟踪 {n} 台 / {tot} | 瓶颈 ","rpt.units.prog":"进度","rpt.units.rising":"在升 {r}×","rpt.units.state":"状态","rpt.units.stuck":"{n} 台卡在「{s}」","rpt.units.title":"重点机组与处置","rpt.up_note":"上报版 — 判据门槛与特征频率已脱敏","rpt.up_tag":"上报版","rpt.water.cal":"SCADA 10min 工况态分解; 损失=同工况理论出力与实测之差。量级自检为防虚高的下限校验, 不是风资源判据","rpt.water.cap_bad":"量级自检: 理论 ≥ 全额定上限 {cap} MWh ✗ 数字不可信","rpt.water.cap_ok":"量级自检: 理论低于全额定上限 {cap} MWh ✔","rpt.water.note":"理论可发 {theo} = 上网 {act} + 损失 {loss} MWh ({pct}%)","rpt.water.title":"发电完成情况","rv.advci":"AdvCI","rv.dual":"双模型审","rv.lite":"lite","rv.none":"未审","st.bad":"危险","st.excellent":"优秀","st.ok":"良好","st.ok_excellent":"良好 / 优秀","st.unk":"不可判","st.warn":"报警","step.acceptance":"验收","step.action":"动作","step.evidence":"证据","step.mechanism":"机制","step.rating":"判级","step.schedule":"排期","step.site_records":"现场记录","step.stuck_at":"卡在「{step}」","sys.blade":"叶片与叶根","sys.control":"主控与传感网","sys.converter":"变流器","sys.gearbox":"齿轮箱","sys.generator":"发电机","sys.main_bearing":"主轴承","sys.other":"其他","sys.pitch":"变桨","sys.tower":"塔架与基础","sys.yaw":"偏航","tab.assistant":"检修助手","tab.component":"部件问题","tab.decision":"检修决策","tab.energy":"电量算账","tab.fault":"故障统计","tab.generation":"发电性能","tab.ontology":"本体","tab.overview":"总览","tab.report":"汇报定制","tab.system":"系统维护","tab.vibration":"振动融合分析","tier.candidate":"候选","tier.candidate.s":"候选","tier.candidate_baseline":"候选·记基线","tier.candidate_baseline.s":"候选·记基线","tier.candidate_new":"候选·新发","tier.candidate_new.s":"候选·新发","tier.confirmed":"定论","tier.confirmed.s":"定论","tier.detail.不可判":"不可判","tier.detail.仲裁输入":"仲裁输入","tier.detail.优":"优","tier.detail.优秀":"优秀","tier.detail.传感器项":"传感器项","tier.detail.候选":"候选","tier.detail.候选·监视(复发)":"候选·监视(复发)","tier.detail.候选·跟踪":"候选·跟踪","tier.detail.危险":"危险","tier.detail.可降":"可降","tier.detail.复发候选(两轴合并)":"复发候选(两轴合并)","tier.detail.定论":"定论","tier.detail.弱同向新证":"弱同向新证","tier.detail.报":"报","tier.detail.报警":"报警","tier.detail.本体无新证":"本体无新证","tier.detail.正常":"正常","tier.detail.正样本":"正样本","tier.detail.温度单轴保留":"温度单轴保留","tier.detail.监视":"监视","tier.detail.监视(不开箱)":"监视(不开箱)","tier.detail.良":"良","tier.detail.良好":"良好","tier.detail.蓄能失效候选(定向查)":"蓄能失效候选(定向查)","tier.detail.观察":"观察","tier.detail.观察(发电机侧)":"观察(发电机侧)","tier.detail.记基线观察":"记基线观察","tier.detail.销案(定论)":"销案(定论)","tier.detail.降观察":"降观察","tier.detail.预警":"预警","tier.detail.预警·处置升急":"预警·处置升急","tier.detail.预警·处置规划":"预警·处置规划","tier.insufficient":"不足","tier.insufficient.s":"不足","tier.near":"准定论·预警","tier.near.s":"准定论","tier.normal":"正常","tier.normal.s":"正常","tier.reference":"参考","tier.reference.s":"参考","tier.withdrawn":"撤回","tier.withdrawn.s":"撤回","ui.all":"全部","ui.back_portal":"← 返回门户","ui.back_to":"← 返回{tab}","ui.collapse":"收起","ui.count":"条数","ui.data_hidden":"({n} 处数据文本尚无英文,需复核)","ui.date":"日期","ui.empty":"无数据","ui.error":"出错了","ui.expand":"展开","ui.loading":"载入中…","ui.not_ported":"本页尚未迁入新版。","ui.not_recorded":"台账未填","ui.open":"查看 →","ui.open_classic":"在经典版打开 →","ui.query":"查询","ui.reselect":"重新选择机组 / 测点","ui.retry":"重试","ui.system":"系统","ui.unit":"机组","ui.units":"机组","ui.verbatim":"原始记录 (中文)","ui.verbatim_note":"{n} 处为手册/工单原文, 无英文译本, 按原文转录。","unit.h":"h","unit.n":" 条","unit.units":"台","vp.(振动线未收录)":"(振动线未收录)","vp.主轴承(后)+集中润滑泵":"主轴承(后)+集中润滑泵","vp.发电机(引用同族, 见族主台)":"发电机(无本台独立证据, 参照同型机组)","vp.发电机(未映射)":"发电机(未对应到具体部件)","vp.发电机DE":"发电机DE","vp.发电机DE+NDE(两端)":"发电机DE+NDE(两端)","vp.发电机NDE":"发电机NDE","vp.齿轮箱(未映射)":"齿轮箱(未对应到具体部件)","vp.齿轮箱(测量链问题, 非部件)":"齿轮箱(测量链问题, 非部件)","vp.齿轮箱(谱线级, 未映射到部件)":"齿轮箱(频谱信号级 (未定位到具体零件), 未对应到具体部件)","vp.齿轮箱中间轴":"齿轮箱中间轴","vp.齿轮箱二级行星内齿圈":"齿轮箱二级行星内齿圈","vp.齿轮箱高速轴":"齿轮箱高速轴","win.2025H2":"2025H2","win.2026":"2026年","win.2026H1":"2026H1","win.30d":"近30日","win.90d":"近90日","win.all":"全程","win.apply":"应用","win.bad_order":"开始日期不能晚于结束日期","win.banner":"时间窗 {win} · 本页全部数字随上方时间窗切换","win.custom":"自定义","win.custom_hint":"自定义起止日期(含两端)。日粒度件(判级/停机台账/曲线)按日精确;月度聚合件按所跨月份取整,图上会写明。","win.custom_sel":"自定义 {a} ~ {b}","win.from":"开始日期(含)","win.label":"时间窗","win.months":"按月","win.need_both":"请把开始与结束日期都选上","win.partial":"时间窗内 {m} 数据不满月 (覆盖 {c}%), 月度图已按天归一","win.presets":"预设时间窗","win.through":"至{date}","win.to":"结束日期(含)","tab.documents":"交付文档","tab.recalc":"数据重算","doc.eyebrow":"交付文档","doc.loading":"正在读取交付文档…","doc.head":"交付文档 ({n})","doc.note":"交付文档随包提供;下载后可离线查阅。","doc.name":"文档","doc.size":"大小","doc.get":"获取","doc.download":"下载","rc.eyebrow":"数据重算","rc.loading":"正在读取重算状态…","rc.running":"重算进行中","rc.idle":"当前空闲","rc.note":"重算链按步执行;本页每 5 秒刷新状态与日志尾部。","rc.since":"开始于","rc.start":"开始重算","rc.log":"重算日志(尾部)","rc.empty":"(暂无日志)","tab.portal":"门户栏目","pt.eyebrow":"门户栏目","pt.head":"重构前门户上的栏目(已迁移 / 可达)","pt.note":"总览、振动·CMS、交付文档、数据重算已迁为页签;系统架构/方法/经验发现/案例·液压 见「架构与资料」页签;下列两项为在线服务入口。","pt.col":"栏目","pt.what":"说明","pt.open":"打开","pt.kind_portal":"门户存档页(release/portal.html 经网关 /portal 伺服)","pt.kind_svc":"在线服务(经网关)","tab.portal_sec":"架构与资料","ps.eyebrow":"系统架构 · 方法 · 经验发现 · 案例·液压","ps.missing":"该节内容未抽取到(请检查 v2.9.2 门户原文)。","tab.portal_src":"门户","pv.eyebrow":"观澜门户(Vue 装配 · v2.9.2 原文外壳与内嵌件)","pv.loading":"正在装配门户(外壳 + 内嵌件)…","pv.assembled":"门户已装配:内嵌件 {n} 件(外壳与内嵌件均取自 v2.9.2 原文)"};function i(t,e){let s=Ga[t]??t;if(e)for(const[n,l]of Object.entries(e))s=s.split(`{${n}}`).join(String(l));return s}const Ni=["overview","energy","component","vibration","generation","fault","decision","assistant","report","system","documents"],En=["overview","energy","component","fault","vibration","generation","decision","assistant","system","report","documents"],Bi={class:"eyebrow"},Wi={key:0,class:"panel"},Ki={class:"small",style:{color:"var(--critical)"}},Ui={key:1,class:"panel"},Vi={class:"small muted"},zi={class:"panel mb"},Gi={class:"small muted"},Yi={class:"panel mb"},Ji={class:"tblwrap"},Xi={style:{"margin-top":"4px"}},Zi={style:{width:"60%"}},Qi={style:{width:"16%"}},tc={style:{width:"24%"}},ec={class:"small"},sc={class:"small num"},nc={class:"small"},lc=["href","download"],ac=Ut({__name:"Documents",setup(t){const e=xt(null),s=xt(""),n=l=>l>=1048576?(l/1048576).toFixed(1)+" MB":Math.max(1,Math.round(l/1024))+" KB";return We(async()=>{try{const a=await(await fetch("/api/delivery_docs")).json();a&&a.error?s.value=String(a.error):e.value=a&&a.docs||[]}catch(l){s.value=String(l&&l.message||l)}}),(l,a)=>(M(),C("section",null,[o("div",Bi,d(p(i)("doc.eyebrow")),1),s.value?(M(),C("div",Wi,[o("p",Ki,d(s.value),1)])):e.value?(M(),C(ct,{key:2},[o("div",zi,[o("h3",null,d(p(i)("doc.head",{n:e.value.length})),1),o("p",Gi,d(p(i)("doc.note")),1)]),o("div",Yi,[o("div",Ji,[o("table",Xi,[o("tr",null,[o("th",Zi,d(p(i)("doc.name")),1),o("th",Qi,d(p(i)("doc.size")),1),o("th",tc,d(p(i)("doc.get")),1)]),(M(!0),C(ct,null,$t(e.value,c=>(M(),C("tr",{key:c.name},[o("td",ec,d(c.name),1),o("td",sc,d(n(c.size||0)),1),o("td",nc,[o("a",{href:c.url,download:c.name},d(p(i)("doc.download")),9,lc)])]))),128))])])])],64)):(M(),C("div",Ui,[o("p",Vi,d(p(i)("doc.loading")),1)]))]))}}),oc={class:"portal-full"},rc={key:0,class:"portal-loading"},hn="/web/portal/",ic=Ut({__name:"PortalView",setup(t){const e=xt(null),s=xt("loading"),n=xt("");async function l(r){const u=await fetch(r);if(!u.ok)throw new Error(r+" "+u.status);return await u.text()}We(async()=>{try{let r=await l(hn+"shell.html");const u=r.match(/<title[^>]*>([^<]*)<\/title>/i);u&&u[1].trim()&&(document.title=u[1].trim());const _=Array.from(r.matchAll(/<!--@TEMPLATE:([^>]+?)-->/g)).map(b=>b[1]);_.forEach(b=>{r=r.replace("<!--@TEMPLATE:"+b+"-->",'<template id="'+b+'"></template>')});try{const b=await l(hn+"governance_sources.json");r=r.replace("<!--@GOVERNANCE_SOURCES-->",b.replace(/</g,"\\u003c"))}catch{}const h=[[/<a([^>]*?)href="#cms"/g,'<a$1target="_top" href="/detail/v2#tab=vibration"'],[/<a([^>]*?)href="#documents"/g,'<a$1target="_top" href="/detail/v2#tab=documents"'],[/<a([^>]*?)href="#recalc"/g,'<a$1target="_top" href="/detail/v2#tab=recalc"'],[/<a([^>]*?)href="(?:https?:\/\/[^"]*)?\/(?:detail\/v2|v2)[^"]*"/g,'<a$1target="_top" href="/detail/v2#workbench"']];for(const[b,E]of h)r=r.replace(b,E);const m=["cms","documents","recalc"];for(const b of m)r=r.replace(new RegExp('<a[^>]*data-nav="'+b+'"[^>]*>[^<]*</a>',"g"),"");n.value=i("pv.assembled",{n:_.length});const v=new Blob([r],{type:"text/html;charset=utf-8"});e.value&&(e.value.src=URL.createObjectURL(v)),c(),a(_),s.value="ready"}catch(r){n.value=String(r&&r.message||r),s.value="error"}});async function a(r){let _=0,h=0;const m=async()=>{for(;_<r.length;){const v=r[_++];try{const b=await fetch(hn+"templates/"+encodeURIComponent(v)+".html",{cache:"force-cache"}),E=b.ok?await b.text():"",H=e.value&&e.value.contentDocument,X=H&&H.getElementById(v);if(H&&X){const nt=H.createElement("template");nt.id=v,nt.innerHTML=E,X.replaceWith(nt)}}catch{}h++,n.value=i("pv.assembled",{n:h})}};await Promise.all(Array.from({length:6},()=>m()))}function c(){const r=[['nav a[data-nav="cms"]',"#tab=vibration"],['nav a[data-nav="documents"]',"#tab=documents"],['nav a[data-nav="recalc"]',"#tab=recalc"]],u=()=>{const h=e.value&&e.value.contentDocument;if(!h)return;const m=E=>H=>{H.preventDefault(),H.stopImmediatePropagation();const X=window.top;try{X.location.href=E}catch{location.href=E}};for(const[E,H]of r){const X=h.querySelector(E);X&&X.addEventListener("click",m("/detail/v2"+H),!0)}const v=h.querySelector("nav a:not([data-nav])")||h.querySelector('a[href*="18033"]');v&&v.addEventListener("click",m("/detail/v2#workbench"),!0);const b=h.querySelector("a.portal-wb");b&&b.addEventListener("click",m("/detail/v2#workbench"),!0)},_=e.value;_&&(_.addEventListener("load",u),u())}return(r,u)=>(M(),C("div",oc,[s.value!=="ready"?(M(),C("div",rc,d(s.value==="loading"?p(i)("pv.loading"):n.value),1)):bt("",!0),u[0]||(u[0]=o("a",{class:"portal-wb",href:"#workbench",title:"切换到 Vue 工作台"},"工作台",-1)),o("iframe",{ref_key:"frame",ref:e,class:"portal-frame",title:"观澜门户"},null,512)]))}}),Ya=(t,e)=>{const s=t.__vccOpts||t;for(const[n,l]of e)s[n]=l;return s},Ja=Ya(ic,[["__scopeId","data-v-77ae2ea1"]]),Yn=["叶片与叶根","变桨","偏航","齿轮箱","发电机","主轴承","变流器","塔架与基础","主控与传感网"],ms={叶片与叶根:"blade",变桨:"pitch",偏航:"yaw",齿轮箱:"gearbox",发电机:"generator",主轴承:"main_bearing",变流器:"converter",塔架与基础:"tower",主控与传感网:"control",主轴:"main_bearing",其他:"other"},Xa=(()=>{const t={};for(const e of Yn)t[ms[e]]=e;for(const[e,s]of Object.entries(ms))s in t||(t[s]=e);return t})(),Hs=t=>ms[String(t)]||String(t),Dl=t=>Xa[String(t)]||String(t),me=t=>{const e=ms[String(t)]||String(t);return Xa[e]?i("sys."+e):String(t??"")},_s=t=>me(t),cc={危险:"bad",报警:"warn",不可判:"unk",良好:"ok",优秀:"ex"},uc={critical:"bad",alarm:"warn",undeterminable:"unk",indeterminate:"unk","not evaluable":"unk",good:"ok",excellent:"ex",warn:"warn",bad:"bad",ok:"ok",unk:"unk",ex:"ex"},Ns=t=>cc[String(t)]||uc[String(t)],Fn={证据:"evidence",机制:"mechanism",判级:"rating",排期:"schedule",动作:"action",验收:"acceptance"},On=t=>"st."+(t==="ex"?"excellent":t),qt=t=>String(t).replace("WTG","").replace(/^0/,"")+"#",Tt=(t,e=0)=>{if(t==null||typeof t=="number"&&isNaN(t))return"—";const s=Number(t);return isNaN(s)?"—":s.toLocaleString("zh-CN",{maximumFractionDigits:e,minimumFractionDigits:e})},Pl=t=>{const e=Ns(t);return e?i(On(e)):String(t??"")},dc=["振动","温度","润滑","油液","报警","工单"];function Rl(t){const e=dc.map(n=>Ns((t?.[n]||{}).ostate)).filter(Boolean);if(!e.length)return"unk";if(e.includes("bad"))return"bad";if(e.includes("warn"))return"warn";const s=e.filter(n=>n!=="unk");return s.length?s.includes("ok")?"ok":"ex":"unk"}const Ll={bad:"critical",warn:"warning",unk:"unknown",ok:"good",ex:"excellent"},Se=t=>String(t??""),pc={key:0},fc={class:"small"},hc={href:"#tab=component","data-back":"1"},mc={class:"panel mb"},_c={style:{display:"flex",height:"12px","border-radius":"4px",overflow:"hidden",margin:"8px 0 4px"}},vc={class:"small muted"},gc={class:"tblwrap"},bc={style:{width:"74px"}},$c={class:"r",style:{width:"96px"}},yc=["href"],xc={class:"small"},wc={class:"r"},kc=["href"],Mc={key:0,class:"panel mb"},Sc={style:{cursor:"pointer","font-weight":"600"}},Tc={class:"tblwrap"},Cc={style:{"margin-top":"10px"}},Ec={style:{width:"74px"}},Fc={class:"small"},Oc={key:1,class:"panel"},Ac={class:"small"},jc={key:0},qc={class:"panel mb small",style:{"border-left":"3px solid var(--accent)"}},Dc={class:"eyebrow"},Pc={class:"panel mb"},Rc={style:{display:"grid","grid-template-columns":"repeat(auto-fit,minmax(170px,1fr))",gap:"10px"}},Lc=["data-sys"],Ic={class:"t"},Hc={class:"bar"},Nc=["innerHTML"],Bc={class:"small muted",style:{"margin-top":"8px"}},Wc={key:1,class:"panel mb",style:{"border-left":"3px solid var(--critical)"}},Kc={class:"small"},Uc={class:"eyebrow"},Vc={class:"panel mb"},zc={class:"small muted",style:{"font-weight":"400"}},Gc={class:"small muted",style:{margin:"-2px 0 8px"}},Yc={class:"tblwrap"},Jc={class:"r"},Xc={class:"r"},Zc={class:"r"},Qc={class:"r"},tu={key:0,class:"badge"},eu={class:"num small"},su={class:"r"},nu={class:"r"},lu={class:"r"},au={class:"r"},ou={class:"small"},ru={class:"small muted"},iu={key:3,class:"panel mb"},cu={class:"small"},uu={href:"#tab=vibration"},du={class:"eyebrow"},pu={class:"panel mb"},fu={class:"tblwrap"},hu={class:"r"},mu=["href"],_u={class:"r"},vu=["innerHTML"],gu={class:"small"},bu=Ut({__name:"Component",props:{d:{},sys:{}},setup(t){const e=t,s=G(()=>e.d?.sysdist||{}),n=G(()=>e.d?.rel&&!e.d.rel.err?e.d.rel:null),l=G(()=>e.sys?Dl(e.sys):null),a=G(()=>Yn.filter(h=>s.value[h]).map(h=>{const m=s.value[h],v=m.报警||0,b=m.不可判||0,E=Object.values(m).reduce((X,nt)=>X+nt,0)||1,H=v>=8?"var(--critical)":v>=3?"var(--warning)":v?"var(--accent)":"var(--good)";return{segs:[["报警","critical"],["不可判","unknown"],["良好","good"],["优秀","excellent"]].filter(([X])=>m[X]).map(([X,nt])=>({col:nt,w:(m[X]/E*100).toFixed(1)})),line:i("cmp.alarm_n",{a:`<b style="color:${H}">${v}</b>`})+(b?i("cmp.unk_n",{u:b}):"")+i("cmp.fleet_n",{n:E}),s:h,dist:m,a:v,u:b,N:E,col:H}}));function c(h){return(h.syss||[]).map(m=>`<a href="/problem/${h.t}/${encodeURIComponent(Dl(m)||m)}">${me(m)}</a>`).join(" · ")}const r=G(()=>{const m=(((e.d?.control||{}).energy||{}).items||[]).filter(v=>v.k==="停机").map(v=>v.h)[0];return m??null}),u=G(()=>{const h=n.value?.表||[],m=Math.max(1,...h.map(v=>v.停机时长h));return h.map(v=>({r:v,maxH:m,sev:v.部件==="无记录停机"?"var(--unknown)":v.外部?"var(--accent)":v.占停机>=.06?"var(--critical)":v.占停机>=.03?"var(--warning)":"var(--good)"}))}),_=G(()=>{const h=l.value;if(!h)return null;const m=(e.d?.systems||{})[h]||[],v=s.value[h]||{},b=(e.d?.systems||{})[h+"·良好"]||[],E=X=>v[X]||0,H=Object.values(v).reduce((X,nt)=>X+nt,0)||1;return{s:h,N:H,gd:b,cnt:E,al:m.filter(X=>X.st==="报警"),un:m.filter(X=>X.st==="不可判"),dist:v}});return(h,m)=>_.value?(M(),C("section",pc,[o("p",fc,[o("a",hc,d(p(i)("ui.back_to",{tab:p(i)("tab.component")})),1)]),o("div",mc,[o("h3",null,d(p(i)("cmp.detail_head",{sys:p(me)(_.value.s),n:_.value.N})),1),o("div",_c,[(M(),C(ct,null,$t([["报警","critical"],["不可判","unknown"],["良好","good"],["优秀","excellent"]],([v,b])=>o("i",{key:v,style:Rt(`width:${(_.value.cnt(v)/_.value.N*100).toFixed(1)}%;background:var(--${b})`)},null,4)),64))]),o("div",vc,d(p(i)("cmp.counts",{a:_.value.cnt("报警"),u:_.value.cnt("不可判"),g:_.value.cnt("良好"),e:_.value.cnt("优秀")})),1)]),(M(!0),C(ct,null,$t([_.value.al,_.value.un],(v,b)=>wn((M(),C("div",{key:b,class:"panel mb"},[o("h3",null,d(b===0?p(i)("cmp.alarm_units"):p(i)("cmp.unk_units"))+" "+d(p(i)("cmp.n_units",{n:v.length})),1),o("div",gc,[o("table",null,[o("tr",null,[o("th",bc,d(p(i)("ui.unit")),1),o("th",null,d(p(i)("cmp.why")),1),o("th",$c,d(p(i)("cmp.detail")),1)]),(M(!0),C(ct,null,$t(v,E=>(M(),C("tr",{key:E.t},[o("td",null,[o("a",{href:`/turbine/${E.t}`},[o("b",null,d(p(qt)(E.t)),1)],8,yc)]),o("td",xc,d(E.why),1),o("td",wc,[o("a",{class:"small",href:`/problem/${E.t}/${encodeURIComponent(_.value.s)}`},d(p(i)("cmp.detail_link")),9,kc)])]))),128))])])])),[[ri,v.length]])),128)),_.value.gd.length?(M(),C("details",Mc,[o("summary",Sc,d(p(i)("cmp.good_units",{n:_.value.gd.length})),1),o("div",Tc,[o("table",Cc,[o("tr",null,[o("th",Ec,d(p(i)("ui.unit")),1),o("th",null,d(p(i)("cmp.why")),1)]),(M(!0),C(ct,null,$t(_.value.gd,v=>(M(),C("tr",{key:v.t},[o("td",null,[o("b",null,d(p(qt)(v.t)),1)]),o("td",Fc,d(v.why),1)]))),128))])])])):bt("",!0),!_.value.al.length&&!_.value.un.length&&!_.value.gd.length?(M(),C("div",Oc,[o("p",Ac,d(p(i)("cmp.none")),1)])):bt("",!0)])):(M(),C(ct,{key:1},[t.d.sysmx_pending?(M(),C("section",jc,[o("div",qc,[o("b",null,d(p(i)("cmp.grading_pending")),1),it(" "+d(p(i)("cmp.grading_pending_why",{span:t.d.sysmx_span||""})),1)])])):bt("",!0),o("section",null,[o("div",Dc,d(p(i)("cmp.by_system")),1),o("div",Pc,[o("div",Rc,[(M(!0),C(ct,null,$t(a.value,v=>(M(),C("div",{key:v.s,class:"sysc",role:"button",tabindex:"0","data-sys":p(Hs)(v.s),style:Rt(`cursor:pointer;border-left:3px solid ${v.col}`)},[o("div",Ic,[o("b",null,d(p(me)(v.s)),1)]),o("div",Hc,[(M(!0),C(ct,null,$t(v.segs,b=>(M(),C("i",{key:b.col,style:Rt(`width:${b.w}%;background:var(--${b.col})`)},null,4))),128))]),o("div",{class:"small muted",innerHTML:v.line},null,8,Nc)],12,Lc))),128))]),o("p",Bc,d(p(i)("cmp.cards_note")),1)])]),t.d.rel&&t.d.rel.err?(M(),C("div",Wc,[o("p",Kc,d(p(i)("flt.block_err",{k:"rel",e:t.d.rel.err})),1)])):n.value?(M(),C(ct,{key:2},[o("div",Uc,d(p(i)("cmp.rel_eyebrow",{win:n.value.窗})),1),o("div",Vc,[o("h3",null,[it(d(p(i)("cmp.rel_head"))+" ",1),o("span",zc,d(p(i)("cmp.rel_meta",{t:n.value.总停机h,a:n.value.设备类停机h,b:n.value.外部类停机h})),1)]),o("p",Gc,d(p(i)("cmp.rel_note",{h:r.value==null?"":" "+p(Tt)(r.value)+"h"})),1),o("div",Yc,[o("table",null,[o("tr",null,[o("th",null,d(p(i)("cmp.rel_part")),1),o("th",null,d(p(i)("cmp.rel_h")),1),o("th",Jc,d(p(i)("cmp.rel_ev")),1),o("th",Xc,d(p(i)("cmp.rel_mtbo")),1),o("th",Zc,d(p(i)("cmp.rel_mdt")),1),o("th",Qc,d(p(i)("cmp.rel_units")),1),o("th",null,d(p(i)("cmp.rel_fm")),1)]),(M(!0),C(ct,null,$t(u.value,v=>(M(),C("tr",{key:v.r.部件},[o("td",null,[o("b",null,d(p(_s)(v.r.部件)),1),m[0]||(m[0]=it(" ",-1)),v.r.外部?(M(),C("span",tu,d(p(i)("cmp.external")),1)):bt("",!0)]),o("td",null,[o("i",{class:"bar",style:Rt(`width:${Math.round(v.r.停机时长h/v.maxH*72)}px;background:${v.sev}`)},null,4),o("span",eu,d(v.r.停机时长h)+"h · "+d((v.r.占停机*100).toFixed(1))+"%",1)]),o("td",su,d(v.r.事件数),1),o("td",nu,d(v.r.外部?"—":v.r.MTBF_h||"—"),1),o("td",lu,d(v.r.MDT_h),1),o("td",au,d(v.r.影响台数),1),o("td",ou,d(v.r.典型失效模式||"—"),1)]))),128))])]),o("p",ru,d(n.value.口径),1)])],64)):bt("",!0),t.d.fus&&!t.d.fus.err?(M(),C("div",iu,[o("p",cu,[it(d(p(i)("cmp.fusion_moved"))+" ",1),o("a",uu,[o("b",null,d(p(i)("tab.vibration")),1)]),it(" "+d(p(i)("cmp.fusion_n",{n:(t.d.fus.表||[]).length})),1)])])):bt("",!0),o("div",du,d(p(i)("cmp.cross_eyebrow")),1),o("div",pu,[o("h3",null,d(p(i)("cmp.watch_head",{n:(t.d.watch||[]).length})),1),o("div",fu,[o("table",null,[o("tr",null,[o("th",null,d(p(i)("ui.unit")),1),o("th",hu,d(p(i)("cmp.n_sys")),1),o("th",null,d(p(i)("cmp.hit_sys")),1),o("th",null,d(p(i)("cmp.basis")),1)]),(M(!0),C(ct,null,$t(t.d.watch||[],v=>(M(),C("tr",{key:v.t},[o("td",null,[o("a",{href:`/turbine/${v.t}`},[o("b",null,d(p(qt)(v.t)),1)],8,mu)]),o("td",_u,d(v.n),1),o("td",{class:"small",innerHTML:c(v)},null,8,vu),o("td",gu,d(v.why),1)]))),128))])])])],64))}}),$u=["innerHTML"],Xt=Ut({__name:"LegacyChart",props:{html:{}},setup(t){return(e,s)=>(M(),C("div",{class:"legacy-chart",innerHTML:t.html},null,8,$u))}}),yu=typeof window<"u"?window:globalThis;yu.__charts=function(t){const{t:e,fmt:s,esc:n,dv:l,EN:a}=t,c=/[㐀-鿿]/,r=O=>a&&c.test(String(O??"")),u=O=>(O=t.displayText?t.displayText(O):O==null?"":String(O),r(O)&&t.verb&&t.verb(),O),_=O=>{const J=u(O);return`<title${r(J)?' class="verbatim"':""}>${n(J)}</title>`},h=(O,J,Z)=>`<svg class="dt" viewBox="0 0 ${O} ${J}" style="width:${O}px;max-width:100%;height:auto" role="img">${Z}</svg>`,m=(O,J,Z,q={})=>`<text x="${(+O).toFixed(1)}" y="${(+J).toFixed(1)}" font-size="${q.fs||9}" fill="${q.fill||"var(--muted)"}"${q.anchor?` text-anchor="${q.anchor}"`:""}${q.op?` opacity="${q.op}"`:""}${q.w?` font-weight="${q.w}"`:""}${q.tr?` transform="${q.tr}"`:""}${q.cls?` class="${q.cls}"`:""}>${Z}</text>`,v=(O,J,Z,q={})=>{const j=u(Z);return m(O,J,n(j),r(j)?Object.assign({},q,{cls:"verbatim"}):q)},b={"限电·绑定":"loss.curtail_bound","限电命令·未绑定":"loss.curtail_unbound","停机(调度令)":"loss.dispatch",停机:"loss.stop",正常发电:"loss.normal",低风待机:"loss.lowwind"},E=O=>b[O]?e(b[O]):u(O);function H(O){const J=(O||[]).filter(x=>x&&x.n>0&&x.med>0);if(J.length<3)return`<p class="small muted">${e("ch.quad.few")}</p>`;const Z=720,q=330,j=58,F=16,k=44,P=16,B=x=>Math.log10(x),U=J.map(x=>B(x.n)),Q=J.map(x=>B(x.med)),lt=Math.min(...U)-.15,at=Math.max(...U)+.15,et=Math.min(...Q)-.15,ut=Math.max(...Q)+.15,_t=x=>j+(B(x)-lt)/(at-lt)*(Z-j-F),D=x=>q-k-(B(x)-et)/(ut-et)*(q-P-k),V=J.map(x=>x.n).sort((x,w)=>x-w),tt=V[Math.floor(V.length/2)],W=_t(tt),Y=D(600),f=Math.max(...J.map(x=>x.nt)),g=J.map(x=>{const w=3+Math.sqrt(x.nt/f)*7,st=x.n>=tt&&x.med>=600,z=st?"var(--critical)":"var(--accent)";return`<circle cx="${_t(x.n).toFixed(1)}" cy="${D(x.med).toFixed(1)}" r="${w.toFixed(1)}" fill="${z}" fill-opacity=".5" stroke="${z}" stroke-width="1">${_(`${x.code} ${u(x.k)}
- `+e("ch.quad.tip",{n:x.n,med:x.med,h:x.h,nt:x.nt}))}</circle>`}).join(""),$=J.filter(x=>x.n>=tt||x.med>=600).slice(0,8).map(x=>m(_t(x.n)+9,D(x.med)+3,n(x.code))).join(""),y=(x,w,st,z)=>m(x,w,st,{fs:10,op:.85})+m(x,w+12,z,{fs:8.5,op:.6}),S=x=>x>=3600?x/3600+"h":x>=60?x/60+"min":x+"s",A=[10,60,600,3600,36e3].filter(x=>B(x)>=et&&B(x)<=ut).map(x=>`<line x1="${j}" y1="${D(x).toFixed(1)}" x2="${Z-F}" y2="${D(x).toFixed(1)}" stroke="var(--line)" stroke-opacity=".4"/>`+m(j-6,D(x)+3,S(x),{anchor:"end"})).join(""),R=[1,10,100,1e3,1e4].filter(x=>B(x)>=lt&&B(x)<=at).map(x=>m(_t(x),q-k+14,x,{anchor:"middle"})).join(""),I=P+(q-k-P)/2;return h(Z,q,`${A}${R}
- <line x1="${W.toFixed(1)}" y1="${P}" x2="${W.toFixed(1)}" y2="${q-k}" stroke="var(--muted)" stroke-dasharray="3 3" stroke-opacity=".5"/>
- <line x1="${j}" y1="${Y.toFixed(1)}" x2="${Z-F}" y2="${Y.toFixed(1)}" stroke="var(--muted)" stroke-dasharray="3 3" stroke-opacity=".5"/>
- ${y(j+6,P+12,e("ch.quad.q1"),e("ch.quad.q1s"))}${y(Z-F-130,P+12,e("ch.quad.q2"),e("ch.quad.q2s"))}
- ${y(j+6,q-k-18,e("ch.quad.q3"),e("ch.quad.q3s"))}${y(Z-F-130,q-k-18,e("ch.quad.q4"),e("ch.quad.q4s"))}
- ${g}${$}
- ${m(j+(Z-F-j)/2,q-6,e("ch.quad.xlab"),{fs:9.5,anchor:"middle"})}
- ${m(14,I,e("ch.quad.ylab"),{fs:9.5,anchor:"middle",tr:`rotate(-90 14 ${I.toFixed(1)})`})}`)}function X(O){const J=O.months||[],Z=O.vals||[],q=O.cov||J.map(()=>1),j=O.per_day||[],F=720,k=250,P=48,B=14,U=52,Q=18,lt=J.length||1,at=Math.max(...j.filter(tt=>tt!=null),1),et=(F-P-B)/lt;let ut="",_t="";J.forEach((tt,W)=>{const Y=j[W],f=q[W]<.5;if(Y==null)return;const g=Y/at*(k-Q-U),$=P+W*et+et*.16,y=k-U-g,S=$+et*.34;ut+=`<rect x="${$.toFixed(1)}" y="${y.toFixed(1)}" width="${(et*.68).toFixed(1)}" height="${g.toFixed(1)}" rx="2" fill="${f?"var(--muted)":"var(--accent)"}" fill-opacity="${f?.32:.8}" stroke="${f?"var(--warning)":"none"}" stroke-dasharray="${f?"3 2":""}"><title>${e("ch.rate.tip",{m:tt,v:Y,n:Z[W],cov:(q[W]*100).toFixed(0)})}</title></rect>`,_t+=m(S,y-4,Y,{anchor:"middle"})+m(S,k-U+13,e("ch.rate.month",{m:tt.slice(5)}),{anchor:"middle"})+m(S,k-U+25,e("ch.rate.n",{n:Z[W]}),{fs:8,op:.65,anchor:"middle"})+(f?m(S,k-U+37,e("ch.rate.days",{d:Math.round(q[W]*30)}),{fs:8,fill:"var(--warning)",anchor:"middle"}):"")});const D=[0,.5,1].map(tt=>m(P-6,k-U-tt*(k-Q-U)+3,Math.round(at*tt),{anchor:"end"})).join(""),V=Q+(k-U-Q)/2;return h(F,k,`<line x1="${P}" y1="${k-U}" x2="${F-B}" y2="${k-U}" stroke="var(--line)"/><line x1="${P}" y1="${Q}" x2="${P}" y2="${k-U}" stroke="var(--line)"/>
- ${ut}${_t}${D}${m(14,V,e("ch.rate.ylab"),{fs:9.5,anchor:"middle",tr:`rotate(-90 14 ${V.toFixed(1)})`})}`)}function nt(O){if(!O||!O.theo)return"";const J=720,Z=300,q=8,j=8,F=30,k=64,P=(O.items||[]).filter(D=>D.loss>0),B=P.length+2,U=(J-q-j)/B,Q=(Z-F-k)/O.theo;let lt=O.theo,at="",et=0;const ut=(D,V,tt,W,Y)=>`<rect x="${(q+D*U+U*.14).toFixed(1)}" y="${V.toFixed(1)}" width="${(U*.72).toFixed(1)}" height="${Math.max(tt,1.2).toFixed(1)}" rx="2" fill="${W}" fill-opacity="${Y}"/>`,_t=(D,V,tt,W,Y)=>m(q+D*U+U*.5,V-6,W,{fs:10,fill:Y||"var(--ink)",anchor:"middle",w:600})+m(q+D*U+U*.5,Z-k+14,tt,{fs:8.5,anchor:"middle"});return at+=ut(0,Z-k-O.theo*Q,O.theo*Q,"var(--accent)",.45)+_t(0,Z-k-O.theo*Q,e("ch.wf.theo"),s(O.theo)),P.forEach(D=>{et++;const V=Z-k-lt*Q,tt=D.loss*Q;lt-=D.loss;const W=E(D.k);at+=ut(et,V,tt,"var(--critical)",.55)+`<line x1="${(q+(et-1)*U+U*.86).toFixed(1)}" y1="${V.toFixed(1)}" x2="${(q+et*U+U*.14).toFixed(1)}" y2="${V.toFixed(1)}" stroke="var(--muted)" stroke-dasharray="2 2" stroke-opacity=".6"/>`+_t(et,V,n(W.length>12?W.slice(0,11)+"…":W),"−"+s(D.loss),"var(--critical)")+_(e("ch.wf.tip",{nm:W,loss:s(D.loss),pct:(D.loss/O.theo*100).toFixed(1),h:s(D.h)}))}),at+=ut(B-1,Z-k-O.act*Q,O.act*Q,"var(--good)",.6)+_t(B-1,Z-k-O.act*Q,e("ch.wf.act"),s(O.act),"var(--good)"),h(J,Z,`<line x1="${q}" y1="${Z-k}" x2="${J-j}" y2="${Z-k}" stroke="var(--line)"/>${m(q,14,"MWh",{fs:9.5})}${at}`)}function L(O,J){const Z=(O||[]).filter(w=>w.MTBF_h&&w.MDT_h);if(Z.length<3)return`<p class="small muted">${e("ch.ram.few")}</p>`;const q=720,j=340,F=56,k=112,P=48,B=16,U=w=>Math.log10(w),Q=Z.map(w=>U(w.MTBF_h)),lt=Z.map(w=>w.MDT_h),at=Math.min(...Q)-.08,et=Math.max(...Q)+.08,ut=0,_t=Math.max(...lt)*1.12,D=w=>F+(U(w)-at)/(et-at)*(q-F-k),V=w=>j-P-(w-ut)/(_t-ut)*(j-B-P),tt=w=>{const st=w.slice().sort((z,rt)=>z-rt);return st[Math.floor(st.length/2)]},W=tt(Z.map(w=>w.MTBF_h)),Y=tt(lt),f=D(W),g=V(Y),$=Math.max(...Z.map(w=>w.停机时长h)),y=w=>u(J?J(w.部件):w.部件),S=Z.map(w=>{const st=4+Math.sqrt(w.停机时长h/$)*13,z=w.外部,rt=w.MTBF_h<W&&w.MDT_h>=Y,dt=z?"var(--muted)":rt?"var(--critical)":"var(--accent)";return`<circle cx="${D(w.MTBF_h).toFixed(1)}" cy="${V(w.MDT_h).toFixed(1)}" r="${st.toFixed(1)}" fill="${dt}" fill-opacity="${z?.3:.42}" stroke="${dt}" stroke-width="1.2" stroke-dasharray="${z?"3 2":""}">${_(e("ch.ram.tip",{p:y(w),mtbf:w.MTBF_h,mdt:w.MDT_h,h:w.停机时长h,n:w.事件数,u:w.影响台数})+(z?e("ch.ram.tip_ext"):""))}</circle>`+v(D(w.MTBF_h)+st+4,V(w.MDT_h)+3.5,u(y(w)).slice(0,a?14:7),{fs:9.5,fill:z?"var(--muted)":"currentColor"})}).join(""),A=(w,st,z,rt,dt)=>m(w,st,rt,{fs:10,anchor:z,op:.9})+m(w,st+12,dt,{fs:8.5,anchor:z,op:.62}),R=[1e3,2e3,5e3,1e4,2e4].filter(w=>U(w)>=at&&U(w)<=et).map(w=>`<line x1="${D(w).toFixed(1)}" y1="${B}" x2="${D(w).toFixed(1)}" y2="${j-P}" stroke="var(--line)" stroke-opacity=".3"/>`+m(D(w),j-P+14,w>=1e3?w/1e3+"k":w,{anchor:"middle"})).join(""),I=[0,5,10,15,20].filter(w=>w<=_t).map(w=>m(F-6,V(w)+3,w,{anchor:"end"})).join(""),x=B+(j-P-B)/2;return h(q,j,`${R}${I}<line x1="${F}" y1="${j-P}" x2="${q-k}" y2="${j-P}" stroke="var(--line)"/><line x1="${F}" y1="${B}" x2="${F}" y2="${j-P}" stroke="var(--line)"/>
- <line x1="${f.toFixed(1)}" y1="${B}" x2="${f.toFixed(1)}" y2="${j-P}" stroke="var(--muted)" stroke-dasharray="3 3" stroke-opacity=".45"/>
- <line x1="${F}" y1="${g.toFixed(1)}" x2="${q-k}" y2="${g.toFixed(1)}" stroke="var(--muted)" stroke-dasharray="3 3" stroke-opacity=".45"/>
- ${A(F+6,B+12,"start",e("ch.ram.q1"),e("ch.ram.q1s"))}${A(q-k-6,B+12,"end",e("ch.ram.q2"),e("ch.ram.q2s"))}
- ${A(F+6,j-P-16,"start",e("ch.ram.q3"),e("ch.ram.q3s"))}${A(q-k-6,j-P-16,"end",e("ch.ram.q4"),e("ch.ram.q4s"))}
- ${S}${m(F+(q-k-F)/2,j-8,e("ch.ram.xlab"),{fs:9.5,anchor:"middle"})}
- ${m(13,x,e("ch.ram.ylab"),{fs:9.5,anchor:"middle",tr:`rotate(-90 13 ${x.toFixed(1)})`})}
- <circle cx="${q-k+16}" cy="${B+40}" r="5" fill="var(--accent)" fill-opacity=".42" stroke="var(--accent)"/>${m(q-k+26,B+44,e("ch.ram.equip"))}
- <circle cx="${q-k+16}" cy="${B+58}" r="5" fill="var(--muted)" fill-opacity=".3" stroke="var(--muted)" stroke-dasharray="3 2"/>${m(q-k+26,B+62,e("ch.ram.ext"))}
- ${m(q-k+6,B+84,e("ch.ram.area"),{fs:8.5})}${m(q-k+6,B+98,e("ch.ram.median"),{fs:8.5})}`)}function K(O,J){const Z=(O||[]).find(at=>at.部件==="无记录停机"),q=Z?Z.停机时长h:0,j=(O||[]).filter(at=>at.部件==="未归类").reduce((at,et)=>at+et.停机时长h,0),F=J-q-j,k=720,P=54,B=(at,et,ut,_t)=>`<rect x="${at.toFixed(1)}" y="14" width="${Math.max(et,1).toFixed(1)}" height="22" rx="3" fill="${ut}" fill-opacity="${_t}"/>`,U=F/J*k,Q=j/J*k,lt=q/J*k;return h(k,P,`${B(0,U,"var(--accent)",.55)}${B(U,Q,"var(--warning)",.5)}${B(U+Q,lt,"var(--critical)",.5)}
- ${m(4,10,e("ch.attrib.ok",{h:Math.round(F),p:(F/J*100).toFixed(0)}))}
- ${m(U+Q+lt-2,10,e("ch.attrib.none",{h:Math.round(q),p:(q/J*100).toFixed(0)}),{fill:"var(--critical)",anchor:"end"})}
- ${m(U+Q/2,50,e("ch.attrib.uncls",{h:Math.round(j)}),{fill:"var(--warning)",anchor:"middle"})}`)}function T(O,J,Z){const q=(O||[]).filter(y=>y&&y.v>0);if(!q.length)return`<p class="small muted">${e("ch.pareto.none")}</p>`;const j=520,F=236,k=46,P=40,B=40,U=14,Q=q.length,lt=q.reduce((y,S)=>y+S.v,0),at=Math.max(...q.map(y=>y.v)),et=(j-k-P)/Q,ut=y=>{y=u(y);const S=String(y).match(/^([0-9]+)/);return S?S[1]:String(y).slice(0,4)};let _t=0,D="",V=[],tt="",W=null;q.forEach((y,S)=>{const A=y.v/at*(F-U-B),R=k+S*et+et*.14,I=F-B-A;D+=`<rect x="${R.toFixed(1)}" y="${I.toFixed(1)}" width="${(et*.72).toFixed(1)}" height="${A.toFixed(1)}" rx="2" fill="var(--accent)" fill-opacity="${S<3?.85:.45}">${_(`${u(y.k)}: ${s(y.v)}${J}`)}</rect>`,_t+=y.v;const x=_t/lt;W===null&&x>=.8&&(W=S+1);const w=k+S*et+et/2,st=U+(1-x)*(F-U-B);V.push(`${w.toFixed(1)},${st.toFixed(1)}`),tt+=`<circle cx="${w.toFixed(1)}" cy="${st.toFixed(1)}" r="2.4" fill="var(--warning)">${_(e("ch.pareto.cumtip",{k:u(y.k),p:(x*100).toFixed(0)}))}</circle>`});const Y=U+.2*(F-U-B),f=q.map((y,S)=>v(k+S*et+et/2,F-B+13,ut(y.k),{anchor:"middle"})).join(""),g=[0,.5,1].map(y=>m(k-5,F-B-y*(F-U-B)+3,s(Math.round(at*y)),{anchor:"end"})).join("")+[0,.5,1].map(y=>m(j-P+5,U+(1-y)*(F-U-B)+3,Math.round(y*100)+"%",{fill:"var(--warning)"})).join(""),$=q.slice(0,3).map(y=>`<b>${r(ut(y.k))?`<span class="verbatim">${n(u(ut(y.k)))}</span>`:n(ut(y.k))}</b> ${l(u(y.k).replace(/^[0-9]+ */,"").slice(0,18))}`).join(" · ");return h(j,F,`<line x1="${k}" y1="${F-B}" x2="${j-P}" y2="${F-B}" stroke="var(--line)"/><line x1="${k}" y1="${U}" x2="${k}" y2="${F-B}" stroke="var(--line)"/>${D}
- <line x1="${k}" y1="${Y.toFixed(1)}" x2="${j-P}" y2="${Y.toFixed(1)}" stroke="var(--warning)" stroke-dasharray="4 3" stroke-opacity=".7"/>
- ${m(j-P-3,Y-4,e("ch.pareto.cum80"),{fill:"var(--warning)",anchor:"end"})}
- <polyline points="${V.join(" ")}" fill="none" stroke="var(--warning)" stroke-width="1.5"/>${tt}${f}${g}
- ${m(k+(j-P-k)/2,F-3,e("ch.pareto.xlab"),{fs:8.5,anchor:"middle"})}`)+`<p class="small muted" style="margin-top:5px;line-height:1.6">${W?`<b>${e("ch.pareto.key",{k:W})}</b> (${e("ch.pareto.total",{n:Q,tot:s(Math.round(lt)),unit:J})})`:e("ch.pareto.total",{n:Q,tot:s(Math.round(lt)),unit:J})}<br>${e("ch.pareto.top3")}${$}${Z?"<br>"+Z:""}</p>`}function N(O){const J=at=>at.indexOf("限电")>=0||at.indexOf("调度")>=0?0:at==="停机"?1:2,Z=[e("ch.blame.n1"),e("ch.blame.n2"),e("ch.blame.n3")],q=[e("ch.blame.d1"),e("ch.blame.d2"),e("ch.blame.d3")],j=["var(--accent)","var(--critical)","var(--muted)"],F=[0,0,0];(O.items||[]).forEach(at=>{F[J(at.k)]+=at.loss});const k=F.reduce((at,et)=>at+et,0)||1,P=500,B=44;let U=0,Q="";F.forEach((at,et)=>{const ut=at/k*P;Q+=`<rect x="${U.toFixed(1)}" y="12" width="${Math.max(ut,1).toFixed(1)}" height="26" rx="3" fill="${j[et]}" fill-opacity=".55"><title>${Z[et]}: ${s(Math.round(at))} MWh</title></rect>`+(ut>46?m(U+ut/2,29,(at/k*100).toFixed(0)+"%",{fs:10.5,fill:"currentColor",anchor:"middle",w:600}):""),U+=ut});const lt=F.map((at,et)=>`<div style="display:flex;align-items:baseline;gap:7px;margin-top:5px"><i style="flex:none;width:9px;height:9px;border-radius:2px;background:${j[et]};opacity:.55"></i><span style="font-weight:600">${Z[et]}</span><span class="num">${s(Math.round(at))} MWh</span><span class="small muted">${q[et]}</span></div>`).join("");return h(P,B,`${m(0,8,e("ch.blame.title",{tot:s(Math.round(k))}))}${Q}`)+lt}function pt(O){const J=O.months||O.x||[],Z=J.length;if(!Z)return"";const q=620,j=250,F=52,k=34,P=["var(--accent)","#D48A1E","#2E8B6A","#7C5295"],B=[];if((O.series||[]).forEach(Y=>Y.vals.forEach(f=>{f!=null&&f===f&&B.push(f)})),(O.thresholds||[]).forEach(Y=>{Y&&Y.v!=null&&B.push(Y.v)}),!B.length)return"";let U=O.zero===!1?Math.min(...B):Math.min(0,...B),Q=Math.max(...B);U===Q&&(U-=1,Q+=1);const lt=(Q-U)*.08;Q+=lt,O.zero===!1&&(U-=lt);const at=Y=>F+Y/Math.max(Z-1,1)*(q-F-12),et=Y=>j-k-(Y-U)/(Q-U)*(j-k-14),ut=(Y,f)=>{let g=[],$=[];return Y.forEach((y,S)=>{y==null||y!==y?($.length&&g.push($),$=[]):$.push(`${at(S).toFixed(1)},${et(y).toFixed(1)}`)}),$.length&&g.push($),g.map(y=>`<polyline points="${y.join(" ")}" fill="none" stroke="${f}" stroke-width="1.8"/>`).join("")};let _t=(O.series||[]).map((Y,f)=>ut(Y.vals,P[f%4])).join("");const D=Math.max(1,Math.ceil(Z/8));let V="";for(let Y=0;Y<Z;Y+=D)V+=m(at(Y),j-10,String(J[Y]).includes("-")?String(J[Y]).slice(2,7):String(J[Y]),{fs:10,anchor:"middle"});let tt="";for(let Y=0;Y<5;Y++){const f=U+(Q-U)*Y/4;tt+=m(F-6,et(f)+3,f.toFixed(Math.abs(Q)<10?1:0),{fs:10,anchor:"end"})+`<line x1="${F}" x2="${q-12}" y1="${et(f).toFixed(1)}" y2="${et(f).toFixed(1)}" stroke="var(--line)"/>`}(O.thresholds||[]).forEach(Y=>{!Y||Y.v==null||(_t+=`<line x1="${F}" x2="${q-12}" y1="${et(Y.v).toFixed(1)}" y2="${et(Y.v).toFixed(1)}" stroke="var(--muted)" stroke-dasharray="5 4"/>`+(Y.label?v(F+6,et(Y.v)-4,Y.label,{fs:10}):""))}),O.xlab&&(_t+=v((F+q)/2,j-1,O.xlab,{fs:10,anchor:"middle"}));const W='<div class="legend" style="margin-top:6px;flex-wrap:wrap">'+(O.series||[]).map((Y,f)=>`<span><i style="background:${P[f%4]}"></i>${r(Y.name)?`<span class="verbatim">${n(u(Y.name))}</span>`:n(Y.name)}</span>`).join("")+"</div>";return h(q,j,`${tt}${_t}${V}`)+W}function ot(O,J){const k=(P,B,U)=>{const Q=Object.entries(B.分组||{}).map(([W,Y])=>({v:parseFloat(W),n:Y,raw:W}));if(!Q.length)return"";const lt=Math.min(...Q.map(W=>W.v)),at=Math.max(...Q.map(W=>W.v)),et=(at-lt)*.22||1,ut=lt-et,_t=at+et,D=W=>54+(W-ut)/(_t-ut)*412,V=Math.max(...Q.map(W=>W.n)),tt=B.中位;return m(48,P+3,U,{fs:9.5,anchor:"end"})+`<line x1="54" y1="${P}" x2="466" y2="${P}" stroke="var(--line)"/><line x1="${D(tt).toFixed(1)}" y1="${P-24}" x2="${D(tt).toFixed(1)}" y2="${P+18}" stroke="var(--muted)" stroke-dasharray="3 3" stroke-opacity=".55"/>`+m(D(tt),P+28,e("ch.cap.median",{v:tt}),{fs:8.5,anchor:"middle"})+Q.map(W=>{const Y=5+Math.sqrt(W.n/V)*9;return`<circle cx="${D(W.v).toFixed(1)}" cy="${P}" r="${Y.toFixed(1)}" fill="var(--accent)" fill-opacity=".42" stroke="var(--accent)"/>`+m(D(W.v),P-Y-5,n(W.raw),{anchor:"middle",fill:"currentColor"})+m(D(W.v),P+3.5,W.n,{anchor:"middle",fill:"var(--panel)",w:600})}).join("")};return h(500,158,`${k(44,O||{},e("ch.cap.p"))}${k(120,J||{},e("ch.cap.w"))}${m(466,12,e("ch.cap.legend"),{fs:8.5,anchor:"end"})}`)}function ft(O,J){const Z=O.离群||[],q=O.全场同档差中位||0,j=500,F=34+Z.length*26,k=52,P=58,B=Math.max(q,...Z.map(lt=>lt.平均偏))*1.18||1,U=lt=>k+lt/B*(j-k-P),Q=Z.map((lt,at)=>{const et=30+at*26;return m(k-6,et+10,n(J(lt.t)),{fs:9.5,anchor:"end",fill:"currentColor"})+`<rect x="${k}" y="${et+1}" width="${(U(lt.平均偏)-k).toFixed(1)}" height="13" rx="2" fill="var(--warning)" fill-opacity=".62"/>`+m(U(lt.平均偏)+5,et+11,lt.平均偏+"°",{fill:"var(--warning)"})}).join("");return h(j,F,`<line x1="${U(q).toFixed(1)}" y1="18" x2="${U(q).toFixed(1)}" y2="${F-4}" stroke="var(--good)" stroke-dasharray="3 3"/>${m(U(q),12,e("ch.beta.median",{v:q}),{fs:8.5,fill:"var(--good)"})}<line x1="${k}" y1="18" x2="${k}" y2="${F-4}" stroke="var(--line)"/>${Q}`)}function ht(O){const J=Object.entries(O||{}),Z=500,q=26+J.length*30,j=96,F=76,k=3.7,P=Math.max(k*1.35,...J.map(([,Q])=>Q.极差/Q.σ)),B=Q=>j+Q/P*(Z-j-F),U=J.map(([Q,lt],at)=>{const et=22+at*30,ut=lt.极差/lt.σ,_t=ut>k;return v(j-6,et+11,Q,{fs:9.5,anchor:"end",fill:"currentColor"})+`<rect x="${j}" y="${et+2}" width="${(B(ut)-j).toFixed(1)}" height="12" rx="2" fill="${_t?"var(--warning)":"var(--accent)"}" fill-opacity=".55"/>`+m(B(ut)+5,et+11,e("ch.ruler.row",{r:ut.toFixed(1),s:lt.σ}))}).join("");return h(Z,q,`<line x1="${B(k).toFixed(1)}" y1="14" x2="${B(k).toFixed(1)}" y2="${q-4}" stroke="var(--good)" stroke-dasharray="3 3"/>${m(B(k),10,e("ch.ruler.norm"),{fs:8.5,fill:"var(--good)",anchor:"middle"})}${U}`)}function jt(O){const J=O.kind;if(J==="vib")return`<p class="small">${r(O.text||O.comp)?`<span class="verbatim">${n(u(O.text||O.comp))}</span>`:n(O.text||O.comp||"")}</p>`;if(J==="vibbar"){const $=O.rows||[];if(!$.length)return"";const y=R=>{const I=Math.abs(R);return I>=100?R.toFixed(0):I>=10?R.toFixed(1):I>=1?R.toFixed(2):I>=.01?R.toFixed(3):Number(R).toExponential(1)},S={};$.forEach(R=>{(S[R.指标]=S[R.指标]||[]).push(R)});let A=`<p class="small muted">${e("fig.vibbar_note")}</p>`;for(const[R,I]of Object.entries(S))A+=`<div class="tblwrap" style="margin-top:8px"><b class="small muted">${l(R)}</b><table style="margin-top:2px"><tr><th>${e("fig.point")}</th><th class="r">${e("fig.x_median")}</th><th class="r">${e("fig.this_unit")}</th><th class="r">${e("fig.fleet_median")}</th><th class="r">z</th><th class="r">${e("fig.trend")}</th></tr>`+I.map(x=>{const w=Math.abs(x.z)>=3?"var(--critical)":Math.abs(x.z)>=2?"var(--warning)":"var(--good)";return`<tr><td class="small">${l(x.测点)}</td><td class="r" style="color:${w};font-weight:600">${x.倍中位!=null?x.倍中位+"×":"—"}</td><td class="r small">${y(x.本台)}</td><td class="r small muted">${y(x.全场中位)}</td><td class="r small" style="color:${Math.abs(x.z)>=3?"var(--critical)":"var(--muted)"}">${x.z}</td><td class="r small" style="color:${x.六窗比>1.15?"var(--warning)":"var(--muted)"}">${x.六窗比!=null?x.六窗比+"×":"—"}</td></tr>`}).join("")+"</table></div>";return A}const Z=O.months||O.x||[],q=Z.length;if(!q)return"";const j=620,F=250,k=52,P=34,B=14,U=[];if(J==="band"?[O.self,O.med,O.q1,O.q3].forEach($=>($||[]).forEach(y=>{y!=null&&y===y&&U.push(y)})):J==="bars"?(U.push(0),(O.vals||[]).forEach($=>{$!=null&&$===$&&U.push($)})):J==="xy"?[O.self,O.med].forEach($=>($||[]).forEach(y=>{y!=null&&y===y&&U.push(y)})):(O.series||[]).forEach($=>($.vals||[]).forEach(y=>{y!=null&&y===y&&U.push(y)})),(O.thresholds||[]).forEach($=>{$&&$.v!=null&&U.push($.v)}),!U.length)return"";let Q=Math.min(...U),lt=Math.max(...U);Q===lt&&(Q-=1,lt+=1);const at=(lt-Q)*.08;Q-=at,lt+=at;const et=$=>k+$/Math.max(q-1,1)*(j-k-12),ut=$=>F-P-($-Q)/(lt-Q)*(F-P-B),_t=($,y,S)=>{let A=[],R=[];return($||[]).forEach((I,x)=>{I==null||I!==I?(R.length&&A.push(R),R=[]):R.push(`${et(x).toFixed(1)},${ut(I).toFixed(1)}`)}),R.length&&A.push(R),A.map(I=>`<polyline points="${I.join(" ")}" fill="none" stroke="${y}" stroke-width="${S||1.8}"/>`).join("")};let D="";if(J==="band"&&O.q1&&O.q3){const $=[],y=[];O.q3.forEach((S,A)=>{S!=null&&$.push(`${et(A).toFixed(1)},${ut(S).toFixed(1)}`)});for(let S=O.q1.length-1;S>=0;S--)O.q1[S]!=null&&y.push(`${et(S).toFixed(1)},${ut(O.q1[S]).toFixed(1)}`);$.length&&y.length&&(D+=`<polygon points="${$.join(" ")} ${y.join(" ")}" fill="var(--unknown)" fill-opacity=".18"/>`)}if(J==="bars"){const $=Math.max(3,(j-k-20)/q*.6),y=ut(Math.max(Q,0));D+=(O.vals||[]).map((S,A)=>S==null||S!==S?"":`<rect x="${(et(A)-$/2).toFixed(1)}" y="${ut(S).toFixed(1)}" width="${$.toFixed(1)}" height="${Math.max(y-ut(S),.8).toFixed(1)}" rx="2" fill="var(--accent)" fill-opacity=".75"/>`).join("")}O.med&&(D+=_t(O.med,"var(--muted)",1.7)),O.self&&(D+=_t(O.self,"var(--critical)",2.1)+(O.self||[]).map(($,y)=>$==null||$!==$?"":`<circle cx="${et(y).toFixed(1)}" cy="${ut($).toFixed(1)}" r="2.4" fill="var(--critical)"/>`).join(""));const V=["var(--accent)","#D48A1E","#2E8B6A","#7C5295"];(O.series||[]).forEach(($,y)=>{D+=_t($.vals,V[y%4])}),(O.thresholds||[]).forEach($=>{$==null||$.v==null||(D+=`<line x1="${k}" x2="${j-12}" y1="${ut($.v).toFixed(1)}" y2="${ut($.v).toFixed(1)}" stroke="var(--muted)" stroke-dasharray="5 4"/>`+($.label?v(k+6,ut($.v)-4,$.label,{fs:10}):""))});const tt=Math.max(1,Math.ceil(q/8));let W="";for(let $=0;$<q;$+=tt)W+=m(et($),F-10,String(Z[$]).includes("-")?String(Z[$]).slice(2,7):String(Z[$]),{fs:10,anchor:"middle"});let Y="";for(let $=0;$<5;$++){const y=Q+(lt-Q)*$/4;Y+=m(k-6,ut(y)+3,y.toFixed(Math.abs(lt)<10?1:0),{fs:10,anchor:"end"})+`<line x1="${k}" x2="${j-12}" y1="${ut(y).toFixed(1)}" y2="${ut(y).toFixed(1)}" stroke="var(--line)"/>`}const f=J==="band"?m(j-190,12,e("fig.this_unit"),{fill:"var(--critical)",fs:10})+m(j-110,12,e("fig.fleet_median"),{fs:10})+m(j-40,12,e("fig.quartile"),{fs:10}):(O.series||[]).length&&(O.series||[]).length<=2?O.series.map(($,y)=>m(j-12-(O.series.length-1-y)*118,12,"— "+n(u($.name)),{fill:V[y%4],fs:10,anchor:"end"})).join(""):"",g=(O.series||[]).length>2?'<div class="legend" style="margin-top:6px;flex-wrap:wrap">'+O.series.map(($,y)=>`<span><i style="background:${V[y%4]}"></i>${r($.name)?`<span class="verbatim">${n(u($.name))}</span>`:n($.name)}</span>`).join("")+"</div>":"";return h(j,F,`${Y}${D}${W}${f}`)+g}return{quadChart:H,rateChart:X,waterfall:nt,ramChart:L,attribBar:K,paretoChart:T,blameBar:N,lossName:E,multiline:pt,capAxis:ot,betaBar:ft,rulerBar:ht,fig:jt}};const xu=[[/DE[/]NDE/g,"驱动端与非驱动端"],[/GenDE/g,"发电机驱动端"],[/GenNDE/g,"发电机非驱动端"],[/HS_gen2?/g,"高速轴发电机侧"],[/HS_rot/g,"高速轴转子侧"],[/IMS/g,"中间轴"],[/(?<![A-Za-z])NDE(?![A-Za-z])/g,"非驱动端"],[/(?<![A-Za-z])DE(?![A-Za-z])/g,"驱动端"],[/内圈BPFI/g,"内圈特征频率"],[/外圈BPFO/g,"外圈特征频率"],[/BPFI/g,"内圈特征频率"],[/BPFO/g,"外圈特征频率"],[/FTF/g,"保持架特征频率"],[/BSF/g,"滚动体特征频率"],[/TD_1R/g,"时域单转指标"],[/Peak/g,"冲击峰值"],[/Rms/gi,"有效值"],[/([0-9]+(?:[.][0-9]+)?)[ ]*阶/g,"$1 倍轴频"],[/[(]o([0-9]+(?:[.][0-9]+)?)[)]/g,"(轴频 $1 倍)"],[/×p90/g,"×全场90分位"],[/×fleet/g,"×全场中位"],[/六窗/g,"六个观测窗"],[/([0-9])窗/g,"$1 个观测窗"],[/宽带/g,"宽频带总量"],[/台阶/g,"阶跃上升"],[/缓升/g,"缓慢上升"],[/回落/g,"回落至"],[/全净|六窗全净/g,"各窗均干净"],[/清洁/g,"干净"],[/回归/g,"回到常态"],[/同族/g,"同批次共性 (见该批主台)"],[/族第([^ ]+)台/g,"同批次第$1台"],[/族/g,"批次共性组"],[/gain异常/g,"测点增益异常"],[/gain/g,"测点增益"],[/[(]销[)]/g,"(已销案)"],[/梯度/g,"沿链梯度最高点"],[/周期主导/g,"周期成分主导"],[/急性事件/g,"突发事件"],[/慢性/g,"长期"],[/主异常在/g,"主要异常位于"]],gt=t=>String(t??"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""),Jn=t=>String(t??""),wt=t=>gt(t),wu={危险:"bad",报警:"warn",不可判:"unk",良好:"ok",优秀:"ex"},ku={critical:"bad",alarm:"warn",undeterminable:"unk",indeterminate:"unk","not evaluable":"unk",good:"ok",excellent:"ex",warn:"warn",bad:"bad",ok:"ok",unk:"unk",ex:"ex"},Xn=t=>wu[String(t)]||ku[String(t)],Za={bad:"var(--critical)",warn:"var(--warning)",unk:"var(--unknown)",ok:"var(--good)",ex:"var(--excellent)"},Qa={优秀:"var(--excellent)",良好:"var(--good)",报警:"var(--warning)",危险:"var(--critical)",不可判:"var(--unknown)",监测不可用:"var(--unknown)",无监测:"var(--unknown)"},to={bad:"var(--critical)",warn:"var(--warning)",note:"var(--muted)",ok:"var(--good)",unlisted:"var(--muted)",stale:"var(--muted)",meta:"var(--muted)"},Mu={定论:"confirmed","准定论·预警":"near","候选·新发":"candidate_new",候选:"candidate","候选·记基线":"candidate_baseline",参考:"reference",INSUFFICIENT:"insufficient",正常:"normal",撤回:"withdrawn"},Zn=t=>"st."+(t==="ex"?"excellent":t),Fe=t=>{const e=Xn(t);return e?i(Zn(e)):wt(t)},mn=t=>{const e=Mu[String(t)],s="tier."+e;return e?i(s):String(t)==="—"?"—":wt(t)},eo=(t,e,s)=>`<span class="duo" style="--c:${s}"><span class="st">${t}</span><span class="ev">${e}</span></span>`,Be=t=>{let e=String(t??"");for(const[s,n]of xu)e=e.replace(s,n);return e},_n=t=>Be(t),Su=(t,e)=>{if(!t||t.filter(m=>m!=null).length<3)return"";const s=t.filter(m=>m!=null),n=Math.min(...s),l=Math.max(...s),a=l-n||1,c=84,r=22,u=t.length;let _="",h=null;return t.forEach((m,v)=>{if(m==null)return;const b=v/(u-1)*c,E=r-2-(m-n)/a*(r-4);_+=(_?"L":"M")+b.toFixed(1)+" "+E.toFixed(1),h=[b,E]}),`<svg width="${c}" height="${r}" style="vertical-align:middle;margin-left:6px"><path d="${_}" fill="none" stroke="${e}" stroke-width="1.2" opacity=".75"/><circle cx="${h[0]}" cy="${h[1]}" r="2.4" fill="${e}"/></svg>`},Tu={齿轮箱:"#8A6D3B",发电机:"#4A6FA5",主轴承:"#2E7D6B",变桨叶片:"#4A6FA5",偏航:"#2E7D6B",测风:"#7C5295",其他:"#5A6470"},Cu=(t,e,s)=>{if(!e)return`<span class="small muted">${i("fus.no_alarm")}</span>`;const n=118,l=Math.max(6,Math.round(e/Math.max(s||e,1)*n));return`<div title="${gt(i("fus.fam_tip",{n:e,m:s||e}))}" style="display:flex;height:9px;border-radius:3px;overflow:hidden;width:${l}px">${(t||[]).map(a=>`<i title="${gt(me(a.k))} ${a.n}" style="width:${(a.n/e*100).toFixed(1)}%;background:${Tu[a.k]||"#5A6470"}"></i>`).join("")}</div><div class="small muted" style="margin-top:3px">${(t||[]).slice(0,2).map(a=>me(a.k)+" "+a.n).join(" · ")}</div>`};function Eu(t){const e=(t.列窗||{}).months||[];let s=`<div class="panel mb" style="border-left:3px solid var(--warning)"><b>${i("fus.rules_head")}</b><p class="small" style="margin-top:4px">${i("fus.rule1")}<br>${i("fus.rule2")}</p></div>`;s+=`<div class="panel mb"><h3>${i("fus.matrix_head")}</h3><p class="small muted">${i("fus.matrix_note1")}</p><p class="small">${i("fus.matrix_note2",{n:e.length,m0:e[0]||"?"})}</p>
- <div class="small muted" style="margin:6px 0 12px;line-height:2"><div><b>${i("fus.legend_state")}</b> ${["bad","warn","ok","ex","unk"].map(v=>`<span style="display:inline-flex;align-items:center;gap:4px;margin-right:12px"><i style="width:10px;height:10px;border-radius:2px;background:${Za[v]}"></i>${i(Zn(v))}</span>`).join("")}</div>
- <div><b>${i("fus.legend_tier")}</b> ${["定论","准定论·预警","候选·新发","候选","候选·记基线","参考","INSUFFICIENT"].map(v=>`<span style="display:inline-flex;align-items:center;gap:4px;margin-right:12px"><i style="width:10px;height:10px;border-radius:2px;background:${(t.色标||{})[v]||"#ccc"}"></i>${mn(v)}</span>`).join("")}</div><div>${i("fus.legend_note")}</div></div>`;const n=v=>{const b=String(v||""),E=b.match(/20[0-9][0-9]-[0-9][0-9](?:~20[0-9][0-9]-[0-9][0-9])?|至[ ]*20[0-9][0-9]-[0-9][0-9]|20[0-9][0-9]~20[0-9][0-9]/);return E?E[0].startsWith("至")?i("win.through",{date:E[0].replace(/^至\s*/,"")}):E[0]:b.slice(0,14)},l=(v,b,E)=>`<th title="${gt(b||"")}${E||""}"><div>${v}</div><div class="small muted" style="font-weight:400">${wt(n(b))}${E||""}</div></th>`,a=t.列窗||{};s+=`<div class="tblwrap"><table class="fmx" style="table-layout:fixed;width:100%;min-width:900px"><colgroup><col style="width:7%">${'<col style="width:15.5%">'.repeat(6)}</colgroup><tr><th>${i("ui.unit")}</th>${l(i("fus.col.vib"),a.振动,i("fus.col.fixed"))}${l(i("fus.col.temp"),a.温度)}${l(i("fus.col.lub"),a.润滑,i("fus.col.display_only"))}${l(i("fus.col.oil"),a.油液)}${l(i("fus.col.alarm"),a.报警)}${l(i("fus.col.wo"),a.工单)}</tr>`;const c=t.矩阵||[],r=Math.max(1,...c.map(v=>(v.报警||{}).n||0)),u=Math.max(1,...c.map(v=>(v.工单||{}).n||0)),_=t.色标||{},h=v=>{if(v.ostate&&v.ostate!=="不可判")return Fe(v.ostate);const b=String(v.note||"");return/数据不足|不可判|nsufficient/.test(b)?i("fus.short.nodata"):/未评估|ot assessed/.test(b)?i("fus.short.uneval"):/无样|未取样|o sample/.test(b)?i("fus.short.nosample"):/样龄|stale/.test(b)?i("fus.short.stale"):{ok:i("fus.short.normal"),unlisted:i("fus.short.unlisted"),stale:i("fus.short.stale")}[v.level]||"—"},m=v=>{const b=v||{},E=Qa[b.ostate]||_[b.wlevel]||to[b.level]||"var(--muted)",H=Be(b.note),X=["bad","warn","note"].includes(b.level),nt=gt(H)+i("fus.tip_state",{s:Fe(b.ostate||"?")});if(!X)return`<td class="small" title="${nt}" style="border-left:3px solid ${E};color:var(--muted)">${h(b)}</td>`;const L=H.split(/[::]/),K=(L.length>1?L.slice(1).join(":"):H).trim(),T=/^[ ]*(评估报告|两口径差异|⚠|ssessment)/.test(K)||K.length>16?"":K,N=T?wt(T):b.ostate&&b.ostate!=="不可判"?"":h(b),pt=b.wlevel&&b.wlevel!=="—"&&b.wlevel!=="正常"&&b.ostate?eo(Fe(b.ostate),mn(b.wlevel),E):"";return`<td class="small" title="${nt}${i("fus.tip_tier",{e:mn(b.wlevel||"?")})}" style="border-left:3px solid ${E};overflow:hidden"><div><div style="color:${E};font-weight:${["bad","warn"].includes(b.level)?600:400}">${N}</div>${pt}</div>${Su(b.hist,b.level==="bad"?"var(--critical)":b.level==="warn"?"var(--warning)":"var(--muted)")}</td>`};return c.forEach(v=>{const b=v.报警||{n:0,fam:[]},E=v.工单||{n:0,acts:[]},H=b.rank&&b.rank<=5?"var(--warning)":"var(--line)",X=b.burst,nt=gt((b.items||[]).map(L=>`${L.code} ${Be(L.text)} — ${L.n} (${L.first}~${L.last})`).join(`
- `))+(X?`
- `+gt(i("fus.burst_tip",{c:X.code,p:(X.share*100).toFixed(0),m:X.med_s})):"");s+=`<tr><td><a href="/turbine/${v.turbine}"><b>${qt(v.turbine)}</b></a></td>${m(v.振动)}${m(v.温度)}${m(v.润滑)}${m(v.油液)}
- <td title="${nt}" style="border-left:3px solid ${X?"var(--unknown)":H}"><b class="small num" style="color:${b.rank&&b.rank<=10?"var(--ink)":"var(--muted)"}">${i("fus.alarm_n",{n:b.n})}</b>${b.rank?`<span class="small muted">${i("fus.alarm_rank",{r:b.rank,t:b.tot})}</span>`:""}${X?`<div class="small" style="color:var(--unknown)">${i("fus.burst",{p:(X.share*100).toFixed(0),c:X.code})}</div>`:""}${b.rank&&b.rank<=10||X?Cu(b.fam,b.n,r):""}</td>
- <td title="${gt((E.items||[]).map(L=>`${L.date} ${_n(L.name)} → ${_n(L.act)}${L.part?" "+_n(L.part):""}`).join(`
- `)||i("fus.wo_none"))}" style="min-width:110px">${E.n?`<b class="small">${i("fus.wo_n",{n:E.n})}</b>${E.last?`<span class="small muted"> · ${gt(E.last)}</span>`:""}<div style="height:7px;border-radius:3px;background:var(--muted);opacity:.5;margin-top:4px;width:${Math.max(6,Math.round(E.n/u*90))}px"></div><div class="small muted" style="margin-top:3px">${(E.acts||[]).slice(0,2).map(L=>wt(L.k)+"×"+L.n).join(" · ")}</div>`:'<span class="small muted">—</span>'}</td></tr>`}),s+`</table></div><p class="small muted" style="margin-top:8px">${i("fus.matrix_foot")}</p></div>`}const Il=(t,e,s)=>{const n=Math.max(t,e,7),l=120,a=c=>Math.max(2,c/n*(l-4));return`<svg class="dt" viewBox="0 0 ${l} 26" style="width:${l}px;height:26px"><rect x="2" y="2" width="${a(t).toFixed(1)}" height="9" rx="2" fill="var(--muted)" fill-opacity=".55"/><rect x="2" y="15" width="${a(e).toFixed(1)}" height="9" rx="2" fill="${s}" fill-opacity=".9"/></svg>`},An=(t,e)=>{const s=String(t||"").replace(/main bearing[, ]*[(]?(?:rear|back)[)]?/ig,"主轴承后").replace(/main bearing[, ]*[(]?(?:front|forward)[)]?/ig,"主轴承前").replace(/main bearing/ig,"主轴承").replace(/generator[, ]*(?:NDE|non-drive[- ]end)/ig,"发电机NDE").replace(/generator[, ]*(?:DE|drive[- ]end)/ig,"发电机DE").replace(/generator/ig,"发电机").replace(/gearbox/ig,"齿轮箱").replace(/planetary/ig,"行星").replace(/intermediate[- ](?:speed[- ])?shaft/ig,"中间轴").replace(/high[- ]speed shaft/ig,"高速轴"),n=/齿轮箱/.test(s)&&!/行星|中间轴|中速|高速轴/.test(s);return`<span class="chain" title="${gt(Jn(t))}">${Du.map(([l,a])=>{const c=a.test(s)||n&&["ps","ims","hss"].includes(l);return`<i class="${c?"on":""}" style="${c?`background:${e};border-color:${e}`:""}" title="${i("chain."+l)}"></i>`}).join("")}</span>`};function Fu(t){const e=t.能力&&t.能力.loop&&t.能力.loop["换件闭环 (检出→换件→恢复)"]?t.能力.loop:null;if(!e)return`<div class="panel mb"><p class="small">${i("fus.loop_none")}</p></div>`;const s=e["换件闭环 (检出→换件→恢复)"]||[],n=e["当前在升 (无工单可对)"]||[],l=e["负面对照 (工单后持平)"];return`<div class="panel mb"><h3>${i("fus.loop_head")}</h3><p class="small">${i("fus.loop_note")}</p>
- <h3 style="margin-top:8px">${i("fus.loop_closed",{n:s.length})}</h3><div class="tblwrap"><table><tr><th>${i("ui.unit")}</th><th>${i("fus.col.part")}</th><th>${i("fus.loop_item")}</th><th>${i("fus.loop_date")}</th><th>${i("fus.loop_ba")}</th><th class="r">${i("fus.loop_ratio")}</th><th>${i("fus.loop_verdict")}</th></tr>
- ${s.map(a=>`<tr><td><b>${qt(a.turbine)}</b></td><td>${An(a.component+(a.title||""),"var(--good)")} <span class="small">${_s(a.component)}</span></td><td class="small">${wt(a.title)}</td><td>${gt(a.replace_date)}</td><td>${Il(a.pre,a.post,"var(--good)")}<span class="small muted">${a.pre} → ${a.post}</span></td><td class="r"><b style="color:var(--good)">${a.ratio}×</b></td><td><span class="chip ok">${wt(a.verdict)}</span></td></tr>`).join("")}</table></div>
- <p class="small" style="margin-top:6px">${i("fus.loop_neg",{n:l})}</p>
- <h3 style="margin-top:14px">${i("fus.loop_rising",{n:n.length})}</h3><div class="tblwrap"><table><tr><th>${i("ui.unit")}</th><th>${i("fus.col.part")}</th><th>${i("fus.loop_el")}</th><th class="r">${i("fus.loop_x")}</th><th>${i("fus.loop_state")}</th></tr>
- ${n.map(a=>`<tr><td><b>${qt(a.turbine)}</b></td><td>${An(a.component,"var(--warning)")} <span class="small">${_s(a.component)}</span></td><td>${Il(a.early,a.late,"var(--warning)")}<span class="small muted">${a.early} → ${a.late}</span></td><td class="r"><b style="color:var(--warning)">${a.ratio}×</b></td><td><span class="chip warn">${i("rpt.units.rising",{r:a.ratio})}</span></td></tr>`).join("")}</table></div>
- <p class="small muted" style="margin-top:8px">${i("fus.loop_bound",{b:wt(String(e["★数据边界"]||"").split("**").join(""))})}</p></div>`}const Ou=(t,e,s,n)=>{if(e==null)return`<span class="small">${wt(Jn(n).slice(0,30))}</span>`;const l=6,a=104,c=a/2,r=Math.max(-1,Math.min(1,e/l)),u=Math.abs(r)*(c-8),h=Math.abs(e)>=3?/候选|andidate/.test(s||"")?"var(--warning)":/记基线|aseline/.test(s||"")?"var(--accent)":/不可判|返服|ndeterm/.test(s||"")?"var(--unknown)":"var(--muted)":"var(--muted)",m=Math.abs(e)>l;return`<div title="${gt(n||"")}" style="display:flex;align-items:center;gap:7px"><svg class="dt" viewBox="0 0 ${a} 18" style="width:${a}px;height:18px;flex:none"><line x1="4" y1="9" x2="${a-4}" y2="9" stroke="var(--line)" stroke-opacity=".7"/><line x1="${c}" y1="1" x2="${c}" y2="17" stroke="var(--muted)" stroke-opacity=".6"/><rect x="${e>=0?c:c-u}" y="4" width="${Math.max(u,1.5)}" height="10" rx="2" fill="${h}" fill-opacity=".9"/>${m?`<path d="M${e>0?a-5:5},9 l${e>0?-5:5},-4 v8 z" fill="${h}"/>`:""}</svg><b class="small num" style="color:${h}">${e>0?"+":""}${e}K</b></div><div class="small muted" style="margin-top:1px">${gt(t||"")}</div>`},Au=(t,e)=>{if(!t||!t.length)return`<span class="small" title="${gt(e||"")}">${i("fus.win_none")}</span>`;const s=Date.parse("2026-01-01"),n=Date.parse("2026-09-01"),l=118,a=c=>3+Math.max(0,Math.min(1,(Date.parse(c)-s)/(n-s)))*(l-6);return`<div title="${gt(e||"")}"><svg class="dt" viewBox="0 0 ${l} 18" style="width:${l}px;height:18px"><rect x="3" y="4" width="${l-6}" height="10" rx="2" fill="var(--line)" fill-opacity=".5"/>${t.map(([c,r])=>{const u=a(c),_=a(r);return`<rect x="${u.toFixed(1)}" y="4" width="${Math.max(_-u,2.5).toFixed(1)}" height="10" rx="2" fill="var(--accent)" fill-opacity=".8"/>`}).join("")}</svg><div class="small muted">${i("fus.win_n",{n:t.length})}</div></div>`},ju=(t,e,s)=>`<div title="${gt(s||"")}" style="display:flex;align-items:center;gap:6px"><i style="width:9px;height:9px;border-radius:50%;flex:none;background:${e?"var(--good)":"var(--unknown)"}"></i><span class="small num">${gt(t||i("fus.oil_none"))}</span></div><div class="small muted">${t?i(e?"fus.oil_fresh":"fus.oil_stale"):"—"}</div>`,Ee=(t,e)=>{const s=Xn(t);return s?`<span class="chip ${s} ${e||""}">${i(Zn(s))}</span>`:t?`<span class="chip">${gt(t)}</span>`:""};function qu(t,e){const s=t.表||[],n=t.矩阵||[];let l=s,c=`<div class="panel mb"><h3>${i("fus.units_head",{u:new Set(s.map(r=>r.turbine)).size,n:l.length+"",f:""})}</h3>
- <div style="display:flex;gap:8px;margin:8px 0 12px;flex-wrap:wrap">${["bad","warn","note","ok"].map(r=>`<button class="pill ${e===r?"on":""}" data-ffilter="${r}">${i("fus.lv."+r)}</button>`).join("")}<button class="pill " data-ffilter="unlisted">${i("fus.unlisted_link",{n:n.filter(r=>(r.振动||{}).level==="unlisted").length})}</button></div>
- <div class="panel" style="border-left:3px solid var(--accent);margin-bottom:12px"><b class="small">${i("fus.eval_head")}</b><div class="tblwrap"><table style="margin-top:8px"><tr><th style="width:30%">${i("fus.eval_state")}</th><th style="width:30%">${i("fus.eval_tier")}</th><th>${i("fus.eval_meaning")}</th></tr>
- <tr><td>${Ee("危险")}</td><td><span class="tier confirmed">${i("tier.confirmed.s")}</span></td><td class="small">${i("fus.m.bad")} <span class="muted">(${i("fus.m.bad_e")})</span></td></tr>
- <tr><td>${Ee("报警")}</td><td><span class="tier near">${i("tier.near")}</span> / <span class="tier candidate">${i("tier.candidate_new")}</span></td><td class="small">${i("fus.m.warn")} <span class="muted">(${i("fus.m.warn_e")})</span></td></tr>
- <tr><td>${Ee("良好")}</td><td><span class="tier candidate">${i("tier.candidate")}</span> / <span class="tier candidate">${i("tier.candidate_baseline")}</span></td><td class="small">${i("fus.m.ok")} <span class="muted">(${i("fus.m.ok_e")})</span></td></tr>
- <tr><td>${Ee("优秀")}</td><td><span class="tier reference">${i("tier.reference")}</span> / <span class="tier reference">${i("tier.normal")}</span> / <span class="tier withdrawn">${i("tier.withdrawn")}</span></td><td class="small">${i("fus.m.ex")} <span class="muted">(${i("fus.m.ex_e")})</span></td></tr>
- <tr><td>${Ee("不可判")}</td><td><span class="tier insufficient">${i("tier.insufficient")}</span></td><td class="small">${i("fus.m.unk")} <span class="muted">(${i("fus.m.unk_e")})</span></td></tr></table></div><p class="small muted" style="margin-top:7px">${i("fus.eval_note")}</p></div>
- <div class="tblwrap"><table><tr><th>${i("ui.unit")}</th><th>${i("fus.col.part")}</th><th>${i("fus.col.state_concl")}</th><th>${i("fus.col.claim")} <span class="small muted" style="font-weight:400">${i("fus.col.claim_axis")}</span></th><th>${i("fus.col.signal")}</th><th>${i("fus.col.tempaxis")} <span class="small muted" style="font-weight:400">${i("fus.col.tempaxis_note")}</span></th><th>${i("fus.col.oil")}</th></tr>`;return l.forEach(r=>{const u=to[r.级]||"var(--accent)",_=Qa[r.设备状态]||"var(--muted)";c+=`<tr><td><a href="/turbine/${r.turbine}"><b>${qt(r.turbine)}</b></a></td><td style="min-width:200px">${An(r.部件,u)} <span class="small">${_s(r.部件)}</span></td>
- <td title="${gt(Be(r.振动结论))}">${eo(Fe(r.设备状态||"—"),wt(r.振动结论),_)}</td><td style="min-width:130px">${Au(r.窗区间,r.claim_window)}</td>
- <td class="small" title="${gt(r.振动信号||"")}">${wt(Be(r.振动信号))}</td><td style="min-width:158px">${Ou(r.温度通道,r.温度dev,r.温度判,r.温度轴)}</td><td style="min-width:112px">${ju(r.油末样,r.油新鲜,r.油样轴)}</td></tr>`}),c+"</table></div></div>"}const Du=[["mbf",/主轴承[((]前|主轴承前|主轴承[++]|主轴承(?![((前后])/],["mba",/主轴承[((]后|主轴承后/],["ps",/行星|二级行星/],["ims",/中间轴|中速/],["hss",/高速轴|高速(?!.*发电)/],["gde",/发电机DE|发电机[((]|发电机(?!NDE)/],["gnde",/发电机NDE|NDE/]],ts=t=>Za[Xn(t)]||null,Hl=t=>`<span class="chain">${Object.entries(t).map(([e,s])=>`<i class="${s?"on":""}" style="${s?`background:${s};border-color:${s}`:""}" title="${i("chain."+e)}"></i>`).join("")}</span>`,Pu=t=>{const e=String(t||""),s=/准定论|near[- ](?:conf|establish)/i.test(e)?3:/确诊|onfirmed/.test(e)?4:/定论|ettled|stablished/.test(e)?3:/候选|andidate/.test(e)?2:/参考|eference/.test(e)?1:0,n=s>=4?"var(--critical)":s===3?"var(--warning)":s===2?"var(--accent)":s===1?"var(--muted)":"var(--unknown)";return`<div style="display:flex;align-items:center;gap:7px"><svg class="dt" viewBox="0 0 62 20" style="width:62px;height:20px;flex:none">${[0,1,2,3].map(l=>`<rect x="${2+l*15}" y="${12-l*3}" width="11" height="${6+l*3}" rx="1.5" fill="${l<s?n:"none"}" fill-opacity=".9" stroke="${n}" stroke-opacity="${l<s?1:.4}" ${l>=s?'stroke-dasharray="2 1.5"':""}/>`).join("")}</svg><span class="small" style="color:${n}">${wt(e)}</span></div>`};function Ru(t,e){if(!t.事件)return`<div class="panel mb"><p class="small muted">${i("ui.empty")}</p></div>`;let s=`<div class="panel mb"><p class="small muted"><b>${i("fus.ev_win",{win:Se(e.win)})}</b></p></div>`;for(const[n,l]of Object.entries(t.事件)){const a=l,c=a.报警||{},r=a.工单||{};s+=`<div class="panel mb"><h3>${i("fus.ev_head",{c:me(n),an:c.总条数||0,au:c.台数||0,wn:r.总条数||0,wu:r.台数||0})}</h3>`,c.总条数>0?s+=`<div class="tblwrap"><table><tr><th>${i("fus.ev_code")}</th><th>${i("fus.ev_text")}</th><th class="r">${i("ui.count")}</th><th class="r">${i("fus.ev_units")}</th><th class="r">${i("fus.ev_dur")}</th></tr>${(c.码统计||[]).map(u=>`<tr><td>${gt(u.code)}</td><td class="small">${wt(Be(u.text))}</td><td class="r">${u.条数}</td><td class="r">${u.台数}</td><td class="r">${u.时长h}</td></tr>`).join("")}</table></div>
- <p class="small">${i("fus.ev_top")}${Object.entries(c.top台||{}).map(([u,_])=>`<a href="/turbine/${u}">${qt(u)}</a>×${_}`).join(" · ")}</p>
- <details><summary class="small">${i("fus.ev_recent",{n:(c.近况||[]).length})}</summary><div class="tblwrap"><table><tr><th>${i("ui.unit")}</th><th>${i("fus.ev_time")}</th><th>${i("fus.ev_code")}</th><th>${i("fus.ev_text")}</th><th class="r">${i("fus.ev_min")}</th></tr>${(c.近况||[]).map(u=>`<tr><td>${qt(u.t)}</td><td class="small">${gt(u.on)}</td><td>${gt(u.code)}</td><td class="small">${wt(Be(u.text))}</td><td class="r">${u.dur_min??"—"}</td></tr>`).join("")}</table></div></details>`:s+=`<p class="small">${i("fus.ev_no_alarm")}</p>`,r.总条数>0?s+=`<div class="tblwrap"><table style="margin-top:8px"><tr><th>${i("ui.unit")}</th><th>${i("ui.date")}</th><th>${i("fus.ev_wo_name")}</th><th>${i("fus.ev_wo_act")}</th><th>${i("fus.ev_wo_cause")}</th></tr>${(r.明细||[]).map(u=>`<tr><td>${qt(u.t)}</td><td class="small">${gt(u.date)}</td><td class="small">${wt(u.name)}</td><td class="small">${wt(u.act)}</td><td class="small">${wt(u.cause)}</td></tr>`).join("")}</table></div>`:s+=`<p class="small">${i("fus.ev_no_wo")}</p>`,s+="</div>"}return s}function Lu(t,e){if(!t)return`<div class="panel mb"><p class="small muted">${i("fus.cms_loading")}</p></div>`;if(t.error)return`<div class="panel mb"><p class="small" style="color:var(--critical)">${wt(t.error)}</p></div>`;const s={主轴承前:"mbf",主轴承后:"mba",齿轮箱:"gb",发电机:"gen",发电机DE:"gde",发电机NDE:"gnde","Main bearing, front":"mbf","Main bearing, rear":"mba",Gearbox:"gb",Generator:"gen","Generator DE":"gde","Generator NDE":"gnde"};return`<div class="panel mb"><h3>${i("fus.cms_head",{d:gt(t.date||"")})}</h3>
- ${t.时间范围?`<p class="small" style="margin:2px 0 6px">${i("fus.cms_window",{r:gt(t.时间范围)})}</p>`:""}
- <p class="small">${wt(t.overall||"")} ${i("fus.cms_note")}</p>
- <h3 style="margin-top:10px">${i("fus.cms_action")}</h3><div class="tblwrap"><table><tr><th>${i("ui.unit")}</th><th>${i("fus.loop_state")}</th><th>${i("fus.cms_focus")} <span class="small muted" style="font-weight:400">${i("fus.cms_focus_note")}</span></th><th>${i("fus.cms_evidence")}</th><th>${i("fus.cms_act")}</th></tr>
- ${(t.action||[]).map(n=>{const l={};return String(n[2]).split(/[;;]/).forEach(a=>{const c=a.split(/[::]/);if(c.length>1){const r=s[c[0].trim()]||null;r&&(l[r]=ts(c[1].trim()))}}),`<tr><td><b>${qt(n[0])}</b></td><td>${Ee(n[1])}</td><td title="${gt(n[2])}">${Hl(l)} <span class="small muted">${wt(n[2])}</span></td><td style="min-width:150px">${Pu(n[3])}</td><td>${/P0/.test(n[4])?`<b style="color:var(--critical)">${gt(n[4])}</b>`:gt(n[4])}</td></tr>`}).join("")}</table></div>
- <h3 style="margin-top:14px">${i("fus.cms_grades")}</h3><div class="tblwrap"><table><tr><th>${i("ui.unit")}</th><th>${i("fus.cms_chain")} <span class="small muted" style="font-weight:400">${i("fus.cms_chain_note")}</span></th><th>${i("fus.cms_overall")}</th><th>${i("fus.cms_act")}</th></tr>
- ${(t.grades||[]).map(n=>`<tr><td><b>${qt(n.t)}</b></td><td title="${i("chain.mbf")} ${Fe(n.主轴承前)} · ${i("chain.mba")} ${Fe(n.主轴承后)} · ${i("chain.gb")} ${Fe(n.齿轮箱)} · ${i("chain.gen")} ${Fe(n.发电机)}">${Hl({mbf:ts(n.主轴承前),mba:ts(n.主轴承后),gb:ts(n.齿轮箱),gen:ts(n.发电机)})}</td><td>${Ee(n.综合)}</td><td class="small">${gt(n.行动)}</td></tr>`).join("")}</table></div>
- <div class="small" style="margin-top:12px;padding:10px;border:1px solid var(--line);border-radius:8px"><b>${i("fus.cms_basis")}</b> ${i("fus.cms_basis_note",{a:((t.diff||{}).only_cms||[]).map(qt).join(", ")||i("fus.none_word"),b:((t.diff||{}).only_vibration_package||(t.diff||{}).only_handoff||[]).map(qt).join(", ")||i("fus.none_word")})}</div>
- <p class="small muted" style="margin-top:10px">${i("fus.cms_link")} <a href="http://localhost:8030/index.html" target="_blank" rel="noopener">${i("fus.cms_open")}</a> <a href="/windcms/index.html" target="_blank" rel="noopener">${i("fus.cms_static")}</a></p></div>`}const Iu=["matrix","loop","units","events","cms","portal_cms"];function Hu(t,e){const s=t&&t.fus||{},n=s.kpi||{},l=pt=>typeof pt=="number"?pt:Number(pt)||0,a=t&&t.kpi||{},c=l(a.关注台),r=l(a.报警台),u=l(a.全场??n.全场??n.收录台);l(n.候选观察),l(n.全场??n.收录台);const _=String(t&&t.win||""),h=((s.事件||{}).主轴||{}).工单||{},m=l(h.总条数),v=e||{},b=Array.isArray(v.grades)?v.grades:[],E=pt=>b.filter(ot=>String(ot.综合||"")===pt).length,H=Array.isArray(v.action)?v.action.length:0,X=String(v.窗||""),nt=String(v.时间范围||"").replace(/^\S+\s*/,"").slice(0,60),L=String(v.date||""),K=String(s.证据窗末||v.date||"").slice(0,10),T=(pt,ot=!1)=>'<span style="display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;font-size:12.5px;'+(ot?"border:1px solid var(--warning,#B7791F);color:var(--warning,#B7791F)":"border:1px solid var(--line,#D8DDE3);color:var(--sub,#5A6472);background:var(--panel2,#EDF0F3)")+'">'+pt+"</span>",N=(pt,ot,ft)=>'<div class="panel" style="flex:1 1 280px;min-width:260px"><div class="small muted">'+pt+'</div><h3 style="margin:4px 0 6px">'+ot+'</h3><p class="small muted" style="margin:0">'+ft+"</p></div>";return'<div class="eyebrow">状态监测 · 振动诊断 (windcms)</div><div class="panel mb"><h3 style="margin:0 0 6px">振动与 SCADA 联合分析</h3><p class="small muted" style="margin:0 0 10px">六层模型:数据完整性 → ISO 标量 → 主轴承 rms → 台内自适应基线 → 谱线八闸 → 六枚举裁决。厂商判据与模型融合,机制未定不命名部件。</p><div style="display:flex;flex-wrap:wrap;gap:8px">'+T("当前时间窗 · "+_)+T("关注台 "+c+" 台",!0)+T("报警台 "+r+" 台",!0)+T("全场 "+u+" 台")+T("证据窗末 "+(K||"—"))+T("证据窗内报警工单 · "+m+" 条")+T("CMS 采集窗 "+(X||"—")+(nt?" · "+nt:""))+T("CMS 裁决 · 优秀 "+E("优秀")+" / 良好 "+E("良好")+" / 报警 "+E("报警"))+T("行动项 "+H+" 条"+(L?" · 数据时点 "+L:""))+T("TCM 六采集窗 · 320 万记录 · 160 万谱")+'</div><p class="small muted" style="margin:10px 0 0">口径:「当前时间窗 / 关注台 / 报警台 / 全场」随右上角时间窗变化;「证据窗末 / 证据窗内报警工单 / CMS 采集窗 / CMS 裁决 / 行动项 / TCM」取自**振动证据包与 CMS 侧**,按证据窗固定(门户原文:<i>振动:证据窗固定,不随本窗</i>),切窗时这些不变。</p></div><div class="eyebrow">振动分析 · 方法与证据边界</div><div style="display:flex;flex-wrap:wrap;gap:12px;margin-bottom:14px">'+N("比较基准","异常比较先核实基准","先确认测点、工况、处理链和频带可比,再结合线能量占比与机群分布识别异常。阈值须注明来源、样本和适用范围;本底接近检测下限时,倍数不宜单独解释,诊断仍需补充证据。")+N("证据关联","多种特征不等于独立证据","频谱、标量和时域特征若来自同一波形,应保留共同来源,避免重复计票。跨测点或跨窗口的一致性也需核查共同工况与采集依赖;结论升级应结合独立检修等证据,不以特征数量替代证据质量。")+N("结论边界","结论强度与证据匹配","使用“持续恶化”“单调”或“唯一”等表述前,应明确观察范围、比较对象、样本依赖和对应检验。端段差异不能代替全程趋势证据;复核发现支持不足时,补充验证或降低结论强度,并保留不确定性。")+'</div><div class="eyebrow">在线 · 客户版</div><div class="panel"><h3 style="margin:0 0 6px">CMS 振动分析工作台</h3><p class="small muted" style="margin:0 0 10px">左栏"需关注 / 未见异常"按台展开四个测点判级;工作台可选机组、测点、分析类即时出图;交互页可提问。演示只停客户版与一次工作台运行。</p><div style="display:flex;flex-wrap:wrap;gap:8px"><a class="chip" style="padding:5px 11px;border-radius:999px;border:1px solid var(--line,#D8DDE3);text-decoration:none" href="/cms/?theme=light" target="_blank" rel="noopener">新窗口打开 windcms →</a><a class="chip" style="padding:5px 11px;border-radius:999px;border:1px solid var(--line,#D8DDE3);text-decoration:none" href="/cms/workbench.html?theme=light" target="_blank" rel="noopener">工作台 →</a></div><iframe title="windcms" src="/cms/?theme=light" style="width:100%;height:760px;border:1px solid var(--line,#D8DDE3);border-radius:8px;margin-top:12px"></iframe></div>'}const Nu=typeof window<"u"?window:globalThis,Nl=Nu.__charts,Bu=Nl?Nl({t:i,fmt:Tt,esc:gt,dv:wt,EN:!1,displayText:t=>t==null?"":String(t),verb:()=>{}}):{};function zt(t,...e){const s=Bu[t];if(typeof s!="function")return"";try{return s(...e)}catch{return""}}const Wu={key:0},Ku={class:"panel"},Uu={class:"small muted"},Vu={key:1},zu={class:"kpis",style:{"margin-bottom":"12px"}},Gu={key:0},Yu={class:"grid2"},Ju={class:"panel span2"},Xu={class:"small muted",style:{"font-weight":"400"}},Zu={class:"panel"},Qu={class:"small muted",style:{"margin-top":"6px"}},td={class:"panel"},ed={class:"small muted",style:{"font-weight":"400"}},sd={class:"tblwrap"},nd={class:"r",style:{width:"90px"}},ld={class:"small"},ad={class:"num small"},od={class:"r small"},rd={class:"small muted",style:{"margin-top":"6px"}},id=Ut({__name:"Energy",props:{d:{}},setup(t){const e=t,s=G(()=>(e.d?.control||{}).energy),n=G(()=>(e.d?.control||{}).states||[]),l={"限电·绑定":"loss.curtail_bound","限电命令·未绑定":"loss.curtail_unbound","停机(调度令)":"loss.dispatch",停机:"loss.stop",正常发电:"loss.normal",低风待机:"loss.lowwind"},a=u=>l[u]?i(l[u]):u,c=G(()=>{const u=s.value||{};return[{v:Tt(u.theo),u:"MWh",l:i("en.kpi_theo"),k:""},{v:Tt(u.act),u:"MWh",l:i("en.kpi_act",{h:Tt(u.eflh)}),k:"ok"},{v:Tt(u.loss_pct,1),u:"%",l:i("en.kpi_loss",{v:Tt(u.loss)}),k:u.loss_pct>=10?"warn":""},{v:u.cap_ok?i("en.cap_pass"):i("en.cap_fail"),u:"",l:i("en.cap_note",{op:u.cap_ok?"<":"≥",cap:Tt(u.cap)}),k:u.cap_ok?"ok":"bad"}]}),r=G(()=>Math.max(1,...n.value.map(u=>u.pct)));return(u,_)=>s.value?(M(),C("section",Vu,[o("div",zu,[(M(!0),C(ct,null,$t(c.value,(h,m)=>(M(),C("div",{key:m,class:Qt(["kpi",h.k])},[o("b",null,[it(d(h.v),1),h.u?(M(),C("small",Gu,d(h.u),1)):bt("",!0)]),o("span",null,d(h.l),1)],2))),128))]),o("div",Yu,[o("div",Ju,[o("h3",null,[it(d(p(i)("en.balance"))+" ",1),o("span",Xu,d(p(i)("en.win",{win:p(Se)(t.d.win)})),1)]),At(Xt,{html:p(zt)("waterfall",s.value)},null,8,["html"])]),o("div",Zu,[o("h3",null,d(p(i)("en.blame")),1),At(Xt,{html:p(zt)("blameBar",s.value)},null,8,["html"]),o("p",Qu,d(p(i)("en.blame_note",{n:p(Tt)(Math.round(((s.value.items||[]).find(h=>h.k==="停机")||{}).loss||0))})),1)]),o("div",td,[o("h3",null,[it(d(p(i)("en.states"))+" ",1),o("span",ed,d(p(i)("en.win",{win:p(Se)(t.d.win)})),1)]),o("div",sd,[o("table",null,[o("tr",null,[o("th",null,d(p(i)("en.state")),1),o("th",null,d(p(i)("en.share")),1),o("th",nd,d(p(i)("en.loss_mwh")),1)]),(M(!0),C(ct,null,$t(n.value,h=>(M(),C("tr",{key:h.k},[o("td",ld,d(a(h.k)),1),o("td",null,[o("i",{class:"bar",style:Rt(`width:${Math.round(h.pct/r.value*84)}px;background:${h.k.indexOf("停机")>=0&&h.k.indexOf("调度")<0?"var(--critical)":"var(--accent)"}`)},null,4),o("span",ad,d(h.pct)+"% · "+d(p(Tt)(Math.round(h.h)))+"h",1)]),o("td",od,d(p(Tt)(Math.round(h.loss))),1)]))),128))])]),o("p",rd,[it(d(t.d.control.anchors||""),1),_[0]||(_[0]=o("br",null,null,-1)),it(d(p(i)("en.states_note")),1)])])])])):(M(),C("section",Wu,[o("div",Ku,[o("p",Uu,d(p(i)("ui.empty")),1)])]))}}),cd={class:"eyebrow"},ud={class:"panel mb small",style:{"border-left":"3px solid var(--accent)"}},dd={style:{color:"var(--warning)"}},pd={class:"grid2"},fd={class:"eyebrow",style:{"grid-column":"1/-1","margin-top":"4px"}},hd={style:{"text-transform":"none","letter-spacing":"0",color:"var(--muted)"}},md={class:"panel span2"},_d={class:"small muted",style:{"margin-top":"6px"}},vd={class:"panel"},gd={class:"panel"},bd={class:"panel span2"},$d={class:"small muted",style:{"margin-top":"6px"}},yd={key:0,style:{color:"var(--warning)"}},xd={class:"panel"},wd={class:"tblwrap"},kd={style:{width:"70px"}},Md={class:"r",style:{width:"80px"}},Sd={class:"num small"},Td={class:"r small"},Cd={class:"small muted",style:{"margin-top":"6px"}},Ed={key:0,class:"panel",style:{"border-left":"3px solid var(--critical)"}},Fd={class:"small"},Od={key:1,class:"panel"},Ad={class:"small muted",style:{"font-weight":"400"}},jd={class:"small muted",style:{"margin-top":"6px"}},qd={class:"eyebrow",style:{"grid-column":"1/-1","margin-top":"4px"}},Dd={style:{"text-transform":"none","letter-spacing":"0",color:"var(--muted)"}},Pd={key:0,class:"panel span2"},Rd={class:"small muted",style:{"margin-top":"6px"}},Ld={style:{"margin-top":"12px"}},Id={class:"small muted",style:{"margin-top":"2px"}},Hd={class:"panel"},Nd={class:"small muted",style:{"margin-top":"4px"}},Bd={class:"panel"},Wd={class:"tblwrap"},Kd={style:{width:"64px"}},Ud={class:"r",style:{width:"56px"}},Vd={class:"num small"},zd={class:"r small"},Gd={class:"small muted",style:{"margin-top":"6px"}},Yd=Ut({__name:"Fault",props:{d:{}},setup(t){const e=t,s=G(()=>e.d?.faults||{}),n=G(()=>s.value.partial||[]),l=G(()=>e.d?.m8&&!e.d.m8.err?e.d.m8.mtbf:null),a=G(()=>s.value.monthly||{months:[],vals:[]}),c=G(()=>n.value.length?(a.value.months||[]).indexOf(n.value[0]):-1),r=G(()=>{const K=n.value.length?i("flt.rate_partial",{m:n.value.join("/")}):i("flt.rate_full"),T=c.value>=0&&!!a.value.per_day;return K+(T?" "+i("flt.rate_example",{m:n.value[0],v:u.value}):"")}),u=G(()=>{const K=c.value;return K>=0&&a.value.per_day?a.value.per_day[K]:null}),_=G(()=>n.value.length?i("win.partial",{m:n.value.join("/"),c:Math.round((s.value.cov_min||0)*100)}):""),h=G(()=>s.value.per_t||[]),m=G(()=>Math.max(1,...h.value.map(K=>K.v))),v=G(()=>l.value&&e.d?.m8?.seasonal?e.d.m8.seasonal:[]),b=G(()=>e.d?.rel&&!e.d.rel.err?e.d.rel:null),E=G(()=>(e.d?.m8?.stop_pareto||[]).map(K=>({k:String(K.k).split(";")[0].slice(0,26),v:K.h}))),H=K=>_s(K),X=G(()=>({months:v.value[0]&&v.value[0].months||[],series:v.value.slice(0,4).map(K=>({name:String(K.name).slice(0,16),vals:K.vals})),xlab:i("flt.seasonal_x")})),nt=G(()=>l.value?.台级top||[]),L=G(()=>Math.max(1,...nt.value.map(K=>K.时长h)));return(K,T)=>(M(),C("section",null,[o("div",cd,d(p(i)("flt.eyebrow")),1),o("div",ud,[o("b",null,d(p(i)("win.banner",{win:p(Se)(t.d.win)})),1),_.value?(M(),C(ct,{key:0},[T[0]||(T[0]=it(" | ",-1)),o("span",dd,d(_.value),1)],64)):bt("",!0)]),o("div",pd,[o("div",fd,[it(d(p(i)("flt.alarm_face"))+" ",1),o("span",hd,d(p(i)("flt.alarm_meta",{n:p(Tt)(s.value.total),c:s.value.n_codes,win:p(Se)(t.d.win)})),1)]),o("div",md,[o("h3",null,d(p(i)("flt.rate")),1),At(Xt,{html:p(zt)("rateChart",a.value)},null,8,["html"]),o("p",_d,[o("b",null,d(p(i)("flt.rate_note")),1),it(" — "+d(r.value),1)])]),o("div",vd,[o("h3",null,d(p(i)("flt.pareto_n")),1),At(Xt,{html:p(zt)("paretoChart",s.value.pareto_n||[],p(i)("unit.n"),p(i)("flt.pareto_n_note"))},null,8,["html"])]),o("div",gd,[o("h3",null,d(p(i)("flt.pareto_d")),1),At(Xt,{html:p(zt)("paretoChart",s.value.pareto_d||[]," h",p(i)("flt.pareto_d_note"))},null,8,["html"])]),o("div",bd,[o("h3",null,d(p(i)("flt.quad")),1),At(Xt,{html:p(zt)("quadChart",s.value.quad||[])},null,8,["html"]),o("p",$d,[it(d(p(i)("flt.quad_note",{n:s.value.n_codes,m:(s.value.quad||[]).length}))+" ",1),n.value.length?(M(),C("span",yd,d(p(i)("flt.quad_partial",{m:n.value.join("/"),c:Math.round((s.value.cov_min||0)*100)})),1)):bt("",!0),it(" "+d(p(i)("flt.quad_note2")),1)])]),o("div",xd,[o("h3",null,d(p(i)("flt.per_t",{n:h.value.length})),1),o("div",wd,[o("table",null,[o("tr",null,[o("th",kd,d(p(i)("ui.unit")),1),o("th",null,d(p(i)("ui.count")),1),o("th",Md,d(p(i)("flt.per_t_share")),1)]),(M(!0),C(ct,null,$t(h.value,N=>(M(),C("tr",{key:N.k},[o("td",null,[o("b",null,d(p(qt)(N.k)),1)]),o("td",null,[o("i",{class:"bar",style:Rt(`width:${Math.round(N.v/m.value*90)}px;background:${N.v/m.value>.6?"var(--critical)":"var(--accent)"}`)},null,4),o("span",Sd,d(p(Tt)(N.v)),1)]),o("td",Td,d((N.v/s.value.total*100).toFixed(1))+"%",1)]))),128))])]),o("p",Cd,d(p(i)("flt.per_t_note",{n:p(Tt)(s.value.total)})),1)]),t.d.m8&&t.d.m8.err?(M(),C("div",Ed,[o("p",Fd,d(p(i)("flt.block_err",{k:"m8",e:t.d.m8.err})),1)])):bt("",!0),l.value&&v.value.length?(M(),C("div",Od,[o("h3",null,[it(d(p(i)("flt.seasonal"))+" ",1),o("span",Ad,"("+d(p(i)("flt.seasonal_unit"))+")",1)]),At(Xt,{html:p(zt)("multiline",X.value)},null,8,["html"]),o("p",jd,d(p(i)("flt.seasonal_note")),1)])):bt("",!0),l.value?(M(),C(ct,{key:2},[o("div",qd,[it(d(p(i)("flt.stop_face"))+" ",1),o("span",Dd,d(p(i)("flt.stop_meta",{h:p(Tt)(l.value.停机总时长h),n:p(Tt)(l.value.停机事件数)})),1)]),b.value?(M(),C("div",Pd,[o("h3",null,d(p(i)("flt.ram")),1),At(Xt,{html:p(zt)("ramChart",b.value&&b.value.表||[],H)},null,8,["html"]),o("p",Rd,d(p(i)("flt.ram_note",{a:b.value.设备类停机h,b:b.value.外部类停机h})),1),o("div",Ld,[At(Xt,{html:p(zt)("attribBar",b.value&&b.value.表||[],b.value&&b.value.总停机h||0)},null,8,["html"])]),o("p",Id,d(p(i)("flt.attrib_note",{h:((b.value.表||[]).find(N=>N.部件==="无记录停机")||{}).停机时长h||0})),1)])):bt("",!0),o("div",Hd,[o("h3",null,d(p(i)("flt.stop_pareto")),1),At(Xt,{html:p(zt)("paretoChart",E.value," h",p(i)("flt.stop_pareto_note"))},null,8,["html"]),o("p",Nd,d(l.value.口径),1)]),o("div",Bd,[o("h3",null,d(p(i)("flt.stop_units",{n:nt.value.length})),1),o("div",Wd,[o("table",null,[o("tr",null,[o("th",Kd,d(p(i)("ui.unit")),1),o("th",null,d(p(i)("flt.stop_h")),1),o("th",Ud,d(p(i)("flt.stop_n")),1)]),(M(!0),C(ct,null,$t(nt.value,N=>(M(),C("tr",{key:N.t},[o("td",null,[o("b",null,d(p(qt)(N.t)),1)]),o("td",null,[o("i",{class:"bar",style:Rt(`width:${Math.round(N.时长h/L.value*90)}px;background:${N.时长h/L.value>.6?"var(--critical)":"var(--accent)"}`)},null,4),o("span",Vd,d(p(Tt)(N.时长h)),1),T[1]||(T[1]=it("h",-1))]),o("td",zd,d(N.次),1)]))),128))])]),o("p",Gd,d(p(i)("flt.stop_units_note")),1)])],64)):bt("",!0)])]))}}),Jd={class:"eyebrow"},Xd={style:{display:"flex",gap:"8px","margin-bottom":"14px","flex-wrap":"wrap"}},Zd=["data-fsub","onClick"],Qd={key:0,class:"panel mb","data-added":"confidence",style:{"margin-top":"10px"}},tp={class:"small",style:{"line-height":"1.9"}},ep={key:0,class:"muted"},sp={key:1,style:{"margin-top":"6px"}},np={class:"r"},lp={class:"r"},ap={class:"small muted"},op={class:"small muted",style:{"margin-top":"6px"}},rp={key:1,class:"panel mb","data-added":"hysteresis",style:{"margin-top":"10px"}},ip={class:"small",style:{"line-height":"1.9"}},cp={key:0,class:"muted"},up={class:"small muted",style:{"margin-top":"4px"}},dp=["innerHTML"],pp=Ut({__name:"Vibration",props:{d:{},sub:{},cms:{}},emits:["sub"],setup(t,{emit:e}){const s=t,n=e,l=G(()=>s.sub||"matrix"),a=xt(null),c=xt("");He(l,async v=>{if((v==="cms"||v==="portal_cms")&&!a.value&&!s.cms&&!c.value)try{const b=await fetch("/api/vibcms");a.value=await b.json()}catch(b){c.value=String(b?.message||b)}},{immediate:!0});const r=G(()=>s.cms??a.value),u=G(()=>{const v=s.d||null,b=v&&v.fus&&v.fus.迟滞诊断;return!b||b.err?null:b}),_=G(()=>{const v=s.d||null,b=v&&v.fus&&v.fus.置信度;if(!b||!b.per_row)return null;const E=Object.entries(b.per_row).map(([K,T])=>({key:K,...T||{}})),H={};for(const K of E)H[String(K.band||"?")]=(H[String(K.band||"?")]||0)+1;const X=E.filter(K=>K.usable).length,nt=E.slice().sort((K,T)=>(Number(T.total)||0)-(Number(K.total)||0)).slice(0,8),L=E[0]&&E[0].structural||[];return{n:E.length,byBand:H,usable:X,top:nt,structural:L,status:b.接线状态||""}}),h=G(()=>s.d?.fus),m=G(()=>{const v=h.value;return!v||v.err?`<section><div class="panel"><p>${i("fus.unavailable",{e:String(v&&v.err||"")})}</p></div></section>`:l.value==="matrix"?Eu(v):l.value==="loop"?Fu(v):l.value==="units"?qu(v,null):l.value==="events"?Ru(v,s.d):l.value==="cms"?Lu(r.value):l.value==="portal_cms"?Hu(s.d,r.value):`<div class="panel mb"><p class="small muted">子视图「${i("fus.sub."+l.value)}」尚未迁移到 Vue(迁移中)。</p></div>`});return(v,b)=>(M(),C("section",null,[o("div",Jd,d(p(i)("fus.eyebrow")),1),o("div",Xd,[(M(!0),C(ct,null,$t(p(Iu),E=>(M(),C("button",{key:E,class:Qt(["pill",{on:E===l.value}]),"data-fsub":E,onClick:H=>n("sub",E)},d(p(i)("fus.sub."+E)),11,Zd))),128))]),_.value?(M(),C("div",Qd,[b[3]||(b[3]=o("h3",{style:{margin:"0 0 6px"}},[it("置信度(诊断)"),o("span",{class:"small muted"}," 仅诊断用:缺件时分数低≠证据弱,不可用于判断机组状态")],-1)),o("div",tp,[o("div",null,[it("样本:"+d(_.value.n)+" 行 · 分档:",1),(M(!0),C(ct,null,$t(_.value.byBand,(E,H)=>(M(),C("b",{key:H,style:{"margin-right":"8px"}},d(H)+" "+d(E),1))),128)),b[0]||(b[0]=it(" · 各可取轴均已取到:",-1)),o("b",null,d(_.value.usable),1),b[1]||(b[1]=it(" 行",-1))]),_.value.structural&&_.value.structural.length?(M(),C("div",ep,"结构性缺件:"+d(_.value.structural[0]),1)):bt("",!0),_.value.top.length?(M(),C("table",sp,[b[2]||(b[2]=o("tr",null,[o("th",null,"机组/部件"),o("th",{class:"r"},"总分"),o("th",{class:"r"},"档位"),o("th",null,"A"),o("th",null,"B"),o("th",null,"C"),o("th",null,"D"),o("th",null,"E"),o("th",null,"缺件")],-1)),(M(!0),C(ct,null,$t(_.value.top,E=>(M(),C("tr",{key:E.key},[o("td",null,d(E.key),1),o("td",np,d(E.total),1),o("td",lp,d(E.band),1),o("td",null,d((E.axes||{}).A_internal),1),o("td",null,d((E.axes||{}).B_independent),1),o("td",null,d((E.axes||{}).C_physical),1),o("td",null,d((E.axes||{}).D_sample),1),o("td",null,d((E.axes||{}).E_falsification),1),o("td",ap,d((E.missing_inputs||[]).join(";")||"—"),1)]))),128))])):bt("",!0),o("div",op,"接线状态:"+d(_.value.status),1)])])):bt("",!0),u.value?(M(),C("div",rp,[b[6]||(b[6]=o("h3",{style:{margin:"0 0 6px"}},[it("迟滞诊断(原厂 Hysteresis)"),o("span",{class:"small muted"}," 仅显示锁存诊断:瞬时抬升会被抑制;不可用于判断机组状态")],-1)),o("div",ip,[o("div",null,"口径:"+d(u.value.口径),1),o("div",null,[b[4]||(b[4]=it("序列 ",-1)),o("b",null,d(u.value.序列数),1),b[5]||(b[5]=it(" 条 · 被原厂迟滞改变 ",-1)),o("b",null,d(u.value.被迟滞改变),1),it(" 条 · h="+d(u.value.h),1)]),u.value.改变清单&&u.value.改变清单.length?(M(),C("div",cp,"改变清单:"+d(u.value.改变清单.join(";")),1)):bt("",!0),o("div",null,"逐测量 RedHysteresis 分布(抽样 "+d(u.value.扫描文件数)+" 文件):"+d(JSON.stringify(u.value.逐测量迟滞分布)),1),o("div",up,d(u.value.用途),1)])])):bt("",!0),o("div",{class:"unwrap-host",innerHTML:m.value},null,8,dp)]))}}),fp={class:"eyebrow"},hp={class:"panel mb small",style:{"border-left":"3px solid var(--accent)"}},mp={class:"muted",style:{"margin-top":"3px"}},_p={key:0,class:"panel mb",style:{"border-left":"3px solid var(--critical)"}},vp={class:"small"},gp={class:"small muted",style:{"font-weight":"400"}},bp={key:0,class:"chip"},$p={style:{display:"flex","flex-wrap":"wrap",gap:"18px"}},yp={style:{flex:"1 1 300px","min-width":"280px"}},xp={class:"small",style:{"font-weight":"600","margin-bottom":"4px"}},wp={class:"small muted",style:{"margin-top":"4px"}},kp={style:{flex:"1 1 300px","min-width":"280px"}},Mp={class:"small",style:{"font-weight":"600","margin-bottom":"4px"}},Sp=["innerHTML"],Tp={class:"small",style:{"font-weight":"600",margin:"12px 0 4px"}},Cp={class:"small muted",style:{"margin-top":"4px"}},Ep={key:2,class:"panel mb"},Fp={class:"small muted",style:{"font-weight":"400"}},Op=["innerHTML"],Ap={class:"eyebrow"},jp={key:3,class:"panel",style:{"border-left":"3px solid var(--critical)"}},qp={class:"small"},Dp={key:4,class:"panel",style:{"border-left":"3px solid var(--accent)"}},Pp={class:"small"},Rp={key:5,class:"panel"},Lp={class:"small muted"},Ip={key:6,class:"grid2"},Hp={key:0,class:"small muted",style:{"font-weight":"400"}},Np={key:0,class:"small muted",style:{"margin-top":"6px"}},Bp=Ut({__name:"Generation",props:{d:{},curves:{},pending:{type:Boolean}},setup(t){const e=t,s=G(()=>e.d?.m9&&!e.d.m9.err?e.d.m9:null),n=G(()=>e.d?.control||null),l=G(()=>e.curves||null),a=G(()=>(e.d?.sysmx_span||[]).join(" ~ ")||""),c=G(()=>s.value?.β_schedule?.离群||[]),r=G(()=>s.value?.β_schedule?.全场同档差中位||0),u=G(()=>{const m=n.value?.curve?.cands||[];return m.length?m.map(v=>`<a href="/turbine/${v.t}">${qt(v.t)}</a> ${v.dev}% ${wt(v.判)}`).join(" | "):i("gen.no_cands")}),_=G(()=>i("gen.beta_note",{units:c.value.map(m=>`<a href="/turbine/${m.t}">${qt(m.t)}</a>`).join(" / "),k:c.value.length?Math.round(Math.max(...c.value.map(m=>m.平均偏))/Math.max(r.value||0,.01)):"—",v:wt(s.value?.β_schedule?.判)})),h=G(()=>l.value?.figs||[]);return(m,v)=>(M(),C("section",null,[o("div",fp,d(p(i)("gen.eyebrow")),1),o("div",hp,[o("b",null,d(p(i)("gen.fixed_win")),1),it(" "+d(a.value?p(i)("gen.win_range",{span:a.value}):"")+" ",1),o("div",mp,d(p(i)("gen.win_why")),1)]),t.d.m9&&t.d.m9.err?(M(),C("div",_p,[o("p",vp,d(p(i)("flt.block_err",{k:"m9",e:p(wt)(t.d.m9.err)})),1)])):bt("",!0),s.value?(M(),C("div",{key:1,class:"panel mb",style:Rt(t.pending?"border-left:3px solid var(--accent)":"")},[o("h3",null,[it(d(p(i)("gen.ctrl"))+" ",1),o("span",gp,d(p(i)("gen.ctrl_win",{win:p(wt)(s.value.窗)})),1),t.pending?(M(),C("span",bp,d(p(i)("gen.recomputing_short")),1)):bt("",!0)]),o("div",$p,[o("div",yp,[o("div",xp,d(p(i)("gen.cap")),1),At(Xt,{html:p(zt)("capAxis",s.value&&s.value.P封顶,s.value&&s.value.ω封顶)},null,8,["html"]),o("p",wp,d(p(i)("gen.cap_note")),1)]),o("div",kp,[o("div",Mp,d(p(i)("gen.beta")),1),At(Xt,{html:p(zt)("betaBar",s.value&&s.value.β_schedule||{},p(qt))},null,8,["html"]),o("p",{class:"small muted",style:{"margin-top":"4px"},innerHTML:_.value},null,8,Sp),o("div",Tp,d(p(i)("gen.ruler")),1),At(Xt,{html:p(zt)("rulerBar",s.value&&s.value.尺子)},null,8,["html"]),o("p",Cp,d(p(i)("gen.ruler_note")),1)])])],4)):bt("",!0),n.value&&n.value.curve?(M(),C("div",Ep,[o("h3",null,[it(d(p(i)("gen.cands"))+" ",1),o("span",Fp,d(p(i)("gen.cands_meta",{note:p(wt)(n.value.curve.note||""),s:t.d.sigma||n.value.curve.sigma})),1)]),o("p",{class:"small",innerHTML:u.value},null,8,Op)])):bt("",!0),o("div",Ap,d(p(i)("gen.figs")),1),l.value&&l.value.err?(M(),C("div",jp,[o("p",qp,d(p(gt)(l.value.err)),1)])):l.value&&l.value.building?(M(),C("div",Dp,[o("p",Pp,[o("b",null,d(p(i)("gen.recomputing")),1),it(" "+d(p(wt)(l.value.curves?.note||"")),1)]),v[0]||(v[0]=o("div",{class:"skel",style:{width:"60%","margin-top":"10px"}},null,-1)),v[1]||(v[1]=o("div",{class:"skel",style:{width:"80%","margin-top":"8px"}},null,-1))])):l.value?(M(),C("div",Ip,[(M(!0),C(ct,null,$t(h.value,(b,E)=>(M(),C("div",{key:E,class:"panel"},[o("h3",null,[it(d(p(wt)(b.title||"")),1),b.unit?(M(),C("span",Hp,"("+d(p(wt)(b.unit))+")",1)):bt("",!0)]),At(Xt,{html:p(zt)("multiline",Object.assign({zero:!1},b))},null,8,["html"]),b.note?(M(),C("p",Np,d(p(wt)(b.note)),1)):bt("",!0)]))),128))])):(M(),C("div",Rp,[o("p",Lp,d(p(i)("gen.loading")),1),v[2]||(v[2]=o("div",{class:"skel",style:{width:"60%","margin-top":"10px"}},null,-1)),v[3]||(v[3]=o("div",{class:"skel",style:{width:"80%","margin-top":"8px"}},null,-1))]))]))}}),Wp={class:"eyebrow"},Kp={class:"small muted"},Up=["href"],Vp=["innerHTML"],zp={class:"panel mb"},Gp={class:"small muted"},Yp=["innerHTML"],Jp={style:{display:"flex",gap:"8px","flex-wrap":"wrap",margin:"10px 0","align-items":"center"}},Xp=["placeholder","value"],Zp={class:"small muted",for:"askm"},Qp=["innerHTML"],tf=["innerHTML"],ef=["title"],sf={class:"muted"},nf={class:"btn",id:"askgo"},lf={id:"askout",class:"small"},af=Ut({__name:"Decision",props:{d:{},apis:{}},setup(t){const e=t,s=[["equip","设备类"],["sched","检修排程决策"],["loss","损失分析"],["risk","安全风险预测"]],n={"qwen3:8b":"local","qwen3.8:27b":"local","qwen3:30b-a3b":"local","deepseek-r1:14b":"local","deepseek-r1:32b":"local","deepseek-chat":"cloud","kimi-fast":"cloud","qwen-plus":"cloud","deepseek-v4-pro":"cloud"},l=xt("equip"),a=xt(""),c=xt(""),r=xt(""),u=G(()=>e.apis?.["/detail/api/ask_models"]??e.apis?.["/api/ask_models"]??null),_=G(()=>u.value?u.value.models||{}:null),h=G(()=>!!u.value?.offline||!!u.value?.LOCAL_AI_DOWN),m=G(()=>i("cat."+l.value)),v=G(()=>s.map(([N])=>`<button class="pill ${N===l.value?"on":""}" data-cat="${N}">${i("cat."+N)}</button>`).join("")),b=G(()=>[1,2,3].map(N=>`<div class="qitem" data-q="${gt(i("cat."+l.value+".q"+N))}">${i("cat."+l.value+".q"+N)}</div>`).join("")),E=(N,pt)=>i("mdl."+N+"."+pt),H=N=>(E(N,"nm")||N)+(n[N]?" · "+i("mdl."+n[N]):"")+(E(N,"t")?" · "+E(N,"t"):""),X=N=>n[N]?n[N]==="local"?i("mdl.zero_outbound"):`<span style="color:var(--warning)">${i("mdl.outbound_warn")}</span>`:`<span style="color:var(--warning)">${i("mdl.unknown_warn")}</span>`,nt=G(()=>{const N=_.value;if(N===null)return c.value;const pt=Object.keys(N);return!c.value||!pt.includes(c.value)?pt[0]||"":c.value}),L=G(()=>{const N=_.value;return N===null?'<option value="">…</option>':Object.keys(N).length?Object.keys(N).map(pt=>`<option value="${gt(pt)}" ${pt===nt?"selected":""}>${gt(H(pt))}</option>`).join(""):`<option value="">${h.value?i("ask.local_down"):i("ask.no_models")}</option>`}),K=G(()=>`/?lang=zh&win=${encodeURIComponent(String(e.d?.win||""))}`),T=G(()=>nt.value?X(nt.value):"");return(N,pt)=>(M(),C("section",null,[o("div",Wp,d(p(i)("dec.head")),1),o("p",Kp,[it(d(p(i)("dec.classic"))+" ",1),o("a",{href:K.value},d(p(i)("ui.open_classic")),9,Up)]),o("div",{style:{display:"flex",gap:"8px",margin:"10px 0 12px","flex-wrap":"wrap"},innerHTML:v.value},null,8,Vp),o("div",zp,[o("h3",null,d(p(i)("ask.common_q",{cat:m.value})),1),o("p",Gp,d(p(i)("cat."+l.value+".hint"))+d("。")+d(p(i)("ask.grounding")),1),o("div",{innerHTML:b.value,class:"unwrap-host"},null,8,Yp),o("div",Jp,[o("input",{id:"askq",type:"text",placeholder:p(gt)(p(i)("ask.placeholder",{cat:m.value})),value:a.value,style:{flex:"1","min-width":"280px"}},null,8,Xp),o("label",Zp,d(p(i)("ask.model")),1),o("select",{id:"askm",innerHTML:L.value},null,8,Qp),o("span",{id:"mdlnote",class:"small",innerHTML:T.value},null,8,tf),o("label",{class:"small",style:{cursor:"pointer","white-space":"nowrap"},title:p(gt)(p(i)("ask.xrev_title"))},[pt[0]||(pt[0]=o("input",{type:"checkbox",id:"askxrev"},null,-1)),it(" "+d(p(i)("ask.xrev"))+" ",1),o("span",sf,d(p(i)("ask.xrev_note")),1)],8,ef),o("button",nf,d(p(i)("ask.go")),1)]),o("div",lf,d(r.value||p(i)("ask.idle")),1)])]))}}),of={class:"eyebrow"},rf={class:"panel mb"},cf={class:"small muted",style:{"font-weight":"400"}},uf=["placeholder","value"],df={class:"btn","data-asst":"fault"},pf={class:"small muted"},ff=["innerHTML"],hf={id:"asstOut_fault",style:{"margin-top":"10px"}},mf={class:"panel mb"},_f={class:"small muted",style:{"font-weight":"400"}},vf=["innerHTML"],gf={class:"btn","data-asst":"prev"},bf={id:"asstOut_prev",style:{"margin-top":"10px"}},$f={class:"panel mb"},yf={class:"small muted",style:{"font-weight":"400"}},xf=["innerHTML"],wf={class:"btn","data-asst":"tree"},kf={id:"asstOut_tree",style:{"margin-top":"10px"}},vn="display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px",Mf=Ut({__name:"Assistant",setup(t){const e=["变桨","偏航","主轴承","齿轮箱","发电机","变流器","塔架与基础","主控与传感网","叶片与叶根"],s=["3225","3130","13902","10105","3224"],n=gs({fault:"",prev:"pitch",tree:"pitch",out:{fault:"",prev:"",tree:""}}),l=c=>e.map(r=>`<option value="${Hs(r)}" ${n[c]===Hs(r)?"selected":""}>${me(r)}</option>`).join(""),a=G(()=>s.map(c=>`<a href="#" data-code="${c}">${c}</a>`).join(" · "));return(c,r)=>(M(),C("section",null,[o("div",of,d(p(i)("asst.head"))+" — "+d(p(i)("asst.head_note")),1),o("div",rf,[o("h3",null,[it(d(p(i)("asst.corrective"))+" ",1),o("span",cf,d(p(i)("asst.corrective_flow")),1)]),o("div",{style:vn},[o("input",{id:"asstIn_fault",placeholder:p(gt)(p(i)("asst.code_placeholder")),value:n.fault,style:{flex:"1 1 220px"}},null,8,uf),o("button",df,d(p(i)("ui.query")),1),o("span",pf,[it(d(p(i)("asst.common"))+" ",1),o("span",{class:"unwrap-host",innerHTML:a.value},null,8,ff)])]),o("div",hf,d(n.out.fault),1)]),o("div",mf,[o("h3",null,[it(d(p(i)("asst.preventive"))+" ",1),o("span",_f,d(p(i)("asst.preventive_flow")),1)]),o("div",{style:vn},[o("select",{id:"asstIn_prev",style:{flex:"1 1 200px"},innerHTML:l("prev")},null,8,vf),o("button",gf,d(p(i)("ui.query")),1)]),o("div",bf,d(n.out.prev),1)]),o("div",$f,[o("h3",null,[it(d(p(i)("asst.faulttree"))+" ",1),o("span",yf,d(p(i)("asst.faulttree_flow")),1)]),o("div",{style:vn},[o("select",{id:"asstIn_tree",style:{flex:"1 1 200px"},innerHTML:l("tree")},null,8,xf),o("button",wf,d(p(i)("ui.query")),1)]),o("div",kf,d(n.out.tree),1)])]))}}),Sf={class:"eyebrow"},Tf={key:0,class:"panel"},Cf={class:"small muted"},Ef={key:1,class:"panel"},Ff={class:"small",style:{color:"var(--critical)"}},Of={class:"panel mb"},Af={class:"small muted"},jf={class:"small muted"},qf={class:"tblwrap"},Df={style:{"margin-top":"10px"}},Pf={style:{width:"18%"}},Rf={style:{width:"20%"}},Lf={style:{width:"13%"}},If={style:{width:"10%"}},Hf={style:{width:"11%"}},Nf={class:"small"},Bf={class:"small num"},Wf={key:0,class:"muted"},Kf={class:"small muted"},Uf={class:"small"},Vf={class:"small"},zf={class:"small"},Gf={class:"muted"},Yf={style:{"margin-top":"3px"}},Jf={class:"muted",style:{"margin-top":"3px"}},Xf={class:"eyebrow",style:{"margin-top":"18px"}},Zf={"data-added":"recalc",style:{"margin-top":"18px",display:"flex",gap:"8px","align-items":"center"}},Qf=Ut({__name:"System",props:{apis:{}},emits:["refresh"],setup(t,{emit:e}){const s=t,n=e,l=xt(null);function a(){const m=l.value&&l.value.contentDocument;if(!m)return;const v=["b_off","b_rebuild","b_start","b_stop","b_restart"];for(const b of v){const E=m.getElementById(b);E&&!E.__bound&&(E.__bound=!0,E.addEventListener("click",()=>{setTimeout(()=>n("refresh"),4e3)},!0))}}We(()=>{const m=l.value;m&&m.addEventListener("load",()=>setTimeout(a,800))});const c=m=>String(m??""),r=G(()=>s.apis?.["/detail/api/maint_survey"]??s.apis?.["/api/maint_survey"]??null),u=[[["数据","Data"],"mt.layer_data","mt.layer_data_note","var(--accent)"],[["机理","Domain model","Mechanism"],"mt.layer_mech","mt.layer_mech_note","var(--warning)"]],_=G(()=>r.value?.rows||[]),h=G(()=>u.map(([m,v,b,E])=>({kn:v,kd:b,col:E,rs:_.value.filter(H=>m.includes(String(H.层)))})).filter(m=>m.rs.length));return(m,v)=>{const b=pr("Recalc");return M(),C("section",null,[o("div",Sf,d(p(i)("mt.eyebrow")),1),r.value?r.value.error?(M(),C("div",Ef,[o("p",Ff,d(p(wt)(r.value.error)),1)])):(M(),C(ct,{key:2},[o("div",Of,[o("h3",null,d(p(i)("mt.head",{n:_.value.length})),1),o("p",Af,d(p(i)("mt.note")),1)]),(M(!0),C(ct,null,$t(h.value,E=>(M(),C("div",{key:E.kn,class:"panel mb",style:Rt(`border-left:3px solid ${E.col}`)},[o("h3",null,d(p(i)(E.kn))+" ("+d(E.rs.length)+")",1),o("p",jf,d(p(i)(E.kd)),1),o("div",qf,[o("table",Df,[o("tr",null,[o("th",Pf,d(p(i)("mt.src")),1),o("th",Rf,d(p(i)("mt.cov")),1),o("th",Lf,d(p(i)("mt.last")),1),o("th",If,d(p(i)("mt.freq")),1),o("th",Hf,d(p(i)("mt.resp")),1),o("th",null,d(p(i)("mt.how")),1)]),(M(!0),C(ct,null,$t(E.rs,(H,X)=>(M(),C("tr",{key:X},[o("td",Nf,[o("b",null,d(H.存在?"":"✗ ")+d(c(H.名)),1)]),o("td",Bf,[it(d(c(H.覆盖)),1),H.条数?(M(),C("span",Wf,d(p(i)("mt.rows_n",{n:p(Tt)(H.条数)})),1)):bt("",!0)]),o("td",Kf,d(p(gt)(H.末次更新||"—")),1),o("td",Uf,d(c(H.频率)),1),o("td",Vf,d(c(H.责任)),1),o("td",zf,[o("div",Gf,[it(d(p(i)("mt.put"))+" ",1),o("code",null,d(c(H.位置)),1)]),o("div",Yf,[it(d(p(i)("mt.run"))+" ",1),o("code",null,d(c(H.摄入)),1)]),o("div",Jf,d(c(H.说明)),1)])]))),128))])])],4))),128))],64)):(M(),C("div",Tf,[o("p",Cf,d(p(i)("mt.surveying")),1)])),o("div",Xf,d(p(i)("tab.recalc")),1),At(b),o("div",Zf,[o("button",{class:"btn quiet",id:"refresh-data",onClick:v[0]||(v[0]=E=>n("refresh"))},"刷新数据"),v[1]||(v[1]=o("span",{class:"small muted"},"清产物 / 重算 / 启停服务后,可点此让工作台重新取数;控制台内按钮动作后也会自动重取。",-1))]),o("iframe",{ref_key:"frame",ref:l,"data-added":"recalc",class:"portal-recalc-frame",title:"数据重算与产物",src:"/ops",style:{width:"100%",height:"1420px",border:"0",display:"block","margin-top":"18px"}},null,512)])}}});function th(t,e){const{t:s,fmt:n,esc:l,dv:a,displayText:c,chart:r,SYS_KEY:u,sysName:_,stateChip:h,unitNo:m,STEP:v,winName:b,L:E,RPT:H,FACTS:X}=e;t&&t.fus&&t.fus.链盘;function nt(){if(!X||!X.cards)return"";const ot=X.cards.filter(ht=>ht.verdict==="定论"||ht.verdict==="准定论·预警"),ft=ot.map(ht=>`<tr><td><code>${l(ht.claim_id)}</code></td><td>${l(ht.verdict)}</td><td>${l(ht.title)}</td><td>${l((ht.systems||[]).join(", ")||"—")}</td><td>${l(ht.aggregation||"—")}</td></tr>`).join("");return`<div class="rpt-blk" data-contract="${l(X.contract_sha256||"")}"><div class="blk-ti">${s("rpt.facts.title")} <span class="small muted">${s("rpt.facts.sub",{n:ot.length,sha:(X.contract_sha256||"").slice(0,16)})}</span></div><div style="overflow:auto"><table class="tbl"><tr><th>claim</th><th>${s("rpt.facts.verdict")}</th><th>${s("rpt.facts.text")}</th><th>${s("rpt.facts.sys")}</th><th>${s("rpt.facts.agg")}</th></tr>${ft}</table></div></div>`}const L=ot=>{const ft=String(ot||"");for(const ht of["attr.","vp."])if(E[ht+ft]!=null)return s(ht+ft);return null},K=ot=>u[ot]?_(ot):L(ot)?l(L(ot)):a(ot),T=ot=>u[ot]?_(ot):L(ot)||c(ot);function N(ot,ft,ht,jt,O){return`<div class="kpi ${O||""}"><b>${ot}<small>${ft}</small></b><span>${ht}<br><span style="opacity:.8">${jt||""}</span></span></div>`}function pt(ot,ft){const ht=ft.control&&ft.control.energy||{},jt=ht.monthly||[],O=ft.rel&&!ft.rel.err?ft.rel:null,J=ft.m8&&!ft.m8.err?ft.m8.mtbf:null,Z=ft.faults||{},q=ft.fus||{},j=q.链盘||{},F=(k,P,B)=>`<div class="panel mb"><h3>${k}</h3>${P}${B?`<p class="small muted" style="margin-top:8px;padding-top:7px;border-top:1px solid var(--line)">${s("rpt.caliber_lbl")}${B}</p>`:""}</div>`;if(ot==="kpi"){const k=jt[jt.length-1]||{},P=jt[jt.length-2]||{},B=(k.cov||0)>=.5&&(P.cov||0)>=.5,U=(lt,at)=>at?(lt-at)/at*100:0,Q=U(k.act,P.act);return`<div class="kpis" style="margin-bottom:14px">${N(n(ht.act),"MWh",s("rpt.kpi.act"),s("rpt.kpi.theo",{v:n(ht.theo)})+" | "+(B?s("rpt.kpi.mom",{v:(Q>=0?"+":"")+Q.toFixed(0)}):s("rpt.kpi.mom_na")))}
- ${N(n(ht.eflh),"h",s("rpt.kpi.eflh"),s("rpt.kpi.annual",{v:n(Math.round((ht.eflh||0)/Math.max(jt.filter(lt=>lt.cov>=.5).length,1)*12))}))}
- ${N(n(ft.control&&ft.control.avail,1),"%",s("rpt.kpi.avail"),s("rpt.kpi.avail_n"),ft.control&&ft.control.avail>=95?"ok":"warn")}
- ${N(n(ht.loss_pct,1),"%",s("rpt.kpi.loss"),n(ht.loss)+" MWh",ht.loss_pct>=15?"warn":"")}
- ${N(J?n(J.MTBF_h):"—","h",s("rpt.kpi.mtbo"),s("rpt.kpi.mtbo_n",{n:J?n(J.停机事件数):"—",h:J?J.MDT_h:"—"}))}
- ${N((j.rows||[]).length,s("unit.units"),s("rpt.kpi.action"),s("rpt.kpi.action_n",{a:(q.kpi||{}).定论||0,b:(q.kpi||{}).预警||0,c:(q.kpi||{}).候选观察||0}),(j.rows||[]).length>20?"warn":"")}</div>`}if(ot==="water")return F(s("rpt.water.title"),r("waterfall",ht)+`<p class="small muted" style="margin-top:6px">${s("rpt.water.note",{theo:n(ht.theo),act:n(ht.act),loss:n(ht.loss),pct:ht.loss_pct})} | ${ht.cap_ok?s("rpt.water.cap_ok",{cap:n(ht.cap)}):s("rpt.water.cap_bad",{cap:n(ht.cap)})}</p>`,s("rpt.water.cal"));if(ot==="emon")return F(s("rpt.emon.title"),jt.length?`<div class="tblwrap"><table><tr><th>${s("rpt.emon.m")}</th><th class="r">${s("rpt.emon.act")}</th><th class="r">${s("rpt.emon.loss")}</th><th class="r">${s("rpt.emon.pct")}</th><th class="r">${s("rpt.emon.eflh")}</th><th>${s("rpt.emon.cov")}</th></tr>${jt.map(k=>`<tr><td>${k.m}</td><td class="r">${n(k.act)}</td><td class="r">${n(k.loss)}</td><td class="r">${k.loss_pct}%</td><td class="r">${k.eflh}</td><td class="small" style="color:${k.cov<.5?"var(--warning)":"var(--muted)"}">${(k.cov*100).toFixed(0)}%${k.cov<.5?s("rpt.emon.partial"):""}</td></tr>`).join("")}</table></div>`:"—",s("rpt.emon.cal"));if(ot==="blame")return F(s("rpt.blame.title"),r("blameBar",ht)+`<p class="small muted" style="margin-top:8px">${s("rpt.blame.note")}<br><b>${s("rpt.blame.note2")}</b></p>`,s("rpt.blame.cal"));if(ot==="ram")return O?F(s("rpt.ram.title"),r("ramChart",O.表,T)+`<p class="small muted" style="margin-top:6px">${s("rpt.ram.note",{a:O.设备类停机h,b:O.外部类停机h})}</p>`,s("rpt.ram.cal")):"";if(ot==="parts")return O?F(s("rpt.parts.title"),`<div class="tblwrap"><table><tr><th>${s("rpt.parts.part")}</th><th class="r">${s("rpt.parts.h")}</th><th class="r">${s("rpt.parts.ev")}</th><th class="r">${s("rpt.parts.mtbf")}</th><th class="r">${s("rpt.parts.mdt")}</th><th class="r">${s("rpt.parts.units")}</th></tr>${O.表.slice(0,9).map(k=>`<tr><td class="small">${K(k.部件)}${k.外部?s("rpt.parts.ext"):""}</td><td class="r">${k.停机时长h}</td><td class="r">${k.事件数}</td><td class="r">${k.MTBF_h||"—"}</td><td class="r">${k.MDT_h}</td><td class="r">${k.影响台数}</td></tr>`).join("")}</table></div>`,s("rpt.parts.cal")):"";if(ot==="attrib")return O?F(s("rpt.attrib.title"),r("attribBar",O.表,O.总停机h)+`<p class="small muted" style="margin-top:6px">${s("rpt.attrib.note")}</p>`,""):"";if(ot==="pareto")return F(s("rpt.pareto.title"),r("paretoChart",Z.pareto_n||[],s("unit.n"),""),s("rpt.pareto.cal"));if(ot==="quad")return F(s("rpt.quad.title"),r("quadChart",Z.quad||[])+`<p class="small muted" style="margin-top:6px">${s("rpt.quad.note")}</p>`,s("rpt.quad.cal"));if(ot==="frate")return F(s("rpt.frate.title"),r("rateChart",Z.monthly||{months:[],vals:[]})+`<p class="small muted" style="margin-top:6px">${s("rpt.frate.note")}</p>`,s("rpt.frate.cal"));if(ot==="units"){const k=(j.rows||[]).slice(0,14),P=Object.entries(j.stuck||{}).map(([B,U])=>s("rpt.units.stuck",{n:U,s:s("step."+(v[B]||"evidence"))})).join(" · ");return F(s("rpt.units.title"),`<p class="small muted" style="margin-bottom:8px">${s("rpt.units.head",{n:(j.rows||[]).length,tot:(ft.kpi||{}).全场||38})}${P}</p><div class="tblwrap"><table><tr><th style="width:52px">${s("ui.unit")}</th><th style="width:80px">${s("rpt.units.state")}</th><th>${s("rpt.units.ev")}</th><th style="width:56px">${s("rpt.units.prog")}</th><th style="width:90px">${s("rpt.units.at")}</th></tr>
- ${k.map(B=>`<tr><td><b>${m(B.t)}</b></td><td>${h(B.ostate)}</td><td class="small muted">${B.part&&B.part.indexOf("未收录")<0?`<b style="color:var(--ink)">${a(B.part)}</b> · `:""}${(B.srcs||[]).map(a).join("/")||"—"}${B.rising?` · <span style="color:var(--critical)">${s("rpt.units.rising",{r:B.rising.ratio})}</span>`:""}</td><td class="r small">${B.done}/6</td><td class="small" style="color:var(--warning)">${B.stuck?s("step."+(v[B.stuck]||"evidence")):s("rpt.units.clear")}</td></tr>`).join("")}</table></div>`,s("rpt.units.cal"))}if(ot==="chain")return F(s("rpt.chain.title"),`<p class="small muted">${s("rpt.chain.note",{s:Object.entries(j.stuck||{}).map(([k,P])=>s("rpt.units.stuck",{n:P,s:s("step."+(v[k]||"evidence"))})).join(", ")})}</p>`,s("rpt.chain.cal",{b:a(j.wo_bound||"")}));if(ot==="loop"){const k=j.closed||[];return F(s("rpt.loop.title"),`<div class="tblwrap"><table><tr><th>${s("ui.unit")}</th><th>${s("rpt.loop.comp")}</th><th>${s("rpt.loop.date")}</th><th class="r">${s("rpt.loop.pre")}</th><th class="r">${s("rpt.loop.post")}</th><th class="r">${s("rpt.loop.ratio")}</th></tr>${k.map(P=>`<tr><td><b>${m(P.turbine)}</b></td><td class="small">${a(P.component)}</td><td class="small">${l(P.replace_date)}</td><td class="r">${P.pre}</td><td class="r">${P.post}</td><td class="r" style="color:var(--good)"><b>${P.ratio}×</b></td></tr>`).join("")}</table></div><p class="small muted" style="margin-top:6px">${s("rpt.loop.note")}</p>`,s("rpt.loop.cal"))}if(ot==="plan")return F(s("rpt.plan.title"),`<ol style="margin:0 0 0 20px;line-height:1.85"><li>${s("rpt.plan.1",{n:(j.stuck||{}).机制||0})}</li><li>${s("rpt.plan.2")}</li><li>${s("rpt.plan.3")}</li><li>${s("rpt.plan.4")}</li></ol>`,s("rpt.plan.cal"));if(ot==="narr"){const k=H.narr;return!k||!k.text?F(s("rpt.narr.title"),`<p class="small muted">${s("rpt.narr.empty")}</p>`,""):F(s("rpt.narr.title"),`<p style="line-height:1.9;margin:0">${l(k.text).split(`
- `).join("<br>")}</p>${(k.ungrounded||[]).length?`<p class="small" style="color:var(--warning);margin-top:8px">${s("rpt.narr.ungr",{v:k.ungrounded.map(l).join(" / ")})}</p>`:""}`,s("rpt.narr.cal",{m:l(k.model),g:(k.ungrounded||[]).length?s("rpt.narr.g_n",{n:k.ungrounded.length}):s("rpt.narr.g_ok")}))}if(ot==="caliber"){const k=Z.partial||[];return F(s("rpt.cal.title"),`<ul style="margin:0 0 0 20px;line-height:1.85"><li><b>${s("rpt.cal.period")}</b> ${b(ft.win)}${k.length?s("rpt.cal.partial",{m:k.join("/"),c:Math.round((Z.cov_min||0)*100)}):""}</li><li><b>${s("rpt.cal.denom")}</b> ${s("rpt.cal.denom_d")}</li><li><b>${s("rpt.cal.stop")}</b> ${s("rpt.cal.stop_d")}</li><li><b>${s("rpt.cal.wo")}</b> ${s("rpt.cal.wo_d")}</li><li><b>${s("rpt.cal.rating")}</b> ${s("rpt.cal.rating_d")}</li>${H.aud==="up"?`<li><b>${s("rpt.cal.deid")}</b> ${s("rpt.cal.deid_d")}</li>`:""}</ul>`,"")}return""}return{rptBlock:pt,rptFacts:nt}}const eh={class:"eyebrow"},sh={class:"panel mb noprint"},nh={style:{display:"flex",gap:"10px","align-items":"center","flex-wrap":"wrap","margin-bottom":"10px"}},lh={class:"small",style:{"font-weight":"600"}},ah=["data-preset","onClick"],oh=["selected"],rh=["selected"],ih={key:0,class:"small",style:{color:"var(--warning)","flex-basis":"100%"}},ch={class:"small",style:{"font-weight":"600","margin-bottom":"7px"}},uh={style:{"font-weight":"400",color:"var(--muted)"}},dh={style:{display:"grid","grid-template-columns":"auto 1fr",gap:"6px 12px","align-items":"center"}},ph={class:"small muted",style:{"text-align":"right","padding-top":"3px"}},fh={style:{display:"flex","flex-wrap":"wrap",gap:"6px"}},hh=["data-block","onClick","onMouseenter"],mh={id:"rpthint",class:"small muted",style:{"margin-top":"9px","padding-top":"8px","border-top":"1px solid var(--line)","min-height":"19px"}},_h={style:{"margin-top":"11px","padding-top":"10px","border-top":"1px solid var(--line)"}},vh={class:"small",style:{"font-weight":"600","margin-bottom":"6px"}},gh=["innerHTML"],bh={style:{display:"flex",gap:"8px","align-items":"center","flex-wrap":"wrap"}},$h=["placeholder","value"],yh=["innerHTML"],xh=["disabled"],wh={id:"rptout",class:"small muted",style:{"margin-top":"7px"}},kh={key:0,class:"paper",style:{"text-align":"center",padding:"56px 40px"}},Mh={class:"small muted"},Sh={key:1,class:"paper"},Th={class:"paper-hd"},Ch={class:"paper-ti"},Eh={class:"small muted",style:{"margin-top":"3px"}},Fh={class:"small muted",style:{"text-align":"right"}},Oh={key:0,class:"noprint",style:{display:"flex",gap:"3px","justify-content":"flex-end","margin-bottom":"-6px",position:"relative","z-index":"2"}},Ah=["data-k","disabled","onClick"],jh=["data-k","disabled","onClick"],qh=["data-k","onClick"],Dh=["data-blk","innerHTML"],Ph=["innerHTML"],Rh={class:"paper-ft"},Lh=Ut({__name:"Report",props:{d:{},apis:{}},setup(t){const e=t,s={month:["kpi","water","emon","blame","ram","pareto","units","plan","caliber"],week:["kpi","frate","units","plan","caliber"],topic:["units","chain","ram","loop","caliber"],year:["kpi","water","emon","ram","loop","caliber"],blank:[]},n={kpi:"gen",water:"gen",emon:"gen",blame:"gen",ram:"rel",parts:"rel",attrib:"rel",pareto:"flt",quad:"flt",frate:"flt",units:"unit",chain:"unit",loop:"unit",plan:"end",caliber:"end",narr:"end"},l={kpi:"▦",water:"▤",emon:"▥",blame:"◧",ram:"◈",parts:"▤",attrib:"▬",pareto:"▮",quad:"◇",frate:"▪",units:"☰",chain:"⛓",loop:"✓",plan:"✎",caliber:"⚑",narr:"✍"},a={"qwen3:8b":"local","qwen3.8:27b":"local","qwen3:30b-a3b":"local","deepseek-r1:14b":"local","deepseek-r1:32b":"local","deepseek-chat":"cloud","kimi-fast":"cloud","qwen-plus":"cloud","deepseek-v4-pro":"cloud"},c=["gen","rel","flt","unit","end"],r=gs({canvas:[],aud:"in",need:"",model:"",models:null,compose:null,narr:null,out:""}),u=G(()=>e.apis?.["/detail/api/ask_models"]??e.apis?.["/api/ask_models"]??null),_=G(()=>u.value?u.value.models||{}:r.models),h=G(()=>!!u.value?.offline),m=(D,V)=>i("mdl."+D+"."+V),v=D=>(m(D,"nm")||D)+(a[D]?" · "+i("mdl."+a[D]):"")+(m(D,"t")?" · "+m(D,"t"):""),b=D=>r.canvas.includes(D),E=G(()=>r.compose===!0&&!!_.value&&Object.keys(_.value).length>0),H=G(()=>{const D=_.value;return D===null?'<option value="">…</option>':Object.keys(D).length?Object.keys(D).map(V=>`<option value="${gt(V)}" ${V===N?"selected":""}>${gt(v(V))}</option>`).join(""):`<option value="">${h.value?i("ask.local_down"):i("ask.no_models")}</option>`}),X=G(()=>c.map(D=>({g:D,label:i("rpt.g."+D),items:Object.keys(n).filter(V=>n[V]===D).map(V=>({k:V,icon:l[V]||"",on:b(V),name:i("rpt.b."+V+".nm")}))}))),nt=G(()=>e.apis&&e.apis["/api/facts"]||null),L=G(()=>th(e.d,{t:i,fmt:Tt,esc:gt,dv:wt,displayText:Jn,chart:zt,SYS_KEY:ms,sysName:me,stateChip:Ee,unitNo:qt,STEP:Fn,winName:Se,L:Ga,RPT:r,FACTS:nt.value})),K=G(()=>L.value.rptFacts()),T=D=>L.value.rptBlock(D,e.d),N=G(()=>{const D=_.value;if(D===null)return r.model;const V=Object.keys(D);return!r.model||!V.includes(r.model)?V[0]||"":r.model}),pt=G(()=>i("rpt.need_hint")+(N.value?a[N.value]==="local"?i("rpt.local_note"):`<span style="color:var(--warning)">${i("rpt.cloud_note")}</span>`:"")),ot=G(()=>r.out?r.out:r.compose===!1?i("rpt.no_compose"):_.value&&!Object.keys(_.value).length?h.value?i("ask.local_down"):i("rpt.no_models"):""),ft=G(()=>(String(e.d?.fus?.数据时点||"").match(/\d{4}-\d{2}-\d{2}/)||[""])[0]);function ht(D){r.canvas=(s[D]||[]).slice(),U()}function jt(D){const V=r.canvas.indexOf(D);V>=0?r.canvas.splice(V,1):r.canvas.push(D),et.value=i("rpt.hint_idle"),U()}function O(D){et.value=i("rpt.b."+D+".nm")+" — "+i("rpt.b."+D+".d")}function J(){et.value=i("rpt.hint_idle")}function Z(D,V){const tt=r.canvas.indexOf(D);if(tt<0)return;if(V==="del"){r.canvas.splice(tt,1);return}const W=tt+(V==="up"?-1:1);if(W<0||W>=r.canvas.length)return;const Y=r.canvas[tt];r.canvas[tt]=r.canvas[W],r.canvas[W]=Y}function q(D){r.aud=D.target.value}async function j(){const D={};for(const V of r.canvas){const tt=document.querySelector('[data-blk="'+V+'"]'),W=tt&&tt.querySelector("svg");if(W)try{const Y=W.cloneNode(!0);let f="";try{f=window.getComputedStyle(document.body).fontFamily||""}catch{f=""}f&&(Y.setAttribute("font-family",f),Y.setAttribute("style",(Y.getAttribute("style")||"")+";font-family:"+f.replace(/;/g,"")),Y.querySelectorAll("text, tspan").forEach(x=>x.setAttribute("font-family",f)));const g=new XMLSerializer().serializeToString(Y),$=(W.getAttribute("viewBox")||"").split(/[\s,]+/).map(Number),y=($[2]||W.clientWidth||900)*2,S=($[3]||W.clientHeight||360)*2,A=new Image;await new Promise(x=>{A.onload=()=>x(),A.onerror=()=>x(),A.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(g)});const R=document.createElement("canvas");R.width=y,R.height=S;const I=R.getContext("2d");if(!I)continue;I.fillStyle="#ffffff",I.fillRect(0,0,y,S),I.drawImage(A,0,0,y,S),D[V]=R.toDataURL("image/png")}catch{}}return D}function F(D,V){const tt=URL.createObjectURL(D),W=document.createElement("a");W.href=tt,W.download=V,document.body.appendChild(W),W.click(),W.remove(),setTimeout(()=>{try{URL.revokeObjectURL(tt)}catch{}},4e3)}function k(){try{window.print()}catch{}}function P(D){if(!r.canvas.length){try{window.alert(i("rpt.empty_canvas"))}catch{}return}const V=r.narr&&r.narr.text?r.narr.text:"",tt=String(e.d&&e.d.win||""),W="运行分析报告_"+tt+"_"+(r.aud==="up"?"上报版":"内部版")+"."+D,Y=()=>{const f="/api/rpt_export?fmt="+D+"&blocks="+encodeURIComponent(r.canvas.join(","))+"&aud="+r.aud+"&win="+encodeURIComponent(tt)+"&narr="+encodeURIComponent(V),g=document.createElement("a");g.href=f,g.download="",document.body.appendChild(g),g.click(),g.remove()};if(D!=="docx"){Y();return}(async()=>{let f={};try{f=await j()}catch{f={}}if(!Object.keys(f).length){Y();return}try{const g=await fetch("/api/rpt_export",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fmt:"docx",blocks:r.canvas.join(","),aud:r.aud,win:tt,narr:V,images:f})});if(!g.ok){Y();return}F(await g.blob(),W)}catch{Y()}})()}let B=!1;async function U(){if(!B){B=!0;try{const D=await fetch("/api/rpt_compose?probe=1");r.compose=!!(D&&D.ok)}catch{r.compose=!1}}}async function Q(){const D=String(r.need||"");if(!D.trim()){_t.value=i("rpt.need_empty");return}ut.value=!0,_t.value=i("rpt.composing");let V;try{const W=r.model||"";V=await(await fetch("/api/rpt_compose?need="+encodeURIComponent(D)+"&canvas="+encodeURIComponent(r.canvas.join(","))+"&model="+encodeURIComponent(W))).json()}catch(W){_t.value=i("rpt.compose_fail",{e:W?.message||String(W)}),ut.value=!1;return}if(ut.value=!1,V.err){_t.value=String(V.err);return}r.narr={text:V.narrative,model:V.model,ungrounded:V.ungrounded||[]};const tt=(V.blocks||[]).filter(W=>n[W]);tt.length?r.canvas=(V.narrative?["narr"]:[]).concat(tt):V.narrative&&!r.canvas.includes("narr")&&r.canvas.unshift("narr"),_t.value=i("rpt.composed",{n:tt.length,narr:V.narrative?i("rpt.narr_plus"):"",m:V.model||"",s:V.secs})}function lt(D){r.model=D.target.value}function at(D){r.need=D.target.value}const et=xt(i("rpt.hint_idle")),ut=xt(!1),_t=xt("");return We(()=>{U()}),(D,V)=>(M(),C("section",null,[o("div",eh,d(p(i)("rpt.eyebrow")),1),o("div",sh,[o("div",nh,[o("span",lh,d(p(i)("rpt.presets")),1),(M(!0),C(ct,null,$t(Object.keys(s),tt=>(M(),C("button",{key:tt,class:"pill","data-preset":tt,onClick:W=>ht(tt)},d(p(i)("rpt.preset."+tt)),9,ah))),128)),V[2]||(V[2]=o("span",{style:{flex:"1"}},null,-1)),o("select",{id:"rptaud",onChange:q},[o("option",{value:"in",selected:r.aud==="in"},d(p(i)("rpt.aud_in")),9,oh),o("option",{value:"up",selected:r.aud==="up"},d(p(i)("rpt.aud_up")),9,rh)],32),o("button",{class:"btn quiet",id:"rptprint",onClick:k},d(p(i)("rpt.print")),1),o("button",{class:"btn quiet","data-export":"docx",onClick:V[0]||(V[0]=tt=>P("docx"))},d(p(i)("rpt.export_docx")),1),o("button",{class:"btn quiet","data-export":"xlsx",onClick:V[1]||(V[1]=tt=>P("xlsx"))},d(p(i)("rpt.export_xlsx")),1),r.aud==="up"?(M(),C("span",ih,d(p(i)("rpt.up_note")),1)):bt("",!0)]),o("div",ch,[it(d(p(i)("rpt.library"))+" ",1),o("span",uh,d(p(i)("rpt.library_note",{n:r.canvas.length})),1)]),o("div",dh,[(M(!0),C(ct,null,$t(X.value,tt=>(M(),C(ct,{key:tt.g},[o("div",ph,d(tt.label),1),o("div",fh,[(M(!0),C(ct,null,$t(tt.items,W=>(M(),C("button",{key:W.k,class:Qt(["pill",{on:W.on}]),"data-block":W.k,style:Rt({borderRadius:"7px",padding:"5px 11px",fontSize:"12.5px",opacity:W.on?1:.8}),onClick:Y=>jt(W.k),onMouseenter:Y=>O(W.k),onMouseleave:J},d(W.icon)+" "+d(W.name),47,hh))),128))])],64))),128))]),o("div",mh,d(et.value),1),o("div",_h,[o("div",vh,[it(d(p(i)("rpt.need_head"))+" ",1),o("span",{id:"rptmdlnote",style:{"font-weight":"400",color:"var(--muted)"},innerHTML:pt.value},null,8,gh)]),o("div",bh,[o("input",{id:"rptneed",placeholder:p(gt)(p(i)("rpt.need_ph")),value:r.need,style:{flex:"1 1 300px","min-width":"220px"},onInput:at,onKeydown:Ei(Q,["enter"])},null,40,$h),o("select",{id:"rptmdl",innerHTML:H.value,onChange:lt},null,40,yh),o("button",{class:"btn",id:"rptgo",disabled:!E.value,onClick:Q},d(p(i)("rpt.compose")),9,xh)]),o("div",wh,d(_t.value||ot.value),1)])]),r.canvas.length?(M(),C("div",Sh,[o("div",Th,[o("div",null,[o("div",Ch,d(p(i)("app.brand"))+" · "+d(p(i)("rpt.paper_title")),1),o("div",Eh,d(p(i)("rpt.paper_sub",{win:p(Se)(t.d.win),n:(t.d.kpi||{}).全场||38}))+d(r.aud==="up"?" | "+p(i)("rpt.up_tag"):""),1)]),o("div",Fh,d(p(i)("rpt.chapters",{n:r.canvas.length})),1)]),(M(!0),C(ct,null,$t(r.canvas,(tt,W)=>(M(),C(ct,{key:tt},[n[tt]?(M(),C("div",Oh,[o("button",{class:"pill","data-mv":"up","data-k":tt,disabled:W===0,style:{padding:"1px 8px","font-size":"11px",opacity:".7"},onClick:Y=>Z(tt,"up")},"↑",8,Ah),o("button",{class:"pill","data-mv":"down","data-k":tt,disabled:W===r.canvas.length-1,style:{padding:"1px 8px","font-size":"11px",opacity:".7"},onClick:Y=>Z(tt,"down")},"↓",8,jh),o("button",{class:"pill","data-mv":"del","data-k":tt,style:{padding:"1px 8px","font-size":"11px",opacity:".7"},onClick:Y=>Z(tt,"del")},"×",8,qh)])):bt("",!0),n[tt]?(M(),C("div",{key:1,"data-blk":tt,innerHTML:T(tt)},null,8,Dh)):bt("",!0)],64))),128)),o("div",{innerHTML:K.value},null,8,Ph),o("div",Rh,[o("span",null,d(p(i)("rpt.foot_src"))+d(ft.value?" | "+p(i)("rpt.foot_asof",{d:ft.value}):""),1),o("span",null,d(p(i)("rpt.foot_trace"))+d(r.aud==="up"?" | "+p(i)("rpt.foot_deid"):""),1)])])):(M(),C("div",kh,[o("div",Mh,d(p(i)("rpt.preview_empty")),1)]))]))}}),Ih={class:"kpis"},Hh=["title"],Nh=["innerHTML"],Bh={key:1},Wh={key:0},Kh={class:"sechead"},Uh={class:"meta"},Vh={class:"meta"},zh={key:0,class:"card mb",style:{"margin-bottom":"10px"}},Gh={class:"small",style:{color:"var(--warning)"}},Yh={class:"small muted"},Jh={class:"cards"},Xh=["id"],Zh={class:"head"},Qh=["href"],tm={class:"sys"},em={class:"evidence-detail"},sm={class:"why"},nm={class:"evid"},lm=["title"],am={key:1,class:"rv"},om={key:0,class:"caveat"},rm={class:"sechead"},im={class:"meta"},cm={class:"legend"},um={class:"cells"},dm=["data-u","title"],pm={key:1,class:"quiet",style:{padding:"10px"}},fm={class:"nums"},hm={class:"quiet"},mm={class:"sechead"},_m={class:"meta"},vm={class:"systems"},gm={class:"t"},bm=["href"],$m={class:"bar"},ym={class:"cnt"},xm=Ut({__name:"Overview",props:{d:{}},setup(t){const e=t,s=G(()=>e.d?.fus||{}),n=G(()=>e.d?.m8?.mtbf||{}),l=G(()=>e.d?.control||{}),a=G(()=>{const L={};for(const K of l.value.states||[])L[K.k]=K.loss;return L}),c=G(()=>{const L=l.value,K=i("kpi.loss",{win:Se(e.d?.win)})+(a.value["停机(调度令)"]!=null?` · ${i("kpi.loss_dispatch",{n:Tt(a.value["停机(调度令)"])})}`:"");return[{v:Tt(L.avail,1),u:"%",l:i("kpi.avail",{win:Se(e.d?.win)}),k:L.avail>=95?"ok":"warn",ti:""},{v:Tt(n.value.停机总时长h),u:"h",l:i("kpi.downtime",{n:Tt(n.value.停机事件数)}),k:"warn",ti:""},{v:Tt(n.value.MTBF_h),u:"h",l:i("kpi.mtbo"),k:"",ti:""},{v:Tt(a.value.停机),u:"MWh",l:K,k:"",ti:""},{v:Tt(a.value["限电·绑定"]),u:"MWh",l:i("kpi.curtail"),k:"",ti:""},{vRaw:`${Tt(e.d?.kpi?.报警台)} <small>/ ${Tt(e.d?.kpi?.全场)}</small>`,u:"",l:i("kpi.alarm_units"),k:e.d?.kpi?.报警台?"warn":"ok",ti:i("kpi.alarm_units.hint"),vHtml:!0}]}),r=G(()=>{const L={};for(const K of e.d?.watch||[])L[K.t]=K.why;return L}),u=G(()=>((s.value.链盘||{}).rows||[]).filter(L=>L.lvl==="bad"||L.lvl==="warn"));function _(L){const K=(r.value[L.t]||"").trim();if(K)return K;const T=Fn[L.stuck]||String(L.stuck||"").toLowerCase(),N=i(T==="evidence"?"step.site_records":"step."+(T||"evidence"));return i("ov.basis_fusion",{part:L.part||"—",done:L.done==null?"—":L.done,n:(L.steps||[]).length||"—",stuck:L.stuck?N:i("ov.all_steps_done"),srcs:(L.srcs||[]).join(" / ")||i("ov.no_srcs")})}function h(L){if(!L.stuck)return"";const K=Fn[L.stuck]||String(L.stuck||"").toLowerCase(),T=i(K==="evidence"?"step.site_records":"step."+(K||"evidence"));return i("step.stuck_at",{step:T})}const m=[["危险","critical"],["报警","warning"],["不可判","unknown"],["良好","good"],["优秀","excellent"]],v=G(()=>{const L=e.d?.sysdist||{};return Yn.map(K=>{const T=L[K]||{},N=Object.values(T).reduce((pt,ot)=>pt+ot,0)||1;return{name:me(K),slug:Hs(K),dist:T,n:N,seg:m.filter(([pt])=>T[pt]).map(([pt,ot])=>({k:pt,v:ot}))}})}),b=G(()=>s.value.矩阵||[]),E=G(()=>new Set(u.value.map(L=>L.t))),H={定论:"confirmed","准定论·预警":"near","候选·新发":"candidate_new",候选:"candidate","候选·记基线":"candidate_baseline",参考:"reference",INSUFFICIENT:"insufficient",正常:"normal",撤回:"withdrawn"},X={candidate_new:"candidate",candidate_baseline:"candidate",normal:"reference"},nt=L=>{const K=H[String(L??"")];return K?X[K]||K:""};return(L,K)=>(M(),C(ct,null,[o("section",null,[o("div",Ih,[(M(!0),C(ct,null,$t(c.value,(T,N)=>(M(),C("div",{key:N,class:Qt(["kpi",T.k]),title:T.ti||void 0},[T.vHtml?(M(),C("b",{key:0,innerHTML:T.vRaw},null,8,Nh)):(M(),C("b",Bh,[it(d(T.v),1),T.u?(M(),C("small",Wh,d(T.u),1)):bt("",!0)])),o("span",null,d(T.l),1)],10,Hh))),128))])]),o("section",null,[o("div",Kh,[o("h2",null,d(p(i)("ov.attention")),1),o("span",Uh,d(p(i)("ov.attention_n",{n:u.value.length})),1),o("span",Vh,d(p(i)("ov.ranked_by")),1)]),s.value.gap?(M(),C("div",zh,[o("p",Gh,d(s.value.gap),1),o("p",Yh,d(p(i)("ov.fus_gap_hint")),1)])):bt("",!0),o("div",Jh,[(M(!0),C(ct,null,$t(u.value,T=>(M(),C("div",{key:T.t,class:"card",id:`u-${T.t}`,style:Rt(`--sev:var(--${p(Ll)[p(Ns)(T.ostate)||(T.lvl==="bad"?"bad":"warn")]})`)},[o("div",Zh,[o("a",{class:"unit",href:`/turbine/${T.t}`},d(p(qt)(T.t)),9,Qh),o("span",tm,d(T.part||""),1),o("span",{class:Qt(["chip",p(Ns)(T.ostate)||(T.lvl==="bad"?"bad":"warn")])},d(p(Pl)(T.ostate||(T.lvl==="bad"?"危险":"报警"))),3)]),o("details",em,[o("summary",null,d(p(i)("ov.evidence")),1),o("div",sm,d(_(T)),1)]),o("div",nm,[T.estate?(M(),C("span",{key:0,class:Qt(["tier",nt(T.estate)]),title:p(i)("tier."+(H[T.estate]||"unknown"))},d(p(Pl)(T.estate)),11,lm)):bt("",!0),T.srcs&&T.srcs.length?(M(),C("span",am,d(T.srcs.length)+" sources",1)):bt("",!0)]),h(T)||T.next?(M(),C("div",om,[o("b",null,d(p(i)("ov.caveat")),1),it(d(h(T))+d(h(T)&&T.next?" — ":"")+d(T.next||""),1)])):bt("",!0)],12,Xh))),128))])]),o("section",null,[o("div",rm,[o("h2",null,d(p(i)("ov.strip")),1),o("span",im,d(p(i)("ov.strip_hint")),1),o("div",cm,[(M(),C(ct,null,$t(["bad","warn","unk","ok","ex"],T=>o("span",{key:T},[o("i",{style:Rt(`background:var(--${p(Ll)[T]})`)},null,4),it(d(p(i)(p(On)(T))),1)])),64))])]),o("div",{class:"strip",style:Rt(`--n:${b.value.length||38}`)},[o("div",um,[b.value.length?(M(!0),C(ct,{key:0},$t(b.value,T=>(M(),C("div",{key:T.turbine,class:Qt(["cell",[p(Rl)(T),E.value.has(T.turbine)?"hot":""]]),"data-u":T.turbine,title:`${p(qt)(T.turbine)} ${p(i)(p(On)(p(Rl)(T)))}`},null,10,dm))),128)):(M(),C("div",pm,d(s.value.gap||p(i)("ov.fus_gap_hint")),1))]),o("div",fm,[(M(!0),C(ct,null,$t(b.value,T=>(M(),C("span",{key:`n-${T.turbine}`,class:Qt(E.value.has(T.turbine)?"hot":"")},d(p(qt)(T.turbine).replace("#","")),3))),128))]),o("div",hm,d(u.value.length?p(i)("ov.quiet",{n:Math.max(0,(b.value.length||38)-u.value.length)}):p(i)("ov.quiet_all",{n:b.value.length||38})),1)],4)]),o("section",null,[o("div",mm,[o("h2",null,d(p(i)("ov.systems")),1),o("span",_m,d(p(i)("ov.systems_hint")),1)]),o("div",vm,[(M(!0),C(ct,null,$t(v.value,T=>(M(),C("div",{key:T.name,class:"sysc"},[o("div",gm,[o("b",null,d(T.name),1),o("a",{href:`#tab=component&sys=${encodeURIComponent(T.slug)}`},d(p(i)("ui.open")),9,bm)]),o("div",$m,[(M(!0),C(ct,null,$t(T.seg,N=>(M(),C("i",{key:N.k,style:Rt(`width:${(T.dist[N.k]/T.n*100).toFixed(1)}%;background:var(--${N.v})`)},null,4))),128))]),o("div",ym,[(M(!0),C(ct,null,$t(T.seg,N=>(M(),C("span",{key:`c-${N.k}`},[o("i",{style:Rt(`background:var(--${N.v})`)},null,4),it(d(T.dist[N.k]),1)]))),128))])]))),128))])])],64))}}),wm={class:"page-head"},km={key:12,class:"card"},Mm={class:"hint"},Sm=Ut({__name:"Workbench",props:{d:{},tab:{},sys:{},sub:{},cms:{},curves:{},apis:{},win:{}},emits:["tab","sub","win","reselect","refresh"],setup(t,{emit:e}){const s=t,n=e,l=xt(""),a=xt(""),c=xt("");He(()=>s.win,u=>{l.value=u||"";const _=String(u||"").split("~");_.length===2&&(a.value=_[0],c.value=_[1])},{immediate:!0});const r=G(()=>!En.includes(s.tab));return(u,_)=>(M(),C(ct,null,[o("div",wm,[o("h1",null,d(p(i)("tab."+t.tab)),1)]),t.tab==="overview"?(M(),Nt(xm,{key:0,d:t.d},null,8,["d"])):t.tab==="energy"?(M(),Nt(id,{key:1,d:t.d},null,8,["d"])):t.tab==="component"?(M(),Nt(bu,{key:2,d:t.d,sys:t.sys},null,8,["d","sys"])):t.tab==="fault"?(M(),Nt(Yd,{key:3,d:t.d},null,8,["d"])):t.tab==="vibration"?(M(),Nt(pp,{key:4,d:t.d,sub:t.sub,cms:t.cms,onSub:_[0]||(_[0]=h=>n("sub",h))},null,8,["d","sub","cms"])):t.tab==="generation"?(M(),Nt(Bp,{key:5,d:t.d,curves:t.curves,pending:!!t.d.m9_pending},null,8,["d","curves","pending"])):t.tab==="decision"?(M(),Nt(af,{key:6,d:t.d,apis:t.apis},null,8,["d","apis"])):t.tab==="assistant"?(M(),Nt(Mf,{key:7,d:t.d},null,8,["d"])):t.tab==="system"?(M(),Nt(Qf,{key:8,apis:t.apis,onRefresh:_[1]||(_[1]=h=>n("refresh"))},null,8,["apis"])):t.tab==="report"?(M(),Nt(Lh,{key:9,d:t.d,apis:t.apis},null,8,["d","apis"])):t.tab==="documents"?(M(),Nt(ac,{key:10})):t.tab==="portal_src"?(M(),Nt(Ja,{key:11})):r.value?(M(),C("section",km,[o("h2",null,[it(d(p(i)("tab."+t.tab))+" ",1),_[2]||(_[2]=o("small",null,"(本页签尚未迁移到 Vue)",-1))]),o("p",Mm,[_[3]||(_[3]=it(" 迁移纪律:页签逐个搬,每搬一个就用 ",-1)),_[4]||(_[4]=o("code",null,"tools/render_parity.mjs",-1)),_[5]||(_[5]=it(" 与重构前页面 (现网 ",-1)),_[6]||(_[6]=o("code",null,"/detail/v2",-1)),it(")对拍文案/数值/类名序列,**通过后**才删对应的 Python 前端源码。 当前已迁移:"+d(p(En).join("、"))+"。 ",1)])])):bt("",!0)],64))}}),Tm=Ya(Sm,[["__scopeId","data-v-3ea55616"]]),Cm={key:1,class:"wrap"},Em={class:"top"},Fm={class:"right"},Om=["title"],Am=["title"],jm={class:"small muted",for:"win"},qm=["aria-label","value"],Dm=["label"],Pm=["value"],Rm=["label"],Lm=["value"],Im=["label"],Hm=["value"],Nm=["title"],Bm=["aria-label"],Wm=["aria-label"],Km={class:"tabs",id:"tabs"},Um=["onClick"],Vm={key:0,class:"todo"},zm={key:0,id:"root"},Gm={key:0,class:"panel mb",style:{"border-color":"var(--warning,#B7791F)"}},Ym={class:"small",style:{margin:"0",color:"var(--warning,#B7791F)"}},Jm={key:0,class:"hint",style:{padding:"0 18px"}},Xm={key:1,class:"hint",style:{padding:"0 18px",color:"var(--bad)"}},Zm={key:3,class:"card"},Qm=Ut({__name:"App",setup(t){const e=location.hash.replace("#",""),s=(e.match(/^tab=([a-z_]+)/)||[])[1]||"",n=(e.match(/^tab=[a-z_]+:([a-z_]+)/)||[])[1]||"",l=/\/detail\/v2\/?$/.test(location.pathname),a=xt(l||e==="workbench"||s?"workbench":"portal"),c=xt(!1);function r(q){a.value=q;try{location.hash=q==="portal"?"":q}catch{}}const u=xt("overview");s&&(u.value=s);const _=xt(null);n&&(_.value=n);const h=xt(null),m=xt(""),v=[["近30日","win.30d"],["近90日","win.90d"],["2026年","win.2026"],["2026H1","win.2026H1"],["2025H2","win.2025H2"],["全程","win.all"]],b={近30日:"30d",近90日:"90d","2026年":"2026","2026H1":"2026H1","2025H2":"2025H2",全程:"all"},E=G(()=>m.value||""),H=G(()=>/^\d{4}-\d{2}-\d{2}~\d{4}-\d{2}-\d{2}$/.test(E.value)),X=G(()=>((h.value||{}).all_months||[]).slice().reverse()),nt=xt(""),L=xt("");function K(q){const j=q.target.value;m.value=b[j]||j}function T(){nt.value&&L.value&&(m.value=nt.value+"~"+L.value)}const N=xt(!1),pt=xt(""),ot={system:["/api/maint_survey"],decision:["/api/ask_models"],report:["/api/ask_models","/api/facts"],generation:["/api/curves"]},ft=xt({}),ht=xt(null);async function jt(q){const j=ot[q]||[];for(const F of j){if(F==="/api/curves"){if(ht.value)continue}else if(ft.value[F]!==void 0)continue;try{const P=await(await fetch(F)).json();F==="/api/curves"?ht.value=P:ft.value={...ft.value,[F]:P}}catch(k){ft.value={...ft.value,[F]:{error:String(k?.message||k)}}}}}He(u,q=>{a.value==="workbench"&&jt(q)},{immediate:!0});async function O(){ft.value={},ht.value=null,await J(),await jt(u.value)}async function J(){N.value=!0,pt.value="",c.value=!1;const q=m.value?`?win=${encodeURIComponent(m.value)}`:"";try{const j=await fetch("/api/fleet"+q);if(j.ok){const F=await j.json();h.value=F,F?.win&&(m.value=F.win)}else h.value={},c.value=!0}catch{h.value={},c.value=!0}N.value=!1}He(m,q=>{q&&q!==h.value?.win&&J()});function Z(){u.value="overview",_.value=null,J()}return We(()=>{J(),window.addEventListener("hashchange",()=>{const q=location.hash.replace("#",""),j=(q.match(/^tab=([a-z_]+)/)||[])[1]||"";q==="workbench"||j?(a.value="workbench",j&&(u.value=j)):q||(a.value="portal")})}),(q,j)=>a.value==="portal"?(M(),Nt(Ja,{key:0})):(M(),C("div",Cm,[o("header",Em,[j[7]||(j[7]=o("span",{class:"mark"},"≋",-1)),j[8]||(j[8]=o("span",{class:"brand"},[it("观澜"),o("small",null,"WIND ASSET INTELLIGENCE")],-1)),o("div",Fm,[o("a",{class:"back-portal",href:"#",title:p(i)("ui.back_portal"),onClick:j[0]||(j[0]=Ti(F=>r("portal"),["prevent"]))},d(p(i)("ui.back_portal")),9,Om),o("button",{type:"button",class:"reselect",title:p(i)("ui.reselect"),onClick:Z},d(p(i)("ui.reselect")),9,Am),o("label",jm,d(p(i)("win.label")),1),o("select",{id:"win","aria-label":p(i)("win.label"),value:E.value,onChange:K},[o("optgroup",{label:p(i)("win.presets")},[(M(),C(ct,null,$t(v,([F,k])=>o("option",{key:F,value:F},d(p(i)(k)),9,Pm)),64))],8,Dm),H.value?(M(),C("optgroup",{key:0,label:p(i)("win.custom")},[o("option",{value:E.value},d(p(i)("win.custom_sel",{a:E.value.split("~")[0],b:E.value.split("~")[1]})),9,Lm)],8,Rm)):bt("",!0),X.value.length?(M(),C("optgroup",{key:1,label:p(i)("win.months")},[(M(!0),C(ct,null,$t(X.value,F=>(M(),C("option",{key:F,value:F},d(F),9,Hm))),128))],8,Im)):bt("",!0)],40,qm),o("span",{class:"winrng",title:p(i)("win.custom_hint")},[wn(o("input",{type:"date","aria-label":p(i)("win.from"),"onUpdate:modelValue":j[1]||(j[1]=F=>nt.value=F)},null,8,Bm),[[jl,nt.value]]),j[6]||(j[6]=o("span",{class:"muted"},"~",-1)),wn(o("input",{type:"date","aria-label":p(i)("win.to"),"onUpdate:modelValue":j[2]||(j[2]=F=>L.value=F)},null,8,Wm),[[jl,L.value]]),o("button",{type:"button",onClick:T},d(p(i)("win.apply")),1)],8,Nm)])]),o("nav",Km,[(M(!0),C(ct,null,$t(p(Ni),F=>(M(),C("button",{key:F,class:Qt({on:F===u.value}),onClick:k=>u.value=F},[it(d(p(i)("tab."+F)),1),p(En).includes(F)?bt("",!0):(M(),C("sup",Vm,"迁移中"))],10,Um))),128))]),a.value!=="portal"?(M(),C("main",zm,[c.value?(M(),C("div",Gm,[o("p",Ym,d(p(i)("app.data_missing")),1)])):bt("",!0),a.value==="workbench"?(M(),C(ct,{key:1},[N.value?(M(),C("p",Jm,"取数中(/api/fleet)…")):pt.value?(M(),C("p",Xm,"取数失败:"+d(pt.value),1)):h.value?(M(),Nt(Tm,{key:2,d:h.value,tab:u.value,sub:_.value,onTab:j[3]||(j[3]=F=>u.value=F),onSub:j[4]||(j[4]=F=>_.value=F),win:m.value,onWin:j[5]||(j[5]=F=>{m.value=F}),onReselect:Z,apis:ft.value,curves:ht.value,onRefresh:O},null,8,["d","tab","sub","win","apis","curves"])):bt("",!0)],64)):a.value==="smoke"?(M(),Nt(Hi,{key:2})):(M(),C("section",Zm,[...j[9]||(j[9]=[Wr("<h2>关于本前端</h2><ul><li>技术栈:<b>Vue 3 + Vite + TypeScript + Node.js</b>(用户令 2026-09-29)</li><li>与后端交互:只走网关一个源站,路径与形状以 <code>app_backEnd/app_backEnd_guanlan/contract/http_api_v1.json</code> 冻契约为准</li><li>数据来源:与重构前 <code>/detail/v2</code> 同一个接口 <code>/api/fleet?win=</code></li><li>迁移纪律:页签逐个搬,与重构前页面对拍通过后才删对应 Python 源码</li></ul>",2)])]))])):bt("",!0),j[10]||(j[10]=o("footer",{id:"foot",class:"small muted",style:{"margin-top":"36px"}},null,-1))]))}});Ai(Qm).mount("#app");
|