(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 i of l)if(i.type==="childList")for(const c of i.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&n(c)}).observe(document,{childList:!0,subtree:!0});function s(l){const i={};return l.integrity&&(i.integrity=l.integrity),l.referrerPolicy&&(i.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?i.credentials="include":l.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(l){if(l.ep)return;l.ep=!0;const i=s(l);fetch(l.href,i)}})();/** * @vue/shared v3.5.43 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/function kn(t){const e=Object.create(null);for(const s of t.split(","))e[s]=1;return s=>s in e}const ut={},Ee=[],le=()=>{},Ol=()=>!1,Rs=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&(t.charCodeAt(2)>122||t.charCodeAt(2)<97),js=t=>t.startsWith("onUpdate:"),Mt=Object.assign,Sn=(t,e)=>{const s=t.indexOf(e);s>-1&&t.splice(s,1)},Vi=Object.prototype.hasOwnProperty,lt=(t,e)=>Vi.call(t,e),z=Array.isArray,ye=t=>ps(t)==="[object Map]",ks=t=>ps(t)==="[object Set]",Vn=t=>ps(t)==="[object Date]",Y=t=>typeof t=="function",_t=t=>typeof t=="string",ie=t=>typeof t=="symbol",ct=t=>t!==null&&typeof t=="object",Dl=t=>(ct(t)||Y(t))&&Y(t.then)&&Y(t.catch),Ll=Object.prototype.toString,ps=t=>Ll.call(t),Gi=t=>ps(t).slice(8,-1),Pl=t=>ps(t)==="[object Object]",Mn=t=>_t(t)&&t!=="NaN"&&t[0]!=="-"&&""+parseInt(t,10)===t,Qe=kn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Is=t=>{const e=Object.create(null);return(s=>e[s]||(e[s]=t(s)))},zi=/-\w/g,Gt=Is(t=>t.replace(zi,e=>e.slice(1).toUpperCase())),Yi=/\B([A-Z])/g,Le=Is(t=>t.replace(Yi,"-$1").toLowerCase()),ql=Is(t=>t.charAt(0).toUpperCase()+t.slice(1)),Ys=Is(t=>t?`on${ql(t)}`:""),ne=(t,e)=>!Object.is(t,e),Js=(t,...e)=>{for(let s=0;s{Object.defineProperty(t,e,{configurable:!0,enumerable:!1,writable:n,value:s})},Ji=t=>{const e=parseFloat(t);return isNaN(e)?t:e};let Gn;const Fs=()=>Gn||(Gn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function gt(t){if(z(t)){const e={};for(let s=0;ss.startsWith("/*")?"":s).split(Zi).forEach(s=>{if(s){const n=s.split(Xi);n.length>1&&(e[n[0].trim()]=n[1].trim())}}),e}function Ct(t){let e="";if(_t(t))e=t;else if(z(t))for(let s=0;s!!(t&&t.__v_isRef===!0),d=t=>_t(t)?t:t==null?"":z(t)||ct(t)&&(t.toString===Ll||!Y(t.toString))?jl(t)?d(t.value):JSON.stringify(t,Il,2):String(t),Il=(t,e)=>jl(e)?Il(t,e.value):ye(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((s,[n,l],i)=>(s[Zs(n,i)+" =>"]=l,s),{})}:ks(e)?{[`Set(${e.size})`]:[...e.values()].map(s=>Zs(s))}:ie(e)?Zs(e):ct(e)&&!z(e)&&!Pl(e)?String(e):e,Zs=(t,e="")=>{var s;return ie(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 St;class ia{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&&St&&(St.active?(this.parent=St,this.index=(St.scopes||(St.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;e0&&--this._on===0){if(St===this)St=this.prevScope;else{let e=St;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;s0)return;if(es){let e=es;for(es=void 0;e;){const s=e.next;e.next=void 0,e.flags&=-9,e=s}}let t;for(;ts;){let e=ts;for(ts=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 Wl(t){for(let e=t.deps;e;e=e.nextDep)e.version=-1,e.prevActiveLink=e.dep.activeLink,e.dep.activeLink=e}function Kl(t){let e,s=t.depsTail,n=s;for(;n;){const l=n.prevDep;n.version===-1?(n===s&&(s=l),En(n),oa(n)):e=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=l}t.deps=e,t.depsTail=s}function pn(t){for(let e=t.deps;e;e=e.nextDep)if(e.dep.version!==e.version||e.dep.computed&&(Ul(e.dep.computed)||e.dep.version!==e.version))return!0;return!!t._dirty}function Ul(t){if(t.flags&4&&!(t.flags&16)||(t.flags&=-17,t.globalVersion===as)||(t.globalVersion=as,!t.isSSR&&t.flags&128&&(!t.deps&&!t._dirty||!pn(t))))return;t.flags|=2;const e=t.dep,s=ft,n=zt;ft=t,zt=!0;try{Wl(t);const l=t.fn(t._value);(e.version===0||ne(l,t._value))&&(t.flags|=128,t._value=l,e.version++)}catch(l){throw e.version++,l}finally{ft=s,zt=n,Kl(t),t.flags&=-3}}function En(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 i=s.computed.deps;i;i=i.nextDep)En(i,!0)}!e&&!--s.sc&&s.map&&s.map.delete(s.key)}function oa(t){const{prevDep:e,nextDep:s}=t;e&&(e.nextDep=s,t.prevDep=void 0),s&&(s.prevDep=e,t.nextDep=void 0)}let zt=!0;const Vl=[];function fe(){Vl.push(zt),zt=!1}function he(){const t=Vl.pop();zt=t===void 0?!0:t}function Jn(t){const{cleanup:e}=t;if(t.cleanup=void 0,e){const s=ft;ft=void 0;try{e()}finally{ft=s}}}let as=0;class ra{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 An{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(!ft||!zt||ft===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==ft)s=this.activeLink=new ra(ft,this),ft.deps?(s.prevDep=ft.depsTail,ft.depsTail.nextDep=s,ft.depsTail=s):ft.deps=ft.depsTail=s,Gl(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=ft.depsTail,s.nextDep=void 0,ft.depsTail.nextDep=s,ft.depsTail=s,ft.deps===s&&(ft.deps=n)}return s}trigger(e){this.version++,as++,this.notify(e)}notify(e){Tn();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Cn()}}}function Gl(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)Gl(n)}const s=t.dep.subs;s!==t&&(t.prevSub=s,s&&(s.nextSub=t)),t.dep.subs=t}}const fn=new WeakMap,Ae=Symbol(""),hn=Symbol(""),os=Symbol("");function Tt(t,e,s){if(zt&&ft){let n=fn.get(t);n||fn.set(t,n=new Map);let l=n.get(s);l||(n.set(s,l=new An),l.map=n,l.key=s),l.track()}}function de(t,e,s,n,l,i){const c=fn.get(t);if(!c){as++;return}const r=u=>{u&&u.trigger()};if(Tn(),e==="clear")c.forEach(r);else{const u=z(t),m=u&&Mn(s);if(u&&s==="length"){const f=Number(n);c.forEach((g,_)=>{(_==="length"||_===os||!ie(_)&&_>=f)&&r(g)})}else switch((s!==void 0||c.has(void 0))&&r(c.get(s)),m&&r(c.get(os)),e){case"add":u?m&&r(c.get("length")):(r(c.get(Ae)),ye(t)&&r(c.get(hn)));break;case"delete":u||(r(c.get(Ae)),ye(t)&&r(c.get(hn)));break;case"set":ye(t)&&r(c.get(Ae));break}}Cn()}function Re(t){const e=nt(t);return e===t||(Tt(e,"iterate",os),Wt(t))?e:ae(t)?$e(t)?e.map(s=>we(Kt(s))):e.map(we):e.map(Kt)}function Bs(t){return Tt(t=nt(t),"iterate",os),t}function ee(t,e){return ae(t)?we($e(t)?Kt(e):e):Kt(e)}const ca={__proto__:null,[Symbol.iterator](){return Qs(this,Symbol.iterator,t=>ee(this,t))},concat(...t){return Re(this).concat(...t.map(e=>z(e)?Re(e):e))},entries(){return Qs(this,"entries",t=>(t[1]=ee(this,t[1]),t))},every(t,e){return oe(this,"every",t,e,void 0,arguments)},filter(t,e){return oe(this,"filter",t,e,s=>s.map(n=>ee(this,n)),arguments)},find(t,e){return oe(this,"find",t,e,s=>ee(this,s),arguments)},findIndex(t,e){return oe(this,"findIndex",t,e,void 0,arguments)},findLast(t,e){return oe(this,"findLast",t,e,s=>ee(this,s),arguments)},findLastIndex(t,e){return oe(this,"findLastIndex",t,e,void 0,arguments)},forEach(t,e){return oe(this,"forEach",t,e,void 0,arguments)},includes(...t){return tn(this,"includes",t)},indexOf(...t){return tn(this,"indexOf",t)},join(t){return Re(this).join(t)},lastIndexOf(...t){return tn(this,"lastIndexOf",t)},map(t,e){return oe(this,"map",t,e,void 0,arguments)},pop(){return Ge(this,"pop")},push(...t){return Ge(this,"push",t)},reduce(t,...e){return Zn(this,"reduce",t,e)},reduceRight(t,...e){return Zn(this,"reduceRight",t,e)},shift(){return Ge(this,"shift")},some(t,e){return oe(this,"some",t,e,void 0,arguments)},splice(...t){return Ge(this,"splice",t)},toReversed(){return Re(this).toReversed()},toSorted(t){return Re(this).toSorted(t)},toSpliced(...t){return Re(this).toSpliced(...t)},unshift(...t){return Ge(this,"unshift",t)},values(){return Qs(this,"values",t=>ee(this,t))}};function Qs(t,e,s){const n=Bs(t),l=n[e]();return n!==t&&!Wt(t)&&(l._next=l.next,l.next=()=>{const i=l._next();return i.done||(i.value=s(i.value)),i}),l}const da=Array.prototype;function oe(t,e,s,n,l,i){const c=Bs(t),r=c!==t&&!Wt(t),u=c[e];if(u!==da[e]){const g=u.apply(t,i);return r?Kt(g):g}let m=s;c!==t&&(r?m=function(g,_){return s.call(this,ee(t,g),_,t)}:s.length>2&&(m=function(g,_){return s.call(this,g,_,t)}));const f=u.call(c,m,n);return r&&l?l(f):f}function Zn(t,e,s,n){const l=Bs(t),i=l!==t&&!Wt(t);let c=s,r=!1;l!==t&&(i?(r=n.length===0,c=function(m,f,g){return r&&(r=!1,m=ee(t,m)),s.call(this,m,ee(t,f),g,t)}):s.length>3&&(c=function(m,f,g){return s.call(this,m,f,g,t)}));const u=l[e](c,...n);return r?ee(t,u):u}function tn(t,e,s){const n=nt(t);Tt(n,"iterate",os);const l=n[e](...s);return(l===-1||l===!1)&&Ln(s[0])?(s[0]=nt(s[0]),n[e](...s)):l}function Ge(t,e,s=[]){fe(),Tn();const n=nt(t)[e].apply(t,s);return Cn(),he(),n}const ua=kn("__proto__,__v_isRef,__isVue"),zl=new Set(Object.getOwnPropertyNames(Symbol).filter(t=>t!=="arguments"&&t!=="caller").map(t=>Symbol[t]).filter(ie));function pa(t){ie(t)||(t=String(t));const e=nt(this);return Tt(e,"has",t),e.hasOwnProperty(t)}class Yl{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,i=this._isShallow;if(s==="__v_isReactive")return!l;if(s==="__v_isReadonly")return l;if(s==="__v_isShallow")return i;if(s==="__v_raw")return n===(l?i?wa:Ql:i?Xl:Zl).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const c=z(e);if(!l){let u;if(c&&(u=ca[s]))return u;if(s==="hasOwnProperty")return pa}const r=Reflect.get(e,s,Et(e)?e:n);if((ie(s)?zl.has(s):ua(s))||(l||Tt(e,"get",s),i))return r;if(Et(r)){const u=c&&Mn(s)?r:r.value;return l&&ct(u)?_n(u):u}return ct(r)?l?_n(r):fs(r):r}}class Jl extends Yl{constructor(e=!1){super(!1,e)}set(e,s,n,l){let i=e[s];const c=z(e)&&Mn(s);if(!this._isShallow){const m=ae(i);if(!Wt(n)&&!ae(n)&&(i=nt(i),n=nt(n)),!c&&Et(i)&&!Et(n))return m||(i.value=n),!0}const r=c?Number(s)t,vs=t=>Reflect.getPrototypeOf(t);function va(t,e,s){return function(...n){const l=this.__v_raw,i=nt(l),c=ye(i),r=t==="entries"||t===Symbol.iterator&&c,u=t==="keys"&&c,m=l[t](...n),f=s?mn:e?we:Kt;return!e&&Tt(i,"iterate",u?hn:Ae),Mt(Object.create(m),{next(){const{value:g,done:_}=m.next();return _?{value:g,done:_}:{value:r?[f(g[0]),f(g[1])]:f(g),done:_}}})}}function gs(t){return function(...e){return t==="delete"?!1:t==="clear"?void 0:this}}function ga(t,e){const s={get(l){const i=this.__v_raw,c=nt(i),r=nt(l);t||(ne(l,r)&&Tt(c,"get",l),Tt(c,"get",r));const{has:u}=vs(c),m=e?mn:t?we:Kt;if(u.call(c,l))return m(i.get(l));if(u.call(c,r))return m(i.get(r));i!==c&&i.get(l)},get size(){const l=this.__v_raw;return!t&&Tt(nt(l),"iterate",Ae),l.size},has(l){const i=this.__v_raw,c=nt(i),r=nt(l);return t||(ne(l,r)&&Tt(c,"has",l),Tt(c,"has",r)),l===r?i.has(l):i.has(l)||i.has(r)},forEach(l,i){const c=this,r=c.__v_raw,u=nt(r),m=e?mn:t?we:Kt;return!t&&Tt(u,"iterate",Ae),r.forEach((f,g)=>l.call(i,m(f),m(g),c))}};return Mt(s,t?{add:gs("add"),set:gs("set"),delete:gs("delete"),clear:gs("clear")}:{add(l){const i=nt(this),c=vs(i),r=nt(l),u=!e&&!Wt(l)&&!ae(l)?r:l;return c.has.call(i,u)||ne(l,u)&&c.has.call(i,l)||ne(r,u)&&c.has.call(i,r)||(i.add(u),de(i,"add",u,u)),this},set(l,i){!e&&!Wt(i)&&!ae(i)&&(i=nt(i));const c=nt(this),{has:r,get:u}=vs(c);let m=r.call(c,l);m||(l=nt(l),m=r.call(c,l));const f=u.call(c,l);return c.set(l,i),m?ne(i,f)&&de(c,"set",l,i):de(c,"add",l,i),this},delete(l){const i=nt(this),{has:c,get:r}=vs(i);let u=c.call(i,l);u||(l=nt(l),u=c.call(i,l)),r&&r.call(i,l);const m=i.delete(l);return u&&de(i,"delete",l,void 0),m},clear(){const l=nt(this),i=l.size!==0,c=l.clear();return i&&de(l,"clear",void 0,void 0),c}}),["keys","values","entries",Symbol.iterator].forEach(l=>{s[l]=va(l,t,e)}),s}function On(t,e){const s=ga(t,e);return(n,l,i)=>l==="__v_isReactive"?!t:l==="__v_isReadonly"?t:l==="__v_raw"?n:Reflect.get(lt(s,l)&&l in n?s:n,l,i)}const ba={get:On(!1,!1)},ya={get:On(!1,!0)},$a={get:On(!0,!1)};const Zl=new WeakMap,Xl=new WeakMap,Ql=new WeakMap,wa=new WeakMap;function xa(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function fs(t){return ae(t)?t:Dn(t,!1,ha,ba,Zl)}function ka(t){return Dn(t,!1,_a,ya,Xl)}function _n(t){return Dn(t,!0,ma,$a,Ql)}function Dn(t,e,s,n,l){if(!ct(t)||t.__v_raw&&!(e&&t.__v_isReactive)||t.__v_skip||!Object.isExtensible(t))return t;const i=l.get(t);if(i)return i;const c=xa(Gi(t));if(c===0)return t;const r=new Proxy(t,c===2?n:s);return l.set(t,r),r}function $e(t){return ae(t)?$e(t.__v_raw):!!(t&&t.__v_isReactive)}function ae(t){return!!(t&&t.__v_isReadonly)}function Wt(t){return!!(t&&t.__v_isShallow)}function Ln(t){return t?!!t.__v_raw:!1}function nt(t){const e=t&&t.__v_raw;return e?nt(e):t}function Sa(t){return!lt(t,"__v_skip")&&Object.isExtensible(t)&&Hl(t,"__v_skip",!0),t}const Kt=t=>ct(t)?fs(t):t,we=t=>ct(t)?_n(t):t;function Et(t){return t?t.__v_isRef===!0:!1}function vt(t){return Ma(t,!1)}function Ma(t,e){return Et(t)?t:new Ta(t,e)}class Ta{constructor(e,s){this.dep=new An,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?e:nt(e),this._value=s?e:Kt(e),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(e){const s=this._rawValue,n=this.__v_isShallow||Wt(e)||ae(e);e=n?e:nt(e),ne(e,s)&&(this._rawValue=e,this._value=n?e:Kt(e),this.dep.trigger())}}function p(t){return Et(t)?t.value:t}const Ca={get:(t,e,s)=>e==="__v_raw"?t:p(Reflect.get(t,e,s)),set:(t,e,s,n)=>{const l=t[e];return Et(l)&&!Et(s)?(l.value=s,!0):Reflect.set(t,e,s,n)}};function ti(t){return $e(t)?t:new Proxy(t,Ca)}class Ea{constructor(e,s,n){this.fn=e,this.setter=s,this._value=void 0,this.dep=new An(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=as-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&ft!==this)return Bl(this,!0),!0}get value(){const e=this.dep.track();return Ul(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}function Aa(t,e,s=!1){let n,l;return Y(t)?n=t:(n=t.get,l=t.set),new Ea(n,l,s)}const bs={},Ss=new WeakMap;let Te;function Oa(t,e=!1,s=Te){if(s){let n=Ss.get(s);n||Ss.set(s,n=[]),n.push(t)}}function Da(t,e,s=ut){const{immediate:n,deep:l,once:i,scheduler:c,augmentJob:r,call:u}=s,m=D=>l?D:Wt(D)||l===!1||l===0?ue(D,1):ue(D);let f,g,_,y,S=!1,k=!1;if(Et(t)?(g=()=>t.value,S=Wt(t)):$e(t)?(g=()=>m(t),S=!0):z(t)?(k=!0,S=t.some(D=>$e(D)||Wt(D)),g=()=>t.map(D=>{if(Et(D))return D.value;if($e(D))return m(D);if(Y(D))return u?u(D,2):D()})):Y(t)?e?g=u?()=>u(t,2):t:g=()=>{if(_){fe();try{_()}finally{he()}}const D=Te;Te=f;try{return u?u(t,3,[y]):t(y)}finally{Te=D}}:g=le,e&&l){const D=g,I=l===!0?1/0:l;g=()=>ue(D(),I)}const q=aa(),w=()=>{f.stop(),q&&q.active&&Sn(q.effects,f)};if(i&&e){const D=e;e=(...I)=>{const Z=D(...I);return w(),Z}}let M=k?new Array(t.length).fill(bs):bs;const R=D=>{if(!(!(f.flags&1)||!f.dirty&&!D))if(e){const I=f.run();if(D||l||S||(k?I.some((Z,G)=>ne(Z,M[G])):ne(I,M))){_&&_();const Z=Te;Te=f;try{const G=[I,M===bs?void 0:k&&M[0]===bs?[]:M,y];M=I,u?u(e,3,G):e(...G)}finally{Te=Z}}}else f.run()};return r&&r(R),f=new Fl(g),f.scheduler=c?()=>c(R,!1):R,y=D=>Oa(D,!1,f),_=f.onStop=()=>{const D=Ss.get(f);if(D){if(u)u(D,4);else for(const I of D)I();Ss.delete(f)}},e?n?R(!0):M=f.run():c?c(R.bind(null,!0),!0):f.run(),w.pause=f.pause.bind(f),w.resume=f.resume.bind(f),w.stop=w,w}function ue(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--,Et(t))ue(t.value,e,s);else if(z(t))for(let n=0;n{ue(n,e,s)});else if(Pl(t)){for(const n in t)ue(t[n],e,s);for(const n of Object.getOwnPropertySymbols(t))Object.prototype.propertyIsEnumerable.call(t,n)&&ue(t[n],e,s)}return t}/** * @vue/runtime-core v3.5.43 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/function hs(t,e,s,n){try{return n?t(...n):t()}catch(l){Ws(l,e,s)}}function Yt(t,e,s,n){if(Y(t)){const l=hs(t,e,s,n);return l&&Dl(l)&&l.catch(i=>{Ws(i,e,s)}),l}if(z(t)){const l=[];for(let i=0;i>>1,l=Ot[n],i=rs(l);i=rs(s)?Ot.push(t):Ot.splice(qa(e),0,t),t.flags|=1,si()}}function si(){Ms||(Ms=ei.then(li))}function Ha(t){if(!z(t))ge&&t.id===-1?ge.splice(je+1,0,t):t.flags&1||(Ie.push(t),t.flags|=1);else for(let e=0;ers(s)-rs(n));if(Ie.length=0,ge){for(let s=0;st.id==null?t.flags&2?-1:1/0:t.id;function li(t){try{for(te=0;te{n._d&&dl(-1);const i=Ts(e),c=Oe.length;let r;try{r=t(...l)}finally{for(let u=Oe.length;u>c;u--)Ei();Ts(i),n._d&&dl(1)}return r};return n._n=!0,n._c=!0,n._d=!0,n}function Qn(t,e){if(Bt===null)return t;const s=zs(Bt),n=t.dirs||(t.dirs=[]);for(let l=0;l1)return s&&Y(e)?e.call(n&&n.proxy):e}}const Ia=Symbol.for("v-scx"),Fa=()=>$s(Ia);function ss(t,e,s){return ai(t,e,s)}function ai(t,e,s=ut){const{immediate:n,deep:l,flush:i,once:c}=s,r=Mt({},s),u=e&&n||!e&&i!=="post";let m;if(us){if(i==="sync"){const y=Fa();m=y.__watcherHandles||(y.__watcherHandles=[])}else if(!u){const y=()=>{};return y.stop=le,y.resume=le,y.pause=le,y}}const f=Dt;r.call=(y,S,k)=>Yt(y,f,S,k);let g=!1;i==="post"?r.scheduler=y=>{Pt(y,f&&f.suspense)}:i!=="sync"&&(g=!0,r.scheduler=(y,S)=>{S?y():Pn(y)}),r.augmentJob=y=>{e&&(y.flags|=4),g&&(y.flags|=2,f&&(y.id=f.uid,y.i=f))};const _=Da(t,e,r);return us&&(m?m.push(_):u&&_()),_}function Na(t,e,s){const n=this.proxy,l=_t(t)?t.includes(".")?oi(n,t):()=>n[t]:t.bind(n,n);let i;Y(e)?i=e:(i=e.handler,s=e);const c=ms(this),r=ai(l,i.bind(n),s);return c(),r}function oi(t,e){const s=e.split(".");return()=>{let n=t;for(let l=0;lt.__isTeleport,en=Symbol("_leaveCb");function Wa(t){let e=t[0];if(t.length>1){for(const s of t)if(s.type!==me){e=s;break}}return e}function ri(t){if(!Hn(t))return Ks(t.type)&&t.children?Wa(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&&Y(s.default))return s.default()}}function qn(t,e){if(t.shapeFlag&6&&t.component){t.transition=e;const s=t.component.subTree;qn(Ks(s.type)&&ri(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 $t(t,e){return Y(t)?Mt({name:t.name},e,{setup:t}):t}function ci(t){t.ids=[t.ids[0]+t.ids[2]+++"-",0,0]}function tl(t,e){let s;return!!((s=Object.getOwnPropertyDescriptor(t,e))&&!s.configurable)}const Cs=new WeakMap;function ns(t,e,s,n,l=!1){if(z(t)){t.forEach((k,q)=>ns(k,e&&(z(e)?e[q]:e),s,n,l));return}if(ls(n)&&!l){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&ns(t,e,s,n.component.subTree);return}const i=n.shapeFlag&4?zs(n.component):n.el,c=l?null:i,{i:r,r:u}=t,m=e&&e.r,f=r.refs===ut?r.refs={}:r.refs,g=r.setupState,_=nt(g),y=g===ut?Ol:k=>tl(f,k)?!1:lt(_,k),S=(k,q)=>!(q&&tl(f,q));if(m!=null&&m!==u){if(el(e),_t(m))f[m]=null,y(m)&&(g[m]=null);else if(Et(m)){const k=e;S(m,k.k)&&(m.value=null),k.k&&(f[k.k]=null)}}if(Y(u))hs(u,r,12,[c,f]);else{const k=_t(u),q=Et(u);if(k||q){const w=()=>{if(t.f){const M=k?y(u)?g[u]:f[u]:S()||!t.k?u.value:f[t.k];if(l)z(M)&&Sn(M,i);else if(z(M))M.includes(i)||M.push(i);else if(k)f[u]=[i],y(u)&&(g[u]=f[u]);else{const R=[i];S(u,t.k)&&(u.value=R),t.k&&(f[t.k]=R)}}else k?(f[u]=c,y(u)&&(g[u]=c)):q&&(S(u,t.k)&&(u.value=c),t.k&&(f[t.k]=c))};if(c){const M=()=>{w(),Cs.delete(t)};M.id=-1,Cs.set(t,M),Pt(M,s)}else el(t),w()}}}function el(t){const e=Cs.get(t);e&&(e.flags|=8,Cs.delete(t))}Fs().requestIdleCallback;Fs().cancelIdleCallback;const ls=t=>!!t.type.__asyncLoader,Hn=t=>t.type.__isKeepAlive;function Ka(t,e){di(t,"a",e)}function Ua(t,e){di(t,"da",e)}function di(t,e,s=Dt){const n=t.__wdc||(t.__wdc=()=>{let l=s;for(;l;){if(l.isDeactivated)return;l=l.parent}return t()});if(Us(e,n,s),s){let l=s.parent;for(;l&&l.parent;)Hn(l.parent.vnode)&&Va(n,e,s,l),l=l.parent}}function Va(t,e,s,n){const l=Us(e,t,n,!0);Rn(()=>{Sn(n[e],l)},s)}function Us(t,e,s=Dt,n=!1){if(s){const l=s[t]||(s[t]=[]),i=e.__weh||(e.__weh=(...c)=>{fe();const r=ms(s),u=Yt(e,s,t,c);return r(),he(),u});return n?l.unshift(i):l.push(i),i}}const ve=t=>(e,s=Dt)=>{(!us||t==="sp")&&Us(t,(...n)=>e(...n),s)},Ga=ve("bm"),Be=ve("m"),za=ve("bu"),Ya=ve("u"),ui=ve("bum"),Rn=ve("um"),Ja=ve("sp"),Za=ve("rtg"),Xa=ve("rtc");function Qa(t,e=Dt){Us("ec",t,e)}const to=Symbol.for("v-ndc");function Q(t,e,s,n){let l;const i=s,c=z(t);if(c||_t(t)){const r=c&&$e(t);let u=!1,m=!1;r&&(u=!Wt(t),m=ae(t),t=Bs(t)),l=new Array(t.length);for(let f=0,g=t.length;fe(r,u,void 0,i));else{const r=Object.keys(t);l=new Array(r.length);for(let u=0,m=r.length;ut?Li(t)?zs(t):vn(t.parent):null,is=Mt(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=>vn(t.parent),$root:t=>vn(t.root),$host:t=>t.ce,$emit:t=>t.emit,$options:t=>fi(t),$forceUpdate:t=>t.f||(t.f=()=>{Pn(t.update)}),$nextTick:t=>t.n||(t.n=Pa.bind(t.proxy)),$watch:t=>Na.bind(t)}),sn=(t,e)=>t!==ut&&!t.__isScriptSetup&<(t,e),eo={get({_:t},e){if(e==="__v_skip")return!0;const{ctx:s,setupState:n,data:l,props:i,accessCache:c,type:r,appContext:u}=t;if(e[0]!=="$"){const _=c[e];if(_!==void 0)switch(_){case 1:return n[e];case 2:return l[e];case 4:return s[e];case 3:return i[e]}else{if(sn(n,e))return c[e]=1,n[e];if(l!==ut&<(l,e))return c[e]=2,l[e];if(lt(i,e))return c[e]=3,i[e];if(s!==ut&<(s,e))return c[e]=4,s[e];gn&&(c[e]=0)}}const m=is[e];let f,g;if(m)return e==="$attrs"&&Tt(t.attrs,"get",""),m(t);if((f=r.__cssModules)&&(f=f[e]))return f;if(s!==ut&<(s,e))return c[e]=4,s[e];if(g=u.config.globalProperties,lt(g,e))return g[e]},set({_:t},e,s){const{data:n,setupState:l,ctx:i}=t;return sn(l,e)?(l[e]=s,!0):n!==ut&<(n,e)?(n[e]=s,!0):lt(t.props,e)||e[0]==="$"&&e.slice(1)in t?!1:(i[e]=s,!0)},has({_:{data:t,setupState:e,accessCache:s,ctx:n,appContext:l,props:i,type:c}},r){let u;return!!(s[r]||t!==ut&&r[0]!=="$"&<(t,r)||sn(e,r)||lt(i,r)||lt(n,r)||lt(is,r)||lt(l.config.globalProperties,r)||(u=c.__cssModules)&&u[r])},defineProperty(t,e,s){return s.get!=null?t._.accessCache[e]=0:lt(s,"value")&&this.set(t,e,s.value,null),Reflect.defineProperty(t,e,s)}};function sl(t){return z(t)?t.reduce((e,s)=>(e[s]=null,e),{}):t}let gn=!0;function so(t){const e=fi(t),s=t.proxy,n=t.ctx;gn=!1,e.beforeCreate&&nl(e.beforeCreate,t,"bc");const{data:l,computed:i,methods:c,watch:r,provide:u,inject:m,created:f,beforeMount:g,mounted:_,beforeUpdate:y,updated:S,activated:k,deactivated:q,beforeDestroy:w,beforeUnmount:M,destroyed:R,unmounted:D,render:I,renderTracked:Z,renderTriggered:G,errorCaptured:et,serverPrefetch:yt,expose:It,inheritAttrs:xe,components:Pe,directives:Ft,filters:We}=e;if(m&&no(m,n,null),c)for(const pt in c){const at=c[pt];Y(at)&&(n[pt]=at.bind(s))}if(l){const pt=l.call(s,s);ct(pt)&&(t.data=fs(pt))}if(gn=!0,i)for(const pt in i){const at=i[pt],Ut=Y(at)?at.bind(s,s):Y(at.get)?at.get.bind(s,s):le,ke=!Y(at)&&Y(at.set)?at.set.bind(s):le,F=A({get:Ut,set:ke});Object.defineProperty(n,pt,{enumerable:!0,configurable:!0,get:()=>F.value,set:U=>F.value=U})}if(r)for(const pt in r)pi(r[pt],n,s,pt);if(u){const pt=Y(u)?u.call(s):u;Reflect.ownKeys(pt).forEach(at=>{ja(at,pt[at])})}f&&nl(f,t,"c");function wt(pt,at){z(at)?at.forEach(Ut=>pt(Ut.bind(s))):at&&pt(at.bind(s))}if(wt(Ga,g),wt(Be,_),wt(za,y),wt(Ya,S),wt(Ka,k),wt(Ua,q),wt(Qa,et),wt(Xa,Z),wt(Za,G),wt(ui,M),wt(Rn,D),wt(Ja,yt),z(It))if(It.length){const pt=t.exposed||(t.exposed={});It.forEach(at=>{Object.defineProperty(pt,at,{get:()=>s[at],set:Ut=>s[at]=Ut,enumerable:!0})})}else t.exposed||(t.exposed={});I&&t.render===le&&(t.render=I),xe!=null&&(t.inheritAttrs=xe),Pe&&(t.components=Pe),Ft&&(t.directives=Ft),yt&&ci(t)}function no(t,e,s=le){z(t)&&(t=bn(t));for(const n in t){const l=t[n];let i;ct(l)?"default"in l?i=$s(l.from||n,l.default,!0):i=$s(l.from||n):i=$s(l),Et(i)?Object.defineProperty(e,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:c=>i.value=c}):e[n]=i}}function nl(t,e,s){Yt(z(t)?t.map(n=>n.bind(e.proxy)):t.bind(e.proxy),e,s)}function pi(t,e,s,n){let l=n.includes(".")?oi(s,n):()=>s[n];if(_t(t)){const i=e[t];Y(i)&&ss(l,i)}else if(Y(t))ss(l,t.bind(s));else if(ct(t))if(z(t))t.forEach(i=>pi(i,e,s,n));else{const i=Y(t.handler)?t.handler.bind(s):e[t.handler];Y(i)&&ss(l,i,t)}}function fi(t){const e=t.type,{mixins:s,extends:n}=e,{mixins:l,optionsCache:i,config:{optionMergeStrategies:c}}=t.appContext,r=i.get(e);let u;return r?u=r:!l.length&&!s&&!n?u=e:(u={},l.length&&l.forEach(m=>Es(u,m,c,!0)),Es(u,e,c)),ct(e)&&i.set(e,u),u}function Es(t,e,s,n=!1){const{mixins:l,extends:i}=e;i&&Es(t,i,s,!0),l&&l.forEach(c=>Es(t,c,s,!0));for(const c in e)if(!(n&&c==="expose")){const r=lo[c]||s&&s[c];t[c]=r?r(t[c],e[c]):e[c]}return t}const lo={data:ll,props:il,emits:il,methods:Ze,computed:Ze,beforeCreate:At,created:At,beforeMount:At,mounted:At,beforeUpdate:At,updated:At,beforeDestroy:At,beforeUnmount:At,destroyed:At,unmounted:At,activated:At,deactivated:At,errorCaptured:At,serverPrefetch:At,components:Ze,directives:Ze,watch:ao,provide:ll,inject:io};function ll(t,e){return e?t?function(){return Mt(Y(t)?t.call(this,this):t,Y(e)?e.call(this,this):e)}:e:t}function io(t,e){return Ze(bn(t),bn(e))}function bn(t){if(z(t)){const e={};for(let s=0;se==="modelValue"||e==="model-value"?t.modelModifiers:t[`${e}Modifiers`]||t[`${Gt(e)}Modifiers`]||t[`${Le(e)}Modifiers`];function uo(t,e,...s){if(t.isUnmounted)return;const n=t.vnode.props||ut;let l=s;const i=e.startsWith("update:"),c=i&&co(n,e.slice(7));c&&(c.trim&&(l=s.map(f=>_t(f)?f.trim():f)),c.number&&(l=l.map(Ji)));let r,u=n[r=Ys(e)]||n[r=Ys(Gt(e))];!u&&i&&(u=n[r=Ys(Le(e))]),u&&Yt(u,t,6,l);const m=n[r+"Once"];if(m){if(!t.emitted)t.emitted={};else if(t.emitted[r])return;t.emitted[r]=!0,Yt(m,t,6,l)}}const po=new WeakMap;function mi(t,e,s=!1){const n=s?po:e.emitsCache,l=n.get(t);if(l!==void 0)return l;const i=t.emits;let c={},r=!1;if(!Y(t)){const u=m=>{const f=mi(m,e,!0);f&&(r=!0,Mt(c,f))};!s&&e.mixins.length&&e.mixins.forEach(u),t.extends&&u(t.extends),t.mixins&&t.mixins.forEach(u)}return!i&&!r?(ct(t)&&n.set(t,null),null):(z(i)?i.forEach(u=>c[u]=null):Mt(c,i),ct(t)&&n.set(t,c),c)}function Vs(t,e){return!t||!Rs(e)?!1:(e=e.slice(2),e=e==="Once"?e:e.replace(/Once$/,""),lt(t,e[0].toLowerCase()+e.slice(1))||lt(t,Le(e))||lt(t,e))}function al(t){const{type:e,vnode:s,proxy:n,withProxy:l,propsOptions:[i],slots:c,attrs:r,emit:u,render:m,renderCache:f,props:g,data:_,setupState:y,ctx:S,inheritAttrs:k}=t,q=Ts(t);let w,M;try{if(s.shapeFlag&4){const D=l||n,I=D;w=se(m.call(I,D,f,g,y,_,S)),M=r}else{const D=e;w=se(D.length>1?D(g,{attrs:r,slots:c,emit:u}):D(g,null)),M=e.props?r:fo(r)}}catch(D){Oe.length=0,Ws(D,t,1),w=ht(me)}let R=w;if(M&&k!==!1){const D=Object.keys(M),{shapeFlag:I}=R;D.length&&I&7&&(i&&D.some(js)&&(M=ho(M,i)),R=Ne(R,M,!1,!0))}if(s.dirs&&(R=Ne(R,null,!1,!0),R.dirs=R.dirs?R.dirs.concat(s.dirs):s.dirs),s.transition){const D=Ks(R.type)&&ri(R)||R;qn(D,s.transition)}return w=R,Ts(q),w}const fo=t=>{let e;for(const s in t)(s==="class"||s==="style"||Rs(s))&&((e||(e={}))[s]=t[s]);return e},ho=(t,e)=>{const s={};for(const n in t)(!js(n)||!(n.slice(9)in e))&&(s[n]=t[n]);return s};function mo(t,e,s){const{props:n,children:l,component:i}=t,{props:c,children:r,patchFlag:u}=e,m=i.emitsOptions;if(e.dirs||e.transition)return!0;if(s&&u>=0){if(u&1024)return!0;if(u&16)return n?ol(n,c,m):!!c;if(u&8){const f=e.dynamicProps;for(let g=0;gObject.create(vi),bi=t=>Object.getPrototypeOf(t)===vi;function vo(t,e,s,n=!1){const l={},i=gi();t.propsDefaults=Object.create(null),yi(t,e,l,i);for(const c in t.propsOptions[0])c in l||(l[c]=void 0);s?t.props=n?l:ka(l):t.type.props?t.props=l:t.props=i,t.attrs=i}function go(t,e,s,n){const{props:l,attrs:i,vnode:{patchFlag:c}}=t,r=nt(l),[u]=t.propsOptions;let m=!1;if((n||c>0)&&!(c&16)){if(c&8){const f=t.vnode.dynamicProps;for(let g=0;g{u=!0;const[_,y]=$i(g,e,!0);Mt(c,_),y&&r.push(...y)};!s&&e.mixins.length&&e.mixins.forEach(f),t.extends&&f(t.extends),t.mixins&&t.mixins.forEach(f)}if(!i&&!u)return ct(t)&&n.set(t,Ee),Ee;if(z(i))for(let f=0;ft==="_"||t==="_ctx"||t==="$stable",In=t=>z(t)?t.map(se):[se(t)],yo=(t,e,s)=>{if(e._n)return e;const n=Ra((...l)=>In(e(...l)),s);return n._c=!1,n},wi=(t,e,s)=>{const n=t._ctx;for(const l in t){if(jn(l))continue;const i=t[l];if(Y(i))e[l]=yo(l,i,n);else if(i!=null){const c=In(i);e[l]=()=>c}}},xi=(t,e)=>{const s=In(e);t.slots.default=()=>s},ki=(t,e,s)=>{for(const n in e)(s||!jn(n))&&(t[n]=e[n])},$o=(t,e,s)=>{const n=t.slots=gi();if(t.vnode.shapeFlag&32){const l=e._;l?(ki(n,e,s),s&&Hl(n,"_",l,!0)):wi(e,n)}else e&&xi(t,e)},wo=(t,e,s)=>{const{vnode:n,slots:l}=t;let i=!0,c=ut;if(n.shapeFlag&32){const r=e._;r?s&&r===1?i=!1:ki(l,e,s):(i=!e.$stable,wi(e,l)),c=e}else e&&(xi(t,e),c={default:1});if(i)for(const r in l)!jn(r)&&c[r]==null&&delete l[r]},Pt=To;function xo(t){return ko(t)}function ko(t,e){const s=Fs();s.__VUE__=!0;const{insert:n,remove:l,patchProp:i,createElement:c,createText:r,createComment:u,setText:m,setElementText:f,parentNode:g,nextSibling:_,setScopeId:y=le,insertStaticContent:S}=t,k=(h,v,x,O=null,T=null,E=null,H=void 0,P=null,L=!!v.dynamicChildren)=>{if(h===v)return;h&&!ze(h,v)&&(O=Vt(h),U(h,T,E,!0),h=null),v.patchFlag===-2&&(L=!1,v.dynamicChildren=null),v.dynamicChildren&&h&&h.dynamicChildren&&h.dynamicChildren.hasOnce&&(v.dynamicChildren===Ee&&(v.dynamicChildren=[]),v.dynamicChildren.hasOnce=!0);const{type:C,ref:K,shapeFlag:j}=v;switch(C){case Gs:q(h,v,x,O);break;case me:w(h,v,x,O);break;case ws:h==null&&M(v,x,O,H);break;case N:Pe(h,v,x,O,T,E,H,P,L);break;default:j&1?I(h,v,x,O,T,E,H,P,L):j&6?Ft(h,v,x,O,T,E,H,P,L):(j&64||j&128)&&C.process(h,v,x,O,T,E,H,P,L,He)}K!=null&&T?ns(K,h&&h.ref,E,v||h,!v):K==null&&h&&h.ref!=null&&ns(h.ref,null,E,h,!0)},q=(h,v,x,O)=>{if(h==null)n(v.el=r(v.children),x,O);else{const T=v.el=h.el;v.children!==h.children&&m(T,v.children)}},w=(h,v,x,O)=>{h==null?n(v.el=u(v.children||""),x,O):v.el=h.el},M=(h,v,x,O)=>{[h.el,h.anchor]=S(h.children,v,x,O,h.el,h.anchor)},R=({el:h,anchor:v},x,O)=>{let T;for(;h&&h!==v;)T=_(h),n(h,x,O),h=T;n(v,x,O)},D=({el:h,anchor:v})=>{let x;for(;h&&h!==v;)x=_(h),l(h),h=x;l(v)},I=(h,v,x,O,T,E,H,P,L)=>{if(v.type==="svg"?H="svg":v.type==="math"&&(H="mathml"),h==null)Z(v,x,O,T,E,H,P,L);else{const C=h.el&&h.el._isVueCE?h.el:null;try{C&&C._beginPatch(),yt(h,v,T,E,H,P,L)}finally{C&&C._endPatch()}}},Z=(h,v,x,O,T,E,H,P)=>{let L,C;const{props:K,shapeFlag:j,transition:B,dirs:V}=h;if(L=h.el=c(h.type,E,K&&K.is,K),j&8?f(L,h.children):j&16&&et(h.children,L,null,O,T,nn(h,E),H,P),V&&Se(h,null,O,"created"),G(L,h,h.scopeId,H,O),K){for(const dt in K)dt!=="value"&&!Qe(dt)&&i(L,dt,null,K[dt],E,O);"value"in K&&i(L,"value",null,K.value,E),(C=K.onVnodeBeforeMount)&&Qt(C,O,h)}V&&Se(h,null,O,"beforeMount");const tt=So(T,B);tt&&B.beforeEnter(L),n(L,v,x),((C=K&&K.onVnodeMounted)||tt||V)&&Pt(()=>{try{C&&Qt(C,O,h),tt&&B.enter(L),V&&Se(h,null,O,"mounted")}finally{}},T)},G=(h,v,x,O,T)=>{if(x&&y(h,x),O)for(let E=0;E{for(let C=L;C{const P=v.el=h.el;let{patchFlag:L,dynamicChildren:C,dirs:K}=v;L|=h.patchFlag&16;const j=h.props||ut,B=v.props||ut;let V;if(x&&Me(x,!1),(V=B.onVnodeBeforeUpdate)&&Qt(V,x,v,h),K&&Se(v,h,x,"beforeUpdate"),x&&Me(x,!0),C&&(!h.dynamicChildren||h.dynamicChildren.length!==C.length)&&(L=0,H=!1,C=null),(j.innerHTML&&B.innerHTML==null||j.textContent&&B.textContent==null)&&f(P,""),C?It(h.dynamicChildren,C,P,x,O,nn(v,T),E):H||at(h,v,P,null,x,O,nn(v,T),E,!1),L>0){if(L&16)xe(P,j,B,x,T);else if(L&2&&j.class!==B.class&&i(P,"class",null,B.class,T),L&4&&i(P,"style",j.style,B.style,T),L&8){const tt=v.dynamicProps;for(let dt=0;dt{V&&Qt(V,x,v,h),K&&Se(v,h,x,"updated")},O)},It=(h,v,x,O,T,E,H)=>{for(let P=0;P{if(v!==x){if(v!==ut)for(const E in v)!Qe(E)&&!(E in x)&&i(h,E,v[E],null,T,O);for(const E in x){if(Qe(E))continue;const H=x[E],P=v[E];H!==P&&E!=="value"&&i(h,E,P,H,T,O)}"value"in x&&i(h,"value",v.value,x.value,T)}},Pe=(h,v,x,O,T,E,H,P,L)=>{const C=v.el=h?h.el:r(""),K=v.anchor=h?h.anchor:r("");let{patchFlag:j,dynamicChildren:B,slotScopeIds:V}=v;V&&(P=P?P.concat(V):V),h==null?(n(C,x,O),n(K,x,O),et(v.children||[],x,K,T,E,H,P,L)):j>0&&j&64&&B&&h.dynamicChildren&&h.dynamicChildren.length===B.length?(It(h.dynamicChildren,B,x,T,E,H,P),(v.key!=null||T&&v===T.subTree)&&Si(h,v,!0)):at(h,v,x,K,T,E,H,P,L)},Ft=(h,v,x,O,T,E,H,P,L)=>{v.slotScopeIds=P,h==null?v.shapeFlag&512?T.ctx.activate(v,x,O,H,L):We(v,x,O,T,E,H,L):_s(h,v,L)},We=(h,v,x,O,T,E,H)=>{const P=h.component=Po(h,O,T);if(Hn(h)&&(P.ctx.renderer=He),Ho(P,!1,H),P.asyncDep){if(T&&T.registerDep(P,wt,H),!h.el){const L=P.subTree=ht(me);w(null,L,v,x),h.placeholder=L.el}}else wt(P,h,v,x,T,E,H)},_s=(h,v,x)=>{const O=v.component=h.component;if(mo(h,v,x))if(O.asyncDep&&!O.asyncResolved){v.el=h.el,pt(O,v,x);return}else O.next=v,O.update();else v.el=h.el,O.vnode=v},wt=(h,v,x,O,T,E,H)=>{const P=()=>{if(h.isMounted){let{next:j,bu:B,u:V,parent:tt,vnode:dt}=h;{const Zt=Mi(h);if(Zt){j&&(j.el=dt.el,pt(h,j,H)),Zt.asyncDep.then(()=>{Pt(()=>{h.isUnmounted||C()},T)});return}}let ot=j,bt;Me(h,!1),j?(j.el=dt.el,pt(h,j,H)):j=dt,B&&Js(B),(bt=j.props&&j.props.onVnodeBeforeUpdate)&&Qt(bt,tt,j,dt),Me(h,!0);const xt=al(h),Jt=h.subTree;h.subTree=xt,k(Jt,xt,g(Jt.el),Vt(Jt),h,T,E),j.el=xt.el,ot===null&&_o(h,xt.el),V&&Pt(V,T),(bt=j.props&&j.props.onVnodeUpdated)&&Pt(()=>Qt(bt,tt,j,dt),T)}else{let j;const{el:B,props:V}=v,{bm:tt,m:dt,parent:ot,root:bt,type:xt}=h,Jt=ls(v);Me(h,!1),tt&&Js(tt),!Jt&&(j=V&&V.onVnodeBeforeMount)&&Qt(j,ot,v),Me(h,!0);{bt.ce&&bt.ce._hasShadowRoot()&&bt.ce._injectChildStyle(xt,h.parent?h.parent.type:void 0);const Zt=h.subTree=al(h);k(null,Zt,x,O,h,T,E),v.el=Zt.el}if(dt&&Pt(dt,T),!Jt&&(j=V&&V.onVnodeMounted)){const Zt=v;Pt(()=>Qt(j,ot,Zt),T)}(v.shapeFlag&256||ot&&ls(ot.vnode)&&ot.vnode.shapeFlag&256)&&h.a&&Pt(h.a,T),h.isMounted=!0,v=x=O=null}};h.scope.on();const L=h.effect=new Fl(P);h.scope.off();const C=h.update=L.run.bind(L),K=h.job=L.runIfDirty.bind(L);K.i=h,K.id=h.uid,L.scheduler=()=>Pn(K),Me(h,!0),C()},pt=(h,v,x)=>{v.component=h;const O=h.vnode.props;h.vnode=v,h.next=null,go(h,v.props,O,x),wo(h,v.children,x),fe(),Xn(h),he()},at=(h,v,x,O,T,E,H,P,L=!1)=>{const C=h&&h.children,K=h?h.shapeFlag:0,j=v.children,{patchFlag:B,shapeFlag:V}=v;if(B>0){if(B&128){ke(C,j,x,O,T,E,H,P,L);return}else if(B&256){Ut(C,j,x,O,T,E,H,P,L);return}}V&8?(K&16&&Lt(C,T,E),j!==C&&f(x,j)):K&16?V&16?ke(C,j,x,O,T,E,H,P,L):Lt(C,T,E,!0):(K&8&&f(x,""),V&16&&et(j,x,O,T,E,H,P,L))},Ut=(h,v,x,O,T,E,H,P,L)=>{h=h||Ee,v=v||Ee;const C=h.length,K=v.length,j=Math.min(C,K);let B;for(B=0;BK?Lt(h,T,E,!0,!1,j):et(v,x,O,T,E,H,P,L,j)},ke=(h,v,x,O,T,E,H,P,L)=>{let C=0;const K=v.length;let j=h.length-1,B=K-1;for(;C<=j&&C<=B;){const V=h[C],tt=v[C]=L?ce(v[C]):se(v[C]);if(ze(V,tt))k(V,tt,x,null,T,E,H,P,L);else break;C++}for(;C<=j&&C<=B;){const V=h[j],tt=v[B]=L?ce(v[B]):se(v[B]);if(ze(V,tt))k(V,tt,x,null,T,E,H,P,L);else break;j--,B--}if(C>j){if(C<=B){const V=B+1,tt=VB)for(;C<=j;)U(h[C],T,E,!0),C++;else{const V=C,tt=C,dt=new Map;for(C=tt;C<=B;C++){const Rt=v[C]=L?ce(v[C]):se(v[C]);Rt.key!=null&&dt.set(Rt.key,C)}let ot,bt=0;const xt=B-tt+1;let Jt=!1,Zt=0;const Ve=new Array(xt);for(C=0;C=xt){U(Rt,T,E,!0);continue}let Xt;if(Rt.key!=null)Xt=dt.get(Rt.key);else for(ot=tt;ot<=B;ot++)if(Ve[ot-tt]===0&&ze(Rt,v[ot])){Xt=ot;break}Xt===void 0?U(Rt,T,E,!0):(Ve[Xt-tt]=C+1,Xt>=Zt?Zt=Xt:Jt=!0,k(Rt,v[Xt],x,null,T,E,H,P,L),bt++)}const Wn=Jt?Mo(Ve):Ee;for(ot=Wn.length-1,C=xt-1;C>=0;C--){const Rt=tt+C,Xt=v[Rt],Kn=v[Rt+1],Un=Rt+1{const{el:E,type:H,transition:P,children:L,shapeFlag:C}=h;if(C&6){F(h.component.subTree,v,x,O);return}if(C&128){h.suspense.move(v,x,O);return}if(C&64){H.move(h,v,x,He);return}if(H===N){n(E,v,x);for(let j=0;jP.enter(E),T));else{const{leave:j,delayLeave:B,afterLeave:V}=P,tt=()=>{h.ctx.isUnmounted?l(E):n(E,v,x)},dt=()=>{const ot=E._isLeaving||!!E[en];E._isLeaving&&E[en](!0),P.persisted&&!ot?tt():j(E,()=>{tt(),V&&V()})};B?B(E,tt,dt):dt()}else n(E,v,x)},U=(h,v,x,O=!1,T=!1)=>{const{type:E,props:H,ref:P,children:L,dynamicChildren:C,shapeFlag:K,patchFlag:j,dirs:B,cacheIndex:V,memo:tt}=h;if((j===-2||C&&C.hasOnce)&&(T=!1),P!=null&&(fe(),ns(P,null,x,h,!0),he()),V!=null&&(!h.ctx||h.ctx===v)&&(v.renderCache[V]=void 0),K&256){v.ctx.deactivate(h);return}const dt=K&1&&B,ot=!ls(h);let bt;if(ot&&(bt=H&&H.onVnodeBeforeUnmount)&&Qt(bt,v,h),K&6)qe(h.component,x,O);else{if(K&128){h.suspense.unmount(x,O);return}dt&&Se(h,null,v,"beforeUnmount"),K&64?h.type.remove(h,v,x,He,O):C&&!C.hasOnce&&(E!==N||j>0&&j&64)?Lt(C,v,x,!1,!0):(E===N&&j&384||!T&&K&16)&&Lt(L,v,x),O&&X(h)}const xt=tt!=null&&V==null;(ot&&(bt=H&&H.onVnodeUnmounted)||dt||xt)&&Pt(()=>{bt&&Qt(bt,v,h),dt&&Se(h,null,v,"unmounted"),xt&&(h.el=null)},x)},X=h=>{const{type:v,el:x,anchor:O,transition:T}=h;if(v===N){Nt(x,O);return}if(v===ws){D(h),T&&!T.persisted&&T.afterLeave&&T.afterLeave();return}const E=()=>{l(x),T&&!T.persisted&&T.afterLeave&&T.afterLeave()};if(h.shapeFlag&1&&T&&!T.persisted){const{leave:H,delayLeave:P}=T,L=()=>H(x,E);P?P(h.el,E,L):L()}else E()},Nt=(h,v)=>{let x;for(;h!==v;)x=_(h),l(h),h=x;l(v)},qe=(h,v,x)=>{const{bum:O,scope:T,job:E,subTree:H,um:P,m:L,a:C}=h;cl(L),cl(C),O&&Js(O),T.stop(),E?(E.flags|=8,U(H,h,v,x)):h.vnode.el&&H&&(H.transition=h.vnode.transition,U(H,h,v,x)),P&&Pt(P,v),Pt(()=>{h.isUnmounted=!0},v)},Lt=(h,v,x,O=!1,T=!1,E=0)=>{for(let H=E;H{if(h.shapeFlag&6)return Vt(h.component.subTree);if(h.shapeFlag&128)return h.suspense.next();const v=_(h.anchor||h.el),x=v&&v[Ba];return x?_(x):v};let Ke=!1;const Ue=(h,v,x)=>{let O;h==null?v._vnode&&(U(v._vnode,null,null,!0),O=v._vnode.component):k(v._vnode||null,h,v,null,null,null,x),v._vnode=h,Ke||(Ke=!0,Xn(O),ni(),Ke=!1)},He={p:k,um:U,m:F,r:X,mt:We,mc:et,pc:at,pbc:It,n:Vt,o:t};return{render:Ue,hydrate:void 0,createApp:ro(Ue)}}function nn({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 Me({effect:t,job:e},s){s?(t.flags|=32,e.flags|=4):(t.flags&=-33,e.flags&=-5)}function So(t,e){return(!t||t&&!t.pendingBranch)&&e&&!e.persisted}function Si(t,e,s=!1){const n=t.children,l=e.children;if(z(n)&&z(l))for(let i=0;i>1,t[s[r]]0&&(e[n]=s[i-1]),s[i]=n)}}for(i=s.length,c=s[i-1];i-- >0;)s[i]=c,c=e[c];return s}function Mi(t){const e=t.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:Mi(e)}function cl(t){if(t)for(let e=0;et.__isSuspense;function To(t,e){e&&e.pendingBranch?z(t)?e.effects.push(...t):e.effects.push(t):Ha(t)}const N=Symbol.for("v-fgt"),Gs=Symbol.for("v-txt"),me=Symbol.for("v-cmt"),ws=Symbol.for("v-stc"),Oe=[];let jt=null;function b(t=!1){Oe.push(jt=t?null:[])}function Ei(){Oe.pop(),jt=Oe[Oe.length-1]||null}let cs=1;function dl(t,e=!1){cs+=t,t<0&&jt&&e&&(jt.hasOnce=!0)}function Ai(t){return t.dynamicChildren=cs>0?jt||Ee:null,Ei(),cs>0&&jt&&jt.push(t),t}function $(t,e,s,n,l,i){return Ai(a(t,e,s,n,l,i,!0))}function kt(t,e,s,n,l){return Ai(ht(t,e,s,n,l,!0))}function Oi(t){return t?t.__v_isVNode===!0:!1}function ze(t,e){return t.type===e.type&&t.key===e.key}const Di=({key:t})=>t??null,xs=({ref:t,ref_key:e,ref_for:s})=>(typeof t=="number"&&(t=""+t),t!=null?_t(t)||Et(t)||Y(t)?{i:Bt,r:t,k:e,f:!!s}:t:null);function a(t,e=null,s=null,n=0,l=null,i=t===N?0:1,c=!1,r=!1){const u={__v_isVNode:!0,__v_skip:!0,type:t,props:e,key:e&&Di(e),ref:e&&xs(e),scopeId:ii,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:i,patchFlag:n,dynamicProps:l,dynamicChildren:null,appContext:null,ctx:Bt};return r?(As(u,s),i&128&&t.normalize(u)):s&&(u.shapeFlag|=_t(s)?8:16),cs>0&&!c&&jt&&(u.patchFlag>0||i&6)&&u.patchFlag!==32&&jt.push(u),u}const ht=Co;function Co(t,e=null,s=null,n=0,l=null,i=!1){if((!t||t===to)&&(t=me),Oi(t)){const r=Ne(t,e,!0);return s&&As(r,s),cs>0&&!i&&jt&&(r.shapeFlag&6?jt[jt.indexOf(t)]=r:jt.push(r)),r.patchFlag=-2,r}if(Fo(t)&&(t=t.__vccOpts),e){e=Eo(e);let{class:r,style:u}=e;r&&!_t(r)&&(e.class=Ct(r)),ct(u)&&(Ln(u)&&!z(u)&&(u=Mt({},u)),e.style=gt(u))}const c=_t(t)?1:Ci(t)?128:Ks(t)?64:ct(t)?4:Y(t)?2:0;return a(t,e,s,n,l,c,i,!0)}function Eo(t){return t?Ln(t)||bi(t)?Mt({},t):t:null}function Ne(t,e,s=!1,n=!1){const{props:l,ref:i,patchFlag:c,children:r,transition:u}=t,m=e?Oo(l||{},e):l,f={__v_isVNode:!0,__v_skip:!0,type:t.type,props:m,key:m&&Di(m),ref:e&&e.ref?s&&i?z(i)?i.concat(xs(e)):[i,xs(e)]:xs(e):i,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!==N?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&&Ne(t.ssContent),ssFallback:t.ssFallback&&Ne(t.ssFallback),placeholder:t.placeholder,el:t.el,anchor:t.anchor,ctx:t.ctx,ce:t.ce,cacheIndex:t.cacheIndex};return u&&n&&qn(f,u.clone(f)),f}function W(t=" ",e=0){return ht(Gs,null,t,e)}function Ao(t,e){const s=ht(ws,null,t);return s.staticCount=e,s}function st(t="",e=!1){return e?(b(),kt(me,null,t)):ht(me,null,t)}function se(t){return t==null||typeof t=="boolean"?ht(me):z(t)?ht(N,null,t.slice()):Oi(t)?ce(t):ht(Gs,null,String(t))}function ce(t){return t.el===null&&t.patchFlag!==-1||t.memo?t:Ne(t)}function As(t,e){let s=0;const{shapeFlag:n}=t;if(e==null)e=null;else if(z(e))s=16;else if(typeof e=="object")if(n&65){const l=e.default;l&&(l._c&&(l._d=!1),As(t,l()),l._c&&(l._d=!0));return}else{s=32;const l=e._;!l&&!bi(e)?e._ctx=Bt:l===3&&Bt&&(Bt.slots._===1?e._=1:(e._=2,t.patchFlag|=1024))}else if(Y(e)){if(n&65){As(t,{default:e});return}e={default:e,_ctx:Bt},s=32}else e=String(e),n&64?(s=16,e=[W(e)]):s=8;t.children=e,t.shapeFlag|=s}function Oo(...t){const e={};for(let s=0;sDt||Bt;let Os,ds;{const t=Fs(),e=(s,n)=>{let l;return(l=t[s])||(l=t[s]=[]),l.push(n),i=>{l.length>1?l.forEach(c=>c(i)):l[0](i)}};Os=e("__VUE_INSTANCE_SETTERS__",s=>Dt=s),ds=e("__VUE_SSR_SETTERS__",s=>us=s)}const ms=t=>{const e=Dt;return Os(t),t.scope.on(),()=>{t.scope.off(),Os(e)}},ul=()=>{Dt&&Dt.scope.off(),Os(null)};function Li(t){return t.vnode.shapeFlag&4}let us=!1;function Ho(t,e=!1,s=!1){e&&ds(e);const{props:n,children:l}=t.vnode,i=Li(t);vo(t,n,i,e),$o(t,l,s||e);const c=i?Ro(t,e):void 0;return e&&ds(!1),c}function Ro(t,e){const s=t.type;t.accessCache=Object.create(null),t.proxy=new Proxy(t.ctx,eo);const{setup:n}=s;if(n){fe();const l=t.setupContext=n.length>1?Io(t):null,i=ms(t),c=hs(n,t,0,[t.props,l]),r=Dl(c);if(he(),i(),(r||t.sp)&&!ls(t)&&ci(t),r){if(c.then(ul,ul),e)return c.then(u=>{ds(!0);try{pl(t,u,e)}finally{ds(!1)}}).catch(u=>{Ws(u,t,0)});t.asyncDep=c}else pl(t,c)}else Pi(t)}function pl(t,e,s){Y(e)?t.type.__ssrInlineRender?t.ssrRender=e:t.render=e:ct(e)&&(t.setupState=ti(e)),Pi(t)}function Pi(t,e,s){const n=t.type;t.render||(t.render=n.render||le);{const l=ms(t);fe();try{so(t)}finally{he(),l()}}}const jo={get(t,e){return Tt(t,"get",""),t[e]}};function Io(t){const e=s=>{t.exposed=s||{}};return{attrs:new Proxy(t.attrs,jo),slots:t.slots,emit:t.emit,expose:e}}function zs(t){return t.exposed?t.exposeProxy||(t.exposeProxy=new Proxy(ti(Sa(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 Fo(t){return Y(t)&&"__vccOpts"in t}const A=(t,e)=>Aa(t,e,us),No="3.5.43";/** * @vue/runtime-dom v3.5.43 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/let $n;const fl=typeof window<"u"&&window.trustedTypes;if(fl)try{$n=fl.createPolicy("vue",{createHTML:t=>t})}catch{}const qi=$n?t=>$n.createHTML(t):t=>t,Bo="http://www.w3.org/2000/svg",Wo="http://www.w3.org/1998/Math/MathML",re=typeof document<"u"?document:null,hl=re&&re.createElement("template"),Ko={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"?re.createElementNS(Bo,t):e==="mathml"?re.createElementNS(Wo,t):s?re.createElement(t,{is:s}):re.createElement(t);return t==="select"&&n&&n.multiple!=null&&l.setAttribute("multiple",n.multiple),l},createText:t=>re.createTextNode(t),createComment:t=>re.createComment(t),setText:(t,e)=>{t.nodeValue=e},setElementText:(t,e)=>{t.textContent=e},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>re.querySelector(t),setScopeId(t,e){t.setAttribute(e,"")},insertStaticContent(t,e,s,n,l,i){const c=s?s.previousSibling:e.lastChild;if(l&&(l===i||l.nextSibling))for(;e.insertBefore(l.cloneNode(!0),s),!(l===i||!(l=l.nextSibling)););else{hl.innerHTML=qi(n==="svg"?`${t}`:n==="mathml"?`${t}`:t);const r=hl.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]}},Uo=Symbol("_vtc");function Vo(t,e,s){const n=t[Uo];n&&(e=(e?[e,...n]:[...n]).join(" ")),e==null?t.removeAttribute("class"):s?t.setAttribute("class",e):t.className=e}const Ds=Symbol("_vod"),Hi=Symbol("_vsh"),ml={name:"show",beforeMount(t,{value:e},{transition:s}){t[Ds]=t.style.display==="none"?"":t.style.display,s&&e?s.beforeEnter(t):Ye(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),Ye(t,!0),n.enter(t)):n.leave(t,()=>{Ye(t,!1)}):Ye(t,e))},beforeUnmount(t,{value:e}){Ye(t,e)}};function Ye(t,e){t.style.display=e?t[Ds]:"none",t[Hi]=!e}const Go=Symbol(""),zo=/(?:^|;)\s*display\s*:/;function Yo(t,e,s){const n=t.style,l=_t(s);let i=!1;if(s&&!l){if(e)if(_t(e))for(const c of e.split(";")){const r=c.slice(0,c.indexOf(":")).trim();s[r]==null&&Xe(n,r,"")}else for(const c in e)s[c]==null&&Xe(n,c,"");for(const c in s){c==="display"&&(i=!0);const r=s[c];r!=null?Zo(t,c,!_t(e)&&e?e[c]:void 0,r)||Xe(n,c,r):Xe(n,c,"")}}else if(l){if(e!==s){const c=n[Go];c&&(s+=";"+c),n.cssText=s,i=zo.test(s)}}else e&&t.removeAttribute("style");Ds in t&&(t[Ds]=i?n.display:"",t[Hi]&&(n.display="none"))}const ys=/\s*!important$/;function Xe(t,e,s){if(z(s))s.forEach(n=>Xe(t,e,n));else if(s==null&&(s=""),e.startsWith("--"))ys.test(s)?t.setProperty(e,s.replace(ys,""),"important"):t.setProperty(e,s);else{const n=Jo(t,e);ys.test(s)?t.setProperty(Le(n),s.replace(ys,""),"important"):t[n]=s}}const _l=["Webkit","Moz","ms"],ln={};function Jo(t,e){const s=ln[e];if(s)return s;let n=Gt(e);if(n!=="filter"&&n in t)return ln[e]=n;n=ql(n);for(let l=0;l<_l.length;l++){const i=_l[l]+n;if(i in t)return ln[e]=i}return e}function Zo(t,e,s,n){return t.tagName==="TEXTAREA"&&(e==="width"||e==="height")&&_t(n)&&s===n}const vl="http://www.w3.org/1999/xlink";function gl(t,e,s,n,l,i=sa(e)){n&&e.startsWith("xlink:")?s==null?t.removeAttributeNS(vl,e.slice(6,e.length)):t.setAttributeNS(vl,e,s):s==null||i&&!Rl(s)?t.removeAttribute(e):t.setAttribute(e,i?"":ie(s)?String(s):s)}function bl(t,e,s,n,l){if(e==="innerHTML"||e==="textContent"){s!=null&&(t[e]=e==="innerHTML"?qi(s):s);return}const i=t.tagName;if(e==="value"&&i!=="PROGRESS"&&!i.includes("-")){const r=i==="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=Rl(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 Xo(t,e,s,n){t.addEventListener(e,s,n)}function Qo(t,e,s,n){t.removeEventListener(e,s,n)}const yl=Symbol("_vei");function tr(t,e,s,n,l=null){const i=t[yl]||(t[yl]={}),c=i[e];if(n&&c)c.value=n;else{const[r,u]=nr(e);if(n){const m=i[e]=ar(n,l);Xo(t,r,m,u)}else c&&(Qo(t,r,c,u),i[e]=void 0)}}const er=/(Once|Passive|Capture)$/,sr=/^on:?(?:Once|Passive|Capture)$/;function nr(t){let e,s;for(;(s=t.match(er))&&!sr.test(t);)e||(e={}),t=t.slice(0,t.length-s[1].length),e[s[1].toLowerCase()]=!0;return[t[2]===":"?t.slice(3):Le(t.slice(2)),e]}let an=0;const lr=Promise.resolve(),ir=()=>an||(lr.then(()=>an=0),an=Date.now());function ar(t,e){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;const l=s.value;if(z(l)){const i=n.stopImmediatePropagation;n.stopImmediatePropagation=()=>{i.call(n),n._stopped=!0};const c=l.slice(),r=[n];for(let u=0;ut.charCodeAt(0)===111&&t.charCodeAt(1)===110&&t.charCodeAt(2)>96&&t.charCodeAt(2)<123,or=(t,e,s,n,l,i)=>{const c=l==="svg";e==="class"?Vo(t,n,c):e==="style"?Yo(t,s,n):Rs(e)?js(e)||tr(t,e,s,n,i):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):rr(t,e,n,c))?(bl(t,e,n),!t.tagName.includes("-")&&(e==="value"||e==="checked"||e==="selected")&&gl(t,e,n,c,i,e!=="value")):t._isVueCE&&(cr(t,e)||t._def.__asyncLoader&&(/[A-Z]/.test(e)||!_t(n)))?bl(t,Gt(e),n,i,e):(e==="true-value"?t._trueValue=n:e==="false-value"&&(t._falseValue=n),gl(t,e,n,c))};function rr(t,e,s,n){if(n)return!!(e==="innerHTML"||e==="textContent"||e in t&&$l(e)&&Y(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 $l(e)&&_t(s)?!1:e in t}function cr(t,e){const s=t._def.props;if(!s)return!1;const n=Gt(e);return Array.isArray(s)?s.some(l=>Gt(l)===n):Object.keys(s).some(l=>Gt(l)===n)}const dr=Mt({patchProp:or},Ko);let wl;function ur(){return wl||(wl=xo(dr))}const pr=((...t)=>{const e=ur().createApp(...t),{mount:s}=e;return e.mount=n=>{const l=hr(n);if(!l)return;const i=e._component;!Y(i)&&!i.render&&!i.template&&(i.template=l.innerHTML),l.nodeType===1&&(l.textContent="");const c=s(l,!1,fr(l));return l instanceof Element&&(l.removeAttribute("v-cloak"),l.setAttribute("data-v-app","")),c},e});function fr(t){if(t instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&t instanceof MathMLElement)return"mathml"}function hr(t){return _t(t)?document.querySelector(t):t}const Ri={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 ji(t,e){const s=Ri[t],n=performance.now();try{const l=await fetch(s,{headers:{Accept:"application/json",...e?.body?{"Content-Type":"application/json"}:{}},...e}),i=await l.text();let c=i;try{c=JSON.parse(i)}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 on=["facts","maintSurvey","ontList","askStatus","channels","dqFindings","algoHealth","algoEndpoints","algoMatrix","algoReliability","algoPurity"],mr={class:"card"},_r={class:"hint"},vr=["disabled"],gr={class:"hint"},br=$t({__name:"ContractSmoke",setup(t){const e=vt([]),s=vt(!1),n=vt(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 i(){s.value=!0,e.value=[],n.value=0;for(const c of on){const r=await ji(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 Be(i),(c,r)=>(b(),$("section",mr,[r[3]||(r[3]=a("h2",null,[W("契约自检 "),a("small",null,"(后端结构与算法服务可达性;对拍基准见 docs/接口契约_前后端_v0.1.md)")],-1)),a("p",_r,[W(" 进度 "+d(n.value)+"/"+d(p(on).length)+' · 只判"通不通",不比数据值(值随数据变,锚点在 Python 侧的门禁里) ',1),a("button",{class:"re",disabled:s.value,onClick:i},"重跑",8,vr)]),a("table",null,[r[0]||(r[0]=a("thead",null,[a("tr",null,[a("th",null,"接口"),a("th",null,"路径"),a("th",null,"状态"),a("th",null,"耗时"),a("th",null,"顶层键 / 形状")])],-1)),a("tbody",null,[(b(!0),$(N,null,Q(e.value,u=>(b(),$("tr",{key:u.name,class:Ct({bad:!u.ok})},[a("td",null,d(u.name),1),a("td",null,[a("code",null,d(u.path),1)]),a("td",null,d(u.status),1),a("td",null,d(u.ms)+" ms",1),a("td",null,d(u.error||u.keys),1)],2))),128))])]),a("p",gr,[W(" 契约登记接口合计 "+d(Object.keys(p(Ri)).length)+" 条(本页抽样 "+d(p(on).length)+" 条); 全量 42 条由 ",1),r[1]||(r[1]=a("code",null,"python scripts/http_contract_audit.py",-1)),r[2]||(r[2]=W(" 在线复核。 ",-1))])]))}}),yr={"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.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 门户原文)。"};function o(t,e){let s=yr[t]??t;if(e)for(const[n,l]of Object.entries(e))s=s.split(`{${n}}`).join(String(l));return s}const $r=["overview","energy","component","vibration","generation","fault","decision","assistant","report","system","documents","recalc","portal_sec"],rn=["overview","energy","component","fault","vibration","generation","decision","assistant","system","report","documents","recalc","portal_sec"],wr={class:"eyebrow"},xr={key:0,class:"panel"},kr={class:"small",style:{color:"var(--critical)"}},Sr={key:1,class:"panel"},Mr={class:"small muted"},Tr={class:"panel mb"},Cr={class:"small muted"},Er={class:"panel mb"},Ar={class:"tblwrap"},Or={style:{"margin-top":"4px"}},Dr={style:{width:"60%"}},Lr={style:{width:"16%"}},Pr={style:{width:"24%"}},qr={class:"small"},Hr={class:"small num"},Rr={class:"small"},jr=["href","download"],Ir=$t({__name:"Documents",setup(t){const e=vt(null),s=vt(""),n=l=>l>=1048576?(l/1048576).toFixed(1)+" MB":Math.max(1,Math.round(l/1024))+" KB";return Be(async()=>{try{const i=await(await fetch("/api/delivery_docs")).json();i&&i.error?s.value=String(i.error):e.value=i&&i.docs||[]}catch(l){s.value=String(l&&l.message||l)}}),(l,i)=>(b(),$("section",null,[a("div",wr,d(p(o)("doc.eyebrow")),1),s.value?(b(),$("div",xr,[a("p",kr,d(s.value),1)])):e.value?(b(),$(N,{key:2},[a("div",Tr,[a("h3",null,d(p(o)("doc.head",{n:e.value.length})),1),a("p",Cr,d(p(o)("doc.note")),1)]),a("div",Er,[a("div",Ar,[a("table",Or,[a("tr",null,[a("th",Dr,d(p(o)("doc.name")),1),a("th",Lr,d(p(o)("doc.size")),1),a("th",Pr,d(p(o)("doc.get")),1)]),(b(!0),$(N,null,Q(e.value,c=>(b(),$("tr",{key:c.name},[a("td",qr,d(c.name),1),a("td",Hr,d(n(c.size||0)),1),a("td",Rr,[a("a",{href:c.url,download:c.name},d(p(o)("doc.download")),9,jr)])]))),128))])])])],64)):(b(),$("div",Sr,[a("p",Mr,d(p(o)("doc.loading")),1)]))]))}}),Fr={class:"eyebrow"},Nr={key:0,class:"panel"},Br={class:"small",style:{color:"var(--critical)"}},Wr={key:1,class:"panel"},Kr={class:"small muted"},Ur={class:"panel mb"},Vr={class:"small muted"},Gr={key:0,class:"small"},zr=["disabled"],Yr={class:"panel mb"},Jr={class:"small",style:{"max-height":"340px",overflow:"auto",margin:"0"}},Zr=$t({__name:"Recalc",setup(t){const e=vt(null),s=vt(""),n=vt(!1);let l=null;const i=async()=>{try{const r=await fetch("/api/recalc");e.value=await r.json()}catch(r){s.value=String(r&&r.message||r)}},c=async()=>{n.value=!0;try{await fetch("/api/recalc_start",{method:"POST"}),await i()}catch(r){s.value=String(r&&r.message||r)}finally{n.value=!1}};return Be(()=>{i(),l=setInterval(i,5e3)}),Rn(()=>{l&&clearInterval(l)}),(r,u)=>(b(),$("section",null,[a("div",Fr,d(p(o)("rc.eyebrow")),1),s.value?(b(),$("div",Nr,[a("p",Br,d(s.value),1)])):e.value?(b(),$(N,{key:2},[a("div",Ur,[a("h3",null,d(e.value.running?p(o)("rc.running"):p(o)("rc.idle")),1),a("p",Vr,d(p(o)("rc.note")),1),e.value.started_at?(b(),$("p",Gr,[W(d(p(o)("rc.since"))+" ",1),a("code",null,d(e.value.started_at),1)])):st("",!0),a("button",{class:"pill",disabled:n.value||e.value.running,onClick:c},d(p(o)("rc.start")),9,zr)]),a("div",Yr,[a("h3",null,d(p(o)("rc.log")),1),a("pre",Jr,d(e.value.log||p(o)("rc.empty")),1)])],64)):(b(),$("div",Wr,[a("p",Kr,d(p(o)("rc.loading")),1)]))]))}}),Xr={class:"eyebrow"},Qr={class:"panel mb"},tc={class:"small muted"},ec={class:"panel mb"},sc={class:"tblwrap"},nc={style:{"margin-top":"4px"}},lc={style:{width:"22%"}},ic={style:{width:"56%"}},ac={class:"small"},oc={class:"small muted"},rc={class:"small"},cc=["href"],dc=$t({__name:"Portal",setup(t){const e=[{id:"sim",label:"仿真",href:"/sim/",note:"仿真与回放(仿真台 18791)",kind:"svc"},{id:"admin",label:"状态",href:"/ops",note:"系统状态(运维台)",kind:"svc"},{id:"classic",label:"经典",href:"/web/detail_v2.html",note:"经典版页面(v2.9.2 原文原样:布局/样式/字体/图文表一致)",kind:"svc"}];return(s,n)=>(b(),$("section",null,[a("div",Xr,d(p(o)("pt.eyebrow")),1),a("div",Qr,[a("h3",null,d(p(o)("pt.head")),1),a("p",tc,d(p(o)("pt.note")),1)]),a("div",ec,[a("div",sc,[a("table",nc,[a("tr",null,[a("th",lc,d(p(o)("pt.col")),1),a("th",ic,d(p(o)("pt.what")),1),a("th",null,d(p(o)("pt.open")),1)]),(b(),$(N,null,Q(e,l=>a("tr",{key:l.id},[a("td",ac,[a("b",null,d(l.note),1)]),a("td",oc,d(l.kind==="portal"?p(o)("pt.kind_portal"):p(o)("pt.kind_svc")),1),a("td",rc,[a("a",{href:l.href},d(p(o)("pt.open")),9,cc)])])),64))])])])]))}}),uc=`
技术白皮书 · 系统架构

从证据分析到处置建议

五个相连的系统层:保留来源身份、落位设备上下文、检验机制、准备可问责的决定,并从检修结果中学习。

十分钟 SCADA秒级数据CMS报警工单油样与检查技术文档
01数据地基每条记录能被辨识和解释吗?
02设备本体每条记录指向哪个物理对象与配置?
03证据引擎证据支持某个具体机制吗?
04决策服务现在有什么动作是有依据的?
05检修学习动作改变了预期指标吗?
验证过的现场结果 → 本体 + 证据史 → 下一轮分析
必需证据缺失 → 点名采集任务 → 停止升级

身份、来源完整性或必需证据未解决时,系统失败关闭;验证过的检修结果成为可复用的证据。

01 · 数据地基 · 登记与契约

每条记录能被辨识和解释吗?

保留原始证据,定义每个通道:登记来源位置、指纹、时间覆盖与格式,不改原文件;十分钟与秒级数据核单位、采样间隔、时间戳、哨兵值、通道活性与运行状态。

输出

来源登记簿、通道定义、可用时段与排除项。

02 · 设备本体 · 落位

每条记录指向哪个物理对象与配置?

通过受控的工程图谱连接证据:资产、系统、总成、部件、测点与通道、告警、规程、工单、文档相连;机型、配置、有效期与来源约束每一条映射,含糊的对象停在未分配。

输出

按机型限定的设备对象、带类型的关系与出处。

03 · 证据引擎 · 检验机制

证据支持某个具体机制吗?

先验测量链与物理界,再比较绝对水平、同工况机群残差、变化、分布形状与合格谱证据;证据族分开,相互矛盾的记录保持可见。

输出

有界的发现、疑似机制、支持证据、矛盾项,或「需更多数据」。

04 · 决策服务 · 限定动作

现在有什么动作是有依据的?

写一个可问责的决定对象:状态、机制、置信、后果、选项、责任人、到期日与闭合证据放在一起;系统准备监视/计划/动作三种选项,授权工程师批准现场与高成本动作。

输出

可审阅的决定、批准人与执行边界。

05 · 检修学习 · 验证与复用

动作改变了预期指标吗?

工作包写明部件、规程、检查点与必需记录;检修后在同工况下比较同一指标,改善支持闭合,无改善则重开机制;验证过的结果挂回本体,供下一个相似案例。

输出

现场记录、修后比较、闭合或重开的调查。

受保护的内容

资产专属参考保持在受保护工作区内

特征频率、业主与场站标识、私有技术文档与台级证据留在受保护工作区;公开图只展示架构。

`,pc=`
工程方法

六步分析与决策依据

观澜把运行数据、设备上下文与检修历史连在一起,不隐藏不确定性。每个结果保留来源、时段与下一步验证。

输入

十分钟 SCADA + 秒级数据

十分钟 SCADA

运行状态、热行为、负荷与机群比较

秒级数据

快速暂态、控制响应与事件序列

CMS

状态监测标量与合格谱

报警

码按适用的整机厂码表解析

检修

工单、检查、油样与换件

技术来源

按机型限定的图纸、手册、规程与配置记录

单位、采样间隔、时间戳、哨兵值与通道活性在使用前核验。有这一列不等于有活信号。
执行路径

六步

01登记来源:指纹与覆盖
02落位身份:机型与配置
03验证测量:单位、时间与活性
04比较状态:绝对与同工况对照
05检验机制:支持与矛盾
06发布决定:动作、责任人与闭合
四道控制

诊断结论的验证要求

01

先验测量链

算特征之前先查静态偏置、缺失或默认值、时间戳对齐与真实采样行为。

02

匹配状态与时段

同工况、同证据窗比较;检修与配置变更开启新时段。

03

证据保持独立

同一传感器的多个特征仍是一族证据;共享预处理或共同测量链不构成互证。

04

缺必需证据就停

缺必需证据只产出"需更多数据",点名采集任务,禁止升级到更强的结论。

决定与检修

从发现到验证过的现场结果

发现

陈述状态

部件、疑似机制、幅度、证据、矛盾与置信。

决定

选择 监视 / 计划 / 动作

给出后果、选项、责任人、到期日、批准与闭合证据。

现场结果

看变了什么

同工况下比较同一指标;闭合、继续或重开机制。

系统准备可审阅的工作范围与闭合所需证据;不签发工作许可,授权工程师批准现场与高成本动作。
边界保持可见

记录决定边界

十分钟数据

分不开秒级作用的机制

秒级数据改善时序证据,但本身不建立因果。

相对偏差

只是筛查结果

直到有绝对物理量与适用边界支持为止。

无确认阳性的阈值

可排序、可筛查

不能确认诊断。

语言模型

解释受控对象并引用记录

不能发明关系、补缺输入或批准检修。

`,fc=`
现场经验

现场经验与工程判断

在 1.5 到 6 MW 机群上的工作,形成了一套鉴定证据、检验机制、支持检修决定的实用方法。

59 项内部检查 → 8 条公开教训
分析足迹

60+ 个风场

陆上 + 海上

容量范围

1.5–6 MW

架构

双馈 · 直驱 · 半直驱

平台

远景 · 金风 · 明阳 · 西门子

项目身份、业主、场站、机组标识与资产专属诊断参数不公开。

八条反复出现的教训

会改变工程结论的检查

A · 采样

让样本匹配问题

比较机组或机群之前,先声明独立单位、聚合层级、对照组、分母与时间窗。

B · 归因

要机制,也要时间顺序

共现与相关只能筛查假设;因果归因还需要物理机制、预期方向与事件级先后。

C · 测量

先验测量链

有值的字段、固定偏置或安静的通道未必是活信号;先查单位、时间戳、采样、哨兵、偏置与传感器状态。

D · 聚合

先保留事件再汇总

平均会抹掉极端、持续时长与受影响比例;出机群统计前先看点级形状、缺口与边界。

E · 判据

写明每条判据的适用域

单位、阈值、方差、运行状态、控制时长、必需输入与边界附近的情形都随结果一起给出。

F · 守护

验证守护真的在跑

文档里的检查在触发条件与生产调用路径确认前不提供任何保护,且失败必须可见。

G · 管线

让检查器失败来测它

向隔离的样例注入已知错误,证明真实入口拒绝它,再恢复有效输入证明通过。

H · 决定

筛查与动作分开

技术发现只有在范围、不确定性、后果、选项、责任人与批准明确后,才成为检修决定。

经验怎么用

从异常发现到检修建议

01鉴定证据现有数据能支持什么、不能支持什么、哪项检查补上缺口
02落位设备上下文通过本体映射到正确的机型、配置、部件、测点与疑似机制
03准备决定给出监视/计划/动作选项、后果、现场范围、必需记录、批准人与闭合证据
经验边界。经验横跨陆上与海上;换环境或换不熟悉的配置,复用任何判据或结论前都要重新验证控制、测量链、部件结构与运行制度。
本场结论 · 契约生成

定论与准定论·预警 (0 条)

由结构化事实契约 362a00a7649889ea 渲染 (共 6 条); 数据、时间窗、结论只经契约更新, 本段禁手改 (release-manifest.content_contract)。

claim裁决结论系统窗 (天)

候选 · 参考 · 证据不足 (6 条, 按系统)

报警面 · 1 条 (候选 1)
claim裁决结论缺项
RD-LEDGER-ALM-01候选报警集中: WTG08 5148 条(机群中位 616 条的 8.4 倍)报警条数不等于缺陷严重度: 单码抖动(同一码反复报)会抬高条数; 未做同码基线归一。
传动链 · 1 条 (候选 1)
claim裁决结论缺项
RD-LEDGER-WO-01候选重复检修: WTG33 的「偏航单元」累计 81 次(窗内)检修台账记录的是"做过什么", 不等于"坏过几次": 同一部件的例行检查也会计次; 未做计划性/故障性停机区分(缺 work_type 字段)。
发电量 · 1 条 (参考 1)
claim裁决结论缺项
RD-LEDGER-LOSS-01参考停机损失集中: WTG05 占全场停机损失 10%(2,874 MWh, 全场停机 29,368 MWh)损失是"损失了多少电", 不是"为什么损失"; 含调度令停机(非缺陷)与限电, 需与故障类分开看。
温度面 · 1 条 (候选 1)
claim裁决结论缺项
RD-LEDGER-TEMP-01候选温度相对离群: WTG01 的 tmp_wtc_TrafoTMa_mean 在 3750.0 功率档偏离机群中位 18.0K(工况窗 ref)同工况中位比对的是"机群", 若全机群共因升温和(环境/冷却水温)则判据失效; 未接绝对限值(无 ISO/厂商温度锚)。
发电量, 功率曲线 · 1 条 (参考 1)
claim裁决结论缺项
RD-LEDGER-PC-01参考功率曲线偏离: WTG03 同风速下功率偏差 -147 kW(判别: 风速计偏高候选(A类)); 全场判别分布 {'欠发候选(筛查级)': 3, '风速计偏高候选(A类)': 1}同风速残差受机位风资源(尾流/扇区)影响; 未做机位修正, 故只作"待核"不作缺陷结论。
振动面 · 1 条 (候选 1)
claim裁决结论缺项
RD-LEDGER-VIB-01候选振动面过闸线: 3 条特征线达「候选」及以上(13#·hs_rotor·BPFO(外圈), 35#·hs_rotor·BPFO(外圈), 6#·hs_rotor·BPFO(外圈))机制未定 ⇒ **不命名部件**(滚道/圈侧须实物或换件闭环); 峰值拾取为本器口径(目标频率 ±2 bin 取最大), 无正样本锚 ⇒ 封顶「候选」, 不出「

已撤回 (0 条)

    `,hc=`
    发现案例 · 系统① 液压 · 变桨回路与高速轴制动回路

    八台机组变桨蓄能器失效

    如东海上 38 台 SWT-4.0-130。通过泵加载特征评估 70 号蓄能器储能能力,形成逐台复核与处置建议。证据状态以各项记录为准。

    健康 26 台气容丧失 8 台边界 / 参数侧 5 台证据窗 运行 → 2026-07-07已处置 1 台 (4#) · 恢复基准待核对
    01 · 问

    评估对象、监测量与适用条件

    系统

    液压 · 变桨回路

    一个油箱、两条回路:变桨大站 400 L / 245 bar,HS 制动器由大站经 P BRAKE 分出。

    监测量

    泵单次加载输出量 V_cyc

    加载时长 × 排量 36.8 L/min,来自 10-min 与秒级 SCADA 的泵启停信号。

    方向

    V_cyc 降低:单次进油量减少

    蓄能器气容丧失后,每次加载只能推进很少的油。

    评估限制

    缺 Δp 或未逐台落值

    横坐标缺失的台不外推;档案给组区间的台按区间画,不当单点。

    缺失资料

    轮毂 106 号无连续通道

    只能靠机组自检容量检查记录(235 bar 起测)。

    02 · 证

    两组蓄能器,分工完全不同,判据只对 70 号有效

    70 号 · 泵站近端缓冲

    10 L / 180 bar

    活塞式,经 ø7 节流直连泵压主管,全额参与蓄能循环;A 类失效全在此件。系统总容变按仿真标定式分解:C = C管路 + C70 + 0.095·C106;预充 180 bar 由 38 台实测容变反算证实 (0.0839 ≈ 实测 0.087 L/bar)。

    106 号 · 轮毂顺桨主源

    6 × 30 L / 125 bar

    无连续 SCADA 通道,经长管 + 旋转接头 + 118 单向阀,对蓄能循环仅弱耦合 (系数 0.095)。有自检容量检查可查;最近记录 140 bar @20 ℃ = 正常。

    健康 · 26 台

    3.1 – 7.2 L

    全部机群带中位 4.4 L。独立核验:按变桨活动带标定的仿真健康点 4.9 L 落在带内,与中位差 12%,仿真结果与运行统计对照;独立性需另行核查。同期泵周期 96 s、加载 6 次/10 min、带宽 50 bar、油温 38 ℃、超压 0%。

    气容丧失 · 8 台

    0.52 L

    A 类中位 0.85 秒,为健康中位的 1/8.5。本质是系统总容变 C 由 0.087 塌到 0.0037 L/bar = 23 倍(剩下的只有纯管路柔度)。8# 实测同期:周期 2.6 s、加载 228 次/10 min、带宽 135、油温 51 ℃、超压占时 98.3%。

    03 · 裁

    失效机理与鉴别依据

    阶跃变化的机理解释

    循环尖峰 → 铁片抬升 → 118 单向阀闭 → 轮毂 106 退出循环

    C 直接塌到纯管路 ≈0.003(对齐 8# 实测 0.0037)。一旦越过这个连锁点,指标阶跃下落,没有中间态。

    为什么不是漏油

    外漏只增每循环消耗,不改系统容变 C

    25# 泵输出 1.46× 而容变 C 仍在健康区 0.62 ⇒ 主导因素在消耗侧,先查漏点。但 C 已非满值,不能断言蓄能器完好,该台已补"同次测预充"。

    为什么不是泵磨损

    排量下降会拉长单次加载而不改频次

    实测 8# 是频次由 6 升到 228 次/10 min(38×)且单次时长反缩短,该特征不支持单独以泵磨损解释,仍需结合现场检查。

    口径边界:反算出的 C 绝对值依赖假定排量 36.8 L/min;分型与健康带用的是实测 V_cyc,不受此影响。
    04 · 分型

    V_cyc × Δp 二维判别:分型与处置参考

    右下

    换 70 号蓄能器

    压力波动范围扩大,单次进油量降低。7#、10#、8#、3#、20#、2#、35#。

    右上

    不换蓄能器

    压力波动范围扩大,但单次进油量保持 ⟹ 漏油或参数。25#。

    左上

    正常 · 30 台

    Δp 锁定 52,进油量满。

    左下 / 未落值

    参数侧 · 先测

    Δp 过窄属参数侧;Δp 未落值的台横坐标无处安放,未测 ≠ 正常。7#、10# 档案无 Δp,不因缺少坐标而取消现场复核。

    05 · 改

    逐台处置建议

    台V_cyc (L/次) 原 → 现Δp判别处置
    7#9.61 → 1.8—气容丧失 · 全场衰减最快换 70 号蓄能器
    10#2.9 → 0.47—气容丧失 · 最新一起阶跃下降换 70 号蓄能器
    3# / 20# / 2# / 35#0.47–0.63 (组区间)宽气容丧失 · 档案未逐台落值换 70 号蓄能器 (逐台落值后下单)
    8#1.45 → 0.5宽气容丧失 · 频次 6 → 228 次/10 min换 70 号蓄能器
    21# / 28# / 19#0.98 / 1.15 / 0.52宽边界台先测预充定型, 再定
    25#4.33宽 (泵输出 1.46×)漏油或参数, 不是蓄能器先现场核, 不换蓄能器
    14# / 32#3.4–4.4 (健康带内)窄压力带宽问题参数侧核
    4#0.53 → 4.84—已处置 · 恢复基准待核对验收:核对基准后同工况复核
    备件:70 号蓄能器 物资编码 A9B10051506(10 L / 180 bar 活塞式),编码取自备件系统「物资编码」字段;库存列表无导出日期,下单前必核 ERP 现存量,禁按本表采购。凡标「件号待确认」的条目,采购前联系现场核实。
    06 · 顺桨安全

    顺桨储能与自检证据

    70 号失效

    SCADA 循环特征变化明显

    失电顺桨主源是轮毂 106(103 → 121 路),70 号不在此路。数据窗内 4 次全场停电全部安全顺桨、零超速。

    106 失氮(假设情形)

    SCADA 循环指标识别能力有限

    循环侧只有中度变化(吞吐约 2 L),与个体基线难分辨;能看见它的只有机组自检容量检查(UP03284 组,从轮毂 235 bar 起测)。后果最重:失电顺桨失去能量源。

    两者同时失效

    SCADA 上与单独 70 号失效不可分辨

    而实际后果是顺桨失败 ⇒ 不能仅凭 SCADA 排除液压失效。两套监测互补、同时关注。

    将现有自检记录按月归档,用于跟踪 106 号蓄能器的容量变化。
    07 · 量

    修后验证

    同工况复核

    同一指标 V_cyc,同一变桨活动带

    4# 已处置:0.53 → 4.84 L。4.84 L 低于此处所列 5.0–11.7 L 下限,与页面另一处 3.1–7.2 L 基准不一致。须核对工况与基准来源,当前不能据此确认修后恢复。

    阴性对照

    换蓄能器不该改变能量产出

    4# 换件在 E1 阴性对照池中(优化窗 22 天 < 28 → INSUFFICIENT,未出数),不夸大收益。

    记录归档

    工单 → 复核 → 台账

    每台的处置进检修任务,复核结果挂回本体;106 号自检记录进月度台账。

    依据:U6_变桨液压仿真台(SWT-4.0-130,图纸 1034384 / 1034386;参数标定自本场 38 台实测与原厂图纸,2026-08-13 现场证实)。本页数字全部来自《如东_液压系统治理清单_v1.2》,未重跑。仿真台在"仿真与回放"页可交互 →

    `,mc={class:"eyebrow"},_c={class:"panel mb",style:{display:"flex",gap:"8px","flex-wrap":"wrap"}},vc=["onClick"],gc={key:0,class:"panel"},bc={class:"small muted"},yc=["innerHTML"],$c=$t({__name:"PortalSections",setup(t){const e=[{id:"architecture",label:"系统架构",html:uc},{id:"method",label:"方法",html:pc},{id:"findings",label:"经验发现",html:fc},{id:"case_hydraulic",label:"案例·液压",html:hc}],s=vt("architecture"),n=A(()=>(e.find(i=>i.id===s.value)||e[0]).html),l=A(()=>!n.value);return(i,c)=>(b(),$("section",null,[a("div",mc,d(p(o)("ps.eyebrow")),1),a("div",_c,[(b(),$(N,null,Q(e,r=>a("button",{key:r.id,class:Ct(["pill",{on:r.id===s.value}]),onClick:u=>s.value=r.id},d(r.label),11,vc)),64))]),l.value?(b(),$("div",gc,[a("p",bc,d(p(o)("ps.missing")),1)])):(b(),$("div",{key:1,class:"ps-embed",innerHTML:n.value},null,8,yc))]))}}),wc={危险:"bad",报警:"warn",不可判:"unk",良好:"ok",优秀:"ex"},xc={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"},Ls=t=>wc[String(t)]||xc[String(t)],xl={证据:"evidence",机制:"mechanism",判级:"rating",排期:"schedule",动作:"action",验收:"acceptance"},wn=t=>"st."+(t==="ex"?"excellent":t),mt=t=>String(t).replace("WTG","").replace(/^0/,"")+"#",rt=(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})},kl=t=>{const e=Ls(t);return e?o(wn(e)):String(t??"")},kc=["振动","温度","润滑","油液","报警","工单"];function Sl(t){const e=kc.map(n=>Ls((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 Ml={bad:"critical",warn:"warning",unk:"unknown",ok:"good",ex:"excellent"},_e=t=>String(t??""),Fn=["叶片与叶根","变桨","偏航","齿轮箱","发电机","主轴承","变流器","塔架与基础","主控与传感网"],Ps={叶片与叶根:"blade",变桨:"pitch",偏航:"yaw",齿轮箱:"gearbox",发电机:"generator",主轴承:"main_bearing",变流器:"converter",塔架与基础:"tower",主控与传感网:"control",主轴:"main_bearing",其他:"other"},Ii=(()=>{const t={};for(const e of Fn)t[Ps[e]]=e;for(const[e,s]of Object.entries(Ps))s in t||(t[s]=e);return t})(),qs=t=>Ps[String(t)]||String(t),Tl=t=>Ii[String(t)]||String(t),pe=t=>{const e=Ps[String(t)]||String(t);return Ii[e]?o("sys."+e):String(t??"")},Hs=t=>pe(t),Sc={key:0},Mc={class:"small"},Tc={href:"#tab=component","data-back":"1"},Cc={class:"panel mb"},Ec={style:{display:"flex",height:"12px","border-radius":"4px",overflow:"hidden",margin:"8px 0 4px"}},Ac={class:"small muted"},Oc={class:"tblwrap"},Dc={style:{width:"74px"}},Lc={class:"r",style:{width:"96px"}},Pc=["href"],qc={class:"small"},Hc={class:"r"},Rc=["href"],jc={key:0,class:"panel mb"},Ic={style:{cursor:"pointer","font-weight":"600"}},Fc={class:"tblwrap"},Nc={style:{"margin-top":"10px"}},Bc={style:{width:"74px"}},Wc={class:"small"},Kc={key:1,class:"panel"},Uc={class:"small"},Vc={key:0},Gc={class:"panel mb small",style:{"border-left":"3px solid var(--accent)"}},zc={class:"eyebrow"},Yc={class:"panel mb"},Jc={style:{display:"grid","grid-template-columns":"repeat(auto-fit,minmax(170px,1fr))",gap:"10px"}},Zc=["data-sys"],Xc={class:"t"},Qc={class:"bar"},td={class:"small muted"},ed=["innerHTML"],sd={class:"small muted",style:{"margin-top":"8px"}},nd={key:1},ld={class:"panel mb",style:{"border-left":"3px solid var(--critical)"}},id={class:"small"},ad={key:2},od={class:"eyebrow"},rd={class:"panel mb"},cd={class:"small muted",style:{"font-weight":"400"}},dd={class:"small muted",style:{margin:"-2px 0 8px"}},ud={class:"tblwrap"},pd={class:"r"},fd={class:"r"},hd={class:"r"},md={class:"r"},_d={key:0},vd={class:"badge"},gd={class:"num small"},bd={class:"r"},yd={class:"r"},$d={class:"r"},wd={class:"r"},xd={class:"small"},kd={class:"small muted"},Sd={key:3},Md={class:"panel mb"},Td={class:"small"},Cd={href:"#tab=vibration"},Ed={class:"eyebrow"},Ad={class:"panel mb"},Od={class:"tblwrap"},Dd={class:"r"},Ld=["href"],Pd={class:"r"},qd=["innerHTML"],Hd={class:"small"},Rd=$t({__name:"Component",props:{d:{},sys:{}},setup(t){const e=t,s=A(()=>e.d?.sysdist||{}),n=A(()=>e.d?.rel&&!e.d.rel.err?e.d.rel:null),l=A(()=>e.sys?Tl(e.sys):null),i=A(()=>Fn.filter(f=>s.value[f]).map(f=>{const g=s.value[f],_=g.报警||0,y=g.不可判||0,S=Object.values(g).reduce((q,w)=>q+w,0)||1,k=_>=8?"var(--critical)":_>=3?"var(--warning)":_?"var(--accent)":"var(--good)";return{s:f,dist:g,a:_,u:y,N:S,col:k}}));function c(f){return(f.syss||[]).map(g=>`${pe(g)}`).join(" · ")}const r=A(()=>{const g=(((e.d?.control||{}).energy||{}).items||[]).filter(_=>_.k==="停机").map(_=>_.h)[0];return g??null}),u=A(()=>{const f=n.value?.表||[],g=Math.max(1,...f.map(_=>_.停机时长h));return f.map(_=>({r:_,maxH:g,sev:_.部件==="无记录停机"?"var(--unknown)":_.外部?"var(--accent)":_.占停机>=.06?"var(--critical)":_.占停机>=.03?"var(--warning)":"var(--good)"}))}),m=A(()=>{const f=l.value;if(!f)return null;const g=(e.d?.systems||{})[f]||[],_=s.value[f]||{},y=(e.d?.systems||{})[f+"·良好"]||[],S=q=>_[q]||0,k=Object.values(_).reduce((q,w)=>q+w,0)||1;return{s:f,N:k,gd:y,cnt:S,al:g.filter(q=>q.st==="报警"),un:g.filter(q=>q.st==="不可判"),dist:_}});return(f,g)=>m.value?(b(),$("section",Sc,[a("p",Mc,[a("a",Tc,d(p(o)("ui.back_to",{tab:p(o)("tab.component")})),1)]),a("div",Cc,[a("h3",null,d(p(o)("cmp.detail_head",{sys:p(pe)(m.value.s),n:m.value.N})),1),a("div",Ec,[(b(),$(N,null,Q([["报警","critical"],["不可判","unknown"],["良好","good"],["优秀","excellent"]],([_,y])=>a("i",{key:_,style:gt(`width:${(m.value.cnt(_)/m.value.N*100).toFixed(1)}%;background:var(--${y})`)},null,4)),64))]),a("div",Ac,d(p(o)("cmp.counts",{a:m.value.cnt("报警"),u:m.value.cnt("不可判"),g:m.value.cnt("良好"),e:m.value.cnt("优秀")})),1)]),(b(!0),$(N,null,Q([m.value.al,m.value.un],(_,y)=>Qn((b(),$("div",{key:y,class:"panel mb"},[a("h3",null,d(y===0?p(o)("cmp.alarm_units"):p(o)("cmp.unk_units"))+" "+d(p(o)("cmp.n_units",{n:_.length})),1),a("div",Oc,[a("table",null,[a("tr",null,[a("th",Dc,d(p(o)("ui.unit")),1),a("th",null,d(p(o)("cmp.why")),1),a("th",Lc,d(p(o)("cmp.detail")),1)]),(b(!0),$(N,null,Q(_,S=>(b(),$("tr",{key:S.t},[a("td",null,[a("a",{href:`/turbine/${S.t}`},[a("b",null,d(p(mt)(S.t)),1)],8,Pc)]),a("td",qc,d(S.why),1),a("td",Hc,[a("a",{class:"small",href:`/problem/${S.t}/${encodeURIComponent(m.value.s)}`},d(p(o)("cmp.detail_link")),9,Rc)])]))),128))])])])),[[ml,_.length]])),128)),m.value.gd.length?(b(),$("details",jc,[a("summary",Ic,d(p(o)("cmp.good_units",{n:m.value.gd.length})),1),a("div",Fc,[a("table",Nc,[a("tr",null,[a("th",Bc,d(p(o)("ui.unit")),1),a("th",null,d(p(o)("cmp.why")),1)]),(b(!0),$(N,null,Q(m.value.gd,_=>(b(),$("tr",{key:_.t},[a("td",null,[a("b",null,d(p(mt)(_.t)),1)]),a("td",Wc,d(_.why),1)]))),128))])])])):st("",!0),!m.value.al.length&&!m.value.un.length&&!m.value.gd.length?(b(),$("div",Kc,[a("p",Uc,d(p(o)("cmp.none")),1)])):st("",!0)])):(b(),$(N,{key:1},[t.d.sysmx_pending?(b(),$("section",Vc,[a("div",Gc,[a("b",null,d(p(o)("cmp.grading_pending")),1),W(" "+d(p(o)("cmp.grading_pending_why",{span:t.d.sysmx_span||""})),1)])])):st("",!0),a("section",null,[a("div",zc,d(p(o)("cmp.by_system")),1),a("div",Yc,[a("div",Jc,[(b(!0),$(N,null,Q(i.value,_=>(b(),$("div",{key:_.s,class:"sysc",role:"button",tabindex:"0","data-sys":p(qs)(_.s),style:gt(`cursor:pointer;border-left:3px solid ${_.col}`)},[a("div",Xc,[a("b",null,d(p(pe)(_.s)),1)]),a("div",Qc,[(b(),$(N,null,Q([["报警","critical"],["不可判","unknown"],["良好","good"],["优秀","excellent"]],([y,S])=>Qn(a("i",{key:y,style:gt(`width:${(_.dist[y]/_.N*100).toFixed(1)}%;background:var(--${S})`)},null,4),[[ml,_.dist[y]]])),64))]),a("div",td,[a("span",{innerHTML:p(o)("cmp.alarm_n",{a:`${_.a}`})},null,8,ed),W(d((_.u?p(o)("cmp.unk_n",{u:_.u}):"")+p(o)("cmp.fleet_n",{n:_.N})),1)])],12,Zc))),128))]),a("p",sd,d(p(o)("cmp.cards_note")),1)])]),t.d.rel&&t.d.rel.err?(b(),$("section",nd,[a("div",ld,[a("p",id,d(p(o)("flt.block_err",{k:"rel",e:t.d.rel.err})),1)])])):n.value?(b(),$("section",ad,[a("div",od,d(p(o)("cmp.rel_eyebrow",{win:n.value.窗})),1),a("div",rd,[a("h3",null,[W(d(p(o)("cmp.rel_head"))+" ",1),a("span",cd,d(p(o)("cmp.rel_meta",{t:n.value.总停机h,a:n.value.设备类停机h,b:n.value.外部类停机h})),1)]),a("p",dd,d(p(o)("cmp.rel_note",{h:r.value==null?"":" "+p(rt)(r.value)+"h"})),1),a("div",ud,[a("table",null,[a("tr",null,[a("th",null,d(p(o)("cmp.rel_part")),1),a("th",null,d(p(o)("cmp.rel_h")),1),a("th",pd,d(p(o)("cmp.rel_ev")),1),a("th",fd,d(p(o)("cmp.rel_mtbo")),1),a("th",hd,d(p(o)("cmp.rel_mdt")),1),a("th",md,d(p(o)("cmp.rel_units")),1),a("th",null,d(p(o)("cmp.rel_fm")),1)]),(b(!0),$(N,null,Q(u.value,_=>(b(),$("tr",{key:_.r.部件},[a("td",null,[a("b",null,d(p(Hs)(_.r.部件)),1),_.r.外部?(b(),$("span",_d,[g[0]||(g[0]=W(d(" "),-1)),a("span",vd,d(p(o)("cmp.external")),1)])):st("",!0)]),a("td",null,[a("i",{class:"bar",style:gt(`width:${Math.round(_.r.停机时长h/_.maxH*72)}px;background:${_.sev}`)},null,4),a("span",gd,d(_.r.停机时长h)+"h · "+d((_.r.占停机*100).toFixed(1))+"%",1)]),a("td",bd,d(_.r.事件数),1),a("td",yd,d(_.r.外部?"—":_.r.MTBF_h||"—"),1),a("td",$d,d(_.r.MDT_h),1),a("td",wd,d(_.r.影响台数),1),a("td",xd,d(_.r.典型失效模式||"—"),1)]))),128))])]),a("p",kd,d(n.value.口径),1)])])):st("",!0),t.d.fus&&!t.d.fus.err?(b(),$("section",Sd,[a("div",Md,[a("p",Td,[W(d(p(o)("cmp.fusion_moved"))+" ",1),a("a",Cd,[a("b",null,d(p(o)("tab.vibration")),1)]),W(" "+d(p(o)("cmp.fusion_n",{n:(t.d.fus.表||[]).length})),1)])])])):st("",!0),a("section",null,[a("div",Ed,d(p(o)("cmp.cross_eyebrow")),1),a("div",Ad,[a("h3",null,d(p(o)("cmp.watch_head",{n:(t.d.watch||[]).length})),1),a("div",Od,[a("table",null,[a("tr",null,[a("th",null,d(p(o)("ui.unit")),1),a("th",Dd,d(p(o)("cmp.n_sys")),1),a("th",null,d(p(o)("cmp.hit_sys")),1),a("th",null,d(p(o)("cmp.basis")),1)]),(b(!0),$(N,null,Q(t.d.watch||[],_=>(b(),$("tr",{key:_.t},[a("td",null,[a("a",{href:`/turbine/${_.t}`},[a("b",null,d(p(mt)(_.t)),1)],8,Ld)]),a("td",Pd,d(_.n),1),a("td",{class:"small",innerHTML:c(_)},null,8,qd),a("td",Hd,d(_.why),1)]))),128))])])])])],64))}}),jd="modulepreload",Id=function(t,e){return new URL(t,e).href},Cl={},Fd=function(e,s,n){let l=Promise.resolve();if(s&&s.length>0){let c=function(f){return Promise.all(f.map(g=>Promise.resolve(g).then(_=>({status:"fulfilled",value:_}),_=>({status:"rejected",reason:_}))))};const r=document.getElementsByTagName("link"),u=document.querySelector("meta[property=csp-nonce]"),m=u?.nonce||u?.getAttribute("nonce");l=c(s.map(f=>{if(f=Id(f,n),f in Cl)return;Cl[f]=!0;const g=f.endsWith(".css"),_=g?'[rel="stylesheet"]':"";if(!!n)for(let k=r.length-1;k>=0;k--){const q=r[k];if(q.href===f&&(!g||q.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${f}"]${_}`))return;const S=document.createElement("link");if(S.rel=g?"stylesheet":jd,g||(S.as="script"),S.crossOrigin="",S.href=f,m&&S.setAttribute("nonce",m),document.head.appendChild(S),g)return new Promise((k,q)=>{S.addEventListener("load",k),S.addEventListener("error",()=>q(new Error(`Unable to preload CSS for ${f}`)))})}))}function i(c){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=c,window.dispatchEvent(r),!r.defaultPrevented)throw c}return l.then(c=>{for(const r of c||[])r.status==="rejected"&&i(r.reason);return e().catch(i)})},Nd=["data-chart"],Bd=$t({__name:"EChart",props:{option:{},height:{}},setup(t){const e=t,s=vt(null);let n=null;async function l(){if(!s.value)return;const i=await Fd(()=>import("./index-BAPDkhe3.js"),[],import.meta.url);n||(n=i.init(s.value,void 0,{renderer:"canvas"})),n.setOption(e.option,!0)}return Be(l),ss(()=>e.option,l,{deep:!0}),ui(()=>{n&&(n.dispose(),n=null)}),(i,c)=>(b(),$("div",{class:"echart","data-chart":JSON.stringify(t.option),style:gt(`height:${t.height||"260px"}`),ref_key:"el",ref:s},null,12,Nd))}}),Fi=(t,e)=>{const s=t.__vccOpts||t;for(const[n,l]of e)s[n]=l;return s},qt=Fi(Bd,[["__scopeId","data-v-999bee15"]]),Wd={key:0},Kd={class:"panel"},Ud={class:"small muted"},Vd={key:1},Gd={class:"kpis",style:{"margin-bottom":"12px"}},zd={key:0},Yd={class:"grid2"},Jd={class:"panel span2"},Zd={class:"small muted",style:{"font-weight":"400"}},Xd={class:"panel"},Qd={style:{"font-weight":"600"}},tu={class:"num"},eu={class:"small muted"},su={class:"small muted",style:{"margin-top":"6px"}},nu={class:"panel"},lu={class:"small muted",style:{"font-weight":"400"}},iu={class:"tblwrap"},au={class:"r",style:{width:"90px"}},ou={class:"small"},ru={class:"num small"},cu={class:"r small"},du={class:"small muted",style:{"margin-top":"6px"}},uu=$t({__name:"Energy",props:{d:{}},setup(t){const e=t,s=A(()=>(e.d?.control||{}).energy),n=A(()=>(e.d?.control||{}).states||[]),l={"限电·绑定":"loss.curtail_bound","限电命令·未绑定":"loss.curtail_unbound","停机(调度令)":"loss.dispatch",停机:"loss.stop",正常发电:"loss.normal",低风待机:"loss.lowwind"},i=_=>l[_]?o(l[_]):_,c=A(()=>{const _=s.value||{};return[{v:rt(_.theo),u:"MWh",l:o("en.kpi_theo"),k:""},{v:rt(_.act),u:"MWh",l:o("en.kpi_act",{h:rt(_.eflh)}),k:"ok"},{v:rt(_.loss_pct,1),u:"%",l:o("en.kpi_loss",{v:rt(_.loss)}),k:_.loss_pct>=10?"warn":""},{v:_.cap_ok?o("en.cap_pass"):o("en.cap_fail"),u:"",l:o("en.cap_note",{op:_.cap_ok?"<":"≥",cap:rt(_.cap)}),k:_.cap_ok?"ok":"bad"}]}),r=_=>_.indexOf("限电")>=0||_.indexOf("调度")>=0?0:_==="停机"?1:2,u=A(()=>{const _=[0,0,0];for(const y of s.value?.items||[])_[r(y.k)]+=y.loss;return _}),m=A(()=>{const _=s.value||{},y=(_.items||[]).filter(w=>w.loss>0).map(w=>({name:w.k,value:Math.round(w.loss)})),S=u.value,k=S.reduce((w,M)=>w+M,0)||1,q=S.map(w=>Math.round(w/k*100)).filter((w,M)=>S[M]/k*500>46);return{title:{text:o("en.balance"),left:"center",textStyle:{fontSize:13}},tooltip:{trigger:"axis"},grid:{left:70,right:20,top:44,bottom:40},xAxis:{type:"category",data:y.map(w=>w.name)},yAxis:{type:"value",name:"MWh"},series:[{type:"bar",data:y.map(w=>w.value),itemStyle:{color:"#0b5fa5"}}],__data__:[Math.round(_.theo),Math.round(_.act),Math.round(y.reduce((w,M)=>w+M.value,0)),...y.map(w=>w.value),...q]}}),f=A(()=>{const _=u.value;return{grid:{left:90,right:24,top:20,bottom:30},xAxis:{type:"value",name:"MWh"},yAxis:{type:"category",data:[o("ch.blame.n1"),o("ch.blame.n2"),o("ch.blame.n3")]},series:[{type:"bar",data:_.map(y=>Math.round(y)),itemStyle:{color:"#2f7dbf"}}],__data__:[]}}),g=A(()=>Math.max(1,...n.value.map(_=>_.pct)));return(_,y)=>s.value?(b(),$("section",Vd,[a("div",Gd,[(b(!0),$(N,null,Q(c.value,(S,k)=>(b(),$("div",{key:k,class:Ct(["kpi",S.k])},[a("b",null,[W(d(S.v),1),S.u?(b(),$("small",zd,d(S.u),1)):st("",!0)]),a("span",null,d(S.l),1)],2))),128))]),a("div",Yd,[a("div",Jd,[a("h3",null,[W(d(p(o)("en.balance"))+" ",1),a("span",Zd,d(p(o)("en.win",{win:p(_e)(t.d.win)})),1)]),ht(qt,{option:m.value,height:"280px"},null,8,["option"])]),a("div",Xd,[a("h3",null,d(p(o)("en.blame")),1),ht(qt,{option:f.value,height:"240px"},null,8,["option"]),(b(!0),$(N,null,Q(u.value,(S,k)=>(b(),$("div",{key:k,style:{display:"flex","align-items":"baseline",gap:"7px","margin-top":"5px"}},[a("i",{style:gt(`flex:none;width:9px;height:9px;border-radius:2px;background:${["var(--accent)","var(--critical)","var(--muted)"][k]};opacity:.55`)},null,4),a("span",Qd,d(p(o)(["ch.blame.n1","ch.blame.n2","ch.blame.n3"][k])),1),a("span",tu,d(p(rt)(Math.round(S)))+" MWh",1),a("span",eu,d(p(o)(["ch.blame.d1","ch.blame.d2","ch.blame.d3"][k])),1)]))),128)),a("p",su,d(p(o)("en.blame_note",{n:p(rt)(Math.round(((s.value.items||[]).find(S=>S.k==="停机")||{}).loss||0))})),1)]),a("div",nu,[a("h3",null,[W(d(p(o)("en.states"))+" ",1),a("span",lu,d(p(o)("en.win",{win:p(_e)(t.d.win)})),1)]),a("div",iu,[a("table",null,[a("tr",null,[a("th",null,d(p(o)("en.state")),1),a("th",null,d(p(o)("en.share")),1),a("th",au,d(p(o)("en.loss_mwh")),1)]),(b(!0),$(N,null,Q(n.value,S=>(b(),$("tr",{key:S.k},[a("td",ou,d(i(S.k)),1),a("td",null,[a("i",{class:"bar",style:gt(`width:${Math.round(S.pct/g.value*84)}px;background:${S.k.indexOf("停机")>=0&&S.k.indexOf("调度")<0?"var(--critical)":"var(--accent)"}`)},null,4),a("span",ru,d(S.pct)+"% · "+d(p(rt)(Math.round(S.h)))+"h",1)]),a("td",cu,d(p(rt)(Math.round(S.loss))),1)]))),128))])]),a("p",du,[W(d(t.d.control.anchors||""),1),y[0]||(y[0]=a("br",null,null,-1)),W(d(p(o)("en.states_note")),1)])])])])):(b(),$("section",Wd,[a("div",Kd,[a("p",Ud,d(p(o)("ui.empty")),1)])]))}}),pu={class:"eyebrow"},fu={class:"panel mb small",style:{"border-left":"3px solid var(--accent)"}},hu={style:{color:"var(--warning)"}},mu={class:"grid2"},_u={class:"eyebrow",style:{"grid-column":"1/-1","margin-top":"4px"}},vu={style:{"text-transform":"none","letter-spacing":"0",color:"var(--muted)"}},gu={class:"panel span2"},bu={class:"small muted",style:{"margin-top":"6px"}},yu={class:"panel"},$u=["innerHTML"],wu={class:"panel"},xu=["innerHTML"],ku={class:"panel span2"},Su={class:"small muted",style:{"margin-top":"6px"}},Mu={key:0,style:{color:"var(--warning)"}},Tu={class:"panel"},Cu={class:"tblwrap"},Eu={style:{width:"70px"}},Au={class:"r",style:{width:"80px"}},Ou={class:"num small"},Du={class:"r small"},Lu={class:"small muted",style:{"margin-top":"6px"}},Pu={key:0,class:"panel",style:{"border-left":"3px solid var(--critical)"}},qu={class:"small"},Hu={key:1,class:"panel"},Ru={class:"small muted",style:{"font-weight":"400"}},ju={class:"legend",style:{"margin-top":"6px","flex-wrap":"wrap"}},Iu={class:"small muted",style:{"margin-top":"6px"}},Fu={class:"eyebrow",style:{"grid-column":"1/-1","margin-top":"4px"}},Nu={style:{"text-transform":"none","letter-spacing":"0",color:"var(--muted)"}},Bu={key:0,class:"panel span2"},Wu={class:"small muted",style:{"margin-top":"6px"}},Ku={style:{"margin-top":"12px"}},Uu={class:"small muted",style:{"margin-top":"2px"}},Vu={class:"panel"},Gu=["innerHTML"],zu={class:"small muted",style:{"margin-top":"4px"}},Yu={class:"panel"},Ju={class:"tblwrap"},Zu={style:{width:"64px"}},Xu={class:"r",style:{width:"56px"}},Qu={class:"num small"},tp={class:"r small"},ep={class:"small muted",style:{"margin-top":"6px"}},sp=$t({__name:"Fault",props:{d:{}},setup(t){const e=t,s=A(()=>e.d?.faults||{}),n=A(()=>s.value.partial||[]),l=A(()=>e.d?.m8&&!e.d.m8.err?e.d.m8.mtbf:null),i=A(()=>s.value.monthly||{months:[],vals:[]}),c=A(()=>i.value.per_day||[]),r=A(()=>n.value.length?(i.value.months||[]).indexOf(n.value[0]):-1),u=A(()=>{const F=n.value.length?o("flt.rate_partial",{m:n.value.join("/")}):o("flt.rate_full"),U=r.value>=0&&!!i.value.per_day;return F+(U?" "+o("flt.rate_example",{m:n.value[0],v:m.value}):"")}),m=A(()=>{const F=r.value;return F>=0&&i.value.per_day?i.value.per_day[F]:null}),f=A(()=>n.value.length?o("win.partial",{m:n.value.join("/"),c:Math.round((s.value.cov_min||0)*100)}):""),g={grid:{left:60,right:20,top:24,bottom:46},tooltip:{trigger:"axis"},yAxis:{type:"value"}},_=A(()=>({...g,xAxis:{type:"category",data:i.value.months||[]},series:[{type:"bar",data:c.value.map(F=>F==null?null:Math.round(F*100)/100),itemStyle:{color:"#0b5fa5"}}],__data__:c.value.filter(F=>F!=null)}));function y(F){const U=(F||[]).filter(X=>X&&X.v>0);return{...g,xAxis:{type:"category",data:U.map(X=>X.k)},series:[{type:"bar",data:U.map(X=>X.v),itemStyle:{color:"#2f7dbf"}}],__data__:[]}}const S=F=>{const U=String(F).match(/^([0-9]+)/);return U?U[1]:String(F).slice(0,4)},k=F=>String(F??"").replace(/&/g,"&").replace(//g,">").replace(/"/g,""");function q(F,U,X){const Nt=(F||[]).filter(Ht=>Ht&&Ht.v>0);if(!Nt.length)return k(o("ch.pareto.none"));const qe=Nt.reduce((Ht,h)=>Ht+h.v,0);let Lt=0,Vt=null;for(let Ht=0;Ht=.8&&(Vt=Ht+1);const Ke=Nt.slice(0,3).map(Ht=>`${k(S(Ht.k))} ${k(String(Ht.k).replace(/^[0-9]+ */,"").slice(0,18))}`).join(" · "),Ue=o("ch.pareto.total",{n:Nt.length,tot:rt(Math.round(qe)),unit:U});return(Vt?`${k(o("ch.pareto.key",{k:Vt}))} (${k(Ue)})`:k(Ue))+"
    "+k(o("ch.pareto.top3"))+Ke+(X?"
    "+k(X):"")}const w=A(()=>q(s.value.pareto_n||[],o("unit.n"),o("flt.pareto_n_note"))),M=A(()=>q(s.value.pareto_d||[]," h",o("flt.pareto_d_note"))),R=A(()=>q(pt.value," h",o("flt.stop_pareto_note"))),D=A(()=>y(s.value.pareto_n||[])),I=A(()=>y(s.value.pareto_d||[])),Z=A(()=>{const F=(s.value.quad||[]).filter(U=>U&&U.n>0&&U.med>0);return{grid:{left:60,right:24,top:24,bottom:46},xAxis:{type:"log",name:"MTBF(h)"},yAxis:{type:"value",name:"MDT(h)"},series:[{type:"scatter",data:F.map(U=>[U.mtbf??U.n,U.med]),symbolSize:U=>Math.min(28,6+Math.sqrt(Math.max(U[0]||1,1))),itemStyle:{color:"#b42318",opacity:.6}}],__data__:[]}}),G=A(()=>s.value.per_t||[]),et=A(()=>Math.max(1,...G.value.map(F=>F.v))),yt=A(()=>l.value&&e.d?.m8?.seasonal?e.d.m8.seasonal:[]),It=["var(--accent)","#D48A1E","#2E8B6A","#7C5295"],xe=A(()=>yt.value.slice(0,4).map(F=>String(F.name).slice(0,16))),Pe=A(()=>{const F=yt.value.slice(0,4),U=F.length?F[0].months:[];return{...g,xAxis:{type:"category",data:U},legend:{top:0,textStyle:{fontSize:10}},series:F.map(X=>({name:String(X.name).slice(0,16),type:"line",data:X.vals,connectNulls:!1})),__data__:[]}}),Ft=A(()=>e.d?.rel&&!e.d.rel.err?e.d.rel:null),We=A(()=>{const F=Ft.value?.表||[];return{grid:{left:60,right:24,top:24,bottom:40},xAxis:{type:"value",name:"MTBF(h)"},yAxis:{type:"value",name:"MDT(h)"},series:[{type:"scatter",data:F.filter(U=>!U.外部&&U.MTBF_h).map(U=>[U.MTBF_h,U.MDT_h]),symbolSize:8,itemStyle:{color:"#2f7dbf",opacity:.5}}],__data__:[]}}),_s=A(()=>{const F=Ft.value?.表||[],U=(F.find(Lt=>Lt.部件==="无记录停机")||{}).停机时长h||0,X=F.filter(Lt=>Lt.部件==="未归类").reduce((Lt,Vt)=>Lt+Vt.停机时长h,0);return{ok:(Ft.value?.总停机h||0)-U-X,unk:U,un2:X}}),wt=A(()=>{const F=_s.value;return{xAxis:{type:"value"},yAxis:{type:"category",data:[o("ch.attrib.ok",{h:Math.round(F.ok),p:""}),o("ch.attrib.none",{h:Math.round(F.unk),p:""}),o("ch.attrib.uncls",{h:Math.round(F.un2)})]},series:[{type:"bar",data:[Math.round(F.ok),Math.round(F.unk),Math.round(F.un2)],itemStyle:{color:"#0b5fa5"}}],__data__:[Math.round(F.ok),Math.round(F.unk),Math.round(F.un2)]}}),pt=A(()=>(e.d?.m8?.stop_pareto||[]).map(F=>({k:String(F.k).split(";")[0].slice(0,26),v:F.h}))),at=A(()=>y(pt.value)),Ut=A(()=>l.value?.台级top||[]),ke=A(()=>Math.max(1,...Ut.value.map(F=>F.时长h)));return(F,U)=>(b(),$("section",null,[a("div",pu,d(p(o)("flt.eyebrow")),1),a("div",fu,[a("b",null,d(p(o)("win.banner",{win:p(_e)(t.d.win)})),1),f.value?(b(),$(N,{key:0},[U[0]||(U[0]=W(" | ",-1)),a("span",hu,d(f.value),1)],64)):st("",!0)]),a("div",mu,[a("div",_u,[W(d(p(o)("flt.alarm_face"))+" ",1),a("span",vu,d(p(o)("flt.alarm_meta",{n:p(rt)(s.value.total),c:s.value.n_codes,win:p(_e)(t.d.win)})),1)]),a("div",gu,[a("h3",null,d(p(o)("flt.rate")),1),ht(qt,{option:_.value,height:"250px"},null,8,["option"]),a("p",bu,[a("b",null,d(p(o)("flt.rate_note")),1),W(" — "+d(u.value),1)])]),a("div",yu,[a("h3",null,d(p(o)("flt.pareto_n")),1),ht(qt,{option:D.value,height:"240px"},null,8,["option"]),a("p",{class:"small muted",style:{"margin-top":"5px","line-height":"1.6"},innerHTML:w.value},null,8,$u)]),a("div",wu,[a("h3",null,d(p(o)("flt.pareto_d")),1),ht(qt,{option:I.value,height:"240px"},null,8,["option"]),a("p",{class:"small muted",style:{"margin-top":"5px","line-height":"1.6"},innerHTML:M.value},null,8,xu)]),a("div",ku,[a("h3",null,d(p(o)("flt.quad")),1),ht(qt,{option:Z.value,height:"300px"},null,8,["option"]),a("p",Su,[W(d(p(o)("flt.quad_note",{n:s.value.n_codes,m:(s.value.quad||[]).length}))+" ",1),n.value.length?(b(),$("span",Mu,d(p(o)("flt.quad_partial",{m:n.value.join("/"),c:Math.round((s.value.cov_min||0)*100)})),1)):st("",!0),W(" "+d(p(o)("flt.quad_note2")),1)])]),a("div",Tu,[a("h3",null,d(p(o)("flt.per_t",{n:G.value.length})),1),a("div",Cu,[a("table",null,[a("tr",null,[a("th",Eu,d(p(o)("ui.unit")),1),a("th",null,d(p(o)("ui.count")),1),a("th",Au,d(p(o)("flt.per_t_share")),1)]),(b(!0),$(N,null,Q(G.value,X=>(b(),$("tr",{key:X.k},[a("td",null,[a("b",null,d(p(mt)(X.k)),1)]),a("td",null,[a("i",{class:"bar",style:gt(`width:${Math.round(X.v/et.value*90)}px;background:${X.v/et.value>.6?"var(--critical)":"var(--accent)"}`)},null,4),a("span",Ou,d(p(rt)(X.v)),1)]),a("td",Du,d((X.v/s.value.total*100).toFixed(1))+"%",1)]))),128))])]),a("p",Lu,d(p(o)("flt.per_t_note",{n:p(rt)(s.value.total)})),1)]),t.d.m8&&t.d.m8.err?(b(),$("div",Pu,[a("p",qu,d(p(o)("flt.block_err",{k:"m8",e:t.d.m8.err})),1)])):st("",!0),l.value&&yt.value.length?(b(),$("div",Hu,[a("h3",null,[W(d(p(o)("flt.seasonal"))+" ",1),a("span",Ru,"("+d(p(o)("flt.seasonal_unit"))+")",1)]),ht(qt,{option:Pe.value,height:"260px"},null,8,["option"]),a("div",ju,[(b(!0),$(N,null,Q(xe.value,(X,Nt)=>(b(),$("span",{key:Nt},[a("i",{style:gt(`background:${It[Nt%4]}`)},null,4),W(d(X),1)]))),128))]),a("p",Iu,d(p(o)("flt.seasonal_note")),1)])):st("",!0),l.value?(b(),$(N,{key:2},[a("div",Fu,[W(d(p(o)("flt.stop_face"))+" ",1),a("span",Nu,d(p(o)("flt.stop_meta",{h:p(rt)(l.value.停机总时长h),n:p(rt)(l.value.停机事件数)})),1)]),Ft.value?(b(),$("div",Bu,[a("h3",null,d(p(o)("flt.ram")),1),ht(qt,{option:We.value,height:"300px"},null,8,["option"]),a("p",Wu,d(p(o)("flt.ram_note",{a:Ft.value.设备类停机h,b:Ft.value.外部类停机h})),1),a("div",Ku,[ht(qt,{option:wt.value,height:"160px"},null,8,["option"])]),a("p",Uu,d(p(o)("flt.attrib_note",{h:((Ft.value.表||[]).find(X=>X.部件==="无记录停机")||{}).停机时长h||0})),1)])):st("",!0),a("div",Vu,[a("h3",null,d(p(o)("flt.stop_pareto")),1),ht(qt,{option:at.value,height:"240px"},null,8,["option"]),a("p",{class:"small muted",style:{"margin-top":"5px","line-height":"1.6"},innerHTML:R.value},null,8,Gu),a("p",zu,d(l.value.口径),1)]),a("div",Yu,[a("h3",null,d(p(o)("flt.stop_units",{n:Ut.value.length})),1),a("div",Ju,[a("table",null,[a("tr",null,[a("th",Zu,d(p(o)("ui.unit")),1),a("th",null,d(p(o)("flt.stop_h")),1),a("th",Xu,d(p(o)("flt.stop_n")),1)]),(b(!0),$(N,null,Q(Ut.value,X=>(b(),$("tr",{key:X.t},[a("td",null,[a("b",null,d(p(mt)(X.t)),1)]),a("td",null,[a("i",{class:"bar",style:gt(`width:${Math.round(X.时长h/ke.value*90)}px;background:${X.时长h/ke.value>.6?"var(--critical)":"var(--accent)"}`)},null,4),a("span",Qu,d(p(rt)(X.时长h)),1),U[1]||(U[1]=W("h",-1))]),a("td",tp,d(X.次),1)]))),128))])]),a("p",ep,d(p(o)("flt.stop_units_note")),1)])],64)):st("",!0)])]))}}),np=[[/DE[/]NDE/g,"驱动端与非驱动端"],[/GenDE/g,"发电机驱动端"],[/GenNDE/g,"发电机非驱动端"],[/HS_gen2?/g,"高速轴发电机侧"],[/HS_rot/g,"高速轴转子侧"],[/IMS/g,"中间轴"],[/(?String(t??"").replace(/&/g,"&").replace(//g,">").replace(/"/g,"""),Ni=t=>String(t??""),it=t=>J(t),lp={危险:"bad",报警:"warn",不可判:"unk",良好:"ok",优秀:"ex"},ip={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"},Nn=t=>lp[String(t)]||ip[String(t)],Bi={bad:"var(--critical)",warn:"var(--warning)",unk:"var(--unknown)",ok:"var(--good)",ex:"var(--excellent)"},Wi={优秀:"var(--excellent)",良好:"var(--good)",报警:"var(--warning)",危险:"var(--critical)",不可判:"var(--unknown)",监测不可用:"var(--unknown)",无监测:"var(--unknown)"},Ki={bad:"var(--critical)",warn:"var(--warning)",note:"var(--muted)",ok:"var(--good)",unlisted:"var(--muted)",stale:"var(--muted)",meta:"var(--muted)"},ap={定论:"confirmed","准定论·预警":"near","候选·新发":"candidate_new",候选:"candidate","候选·记基线":"candidate_baseline",参考:"reference",INSUFFICIENT:"insufficient",正常:"normal",撤回:"withdrawn"},Bn=t=>"st."+(t==="ex"?"excellent":t),be=t=>{const e=Nn(t);return e?o(Bn(e)):it(t)},cn=t=>{const e=ap[String(t)],s="tier."+e;return e?o(s):String(t)==="—"?"—":it(t)},Ui=(t,e,s)=>`${t}${e}`,De=t=>{let e=String(t??"");for(const[s,n]of np)e=e.replace(s,n);return e},dn=t=>De(t),op=(t,e)=>{if(!t||t.filter(g=>g!=null).length<3)return"";const s=t.filter(g=>g!=null),n=Math.min(...s),l=Math.max(...s),i=l-n||1,c=84,r=22,u=t.length;let m="",f=null;return t.forEach((g,_)=>{if(g==null)return;const y=_/(u-1)*c,S=r-2-(g-n)/i*(r-4);m+=(m?"L":"M")+y.toFixed(1)+" "+S.toFixed(1),f=[y,S]}),``},rp={齿轮箱:"#8A6D3B",发电机:"#4A6FA5",主轴承:"#2E7D6B",变桨叶片:"#4A6FA5",偏航:"#2E7D6B",测风:"#7C5295",其他:"#5A6470"},cp=(t,e,s)=>{if(!e)return`${o("fus.no_alarm")}`;const n=118,l=Math.max(6,Math.round(e/Math.max(s||e,1)*n));return`
    ${(t||[]).map(i=>``).join("")}
    ${(t||[]).slice(0,2).map(i=>pe(i.k)+" "+i.n).join(" · ")}
    `};function dp(t){const e=(t.列窗||{}).months||[];let s=`
    ${o("fus.rules_head")}

    ${o("fus.rule1")}
    ${o("fus.rule2")}

    `;s+=`

    ${o("fus.matrix_head")}

    ${o("fus.matrix_note1")}

    ${o("fus.matrix_note2",{n:e.length,m0:e[0]||"?"})}

    ${o("fus.legend_state")} ${["bad","warn","ok","ex","unk"].map(_=>`${o(Bn(_))}`).join("")}
    ${o("fus.legend_tier")} ${["定论","准定论·预警","候选·新发","候选","候选·记基线","参考","INSUFFICIENT"].map(_=>`${cn(_)}`).join("")}
    ${o("fus.legend_note")}
    `;const n=_=>{const y=String(_||""),S=y.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 S?S[0].startsWith("至")?o("win.through",{date:S[0].replace(/^至\s*/,"")}):S[0]:y.slice(0,14)},l=(_,y,S)=>`
    ${_}
    ${it(n(y))}${S||""}
    `,i=t.列窗||{};s+=`
    ${''.repeat(6)}${l(o("fus.col.vib"),i.振动,o("fus.col.fixed"))}${l(o("fus.col.temp"),i.温度)}${l(o("fus.col.lub"),i.润滑,o("fus.col.display_only"))}${l(o("fus.col.oil"),i.油液)}${l(o("fus.col.alarm"),i.报警)}${l(o("fus.col.wo"),i.工单)}`;const c=t.矩阵||[],r=Math.max(1,...c.map(_=>(_.报警||{}).n||0)),u=Math.max(1,...c.map(_=>(_.工单||{}).n||0)),m=t.色标||{},f=_=>{if(_.ostate&&_.ostate!=="不可判")return be(_.ostate);const y=String(_.note||"");return/数据不足|不可判|nsufficient/.test(y)?o("fus.short.nodata"):/未评估|ot assessed/.test(y)?o("fus.short.uneval"):/无样|未取样|o sample/.test(y)?o("fus.short.nosample"):/样龄|stale/.test(y)?o("fus.short.stale"):{ok:o("fus.short.normal"),unlisted:o("fus.short.unlisted"),stale:o("fus.short.stale")}[_.level]||"—"},g=_=>{const y=_||{},S=Wi[y.ostate]||m[y.wlevel]||Ki[y.level]||"var(--muted)",k=De(y.note),q=["bad","warn","note"].includes(y.level),w=J(k)+o("fus.tip_state",{s:be(y.ostate||"?")});if(!q)return``;const M=k.split(/[::]/),R=(M.length>1?M.slice(1).join(":"):k).trim(),D=/^[ ]*(评估报告|两口径差异|⚠|ssessment)/.test(R)||R.length>16?"":R,I=D?it(D):y.ostate&&y.ostate!=="不可判"?"":f(y),Z=y.wlevel&&y.wlevel!=="—"&&y.wlevel!=="正常"&&y.ostate?Ui(be(y.ostate),cn(y.wlevel),S):"";return``};return c.forEach(_=>{const y=_.报警||{n:0,fam:[]},S=_.工单||{n:0,acts:[]},k=y.rank&&y.rank<=5?"var(--warning)":"var(--line)",q=y.burst,w=J((y.items||[]).map(M=>`${M.code} ${De(M.text)} — ${M.n} (${M.first}~${M.last})`).join(` `))+(q?` `+J(o("fus.burst_tip",{c:q.code,p:(q.share*100).toFixed(0),m:q.med_s})):"");s+=`${g(_.振动)}${g(_.温度)}${g(_.润滑)}${g(_.油液)} `}),s+`
    ${o("ui.unit")}
    ${f(y)}
    ${I}
    ${Z}
    ${op(y.hist,y.level==="bad"?"var(--critical)":y.level==="warn"?"var(--warning)":"var(--muted)")}
    ${mt(_.turbine)}${o("fus.alarm_n",{n:y.n})}${y.rank?`${o("fus.alarm_rank",{r:y.rank,t:y.tot})}`:""}${q?`
    ${o("fus.burst",{p:(q.share*100).toFixed(0),c:q.code})}
    `:""}${y.rank&&y.rank<=10||q?cp(y.fam,y.n,r):""}
    ${S.n?`${o("fus.wo_n",{n:S.n})}${S.last?` · ${J(S.last)}`:""}
    ${(S.acts||[]).slice(0,2).map(M=>it(M.k)+"×"+M.n).join(" · ")}
    `:'—'}

    ${o("fus.matrix_foot")}

    `}const El=(t,e,s)=>{const n=Math.max(t,e,7),l=120,i=c=>Math.max(2,c/n*(l-4));return``},xn=(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`${_p.map(([l,i])=>{const c=i.test(s)||n&&["ps","ims","hss"].includes(l);return``}).join("")}`};function up(t){const e=t.能力&&t.能力.loop&&t.能力.loop["换件闭环 (检出→换件→恢复)"]?t.能力.loop:null;if(!e)return`

    ${o("fus.loop_none")}

    `;const s=e["换件闭环 (检出→换件→恢复)"]||[],n=e["当前在升 (无工单可对)"]||[],l=e["负面对照 (工单后持平)"];return`

    ${o("fus.loop_head")}

    ${o("fus.loop_note")}

    ${o("fus.loop_closed",{n:s.length})}

    ${s.map(i=>``).join("")}
    ${o("ui.unit")}${o("fus.col.part")}${o("fus.loop_item")}${o("fus.loop_date")}${o("fus.loop_ba")}${o("fus.loop_ratio")}${o("fus.loop_verdict")}
    ${mt(i.turbine)}${xn(i.component+(i.title||""),"var(--good)")} ${Hs(i.component)}${it(i.title)}${J(i.replace_date)}${El(i.pre,i.post,"var(--good)")}${i.pre} → ${i.post}${i.ratio}×${it(i.verdict)}

    ${o("fus.loop_neg",{n:l})}

    ${o("fus.loop_rising",{n:n.length})}

    ${n.map(i=>``).join("")}
    ${o("ui.unit")}${o("fus.col.part")}${o("fus.loop_el")}${o("fus.loop_x")}${o("fus.loop_state")}
    ${mt(i.turbine)}${xn(i.component,"var(--warning)")} ${Hs(i.component)}${El(i.early,i.late,"var(--warning)")}${i.early} → ${i.late}${i.ratio}×${o("rpt.units.rising",{r:i.ratio})}

    ${o("fus.loop_bound",{b:it(String(e["★数据边界"]||"").split("**").join(""))})}

    `}const pp=(t,e,s,n)=>{if(e==null)return`${it(Ni(n).slice(0,30))}`;const l=6,i=104,c=i/2,r=Math.max(-1,Math.min(1,e/l)),u=Math.abs(r)*(c-8),f=Math.abs(e)>=3?/候选|andidate/.test(s||"")?"var(--warning)":/记基线|aseline/.test(s||"")?"var(--accent)":/不可判|返服|ndeterm/.test(s||"")?"var(--unknown)":"var(--muted)":"var(--muted)",g=Math.abs(e)>l;return`
    ${g?``:""}${e>0?"+":""}${e}K
    ${J(t||"")}
    `},fp=(t,e)=>{if(!t||!t.length)return`${o("fus.win_none")}`;const s=Date.parse("2026-01-01"),n=Date.parse("2026-09-01"),l=118,i=c=>3+Math.max(0,Math.min(1,(Date.parse(c)-s)/(n-s)))*(l-6);return`
    ${t.map(([c,r])=>{const u=i(c),m=i(r);return``}).join("")}
    ${o("fus.win_n",{n:t.length})}
    `},hp=(t,e,s)=>`
    ${J(t||o("fus.oil_none"))}
    ${t?o(e?"fus.oil_fresh":"fus.oil_stale"):"—"}
    `,Ce=(t,e)=>{const s=Nn(t);return s?`${o(Bn(s))}`:t?`${J(t)}`:""};function mp(t,e){const s=t.表||[],n=t.矩阵||[];let l=s,c=`

    ${o("fus.units_head",{u:new Set(s.map(r=>r.turbine)).size,n:l.length+"",f:""})}

    ${["bad","warn","note","ok"].map(r=>``).join("")}
    ${o("fus.eval_head")}
    ${o("fus.eval_state")}${o("fus.eval_tier")}${o("fus.eval_meaning")}
    ${Ce("危险")}${o("tier.confirmed.s")}${o("fus.m.bad")} (${o("fus.m.bad_e")})
    ${Ce("报警")}${o("tier.near")} / ${o("tier.candidate_new")}${o("fus.m.warn")} (${o("fus.m.warn_e")})
    ${Ce("良好")}${o("tier.candidate")} / ${o("tier.candidate_baseline")}${o("fus.m.ok")} (${o("fus.m.ok_e")})
    ${Ce("优秀")}${o("tier.reference")} / ${o("tier.normal")} / ${o("tier.withdrawn")}${o("fus.m.ex")} (${o("fus.m.ex_e")})
    ${Ce("不可判")}${o("tier.insufficient")}${o("fus.m.unk")} (${o("fus.m.unk_e")})

    ${o("fus.eval_note")}

    `;return l.forEach(r=>{const u=Ki[r.级]||"var(--accent)",m=Wi[r.设备状态]||"var(--muted)";c+=``}),c+"
    ${o("ui.unit")}${o("fus.col.part")}${o("fus.col.state_concl")}${o("fus.col.claim")} ${o("fus.col.claim_axis")}${o("fus.col.signal")}${o("fus.col.tempaxis")} ${o("fus.col.tempaxis_note")}${o("fus.col.oil")}
    ${mt(r.turbine)}${xn(r.部件,u)} ${Hs(r.部件)} ${Ui(be(r.设备状态||"—"),it(r.振动结论),m)}${fp(r.窗区间,r.claim_window)} ${it(De(r.振动信号))}${pp(r.温度通道,r.温度dev,r.温度判,r.温度轴)}${hp(r.油末样,r.油新鲜,r.油样轴)}
    "}const _p=[["mbf",/主轴承[((]前|主轴承前|主轴承[++]|主轴承(?![((前后])/],["mba",/主轴承[((]后|主轴承后/],["ps",/行星|二级行星/],["ims",/中间轴|中速/],["hss",/高速轴|高速(?!.*发电)/],["gde",/发电机DE|发电机[((]|发电机(?!NDE)/],["gnde",/发电机NDE|NDE/]],Je=t=>Bi[Nn(t)]||null,Al=t=>`${Object.entries(t).map(([e,s])=>``).join("")}`,vp=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`
    ${[0,1,2,3].map(l=>`=s?'stroke-dasharray="2 1.5"':""}/>`).join("")}${it(e)}
    `};function gp(t,e){if(!t.事件)return`

    ${o("ui.empty")}

    `;let s=`

    ${o("fus.ev_win",{win:_e(e.win)})}

    `;for(const[n,l]of Object.entries(t.事件)){const i=l,c=i.报警||{},r=i.工单||{};s+=`

    ${o("fus.ev_head",{c:pe(n),an:c.总条数||0,au:c.台数||0,wn:r.总条数||0,wu:r.台数||0})}

    `,c.总条数>0?s+=`
    ${(c.码统计||[]).map(u=>``).join("")}
    ${o("fus.ev_code")}${o("fus.ev_text")}${o("ui.count")}${o("fus.ev_units")}${o("fus.ev_dur")}
    ${J(u.code)}${it(De(u.text))}${u.条数}${u.台数}${u.时长h}

    ${o("fus.ev_top")}${Object.entries(c.top台||{}).map(([u,m])=>`${mt(u)}×${m}`).join(" · ")}

    ${o("fus.ev_recent",{n:(c.近况||[]).length})}
    ${(c.近况||[]).map(u=>``).join("")}
    ${o("ui.unit")}${o("fus.ev_time")}${o("fus.ev_code")}${o("fus.ev_text")}${o("fus.ev_min")}
    ${mt(u.t)}${J(u.on)}${J(u.code)}${it(De(u.text))}${u.dur_min??"—"}
    `:s+=`

    ${o("fus.ev_no_alarm")}

    `,r.总条数>0?s+=`
    ${(r.明细||[]).map(u=>``).join("")}
    ${o("ui.unit")}${o("ui.date")}${o("fus.ev_wo_name")}${o("fus.ev_wo_act")}${o("fus.ev_wo_cause")}
    ${mt(u.t)}${J(u.date)}${it(u.name)}${it(u.act)}${it(u.cause)}
    `:s+=`

    ${o("fus.ev_no_wo")}

    `,s+="
    "}return s}function bp(t,e){if(!t)return`

    ${o("fus.cms_loading")}

    `;if(t.error)return`

    ${it(t.error)}

    `;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`

    ${o("fus.cms_head",{d:J(t.date||"")})}

    ${t.时间范围?`

    ${o("fus.cms_window",{r:J(t.时间范围)})}

    `:""}

    ${it(t.overall||"")} ${o("fus.cms_note")}

    ${o("fus.cms_action")}

    ${(t.action||[]).map(n=>{const l={};return String(n[2]).split(/[;;]/).forEach(i=>{const c=i.split(/[::]/);if(c.length>1){const r=s[c[0].trim()]||null;r&&(l[r]=Je(c[1].trim()))}}),``}).join("")}
    ${o("ui.unit")}${o("fus.loop_state")}${o("fus.cms_focus")} ${o("fus.cms_focus_note")}${o("fus.cms_evidence")}${o("fus.cms_act")}
    ${mt(n[0])}${Ce(n[1])}${Al(l)} ${it(n[2])}${vp(n[3])}${/P0/.test(n[4])?`${J(n[4])}`:J(n[4])}

    ${o("fus.cms_grades")}

    ${(t.grades||[]).map(n=>``).join("")}
    ${o("ui.unit")}${o("fus.cms_chain")} ${o("fus.cms_chain_note")}${o("fus.cms_overall")}${o("fus.cms_act")}
    ${mt(n.t)}${Al({mbf:Je(n.主轴承前),mba:Je(n.主轴承后),gb:Je(n.齿轮箱),gen:Je(n.发电机)})}${Ce(n.综合)}${J(n.行动)}
    ${o("fus.cms_basis")} ${o("fus.cms_basis_note",{a:((t.diff||{}).only_cms||[]).map(mt).join(", ")||o("fus.none_word"),b:((t.diff||{}).only_vibration_package||(t.diff||{}).only_handoff||[]).map(mt).join(", ")||o("fus.none_word")})}

    ${o("fus.cms_link")} ${o("fus.cms_open")} ${o("fus.cms_static")}

    `}const yp=["matrix","loop","units","events","cms"],$p={class:"eyebrow"},wp={style:{display:"flex",gap:"8px","margin-bottom":"14px","flex-wrap":"wrap"}},xp=["data-fsub","onClick"],kp=["innerHTML"],Sp=$t({__name:"Vibration",props:{d:{},sub:{},cms:{}},emits:["sub"],setup(t,{emit:e}){const s=t,n=e,l=A(()=>s.sub||"matrix"),i=A(()=>s.d?.fus),c=A(()=>{const r=i.value;return!r||r.err?`

    ${o("fus.unavailable",{e:String(r&&r.err||"")})}

    `:l.value==="matrix"?dp(r):l.value==="loop"?up(r):l.value==="units"?mp(r,null):l.value==="events"?gp(r,s.d):l.value==="cms"?bp(s.cms??null):`

    子视图「${o("fus.sub."+l.value)}」尚未迁移到 Vue(迁移中)。

    `});return(r,u)=>(b(),$("section",null,[a("div",$p,d(p(o)("fus.eyebrow")),1),a("div",wp,[(b(!0),$(N,null,Q(p(yp),m=>(b(),$("button",{key:m,class:Ct(["pill",{on:m===l.value}]),"data-fsub":m,onClick:f=>n("sub",m)},d(p(o)("fus.sub."+m)),11,xp))),128))]),a("div",{innerHTML:c.value},null,8,kp)]))}}),Mp={class:"eyebrow"},Tp={class:"panel mb small",style:{"border-left":"3px solid var(--accent)"}},Cp={class:"muted",style:{"margin-top":"3px"}},Ep={key:0,class:"panel mb",style:{"border-left":"3px solid var(--critical)"}},Ap={class:"small"},Op={class:"small muted",style:{"font-weight":"400"}},Dp={key:0,class:"chip"},Lp={style:{display:"flex","flex-wrap":"wrap",gap:"18px"}},Pp={style:{flex:"1 1 300px","min-width":"280px"}},qp={class:"small",style:{"font-weight":"600","margin-bottom":"4px"}},Hp={class:"small muted",style:{"margin-top":"4px"}},Rp={style:{flex:"1 1 300px","min-width":"280px"}},jp={class:"small",style:{"font-weight":"600","margin-bottom":"4px"}},Ip=["innerHTML"],Fp={class:"small",style:{"font-weight":"600",margin:"12px 0 4px"}},Np={class:"small muted",style:{"margin-top":"4px"}},Bp={key:2,class:"panel mb"},Wp={class:"small muted",style:{"font-weight":"400"}},Kp=["innerHTML"],Up={class:"eyebrow"},Vp={key:3,class:"panel",style:{"border-left":"3px solid var(--critical)"}},Gp={class:"small"},zp={key:4,class:"panel",style:{"border-left":"3px solid var(--accent)"}},Yp={class:"small"},Jp={key:5,class:"panel"},Zp={class:"small muted"},Xp={key:6,class:"grid2"},Qp={key:0},tf={class:"small muted",style:{"font-weight":"400"}},ef={class:"legend",style:{"margin-top":"6px","flex-wrap":"wrap"}},sf={key:0,class:"small muted",style:{"margin-top":"6px"}},nf=$t({__name:"Generation",props:{d:{},curves:{},pending:{type:Boolean}},setup(t){const e=t,s=A(()=>e.d?.m9&&!e.d.m9.err?e.d.m9:null),n=A(()=>e.d?.control||null),l=A(()=>e.curves||null),i=A(()=>(e.d?.sysmx_span||[]).join(" ~ ")||""),c=M=>{const R=Object.entries(M?.分组||{}).map(([Z,G])=>({v:parseFloat(Z),n:G,raw:Z}));if(!R.length)return null;const D=R.map(Z=>Z.v).sort((Z,G)=>Z-G),I=D.length%2?D[(D.length-1)/2]:(D[D.length/2-1]+D[D.length/2])/2;return{gs:R,med:I}},r=A(()=>({p:c(s.value?.P封顶),w:c(s.value?.ω封顶)})),u=A(()=>{const M=r.value.p,R=r.value.w,D=[];return M&&D.push({name:o("ch.cap.p"),type:"scatter",data:M.gs.map(I=>[I.v,1]),symbolSize:10,itemStyle:{color:"#0b5fa5",opacity:.6}}),R&&D.push({name:o("ch.cap.w"),type:"scatter",data:R.gs.map(I=>[I.v,0]),symbolSize:10,itemStyle:{color:"#b45309",opacity:.6}}),{grid:{left:56,right:36,top:20,bottom:24},xAxis:{type:"value"},yAxis:{type:"value",min:-.5,max:1.5,show:!1},series:D,__data__:[]}}),m=A(()=>s.value?.β_schedule?.离群||[]),f=A(()=>s.value?.β_schedule?.全场同档差中位||0),g=A(()=>({grid:{left:56,right:60,top:20,bottom:24},xAxis:{type:"value"},yAxis:{type:"category",data:m.value.map(M=>mt(M.t))},series:[{type:"bar",data:m.value.map(M=>M.平均偏),itemStyle:{color:"#0b5fa5"}}],__data__:[]})),_=A(()=>{const M=n.value?.curve?.cands||[];return M.length?M.map(R=>`${mt(R.t)} ${R.dev}% ${it(R.判)}`).join(" | "):o("gen.no_cands")}),y=A(()=>o("gen.beta_note",{units:m.value.map(M=>`${mt(M.t)}`).join(" / "),k:m.value.length?Math.round(Math.max(...m.value.map(M=>M.平均偏))/Math.max(f.value||0,.01)):"—",v:it(s.value?.β_schedule?.判)})),S=A(()=>Object.entries(s.value?.尺子||{}).map(([M,R])=>({k:M,r:R.极差/R.σ}))),k=A(()=>({grid:{left:100,right:80,top:20,bottom:24},xAxis:{type:"value"},yAxis:{type:"category",data:S.value.map(M=>M.k)},series:[{type:"bar",data:S.value.map(M=>M.r),itemStyle:{color:"#0b5fa5"}}],__data__:[]})),q=A(()=>l.value?.figs||[]);function w(M){const R=M.months||M.x||[];return{grid:{left:56,right:20,top:28,bottom:40},legend:{top:0,textStyle:{fontSize:10}},xAxis:{type:"category",data:R},yAxis:{type:"value",scale:!0},series:(M.series||[]).map(D=>({name:String(D.name),type:"line",data:D.vals,connectNulls:!1})),__data__:[]}}return(M,R)=>(b(),$("section",null,[a("div",Mp,d(p(o)("gen.eyebrow")),1),a("div",Tp,[a("b",null,d(p(o)("gen.fixed_win")),1),W(" "+d(i.value?p(o)("gen.win_range",{span:i.value}):"")+" ",1),a("div",Cp,d(p(o)("gen.win_why")),1)]),t.d.m9&&t.d.m9.err?(b(),$("div",Ep,[a("p",Ap,d(p(o)("flt.block_err",{k:"m9",e:p(it)(t.d.m9.err)})),1)])):st("",!0),s.value?(b(),$("div",{key:1,class:"panel mb",style:gt(t.pending?"border-left:3px solid var(--accent)":"")},[a("h3",null,[W(d(p(o)("gen.ctrl"))+" ",1),a("span",Op,d(p(o)("gen.ctrl_win",{win:p(it)(s.value.窗)})),1),t.pending?(b(),$("span",Dp,d(p(o)("gen.recomputing_short")),1)):st("",!0)]),a("div",Lp,[a("div",Pp,[a("div",qp,d(p(o)("gen.cap")),1),ht(qt,{option:u.value,height:"170px"},null,8,["option"]),a("p",Hp,d(p(o)("gen.cap_note")),1)]),a("div",Rp,[a("div",jp,d(p(o)("gen.beta")),1),ht(qt,{option:g.value,height:"170px"},null,8,["option"]),a("p",{class:"small muted",style:{"margin-top":"4px"},innerHTML:y.value},null,8,Ip),a("div",Fp,d(p(o)("gen.ruler")),1),ht(qt,{option:k.value,height:"170px"},null,8,["option"]),a("p",Np,d(p(o)("gen.ruler_note")),1)])])],4)):st("",!0),n.value&&n.value.curve?(b(),$("div",Bp,[a("h3",null,[W(d(p(o)("gen.cands"))+" ",1),a("span",Wp,d(p(o)("gen.cands_meta",{note:p(it)(n.value.curve.note||""),s:t.d.sigma||n.value.curve.sigma})),1)]),a("p",{class:"small",innerHTML:_.value},null,8,Kp)])):st("",!0),a("div",Up,d(p(o)("gen.figs")),1),l.value&&l.value.err?(b(),$("div",Vp,[a("p",Gp,d(p(J)(l.value.err)),1)])):l.value&&l.value.building?(b(),$("div",zp,[a("p",Yp,[a("b",null,d(p(o)("gen.recomputing")),1),W(" "+d(p(it)(l.value.curves?.note||"")),1)]),R[0]||(R[0]=a("div",{class:"skel",style:{width:"60%","margin-top":"10px"}},null,-1)),R[1]||(R[1]=a("div",{class:"skel",style:{width:"80%","margin-top":"8px"}},null,-1))])):l.value?(b(),$("div",Xp,[(b(!0),$(N,null,Q(q.value,(D,I)=>(b(),$("div",{key:I,class:"panel"},[a("h3",null,[W(d(p(it)(D.title||"")),1),D.unit?(b(),$("span",Qp,[a("span",tf,"("+d(p(it)(D.unit))+")",1)])):st("",!0)]),ht(qt,{option:w(D),height:"260px"},null,8,["option"]),a("div",ef,[(b(!0),$(N,null,Q(D.series||[],(Z,G)=>(b(),$("span",{key:G},[a("i",{style:gt(`background:${["var(--accent)","#D48A1E","#2E8B6A","#7C5295"][G%4]}`)},null,4),W(d(String(Z.name)),1)]))),128))]),D.note?(b(),$("p",sf,d(p(it)(D.note)),1)):st("",!0)]))),128))])):(b(),$("div",Jp,[a("p",Zp,d(p(o)("gen.loading")),1),R[2]||(R[2]=a("div",{class:"skel",style:{width:"60%","margin-top":"10px"}},null,-1)),R[3]||(R[3]=a("div",{class:"skel",style:{width:"80%","margin-top":"8px"}},null,-1))]))]))}}),lf={class:"eyebrow"},af={class:"small muted"},of=["href"],rf=["innerHTML"],cf={class:"panel mb"},df={class:"small muted"},uf=["innerHTML"],pf={style:{display:"flex",gap:"8px","flex-wrap":"wrap",margin:"10px 0","align-items":"center"}},ff=["placeholder","value"],hf={class:"small muted",for:"askm"},mf=["innerHTML"],_f=["innerHTML"],vf=["title"],gf={class:"muted"},bf={class:"btn",id:"askgo"},yf={id:"askout",class:"small"},$f=$t({__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=vt("equip"),i=vt(""),c=vt(""),r=vt(""),u=A(()=>e.apis?.["/detail/api/ask_models"]??e.apis?.["/api/ask_models"]??null),m=A(()=>u.value?u.value.models||{}:null),f=A(()=>!!u.value?.offline||!!u.value?.LOCAL_AI_DOWN),g=A(()=>o("cat."+l.value)),_=A(()=>s.map(([I])=>``).join("")),y=A(()=>[1,2,3].map(I=>`
    ${o("cat."+l.value+".q"+I)}
    `).join("")),S=(I,Z)=>o("mdl."+I+"."+Z),k=I=>(S(I,"nm")||I)+(n[I]?" · "+o("mdl."+n[I]):"")+(S(I,"t")?" · "+S(I,"t"):""),q=I=>n[I]?n[I]==="local"?o("mdl.zero_outbound"):`${o("mdl.outbound_warn")}`:`${o("mdl.unknown_warn")}`,w=A(()=>{const I=m.value;if(I===null)return c.value;const Z=Object.keys(I);return!c.value||!Z.includes(c.value)?Z[0]||"":c.value}),M=A(()=>{const I=m.value;return I===null?'':Object.keys(I).length?Object.keys(I).map(Z=>``).join(""):``}),R=A(()=>`/?lang=zh&win=${encodeURIComponent(String(e.d?.win||""))}`),D=A(()=>w.value?q(w.value):"");return(I,Z)=>(b(),$("section",null,[a("div",lf,d(p(o)("dec.head")),1),a("p",af,[W(d(p(o)("dec.classic"))+" ",1),a("a",{href:R.value},d(p(o)("ui.open_classic")),9,of)]),a("div",{style:{display:"flex",gap:"8px",margin:"10px 0 12px","flex-wrap":"wrap"},innerHTML:_.value},null,8,rf),a("div",cf,[a("h3",null,d(p(o)("ask.common_q",{cat:g.value})),1),a("p",df,d(p(o)("cat."+l.value+".hint"))+d("。")+d(p(o)("ask.grounding")),1),a("div",{innerHTML:y.value},null,8,uf),a("div",pf,[a("input",{id:"askq",type:"text",placeholder:p(J)(p(o)("ask.placeholder",{cat:g.value})),value:i.value,style:{flex:"1","min-width":"280px"}},null,8,ff),a("label",hf,d(p(o)("ask.model")),1),a("select",{id:"askm",innerHTML:M.value},null,8,mf),a("span",{id:"mdlnote",class:"small",innerHTML:D.value},null,8,_f),a("label",{class:"small",style:{cursor:"pointer","white-space":"nowrap"},title:p(J)(p(o)("ask.xrev_title"))},[Z[0]||(Z[0]=a("input",{type:"checkbox",id:"askxrev"},null,-1)),W(" "+d(p(o)("ask.xrev"))+" ",1),a("span",gf,d(p(o)("ask.xrev_note")),1)],8,vf),a("button",bf,d(p(o)("ask.go")),1)]),a("div",yf,d(r.value||p(o)("ask.idle")),1)])]))}}),wf={class:"eyebrow"},xf={class:"panel mb"},kf={class:"small muted",style:{"font-weight":"400"}},Sf=["placeholder","value"],Mf={class:"btn","data-asst":"fault"},Tf={class:"small muted"},Cf=["innerHTML"],Ef={id:"asstOut_fault",style:{"margin-top":"10px"}},Af={class:"panel mb"},Of={class:"small muted",style:{"font-weight":"400"}},Df=["innerHTML"],Lf={class:"btn","data-asst":"prev"},Pf={id:"asstOut_prev",style:{"margin-top":"10px"}},qf={class:"panel mb"},Hf={class:"small muted",style:{"font-weight":"400"}},Rf=["innerHTML"],jf={class:"btn","data-asst":"tree"},If={id:"asstOut_tree",style:{"margin-top":"10px"}},un="display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px",Ff=$t({__name:"Assistant",setup(t){const e=["变桨","偏航","主轴承","齿轮箱","发电机","变流器","塔架与基础","主控与传感网","叶片与叶根"],s=["3225","3130","13902","10105","3224"],n=fs({fault:"",prev:"pitch",tree:"pitch",out:{fault:"",prev:"",tree:""}}),l=c=>e.map(r=>``).join(""),i=A(()=>s.map(c=>`${c}`).join(" · "));return(c,r)=>(b(),$("section",null,[a("div",wf,d(p(o)("asst.head"))+" — "+d(p(o)("asst.head_note")),1),a("div",xf,[a("h3",null,[W(d(p(o)("asst.corrective"))+" ",1),a("span",kf,d(p(o)("asst.corrective_flow")),1)]),a("div",{style:un},[a("input",{id:"asstIn_fault",placeholder:p(J)(p(o)("asst.code_placeholder")),value:n.fault,style:{flex:"1 1 220px"}},null,8,Sf),a("button",Mf,d(p(o)("ui.query")),1),a("span",Tf,[W(d(p(o)("asst.common"))+" ",1),a("span",{innerHTML:i.value},null,8,Cf)])]),a("div",Ef,d(n.out.fault),1)]),a("div",Af,[a("h3",null,[W(d(p(o)("asst.preventive"))+" ",1),a("span",Of,d(p(o)("asst.preventive_flow")),1)]),a("div",{style:un},[a("select",{id:"asstIn_prev",style:{flex:"1 1 200px"},innerHTML:l("prev")},null,8,Df),a("button",Lf,d(p(o)("ui.query")),1)]),a("div",Pf,d(n.out.prev),1)]),a("div",qf,[a("h3",null,[W(d(p(o)("asst.faulttree"))+" ",1),a("span",Hf,d(p(o)("asst.faulttree_flow")),1)]),a("div",{style:un},[a("select",{id:"asstIn_tree",style:{flex:"1 1 200px"},innerHTML:l("tree")},null,8,Rf),a("button",jf,d(p(o)("ui.query")),1)]),a("div",If,d(n.out.tree),1)])]))}}),Nf={class:"eyebrow"},Bf={key:0,class:"panel"},Wf={class:"small muted"},Kf={key:1,class:"panel"},Uf={class:"small",style:{color:"var(--critical)"}},Vf={class:"panel mb"},Gf={class:"small muted"},zf={class:"small muted"},Yf={class:"tblwrap"},Jf={style:{"margin-top":"10px"}},Zf={style:{width:"18%"}},Xf={style:{width:"20%"}},Qf={style:{width:"13%"}},th={style:{width:"10%"}},eh={style:{width:"11%"}},sh={class:"small"},nh={class:"small num"},lh={key:0,class:"muted"},ih={class:"small muted"},ah={class:"small"},oh={class:"small"},rh={class:"small"},ch={class:"muted"},dh={style:{"margin-top":"3px"}},uh={class:"muted",style:{"margin-top":"3px"}},ph=$t({__name:"System",props:{apis:{}},setup(t){const e=t,s=r=>String(r??""),n=A(()=>e.apis?.["/detail/api/maint_survey"]??e.apis?.["/api/maint_survey"]??null),l=[[["数据","Data"],"mt.layer_data","mt.layer_data_note","var(--accent)"],[["机理","Domain model","Mechanism"],"mt.layer_mech","mt.layer_mech_note","var(--warning)"]],i=A(()=>n.value?.rows||[]),c=A(()=>l.map(([r,u,m,f])=>({kn:u,kd:m,col:f,rs:i.value.filter(g=>r.includes(String(g.层)))})).filter(r=>r.rs.length));return(r,u)=>(b(),$("section",null,[a("div",Nf,d(p(o)("mt.eyebrow")),1),n.value?n.value.error?(b(),$("div",Kf,[a("p",Uf,d(p(it)(n.value.error)),1)])):(b(),$(N,{key:2},[a("div",Vf,[a("h3",null,d(p(o)("mt.head",{n:i.value.length})),1),a("p",Gf,d(p(o)("mt.note")),1)]),(b(!0),$(N,null,Q(c.value,m=>(b(),$("div",{key:m.kn,class:"panel mb",style:gt(`border-left:3px solid ${m.col}`)},[a("h3",null,d(p(o)(m.kn))+" ("+d(m.rs.length)+")",1),a("p",zf,d(p(o)(m.kd)),1),a("div",Yf,[a("table",Jf,[a("tr",null,[a("th",Zf,d(p(o)("mt.src")),1),a("th",Xf,d(p(o)("mt.cov")),1),a("th",Qf,d(p(o)("mt.last")),1),a("th",th,d(p(o)("mt.freq")),1),a("th",eh,d(p(o)("mt.resp")),1),a("th",null,d(p(o)("mt.how")),1)]),(b(!0),$(N,null,Q(m.rs,(f,g)=>(b(),$("tr",{key:g},[a("td",sh,[a("b",null,d(f.存在?"":"✗ ")+d(s(f.名)),1)]),a("td",nh,[W(d(s(f.覆盖)),1),f.条数?(b(),$("span",lh,d(p(o)("mt.rows_n",{n:p(rt)(f.条数)})),1)):st("",!0)]),a("td",ih,d(p(J)(f.末次更新||"—")),1),a("td",ah,d(s(f.频率)),1),a("td",oh,d(s(f.责任)),1),a("td",rh,[a("div",ch,[W(d(p(o)("mt.put"))+" ",1),a("code",null,d(s(f.位置)),1)]),a("div",dh,[W(d(p(o)("mt.run"))+" ",1),a("code",null,d(s(f.摄入)),1)]),a("div",uh,d(s(f.说明)),1)])]))),128))])])],4))),128))],64)):(b(),$("div",Bf,[a("p",Wf,d(p(o)("mt.surveying")),1)]))]))}}),fh={class:"eyebrow"},hh={class:"panel mb noprint"},mh={style:{display:"flex",gap:"10px","align-items":"center","flex-wrap":"wrap","margin-bottom":"10px"}},_h={class:"small",style:{"font-weight":"600"}},vh=["data-preset"],gh={id:"rptaud"},bh=["selected"],yh=["selected"],$h={class:"btn quiet",id:"rptprint"},wh={class:"btn quiet","data-export":"docx"},xh={class:"btn quiet","data-export":"xlsx"},kh={key:0,class:"small",style:{color:"var(--warning)","flex-basis":"100%"}},Sh={class:"small",style:{"font-weight":"600","margin-bottom":"7px"}},Mh={style:{"font-weight":"400",color:"var(--muted)"}},Th=["innerHTML"],Ch={id:"rpthint",class:"small muted",style:{"margin-top":"9px","padding-top":"8px","border-top":"1px solid var(--line)","min-height":"19px"}},Eh={style:{"margin-top":"11px","padding-top":"10px","border-top":"1px solid var(--line)"}},Ah={class:"small",style:{"font-weight":"600","margin-bottom":"6px"}},Oh=["innerHTML"],Dh={style:{display:"flex",gap:"8px","align-items":"center","flex-wrap":"wrap"}},Lh=["placeholder","value"],Ph=["innerHTML"],qh=["disabled"],Hh={id:"rptout",class:"small muted",style:{"margin-top":"7px"}},Rh={key:0,class:"paper",style:{"text-align":"center",padding:"56px 40px"}},jh={class:"small muted"},Ih={key:1,class:"paper"},Fh={class:"paper-hd"},Nh={class:"paper-ti"},Bh={class:"small muted",style:{"margin-top":"3px"}},Wh={class:"small muted",style:{"text-align":"right"}},Kh={key:0,class:"noprint",style:{display:"flex",gap:"3px","justify-content":"flex-end","margin-bottom":"-6px",position:"relative","z-index":"2"}},Uh=["data-k","disabled"],Vh=["data-k","disabled"],Gh=["data-k"],zh=["innerHTML"],Yh=["innerHTML"],Jh={class:"paper-ft"},Zh=$t({__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:"✍"},i={"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=fs({canvas:[],aud:"in",need:"",model:"",models:null,compose:null,narr:null,out:""}),u=A(()=>e.apis?.["/detail/api/ask_models"]??e.apis?.["/api/ask_models"]??null),m=A(()=>u.value?u.value.models||{}:r.models),f=A(()=>!!u.value?.offline),g=(G,et)=>o("mdl."+G+"."+et),_=G=>(g(G,"nm")||G)+(i[G]?" · "+o("mdl."+i[G]):"")+(g(G,"t")?" · "+g(G,"t"):""),y=G=>r.canvas.includes(G),S=A(()=>r.compose===!0&&!!m.value&&Object.keys(m.value).length>0),k=A(()=>{const G=m.value;return G===null?'':Object.keys(G).length?Object.keys(G).map(et=>``).join(""):``}),q=A(()=>c.map(G=>`
    ${o("rpt.g."+G)}
    `+Object.keys(n).filter(et=>n[et]===G).map(et=>``).join("")+"
    ").join("")),w=A(()=>""),M=G=>"",R=A(()=>{const G=m.value;if(G===null)return r.model;const et=Object.keys(G);return!r.model||!et.includes(r.model)?et[0]||"":r.model}),D=A(()=>o("rpt.need_hint")+(R.value?i[R.value]==="local"?o("rpt.local_note"):`${o("rpt.cloud_note")}`:"")),I=A(()=>r.out?r.out:r.compose===!1?o("rpt.no_compose"):m.value&&!Object.keys(m.value).length?f.value?o("ask.local_down"):o("rpt.no_models"):""),Z=A(()=>(String(e.d?.fus?.数据时点||"").match(/\d{4}-\d{2}-\d{2}/)||[""])[0]);return(G,et)=>(b(),$("section",null,[a("div",fh,d(p(o)("rpt.eyebrow")),1),a("div",hh,[a("div",mh,[a("span",_h,d(p(o)("rpt.presets")),1),(b(!0),$(N,null,Q(Object.keys(s),yt=>(b(),$("button",{key:yt,class:"pill","data-preset":yt},d(p(o)("rpt.preset."+yt)),9,vh))),128)),et[0]||(et[0]=a("span",{style:{flex:"1"}},null,-1)),a("select",gh,[a("option",{value:"in",selected:r.aud==="in"},d(p(o)("rpt.aud_in")),9,bh),a("option",{value:"up",selected:r.aud==="up"},d(p(o)("rpt.aud_up")),9,yh)]),a("button",$h,d(p(o)("rpt.print")),1),a("button",wh,d(p(o)("rpt.export_docx")),1),a("button",xh,d(p(o)("rpt.export_xlsx")),1),r.aud==="up"?(b(),$("span",kh,d(p(o)("rpt.up_note")),1)):st("",!0)]),a("div",Sh,[W(d(p(o)("rpt.library"))+" ",1),a("span",Mh,d(p(o)("rpt.library_note",{n:r.canvas.length})),1)]),a("div",{style:{display:"grid","grid-template-columns":"auto 1fr",gap:"6px 12px","align-items":"center"},innerHTML:q.value},null,8,Th),a("div",Ch,d(p(o)("rpt.hint_idle")),1),a("div",Eh,[a("div",Ah,[W(d(p(o)("rpt.need_head"))+" ",1),a("span",{id:"rptmdlnote",style:{"font-weight":"400",color:"var(--muted)"},innerHTML:D.value},null,8,Oh)]),a("div",Dh,[a("input",{id:"rptneed",placeholder:p(J)(p(o)("rpt.need_ph")),value:r.need,style:{flex:"1 1 300px","min-width":"220px"}},null,8,Lh),a("select",{id:"rptmdl",innerHTML:k.value},null,8,Ph),a("button",{class:"btn",id:"rptgo",disabled:!S.value},d(p(o)("rpt.compose")),9,qh)]),a("div",Hh,d(I.value),1)])]),r.canvas.length?(b(),$("div",Ih,[a("div",Fh,[a("div",null,[a("div",Nh,d(p(o)("app.brand"))+" · "+d(p(o)("rpt.paper_title")),1),a("div",Bh,d(p(o)("rpt.paper_sub",{win:p(_e)(t.d.win),n:(t.d.kpi||{}).全场||38}))+d(r.aud==="up"?" | "+p(o)("rpt.up_tag"):""),1)]),a("div",Wh,d(p(o)("rpt.chapters",{n:r.canvas.length})),1)]),(b(!0),$(N,null,Q(r.canvas,(yt,It)=>(b(),$(N,{key:yt},[n[yt]?(b(),$("div",Kh,[a("button",{class:"pill","data-mv":"up","data-k":yt,disabled:It===0,style:{padding:"1px 8px","font-size":"11px",opacity:".7"}},"↑",8,Uh),a("button",{class:"pill","data-mv":"down","data-k":yt,disabled:It===r.canvas.length-1,style:{padding:"1px 8px","font-size":"11px",opacity:".7"}},"↓",8,Vh),a("button",{class:"pill","data-mv":"del","data-k":yt,style:{padding:"1px 8px","font-size":"11px",opacity:".7"}},"×",8,Gh)])):st("",!0),n[yt]?(b(),$("div",{key:1,innerHTML:M()},null,8,zh)):st("",!0)],64))),128)),a("div",{innerHTML:w.value},null,8,Yh),a("div",Jh,[a("span",null,d(p(o)("rpt.foot_src"))+d(Z.value?" | "+p(o)("rpt.foot_asof",{d:Z.value}):""),1),a("span",null,d(p(o)("rpt.foot_trace"))+d(r.aud==="up"?" | "+p(o)("rpt.foot_deid"):""),1)])])):(b(),$("div",Rh,[a("div",jh,d(p(o)("rpt.preview_empty")),1)]))]))}}),Xh={class:"kpis"},Qh=["title"],tm=["innerHTML"],em={key:1},sm={key:0},nm={class:"sechead"},lm={class:"meta"},im={class:"meta"},am={key:0,class:"card mb",style:{"margin-bottom":"10px"}},om={class:"small",style:{color:"var(--warning)"}},rm={class:"small muted"},cm={class:"cards"},dm=["id"],um={class:"head"},pm=["href"],fm={class:"sys"},hm={class:"evidence-detail"},mm={class:"why"},_m={class:"evid"},vm={key:1,class:"rv"},gm={key:0,class:"caveat"},bm={class:"sechead"},ym={class:"meta"},$m={class:"legend"},wm={class:"cells"},xm=["data-u","title"],km={key:1,class:"quiet",style:{padding:"10px"}},Sm={class:"nums"},Mm={class:"quiet"},Tm={class:"sechead"},Cm={class:"meta"},Em={class:"systems"},Am={class:"t"},Om=["href"],Dm={class:"bar"},Lm={class:"cnt"},Pm=$t({__name:"Overview",props:{d:{}},setup(t){const e=t,s=A(()=>e.d?.fus||{}),n=A(()=>e.d?.m8?.mtbf||{}),l=A(()=>e.d?.control||{}),i=A(()=>{const k={};for(const q of l.value.states||[])k[q.k]=q.loss;return k}),c=A(()=>{const k=l.value,q=o("kpi.loss",{win:_e(e.d?.win)})+(i.value["停机(调度令)"]!=null?` · ${o("kpi.loss_dispatch",{n:rt(i.value["停机(调度令)"])})}`:"");return[{v:rt(k.avail,1),u:"%",l:o("kpi.avail",{win:_e(e.d?.win)}),k:k.avail>=95?"ok":"warn",ti:""},{v:rt(n.value.停机总时长h),u:"h",l:o("kpi.downtime",{n:rt(n.value.停机事件数)}),k:"warn",ti:""},{v:rt(n.value.MTBF_h),u:"h",l:o("kpi.mtbo"),k:"",ti:""},{v:rt(i.value.停机),u:"MWh",l:q,k:"",ti:""},{v:rt(i.value["限电·绑定"]),u:"MWh",l:o("kpi.curtail"),k:"",ti:""},{vRaw:`${rt(e.d?.kpi?.报警台)} / ${rt(e.d?.kpi?.全场)}`,u:"",l:o("kpi.alarm_units"),k:e.d?.kpi?.报警台?"warn":"ok",ti:o("kpi.alarm_units.hint"),vHtml:!0}]}),r=A(()=>{const k={};for(const q of e.d?.watch||[])k[q.t]=q.why;return k}),u=A(()=>((s.value.链盘||{}).rows||[]).filter(k=>k.lvl==="bad"||k.lvl==="warn"));function m(k){const q=(r.value[k.t]||"").trim();if(q)return q;const w=xl[k.stuck]||String(k.stuck||"").toLowerCase(),M=o(w==="evidence"?"step.site_records":"step."+(w||"evidence"));return o("ov.basis_fusion",{part:k.part||"—",done:k.done==null?"—":k.done,n:(k.steps||[]).length||"—",stuck:k.stuck?M:o("ov.all_steps_done"),srcs:(k.srcs||[]).join(" / ")||o("ov.no_srcs")})}function f(k){if(!k.stuck)return"";const q=xl[k.stuck]||String(k.stuck||"").toLowerCase(),w=o(q==="evidence"?"step.site_records":"step."+(q||"evidence"));return o("step.stuck_at",{step:w})}const g=[["危险","critical"],["报警","warning"],["不可判","unknown"],["良好","good"],["优秀","excellent"]],_=A(()=>{const k=e.d?.sysdist||{};return Fn.map(q=>{const w=k[q]||{},M=Object.values(w).reduce((R,D)=>R+D,0)||1;return{name:pe(q),slug:qs(q),dist:w,n:M,seg:g.filter(([R])=>w[R]).map(([R,D])=>({k:R,v:D}))}})}),y=A(()=>s.value.矩阵||[]),S=A(()=>new Set(u.value.map(k=>k.t)));return(k,q)=>(b(),$(N,null,[a("section",null,[a("div",Xh,[(b(!0),$(N,null,Q(c.value,(w,M)=>(b(),$("div",{key:M,class:Ct(["kpi",w.k]),title:w.ti||void 0},[w.vHtml?(b(),$("b",{key:0,innerHTML:w.vRaw},null,8,tm)):(b(),$("b",em,[W(d(w.v),1),w.u?(b(),$("small",sm,d(w.u),1)):st("",!0)])),a("span",null,d(w.l),1)],10,Qh))),128))])]),a("section",null,[a("div",nm,[a("h2",null,d(p(o)("ov.attention")),1),a("span",lm,d(p(o)("ov.attention_n",{n:u.value.length})),1),a("span",im,d(p(o)("ov.ranked_by")),1)]),s.value.gap?(b(),$("div",am,[a("p",om,d(s.value.gap),1),a("p",rm,d(p(o)("ov.fus_gap_hint")),1)])):st("",!0),a("div",cm,[(b(!0),$(N,null,Q(u.value,w=>(b(),$("div",{key:w.t,class:"card",id:`u-${w.t}`,style:gt(`--sev:var(--${p(Ml)[p(Ls)(w.ostate)||(w.lvl==="bad"?"bad":"warn")]})`)},[a("div",um,[a("a",{class:"unit",href:`/turbine/${w.t}`},d(p(mt)(w.t)),9,pm),a("span",fm,d(w.part||""),1),a("span",{class:Ct(["chip",p(Ls)(w.ostate)||(w.lvl==="bad"?"bad":"warn")])},d(p(kl)(w.ostate||(w.lvl==="bad"?"危险":"报警"))),3)]),a("details",hm,[a("summary",null,d(p(o)("ov.evidence")),1),a("div",mm,d(m(w)),1)]),a("div",_m,[w.estate?(b(),$("span",{key:0,class:Ct(["tier",w.estate])},d(p(kl)(w.estate)),3)):st("",!0),w.srcs&&w.srcs.length?(b(),$("span",vm,d(w.srcs.length)+" sources",1)):st("",!0)]),f(w)||w.next?(b(),$("div",gm,[a("b",null,d(p(o)("ov.caveat")),1),W(d(f(w))+d(f(w)&&w.next?" — ":"")+d(w.next||""),1)])):st("",!0)],12,dm))),128))])]),a("section",null,[a("div",bm,[a("h2",null,d(p(o)("ov.strip")),1),a("span",ym,d(p(o)("ov.strip_hint")),1),a("div",$m,[(b(),$(N,null,Q(["bad","warn","unk","ok","ex"],w=>a("span",{key:w},[a("i",{style:gt(`background:var(--${p(Ml)[w]})`)},null,4),W(d(p(o)(p(wn)(w))),1)])),64))])]),a("div",{class:"strip",style:gt(`--n:${y.value.length||38}`)},[a("div",wm,[y.value.length?(b(!0),$(N,{key:0},Q(y.value,w=>(b(),$("div",{key:w.turbine,class:Ct(["cell",[p(Sl)(w),S.value.has(w.turbine)?"hot":""]]),"data-u":w.turbine,title:`${p(mt)(w.turbine)} ${p(o)(p(wn)(p(Sl)(w)))}`},null,10,xm))),128)):(b(),$("div",km,d(s.value.gap||p(o)("ov.fus_gap_hint")),1))]),a("div",Sm,[(b(!0),$(N,null,Q(y.value,w=>(b(),$("span",{key:`n-${w.turbine}`,class:Ct(S.value.has(w.turbine)?"hot":"")},d(p(mt)(w.turbine).replace("#","")),3))),128))]),a("div",Mm,d(u.value.length?p(o)("ov.quiet",{n:Math.max(0,(y.value.length||38)-u.value.length)}):p(o)("ov.quiet_all",{n:y.value.length||38})),1)],4)]),a("section",null,[a("div",Tm,[a("h2",null,d(p(o)("ov.systems")),1),a("span",Cm,d(p(o)("ov.systems_hint")),1)]),a("div",Em,[(b(!0),$(N,null,Q(_.value,w=>(b(),$("div",{key:w.name,class:"sysc"},[a("div",Am,[a("b",null,d(w.name),1),a("a",{href:`#tab=component&sys=${encodeURIComponent(w.slug)}`},d(p(o)("ui.open")),9,Om)]),a("div",Dm,[(b(!0),$(N,null,Q(w.seg,M=>(b(),$("i",{key:M.k,style:gt(`width:${(w.dist[M.k]/w.n*100).toFixed(1)}%;background:var(--${M.v})`)},null,4))),128))]),a("div",Lm,[(b(!0),$(N,null,Q(w.seg,M=>(b(),$("span",{key:`c-${M.k}`},[a("i",{style:gt(`background:var(--${M.v})`)},null,4),W(d(w.dist[M.k]),1)]))),128))])]))),128))])])],64))}}),qm={class:"wb-tabs"},Hm=["onClick"],Rm={key:0,class:"todo"},jm={class:"page-head"},Im={class:"window-badge"},Fm={key:14,class:"card"},Nm={class:"hint"},Bm=$t({__name:"Workbench",props:{d:{},tab:{},sys:{},sub:{},cms:{},curves:{},apis:{}},emits:["tab","sub"],setup(t,{emit:e}){const s=t,n=e,l=A(()=>!rn.includes(s.tab));return(i,c)=>(b(),$(N,null,[a("nav",qm,[(b(!0),$(N,null,Q(p($r),r=>(b(),$("button",{key:r,class:Ct({on:r===t.tab}),onClick:u=>n("tab",r)},[W(d(p(o)("tab."+r)),1),p(rn).includes(r)?st("",!0):(b(),$("sup",Rm,"迁移中"))],10,Hm))),128))]),a("div",jm,[a("h1",null,d(p(o)("tab."+t.tab)),1),a("span",Im,d(p(o)("win.label"))+" · "+d(p(_e)(t.d?.win)),1)]),t.tab==="overview"?(b(),kt(Pm,{key:0,d:t.d},null,8,["d"])):t.tab==="energy"?(b(),kt(uu,{key:1,d:t.d},null,8,["d"])):t.tab==="component"?(b(),kt(Rd,{key:2,d:t.d,sys:t.sys},null,8,["d","sys"])):t.tab==="fault"?(b(),kt(sp,{key:3,d:t.d},null,8,["d"])):t.tab==="vibration"?(b(),kt(Sp,{key:4,d:t.d,sub:t.sub,cms:t.cms,onSub:c[0]||(c[0]=r=>n("sub",r))},null,8,["d","sub","cms"])):t.tab==="generation"?(b(),kt(nf,{key:5,d:t.d,curves:t.curves,pending:!!t.d.m9_pending},null,8,["d","curves","pending"])):t.tab==="decision"?(b(),kt($f,{key:6,d:t.d,apis:t.apis},null,8,["d","apis"])):t.tab==="assistant"?(b(),kt(Ff,{key:7,d:t.d},null,8,["d"])):t.tab==="system"?(b(),kt(ph,{key:8,apis:t.apis},null,8,["apis"])):t.tab==="report"?(b(),kt(Zh,{key:9,d:t.d,apis:t.apis},null,8,["d","apis"])):t.tab==="documents"?(b(),kt(Ir,{key:10})):t.tab==="recalc"?(b(),kt(Zr,{key:11})):t.tab==="portal"?(b(),kt(dc,{key:12})):t.tab==="portal_sec"?(b(),kt($c,{key:13})):l.value?(b(),$("section",Fm,[a("h2",null,[W(d(p(o)("tab."+t.tab))+" ",1),c[1]||(c[1]=a("small",null,"(本页签尚未迁移到 Vue)",-1))]),a("p",Nm,[c[2]||(c[2]=W(" 迁移纪律:页签逐个搬,每搬一个就用 ",-1)),c[3]||(c[3]=a("code",null,"tools/render_parity.mjs",-1)),c[4]||(c[4]=W(" 与重构前页面 (现网 ",-1)),c[5]||(c[5]=a("code",null,"/detail/v2",-1)),W(")对拍文案/数值/类名序列,**通过后**才删对应的 Python 前端源码。 当前已迁移:"+d(p(rn).join("、"))+"。 ",1)])])):st("",!0)],64))}}),Wm=Fi(Bm,[["__scopeId","data-v-b73286b2"]]),Km={class:"top"},Um={key:0,class:"hint",style:{padding:"0 18px"}},Vm={key:1,class:"hint",style:{padding:"0 18px",color:"var(--bad)"}},Gm={key:2,class:"card"},zm=$t({__name:"App",setup(t){const e=vt("workbench"),s=vt("overview"),n=vt(null),l=vt(null),i=vt(""),c=vt(!1),r=vt("");async function u(){c.value=!0,r.value="";const m=i.value?`?win=${encodeURIComponent(i.value)}`:"",f=await ji("fleet",{method:"GET"});if(m)try{const g=await fetch("/api/fleet"+m);l.value=await g.json()}catch(g){r.value=g instanceof Error?g.message:String(g)}else f.ok?(l.value=f.data,l.value?.win&&(i.value=l.value.win)):r.value=f.error||`HTTP ${f.status}`;c.value=!1}return ss(i,m=>{m&&m!==l.value?.win&&u()}),Be(u),(m,f)=>(b(),$(N,null,[a("header",Km,[f[5]||(f[5]=a("div",{class:"brand"},"观澜 · 风电数据分析与决策支持",-1)),a("nav",null,[a("button",{class:Ct({on:e.value==="workbench"}),onClick:f[0]||(f[0]=g=>e.value="workbench")},"工作台",2),a("button",{class:Ct({on:e.value==="smoke"}),onClick:f[1]||(f[1]=g=>e.value="smoke")},"契约自检",2),a("button",{class:Ct({on:e.value==="about"}),onClick:f[2]||(f[2]=g=>e.value="about")},"关于本前端",2)])]),a("main",null,[e.value==="workbench"?(b(),$(N,{key:0},[c.value?(b(),$("p",Um,"取数中(/api/fleet)…")):r.value?(b(),$("p",Vm,"取数失败:"+d(r.value),1)):l.value?(b(),kt(Wm,{key:2,d:l.value,tab:s.value,sub:n.value,onTab:f[3]||(f[3]=g=>s.value=g),onSub:f[4]||(f[4]=g=>n.value=g)},null,8,["d","tab","sub"])):st("",!0)],64)):e.value==="smoke"?(b(),kt(br,{key:1})):(b(),$("section",Gm,[...f[6]||(f[6]=[Ao("

    关于本前端

    • 技术栈:Vue 3 + Vite + TypeScript + Node.js(用户令 2026-09-29)
    • 与后端交互:只走网关一个源站,路径与形状以 app_backEnd/app_backEnd_guanlan/contract/http_api_v1.json 冻契约为准
    • 数据来源:与重构前 /detail/v2 同一个接口 /api/fleet?win=
    • 迁移纪律:页签逐个搬,与重构前页面对拍通过后才删对应 Python 源码
    ",2)])]))])],64))}});pr(zm).mount("#app");