You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
hy-screen-2.0/docs/assets/index-e4e210df-178413246608...

13 lines
36 KiB

var Gt=Object.defineProperty,Qt=Object.defineProperties;var Jt=Object.getOwnPropertyDescriptors;var ht=Object.getOwnPropertySymbols;var Xt=Object.prototype.hasOwnProperty,Zt=Object.prototype.propertyIsEnumerable;var kt=(e,t,s)=>t in e?Gt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,T=(e,t)=>{for(var s in t||(t={}))Xt.call(t,s)&&kt(e,s,t[s]);if(ht)for(var s of ht(t))Zt.call(t,s)&&kt(e,s,t[s]);return e},M=(e,t)=>Qt(e,Jt(t));var F=(e,t,s)=>new Promise((n,r)=>{var u=f=>{try{v(s.next(f))}catch(h){r(h)}},w=f=>{try{v(s.throw(f))}catch(h){r(h)}},v=f=>f.done?n(f.value):Promise.resolve(f.value).then(u,w);v((s=s.apply(e,t)).next())});import{g as it,q as te,h as ee,w as ne,o as y,c as p,z as At,F as P,y as z,n as j,a as g,t as A,j as k,C as se,u as ie,B as St,f as _t,s as ae,H as oe,e as re,D as ue,G as le,d as D,A as ce}from"./index-1784132466083.js";import{r as $t,n as Nt}from"./index-ed255eef-1784132466083.js";import{a as de,c as me,b as fe,l as ge}from"./yakApi-08a6746e-1784132466083.js";import{h as ye,a as ve,r as Ct,b as pe,t as xt,y as be,c as we,s as he,d as ke,e as Ae}from"./data-19be80ff-1784132466083.js";import{p as Se,i as _e,a as Re,b as Te,k as $e,c as Ne,d as Ce,h as xe,j as Ee,l as Me,e as De}from"./data-e9a1e061-1784132466083.js";import{b as rt,e as Et,a as Le,B as Pe}from"./data-5c83c66b-1784132466083.js";import{f as Fe,h as ze,i as He,j as Oe,k as Be,l as je,p as qe,r as Ie,a as Ve}from"./data-09f482ff-1784132466083.js";import{f as Ue,h as Ke,s as We,j as Ye,k as Ge,l as Qe,m as Je,p as Xe,n as Ze,o as tn,q as en,r as nn,t as sn,u as an}from"./data-8833788f-1784132466083.js";import"./index-e9f36657-1784132466083.js";import"./livestockData-36ec0ae2-1784132466083.js";import"./townshipBoundaries-822b7d9e-1784132466083.js";const on="/openApi";function rn(e){return/^https?:\/\//.test(e)?e:`${on}${e.startsWith("/")?e:`/${e}`}`}function un(e){if((e==null?void 0:e.success)===!1||(e==null?void 0:e.code)!==void 0&&![0,200,"0","200"].includes(e.code)){const s=new Error((e==null?void 0:e.msg)||(e==null?void 0:e.message)||"图表接口请求失败");throw s.code=e==null?void 0:e.code,s}return Nt(e)}function ln(n){return F(this,arguments,function*(e,t=window.location.hash||window.location.pathname,s="智慧管理"){const r=yield $t(rn("/ai/stat/charts"),{params:{question:e,pagePath:t,pageName:s},timeout:12e3}).then(un);return(Array.isArray(r==null?void 0:r.charts)?r.charts:[]).map(cn).filter(w=>w.rows.length)})}function cn(e,t){const s=Array.isArray(e==null?void 0:e.rows)?e.rows:[];return{id:(e==null?void 0:e.id)||`smart-chart-${t}`,type:dn(e==null?void 0:e.type),title:(e==null?void 0:e.title)||`统计图表${t+1}`,subtitle:mn(e==null?void 0:e.subtitle),unit:(e==null?void 0:e.unit)||"",source:(e==null?void 0:e.source)||{},rows:s.map((n,r)=>({key:(n==null?void 0:n.key)||`${(n==null?void 0:n.name)||"row"}-${r}`,name:String((n==null?void 0:n.name)||`指标${r+1}`),value:fn(n==null?void 0:n.value),rawValue:n==null?void 0:n.value,unit:(n==null?void 0:n.unit)||(e==null?void 0:e.unit)||"",extra:(n==null?void 0:n.extra)||""})).filter(n=>n.name&&Number.isFinite(n.value))}}function dn(e){return["pie","donut"].includes(e)?"pie":["line","trend"].includes(e)?"line":"bar"}function mn(e){const t=String(e||"").trim();return!t||/^(数据)?来源[::]/.test(t)||t.includes("固定展示")?"":t}function fn(e){if(e==null||e==="")return NaN;const t=Number(String(e).replace(/,/g,"").replace(/%/g,""));return Number.isFinite(t)?t:NaN}const Rt="智慧管理",gn=80,yn=[{key:"livestock_balance",label:"草畜平衡",patterns:[/草畜|平衡|承载|载畜|超载|放牧压力|轮牧|休牧/],build:An},{key:"yak",label:"牦牛管理",patterns:[/牦牛|耗牛|犛牛|存栏|畜群|牛群|牛犊|母牛|公牛|出栏|交易|预测/],build:wn},{key:"pasture",label:"牧户管理",patterns:[/牧户|牧场|联户|在线|年龄|性别|户均|草场/],build:Sn},{key:"ecology",label:"生态保护",patterns:[/生态|公益林|湿地|草地|林地|保护|修复|红线|公园|自然保护地|工程/],build:_n},{key:"industry",label:"牦牛产业链",patterns:[/产业链|产业|主体|加工|屠宰|饲草|储草|家庭生态牧场|品牌|服务能力/],build:Rn}];function vn(s){return F(this,arguments,function*(e,t={}){var C;const n=Lt(e),r=t.pagePath||window.location.hash||window.location.pathname,u=[],w=ln(n,r,Rt).catch(E=>(u.push(Pt(E,"辅助图表暂不可用")),[])),v=bn(n),f=yield Promise.all(v.map(E=>E.build(n,u))),h=Nn(f.flat()),b=yield w,$=v.length===1&&((C=v[0])==null?void 0:C.key)==="overview",H=h.length?h:$?Mt():[],Z=Mn(n,H),O={question:n,pageName:Rt,pagePath:r,scope:Z,intents:v.map(E=>({key:E.key,label:E.label})),datasets:H,charts:b,notes:Cn(H,b,u),warnings:u};return M(T({},O),{insights:xn(O)})})}function pn(e={}){const t=Array.isArray(e.datasets)?e.datasets:[],s=Array.isArray(e.insights)?e.insights:[],n=e.scope||"红原县",r=t.slice(0,4).map(v=>v.title).filter(Boolean),u=s.slice(0,5).map(v=>`- ${v.label}${v.value}${v.note?`${v.note}`:""}`),w=(e.notes||[]).slice(0,3).map(v=>`- ${v}`);return["**总体情况**",`已按${n}相关业务数据整理本次问题的业务信息。`,"","**已整理数据**",...r.length?r.map(v=>`- ${v}`):["- 平台综合业务数据"],"",u.length?"**关键数据**":"",...u,"",w.length?"**数据说明**":"",...w].filter(Boolean).join(`
`)}function bn(e){const t=yn.filter(s=>s.patterns.some(n=>n.test(e)));return t.length?t:[{key:"overview",label:"综合总览",build:()=>Mt()}]}function Mt(){return[l("home.topStats","首页核心指标",ye,"平台业务汇总数据"),l("home.heroStats","资源与草畜概览",ve,"平台业务汇总数据"),l("home.resourceComposition","资源构成",Ct,"平台业务汇总数据"),l("home.businessMatrix","业务矩阵",pe,"平台业务汇总数据"),l("home.townSynergy","乡镇林草湿与牦牛协同",xt,"平台业务汇总数据"),l("home.yakTown","首页牦牛乡镇排行",be,"平台业务汇总数据"),l("home.trade","首页交易结构",we,"平台业务汇总数据"),l("home.support","首页支撑产业",he,"平台业务汇总数据"),l("home.dataFlow","数据流汇总",ke,"平台业务汇总数据"),l("home.centerOrbit","首页中心节点",Ae,"平台业务汇总数据")]}function wn(s){return F(this,arguments,function*(e,t=[]){const[n,r,u,w]=yield Promise.allSettled([de(),me(),fe(),ge()]);J(n,t,"牦牛乡镇存栏数据暂未取得"),J(r,t,"牦牛畜群结构数据暂未取得"),J(u,t,"牦牛预测数据暂未取得"),J(w,t,"牦牛交易数据暂未取得");const v=hn(Q(n)),f=Tt(Q(r)),h=kn(Q(u)),b=Tt(Q(w));return[l("yak.town","乡镇牦牛存栏分布",v,"牦牛管理接口数据"),l("yak.structureRows","畜群结构数量",f,"牦牛管理接口数据"),l("yak.forecastRows","牦牛月度预测",h,"牦牛管理接口数据"),l("yak.tradeImpact","交易影响",b,"牦牛交易接口数据")]})}function Q(e){return e.status==="fulfilled"&&Array.isArray(e.value)?e.value:[]}function J(e,t,s){e.status==="rejected"&&t.push(Pt(e.reason,s))}function hn(e=[]){return e.map((t,s)=>{var u,w,v,f;const n=String(t.name||t.areaName||t.area_name||t.townName||t.zoneName||"").trim(),r=ut((f=(v=(w=(u=t.count)!=null?u:t.value)!=null?w:t.number)!=null?v:t.yakCount)!=null?f:t.yak_count);return{key:t.key||t.id||t.areaCode||t.area_code||`${n||"yak-town"}-${s}`,name:n,count:r,value:r,unit:t.unit||"头"}}).filter(t=>t.name&&Number.isFinite(t.count)).sort((t,s)=>s.count-t.count)}function Tt(e=[]){return e.map((t,s)=>{var u,w,v,f,h;const n=String(t.name||t.label||t.type||t.key||"").trim(),r=ut((h=(f=(v=(w=(u=t.count)!=null?u:t.value)!=null?w:t.number)!=null?v:t.yakCount)!=null?f:t.headCount)!=null?h:t.amount);return{key:t.key||t.id||`${n||"yak-metric"}-${s}`,name:n,count:r,value:r,unit:t.unit||"头",extra:t.extra||""}}).filter(t=>t.name&&Number.isFinite(t.count)).sort((t,s)=>s.count-t.count)}function kn(e=[]){return e.map((t,s)=>{var u,w,v,f;const n=String(t.name||t.label||t.month||t.date||t.time||"").trim(),r=ut((f=(v=(w=(u=t.stock)!=null?u:t.count)!=null?w:t.value)!=null?v:t.number)!=null?f:t.yakCount);return{key:t.key||t.id||`${n||"yak-forecast"}-${s}`,name:n,label:n,stock:r,count:r,value:r,unit:t.unit||"头",extra:t.extra||""}}).filter(t=>t.name&&Number.isFinite(t.stock))}function An(e){const t=Tn(e),s=(t==null?void 0:t.name)||"红原县";return[l("balance.target",`${s}草畜平衡`,[t],"平台业务汇总数据"),l("balance.county","全县草畜平衡",[Et],"平台业务汇总数据"),l("balance.town","乡镇草畜平衡",rt,"平台业务汇总数据"),l("balance.fallbackRows","草畜平衡兜底数据",Le,"平台业务汇总数据"),l("balance.params","草畜平衡计算参数",[Pe],"平台业务汇总数据")]}function Sn(){return[l("pasture.core","牧户核心指标",Se,"平台业务汇总数据"),l("pasture.topStats","牧户顶部指标",_e,"平台业务汇总数据"),l("pasture.town","牧户乡镇分布",Re,"平台业务汇总数据"),l("pasture.online","牧户在线率",Te,"平台业务汇总数据"),l("pasture.structure","牧户年龄性别结构",$e,"平台业务汇总数据"),l("pasture.age","牧户年龄结构",Ne,"平台业务汇总数据"),l("pasture.gender","牧户性别结构",Ce,"平台业务汇总数据"),l("pasture.list","牧户示例列表",xe,"平台业务汇总数据"),l("pasture.grassland","牧户草场资源",Ee,"平台业务汇总数据"),l("pasture.season","牧户季节草场",Me,"平台业务汇总数据"),l("pasture.map","牧户地图统计",De,"平台业务汇总数据")]}function _n(){return[l("ecology.parkTopStats","生态保护核心指标",Fe,"平台业务汇总数据"),l("ecology.parkCore","国家公园核心指标",ze,"平台业务汇总数据"),l("ecology.parkTownRows","国家公园乡镇数据",He,"平台业务汇总数据"),l("ecology.restorationTopStats","生态修复项目汇总",Oe,"平台业务汇总数据"),l("ecology.engineeringTopStats","生态工程分析指标",Be,"平台业务汇总数据"),l("ecology.engineeringProjectFeatures","工程分析项目点",je,"平台业务汇总数据"),l("ecology.parkPanels","生态保护图表数据",at(qe),"平台业务汇总数据"),l("ecology.restorationPanels","生态修复图表数据",at(Ie),"平台业务汇总数据"),l("ecology.engineeringAnalysisPanels","工程分析图表数据",at(Ve),"平台业务汇总数据"),l("home.resourceComposition","林草湿资源构成",Ct,"平台业务汇总数据"),l("home.townSynergy","乡镇林草湿与牦牛协同",xt,"平台业务汇总数据")]}function Rn(){return[l("industry.topStats","产业链核心指标",Ue,"平台业务汇总数据"),l("industry.overview","产业链总览",Ke,"平台业务汇总数据"),l("industry.stageComposition","产业阶段构成",We,"平台业务汇总数据"),l("industry.stageRows","产业阶段说明",Ye,"平台业务汇总数据"),l("industry.breedingLevel","养殖水平",Ge,"平台业务汇总数据"),l("industry.forageSecurity","饲草保障能力",Qe,"平台业务汇总数据"),l("industry.value","产业价值指标",Je,"平台业务汇总数据"),l("industry.processingAbility","加工能力指标",Xe,"平台业务汇总数据"),l("industry.serviceCapability","服务能力指标",Ze,"平台业务汇总数据"),l("industry.financial","金融服务",tn,"平台业务汇总数据"),l("industry.supportPoints","饲草储备点位",en,"平台业务汇总数据"),l("industry.processingPoints","加工屠宰点位",nn,"平台业务汇总数据"),l("industry.points","产业链点位",sn,"平台业务汇总数据"),l("industry.list","产业链主体列表",an,"平台业务汇总数据")]}function Tn(e){return rt.find(t=>Dt(e,t.name))||Et}function l(e,t,s,n){return{id:e,title:t,suggestedView:Dn(t,s),source:{label:n||"平台展示数据"},rows:$n(s)}}function $n(e){return(Array.isArray(e)?e:[]).slice(0,gn).map(t=>ot(t)).filter(t=>t&&typeof t=="object")}function ot(e,t=0){return t>4||e===void 0||typeof e=="function"?null:e===null||["string","number","boolean"].includes(typeof e)?e:Array.isArray(e)?e.slice(0,30).map(s=>ot(s,t+1)):typeof e=="object"?Object.entries(e).reduce((s,[n,r])=>(["icon","color","tone","image","cover","component"].includes(n)||(s[n]=ot(r,t+1)),s),{}):String(e)}function Nn(e=[]){const t=new Set;return e.filter(s=>{var n;return!((n=s==null?void 0:s.rows)!=null&&n.length)||t.has(s.id)?!1:(t.add(s.id),!0)})}function Cn(e,t,s){return[...s].filter(Boolean)}function xn(e){const t=[];return(e.datasets||[]).some(s=>{const n=En(s);return n&&t.push(n),t.length>=5}),(e.charts||[]).some(s=>{var f,h;const n=(s.rows||[]).filter(b=>Number.isFinite(Number(b.value)));if(!n.length)return!1;const r=n.slice().sort((b,$)=>Number($.value||0)-Number(b.value||0)),u=s.unit==="%"||/率|占比|比例/.test(s.title||""),w=u?(f=r[0])==null?void 0:f.value:n.reduce((b,$)=>b+Number($.value||0),0),v=u&&((h=r[0])!=null&&h.name)?`${s.title||"关联图表"}${r[0].name}`:s.title||"关联图表";return t.push({label:v,value:`${Ft(w)}${s.unit||""}`,note:n.length>1?u?"数值较高项":`覆盖 ${n.length}`:""}),t.length>=5}),t.slice(0,5)}function En(e){var w,v,f,h;const t=(e.rows||[]).find(Boolean);if(!t)return null;const s=t.name||t.areaName||t.zh||t.label||e.title,n=t.overloadRate!==void 0||t.overloadrate!==void 0,r=n?(w=t.overloadRate)!=null?w:t.overloadrate:(h=(f=(v=t.value)!=null?v:t.yakNumber)!=null?f:t.livestockCapacity)!=null?h:t.areaRange;if(r==null||r==="")return null;const u=t.unit||(n?"%":t.yakNumber!==void 0||t.livestockCapacity!==void 0?"头":"");return{label:n?`${s}超载率`:s,value:`${Ft(r)}${u}`,note:n&&t.level||e.title}}function at(e={}){return Object.entries(e||{}).flatMap(([t,s])=>(Array.isArray(s)?s:[]).flatMap(n=>(Array.isArray(n==null?void 0:n.rows)?n.rows:Array.isArray(n==null?void 0:n.data)?n.data:[]).map(u=>T({groupKey:t,panelKey:n.key,panelTitle:n.title},u))))}function Mn(e,t){var r,u;const s=rt.find(w=>Dt(e,w.name));if(s)return s.name;const n=(u=(r=t.find(w=>w.id==="balance.target"))==null?void 0:r.rows)==null?void 0:u[0];return n!=null&&n.name?n.name:n!=null&&n.areaName?n.areaName:"红原县"}function Dn(e,t){return!Array.isArray(t)||t.length<=1?"metrics":/结构|构成|占比|比例/.test(e)?"pie":/趋势|预测/.test(e)?"line":"bar-table"}function Dt(e,t){const s=Lt(e),n=String(t||"").replace(/(县|镇|村|乡|牧场|牧户|联户)$/g,"");return!!(t&&(s.includes(t)||n&&s.includes(n)))}function Lt(e){return String(e||"").replace(/耗牛/g,"牦牛").replace(/犛牛/g,"牦牛").trim()}function Pt(e,t){const s=String((e==null?void 0:e.message)||"");return(e==null?void 0:e.code)===401||(e==null?void 0:e.code)==="401"||/未登录|授权|Unauthorized|HTTP 401/i.test(s)?"当前登录状态已失效,部分接口数据未取得":/timeout|timed out|超时/i.test(s)?`${t},接口响应超时`:t}function ut(e){if(e==null||e==="")return NaN;const t=Number(String(e).replace(/,/g,"").replace(/%/g,""));return Number.isFinite(t)?t:NaN}function Ft(e){const t=Number(String(e).replace(/,/g,""));return Number.isFinite(t)?t.toLocaleString("zh-CN",{maximumFractionDigits:2}):e||"--"}const Ln="/openApi",Pn=12e4,Fn=8e3,zn=12,Hn=500;function On(e){return/^https?:\/\//.test(e)?e:`${Ln}${e.startsWith("/")?e:`/${e}`}`}function Bn(e){if((e==null?void 0:e.success)===!1||(e==null?void 0:e.code)!==void 0&&![0,200,"0","200"].includes(e.code)){const s=new Error((e==null?void 0:e.message)||(e==null?void 0:e.msg)||"HTML界面生成失败");throw s.code=e==null?void 0:e.code,s}return Nt(e)}function jn(){return F(this,arguments,function*({question:e,answer:t="",charts:s=[],datasets:n=[],context:r=null,pagePath:u=window.location.hash||window.location.pathname,pageName:w="智慧管理"}={}){const v=qn({question:e,answer:t,charts:s,datasets:n,context:r}),f=yield $t(On("/ai/artifact/html"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({question:e,pagePath:u,pageName:w,dataJson:v}),timeout:11e4}).then(Bn),h=String((f==null?void 0:f.provider)||""),b=String((f==null?void 0:f.model)||"");if(h.toLowerCase()!=="deepseek"||!b.toLowerCase().startsWith("deepseek-"))throw new Error("HTML界面不是由DeepSeek模型生成,已拒绝展示");const $=Kn((f==null?void 0:f.html)||(f==null?void 0:f.content)||f);if(!$)throw new Error("代码模型没有返回完整HTML");if(Wn($))throw new Error("专题页面仍为原始数据表,已拒绝展示,请重新生成");return M(T({},f),{html:$})})}function qn({question:e,answer:t,charts:s,datasets:n,context:r}){const u={question:String(e||"").trim(),generatedAt:new Date().toISOString(),presentation:{format:"business-report",requirements:["输出应为业务报告页面,而不是原始数据表或字段清单。","不要直接展示 key、rawValue、areaCode、areaRange 等技术字段名。","页面需包含结论、关键指标、图表化对比、重点对象和工作建议。"]},answer:String(t||"").slice(0,Fn),context:In(r),datasets:[...Vn(s),...Un(n)]},w=JSON.stringify(u);if(w.length>Pn){const v=new Error("汇总数据超过120000字符,请先缩小查询范围");throw v.code="ARTIFACT_DATA_TOO_LARGE",v}return w}function In(e){if(!e||typeof e!="object")return null;const{question:t,pageName:s,pagePath:n,scope:r,intents:u,notes:w,warnings:v,insights:f}=e;return X({question:t,pageName:s,pagePath:n,scope:r,intents:u,notes:w,warnings:v,insights:f})}function Vn(e=[]){return(Array.isArray(e)?e:[]).slice(0,6).map((t,s)=>({id:(t==null?void 0:t.id)||`chart-${s+1}`,title:(t==null?void 0:t.title)||`统计数据${s+1}`,suggestedView:(t==null?void 0:t.type)||"bar",unit:(t==null?void 0:t.unit)||"",subtitle:(t==null?void 0:t.subtitle)||"",source:(t==null?void 0:t.source)||{},rows:zt(t==null?void 0:t.rows)}))}function Un(e=[]){return(Array.isArray(e)?e:[]).slice(0,zn).map((t,s)=>({id:(t==null?void 0:t.id)||`dataset-${s+1}`,title:(t==null?void 0:t.title)||(t==null?void 0:t.name)||`汇总数据${s+1}`,suggestedView:(t==null?void 0:t.suggestedView)||(t==null?void 0:t.type)||"auto",unit:(t==null?void 0:t.unit)||"",source:(t==null?void 0:t.source)||{},rows:zt((t==null?void 0:t.rows)||(t==null?void 0:t.data)||t)}))}function zt(e){return(Array.isArray(e)?e:[]).slice(0,Hn).map(t=>X(t))}function X(e,t=0){return t>4||e===void 0||typeof e=="function"?null:e===null||["string","number","boolean"].includes(typeof e)?e:Array.isArray(e)?e.slice(0,50).map(s=>X(s,t+1)):typeof e=="object"?Object.entries(e).reduce((s,[n,r])=>(s[n]=X(r,t+1),s),{}):String(e)}function Kn(e){let t=String(e||"").trim();t.startsWith("```")&&(t=t.replace(/^```(?:html)?\s*/i,"").replace(/\s*```$/i,"").trim());const s=t.match(/<!doctype\s+html|<html\b/i),n=t.toLowerCase().lastIndexOf("</html>");return s&&n>=s.index&&(t=t.slice(s.index,n+7)),/<html\b/i.test(t)&&/<body\b/i.test(t)?t:""}function Wn(e){const t=String(e||""),s=t.replace(/<[^>]+>/g," ").replace(/\s+/g," ").toLowerCase(),n=(t.match(/<table\b/gi)||[]).length,u=["rawvalue","areacode","arearange","livestockcapacity","bearingcapacity","overloadrate","dataset"," key "," type "].filter(w=>s.includes(w)).length;return n>=2&&u>=4||n>=1&&u>=6}function Yn(e){const t=String(e||"").trim();if(!t||typeof DOMParser=="undefined")return"";const s=new DOMParser().parseFromString(t,"text/html"),n=s.createElement("script");return n.textContent=`
(() => {
const notify = (type, message = "") => {
window.parent.postMessage({ source: "smart-artifact", type, message: String(message).slice(0, 240) }, "*");
};
window.addEventListener("error", (event) => notify("runtime-error", event.message || "界面运行异常"));
window.addEventListener("unhandledrejection", (event) => notify("runtime-error", event.reason?.message || event.reason || "界面运行异常"));
window.addEventListener("DOMContentLoaded", () => notify("ready"));
})();
`,s.head.prepend(n),`<!doctype html>
${s.documentElement.outerHTML}`}const Gn={class:"wisdom-management"},Qn={key:0,class:"wisdom-side wisdom-side-left"},Jn={key:0,class:"wisdom-side-header"},Xn={key:0},Zn={key:1,class:"wisdom-side-metrics"},ts={key:0},es=["innerHTML"],ns={key:3,class:"wisdom-side-actions"},ss=["disabled","onClick"],is={key:1,class:"wisdom-side wisdom-side-right"},as={key:0,class:"wisdom-side-header"},os={key:0},rs={key:2,class:"wisdom-side-metrics"},us={key:0},ls=["innerHTML"],cs={key:4,class:"wisdom-side-actions"},ds=["disabled","onClick"],ms={key:2,class:"wisdom-artifact-workspace"},fs={class:"wisdom-artifact-header"},gs={class:"wisdom-artifact-heading"},ys={class:"wisdom-artifact-tools"},vs=["disabled"],ps={class:"wisdom-artifact-body"},bs={key:0,class:"wisdom-artifact-building"},ws={class:"wisdom-artifact-building__intro"},hs=["srcdoc"],ks={key:2,class:"wisdom-artifact-error"},As=["disabled"],Ss={key:0,class:"wisdom-empty-state"},_s={key:0,class:"wisdom-message-mark"},Rs={class:"wisdom-bubble"},Ts={key:0,class:"wisdom-digesting"},$s=["innerHTML"],Ns={key:2,class:"wisdom-stream-caret"},Cs={key:3,class:"wisdom-suggestion-list"},xs=["disabled","onClick"],Es={class:"wisdom-input-shell"},Ms=["disabled"],Ds=["disabled","title","aria-label"],Ls=["disabled"],Ps={key:0,class:"wisdom-button-loading"},Fs="请输入需要了解的业务事项,系统将依据平台汇总数据形成要点分析和专题页面。",Gs={__name:"index",props:{active:{type:Boolean,default:!0}},setup(e){const t=ue({loader:()=>le(()=>import("./SmartChartRenderer-0192bb51-1784132466083.js"),["./SmartChartRenderer-0192bb51-1784132466083.js","./index-1784132466083.js","./index-09a742df-balabala-1784132466083.css","./index.esm.min-e7a22049-1784132466083.js","./SmartChartRenderer-7a3a96b9-balabala-1784132466083.css"],import.meta.url),loadingComponent:{template:'<div class="smart-chart-loading">正在绘制统计图表</div>'}}),s=e,n=D(""),r=D([]),u=D(!1),w=D(null),v=D(null),f=D([]),h=D([]),b=D(lt()),$=it(()=>b.value.status!=="idle"),H=it(()=>["collecting","generating"].includes(b.value.status)),Z=it(()=>b.value.status==="collecting"?"汇总数据":b.value.status==="generating"?"生成页面":b.value.status==="ready"?"DeepSeek生成":b.value.status==="error"?"生成失败":b.value.status==="waiting"?"等待选择":"待生成"),O=D(!1),C=D(!1),E=D("");let q=null,x=null,B=0;const I=D(null);te(()=>{qt(),window.addEventListener("message",ft)}),ee(()=>{tt(),Y(),B+=1,window.removeEventListener("message",ft)}),ne(()=>s.active,i=>{i||(tt(),Y(),B+=1,u.value=!1,r.value=r.value.map(o=>o.streaming?M(T({},o),{streaming:!1,digesting:!1}):o))});function W(){return`${Date.now()}-${Math.random().toString(16).slice(2)}`}function lt(){return{status:"idle",title:"动态分析",question:"",html:"",error:"",model:"",renderKey:0}}function Ht(i){B+=1,I.value=null,b.value=M(T({},lt()),{status:"collecting",title:ct(i),question:i})}function ct(i){const o=String(i||"动态分析").replace(/[??。!!]+$/g,"").trim();return o.length>28?`${o.slice(0,28)}...`:o||"动态分析"}function dt(i){return F(this,null,function*(){const o={question:(i==null?void 0:i.question)||b.value.question,answer:(i==null?void 0:i.answer)||"",charts:Array.isArray(i==null?void 0:i.charts)?i.charts:[],datasets:Array.isArray(i==null?void 0:i.datasets)?i.datasets:[],context:(i==null?void 0:i.context)||null,pagePath:window.location.hash||window.location.pathname,pageName:"智慧管理"};I.value=o;const a=++B;b.value=M(T({},b.value),{status:"generating",title:ct(o.question),question:o.question,html:"",error:"",model:""});try{const c=yield jn(o);if(a!==B)return{stale:!0};const d=Yn(c.html);if(!d)throw new Error("生成页面内容为空");return b.value=M(T({},b.value),{status:"ready",html:d,error:"",model:c.model||"DeepSeek",renderKey:Date.now()}),{ok:!0,result:c}}catch(c){if(a!==B)return{stale:!0};const d=bt(c,"DeepSeek专题分析生成失败,请稍后重新生成。");return console.error("[智慧管理] DeepSeek HTML生成失败",c),b.value=M(T({},b.value),{status:"error",html:"",error:d,model:"",renderKey:Date.now()}),{ok:!1,message:d,error:c}}})}function mt(){!I.value||H.value||dt(I.value)}function Ot(i){B+=1,b.value=M(T({},b.value),{status:"error",html:"",error:i,renderKey:Date.now()})}function Bt(){b.value.status!=="ready"&&(b.value=M(T({},b.value),{status:"ready"}))}function ft(i){var o,a;i.source!==((o=v.value)==null?void 0:o.contentWindow)||((a=i.data)==null?void 0:a.source)!=="smart-artifact"||i.data.type==="runtime-error"&&(b.value=M(T({},b.value),{status:"error",html:"",error:i.data.message||"生成界面运行异常",renderKey:Date.now()}))}function gt(i){return String(i||"").replace(/耗牛/g,"牦牛").replace(/犛牛/g,"牦牛")}function jt(i){return gt(i).trim()}function qt(){if(typeof window=="undefined")return;const i=window.SpeechRecognition||window.webkitSpeechRecognition;O.value=!!i,i&&(x=new i,x.lang="zh-CN",x.continuous=!1,x.interimResults=!0,x.maxAlternatives=1,x.onstart=()=>{C.value=!0,E.value=""},x.onresult=o=>{const c=Array.from(o.results||[]).map(d=>{var m;return((m=d==null?void 0:d[0])==null?void 0:m.transcript)||""}).join("").trim();c&&(n.value=c)},x.onerror=o=>{C.value=!1,E.value=(o==null?void 0:o.error)||"语音输入失败"},x.onend=()=>{C.value=!1})}function It(){if(!(!x||u.value)){if(C.value){Y();return}try{E.value="",x.start()}catch(i){E.value=(i==null?void 0:i.message)||"语音输入启动失败",C.value=!1}}}function Y(){if(!(!x||!C.value))try{x.stop()}catch(i){E.value=(i==null?void 0:i.message)||"语音输入已结束"}finally{C.value=!1}}function V(){return F(this,arguments,function*(i=n.value){const o=jt(i);if(!o||u.value)return;Y();const a={id:W(),role:"user",text:o},c={id:W(),role:"assistant",steps:[],digesting:!0,digestText:"生成中",visibleText:"",fullText:"",streaming:!1,charts:[],insights:[],suggestions:[]};r.value=[...r.value,a,c],n.value="",u.value=!0,Ht(o),yield wt(),yield Vt(o,c.id)})}function Vt(i,o){return F(this,null,function*(){var a;U(o,{digestText:"生成中"});try{const c=window.location.hash||window.location.pathname,d=yield vn(i,{pagePath:c}),m=pn(d),S=(a=d.insights)!=null&&a.length?d.insights:vt(d.charts||[]);U(o,{digesting:!0,digestText:"生成中",insights:S,suggestions:[],allowFollowUp:!0}),yt({question:i,answer:m,charts:d.charts||[],insights:S,suggestions:[]}),pt(o,Ut()),dt({question:i,answer:m,charts:d.charts||[],datasets:d.datasets||[],context:d})}catch(c){const d=bt(c,"上下文数据整理失败,请稍后重试。");yt({question:i,answer:d,charts:[],insights:[],suggestions:[]}),Ot(d),pt(o,d)}})}function Ut(){return["专题分析页面正在生成,完成后会自动显示在右侧。","你可以继续提出其他问题。"].join(`
`)}function G(i){const o=Number(String(i).replace(/,/g,""));return Number.isFinite(o)?o.toLocaleString("zh-CN",{maximumFractionDigits:2}):i||"--"}function yt({question:i,answer:o,charts:a=[],insights:c=[],suggestions:d=[],aiPanels:m}={}){const S=(m==null?void 0:m.leftPanels)||[],R=(m==null?void 0:m.rightPanels)||[];if(S.length||R.length){f.value=S,h.value=R;return}const _=Kt({question:i,answer:o,charts:a,insights:c,suggestions:d});f.value=_.left,h.value=_.right}function Kt({question:i,answer:o,charts:a=[],insights:c=[],suggestions:d=[]}={}){const m=[],S=[],R=(c.length?c:vt(a)).map(_=>({label:_.label,value:_.value,note:_.note}));return!a.length&&!R.length?{left:m,right:S}:(R.length&&m.push({id:`summary-${W()}`,type:"metrics",kicker:"数据要点",title:"数据摘要",badge:"实时",items:R.slice(0,4),actions:[]}),a.slice(0,2).forEach((_,L)=>{S.push({id:`chart-${_.id||L}-${W()}`,type:"chart",kicker:L===0?"可视分析":"关联图表",title:_.title||`统计图表${L+1}`,badge:_.unit||"",chart:_,items:[],actions:[],text:""})}),{left:m.slice(0,2),right:S.slice(0,2)})}function vt(i=[]){const o=[];return i.slice(0,2).forEach(a=>{var K;const c=(a.rows||[]).map(N=>M(T({},N),{value:Number(N.value)})).filter(N=>N.name&&Number.isFinite(N.value));if(!c.length)return;const d=a.unit||((K=c.find(N=>N.unit))==null?void 0:K.unit)||"",m=c.slice().sort((N,st)=>st.value-N.value),S=c.reduce((N,st)=>N+st.value,0),R=S/c.length,_=m[0],L=m[m.length-1];o.push({label:"最高",value:`${_.name} ${G(_.value)}${d}`,note:a.title}),c.length>2&&o.push({label:a.type==="pie"?"占比项":"最低",value:`${L.name} ${G(L.value)}${d}`,note:a.type==="pie"?"最小结构项":"低值区域"}),o.push({label:"合计",value:`${G(S)}${d}`,note:c.length>1?`覆盖 ${c.length}`:a.title}),a.type!=="pie"&&c.length>1&&o.push({label:"均值",value:`${G(R)}${d}`,note:"按当前图表项计算"})}),o.slice(0,4)}function U(i,o,a=!0){r.value=r.value.map(c=>c.id===i?T(T({},c),o):c),a&&wt()}function pt(i,o){U(i,{digesting:!1}),Wt(i,o)}function bt(i,o){const a=String((i==null?void 0:i.message)||"");return(i==null?void 0:i.code)===401||(i==null?void 0:i.code)==="401"||(i==null?void 0:i.code)==="HTTP_401"||/未登录|授权|Unauthorized|HTTP 401/i.test(a)?"当前登录状态已失效,请重新登录后查询。":(i==null?void 0:i.code)==="REQUEST_TIMEOUT"||/timeout|timed out|超时/i.test(a)?"服务响应时间较长,请稍后再试,或换一个更具体的问题。":(i==null?void 0:i.code)==="REQUEST_ABORTED"||/aborted|abort|signal/i.test(a)?"本次分析已中断,请重新提交。":(i==null?void 0:i.code)==="HTTP_404"||(i==null?void 0:i.status)===404||/HTTP 404/i.test(a)?"专题分析页面生成服务暂不可用,请稍后重试。":/Failed to fetch|NetworkError|Load failed|HTTP 50|HTTP 40/i.test(a)||/[a-zA-Z]{4,}/.test(a)?o:a||o}function Wt(i,o){tt();const a=gt(o),c=a.length>1200?36:a.length>700?24:14;let d=0;U(i,{fullText:a,visibleText:"",streaming:!0,charts:[]});const m=()=>{if(d=Math.min(d+c,a.length),U(i,{visibleText:a.slice(0,d),streaming:d<a.length}),d>=a.length){q=null,u.value=!1;return}q=window.setTimeout(m,18)};q=window.setTimeout(m,0)}function tt(){q&&(window.clearTimeout(q),q=null)}function et(i){const o=Yt(i).split(/\r?\n/),a=[];let c=[],d=!1;const m=()=>{c.length&&(a.push(`<${d?"ol":"ul"}>${c.map(S=>`<li>${nt(S)}</li>`).join("")}</${d?"ol":"ul"}>`),c=[],d=!1)};return o.forEach(S=>{const R=S.trim();if(!R){m();return}const _=R.match(/^#{1,4}\s+(.+)$/)||R.match(/^\*\*(.+)\*\*$/);if(_){m(),a.push(`<h3>${nt(_[1])}</h3>`);return}const L=R.match(/^\d+[.)、]\s+(.+)$/),K=R.match(/^[-*]\s+(.+)$/);if(L||K){const N=!!L;c.length&&d!==N&&m(),d=N,c.push(L?L[1]:K[1]);return}m(),a.push(`<p>${nt(R)}</p>`)}),m(),a.join("")}function nt(i){return i.replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>")}function Yt(i){return String(i||"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function wt(){return F(this,null,function*(){yield ce(),window.requestAnimationFrame(()=>{w.value&&(w.value.scrollTop=w.value.scrollHeight)})})}return(i,o)=>(y(),p("div",Gn,[o[17]||(o[17]=At('<div class="wisdom-backdrop" aria-hidden="true"><div class="wisdom-grid"></div><div class="wisdom-orbit wisdom-orbit-a"></div><div class="wisdom-orbit wisdom-orbit-b"></div><div class="wisdom-scan"></div></div>',1)),f.value.length&&!$.value?(y(),p("aside",Qn,[(y(!0),p(P,null,z(f.value,a=>{var c,d;return y(),p("section",{key:a.id,class:j(["wisdom-side-panel",`is-${a.type}`])},[a.chart?k("",!0):(y(),p("header",Jn,[g("div",null,[g("span",null,A(a.kicker),1),g("strong",null,A(a.title),1)]),a.badge?(y(),p("em",Xn,A(a.badge),1)):k("",!0)])),(c=a.items)!=null&&c.length?(y(),p("div",Zn,[(y(!0),p(P,null,z(a.items,m=>(y(),p("div",{key:`${a.id}-${m.label}`,class:"wisdom-side-metric"},[g("span",null,A(m.label),1),g("strong",null,A(m.value),1),m.note?(y(),p("em",ts,A(m.note),1)):k("",!0)]))),128))])):k("",!0),a.text?(y(),p("div",{key:2,class:"wisdom-side-text",innerHTML:et(a.text)},null,8,es)):k("",!0),(d=a.actions)!=null&&d.length?(y(),p("div",ns,[(y(!0),p(P,null,z(a.actions,m=>(y(),p("button",{key:m.question,type:"button",disabled:u.value,onClick:S=>V(m.question)},A(m.label),9,ss))),128))])):k("",!0)],2)}),128))])):k("",!0),h.value.length&&!$.value?(y(),p("aside",is,[(y(!0),p(P,null,z(h.value,a=>{var c,d;return y(),p("section",{key:a.id,class:j(["wisdom-side-panel",`is-${a.type}`])},[a.chart?k("",!0):(y(),p("header",as,[g("div",null,[g("span",null,A(a.kicker),1),g("strong",null,A(a.title),1)]),a.badge?(y(),p("em",os,A(a.badge),1)):k("",!0)])),a.chart?(y(),se(ie(t),{key:1,class:"wisdom-side-chart",chart:a.chart},null,8,["chart"])):k("",!0),(c=a.items)!=null&&c.length?(y(),p("div",rs,[(y(!0),p(P,null,z(a.items,m=>(y(),p("div",{key:`${a.id}-${m.label}`,class:"wisdom-side-metric"},[g("span",null,A(m.label),1),g("strong",null,A(m.value),1),m.note?(y(),p("em",us,A(m.note),1)):k("",!0)]))),128))])):k("",!0),a.text?(y(),p("div",{key:3,class:"wisdom-side-text",innerHTML:et(a.text)},null,8,ls)):k("",!0),(d=a.actions)!=null&&d.length?(y(),p("div",cs,[(y(!0),p(P,null,z(a.actions,m=>(y(),p("button",{key:m.question,type:"button",disabled:u.value,onClick:S=>V(m.question)},A(m.label),9,ds))),128))])):k("",!0)],2)}),128))])):k("",!0),$.value?(y(),p("section",ms,[g("header",fs,[g("div",gs,[o[4]||(o[4]=g("span",{class:"wisdom-artifact-mark","aria-hidden":"true"},null,-1)),g("div",null,[o[3]||(o[3]=g("small",null,"专题分析",-1)),g("strong",null,A(b.value.title),1)])]),g("div",ys,[g("span",{class:j(["wisdom-artifact-status",`is-${b.value.status}`])},[o[5]||(o[5]=g("i",null,null,-1)),St(A(Z.value),1)],2),b.value.status==="ready"||b.value.status==="error"?(y(),p("button",{key:0,type:"button",disabled:H.value||!I.value,title:"重新生成当前界面",onClick:mt}," 重新生成 ",8,vs)):k("",!0)])]),g("div",ps,[H.value?(y(),p("div",bs,[g("div",ws,[o[6]||(o[6]=g("span",{class:"wisdom-artifact-building__spinner"},null,-1)),g("div",null,[g("strong",null,A(b.value.status==="collecting"?"正在汇总业务数据":"正在生成专题分析页面"),1)])]),o[7]||(o[7]=At('<div class="wisdom-artifact-skeleton is-wide"></div><div class="wisdom-artifact-skeleton-grid"><div class="wisdom-artifact-skeleton"></div><div class="wisdom-artifact-skeleton"></div></div><div class="wisdom-artifact-skeleton is-chart"></div>',3))])):b.value.html?(y(),p("iframe",{key:b.value.renderKey,ref_key:"artifactFrameRef",ref:v,class:"wisdom-artifact-frame",srcdoc:b.value.html,sandbox:"allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-downloads allow-modals",referrerpolicy:"no-referrer",title:"专题分析页面",onLoad:Bt},null,40,hs)):(y(),p("div",ks,[o[8]||(o[8]=g("strong",null,"专题分析页面暂未生成",-1)),g("p",null,A(b.value.error||"当前数据不足以形成专题分析页面。"),1),g("button",{type:"button",disabled:!I.value,onClick:mt},"重新生成",8,As)]))])])):k("",!0),g("main",{class:j(["wisdom-chat",{"has-artifact":$.value}])},[g("div",{ref_key:"dialogueRef",ref:w,class:j(["wisdom-dialogue",{"is-empty":!r.value.length}])},[r.value.length?k("",!0):(y(),p("section",Ss,[o[9]||(o[9]=g("div",{class:"wisdom-empty-mark"},[g("span"),g("strong",null,"AI")],-1)),o[10]||(o[10]=g("h2",null,"智慧辅助分析",-1)),g("p",null,A(Fs))])),(y(!0),p(P,null,z(r.value,a=>{var c;return y(),p("article",{key:a.id,class:j(["wisdom-message",`is-${a.role}`])},[a.role==="assistant"?(y(),p("div",_s,[...o[11]||(o[11]=[g("span",null,"智",-1)])])):k("",!0),g("div",Rs,[a.role==="user"?(y(),p(P,{key:0},[St(A(a.text),1)],64)):(y(),p(P,{key:1},[a.digesting?(y(),p("div",Ts,[o[12]||(o[12]=g("span",null,null,-1)),o[13]||(o[13]=g("span",null,null,-1)),o[14]||(o[14]=g("span",null,null,-1)),g("em",null,A(a.digestText||"正在汇总分析"),1)])):k("",!0),a.visibleText?(y(),p("div",{key:1,class:"wisdom-answer",innerHTML:et(a.visibleText)},null,8,$s)):k("",!0),a.streaming?(y(),p("span",Ns)):k("",!0),(c=a.suggestions)!=null&&c.length&&(a.allowFollowUp||!a.digesting&&!a.streaming)?(y(),p("div",Cs,[(y(!0),p(P,null,z(a.suggestions,d=>(y(),p("button",{key:d.question,type:"button",disabled:u.value,onClick:m=>V(d.question)},A(d.label),9,xs))),128))])):k("",!0)],64))])],2)}),128))],2),g("form",{class:"wisdom-input-bar",onSubmit:o[2]||(o[2]=_t(a=>V(),["prevent"]))},[g("div",Es,[o[16]||(o[16]=g("span",{class:"wisdom-input-icon"},null,-1)),ae(g("input",{"onUpdate:modelValue":o[0]||(o[0]=a=>n.value=a),disabled:u.value,autocomplete:"off",placeholder:"请输入需要了解的业务事项",onKeydown:o[1]||(o[1]=re(_t(a=>V(),["prevent"]),["enter"]))},null,40,Ms),[[oe,n.value]]),g("button",{type:"button",class:j(["wisdom-voice-button",{"is-listening":C.value}]),disabled:u.value||!O.value,title:O.value?C.value?"停止语音输入":"语音输入":"当前浏览器不支持语音输入","aria-label":O.value?C.value?"停止语音输入":"语音输入":"当前浏览器不支持语音输入",onClick:It},[...o[15]||(o[15]=[g("span",null,null,-1)])],10,Ds),g("button",{class:"wisdom-submit-button",type:"submit",disabled:u.value||!n.value.trim()},[u.value?(y(),p("span",Ps)):k("",!0),g("span",null,A(u.value?"分析中":"发送"),1)],8,Ls)])],32)],2)]))}};export{Gs as default};