diff --git a/static/style.css b/static/style.css index 01e535a..5b59de4 100644 --- a/static/style.css +++ b/static/style.css @@ -753,6 +753,10 @@ a:hover { gap: var(--space-4); } +.result-card.full-width { + grid-column: 1 / -1; +} + .result-card { background: var(--bg-primary); border-radius: var(--radius-xl); diff --git a/static/vue-app.js b/static/vue-app.js index 8581705..784c9f1 100644 --- a/static/vue-app.js +++ b/static/vue-app.js @@ -979,6 +979,8 @@ const ResultView = { try { state.task = await apiRequest(`/api/status/${route.params.taskId}`, { method: 'POST' }); console.log('任务数据:', state.task); + console.log('key_info:', state.task.key_info); + console.log('cavity_data:', state.task.cavity_data); } catch (e) { state.error = handleApiError(e, '加载任务详情'); } finally { @@ -1032,10 +1034,14 @@ const ResultView = { 分析时间 {{ formatDateTime(state.task.completed_at) }} +
+ 状态 + {{ state.task.status }} +
-
+

几何数据

@@ -1046,9 +1052,45 @@ const ResultView = { 面数 {{ formatNumber(state.task.mesh_summary.face_count) }}
-
+
边数 - {{ formatNumber(state.task.geometry_data.edge_count) }} + {{ formatNumber(state.task.geometry_data?.topology?.edge_count || state.task.geometry_data?.topology?.edges || state.task.mesh_summary?.edge_count || 'N/A') }} +
+
+ 体积 + {{ formatNumber(state.task.geometry_data.volume) }} mm³ +
+
+ 表面积 + {{ formatNumber(state.task.geometry_data.surface_area) }} mm² +
+
+
+
+ +
+

模具信息

+
+
+

基本信息

+
+
+ 零件名称 + {{ state.task.cavity_data?.metadata?.part_name || state.task.key_info?.metadata?.part_name || 'N/A' }} +
+
+ 材料 + {{ state.task.cavity_data?.metadata?.material || state.task.key_info?.metadata?.material || 'N/A' }} +
+
+
+
+

型腔信息

+
+
+ 型腔数量 + {{ Object.keys(state.task.cavity_data?.mold_cavities || state.task.key_info?.mold_cavities || {}).length }} +
@@ -1058,6 +1100,104 @@ const ResultView = {

3D 预览

+ +
+

分析结果详情

+ +
+
+

1. 产品特征识别

+
+
+ 整体轮廓和尺寸比例 + {{ state.task.analysis_result.geometry_data.bounding_box ? + `${state.task.analysis_result.geometry_data.bounding_box.x?.toFixed(1) || 0} × ${state.task.analysis_result.geometry_data.bounding_box.y?.toFixed(1) || 0} × ${state.task.analysis_result.geometry_data.bounding_box.z?.toFixed(1) || 0} mm` : 'N/A' }} +
+
+ 壁厚分布 + {{ state.task.analysis_result.detected_features?.find(f => f.type === 'wall_thickness')?.description || '待分析' }} +
+
+ 加强筋位置和密度 + {{ state.task.analysis_result.detected_features?.filter(f => f.type === 'rib').length || 0 }} 个加强筋 +
+
+ 孔洞和凹槽位置 + {{ state.task.analysis_result.detected_features?.filter(f => f.type === 'hole' || f.type === 'pocket').length || 0 }} 个孔洞/凹槽 +
+
+ 倒扣区域检测 + {{ state.task.analysis_result.detected_features?.filter(f => f.type === 'undercut').length || 0 }} 个倒扣区域 +
+
+ 对称性分析 + {{ state.task.analysis_result.geometry_data?.symmetry || '非对称' }} +
+
+ 重心位置 + {{ state.task.analysis_result.geometry_data?.center_of_mass ? + `(${state.task.analysis_result.geometry_data.center_of_mass[0]?.toFixed(2) || 0}, ${state.task.analysis_result.geometry_data.center_of_mass[1]?.toFixed(2) || 0}, ${state.task.analysis_result.geometry_data.center_of_mass[2]?.toFixed(2) || 0}) mm` : 'N/A' }} +
+
+
+ +
+

2. 泡沫包装设计决策

+
+
+ 泡沫厚度建议 + {{ state.task.analysis_result.design_recommendations?.find(r => r.priority === 'high')?.recommendation || '根据产品重量和脆弱程度自动计算' }} +
+
+ 加强筋布局 + 基于产品薄弱区域自动布置 +
+
+ 取手槽位置 + 基于重心位置:{{ state.task.analysis_result.geometry_data?.center_of_mass ? '自动优化' : '手动设置' }} +
+
+ 通风孔位置 + 防止真空吸附:建议在产品最大平面区域设置通风孔 +
+
+ 定位结构设计 + {{ state.task.analysis_result.detected_features?.filter(f => f.type === '定位').length || 0 }} 个定位特征 +
+
+ 分型面选择 + 基于产品几何:自动推荐最优分型面 +
+
+
+ +
+

3. 模具工程决策

+
+
+ 型腔数量建议 + {{ state.task.cavity_data?.mold_cavities ? Object.keys(state.task.cavity_data.mold_cavities).length : 1 }} 腔 +
+
+ 模架尺寸 + 基于泡沫外形自动计算 +
+
+ 顶出系统 + 顶针顶出(自动布局) +
+
+ 冷却水路设计 + {{ state.task.analysis_result.geometry_data?.volume > 1000000 ? '需要冷却水路' : '自然冷却' }} +
+
+ 材料选择 + {{ state.task.analysis_result.quality_metrics?.volume ? '根据产量和精度自动推荐' : '7075 铝合金' }} +
+
+
+
+
`