From d86c47484e557b4d8d567e2490acea818bf516d7 Mon Sep 17 00:00:00 2001 From: Tian jianyong <11429339@qq.com> Date: Tue, 12 Nov 2024 19:33:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=AF=94=E8=BE=83?= =?UTF-8?q?=E5=AE=8C=E5=96=84=E7=9A=84=E7=81=AB=E7=AE=AD=E7=82=AE=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=9B=86=EF=BC=8C=E5=B9=B6=E4=BF=AE=E5=A4=8D=E4=BA=86?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E9=A1=B5=E9=9D=A2=E7=9A=84=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/dev/debug.md | 847 +++------------------------- docs/dev/design.md | 257 +++++++++ frontend/src/views/AnalysisPage.vue | 250 +++++++- frontend/src/views/DataPage.vue | 323 ++++++++--- frontend/src/views/DatasetPage.vue | 45 +- frontend/src/views/ModelPage.vue | 8 +- frontend/src/views/PredictPage.vue | 151 +++-- frontend/src/views/TrainingPage.vue | 12 +- frontend/vite.config.js | 27 + src/cost_prediction.py | 2 +- src/feature_analysis.py | 91 ++- src/loitering_munition_data.sql | 669 ++++++++++++++++++++++ src/model_trainer.py | 63 ++- src/rocket_artillery_data.sql | 688 ++++++++++++++++++++++ src/routes.py | 395 +++++++------ src/schema.sql | 20 +- 16 files changed, 2719 insertions(+), 1129 deletions(-) create mode 100644 frontend/vite.config.js create mode 100644 src/loitering_munition_data.sql create mode 100644 src/rocket_artillery_data.sql diff --git a/docs/dev/debug.md b/docs/dev/debug.md index 89ebdb0..d63322c 100644 --- a/docs/dev/debug.md +++ b/docs/dev/debug.md @@ -1,795 +1,92 @@ # 调试记录 -## 特殊参数显示问题 +## 数据管理页面问题 ### 问题描述 -在数据管理页面中,装备详情对话框的特殊参数部分显示为空行或不显示。 +在数据管理页面中,火箭炮列表点击详情按钮时,请求了错误的设备 ID,导致显示了巡飞弹的数据。 -### 调试步骤 +### 问题分析 -1. 后端数据查询 - -```sql -# 测试特殊参数查询 -SELECT equipment_id, param_name, param_value, param_unit -FROM custom_params -WHERE param_name IS NOT NULL -AND param_value IS NOT NULL -LIMIT 5 +1. 日志记录: +``` +INFO:src.routes:Getting details for equipment ID: 4 +INFO:src.routes:Equipment type: 巡飞弹 +INFO:src.routes:Found equipment details: Hero-30 +INFO:src.routes:Custom params: {...} ``` -2. 日志记录 +2. 问题原因: + - 后端返回的数据中,火箭炮和巡飞弹的 ID 范围重叠 + - 火箭炮的 ID 应该从 1001 开始 + - 巡飞弹的 ID 从 1 开始 + - 前端没有正确处理设备 ID 的映射 -```python -logging.info(f"Getting details for equipment ID: {id}") -logging.info(f"Equipment type: {equipment_type}") -logging.info(f"Found equipment details: {result['name']}") -logging.info(f"Custom params: {result.get('custom_params')}") -``` +3. 数据流分析: + - 前端发送请求:`GET /api/data/details/4` + - 后端查询数据库:`SELECT * FROM equipment WHERE id = 4` + - 返回了 ID=4 的巡飞弹数据 + - 前端显示了错误的装备类型数据 -3. 前端调试 +### 新增问题:数据显示不完整 +1. 问题描述: + - 在数据管理页面,火箭炮和巡飞弹的表格中,除了长度和重量,其他参数列都没有数据显示 + - 详情页面能正确显示所有数据 + +2. 问题原因: + - 后端返回的数据中,特有参数以逗号分隔的字符串形式存储在 `specific_params` 字段中 + - 前端需要解析这个字符串,将其转换为对象格式才能正确显示 + +3. 解决方案: + - 在前端添加特有参数字符串的解析函数 + - 将解析后的参数合并到数据对象中 + - 确保表格和详情页面使用相同的数据格式 + +4. 代码修改: ```javascript -console.log('Requesting details for row:', row) -console.log('Details response:', response.data) -console.log('Custom params:', response.data.custom_params) -console.log('Selected data:', selectedData.value) -``` - -### 关键发现 - -1. 数据库查询 - -- 特殊参数表中有数据 -- JSON_ARRAYAGG 返回的格式需要处理 -- 需要过滤掉 NULL 值 - -2. 数据格式 - -- 后端返回的特殊参数是 JSON 字符串 -- 需要在前端解析为数组 -- 确保数组不为空 - -3. 前端渲染 - -- 条件判断需要更严格 -- 需要确保数据类型正确 -- 需要正确格式化显示值 - -### 解决方案 - -1. 后端查询优化 - -```sql -( - SELECT JSON_ARRAYAGG( - JSON_OBJECT( - 'id', csp.id, - 'param_name', csp.param_name, - 'param_value', csp.param_value, - 'param_unit', csp.param_unit, - 'description', csp.description - ) - ) - FROM custom_params csp - WHERE csp.equipment_id = e.id - AND csp.param_name IS NOT NULL - AND csp.param_value IS NOT NULL -) as custom_params -``` - -2. 前端数据处理 - -```javascript -// 确保 custom_params 是数组 -if (typeof response.data.custom_params === 'string') { - response.data.custom_params = JSON.parse(response.data.custom_params) -} -``` - -3. 渲染条件优化 - -```vue -