From 992a1129ce83d1c14d0e9a2527f1dcf2a2c683dc Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Thu, 13 Nov 2025 14:31:54 +0800 Subject: [PATCH] =?UTF-8?q?refactor(report):=20=E4=BC=98=E5=8C=96=E6=8A=A5?= =?UTF-8?q?=E5=91=8A=E6=A0=B7=E5=BC=8F=E5=92=8C=E6=95=B0=E6=8D=AE=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 调整了报告页面的CSS样式,包括颜色、阴影和布局,以提供更专业、现代的视觉效果。 - 改进了从后端向前端JavaScript传递图表数据的方式。现在通过一个独立的` \ No newline at end of file diff --git a/src/chat/utils/templates/report.js b/src/chat/utils/templates/report.js index 7f944cb3a..8cec90b56 100644 --- a/src/chat/utils/templates/report.js +++ b/src/chat/utils/templates/report.js @@ -11,9 +11,15 @@ function showTab(evt, tabName) { } document.addEventListener('DOMContentLoaded', function () { - // This is a placeholder for chart data which will be injected by python. - const allChartData = JSON.parse('{{ all_chart_data }}') -; + // Chart data is injected by python via the HTML template. + let allChartData = {}; + try { + allChartData = JSON.parse(all_chart_data_json_string); + } catch (e) { + console.error("Failed to parse all_chart_data:", e); + console.error("Problematic all_chart_data string:", all_chart_data_json_string); + } + let currentCharts = {}; const chartConfigs = { totalCost: { id: 'totalCostChart', title: '总花费', yAxisLabel: '花费 (¥)', dataKey: 'total_cost_data', fill: true }, @@ -73,8 +79,14 @@ document.addEventListener('DOMContentLoaded', function () { } // Static charts - const staticChartData = JSON.parse('{{ static_chart_data }}') -; + let staticChartData = {}; + try { + staticChartData = JSON.parse(static_chart_data_json_string); + } catch (e) { + console.error("Failed to parse static_chart_data:", e); + console.error("Problematic static_chart_data string:", static_chart_data_json_string); + } + Object.keys(staticChartData).forEach(period_id => { const providerCostData = staticChartData[period_id].provider_cost_data; const modelCostData = staticChartData[period_id].model_cost_data; @@ -82,7 +94,7 @@ document.addEventListener('DOMContentLoaded', function () { // Provider Cost Pie Chart const providerCtx = document.getElementById(`providerCostPieChart_${period_id}`); - if (providerCtx && providerCostData && providerCostData.data.length > 0) { + if (providerCtx && providerCostData && providerCostData.data && providerCostData.data.length > 0) { new Chart(providerCtx, { type: 'pie', data: { @@ -106,7 +118,7 @@ document.addEventListener('DOMContentLoaded', function () { // Model Cost Bar Chart const modelCtx = document.getElementById(`modelCostBarChart_${period_id}`); - if (modelCtx && modelCostData && modelCostData.data.length > 0) { + if (modelCtx && modelCostData && modelCostData.data && modelCostData.data.length > 0) { new Chart(modelCtx, { type: 'bar', data: {