1 line
26 KiB
JavaScript
1 line
26 KiB
JavaScript
import{D as e,E as t,M as n,N as r,O as i,P as a,S as o,_ as s,b as ee,c,d as l,g as u,h as d,j as f,k as te,l as ne,n as p,o as m,r as re,s as ie,u as ae,v as h,w as oe,x as se,y as g}from"./index-DkoUSxK0.js";import{a as _}from"./utils-COFIQvWo.js";var ce={class:`page-container`},le={class:`page-header`},ue={key:0,class:`loading-state`},de={key:1,class:`error-state`},fe={key:2,class:`result-container`},pe={class:`result-header`},me={class:`result-anchor-nav`},he=[`href`],ge={class:`result-grid result-priority-grid`},_e={class:`summary-header`},v={class:`badge badge-info`},y={class:`info-list`},b={class:`info-item`},x={class:`info-value`,style:{"font-weight":`600`,"font-size":`1.05rem`,color:`var(--text-primary)`}},S={class:`info-item`},C={class:`info-value`},w={class:`info-item`},T={class:`info-value`},E={class:`info-item`},D={class:`info-value`},O={class:`info-item`},k={class:`info-value`},A={class:`info-item`},j={class:`info-value`},M={class:`info-list`},N={class:`info-item`},P={class:`info-value`},F={class:`info-item`},I={class:`info-value`},ve={class:`info-item`},ye={class:`info-value`},be={class:`info-item`},xe={class:`info-value`},Se={class:`info-item`},Ce={class:`info-value`},we={key:1,class:`result-card result-card-highlight`},Te={class:`info-list`},Ee={class:`info-item`},De={class:`info-value`,style:{"font-weight":`500`}},Oe={key:0,class:`export-buttons-bar`,style:{display:`flex`,gap:`var(--space-2)`,"flex-wrap":`wrap`,"justify-content":`center`,padding:`var(--space-3) 0`}},ke={key:1,id:`preview-3d`,class:`viewer-section viewer-section-hero`},Ae={key:0,class:`inline-alert inline-alert-warning`,style:{"margin-bottom":`var(--space-3)`}},je={class:`inline-alert-message`},Me=[`src`],Ne={key:2,id:`preview-3d`,class:`viewer-section viewer-section-hero`},Pe={key:3,id:`candidate-schemes`,class:`viewer-section diagnostic-panel`,style:{"margin-top":`var(--space-3)`}},Fe={class:`result-card full-width diagnostic-panel-body`},Ie={class:`data-table`},Le=[`onClick`],Re={key:0,style:{color:`var(--primary-color)`,"font-weight":`600`}},ze={key:1,style:{color:`var(--warning-color)`,"font-weight":`600`}},Be={id:`ai-side-action`,class:`viewer-section`},Ve={class:`summary-header`},He={key:1,class:`badge badge-warning`},Ue={key:0,class:`result-grid`},We={class:`result-card result-card-highlight`},Ge={class:`info-list`},Ke={class:`info-item`},qe={class:`info-value`},Je={class:`info-item`},Ye={class:`info-value`},Xe={key:0,class:`info-item`},Ze={class:`info-value`},Qe={class:`info-item`},$e={class:`info-value`},et={class:`inline-note`,style:{"margin-top":`var(--space-2)`,"font-weight":`600`,"font-size":`1rem`,color:`var(--text-primary)`}},tt={class:`result-card`},nt={key:0},rt={class:`recommendations-list`},it={class:`recommendation-text`},at={key:1,style:{"margin-top":`var(--space-3)`}},ot={class:`recommendations-list`},st={class:`recommendation-text`},ct={key:2,style:{"margin-top":`var(--space-3)`}},L={class:`recommendations-list`},lt={class:`recommendation-text`},ut={key:1,class:`inline-alert inline-alert-warning`},dt={id:`export-cam`,class:`viewer-section`},ft={class:`result-card`,style:{"margin-bottom":`var(--space-4)`}},pt={class:`info-list`},mt={class:`info-item`},ht=[`value`],gt={class:`info-item`},_t=[`value`],vt={class:`info-item`},yt=[`value`],bt={class:`info-item`},xt={class:`checkbox-group`},St=[`disabled`],Ct={key:0,class:`inline-alert inline-alert-warning`},wt={class:`inline-alert-message`},Tt={key:1,class:`inline-alert inline-alert-warning`},Et={class:`result-grid`},Dt={class:`result-card`},Ot={class:`info-list`},kt={class:`info-item`},At={class:`info-value`},jt={class:`info-item`},Mt={class:`info-value`},Nt={class:`info-item`},Pt={class:`info-value`},Ft={class:`info-item`},It={class:`info-value`},Lt={class:`result-card`},Rt={class:`info-list`},zt={class:`info-item`},Bt={class:`info-value`},Vt={class:`info-item`},Ht={class:`info-value`},Ut={class:`result-card full-width`},Wt={class:`data-table`},Gt={class:`result-card full-width`},Kt={class:`recommendations-list`},qt={class:`recommendation-text`},Jt={key:4,id:`llm-report`,class:`viewer-section`},Yt={class:`summary-header`},Xt={key:0,class:`inline-note`,style:{"margin-bottom":`var(--space-4)`,"font-size":`0.95rem`,color:`var(--text-primary)`}},Zt={class:`result-grid`},Qt={key:0,class:`recommendations-list`},$t={class:`recommendation-text`},en={key:1,class:`data-table`},tn={key:2,class:`recommendations-list`},nn={class:`recommendation-text`},rn={key:3,class:`inline-note`},R=o({__name:`ResultView`,setup(o){let R=c(),z=ne(),B=ie(),V=te({task:null,loading:!0,error:``,selectedSchemeId:null,previewStatus:`idle`,camLoading:!1,camError:``,camPlan:null,camForm:{mold_steel:`P20`,surface_quality:`standard`,controller:`fanuc`,include_gcode:!1}}),an=[{value:`P20`,label:`P20`},{value:`718H`,label:`718H`},{value:`NAK80`,label:`NAK80`},{value:`S136`,label:`S136`},{value:`H13`,label:`H13`}],on=[{value:`standard`,label:`标准`},{value:`fine`,label:`精细`},{value:`mirror`,label:`镜面`}],sn=[{value:`fanuc`,label:`Fanuc`},{value:`siemens`,label:`Siemens`}],cn=async()=>{console.log(`[ResultView] loadTask 开始, taskId:`,R.params.taskId);try{V.task=await m(`/api/status/${R.params.taskId}`,{method:`POST`}),console.log(`任务数据:`,V.task),console.log(`key_info:`,V.task.key_info),console.log(`cavity_data:`,V.task.cavity_data),console.log(`analysis_result:`,V.task.analysis_result),console.log(`geometry_data:`,V.task.geometry_data),V.task?.best_scheme_id?V.selectedSchemeId=V.task.best_scheme_id:V.task?.candidate_schemes?.length&&(V.selectedSchemeId=V.task.candidate_schemes[0].scheme_id);let e=V.task?.cam_preferences||{};V.camForm.mold_steel=e.mold_steel||`P20`,V.camForm.surface_quality=e.surface_quality||`standard`,V.camForm.controller=e.controller||`fanuc`,V.camForm.include_gcode=!!e.include_gcode,V.previewStatus=`loading`}catch(e){V.error=re(e,`加载任务详情`)}finally{V.loading=!1}};oe(()=>{if(!B.user){z.push(`/login`);return}cn()});let H=u(()=>V.task?.candidate_schemes||[]);u(()=>H.value.length===1);let U=u(()=>H.value.length?H.value.find(e=>e.scheme_id===V.selectedSchemeId)||H.value[0]:null),W=u(()=>U.value?.cavity_data||V.task?.cavity_data||null),ln=u(()=>U.value?.key_info||V.task?.key_info||null),G=u(()=>U.value?.html_file||V.task?.html_file||``),K=u(()=>U.value?.dfm_violations||[]),un=u(()=>W.value?.injection_system||V.task?.plan_result?.injection_system||null),dn=u(()=>U.value?.side_actions||W.value?.side_actions||V.task?.side_actions||null),fn=e=>{let t=String(e||``).match(/<!--SIDE_ACTION_AI_BEGIN-->\s*([\s\S]*?)\s*<!--SIDE_ACTION_AI_END-->/);if(!t)return null;try{return JSON.parse(t[1])}catch(e){return console.warn(`AI 倒扣分析解析失败:`,e),null}},pn=e=>{let t=String(e||``).match(/<!--DESIGN_REPORT_BEGIN-->\s*([\s\S]*?)\s*<!--DESIGN_REPORT_END-->/);if(!t)return null;try{return JSON.parse(t[1])}catch(e){return console.warn(`LLM 设计报告解析失败:`,e),null}},q=(e,t=`ai`)=>{if(!e||typeof e!=`object`)return null;let n=[`required`,`not_required`,`manual_review`].includes(e.status)?e.status:`manual_review`,r=[`slider`,`lifter`,`mixed`,`none`,`manual_review`].includes(e.mechanism_recommendation)?e.mechanism_recommendation:`manual_review`,i=Number(e.confidence),a={required:`需要倒扣/抽芯`,not_required:`无需倒扣/抽芯`,manual_review:`需人工确认`};return{source:t,status:n,statusLabel:a[n],mechanismRecommendation:r,mechanismLabel:{slider:`优先滑块`,lifter:`优先斜顶`,mixed:`滑块 + 斜顶`,none:`无需侧向机构`,manual_review:`人工评审`}[r],confidence:Number.isFinite(i)?Math.max(0,Math.min(i,1)):null,conclusion:e.conclusion||a[n],summary:e.summary||``,reasons:Array.isArray(e.reasons)?e.reasons.filter(Boolean).slice(0,5):[],standardAdvice:Array.isArray(e.standard_advice)?e.standard_advice.filter(Boolean).slice(0,5):[],manualReviewItems:Array.isArray(e.manual_review_items)?e.manual_review_items.filter(Boolean).slice(0,4):[]}},mn=u(()=>{let e=dn.value;if(!e||typeof e!=`object`)return null;let t=e.summary||{},n=(e.slider_mechanisms||[]).length,r=(e.lifter_mechanisms||[]).length,i=n+r,a=n&&r?`mixed`:n?`slider`:r?`lifter`:`none`,o=i>0?`required`:t.total_undercut_faces===0?`not_required`:`manual_review`;return q({status:o,confidence:.55,conclusion:o===`required`?`规则分析判断当前产品需要倒扣/抽芯机构`:o===`not_required`?`规则分析未发现必须采用倒扣/抽芯机构的特征`:`当前规则结果不足以完成稳定判断,建议人工复核`,mechanism_recommendation:a===`none`?`none`:a,summary:o===`required`?`检测到 ${n} 个滑块需求、${r} 个斜顶需求,建议先按标准机构路线做结构评审。`:o===`not_required`?`当前方案未发现明显倒扣特征,可优先按常规模具结构推进。`:`现有数据可用于初筛,但不足以替代工程师对复杂倒扣的最终确认。`,reasons:[i>0?`规则分析识别出 ${i} 处侧向机构需求`:`规则分析未识别出明确侧向机构需求`,t.complexity?`当前复杂度判定为 ${t.complexity}`:`当前复杂度信息不足`,`当前倒扣方案若存在大行程滑块,优先按气动抽芯条件评估`].filter(Boolean),standard_advice:(e.recommendations||[]).slice(0,4),manual_review_items:[`结合 3D 预览复核倒扣是否可通过改产品取消`,`确认侧向机构与顶出、冷却、分型面是否存在干涉`]},`rules`)});u(()=>{let e={critical:0,high:0,medium:0,low:0};return(K.value||[]).forEach(t=>{let n=String(t.level||`medium`).toLowerCase();e[n]===void 0?e.medium+=1:e[n]+=1}),e});let J=u(()=>q(fn(V.task?.llm_report||``),`ai`)||mn.value),Y=u(()=>pn(V.task?.llm_report||``)),hn=u(()=>Y.value&&(Y.value.sections&&Y.value.sections.length>0||!!Y.value.overview)),gn=u(()=>(Y.value?.sections||[]).filter(e=>e.type===`issues`?e.items?.length>0:e.type===`params_table`?e.rows?.length>0:e.type===`recommendations`?e.items?.length>0:!0));u(()=>{let e=V.task?.stage_timings||{};return Object.entries(e).filter(([,e])=>typeof e==`number`).sort((e,t)=>t[1]-e[1])});let _n=u(()=>{let e={critical:0,high:1,medium:2,low:3};return[...V.task?.analysis_result?.design_recommendations||[]].sort((t,n)=>(e[t.priority]??99)-(e[n.priority]??99))});u(()=>_n.value[0]||null);let X=u(()=>K.value?.length||0),vn=u(()=>{let e=W.value?.mold_cavities?.cavity_count;if(typeof e==`number`)return e;let t=W.value?.mold_cavities||ln.value?.mold_cavities||{};return t.cavity_count||Object.keys(t).filter(e=>e.startsWith(`cavity_`)).length||1});u(()=>X.value?X.value>=4?`高风险`:X.value>=2?`中风险`:`低风险`:`低风险`);let yn=[{id:`candidate-schemes`,label:`方案`},{id:`preview-3d`,label:`预览`},{id:`ai-side-action`,label:`AI倒扣分析`},{id:`export-cam`,label:`CAM/CNC`},{id:`llm-report`,label:`设计报告`}],Z=e=>{e&&(V.selectedSchemeId=e),V.previewStatus=`loading`,V.camPlan=null,V.camError=``},bn=()=>{V.previewStatus=`loaded`},xn=()=>{V.previewStatus=`error`},Q=e=>{if(!e)return`N/A`;if(e.parting?.axis)return`${e.parting.axis} 轴`;let t=e.parting?.direction;return Array.isArray(t)?`[${t.map(e=>Number(e).toFixed(2)).join(`, `)}]`:`N/A`};u(()=>V.task?.analysis_result?.detected_features||[]);let Sn=async(e,t)=>{let n={};B.token&&(n.Authorization=`Bearer ${B.token}`);let r=await fetch(e,{headers:n});if(!r.ok)throw Error(`下载失败 (${r.status}): 无法下载,需要授权`);let i=await r.blob(),a=URL.createObjectURL(i),o=document.createElement(`a`);o.href=a,o.download=t,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(a)},$=async e=>{try{let t=R.params.taskId,n=await m(`/api/export-mold`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({task_id:t,scheme_id:U.value?.scheme_id||V.selectedSchemeId,formats:[e],components:[`cavity`,`core`,`parting_surface`]})});if(n.status===`success`&&n.data.files){for(let e of n.data.files){let n=e.relative_path||(e.filepath?e.filepath.replace(/\\/g,`/`).split(`/`).slice(-2).join(`/`):``);await Sn(e.download_path||`/api/export-download/${encodeURI(n)}?task_id=${encodeURIComponent(t)}`,e.filename)}p(`已导出 ${n.data.files.length} 个 ${e.toUpperCase()} 文件`,`success`)}else n.data.errors&&n.data.errors.length>0&&p(`导出失败: ${n.data.errors[0]}`,`error`)}catch(e){p(`导出失败: ${e.message}`,`error`)}},Cn=async()=>{try{V.camLoading=!0,V.camError=``;let e={task_id:R.params.taskId,scheme_id:U.value?.scheme_id,mold_steel:V.camForm.mold_steel,surface_quality:V.camForm.surface_quality,controller:V.camForm.controller,include_gcode:V.camForm.include_gcode},t=await m(`/api/cam/plan`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});V.camPlan=t?.data||null,t?.cam_preferences&&(V.camForm.mold_steel=t.cam_preferences.mold_steel||V.camForm.mold_steel,V.camForm.surface_quality=t.cam_preferences.surface_quality||V.camForm.surface_quality,V.camForm.controller=t.cam_preferences.controller||V.camForm.controller,V.camForm.include_gcode=!!t.cam_preferences.include_gcode),p(`CAM 计划生成完成`,`success`)}catch(e){V.camPlan=null,V.camError=e.message||`CAM 计划生成失败`,p(`CAM 计划生成失败: ${V.camError}`,`error`)}finally{V.camLoading=!1}};return(o,c)=>(t(),g(`div`,ce,[s(`div`,le,[s(`button`,{class:`btn-back`,onClick:c[0]||=e=>f(z).back()},[...c[12]||=[s(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[s(`path`,{d:`M19 12H5M12 19l-7-7 7-7`})],-1),se(` 返回 `,-1)]]),c[13]||=s(`h1`,null,`分析结果`,-1)]),V.loading?(t(),g(`div`,ue,[...c[14]||=[s(`div`,{class:`spinner`},null,-1),s(`span`,null,`加载中...`,-1)]])):V.error?(t(),g(`div`,de,[s(`p`,null,a(V.error),1)])):V.task?(t(),g(`div`,fe,[s(`div`,pe,[s(`h2`,null,a(V.task.filename),1),s(`span`,{class:n([`badge`,V.task.status===`completed`?`badge-success`:`badge-error`])},a(V.task.status),3)]),s(`div`,me,[(t(),g(d,null,e(yn,e=>s(`a`,{key:e.id,class:`anchor-pill`,href:`#`+e.id},a(e.label),9,he)),64))]),s(`div`,ge,[s(`div`,{class:`result-card result-card-highlight`,style:{cursor:`pointer`},onClick:c[1]||=e=>Z(U.value?.scheme_id)},[s(`div`,_e,[c[15]||=s(`h3`,null,`推荐方案`,-1),s(`span`,v,a(U.value?.title||U.value?.scheme_id||`方案待定`),1)]),s(`div`,y,[s(`div`,b,[c[16]||=s(`span`,{class:`info-label`},`方案说明`,-1),s(`span`,x,a(U.value?.summary||U.value?.reason||`基于当前几何与制造约束自动推荐`),1)]),s(`div`,S,[c[17]||=s(`span`,{class:`info-label`},`分型方向`,-1),s(`span`,C,a(Q(U.value)),1)]),s(`div`,w,[c[18]||=s(`span`,{class:`info-label`},`模具结构`,-1),s(`span`,T,a(U.value?.mold_structure_type===`two_half_cavity`?`两板半腔(无独立模芯)`:`型腔 + 模芯`),1)]),s(`div`,E,[c[19]||=s(`span`,{class:`info-label`},`分型面位置`,-1),s(`span`,D,a(U.value?.offset_label||`中面`),1)]),s(`div`,O,[c[20]||=s(`span`,{class:`info-label`},`型腔数`,-1),s(`span`,k,a(vn.value)+` 腔`,1)]),s(`div`,A,[c[21]||=s(`span`,{class:`info-label`},`预计成型周期`,-1),s(`span`,j,a(un.value?.overall_assessment?.estimated_cycle_time||`N/A`)+` s`,1)])])]),H.value.length>1?(t(),g(`div`,{key:0,class:`result-card result-card-highlight`,style:{cursor:`pointer`},onClick:c[2]||=e=>Z(H.value[1]?.scheme_id)},[c[27]||=s(`div`,{class:`summary-header`},[s(`h3`,null,`备选方案`),s(`span`,{class:`badge badge-warning`},`1 个备选`)],-1),s(`div`,M,[(t(!0),g(d,null,e(H.value.slice(1,2),e=>(t(),g(d,{key:`alt-`+e.scheme_id},[s(`div`,N,[c[22]||=s(`span`,{class:`info-label`},`方案说明`,-1),s(`span`,P,a(e.summary||e.reason||`暂无说明`),1)]),s(`div`,F,[c[23]||=s(`span`,{class:`info-label`},`分型方向`,-1),s(`span`,I,a(Q(e)),1)]),s(`div`,ve,[c[24]||=s(`span`,{class:`info-label`},`模具结构`,-1),s(`span`,ye,a(e.mold_structure_type===`two_half_cavity`?`两板半腔(无独立模芯)`:`型腔 + 模芯`),1)]),s(`div`,be,[c[25]||=s(`span`,{class:`info-label`},`分型面位置`,-1),s(`span`,xe,a(e.offset_label||`中面`),1)]),s(`div`,Se,[c[26]||=s(`span`,{class:`info-label`},`方案总分`,-1),s(`span`,Ce,a(f(_)(e.score)),1)])],64))),128))])])):(t(),g(`div`,we,[c[29]||=s(`div`,{class:`summary-header`},[s(`h3`,null,`方案概览`),s(`span`,{class:`badge badge-success`},`单一方案`)],-1),s(`div`,Te,[s(`div`,Ee,[c[28]||=s(`span`,{class:`info-label`},`详细方案说明`,-1),s(`span`,De,a(U.value?.summary||U.value?.reason||`当前仅生成 1 套可用分模方案,已在推荐方案区域展示核心参数。`),1)])])]))]),V.task.status===`completed`?(t(),g(`div`,Oe,[s(`button`,{class:`btn-sm btn-primary`,onClick:c[3]||=e=>$(`step`),title:`导出装配体STEP格式(UG/FreeCAD/SolidWorks通用)`},` 📦 导出 STEP `),s(`button`,{class:`btn-sm btn-secondary`,onClick:c[4]||=e=>$(`iges`),title:`导出IGES格式(兼容旧系统)`},` 导出 IGES `),s(`button`,{class:`btn-sm btn-secondary`,onClick:c[5]||=e=>$(`stl`),title:`导出STL网格格式(3D打印预览)`},` 导出 STL `),s(`button`,{class:`btn-sm btn-secondary`,onClick:c[6]||=e=>$(`brep`),title:`导出BRep格式(FreeCAD原生)`},` 导出 BRep `)])):h(``,!0),G.value?(t(),g(`div`,ke,[c[31]||=s(`div`,{class:`summary-header`},[s(`h3`,null,`3D 预览`),s(`span`,{class:`badge badge-info`},`重点区域`)],-1),V.previewStatus===`error`?(t(),g(`div`,Ae,[c[30]||=s(`div`,{class:`inline-alert-title`},`预览加载失败`,-1),s(`div`,je,`HTML 已生成但加载异常,请检查该链接是否可访问:`+a(G.value),1)])):h(``,!0),(t(),g(`iframe`,{key:G.value,src:G.value,class:`viewer-frame viewer-frame-hero`,onLoad:bn,onError:xn},null,40,Me))])):(t(),g(`div`,Ne,[...c[32]||=[ee(`<div class="summary-header"><h3>3D 预览</h3><span class="badge badge-warning">未生成</span></div><div class="inline-alert inline-alert-warning"><div class="inline-alert-title">预览未生成</div><div class="inline-alert-message">当前任务没有返回 HTML 预览链接,属于未生成状态。</div></div>`,2)]])),H.value.length>1?(t(),g(`div`,Pe,[c[34]||=s(`summary`,null,`📊 方案对比`,-1),s(`div`,Fe,[s(`table`,Ie,[c[33]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`方案`),s(`th`,null,`方向`),s(`th`,null,`位置`),s(`th`,null,`总分`),s(`th`,null,`可制造性`),s(`th`,null,`分型质量`),s(`th`,null,`倒扣数`),s(`th`,null,`锁模力`)])],-1),s(`tbody`,null,[(t(!0),g(d,null,e(H.value.slice(0,2),(e,n)=>(t(),g(`tr`,{key:`cmp-`+e.scheme_id,style:r(V.selectedSchemeId===e.scheme_id?`background: rgba(var(--primary-rgb), 0.06); font-weight: 600;cursor:pointer`:`cursor:pointer`),onClick:t=>Z(e.scheme_id)},[s(`td`,null,[n===0?(t(),g(`span`,Re,`★ 推荐方案`)):(t(),g(`span`,ze,`备选方案`))]),s(`td`,null,a(Q(e)),1),s(`td`,null,a(e.offset_label||`中面`),1),s(`td`,null,a(f(_)(e.score)),1),s(`td`,null,a(f(_)(e.score_breakdown?.manufacturability||0)),1),s(`td`,null,a(f(_)(e.score_breakdown?.parting_quality||0)),1),s(`td`,null,a(e.key_info?.quality_considerations?.undercut_count||0),1),s(`td`,null,a(e.cavity_data?.manufacturing_info?.estimated_clamping_force||`N/A`),1)],12,Le))),128))])])])])):h(``,!0),s(`div`,Be,[s(`div`,Ve,[c[35]||=s(`h3`,null,`AI 倒扣与抽芯分析`,-1),J.value?(t(),g(`span`,{key:0,class:n([`badge`,J.value.status===`required`?`badge-error`:J.value.status===`not_required`?`badge-success`:`badge-warning`])},a(J.value.statusLabel),3)):(t(),g(`span`,He,`未生成`))]),J.value?(t(),g(`div`,Ue,[s(`div`,We,[c[40]||=s(`h4`,null,`AI 结论`,-1),s(`div`,Ge,[s(`div`,Ke,[c[36]||=s(`span`,{class:`info-label`},`判断结果`,-1),s(`span`,qe,a(J.value.conclusion),1)]),s(`div`,Je,[c[37]||=s(`span`,{class:`info-label`},`推荐方案`,-1),s(`span`,Ye,a(J.value.mechanismLabel),1)]),J.value.confidence==null?h(``,!0):(t(),g(`div`,Xe,[c[38]||=s(`span`,{class:`info-label`},`置信度`,-1),s(`span`,Ze,a(Math.round(J.value.confidence*100))+`%`,1)])),s(`div`,Qe,[c[39]||=s(`span`,{class:`info-label`},`分析来源`,-1),s(`span`,$e,a(J.value.source===`ai`?`AI 模型`:`规则回退`),1)])]),s(`div`,et,a(J.value.summary||`当前任务未返回更多摘要。`),1)]),s(`div`,tt,[J.value.reasons.length?(t(),g(`div`,nt,[c[41]||=s(`h4`,null,`判断依据`,-1),s(`div`,rt,[(t(!0),g(d,null,e(J.value.reasons,(e,n)=>(t(),g(`div`,{class:`recommendation-item medium`,key:`ai-reason-`+n},[s(`div`,it,a(e),1)]))),128))])])):h(``,!0),J.value.standardAdvice.length?(t(),g(`div`,at,[c[42]||=s(`h4`,null,`标准化建议`,-1),s(`div`,ot,[(t(!0),g(d,null,e(J.value.standardAdvice,(e,n)=>(t(),g(`div`,{class:`recommendation-item low`,key:`ai-advice-`+n},[s(`div`,st,a(e),1)]))),128))])])):h(``,!0),J.value.manualReviewItems.length?(t(),g(`div`,ct,[c[43]||=s(`h4`,null,`人工复核项`,-1),s(`div`,L,[(t(!0),g(d,null,e(J.value.manualReviewItems,(e,n)=>(t(),g(`div`,{class:`recommendation-item medium`,key:`ai-review-`+n},[s(`div`,lt,a(e),1)]))),128))])])):h(``,!0)])])):(t(),g(`div`,ut,[...c[44]||=[s(`div`,{class:`inline-alert-title`},`AI 结论未生成`,-1),s(`div`,{class:`inline-alert-message`},`当前任务未生成倒扣与抽芯 AI 分析,请检查模型配置或重新运行分析。`,-1)]]))]),s(`div`,dt,[c[64]||=s(`div`,{class:`summary-header`},[s(`h3`,null,`CAM 与 CNC 加工`),s(`span`,{class:`badge badge-info`},`工艺规划`)],-1),s(`div`,ft,[c[50]||=s(`h4`,null,`CAM 参数`,-1),s(`div`,pt,[s(`div`,mt,[c[45]||=s(`span`,{class:`info-label`},`模具钢`,-1),i(s(`select`,{"onUpdate:modelValue":c[7]||=e=>V.camForm.mold_steel=e,class:`form-select`},[(t(),g(d,null,e(an,e=>s(`option`,{key:`steel-`+e.value,value:e.value},a(e.label),9,ht)),64))],512),[[l,V.camForm.mold_steel]])]),s(`div`,gt,[c[46]||=s(`span`,{class:`info-label`},`表面质量`,-1),i(s(`select`,{"onUpdate:modelValue":c[8]||=e=>V.camForm.surface_quality=e,class:`form-select`},[(t(),g(d,null,e(on,e=>s(`option`,{key:`surf-`+e.value,value:e.value},a(e.label),9,_t)),64))],512),[[l,V.camForm.surface_quality]])]),s(`div`,vt,[c[47]||=s(`span`,{class:`info-label`},`控制器`,-1),i(s(`select`,{"onUpdate:modelValue":c[9]||=e=>V.camForm.controller=e,class:`form-select`},[(t(),g(d,null,e(sn,e=>s(`option`,{key:`ctrl-`+e.value,value:e.value},a(e.label),9,yt)),64))],512),[[l,V.camForm.controller]])]),s(`div`,bt,[c[49]||=s(`span`,{class:`info-label`},`包含G代码`,-1),s(`label`,xt,[i(s(`input`,{type:`checkbox`,class:`checkbox-input`,"onUpdate:modelValue":c[10]||=e=>V.camForm.include_gcode=e},null,512),[[ae,V.camForm.include_gcode]]),c[48]||=s(`span`,{class:`checkbox-label`},`返回G代码文本`,-1)])])]),s(`button`,{class:`btn-sm btn-primary`,disabled:V.camLoading,onClick:c[11]||=e=>Cn(),style:{"margin-top":`var(--space-2)`},title:`基于当前选中方案生成CAM工艺计划`},a(V.camLoading?`⏳ 生成中...`:`🔧 生成 CAM 计划`),9,St)]),V.camError?(t(),g(`div`,Ct,[c[51]||=s(`div`,{class:`inline-alert-title`},`CAM 计划生成失败`,-1),s(`div`,wt,a(V.camError),1)])):V.camPlan?(t(),g(d,{key:2},[s(`div`,Et,[s(`div`,Dt,[c[57]||=s(`h4`,null,`计划摘要`,-1),s(`div`,Ot,[s(`div`,kt,[c[53]||=s(`span`,{class:`info-label`},`方案ID`,-1),s(`span`,At,a(V.camPlan.scheme_id||`N/A`),1)]),s(`div`,jt,[c[54]||=s(`span`,{class:`info-label`},`总工序数`,-1),s(`span`,Mt,a(V.camPlan.summary?.total_operations||0),1)]),s(`div`,Nt,[c[55]||=s(`span`,{class:`info-label`},`预计总时长`,-1),s(`span`,Pt,a(f(_)(V.camPlan.summary?.total_estimated_time_min||0))+` min`,1)]),s(`div`,Ft,[c[56]||=s(`span`,{class:`info-label`},`方案可信度`,-1),s(`span`,It,a(f(_)(V.camPlan.confidence?.score||0)),1)])])]),s(`div`,Lt,[c[60]||=s(`h4`,null,`刀具建议`,-1),s(`div`,Rt,[s(`div`,zt,[c[58]||=s(`span`,{class:`info-label`},`粗加工刀具`,-1),s(`span`,Bt,a(V.camPlan.tooling_suggestion?.roughing_tool?.tool_id||`N/A`),1)]),s(`div`,Vt,[c[59]||=s(`span`,{class:`info-label`},`精加工刀具`,-1),s(`span`,Ht,a(V.camPlan.tooling_suggestion?.finishing_tool?.tool_id||`N/A`),1)])])])]),s(`div`,Ut,[c[62]||=s(`h4`,null,`工序计划`,-1),s(`table`,Wt,[c[61]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`序号`),s(`th`,null,`工序`),s(`th`,null,`刀具`),s(`th`,null,`主轴转速`),s(`th`,null,`进给率`),s(`th`,null,`预计时长(min)`)])],-1),s(`tbody`,null,[(t(!0),g(d,null,e(V.camPlan.process_plan||[],e=>(t(),g(`tr`,{key:`cam-op-`+e.seq},[s(`td`,null,a(e.seq),1),s(`td`,null,a(e.operation),1),s(`td`,null,a(e.tool_id||`N/A`),1),s(`td`,null,a(f(_)(e.spindle_speed_rpm||0)),1),s(`td`,null,a(f(_)(e.feed_rate_mm_min||0)),1),s(`td`,null,a(f(_)(e.estimated_time_min||0)),1)]))),128))])])]),s(`div`,Gt,[c[63]||=s(`h4`,null,`制造风险提示`,-1),s(`div`,Kt,[(t(!0),g(d,null,e(V.camPlan.manufacturing_warnings||[],(e,n)=>(t(),g(`div`,{class:`recommendation-item medium`,key:`cam-warn-`+n},[s(`div`,qt,a(e),1)]))),128))])])],64)):(t(),g(`div`,Tt,[...c[52]||=[s(`div`,{class:`inline-alert-title`},`尚未生成 CAM 计划`,-1),s(`div`,{class:`inline-alert-message`},`点击上方"生成 CAM 计划"后,将返回工序计划、刀具建议与制造风险提示。`,-1)]]))]),hn.value?(t(),g(`div`,Jt,[s(`div`,Yt,[c[65]||=s(`h3`,null,`LLM 设计报告`,-1),s(`span`,{class:n([`badge`,(Y.value?.overall_score||0)>=7?`badge-success`:(Y.value?.overall_score||0)>=5?`badge-warning`:`badge-error`])},` 评分 `+a(Y.value?.overall_score||`N/A`)+` / 10 `,3)]),Y.value?.overview?(t(),g(`div`,Xt,a(Y.value?.overview),1)):h(``,!0),s(`div`,Zt,[(t(!0),g(d,null,e(gn.value,(i,o)=>(t(),g(`div`,{key:`dr-sec-`+o,class:n([`result-card`,i.type===`issues`?`result-card-highlight`:``])},[s(`h4`,{style:r(i.type===`issues`?`color: var(--danger-color);`:``)},a(i.heading),5),i.type===`issues`?(t(),g(`div`,Qt,[(t(!0),g(d,null,e(i.items,(e,r)=>(t(),g(`div`,{key:`dr-issue-`+r,class:n([`recommendation-item`,e.level===`high`?`high`:e.level===`medium`?`medium`:`low`])},[s(`span`,{class:n([`priority-badge`,e.level||`medium`]),style:{"margin-right":`var(--space-1)`}},a(e.level===`high`?`🔴`:e.level===`medium`?`🟡`:`🟢`),3),s(`div`,$t,a(e.content),1)],2))),128))])):i.type===`params_table`?(t(),g(`table`,en,[s(`thead`,null,[s(`tr`,null,[(t(!0),g(d,null,e(i.headers,(e,n)=>(t(),g(`th`,{key:`dr-h-`+n},a(e),1))),128))])]),s(`tbody`,null,[(t(!0),g(d,null,e(i.rows,(n,r)=>(t(),g(`tr`,{key:`dr-r-`+r},[(t(!0),g(d,null,e(n,(e,n)=>(t(),g(`td`,{key:`dr-c-`+n},a(e),1))),128))]))),128))])])):i.type===`recommendations`?(t(),g(`div`,tn,[(t(!0),g(d,null,e(i.items,(e,n)=>(t(),g(`div`,{class:`recommendation-item low`,key:`dr-rec-`+n},[s(`div`,nn,`💡 `+a(e),1)]))),128))])):(t(),g(`div`,rn,a(JSON.stringify(i)),1))],2))),128))])])):h(``,!0)])):h(``,!0)]))}});export{R as default}; |